From c8f57f7913345fe29151211fe3b6c9b74bd06166 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 17 Sep 2023 14:35:26 +0200 Subject: [PATCH 001/384] Initial JNI commit --- .gitignore | 4 - Makefile | 73 ++ Makefile.common | 131 +++ pom.xml | 18 +- scripts/jni-signature | 14 + src/main/cpp/jllama.cpp | 518 +++++++++++ .../de/kherud/llama/InferenceParameters.java | 305 +++++++ .../java/de/kherud/llama/LlamaException.java | 9 + .../java/de/kherud/llama/LlamaGrammar.java | 494 ---------- .../java/de/kherud/llama/LlamaLoader.java | 257 ++++++ src/main/java/de/kherud/llama/LlamaModel.java | 692 ++------------ src/main/java/de/kherud/llama/LogLevel.java | 50 - .../java/de/kherud/llama/ModelParameters.java | 339 +++++++ src/main/java/de/kherud/llama/OSInfo.java | 264 ++++++ src/main/java/de/kherud/llama/Parameters.java | 746 --------------- .../java/de/kherud/llama/ProcessRunner.java | 35 + .../de/kherud/llama/SliceableByteBuffer.java | 76 -- .../de/kherud/llama/SliceableIntBuffer.java | 77 -- src/main/java/de/kherud/llama/TokenType.java | 51 -- .../java/de/kherud/llama/VocabularyType.java | 34 - .../de/kherud/llama/foreign/LlamaLibrary.java | 187 ---- .../de/kherud/llama/foreign/NativeSize.java | 36 - .../llama/foreign/NativeSizeByReference.java | 66 -- .../kherud/llama/foreign/llama_beam_view.java | 66 -- .../llama/foreign/llama_beams_state.java | 66 -- .../llama/foreign/llama_context_params.java | 172 ---- .../llama/foreign/llama_grammar_element.java | 49 - .../foreign/llama_model_quantize_params.java | 79 -- .../kherud/llama/foreign/llama_timings.java | 103 --- .../llama/foreign/llama_token_data.java | 58 -- .../llama/foreign/llama_token_data_array.java | 55 -- .../de/kherud/llama/Linux/x86_64/libjllama.so | Bin 0 -> 1021112 bytes .../de/kherud/llama/Linux/x86_64/libllama.so | Bin 0 -> 937384 bytes .../java/de/kherud/llama/GrammarTest.java | 209 ----- src/test/java/examples/GrammarExample.java | 32 +- src/test/java/examples/MainExample.java | 37 +- src/test/resources/java.gbnf | 209 +++++ src/test/resources/python.gbnf | 859 ++++++++++++++++++ 38 files changed, 3124 insertions(+), 3346 deletions(-) create mode 100644 Makefile create mode 100644 Makefile.common create mode 100755 scripts/jni-signature create mode 100644 src/main/cpp/jllama.cpp create mode 100644 src/main/java/de/kherud/llama/InferenceParameters.java create mode 100644 src/main/java/de/kherud/llama/LlamaException.java delete mode 100644 src/main/java/de/kherud/llama/LlamaGrammar.java create mode 100644 src/main/java/de/kherud/llama/LlamaLoader.java delete mode 100644 src/main/java/de/kherud/llama/LogLevel.java create mode 100644 src/main/java/de/kherud/llama/ModelParameters.java create mode 100644 src/main/java/de/kherud/llama/OSInfo.java delete mode 100644 src/main/java/de/kherud/llama/Parameters.java create mode 100644 src/main/java/de/kherud/llama/ProcessRunner.java delete mode 100644 src/main/java/de/kherud/llama/SliceableByteBuffer.java delete mode 100644 src/main/java/de/kherud/llama/SliceableIntBuffer.java delete mode 100644 src/main/java/de/kherud/llama/TokenType.java delete mode 100644 src/main/java/de/kherud/llama/VocabularyType.java delete mode 100644 src/main/java/de/kherud/llama/foreign/LlamaLibrary.java delete mode 100644 src/main/java/de/kherud/llama/foreign/NativeSize.java delete mode 100644 src/main/java/de/kherud/llama/foreign/NativeSizeByReference.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_beam_view.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_beams_state.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_context_params.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_grammar_element.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_model_quantize_params.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_timings.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_token_data.java delete mode 100644 src/main/java/de/kherud/llama/foreign/llama_token_data_array.java create mode 100755 src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so create mode 100755 src/main/resources/de/kherud/llama/Linux/x86_64/libllama.so delete mode 100644 src/test/java/de/kherud/llama/GrammarTest.java create mode 100644 src/test/resources/java.gbnf create mode 100644 src/test/resources/python.gbnf diff --git a/.gitignore b/.gitignore index 5bea1a5f..abc1db70 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,3 @@ replay_pid* llama.h llama.cpp main.cpp - -*.so -*.dylib -*.metal \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..75809f50 --- /dev/null +++ b/Makefile @@ -0,0 +1,73 @@ +include Makefile.common + +# g++ -I. -O3 -m64 -I"/usr/lib/jvm/zulu-17/include" -I"/usr/lib/jvm/zulu-17/include/linux" -shared -fPIC -fvisibility=hidden -static-libgcc -pthread -lstdc++ -lllama -L. -o libjllama.so jllama.cpp common.cpp && mv -f libjllama.so ../../../../src/main/resources/de/kherud/llama/Linux/x86_64/ + +# set up some variables +DOCKER_RUN_OPTS=--rm +CODESIGN:=docker run $(DOCKER_RUN_OPTS) -v $$PWD:/workdir gotson/rcodesign sign + +NATIVE_DIR := src/main/resources/de/kherud/llama/$(OS_NAME)/$(OS_ARCH) + +LLAMA_SRC := $(TARGET)/llama +LLAMA_HEADER := $(LLAMA_SRC)/llama.h +JLLAMA_HEADER := $(LLAMA_SRC)/jllama.h +LLAMA_INCLUDE := $(shell dirname "$(LLAMA_HEADER)") +LLAMA_LIB := $(LLAMA_SRC)/build/$(LLAMA_LIB_NAME) +JLLAMA_LIB := $(LLAMA_SRC)/build/$(JLLAMA_LIB_NAME) +LLAMA_CMAKE_ARGS := + +CCFLAGS := -I$(LLAMA_INCLUDE) $(CCFLAGS) + +# download llama.cpp sources or pull new changes +$(LLAMA_SRC): + @mkdir -p $@ + @if [ -d "$@/.git" ]; then \ + cd $@ && git pull; \ + else \ + git clone https://github.com/ggerganov/llama.cpp.git $@; \ + fi + +# build the llama.cpp shared library +$(LLAMA_LIB): $(LLAMA_SRC) + (cd $(LLAMA_SRC) && \ + mkdir -p $(LLAMA_SRC)\build && \ + cd build && \ + cmake .. -DBUILD_SHARED_LIBS=ON $(LLAMA_CMAKE_ARGS) && \ + cmake --build . --config Release) + +# create the jni header +$(JLLAMA_HEADER): src/main/java/de/kherud/llama/LlamaModel.java + mvn compile + mv $(LLAMA_SRC)/de_kherud_llama_LlamaModel.h $@ + +# build the jni shared library +$(JLLAMA_LIB): $(JLLAMA_HEADER) + $(CC) \ + $(CCFLAGS) \ + $(LINKFLAGS) \ + -L $(LLAMA_SRC)/build \ + -I $(LLAMA_SRC) \ + -I $(LLAMA_SRC)/common \ + -I $(LLAMA_SRC)/examples/server \ + -o $@ \ + src/main/cpp/jllama.cpp \ + $(LLAMA_SRC)/common/common.cpp \ + $(LLAMA_SRC)/common/grammar-parser.cpp + +build: $(LLAMA_LIB) $(JLLAMA_LIB) + mkdir -p $(NATIVE_DIR) + mv $(LLAMA_LIB) $(NATIVE_DIR) + mv $(JLLAMA_LIB) $(NATIVE_DIR) + +build-jni: $(JLLAMA_LIB) + mv $(JLLAMA_LIB) $(NATIVE_DIR) + +build-jni-header: $(JLLAMA_HEADER) + +clean-build: + @rm -rf $(LLAMA_SRC)/build + @rm -rf $(TARGET)/classes + @rm -rf $(TARGET)/test-classes + +clean-llama: + @rm -rf $(LLAMA_SRC) diff --git a/Makefile.common b/Makefile.common new file mode 100644 index 00000000..3fd1a835 --- /dev/null +++ b/Makefile.common @@ -0,0 +1,131 @@ +ifndef JAVA_HOME +$(warning Set JAVA_HOME environment variable) +endif + +JAVA := "$$JAVA_HOME/bin/java" +JAVAC := "$$JAVA_HOME/bin/javac" +JAVAH := "$$JAVA_HOME/bin/javah" + +TARGET := target +OSINFO_CLASS := de.kherud.llama.OSInfo +OSINFO_PROG := $(TARGET)/classes/com/denkbares/clingo/OSInfo.class + +## building OSInfo.java +ifeq ("$(wildcard $(OSINFO_PROG))","") +$(info Building OSInfo tool) +$(shell $(JAVAC) -cp src/main/java -d $(TARGET)/classes src/main/java/de/kherud/llama/OSInfo.java) +endif + +ifndef OS_NAME +OS_NAME := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --os) +endif +ifndef OS_ARCH +OS_ARCH := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --arch) +endif + +# Windows uses different path separators +ifeq ($(OS_NAME),Windows) + sep := ; +else + sep := : +endif + +jclingo := jclingo-$(version) + +ifdef JAVA_HOME +jni_h := $(shell find -L "$(JAVA_HOME)" -name jni.h) +ifneq ($(jni_h),) +jni_include := $(shell dirname "$(jni_h)") +endif + +jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h) +ifneq ($(jni_md),) +jni_md_include := $(shell dirname "$(jni_md)") +endif +endif + +known_targets := Linux-x86_64 Linux-arm Mac-x86_64 Mac-aarch64 Windows-x86_64 Windows-aarch64 +target := $(OS_NAME)-$(OS_ARCH) + +ifeq (,$(findstring $(strip $(target)),$(known_targets))) + target := Default +endif + +$(info Will build using target: $(target) (detected os: $(OS_NAME) arch: $(OS_ARCH))) + +# cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-") +CROSS_PREFIX := + +# os=Default is meant to be generic unix/linux +Default_CC := $(CROSS_PREFIX)g++ +Default_STRIP := $(CROSS_PREFIX)strip +Default_CCFLAGS := -O3 +Default_LINKFLAGS := -I$(JAVA_HOME)/include -shared -fPIC -fvisibility=hidden -lllama +Default_LLAMA_LIB_NAME := libllama.so +Default_JLLAMA_LIB_NAME := libjllama.so + +Linux-x86_64_CC := $(CROSS_PREFIX)g++ +Linux-x86_64_STRIP := $(CROSS_PREFIX)strip +Linux-x86_64_CCFLAGS := -O3 -m64 +Linux-x86_64_LINKFLAGS := $(Default_LINKFLAGS) +Linux-x86_64_LLAMA_LIB_NAME := libllama.so +Linux-x86_64_JLLAMA_LIB_NAME := libjllama.so + +Linux-arm_CC := $(CROSS_PREFIX)g++ +Linux-arm_STRIP := $(CROSS_PREFIX)strip +Linux-arm_CCFLAGS := -O3 -mfloat-abi=soft +Linux-arm_LLAMA_LIB_NAME := libllama.so +Linux-arm_JLLAMA_LIB_NAME := libjllama.so + +# Mac-x86_CCFLAGS := -I$(JAVA_HOME)/include -O3 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden +Mac-x86_64_CC := g++ -arch $(OS_ARCH) +Mac-x86_64_STRIP := strip -x +MAC_SDK := /Developer/SDKs/MacOSX10.10.sdk +ifeq ($(wildcard MAC_SDK),) + MAC_SDK := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk +endif +Mac-x86_64_CCFLAGS := -O3 -mmacosx-version-min=13.1 +Mac-x86_64_LINKFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -dynamiclib -fPIC -fvisibility=hidden -lllama +Mac-x86_64_LLAMA_LIB_NAME := libllama.dylib +Mac-x86_64_JLLAMA_LIB_NAME := libjllama.dylib + +# Mac-aarch64_CCFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -O3 -fPIC -mmacosx-version-min=10.9 -fvisibility=hidden -Wno-implicit-function-declaration +# Use a CROSS_PREFIX as the cross-triple clang is not available in crossbuild, see https://github.com/multiarch/crossbuild/blob/ad79cc84b6fb3fb1d09bc4a78719ef26f23bab85/Dockerfile#L134 +# When running on a M1 mac, CROSS_PREFIX will be empty, and 'make native' can still build +Mac-aarch64_CC := $(CROSS_PREFIX)clang +Mac-aarch64_STRIP := $(CROSS_PREFIX)strip -x +MAC_SDK := /usr/osxcross/SDK/MacOSX11.3.sdk +Mac-aarch64_CCFLAGS := -O3 -mmacosx-version-min=13.1 +Mac-aarch64_LINKFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -dynamiclib -fPIC -fvisibility=hidden -lllama +Mac-aarch64_LLAMA_LIB_NAME := libllama.dylib +Mac-aarch64_JLLAMA_LIB_NAME := libjllama.dylib + +Windows-x86_64_CC := $(CROSS_PREFIX)g++ +Windows-x86_64_STRIP := $(CROSS_PREFIX)strip +Windows-x86_64_CCFLAGS := -D_JNI_IMPLEMENTATION_ -O3 +Windows-x86_64_LINKFLAGS := -Idocker/inc_win -shared -Wl,--kill-at -lllama +Windows-x86_64_LLAMA_LIB_NAME := llama.dll +Windows-x86_64_JLLAMA_LIB_NAME := jllama.dll + +Windows-aarch64_CC := $(CROSS_PREFIX)clang +Windows-aarch64_STRIP := $(CROSS_PREFIX)strip +Windows-aarch64_CCFLAGS := -D_JNI_IMPLEMENTATION_ -O3 +Windows-aarch64_LINKFLAGS := -Idocker/inc_win -shared -Wl,--kill-at -lllama +Windows-aarch64_LLAMA_LIB_NAME := llama.dll +Windows-aarch64_JLLAMA_LIB_NAME := jllama.dll + + +CC := $($(target)_CC) +STRIP := $($(target)_STRIP) +CCFLAGS := $($(target)_CCFLAGS) +LINKFLAGS := $($(target)_LINKFLAGS) +LLAMA_LIB_NAME := $($(target)_LLAMA_LIB_NAME) +JLLAMA_LIB_NAME := $($(target)_JLLAMA_LIB_NAME) +CCFLAGS := $(CCFLAGS) +ifneq ($(jni_include),) +CCFLAGS := $(CCFLAGS) -I"$(jni_include)" +endif +ifneq ($(jni_md_include),) +CCFLAGS := $(CCFLAGS) -I"$(jni_md_include)" +endif + diff --git a/pom.xml b/pom.xml index 9be97c41..09f92e3e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 1.1.2 + 2.0.0 jar ${project.groupId}:${project.artifactId} @@ -50,16 +50,6 @@ - - net.java.dev.jna - jna - ${jna.version} - - - net.java.dev.jna - jna-platform - ${jna.version} - junit junit @@ -81,8 +71,10 @@ maven-compiler-plugin 3.11.0 - 11 - 11 + + -h + target/llama + diff --git a/scripts/jni-signature b/scripts/jni-signature new file mode 100755 index 00000000..8fc1886b --- /dev/null +++ b/scripts/jni-signature @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ -z "$1" ]; then + echo "Usage: $0 target/path/to/YourClass.class" + exit 1 +fi + +CLASS_NAME=$(basename "$1" .class) +CLASS_PATH=$(dirname "$1") + +echo $CLASS_NAME +echo $CLASS_PATH + +javap -s -p -cp "$CLASS_PATH" "$CLASS_NAME" diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp new file mode 100644 index 00000000..ea9d05d9 --- /dev/null +++ b/src/main/cpp/jllama.cpp @@ -0,0 +1,518 @@ +#include "llama.h" +#include "jllama.h" +#include "server.cpp" + +#include +#include + +// classes +static jclass c_llama_model = 0; +static jclass c_llama_iterator = 0; +static jclass c_model_params = 0; +static jclass c_infer_params = 0; +static jclass c_string = 0; +static jclass c_map = 0; +static jclass c_set = 0; +static jclass c_entry = 0; +static jclass c_iterator = 0; +static jclass c_integer = 0; +static jclass c_float = 0; +static jclass c_llama_error = 0; + +// methods +static jmethodID m_get_bytes = 0; +static jmethodID m_entry_set = 0; +static jmethodID m_set_iterator = 0; +static jmethodID m_iterator_has_next = 0; +static jmethodID m_iterator_next = 0; +static jmethodID m_entry_key = 0; +static jmethodID m_entry_value = 0; +static jmethodID m_int_value = 0; +static jmethodID m_float_value = 0; + +// fields +static jfieldID f_model_pointer = 0; +// iterator +static jfieldID f_iter_has_next = 0; +static jfieldID f_iter_n_generated = 0; +static jfieldID f_iter_token_index = 0; +// inference parameters +static jfieldID f_n_predict = 0; +static jfieldID f_n_keep = 0; +static jfieldID f_n_probs = 0; +static jfieldID f_logit_bias = 0; +static jfieldID f_top_k = 0; +static jfieldID f_top_p = 0; +static jfieldID f_tfs_z = 0; +static jfieldID f_typical_p = 0; +static jfieldID f_temperature = 0; +static jfieldID f_repeat_penalty = 0; +static jfieldID f_repeat_last_n = 0; +static jfieldID f_frequency_penalty = 0; +static jfieldID f_presence_penalty = 0; +static jfieldID f_penalize_nl = 0; +static jfieldID f_ignore_eos = 0; +static jfieldID f_mirostat = 0; +static jfieldID f_mirostat_tau = 0; +static jfieldID f_mirostat_eta = 0; +static jfieldID f_beam_search = 0; +static jfieldID f_n_beams = 0; +static jfieldID f_grammar = 0; +static jfieldID f_antiprompt = 0; +static jfieldID f_model_seed = 0; +// model parameters +static jfieldID f_n_threads = 0; +static jfieldID f_infer_seed = 0; +static jfieldID f_n_ctx = 0; +static jfieldID f_n_batch = 0; +static jfieldID f_n_gpu_layers = 0; +static jfieldID f_main_gpu = 0; +static jfieldID f_tensor_split = 0; +static jfieldID f_rope_freq_base = 0; +static jfieldID f_rope_freq_scale = 0; +static jfieldID f_low_vram = 0; +static jfieldID f_mul_mat_q = 0; +static jfieldID f_f16_kv = 0; +static jfieldID f_logits_all = 0; +static jfieldID f_vocab_only = 0; +static jfieldID f_use_mmap = 0; +static jfieldID f_use_mlock = 0; +static jfieldID f_embedding = 0; +static jfieldID f_lora_adapter = 0; +static jfieldID f_lora_base = 0; +static jfieldID f_hellaswag = 0; +static jfieldID f_hellaswag_tasks = 0; +static jfieldID f_memory_f16 = 0; +static jfieldID f_mem_test = 0; +static jfieldID f_numa = 0; +static jfieldID f_verbose_prompt = 0; + + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { + JNIEnv *env = 0; + + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) { + goto error; + } + + // find classes + c_llama_model = env->FindClass("de/kherud/llama/LlamaModel"); + c_llama_iterator = env->FindClass("de/kherud/llama/LlamaModel$LlamaIterator"); + c_infer_params = env->FindClass("de/kherud/llama/InferenceParameters"); + c_model_params = env->FindClass("de/kherud/llama/ModelParameters"); + c_string = env->FindClass("java/lang/String"); + c_map = env->FindClass("java/util/Map"); + c_set = env->FindClass("java/util/Set"); + c_entry = env->FindClass("java/util/Map$Entry"); + c_iterator = env->FindClass("java/util/Iterator"); + c_integer = env->FindClass("java/lang/Integer"); + c_float = env->FindClass("java/lang/Float"); + c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); + + if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_llama_error)) { + goto error; + } + + // create references + c_llama_model = (jclass) env->NewWeakGlobalRef(c_llama_model); + c_llama_iterator = (jclass) env->NewWeakGlobalRef(c_llama_iterator); + c_infer_params = (jclass) env->NewWeakGlobalRef(c_infer_params); + c_model_params = (jclass) env->NewWeakGlobalRef(c_model_params); + c_string = (jclass) env->NewWeakGlobalRef(c_string); + c_map = (jclass) env->NewWeakGlobalRef(c_map); + c_set = (jclass) env->NewWeakGlobalRef(c_set); + c_entry = (jclass) env->NewWeakGlobalRef(c_entry); + c_iterator = (jclass) env->NewWeakGlobalRef(c_iterator); + c_integer = (jclass) env->NewWeakGlobalRef(c_integer); + c_float = (jclass) env->NewWeakGlobalRef(c_float); + c_llama_error = (jclass) env->NewWeakGlobalRef(c_llama_error); + + // find methods + m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); + m_entry_set = env->GetMethodID(c_map, "entrySet", "()Ljava/util/Set;"); + m_set_iterator = env->GetMethodID(c_set, "iterator", "()Ljava/util/Iterator;"); + m_iterator_has_next = env->GetMethodID(c_iterator, "hasNext", "()Z"); + m_iterator_next = env->GetMethodID(c_iterator, "next", "()Ljava/lang/Object;"); + m_entry_key = env->GetMethodID(c_entry, "getKey", "()Ljava/lang/Object;"); + m_entry_value = env->GetMethodID(c_entry, "getValue", "()Ljava/lang/Object;"); + m_int_value = env->GetMethodID(c_integer, "intValue", "()I"); + m_float_value = env->GetMethodID(c_float, "floatValue", "()F"); + + if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_int_value && m_float_value)) { + goto error; + } + + // find fields + f_model_pointer = env->GetFieldID(c_llama_model, "ctx", "J"); + f_iter_has_next = env->GetFieldID(c_llama_iterator, "hasNext", "Z"); + f_iter_n_generated = env->GetFieldID(c_llama_iterator, "generatedCount", "J"); + f_iter_token_index = env->GetFieldID(c_llama_iterator, "tokenIndex", "J"); + + f_n_predict = env->GetFieldID(c_infer_params, "nPredict", "I"); + f_n_keep = env->GetFieldID(c_infer_params, "nKeep", "I"); + f_n_probs = env->GetFieldID(c_infer_params, "nProbs", "I"); + f_logit_bias = env->GetFieldID(c_infer_params, "logitBias", "Ljava/util/Map;"); + f_top_k = env->GetFieldID(c_infer_params, "topK", "I"); + f_top_p = env->GetFieldID(c_infer_params, "topP", "F"); + f_tfs_z = env->GetFieldID(c_infer_params, "tfsZ", "F"); + f_typical_p = env->GetFieldID(c_infer_params, "typicalP", "F"); + f_temperature = env->GetFieldID(c_infer_params, "temperature", "F"); + f_repeat_penalty = env->GetFieldID(c_infer_params, "repeatPenalty", "F"); + f_repeat_last_n = env->GetFieldID(c_infer_params, "repeatLastN", "I"); + f_frequency_penalty = env->GetFieldID(c_infer_params, "frequencyPenalty", "F"); + f_presence_penalty = env->GetFieldID(c_infer_params, "presencePenalty", "F"); + f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNL", "Z"); + f_ignore_eos = env->GetFieldID(c_infer_params, "ignoreEos", "Z"); + f_mirostat = env->GetFieldID(c_infer_params, "mirostat", "I"); + f_mirostat_tau = env->GetFieldID(c_infer_params, "mirostatTau", "F"); + f_mirostat_eta = env->GetFieldID(c_infer_params, "mirostatEta", "F"); + f_beam_search = env->GetFieldID(c_infer_params, "beamSearch", "Z"); + f_n_beams = env->GetFieldID(c_infer_params, "nBeams", "I"); + f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); + f_antiprompt = env->GetFieldID(c_infer_params, "antiprompt", "[Ljava/lang/String;"); + f_model_seed = env->GetFieldID(c_infer_params, "seed", "I"); + + f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); + f_infer_seed = env->GetFieldID(c_model_params, "seed", "I"); + f_n_ctx = env->GetFieldID(c_model_params, "nCtx", "I"); + f_n_batch = env->GetFieldID(c_model_params, "nBatch", "I"); + f_n_gpu_layers = env->GetFieldID(c_model_params, "nGpuLayers", "I"); + f_main_gpu = env->GetFieldID(c_model_params, "mainGpu", "I"); + f_tensor_split = env->GetFieldID(c_model_params, "tensorSplit", "[F"); + f_rope_freq_base = env->GetFieldID(c_model_params, "ropeFreqBase", "F"); + f_rope_freq_scale = env->GetFieldID(c_model_params, "ropeFreqScale", "F"); + f_low_vram = env->GetFieldID(c_model_params, "lowVram", "Z"); + f_mul_mat_q = env->GetFieldID(c_model_params, "mulMatQ", "Z"); + f_f16_kv = env->GetFieldID(c_model_params, "f16Kv", "Z"); + f_logits_all = env->GetFieldID(c_model_params, "logitsAll", "Z"); + f_vocab_only = env->GetFieldID(c_model_params, "vocabOnly", "Z"); + f_use_mmap = env->GetFieldID(c_model_params, "useMmap", "Z"); + f_use_mlock = env->GetFieldID(c_model_params, "useMlock", "Z"); + f_embedding = env->GetFieldID(c_model_params, "embedding", "Z"); + f_lora_adapter = env->GetFieldID(c_model_params, "loraAdapter", "Ljava/lang/String;"); + f_lora_base = env->GetFieldID(c_model_params, "loraBase", "Ljava/lang/String;"); + f_hellaswag = env->GetFieldID(c_model_params, "hellaswag", "Z"); + f_hellaswag_tasks = env->GetFieldID(c_model_params, "hellaswagTasks", "I"); + f_memory_f16 = env->GetFieldID(c_model_params, "memoryF16", "Z"); + f_mem_test = env->GetFieldID(c_model_params, "memTest", "Z"); + f_numa = env->GetFieldID(c_model_params, "numa", "Z"); + f_verbose_prompt = env->GetFieldID(c_model_params, "verbosePrompt", "Z"); + + if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) { + goto error; + } + if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_model_seed)) { + goto error; + } + if (!(f_n_threads && f_infer_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { + goto error; + } + + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + goto error; + } + + goto success; + +error: + return JNI_ERR; + +success: + return JNI_VERSION_1_1; +} + +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { + JNIEnv *env = 0; + + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_2)) return; + + env->DeleteWeakGlobalRef(c_llama_model); + env->DeleteWeakGlobalRef(c_llama_iterator); + env->DeleteWeakGlobalRef(c_infer_params); + env->DeleteWeakGlobalRef(c_model_params); + env->DeleteWeakGlobalRef(c_string); + env->DeleteWeakGlobalRef(c_map); + env->DeleteWeakGlobalRef(c_set); + env->DeleteWeakGlobalRef(c_entry); + env->DeleteWeakGlobalRef(c_iterator); + env->DeleteWeakGlobalRef(c_integer); + env->DeleteWeakGlobalRef(c_float); + env->DeleteWeakGlobalRef(c_llama_error); +} + +static std::string parse_jstring(JNIEnv* env, jstring java_string) { + const jbyteArray string_bytes = (jbyteArray) env->CallObjectMethod(java_string, m_get_bytes, env->NewStringUTF("UTF-8")); + + size_t length = (size_t) env->GetArrayLength(string_bytes); + jbyte* byte_elements = env->GetByteArrayElements(string_bytes, nullptr); + + std::string string = std::string((char*) byte_elements, length); + env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); + + env->DeleteLocalRef(string_bytes); + return string; +} + +static int parse_jinteger(JNIEnv* env, jobject java_integer) { + if (!java_integer) return 0; + return env->CallIntMethod(java_integer, m_int_value); +} + +static float parse_jfloat(JNIEnv* env, jobject java_float) { + if (!java_float) return 0; + return env->CallFloatMethod(java_float, m_float_value); +} + +float getJavaFloatValue(JNIEnv* env, jobject javaFloat) { + if (!javaFloat) return 0.0f; // Return a default value if the input object is null + + jclass floatClass = env->FindClass("java/lang/Float"); + jmethodID floatValueMethodID = env->GetMethodID(floatClass, "floatValue", "()F"); + + float value = env->CallFloatMethod(javaFloat, floatValueMethodID); + + // Clean up the local reference + env->DeleteLocalRef(floatClass); + + return value; +} + +static jstring parse_utf16_string(JNIEnv* env, std::string string) { + std::wstring_convert, char16_t> converter; + std::u16string string_utf16 = converter.from_bytes(string); + return env->NewString((jchar*)string_utf16.data(), string_utf16.size()); +} + +static gpt_params parse_model_params(JNIEnv* env, jobject jparams, jstring java_file_path) { + gpt_params params; + + params.model = parse_jstring(env, java_file_path); + + return params; +} + +static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jstring prompt, jobject params) { + llama->prompt = parse_jstring(env, prompt); + llama->params.n_predict = env->GetIntField(params, f_n_predict); + llama->params.n_keep = env->GetIntField(params, f_n_keep); + llama->params.n_probs = env->GetIntField(params, f_n_probs); + llama->params.top_k = env->GetIntField(params, f_top_k); + llama->params.top_p = env->GetFloatField(params, f_top_p); + llama->params.tfs_z = env->GetFloatField(params, f_tfs_z); + llama->params.typical_p = env->GetFloatField(params, f_typical_p); + llama->params.temp = env->GetFloatField(params, f_temperature); + llama->params.repeat_penalty = env->GetFloatField(params, f_repeat_penalty); + llama->params.repeat_last_n = env->GetIntField(params, f_repeat_last_n); + llama->params.frequency_penalty = env->GetFloatField(params, f_frequency_penalty); + llama->params.presence_penalty = env->GetFloatField(params, f_presence_penalty); + llama->params.penalize_nl = env->GetBooleanField(params, f_penalize_nl); + llama->params.mirostat = env->GetIntField(params, f_mirostat); + llama->params.mirostat_tau = env->GetFloatField(params, f_mirostat_tau); + llama->params.mirostat_eta = env->GetFloatField(params, f_mirostat_eta); + llama->params.seed = env->GetIntField(params, f_model_seed); + + jstring j_grammar = (jstring) env->GetObjectField(params, f_grammar); + if (j_grammar == nullptr) { + llama->params.grammar = ""; + } else { + llama->params.grammar = parse_jstring(env, j_grammar); + env->DeleteLocalRef(j_grammar); + } + + llama->params.logit_bias.clear(); + jboolean ignore_eos = env->GetBooleanField(params, f_ignore_eos); + if (ignore_eos) { + llama->params.logit_bias[llama_token_eos(llama->ctx)] = -INFINITY; + } + + jobject logit_bias = env->GetObjectField(params, f_logit_bias); + if (logit_bias != nullptr) { + const int n_vocab = llama_n_vocab(llama->ctx); + jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); + jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); + while (env->CallBooleanMethod(iterator, m_iterator_has_next)) { + jobject entry = env->CallObjectMethod(iterator, m_iterator_next); + jobject key = env->CallObjectMethod(entry, m_entry_key); + jobject value = env->CallObjectMethod(entry, m_entry_value); + + int tok = parse_jinteger(env, key); + float bias = parse_jfloat(env, value); + llama->params.logit_bias[tok] = bias; + + env->DeleteLocalRef(entry); + env->DeleteLocalRef(key); + env->DeleteLocalRef(value); + } + } + + llama->params.antiprompt.clear(); + jobjectArray antiprompt = (jobjectArray) env->GetObjectField(params, f_antiprompt); + if (antiprompt != nullptr) { + jsize array_length = env->GetArrayLength(antiprompt); + for (jsize i = 0; i < array_length; i++) { + jstring java_string = (jstring) env->GetObjectArrayElement(antiprompt, i); + if (java_string != nullptr) { + std::string string = parse_jstring(env, java_string); + llama->params.antiprompt.push_back(string); + env->DeleteLocalRef(java_string); + } + } + } + + LOG_VERBOSE("completion parameters parsed", format_generation_settings(*llama)); +} + + +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv * env, jobject obj) { + const char * sys_info = llama_print_system_info(); + return env->NewStringUTF(sys_info); +} + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv * env, jobject obj, jstring file_path, jobject jparams) { + gpt_params params = parse_model_params(env, jparams, file_path); + + llama_server_context* llama = new llama_server_context; + llama_backend_init(false); + + if (!llama->loadModel(params)) + { + env->ThrowNew(c_llama_error, "could not load model from given file path"); + return; + } + + LOG_INFO("build info", {{"build", BUILD_NUMBER}, + {"commit", BUILD_COMMIT}}); + LOG_INFO("system info", { + {"n_threads", params.n_threads}, + {"total_threads", std::thread::hardware_concurrency()}, + {"system_info", llama_print_system_info()}, + }); + + env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); +} + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv * env, jobject obj, jstring prompt, jobject params) { + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + llama_server_context* llama = reinterpret_cast(llama_handle); + + auto lock = llama->lock(); + + llama->rewind(); + + llama_reset_timings(llama->ctx); + + parse_inference_params(env, llama, prompt, params); + + if (!llama->loadGrammar()) + { + env->ThrowNew(c_llama_error, "could not load grammar"); + } + + llama->loadPrompt(); + llama->beginCompletion(); +} + +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv * env, jobject obj, jobject iter) { + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + llama_server_context* llama = reinterpret_cast(llama_handle); + + size_t sent_count = env->GetLongField(iter, f_iter_n_generated);; + size_t sent_token_probs_index = env->GetLongField(iter, f_iter_token_index); + + completion_token_output token_with_probs; + while (llama->has_next_token) { + token_with_probs = llama->doCompletion(); + if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) { + break; + } + } + const std::string token_text = llama_token_to_piece(llama->ctx, token_with_probs.tok); + + size_t pos = std::min(sent_count, llama->generated_text.size()); + + const std::string str_test = llama->generated_text.substr(pos); + bool is_stop_full = false; + size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); + if (stop_pos != std::string::npos) { + is_stop_full = true; + llama->generated_text.erase( + llama->generated_text.begin() + pos + stop_pos, + llama->generated_text.end()); + pos = std::min(sent_count, llama->generated_text.size()); + } else { + is_stop_full = false; + stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); + } + + std::string to_send; + if (stop_pos == std::string::npos || (!llama->has_next_token && !is_stop_full && stop_pos > 0)) { + to_send = llama->generated_text.substr(pos, std::string::npos); + sent_count += to_send.size(); + env->SetLongField(iter, f_iter_n_generated, sent_count); + + std::vector probs_output = {}; + + if (llama->params.n_probs > 0) { + const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); + size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); + size_t probs_stop_pos = std::min( + sent_token_probs_index + to_send_toks.size(), + llama->generated_token_probs.size() + ); + if (probs_pos < probs_stop_pos) { + probs_output = std::vector( + llama->generated_token_probs.begin() + probs_pos, + llama->generated_token_probs.begin() + probs_stop_pos + ); + } + sent_token_probs_index = probs_stop_pos; + env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); + } + } else { + to_send = ""; + } + + if (!llama->has_next_token) { + env->SetLongField(iter, f_iter_has_next, false); + } + + return parse_utf16_string(env, to_send); +} + +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv * env, jobject obj, jstring prompt, jobject params) { + Java_de_kherud_llama_LlamaModel_setupInference(env, obj, prompt, params); + + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + llama_server_context* llama = reinterpret_cast(llama_handle); + + size_t stop_pos = std::string::npos; + + while (llama->has_next_token) { + const completion_token_output token_with_probs = llama->doCompletion(); + const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); + + stop_pos = llama->findStoppingStrings(llama->generated_text, + token_text.size(), STOP_FULL); + } + + if (stop_pos == std::string::npos) { + stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); + } + if (stop_pos != std::string::npos) { + llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); + } + + auto probs = llama->generated_token_probs; + if (llama->params.n_probs > 0 && llama->stopped_word) { + const std::vector stop_word_toks = llama_tokenize(llama->ctx, llama->stopping_word, false); + probs = std::vector(llama->generated_token_probs.begin(), llama->generated_token_probs.end() - stop_word_toks.size()); + } + + llama_print_timings(llama->ctx); + + llama->lock().release(); + llama->mutex.unlock(); + + return parse_utf16_string(env, llama->generated_text); +} diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java new file mode 100644 index 00000000..1d7e3413 --- /dev/null +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -0,0 +1,305 @@ +package de.kherud.llama; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(String)} and + * {@link LlamaModel#complete(String)}. + */ +public class InferenceParameters { + + public final int nPredict; // new tokens to predict + public final int nKeep; // number of tokens to keep from initial prompt + public final int nProbs; // if greater than 0, output the probabilities of top nProbs tokens. + @Nullable + public final Map logitBias; // logit bias for specific tokens + public final int topK; // <= 0 to use vocab size + public final float topP; // 1.0 = disabled + public final float tfsZ; // 1.0 = disabled + public final float typicalP; // 1.0 = disabled + public final float temperature; // 1.0 = disabled + public final float repeatPenalty; // 1.0 = disabled + public final int repeatLastN; // last n tokens to penalize (0 = disable penalty, -1 = context size) + public final float frequencyPenalty; // 0.0 = disabled + public final float presencePenalty; // 0.0 = disabled + public final boolean penalizeNL; // 0.0 = disabled + public final boolean ignoreEos; + public final int mirostat; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 + public final float mirostatTau; // target entropy + public final float mirostatEta; // learning rate + public final boolean beamSearch; + public final int nBeams; + @Nullable + public final String grammar; // optional BNF-like grammar to constrain sampling + @Nullable + public final String[] antiprompt; // string upon seeing which more user input is prompted + public final int seed; + + /** + * Private constructor to build immutable parameters object. Called via {@link Builder}. + */ + private InferenceParameters( + int nPredict, + int nKeep, + int nProbs, + @Nullable Map logitBias, + int topK, + float topP, + float tfsZ, + float typicalP, + float temperature, + float repeatPenalty, + int repeatLastN, + float frequencyPenalty, + float presencePenalty, + boolean penalizeNL, + boolean ignoreEos, + MiroStat mirostat, + float mirostatTau, + float mirostatEta, + boolean beamSearch, + int nBeams, + @Nullable String grammar, + @Nullable String[] antiprompt, + int seed + ) { + this.nPredict = nPredict; + this.nKeep = nKeep; + this.nProbs = nProbs; + this.logitBias = logitBias; + this.topK = topK; + this.topP = topP; + this.tfsZ = tfsZ; + this.typicalP = typicalP; + this.temperature = temperature; + this.repeatPenalty = repeatPenalty; + this.repeatLastN = repeatLastN; + this.frequencyPenalty = frequencyPenalty; + this.presencePenalty = presencePenalty; + this.penalizeNL = penalizeNL; + this.ignoreEos = ignoreEos; + this.mirostat = mirostat.level; + this.mirostatTau = mirostatTau; + this.mirostatEta = mirostatEta; + this.beamSearch = beamSearch; + this.nBeams = nBeams; + this.grammar = grammar; + this.antiprompt = antiprompt; + this.seed = seed; + } + + /** + * The builder class used for creating new {@link InferenceParameters} of a {@link LlamaModel}. + */ + public static class Builder { + + private int nPredict = -1; // new tokens to predict + private int nKeep = 0; // number of tokens to keep from initial prompt + private int nProbs = 0; // if greater than 0, output the probabilities of top nProbs tokens. + + // sampling parameters + private Map logitBias = null; // logit bias for specific tokens + private int topK = 40; // <= 0 to use vocab size + private float topP = 0.95f; // 1.0 = disabled + private float tfsZ = 1.00f; // 1.0 = disabled + private float typicalP = 1.00f; // 1.0 = disabled + private float temperature = 0.80f; // 1.0 = disabled + private float repeatPenalty = 1.10f; // 1.0 = disabled + private int repeatLastN = 64; // last n tokens to penalize (0 = disable penalty, -1 = context size) + private float frequencyPenalty = 0.00f; // 0.0 = disabled + private float presencePenalty = 0.00f; // 0.0 = disabled + private boolean penalizeNl = false; // consider newlines as a repeatable token + private boolean ignoreEos = false; + private MiroStat mirostat = MiroStat.Disabled; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 + private float mirostatTau = 5.00f; // target entropy + private float mirostatEta = 0.10f; // learning rate + private boolean beamSearch = false; + private int nBeams = 2; + + private String grammar = null; // optional BNF-like grammar to constrain sampling + private String[] antiPrompt = null; // string upon seeing which more user input is prompted + + private int seed = 42; + + /** + * Constructs the immutable {@link InferenceParameters} objects with the configured options. + * Note, that all options not configured have sensible defaults. + * + * @return an immutable parameters object + */ + public InferenceParameters build() { + return new InferenceParameters( + nPredict, + nKeep, + nProbs, + logitBias, + topK, + topP, + tfsZ, + typicalP, + temperature, + repeatPenalty, + repeatLastN, + frequencyPenalty, + presencePenalty, + penalizeNl, + ignoreEos, + mirostat, + mirostatTau, + mirostatEta, + beamSearch, + nBeams, + grammar, + antiPrompt, + seed + ); + } + + public Builder setNPredict(int nPredict) { + this.nPredict = nPredict; + return this; + } + + public Builder setNKeep(int nKeep) { + this.nKeep = nKeep; + return this; + } + + public Builder setNProbs(int nProbs) { + this.nProbs = nProbs; + return this; + } + + public Builder setLogitBias(@NotNull Map logitBias) { + this.logitBias = Collections.unmodifiableMap(logitBias); + return this; + } + + public Builder setTopK(int topK) { + this.topK = topK; + return this; + } + + public Builder setTopP(float topP) { + this.topP = topP; + return this; + } + + public Builder setTfsZ(float tfsZ) { + this.tfsZ = tfsZ; + return this; + } + + public Builder setTypicalP(float typicalP) { + this.typicalP = typicalP; + return this; + } + + public Builder setTemperature(float temperature) { + this.temperature = temperature; + return this; + } + + public Builder setRepeatPenalty(float repeatPenalty) { + this.repeatPenalty = repeatPenalty; + return this; + } + + public Builder setRepeatLastN(int repeatLastN) { + this.repeatLastN = repeatLastN; + return this; + } + + public Builder setFrequencyPenalty(float frequencyPenalty) { + this.frequencyPenalty = frequencyPenalty; + return this; + } + + public Builder setPresencePenalty(float presencePenalty) { + this.presencePenalty = presencePenalty; + return this; + } + + public Builder setPenalizeNl(boolean penalizeNl) { + this.penalizeNl = penalizeNl; + return this; + } + + public Builder setIgnoreEos(boolean ignoreEos) { + this.ignoreEos = ignoreEos; + return this; + } + + public Builder setMirostat(MiroStat mode) { + this.mirostat = mode; + return this; + } + + public Builder setMirostatTau(float mirostatTau) { + this.mirostatTau = mirostatTau; + return this; + } + + public Builder setMirostatEta(float mirostatEta) { + this.mirostatEta = mirostatEta; + return this; + } + + public Builder setBeamSearch(boolean beamSearch) { + this.beamSearch = beamSearch; + return this; + } + + public Builder setNBeams(int nBeams) { + this.nBeams = nBeams; + return this; + } + + public Builder setGrammar(@NotNull File file) throws IOException { + StringBuilder grammarBuilder = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + String currentLine; + while ((currentLine = br.readLine()) != null) { + grammarBuilder.append(currentLine).append("\n"); + } + } + return setGrammar(grammarBuilder.toString()); + } + + public Builder setGrammar(@Nullable String grammar) { + this.grammar = grammar; + return this; + } + + public Builder setAntiPrompt(@NotNull String[] antiPrompt) { + this.antiPrompt = antiPrompt; + return this; + } + + public Builder setSeed(int seed) { + this.seed = seed; + return this; + } + } + + public enum MiroStat { + + Disabled(0), + V1(1), + V2(2); + + private final int level; + + MiroStat(int level) { + this.level = level; + } + } +} diff --git a/src/main/java/de/kherud/llama/LlamaException.java b/src/main/java/de/kherud/llama/LlamaException.java new file mode 100644 index 00000000..c2b5762c --- /dev/null +++ b/src/main/java/de/kherud/llama/LlamaException.java @@ -0,0 +1,9 @@ +package de.kherud.llama; + +public class LlamaException extends RuntimeException { + + public LlamaException(String message) { + super(message); + } + +} diff --git a/src/main/java/de/kherud/llama/LlamaGrammar.java b/src/main/java/de/kherud/llama/LlamaGrammar.java deleted file mode 100644 index f710b046..00000000 --- a/src/main/java/de/kherud/llama/LlamaGrammar.java +++ /dev/null @@ -1,494 +0,0 @@ -package de.kherud.llama; - -import com.sun.jna.Memory; -import com.sun.jna.Native; -import com.sun.jna.Pointer; -import de.kherud.llama.foreign.LlamaLibrary; -import de.kherud.llama.foreign.NativeSize; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static de.kherud.llama.foreign.LlamaLibrary.llama_gretype.*; - -/** - * Implements a parser for an extended Backus-Naur form (BNF), producing the binary context-free grammar format - * specified by llama.h. Supports character ranges, grouping, and repetition operators. As an example, a grammar for - * arithmetic might look like: - *
- * root  ::= expr
- * expr  ::= term ([-+/] term)
- * term  ::= num | "(" space expr ")" space
- * num   ::= [0-9]+ space
- * space ::= [ \t\n]*
- * 
- * This class is implemented as an {@link AutoCloseable} in order to free the natively allocated memory for this - * grammar, after it is no longer needed. - */ -public class LlamaGrammar implements AutoCloseable { - - private final ParseState state; - final LlamaLibrary.llama_grammar foreign; - - /** - * Loads a grammar from a file, directly parses it, and allocates a native {@link LlamaLibrary.llama_grammar}. - * - * @param file the file containing a grammar - * @throws IOException on problems reading the file - */ - public LlamaGrammar(File file) throws IOException { - this(file.toPath()); - } - - /** - * Loads a grammar from a path, directly parses it, and allocates a native {@link LlamaLibrary.llama_grammar}. - * - * @param path the path to a file containing a grammar - * @throws IOException on problems reading the file - */ - public LlamaGrammar(Path path) throws IOException { - this(Files.readString(path, StandardCharsets.UTF_8)); - } - - /** - * Parses a grammar given as string and allocates a native {@link LlamaLibrary.llama_grammar}. - * - * @param grammar the grammar string - */ - public LlamaGrammar(String grammar) { - this.state = new ParseState(grammar); - this.foreign = state.create(); - } - - @Override - public String toString() { - return state.toString(); - } - - @Override - public void close() { - LlamaLibrary.llama_grammar_free(foreign); - } - - /** - * The state object used for parsing a grammar. - * It can't be modified and is used to allocate the native {@link LlamaLibrary.llama_grammar}. - */ - static final class ParseState { - - final Map symbol2Id = new HashMap<>(); - final Map id2Symbol = new HashMap<>(); - final List>> rules = new ArrayList<>(); - private String string; - - ParseState(String grammar) { - parse(grammar.getBytes(StandardCharsets.UTF_8)); - } - - private void parse(byte[] src) { - int pos = parseSpace(src, 0, true); - while (pos < src.length) { - pos = parseRule(src, pos); - } - } - - private LlamaLibrary.llama_grammar create() { - // creating the grammar is a bit tricky, since we need to allocate contiguous memory segments for the - // elements of each rule - - List rulePointers = new ArrayList<>(); - for (int ruleIndex = 0; ruleIndex < rules.size(); ruleIndex++) { - List> rule = rules.get(ruleIndex); - if (rule == null || rule.isEmpty()) { - throw new IllegalArgumentException("no rule for symbol '" + id2Symbol.get(ruleIndex) + "' found"); - } - Memory memory = new Memory((long) rule.size() * 8); - for (int i = 0; i < rule.size(); i++) { - Pair element = rule.get(i); - memory.setInt((long) i * 8, element.a); - memory.setInt((long) i * 8 + 4, element.b); - } - rulePointers.add(memory); - } - - Pointer memory = new Memory((long) Native.POINTER_SIZE * rulePointers.size()); - for (int i = 0; i < rulePointers.size(); i++) { - memory.setPointer((long) i * Native.POINTER_SIZE, rulePointers.get(i)); - } - - NativeSize nRules = new NativeSize(rulePointers.size()); - NativeSize startRuleIndex = new NativeSize(symbol2Id.get("root")); - - return LlamaLibrary.llama_grammar_init(memory, nRules, startRuleIndex); - } - - private int parseSpace(byte[] src, int pos, boolean newlineOk) { - while (pos < src.length) { - byte currentChar = src[pos]; - if (currentChar == ' ' - || currentChar == '\t' - || currentChar == '#' - || (newlineOk && (currentChar == '\r' || currentChar == '\n'))) { - if (currentChar == '#') { - while (pos < src.length - && src[pos] != '\r' - && src[pos] != '\n') { - pos++; - } - } else { - pos++; - } - } else { - break; - } - } - return pos; - } - - private int parseRule(byte[] src, int startPos) throws RuntimeException { - int nameEnd = parseName(src, startPos); - int pos = parseSpace(src, nameEnd, false); - int nameLen = nameEnd - startPos; - - int ruleId = getSymbolId(src, startPos, nameLen); - String name = new String(src, startPos, nameLen, StandardCharsets.UTF_8); - - if (src.length <= pos + 2 || !(src[pos] == ':' && src[pos + 1] == ':' && src[pos + 2] == '=')) { - throw new RuntimeException("Expecting ::= at position " + pos); - } - pos = parseSpace(src, pos + 3, true); - - pos = parseAlternates(src, pos, name, ruleId, false); - - if (pos < src.length) { - if (src[pos] == '\r') { - pos += (pos + 1 < src.length && src[pos + 1] == '\n') ? 2 : 1; - } else if (src[pos] == '\n') { - pos++; - } else { - throw new RuntimeException("Expecting newline or end at position " + pos); - } - } - - return parseSpace(src, pos, true); - } - - private int parseName(byte[] src, int startPos) { - int pos = startPos; - while (pos < src.length && isWordChar(src[pos])) { - pos++; - } - if (pos == startPos) { - throw new RuntimeException("Expecting name at position " + startPos); - } - return pos; - } - - private boolean isWordChar(byte c) { - return 'a' <= c && c <= 'z' - || 'A' <= c && c <= 'Z' - || c == '-' - || ('0' <= c && c <= '9'); - } - - private int getSymbolId(byte[] src, int pos, int len) { - String str = new String(src, pos, len, StandardCharsets.UTF_8); - if (!symbol2Id.containsKey(str)) { - int nextId = symbol2Id.size(); - symbol2Id.put(str, nextId); - id2Symbol.put(nextId, str); - } - return symbol2Id.get(str); - } - - private int parseAlternates(byte[] src, int startPos, String ruleName, int ruleId, boolean isNested) { - List> rule = new ArrayList<>(); - int pos = parseSequence(ruleName, src, startPos, rule, isNested); - - while (pos < src.length && src[pos] == '|') { - rule.add(new Pair<>(LLAMA_GRETYPE_ALT, 0)); - pos = parseSpace(src, pos + 1, true); - pos = parseSequence(ruleName, src, pos, rule, isNested); - } - - rule.add(new Pair<>(LLAMA_GRETYPE_END, 0)); - addRule(ruleId, rule); - - return pos; - } - - private void addRule(int ruleId, List> rule) { - // resize the rules ArrayList if necessary - while (rules.size() <= ruleId) { - rules.add(null); - } - rules.set(ruleId, rule); - } - - private int parseSequence(String ruleName, byte[] src, int startPos, List> outElements, boolean isNested) { - int lastSymStart = outElements.size(); - int pos = startPos; - - while (pos < src.length) { - if (src[pos] == '"') { - pos++; - lastSymStart = outElements.size(); - while (src[pos] != '"') { - Pair charPair = parseChar(src, pos); - pos = charPair.b; - outElements.add(new Pair<>(LLAMA_GRETYPE_CHAR, charPair.a)); - } - pos = parseSpace(src, pos + 1, isNested); - } else if (src[pos] == '[') { // char range(s) - pos++; - int startType = LLAMA_GRETYPE_CHAR; - if (src[pos] == '^') { - pos++; - startType = LLAMA_GRETYPE_CHAR_NOT; - } - lastSymStart = outElements.size(); - while (src[pos] != ']') { - Pair charPair = parseChar(src, pos); - pos = charPair.b; - int type = lastSymStart < outElements.size() ? LLAMA_GRETYPE_CHAR_ALT : startType; - - outElements.add(new Pair<>(type, charPair.a)); - if (src[pos] == '-' && src[pos + 1] != ']') { - Pair endCharPair = parseChar(src, pos + 1); - pos = endCharPair.b; - outElements.add(new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, endCharPair.a)); - } - } - pos = parseSpace(src, pos + 1, isNested); - } else if (isWordChar(src[pos])) { // rule reference - int nameEnd = parseName(src, pos); - int refRuleId = getSymbolId(src, pos, nameEnd - pos); - pos = parseSpace(src, nameEnd, isNested); - lastSymStart = outElements.size(); - outElements.add(new Pair<>(LLAMA_GRETYPE_RULE_REF, refRuleId)); - } else if (src[pos] == '(') { // grouping - pos = parseSpace(src, pos + 1, true); - int subRuleId = generateSymbolId(ruleName); - pos = parseAlternates(src, pos, ruleName, subRuleId, true); - lastSymStart = outElements.size(); - outElements.add(new Pair<>(LLAMA_GRETYPE_RULE_REF, subRuleId)); - if (src[pos] != ')') { - throw new RuntimeException("expecting ')' at " + pos); - } - pos = parseSpace(src, pos + 1, isNested); - } else if (src[pos] == '*' || src[pos] == '+' || src[pos] == '?') { - if (lastSymStart == outElements.size()) { - throw new RuntimeException("expecting preceding item to */+/? at " + pos); - } - // apply transformation to previous symbol (last_sym_start to end) according to - // rewrite rules: - // S* --> S' ::= S S' | - // S+ --> S' ::= S S' | S - // S? --> S' ::= S | - int subRuleId = generateSymbolId(ruleName); - // Add preceding symbol to generated rule - List> subRule = new ArrayList<>(outElements.subList(lastSymStart, outElements.size())); - if (src[pos] == '*' || src[pos] == '+') { - // Cause generated rule to recurse - subRule.add(new Pair<>(LLAMA_GRETYPE_RULE_REF, subRuleId)); - } - // Mark start of alternate def - subRule.add(new Pair<>(LLAMA_GRETYPE_ALT, 0)); - if (src[pos] == '+') { - // Add preceding symbol as alternate only for '+' (otherwise empty) - subRule.addAll(outElements.subList(lastSymStart, outElements.size())); - } - subRule.add(new Pair<>(LLAMA_GRETYPE_END, 0)); - addRule(subRuleId, subRule); - - // In original rule, replace previous symbol with reference to generated rule - outElements.subList(lastSymStart, outElements.size()).clear(); - outElements.add(new Pair<>(LLAMA_GRETYPE_RULE_REF, subRuleId)); - - pos = parseSpace(src, pos + 1, isNested); - } else { - break; - } - } - return pos; - } - - private Pair parseChar(byte[] src, int pos) throws RuntimeException { - if (src[pos] == '\\') { - switch (src[pos + 1]) { - case 'x': - return parseHex(src, pos + 2, 2); - case 'u': - return parseHex(src, pos + 2, 4); - case 'U': - return parseHex(src, pos + 2, 8); - case 't': - return new Pair<>((int) '\t', pos + 2); - case 'r': - return new Pair<>((int) '\r', pos + 2); - case 'n': - return new Pair<>((int) '\n', pos + 2); - case '\\': - case '"': - case '[': - case ']': - return new Pair<>((int) src[pos + 1], pos + 2); - default: - throw new RuntimeException("Unknown escape at " + pos); - } - } else { - return decodeUtf8(src, pos); - } - } - - private Pair parseHex(byte[] src, int pos, int size) throws RuntimeException { - int end = pos + size; - int value = 0; - for (; pos < end && src[pos] != 0; pos++) { - value <<= 4; - byte c = src[pos]; - if ('a' <= c && c <= 'f') { - value += c - 'a' + 10; - } else if ('A' <= c && c <= 'F') { - value += c - 'A' + 10; - } else if ('0' <= c && c <= '9') { - value += c - '0'; - } else { - break; - } - } - if (pos != end) { - throw new RuntimeException("Expecting " + size + " hex chars at " + pos); - } - return new Pair<>(value, pos); - } - - private Pair decodeUtf8(byte[] src, int pos) { - final int[] lookup = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4}; - byte firstByte = src[pos]; - byte highBits = (byte) (firstByte >> 4); - int len = lookup[highBits]; - byte mask = (byte) ((1 << (8 - len)) - 1); - int value = firstByte & mask; - int end = pos + len; - pos = pos + 1; - for (; pos < end && src[pos] != 0; pos++) { - value = (value << 6) + (src[pos] & 0x3F); - } - return new Pair<>(value, pos); - } - - private int generateSymbolId(String baseName) { - int nextId = symbol2Id.size(); - symbol2Id.put(baseName + "_" + nextId, nextId); - return nextId; - } - - @Override - public String toString() { - if (string != null) { - return string; - } - StringBuilder grammarBuilder = new StringBuilder(); - for (int i = 0, end = rules.size(); i < end; i++) { - grammarBuilder.append(i).append(": "); - List> rule = rules.get(i); - appendRule(grammarBuilder, i, rule); - } - string = grammarBuilder.toString(); - return string; - } - - private void appendRule(StringBuilder builder, int ruleId, List> rule) { - if (rule.isEmpty() || rule.get(rule.size() - 1).a != LLAMA_GRETYPE_END) { - throw new RuntimeException("Malformed rule, does not end with LLAMA_GRETYPE_END: " + ruleId); - } - builder.append(id2Symbol.get(ruleId)).append(" ::= "); - for (int i = 0, end = rule.size() - 1; i < end; i++) { - Pair elem = rule.get(i); - switch (elem.a) { - case LLAMA_GRETYPE_END: - throw new RuntimeException("Unexpected end of rule: " + ruleId + "," + i); - case LLAMA_GRETYPE_ALT: - builder.append("| "); - break; - case LLAMA_GRETYPE_RULE_REF: - builder.append(id2Symbol.get(elem.b)).append(" "); - break; - case LLAMA_GRETYPE_CHAR: - builder.append("["); - printGrammarChar(builder, elem.b); - break; - case LLAMA_GRETYPE_CHAR_NOT: - builder.append("[^"); - printGrammarChar(builder, elem.b); - break; - case LLAMA_GRETYPE_CHAR_RNG_UPPER: - if (i == 0 || !isCharElement(rule.get(i - 1))) { - throw new RuntimeException( - "LLAMA_GRETYPE_CHAR_RNG_UPPER without preceding char: " + ruleId + "," + i); - } - builder.append("-"); - printGrammarChar(builder, elem.b); - break; - case LLAMA_GRETYPE_CHAR_ALT: - if (i == 0 || !isCharElement(rule.get(i - 1))) { - throw new RuntimeException( - "LLAMA_GRETYPE_CHAR_ALT without preceding char: " + ruleId + "," + i); - } - printGrammarChar(builder, elem.b); - break; - default: - throw new RuntimeException("Unknown type: " + elem.b); - } - if (isCharElement(elem)) { - switch (rule.get(i + 1).b) { - case LLAMA_GRETYPE_CHAR_ALT: - case LLAMA_GRETYPE_CHAR_RNG_UPPER: - break; - default: - builder.append("] "); - } - } - } - builder.append("\n"); - } - - private void printGrammarChar(StringBuilder builder, int c) { - if (c >= 0x20 && c <= 0x7f) { - builder.append((char) c); - } else { - builder.append(String.format("", c)); - } - } - - private boolean isCharElement(Pair element) { - switch (element.a) { - case LLAMA_GRETYPE_CHAR: - case LLAMA_GRETYPE_CHAR_NOT: - case LLAMA_GRETYPE_CHAR_ALT: - case LLAMA_GRETYPE_CHAR_RNG_UPPER: - return true; - default: - return false; - } - } - } - - static final class Pair { - final A a; - final B b; - - Pair(A a, B b) { - this.a = a; - this.b = b; - } - } -} diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java new file mode 100644 index 00000000..e06ad014 --- /dev/null +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -0,0 +1,257 @@ +/*-------------------------------------------------------------------------- + * Copyright 2007 Taro L. Saito + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *--------------------------------------------------------------------------*/ + +package de.kherud.llama; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; +import java.util.stream.Stream; + +import org.jetbrains.annotations.Nullable; + +/** + * Set the system properties, de.kherud.llama.lib.path, de.kherud.llama.lib.name, appropriately so that the + * library can find *.dll, *.dylib and *.so files, according to the current OS (win, linux, mac). + * + *

The library files are automatically extracted from this project's package (JAR). + * + *

usage: call {@link #initialize()} before using the library. + * + * @author leo + */ +@SuppressWarnings("UseOfSystemOutOrSystemErr") +class LlamaLoader { + + private static boolean extracted = false; + + /** + * Loads the llama and jllama shared libraries + */ + static synchronized void initialize() throws UnsatisfiedLinkError { + // only cleanup before the first extract + if (!extracted) { + cleanup(); + } + if ("Mac".equals(OSInfo.getOSName())) { + // todo copy metal file + } + loadNativeLibrary("llama"); + loadNativeLibrary("jllama"); + extracted = true; + } + + /** + * Deleted old native libraries e.g. on Windows the DLL file is not removed on VM-Exit (bug #80) + */ + private static void cleanup() { + try (Stream dirList = Files.list(getTempDir().toPath())) { + dirList.filter(LlamaLoader::shouldCleanPath).forEach(LlamaLoader::cleanPath); + } catch (IOException e) { + System.err.println("Failed to open directory: " + e.getMessage()); + } + } + + private static boolean shouldCleanPath(Path path) { + String fileName = path.getFileName().toString(); + return fileName.startsWith("jllama") || fileName.startsWith("llama"); + } + + private static void cleanPath(Path path) { + try { + Files.delete(path); + } catch (Exception e) { + System.err.println("Failed to delete old native lib: " + e.getMessage()); + } + } + + private static void loadNativeLibrary(String name) { + List triedPaths = new LinkedList<>(); + + // Try loading library from de.kherud.llama.lib.path library path + String nativeLibName = System.getProperty("de.kherud.llama.lib.name"); + if (nativeLibName == null) { + nativeLibName = System.mapLibraryName(name); + } + + String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); + if (nativeLibPath != null) { + Path path = Paths.get(nativeLibPath); + if (loadNativeLibrary(path)) { + return; + } else { + triedPaths.add(nativeLibPath); + } + } + + // Load the os-dependent library from the jar file + nativeLibPath = getNativeResourcePath(); + if (hasNativeLib(nativeLibPath, nativeLibName)) { + // temporary library folder + String tempFolder = getTempDir().getAbsolutePath(); + // Try extracting the library from jar + if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { + return; + } else { + triedPaths.add(nativeLibPath); + } + } + + // As a last resort try from java.library.path + String javaLibraryPath = System.getProperty("java.library.path", ""); + for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { + if (ldPath.isEmpty()) { + continue; + } + Path path = Paths.get(ldPath); + if (loadNativeLibrary(path)) { + return; + } else { + triedPaths.add(ldPath); + } + } + + throw new UnsatisfiedLinkError( + String.format( + "No native library found for os.name=%s, os.arch=%s, paths=[%s]", + OSInfo.getOSName(), + OSInfo.getArchName(), + String.join(File.pathSeparator, triedPaths) + ) + ); + } + + /** + * Loads native library using the given path and name of the library + * + * @param path path of the native library + * @return true for successfully loading, otherwise false + */ + private static boolean loadNativeLibrary(Path path) { + if (!Files.exists(path)) { + return false; + } + String absolutePath = path.toAbsolutePath().toString(); + try { + System.load(absolutePath); + return true; + } catch (UnsatisfiedLinkError e) { + System.err.println(e.getMessage()); + System.err.println("Failed to load native library: " + absolutePath + ". osinfo: " + OSInfo.getNativeLibFolderPathForCurrentOS()); + return false; + } + } + + @Nullable + private static Path extractFile(String sourceDirectory, String fileName, String targetDirectory) { + String nativeLibraryFilePath = sourceDirectory + "/" + fileName; + // Include architecture name in temporary filename in order to avoid conflicts + // when multiple JVMs with different architectures running at the same time + String uuid = UUID.randomUUID().toString(); + String extractedLibFileName = uuid + "-" + fileName; + + Path extractedFilePath = Paths.get(targetDirectory, extractedLibFileName); + + try { + // Extract a native library file into the target directory + try (InputStream reader = LlamaLoader.class.getResourceAsStream(nativeLibraryFilePath)) { + if (reader == null) { + return null; + } + Files.copy(reader, extractedFilePath, StandardCopyOption.REPLACE_EXISTING); + } finally { + // Delete the extracted lib file on JVM exit. + extractedFilePath.toFile().deleteOnExit(); + } + + // Set executable (x) flag to enable Java to load the native library + extractedFilePath.toFile().setReadable(true); + extractedFilePath.toFile().setWritable(true, true); + extractedFilePath.toFile().setExecutable(true); + + // Check whether the contents are properly copied from the resource folder + try (InputStream nativeIn = LlamaLoader.class.getResourceAsStream(nativeLibraryFilePath); + InputStream extractedLibIn = Files.newInputStream(extractedFilePath)) { + if (!contentsEquals(nativeIn, extractedLibIn)) { + throw new RuntimeException(String.format("Failed to write a native library file at %s", extractedFilePath)); + } + } + + System.out.println("Extracted '" + fileName + "' to '" + extractedFilePath + "'"); + return extractedFilePath; + } catch (IOException e) { + System.err.println(e.getMessage()); + return null; + } + } + + /** + * Extracts and loads the specified library file to the target folder + * + * @param libFolderForCurrentOS Library path. + * @param libraryFileName Library name. + * @param targetFolder Target folder. + * @return whether the library was successfully loaded + */ + private static boolean extractAndLoadLibraryFile(String libFolderForCurrentOS, String libraryFileName, String targetFolder) { + Path path = extractFile(libFolderForCurrentOS, libraryFileName, targetFolder); + if (path == null) { + return false; + } + return loadNativeLibrary(path); + } + + private static boolean contentsEquals(InputStream in1, InputStream in2) throws IOException { + if (!(in1 instanceof BufferedInputStream)) { + in1 = new BufferedInputStream(in1); + } + if (!(in2 instanceof BufferedInputStream)) { + in2 = new BufferedInputStream(in2); + } + + int ch = in1.read(); + while (ch != -1) { + int ch2 = in2.read(); + if (ch != ch2) { + return false; + } + ch = in1.read(); + } + int ch2 = in2.read(); + return ch2 == -1; + } + + private static File getTempDir() { + return new File(System.getProperty("de.kherud.llama.tmpdir", System.getProperty("java.io.tmpdir"))); + } + + private static String getNativeResourcePath() { + String packagePath = LlamaLoader.class.getPackage().getName().replace(".", "/"); + return String.format("/%s/%s", packagePath, OSInfo.getNativeLibFolderPathForCurrentOS()); + } + + private static boolean hasNativeLib(String path, String libraryName) { + return LlamaLoader.class.getResource(path + "/" + libraryName) != null; + } +} diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 8fb6efaa..3aa6cde3 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -1,617 +1,91 @@ package de.kherud.llama; -import com.sun.jna.Pointer; -import de.kherud.llama.foreign.LlamaLibrary; -import de.kherud.llama.foreign.NativeSize; -import de.kherud.llama.foreign.llama_timings; -import de.kherud.llama.foreign.llama_token_data; -import de.kherud.llama.foreign.llama_token_data_array; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.nio.ByteBuffer; -import java.nio.IntBuffer; -import java.nio.charset.StandardCharsets; +import java.lang.annotation.Native; import java.util.Iterator; import java.util.NoSuchElementException; -import java.util.function.BiConsumer; - -/** - * This class is a wrapper around the llama.cpp functionality. - * Upon being created, it natively allocates memory for the model context. - * Thus, this class is an {@link AutoCloseable}, in order to de-allocate the memory when it is no longer being needed. - *

- * This class is NOT stateless, it internally manages the state of a single conversation. - * If this state isn't needed or wanted, call {@link #reset()}. - *

- * The main functionality of this class is: - *

    - *
  • Streaming answers (and probabilities) via {@link #generate(String)}
  • - *
  • Creating whole responses to prompts via {@link #complete(String)}
  • - *
  • Creating embeddings via {@link #getEmbedding(String)} (make sure to configure {@link Parameters.Builder#setEmbedding(boolean)}
  • - *
  • Accessing the tokenizer via {@link #encode(String)} and {@link #decode(int[])}
  • - *
- */ -public class LlamaModel implements AutoCloseable { - - static { - LlamaLibrary.llama_backend_init((byte) 0); - } - private static BiConsumer logCallback; - - private final Parameters params; - private final LlamaLibrary.llama_model model; - private final LlamaLibrary.llama_context ctx; - - // cache some things for performance - private final Pointer logitsPointer; // pointer to retrieve the logits of the llm - private final SliceableIntBuffer contextBuffer; // used to hold all tokens of a conversation - private final SliceableIntBuffer tokenBuffer; // used for tokenization - private SliceableByteBuffer tokenPieceBuffer; // used to decode tokens to string (might be resized if out of capacity) - private final llama_token_data.ByReference[] candidateData; // candidates used for sampling - private final llama_token_data_array candidates; // array holding the candidates - private final int nVocab; - private final int tokenBos; - private final int tokenEos; - private final int tokenNl; - private int nPast = 0; // how many evaluated tokens are currently in the context buffer - private int nContext = 0; // how many tokens currently are in the context buffer - private int nBuffered = 0; - - /** - * Load a gguf llama.cpp model from a given file path with default {@link Parameters}. - * - * @param filePath a file path pointing to the model - */ - public LlamaModel(String filePath) { - this(filePath, new Parameters.Builder().build()); - } - - /** - * Load a gguf llama.cpp model from a given file path with custom {@link Parameters}. - * - * @param filePath a file path pointing to the model - * @param params the set of previously configured options - */ - public LlamaModel(String filePath, Parameters params) { - // load the model - this.params = params; - model = LlamaLibrary.llama_load_model_from_file(filePath, params.ctx); - if (model == null) { - throw new RuntimeException("error: unable to load model"); - } - ctx = LlamaLibrary.llama_new_context_with_model(model, params.ctx); - - // load lora adapter if configured - if (params.loraAdapter != null - && params.loraBase != null - && LlamaLibrary.llama_model_apply_lora_from_file(model, params.loraAdapter, params.loraBase, params.nThreads) != 0) { - throw new RuntimeException("error: unable to apply lora"); - } - - // setup some cached variables used throughout lifecycle - contextBuffer = new SliceableIntBuffer(IntBuffer.allocate(params.ctx.n_ctx)); - tokenBuffer = new SliceableIntBuffer(IntBuffer.allocate(params.ctx.n_ctx)); - tokenPieceBuffer = new SliceableByteBuffer(ByteBuffer.allocate(64)); - nVocab = getVocabularySize(); - - logitsPointer = LlamaLibrary.llama_get_logits(ctx).getPointer(); - candidateData = (llama_token_data.ByReference[]) new llama_token_data.ByReference().toArray(nVocab); - candidates = new llama_token_data_array(); - - tokenBos = LlamaLibrary.llama_token_bos(ctx); - tokenEos = LlamaLibrary.llama_token_eos(ctx); - tokenNl = LlamaLibrary.llama_token_nl(ctx); - } - - /** - * Generate and stream outputs. Unless {@link #reset()} is called, the previous conversation is used as context. - * Note, that the prompt isn't preprocessed in any way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prompt the LLM prompt - * @return iterable LLM outputs - */ - public Iterable generate(String prompt) { - return new Iterable<>() { - @NotNull - @Override - public Iterator iterator() { - return new LlamaIterator(prompt); - } - }; - } - - /** - * Generate and return a whole answer. Unless {@link #reset()} is called, the previous conversation is used as context. - * Note, that the prompt isn't preprocessed in any way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prompt the LLM prompt - * @return an LLM response - */ - public String complete(String prompt) { - StringBuilder builder = new StringBuilder(); - Iterator iterator = new LlamaIterator(prompt); - while (iterator.hasNext()) { - Output output = iterator.next(); - builder.append(output); - } - return builder.toString(); - } - - /** - * Get the embedding of a string. Unless {@link #reset()} is called, the previous conversation is used as context. - * Note, that the prompt isn't preprocessed in any way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prompt the string to embed - * @return an embedding float array the size of {@link #getEmbeddingSize()} - * @throws IllegalStateException if embedding mode was not activated (see {@link Parameters.Builder#setEmbedding(boolean)}) - */ - public float[] getEmbedding(String prompt) { - if (params.ctx.embedding == 0) { - throw new IllegalStateException("embedding mode not activated (see parameters)"); - } - SliceableIntBuffer tokens = tokenize(prompt, false); - addContext(tokens); - evaluate(); - return LlamaLibrary.llama_get_embeddings(ctx).getPointer().getFloatArray(0, getEmbeddingSize()); - } - - /** - * Resets the state of the LLM, its timings, and discards any previous conversation. - */ - public void reset() { - LlamaLibrary.llama_reset_timings(ctx); - this.contextBuffer.clear(); - this.nContext = 0; - this.nPast = 0; - } - - /** - * Tokenize a prompt given the native tokenizer - * - * @param prompt the prompt to tokenize - * @return an array of integers each representing a token id (see {@link #getVocabularySize()}) - */ - public int[] encode(String prompt) { - SliceableIntBuffer buffer = tokenize(prompt, false); - int[] tokens = new int[buffer.capacity()]; - System.arraycopy(buffer.delegate.array(), 0, tokens, 0, buffer.capacity()); - return tokens; - } - - /** - * Convert an array of token ids to its string representation - * - * @param tokens an array of tokens conforming to {@link #getVocabularySize()} - * @return the token ids decoded to a string - */ - public String decode(int[] tokens) { - StringBuilder builder = new StringBuilder(); - for (int token : tokens) { - String decoded = decodeToken(token); - builder.append(decoded); - } - return builder.toString(); - } - - /** - * Sets a callback for both Java and C++ log messages. - * Can be set to {@code null} to disable logging. - * Note, that in that case C++ output will appear in stdout/err, however. - * To completely silence output provide a callback like: - *
-     * LlamaModel.setLogger((level, message) -> {});
-     * 
- * - * @param logCallback a method to call for log messages - */ - public static void setLogger(@Nullable BiConsumer logCallback) { - LlamaModel.logCallback = logCallback; - // We currently do not allow to pass any user data to `llama_log_set`, since the JVM might move - // the object around in the memory, thus invalidating any pointers. - // Maybe this could be circumvented by allowing something like to be passed - // as user data. However, the use cases for this are minuscule I think. - if (logCallback == null) { - LlamaLibrary.llama_log_set(null, null); - } else { - LlamaLibrary.llama_log_set((code, text, user_data) -> { - LogLevel level = LogLevel.fromCode(code); - logCallback.accept(level, text); - }, null); - } - } - - /** - * Returns the context size of the loaded model, e.g., how many tokens the LLM can process at most in one request. - * E.g., for llama 1 this size is 2048. - * - * @return the context size of the loaded model - */ - public int getContextSize() { - return LlamaLibrary.llama_n_ctx(ctx); - } - - /** - * Returns the hidden dimensionality of the loaded model, which corresponds to the size of {@link #getEmbedding(String)}. - * This size typically depends on the amount of parameters in the model, e.g., for llama 2 13b this size is 5120. - * - * @return the amount of embedding dimensions - */ - public int getEmbeddingSize() { - return LlamaLibrary.llama_n_embd(ctx); - } - - /** - * Returns the total amount of tokens in the vocabulary. - * - * @return the vocabulary size - */ - public int getVocabularySize() { - return LlamaLibrary.llama_n_vocab(ctx); - } - - /** - * Returns the tokenization method / vocabulary type used by this model. - * - * @return the vocabulary type - */ - public VocabularyType getVocabularyType() { - int code = LlamaLibrary.llama_vocab_type(ctx); - return VocabularyType.fromCode(code); - } - - /** - * Returns the memory size of this model in bytes - * - * @return amount of bytes allocated - */ - public long getMemorySize() { - return LlamaLibrary.llama_model_size(model); - } - - /** - * Returns the amount of parameters this model has - * - * @return amount of parameters - */ - public long getAmountParameters() { - return LlamaLibrary.llama_model_n_params(model); - } - - /** - * Get performance information about this model - * - * @return the inference timings - */ - public llama_timings getTimings() { - return LlamaLibrary.llama_get_timings(ctx); - } - - /** - * Deallocates the native memory used by this model - */ - @Override - public void close() { - LlamaLibrary.llama_free_model(model); - LlamaLibrary.llama_free(ctx); - } - - @Override - public String toString() { - byte[] buffer = new byte[512]; - int size = LlamaLibrary.llama_model_desc(model, buffer, new NativeSize(buffer.length)); - return new String(buffer, 0, Math.min(size, buffer.length), StandardCharsets.UTF_8); - } - - - /** - * Internally tokenizes a prompt and returns its tokens without any padding. - * At most {@link #getContextSize()} tokens can be tokenized. Makes use of {@link #tokenBuffer}. - * - * @param prompt the prompt to tokenize - * @return an IntBuffer containing the tokenized prompt without any padding - * @throws RuntimeException if tokenization fails - */ - private SliceableIntBuffer tokenize(String prompt, boolean addBos) { - int nTokens = LlamaLibrary.llama_tokenize(ctx, prompt, tokenBuffer.delegate, params.ctx.n_ctx, addBos ? (byte) 1 : 0); - if (nTokens < 0) { - throw new RuntimeException("tokenization failed due to unknown reasons"); - } - return tokenBuffer.slice(0, nTokens); - } - - private void evaluate() { - while (nPast < nContext) { - int nEval = nContext - nPast; - if (nEval > params.ctx.n_batch) { - nEval = params.ctx.n_batch; - } - if (LlamaLibrary.llama_eval(ctx, contextBuffer.slice(nPast, nEval).delegate, nEval, nPast, params.nThreads) != 0) { - String msg = String.format("evaluation failed (%d to evaluate, %d past, %d threads)", nEval, nPast, params.nThreads); - log(LogLevel.ERROR, msg); - throw new RuntimeException("token evaluation failed"); - } - nPast += nEval; - } - } - - private Output sample() { - float[] logits = logitsPointer.getFloatArray(0, nVocab); - float nlLogit = logits[tokenNl]; - params.logitBias.forEach((i, bias) -> logits[i] += bias); - // I'm not sure why anything but `setLogit` has to be called here for `candidateData` and `candidates` again. - // Otherwise, the results are garbage, however. Maybe the JVM/JIT is moving stuff around. - for (int i = 0; i < nVocab; i++) { - candidateData[i].setId(i); - candidateData[i].setLogit(logits[i]); -// candidateData[i].setP(0f); - } - candidates.setData(candidateData[0]); - candidates.setSize(new NativeSize(nVocab)); - candidates.setSorted((byte) 0); - - samplePenalty(); - - if (!params.penalizeNl) { - candidateData[tokenNl].setLogit(nlLogit); - } - - if (params.grammar != null) { - LlamaLibrary.llama_sample_grammar(ctx, candidates, params.grammar.foreign); - } - - int token; - if (params.temperature == 0) { - token = sampleGreedy(); - } else if (params.mirostat == Parameters.MiroStat.V1) { - token = sampleMirostatV1(); - } else if (params.mirostat == Parameters.MiroStat.V2) { - token = sampleMirostatV2(); - } else { - token = sampleTopK(); - } - - if (params.grammar != null) { - LlamaLibrary.llama_grammar_accept_token(ctx, params.grammar.foreign, token); - } - - return new Output(token, candidateData[token].p); - } - - private void samplePenalty() { - int repeat_last_n = params.repeatLastN < 0 ? params.ctx.n_ctx : params.repeatLastN; - int last_n_repeat = Math.min(Math.min(nContext, repeat_last_n), params.ctx.n_ctx); - NativeSize nTokens = new NativeSize(last_n_repeat); - SliceableIntBuffer lastTokens = tokenBuffer.slice(nContext - last_n_repeat, last_n_repeat); - LlamaLibrary.llama_sample_repetition_penalty( - ctx, - candidates, - lastTokens.delegate, - nTokens, - params.repeatPenalty - ); - LlamaLibrary.llama_sample_frequency_and_presence_penalties( - ctx, - candidates, - lastTokens.delegate, - nTokens, - params.frequencyPenalty, - params.presencePenalty - ); - } - - private int sampleGreedy() { - int token = LlamaLibrary.llama_sample_token_greedy(ctx, candidates); - if (params.nProbs > 0) { - LlamaLibrary.llama_sample_softmax(ctx, candidates); - } - return token; - } - - private int sampleMirostatV1() { - LlamaLibrary.llama_sample_temperature(ctx, candidates, params.temperature); - return LlamaLibrary.llama_sample_token_mirostat( - ctx, - candidates, - params.mirostatTau, - params.mirostatEta, - params.mirostatM, - params.mirostatMu - ); - } - - private int sampleMirostatV2() { - LlamaLibrary.llama_sample_temperature(ctx, candidates, params.temperature); - return LlamaLibrary.llama_sample_token_mirostat_v2( - ctx, - candidates, - params.mirostatTau, - params.mirostatEta, - params.mirostatMu - ); - } - - private int sampleTopK() { - NativeSize minKeep = new NativeSize(Math.max(1, params.nProbs)); - LlamaLibrary.llama_sample_top_k( - ctx, - candidates, - params.topK <= 0 ? nVocab : params.topK, - minKeep - ); - LlamaLibrary.llama_sample_tail_free( - ctx, - candidates, - params.tfsZ, - minKeep - ); - LlamaLibrary.llama_sample_typical( - ctx, - candidates, - params.typicalP, - minKeep - ); - LlamaLibrary.llama_sample_top_p(ctx, - candidates, - params.topP, - minKeep - ); - LlamaLibrary.llama_sample_temperature( - ctx, - candidates, - params.temperature - ); - return LlamaLibrary.llama_sample_token(ctx, candidates); - } - - private void addContext(SliceableIntBuffer tokens) { - truncateContext(tokens.capacity()); - System.arraycopy(tokens.delegate.array(), 0, contextBuffer.delegate.array(), nContext, tokens.capacity()); - nContext += tokens.capacity(); - } - - private void truncateContext(int nAdd) { - if (nContext + nAdd > params.ctx.n_ctx) { - int nCtxKeep = params.ctx.n_ctx / 2 - nAdd; - String msg = "truncating context from " + nContext + " to " + nCtxKeep + " tokens (+" + nAdd + " to add)"; - log(LogLevel.INFO, msg); - System.arraycopy(contextBuffer.delegate.array(), nContext - nCtxKeep, contextBuffer.delegate.array(), 0, nCtxKeep); - nPast = 0; - nContext = nCtxKeep; - } - } - - private String decodeToken(int token) { - int bufferSize = tokenPieceBuffer.capacity() - nBuffered; - SliceableByteBuffer slice = tokenPieceBuffer.slice(nBuffered, bufferSize); - int pieceSize = LlamaLibrary.llama_token_to_piece(ctx, token, slice.delegate, bufferSize); - - // while the buffer is too small for the decoded tokens, resize the buffer and retry de-tokenization - while (pieceSize < 0 || pieceSize > bufferSize) { - // create the buffer double the size - ByteBuffer newBuffer = ByteBuffer.allocate(tokenPieceBuffer.capacity() * 2); - // copy the old content - for (int i = 0; i < nBuffered; i++) { - newBuffer.put(i, tokenPieceBuffer.get(i)); - } - tokenPieceBuffer = new SliceableByteBuffer(newBuffer); - bufferSize = tokenPieceBuffer.capacity() - nBuffered; - slice = tokenPieceBuffer.slice(nBuffered, bufferSize); - pieceSize = LlamaLibrary.llama_token_to_piece(ctx, token, slice.delegate, bufferSize); - } - - // after successful de-tokenization, check if the piece can be directly returned or is an utf-8 codepoint a - // needs to be buffered - if ((tokenPieceBuffer.get(nBuffered) & 0x80) == 0) { - int nTotal = nBuffered + Math.min(pieceSize, tokenPieceBuffer.capacity()); - nBuffered = 0; - return new String(tokenPieceBuffer.delegate.array(), 0, nTotal, StandardCharsets.UTF_8); - } else { - nBuffered += pieceSize; - return ""; - } - } - - private void log(LogLevel level, String message) { - if (logCallback != null) { - logCallback.accept(level, message); - } - } - - private class LlamaIterator implements Iterator { - - private final StringBuilder builder = new StringBuilder(); - private boolean hasNext = true; - private int nRemain = params.nPredict; - - public LlamaIterator(String prompt) { - setup(prompt); - } - - @Override - public boolean hasNext() { - return hasNext; - } - - @Override - public Output next() { - if (!hasNext) { - throw new NoSuchElementException(); - } - evaluate(); - Output result = sample(); - builder.append(result.text); - truncateContext(1); - contextBuffer.put(nContext, result.token); - nContext++; - nRemain--; - checkHasNext(); - return result; - } - - private void checkHasNext() { - hasNext = (params.nPredict < 0 || nRemain > 0) // if there are infinite or more tokens to predict - && contextBuffer.get(nContext - 1) != tokenEos // if the last token was not a stop token - && !isAntiPrompt(); // if the last tokens don't form an anti-prompt - } - - private void setup(String prompt) { - // add a space in front of the first character to match OG llama tokenizer behavior (taken from main.cpp) - if (nContext == 0 && !prompt.startsWith(" ")) { - prompt = " " + prompt; - } - SliceableIntBuffer tokens = tokenize(prompt, true); - addContext(tokens); - } - - private boolean isAntiPrompt() { - for (String antiPrompt : params.antiprompt) { - if (builder.lastIndexOf(antiPrompt) > 0) { - return true; - } - } - return false; - } - } - - /** - * An output generated by the LLM. Provides access to its probability. - */ - public final class Output { - public final int token; - public final float probability; - public final String text; - - - private Output(int token, float probability) { - this.token = token; - this.probability = probability; - // directly convert it to text to do it only once - this.text = decodeToken(token); - } - @Override - public String toString() { - return text; - } - /** - * Returns the type of this token. - * - * @return the token type - */ - public TokenType getType() { - int code = LlamaLibrary.llama_token_get_type(ctx, token); - return TokenType.fromCode(code); - } +public class LlamaModel { + + private static final ModelParameters defaultModelParams = new ModelParameters.Builder().build(); + private static final InferenceParameters defaultInferenceParams = new InferenceParameters.Builder().build(); + + @Native + private long ctx; + + /** + * Load a gguf llama.cpp model from a given file path with default {@link ModelParameters}. + * + * @param filePath a file path pointing to the model + * @throws LlamaException if no model could be loaded from the given file path + */ + public LlamaModel(String filePath) { + this(filePath, defaultModelParams); + } + + /** + * Load a gguf llama.cpp model from a given file path with custom {@link ModelParameters}. + * + * @param filePath a file path pointing to the model + * @param parameters the set of previously configured options + * @throws LlamaException if no model could be loaded from the given file path + */ + public LlamaModel(String filePath, ModelParameters parameters) { + loadModel(filePath, parameters); + } + + static { + LlamaLoader.initialize(); + } + + public String complete(String prompt) { + return complete(prompt, defaultInferenceParams); + } + + public String complete(String prompt, InferenceParameters parameters) { + return getFull(prompt, parameters); + } + + public Iterable generate(String prompt) { + return generate(prompt, defaultInferenceParams); + } + + public Iterable generate(String prompt, InferenceParameters parameters) { + return () -> new LlamaIterator(prompt, parameters); + } + + private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; + private native void setupInference(String prompt, InferenceParameters parameters); + private native String getFull(String prompt, InferenceParameters parameters); + private native String getNext(LlamaIterator iterator); + + // fields are modified by native code and thus should not be final + @SuppressWarnings("FieldMayBeFinal") + private final class LlamaIterator implements Iterator { + + @Native + private boolean hasNext = true; + @Native + private long generatedCount = 0; + @Native + private long tokenIndex = 0; + + private LlamaIterator(String prompt, InferenceParameters parameters) { + setupInference(prompt, parameters); + } + + @Override + public boolean hasNext() { + return hasNext; + } + + @Override + public String next() { + if (!hasNext) { + throw new NoSuchElementException(); + } + return getNext(this); + } + } - /** - * Returns the score of this token - * - * @return the float score - */ - public float getScore() { - return LlamaLibrary.llama_token_get_score(ctx, token); - } - } } diff --git a/src/main/java/de/kherud/llama/LogLevel.java b/src/main/java/de/kherud/llama/LogLevel.java deleted file mode 100644 index 903780f7..00000000 --- a/src/main/java/de/kherud/llama/LogLevel.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.kherud.llama; - -import de.kherud.llama.foreign.LlamaLibrary; - -/** - * This enum represents the native log levels of llama.cpp. - */ -public enum LogLevel { - - DEBUG(-1), - INFO(LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_INFO), - WARN(LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_WARN), - ERROR(LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_ERROR); - - private final int code; - - LogLevel(int code) { - this.code = code; - } - - /** - * Returns the native log level code of this option - * - * @return the native code - */ - int getCode() { - return code; - } - - /** - * Returns a Java enum option given a native log level code. - * For unknown native codes the level {@link #DEBUG} is returned instead of throwing. - * - * @param code the native log level code - * @return the Java level representation - */ - static LogLevel fromCode(int code) { - switch (code) { - case LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_INFO: - return INFO; - case LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_WARN: - return WARN; - case LlamaLibrary.llama_log_level.LLAMA_LOG_LEVEL_ERROR: - return ERROR; - default: - return DEBUG; - } - } - -} diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java new file mode 100644 index 00000000..d39a13f5 --- /dev/null +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -0,0 +1,339 @@ +package de.kherud.llama; + +import org.jetbrains.annotations.Nullable; + +/** + * Parameters used for initializing a {@link LlamaModel}. + */ +public class ModelParameters { + + public final int nThreads; + + public final int seed; + public final int nCtx; // text context + public final int nBatch; // prompt processing batch size + public final int nGpuLayers; // number of layers to store in VRAM + public final int mainGpu; // the GPU that is used for scratch and small tensors + public final float[] tensorSplit; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) + public final float ropeFreqBase; // RoPE base frequency + public final float ropeFreqScale; // RoPE frequency scaling factor + // public final llama_progress_callback progress_callback; +// public final Pointer progress_callback_user_data; + public final boolean lowVram; // if true, reduce VRAM usage at the cost of performance + public final boolean mulMatQ; // if true, use experimental mul_mat_q kernels + public final boolean f16Kv; // use fp16 for KV cache + public final boolean logitsAll; // the llama_eval() call computes all logits, not just the last one + public final boolean vocabOnly; // only load the vocabulary, no weights + public final boolean useMmap; // use mmap if possible + public final boolean useMlock; // force system to keep model in RAM + public final boolean embedding; // embedding mode only + @Nullable + public final String loraAdapter; // lora adapter path + @Nullable + public final String loraBase; // base model path for the lora adapter + public final boolean hellaswag; // compute HellaSwag score over random tasks from datafile supplied in prompt + public final int hellaswagTasks; // number of tasks to use when computing the HellaSwag score + public final boolean memoryF16; // use f16 instead of f32 for memory kv + public final boolean memTest; // compute maximum memory usage + public final boolean numa; // attempt optimizations that help on some NUMA systems + public final boolean verbosePrompt; // log prompt tokens before generation + + /** + * Private constructor to build immutable parameters object. Called via {@link Builder}. + */ + private ModelParameters( + int nThreads, + int seed, + int nCtx, + int nBatch, + int nGpuLayers, + int mainGpu, + float[] tensorSplit, + float ropeFreqBase, + float ropeFreqScale, + boolean lowVram, + boolean mulMatQ, + boolean f16Kv, + boolean logitsAll, + boolean vocabOnly, + boolean useMmap, + boolean useMlock, + boolean embedding, + @Nullable String loraAdapter, + @Nullable String loraBase, + boolean hellaswag, + int hellaswagTasks, + boolean memoryF16, + boolean memTest, + boolean numa, + boolean verbosePrompt + ) { + this.seed = seed; + this.nCtx = nCtx; + this.nBatch = nBatch; + this.nGpuLayers = nGpuLayers; + this.mainGpu = mainGpu; + this.tensorSplit = tensorSplit; + this.ropeFreqBase = ropeFreqBase; + this.ropeFreqScale = ropeFreqScale; + this.lowVram = lowVram; + this.mulMatQ = mulMatQ; + this.f16Kv = f16Kv; + this.logitsAll = logitsAll; + this.vocabOnly = vocabOnly; + this.useMmap = useMmap; + this.useMlock = useMlock; + this.embedding = embedding; + this.nThreads = nThreads; + this.loraAdapter = loraAdapter; + this.loraBase = loraBase; + this.hellaswag = hellaswag; + this.hellaswagTasks = hellaswagTasks; + this.memoryF16 = memoryF16; + this.memTest = memTest; + this.numa = numa; + this.verbosePrompt = verbosePrompt; + } + + /** + * The builder class used for creating new {@link ModelParameters} of a {@link LlamaModel}. + */ + public static class Builder { + + private int nThreads = Runtime.getRuntime().availableProcessors(); + public int seed; + public int nCtx; // text context + public int nBatch; // prompt processing batch size + public int nGpuLayers; // number of layers to store in VRAM + public int mainGpu; // the GPU that is used for scratch and small tensors + public float[] tensorSplit; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) + public float ropeFreqBase; // RoPE base frequency + public float ropeFreqScale; // RoPE frequency scaling factor + // public llama_progress_callback progress_callback; + // public Pointer progress_callback_user_data; + public boolean lowVram; // if true, reduce VRAM usage at the cost of performance + public boolean mulMatQ; // if true, use experimental mul_mat_q kernels + public boolean f16Kv; // use fp16 for KV cache + public boolean logitsAll; // the llama_eval() call computes all logits, not just the last one + public boolean vocabOnly; // only load the vocabulary, no weights + public boolean useMmap; // use mmap if possible + public boolean useMlock; // force system to keep model in RAM + public boolean embedding; // embedding mode only + private String loraAdapter = null; // lora adapter path + private String loraBase = null; // base model path for the lora adapter + + private boolean hellaswag = false; // compute HellaSwag score over random tasks from datafile supplied in prompt + private short hellaswagTasks = 400; // number of tasks to use when computing the HellaSwag score + + private boolean memoryF16 = true; // use f16 instead of f32 for memory kv + private boolean memTest = false; // compute maximum memory usage + private boolean numa = false; // attempt optimizations that help on some NUMA systems + private boolean verbosePrompt = false; // print prompt tokens before generation + + /** + * Constructs the immutable {@link ModelParameters} objects with the configured options. + * Note, that all options not configured have sensible defaults. + * + * @return an immutable parameters object + */ + public ModelParameters build() { + return new ModelParameters( + nThreads, + seed, + nCtx, + nBatch, + nGpuLayers, + mainGpu, + tensorSplit, + ropeFreqBase, + ropeFreqScale, + lowVram, + mulMatQ, + f16Kv, + logitsAll, + vocabOnly, + useMmap, + useMlock, + embedding, + loraAdapter, + loraBase, + hellaswag, + hellaswagTasks, + memoryF16, + memTest, + numa, + verbosePrompt + ); + } + + public Builder setNThreads(int nThreads) { + this.nThreads = nThreads; + return this; + } + + public Builder setLoraAdapter(@Nullable String loraAdapter) { + this.loraAdapter = loraAdapter; + return this; + } + + public Builder setLoraBase(@Nullable String loraBase) { + this.loraBase = loraBase; + return this; + } + + public Builder setHellaswag(boolean hellaswag) { + this.hellaswag = hellaswag; + return this; + } + + public Builder setHellaswagTasks(short hellaswagTasks) { + this.hellaswagTasks = hellaswagTasks; + return this; + } + + public Builder setMemoryF16(boolean memoryF16) { + this.memoryF16 = memoryF16; + return this; + } + + public Builder setMemTest(boolean memTest) { + this.memTest = memTest; + return this; + } + + public Builder setNuma(boolean numa) { + this.numa = numa; + return this; + } + + public Builder setVerbosePrompt(boolean verbosePrompt) { + this.verbosePrompt = verbosePrompt; + return this; + } + + /** + * Set a callback that will be used to report progress loading the model with a float value of 0-1. + * + * @param progressCallback the function to call ony any progress + * @return this builder object + */ +// public Builder setProgressCallback(@Nullable Consumer progressCallback) { +// // Similarly to setting the logger, we don't allow passing any user data to the progress callback, since +// // the JVM might move the object around in the memory, thus invalidating any pointers. +// if (progressCallback == null) { +// ctxParams.setProgress_callback(null); +// } else { +// ctxParams.setProgress_callback((progress, ctx) -> progressCallback.accept(progress)); +// } +// return this; +// } + + public Builder setSeed(int seed) { + this.seed = seed; + return this; + } + + public Builder setNCtx(int nCtx) { + this.nCtx = nCtx; + return this; + } + + public Builder setNBbatch(int nBatch) { + this.nBatch = nBatch; + return this; + } + + public Builder setNGpuLayers(int nGpuLayers) { + this.nGpuLayers = nGpuLayers; + return this; + } + + public Builder setMainGpu(int mainGpu) { + this.mainGpu = mainGpu; + return this; + } + + public Builder setTensorSplit(float[] tensorSplit) { + this.tensorSplit = tensorSplit; + return this; + } + + public Builder setRopeFreqBase(float ropeFreqBase) { + this.ropeFreqBase = ropeFreqBase; + return this; + } + + public Builder setRopeFreqScale(float ropeFreqScale) { + this.ropeFreqScale = ropeFreqScale; + return this; + } + +// public Builder setProgressCallback(LlamaLibrary.llama_progress_callback progress_callback) { +// ctxParams.setProgress_callback(progress_callback); +// return this; +// } + +// public Builder setProgressCallbackUserData(Pointer progress_callback_user_data) { +// ctxParams.setProgress_callback_user_data(progress_callback_user_data); +// return this; +// } + + public Builder setLowVram(boolean lowVram) { + this.lowVram = lowVram; + return this; + } + + public Builder setMulMatQ(boolean mulMatQ) { + this.mulMatQ = mulMatQ; + return this; + } + + /** + * use fp16 for KV cache + */ + public Builder setF16Kv(boolean f16Kv) { + this.f16Kv = f16Kv; + return this; + } + + /** + * the llama_eval() call computes all logits, not just the last one + */ + public Builder setLogitsAll(boolean logitsAll) { + this.logitsAll = logitsAll; + return this; + } + + /** + * only load the vocabulary, no weights + */ + public Builder setVocabOnly(boolean vocabOnly) { + this.vocabOnly = vocabOnly; + return this; + } + + /** + * use mmap if possible + */ + public Builder setUseMmap(boolean useMmap) { + this.useMmap = useMmap; + return this; + } + + /** + * force system to keep model in RAM + */ + public Builder setUseMLock(boolean useMlock) { + this.useMlock = useMlock; + return this; + } + + /** + * embedding mode only + */ + public Builder setEmbedding(boolean embedding) { + this.embedding = embedding; + return this; + } + } +} diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java new file mode 100644 index 00000000..740bdca5 --- /dev/null +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -0,0 +1,264 @@ +/*-------------------------------------------------------------------------- + * Copyright 2008 Taro L. Saito + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *--------------------------------------------------------------------------*/ + +package de.kherud.llama; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Locale; +import java.util.stream.Stream; + +/** + * Provides OS name and architecture name. + * + * @author leo + */ +@SuppressWarnings("UseOfSystemOutOrSystemErr") +class OSInfo { + private static final ProcessRunner processRunner = new ProcessRunner(); + private static final HashMap archMapping = new HashMap<>(); + + public static final String X86 = "x86"; + public static final String X86_64 = "x86_64"; + public static final String IA64_32 = "ia64_32"; + public static final String IA64 = "ia64"; + public static final String PPC = "ppc"; + public static final String PPC64 = "ppc64"; + + static { + // x86 mappings + archMapping.put(X86, X86); + archMapping.put("i386", X86); + archMapping.put("i486", X86); + archMapping.put("i586", X86); + archMapping.put("i686", X86); + archMapping.put("pentium", X86); + + // x86_64 mappings + archMapping.put(X86_64, X86_64); + archMapping.put("amd64", X86_64); + archMapping.put("em64t", X86_64); + archMapping.put("universal", X86_64); // Needed for openjdk7 in Mac + + // Itanium 64-bit mappings + archMapping.put(IA64, IA64); + archMapping.put("ia64w", IA64); + + // Itanium 32-bit mappings, usually an HP-UX construct + archMapping.put(IA64_32, IA64_32); + archMapping.put("ia64n", IA64_32); + + // PowerPC mappings + archMapping.put(PPC, PPC); + archMapping.put("power", PPC); + archMapping.put("powerpc", PPC); + archMapping.put("power_pc", PPC); + archMapping.put("power_rs", PPC); + + // TODO: PowerPC 64bit mappings + archMapping.put(PPC64, PPC64); + archMapping.put("power64", PPC64); + archMapping.put("powerpc64", PPC64); + archMapping.put("power_pc64", PPC64); + archMapping.put("power_rs64", PPC64); + archMapping.put("ppc64el", PPC64); + archMapping.put("ppc64le", PPC64); + } + + public static void main(String[] args) { + if (args.length >= 1) { + if ("--os".equals(args[0])) { + System.out.print(getOSName()); + return; + } else if ("--arch".equals(args[0])) { + System.out.print(getArchName()); + return; + } + } + + System.out.print(getNativeLibFolderPathForCurrentOS()); + } + + static String getNativeLibFolderPathForCurrentOS() { + return getOSName() + "/" + getArchName(); + } + + static String getOSName() { + return translateOSNameToFolderName(System.getProperty("os.name")); + } + + static boolean isAndroid() { + return isAndroidRuntime() || isAndroidTermux(); + } + + static boolean isAndroidRuntime() { + return System.getProperty("java.runtime.name", "").toLowerCase().contains("android"); + } + + static boolean isAndroidTermux() { + try { + return processRunner.runAndWaitFor("uname -o").toLowerCase().contains("android"); + } catch (Exception ignored) { + return false; + } + } + + static boolean isMusl() { + Path mapFilesDir = Paths.get("/proc/self/map_files"); + try (Stream dirStream = Files.list(mapFilesDir)) { + return dirStream + .map( + path -> { + try { + return path.toRealPath().toString(); + } catch (IOException e) { + return ""; + } + }) + .anyMatch(s -> s.toLowerCase().contains("musl")); + } catch (Exception ignored) { + // fall back to checking for alpine linux in the event we're using an older kernel which + // may not fail the above check + return isAlpineLinux(); + } + } + + static boolean isAlpineLinux() { + try (Stream osLines = Files.lines(Paths.get("/etc/os-release"))) { + return osLines.anyMatch(l -> l.startsWith("ID") && l.contains("alpine")); + } catch (Exception ignored2) { + } + return false; + } + + static String getHardwareName() { + try { + return processRunner.runAndWaitFor("uname -m"); + } catch (Throwable e) { + System.err.println("Error while running uname -m: " + e.getMessage()); + return "unknown"; + } + } + + static String resolveArmArchType() { + if (System.getProperty("os.name").contains("Linux")) { + String armType = getHardwareName(); + // armType (uname -m) can be armv5t, armv5te, armv5tej, armv5tejl, armv6, armv7, armv7l, + // aarch64, i686 + + // for Android, we fold everything that is not aarch64 into arm + if (isAndroid()) { + if (armType.startsWith("aarch64")) { + // Use arm64 + return "aarch64"; + } else { + return "arm"; + } + } + + if (armType.startsWith("armv6")) { + // Raspberry PI + return "armv6"; + } else if (armType.startsWith("armv7")) { + // Generic + return "armv7"; + } else if (armType.startsWith("armv5")) { + // Use armv5, soft-float ABI + return "arm"; + } else if (armType.startsWith("aarch64")) { + // Use arm64 + return "aarch64"; + } + + // Java 1.8 introduces a system property to determine armel or armhf + // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8005545 + String abi = System.getProperty("sun.arch.abi"); + if (abi != null && abi.startsWith("gnueabihf")) { + return "armv7"; + } + + // For java7, we still need to run some shell commands to determine ABI of JVM + String javaHome = System.getProperty("java.home"); + try { + // determine if first JVM found uses ARM hard-float ABI + int exitCode = Runtime.getRuntime().exec("which readelf").waitFor(); + if (exitCode == 0) { + String[] cmdarray = { + "/bin/sh", + "-c", + "find '" + + javaHome + + "' -name 'libjvm.so' | head -1 | xargs readelf -A | " + + "grep 'Tag_ABI_VFP_args: VFP registers'" + }; + exitCode = Runtime.getRuntime().exec(cmdarray).waitFor(); + if (exitCode == 0) { + return "armv7"; + } + } else { + System.err.println( + "WARNING! readelf not found. Cannot check if running on an armhf system, armel architecture will be presumed."); + } + } catch (IOException | InterruptedException e) { + // ignored: fall back to "arm" arch (soft-float ABI) + } + } + // Use armv5, soft-float ABI + return "arm"; + } + + static String getArchName() { + String override = System.getProperty("de.kherud.llama.osinfo.architecture"); + if (override != null) { + return override; + } + + String osArch = System.getProperty("os.arch"); + + if (osArch.startsWith("arm")) { + osArch = resolveArmArchType(); + } else { + String lc = osArch.toLowerCase(Locale.US); + if (archMapping.containsKey(lc)) return archMapping.get(lc); + } + return translateArchNameToFolderName(osArch); + } + + static String translateOSNameToFolderName(String osName) { + if (osName.contains("Windows")) { + return "Windows"; + } else if (osName.contains("Mac") || osName.contains("Darwin")) { + return "Mac"; + } else if (osName.contains("AIX")) { + return "AIX"; + } else if (isMusl()) { + return "Linux-Musl"; + } else if (isAndroid()) { + return "Linux-Android"; + } else if (osName.contains("Linux")) { + return "Linux"; + } else { + return osName.replaceAll("\\W", ""); + } + } + + static String translateArchNameToFolderName(String archName) { + return archName.replaceAll("\\W", ""); + } +} diff --git a/src/main/java/de/kherud/llama/Parameters.java b/src/main/java/de/kherud/llama/Parameters.java deleted file mode 100644 index 598927a2..00000000 --- a/src/main/java/de/kherud/llama/Parameters.java +++ /dev/null @@ -1,746 +0,0 @@ -package de.kherud.llama; - -import java.io.File; -import java.io.IOException; -import java.nio.FloatBuffer; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import com.sun.jna.Memory; -import com.sun.jna.Pointer; -import com.sun.jna.ptr.FloatByReference; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import de.kherud.llama.foreign.LlamaLibrary; -import de.kherud.llama.foreign.NativeSize; -import de.kherud.llama.foreign.llama_context_params; - -/** - * Parameters used throughout the lifecycle of a {@link LlamaModel}. - * Note, that they are currently blindly copied from llama.cpp. - * Many won't find a use in this project. - */ -public final class Parameters { - - @NotNull - public final llama_context_params.ByValue ctx; - public final int nThreads; - public final int nPredict; // new tokens to predict - public final int nKeep; // number of tokens to keep from initial prompt - public final int nChunks; // max number of chunks to process (-1 = unlimited) - public final int nProbs; // if greater than 0, output the probabilities of top nProbs tokens. - @NotNull - public final Map logitBias; // logit bias for specific tokens - public final int topK; // <= 0 to use vocab size - public final NativeSize topKMinKeep; - public final float topP; // 1.0 = disabled - public final float tfsZ; // 1.0 = disabled - public final float typicalP; // 1.0 = disabled - public final float temperature; // 1.0 = disabled - public final float repeatPenalty; // 1.0 = disabled - public final int repeatLastN; // last n tokens to penalize (0 = disable penalty, -1 = context size) - public final float frequencyPenalty; // 0.0 = disabled - public final float presencePenalty; // 0.0 = disabled - public final MiroStat mirostat; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - public final float mirostatTau; // target entropy - public final float mirostatEta; // learning rate - public final int mirostatM; // ?? - public final FloatBuffer mirostatMu; // ?? - public final boolean beamSearch; - public final int nBeams; - public final String cfgNegativePrompt; // string to help guidance - public final float cfgScale; // How strong is guidance - @Nullable - public final String pathPromptCache; // path to file for saving/loading prompt eval state - @Nullable - public final String inputPrefix; // string to prefix user inputs with - @Nullable - public final String inputSuffix; // string to suffix user inputs with - @Nullable - public final LlamaGrammar grammar; // optional BNF-like grammar to constrain sampling - @NotNull - public final List<@NotNull String> antiprompt; // string upon seeing which more user input is prompted - @Nullable - public final String loraAdapter; // lora adapter path - @Nullable - public final String loraBase; // base model path for the lora adapter - public final boolean hellaswag; // compute HellaSwag score over random tasks from datafile supplied in prompt - @Nullable - public final NativeSize hellaswagTasks; // number of tasks to use when computing the HellaSwag score - public final boolean memoryF16; // use f16 instead of f32 for memory kv - public final boolean randomPrompt; // do not randomize prompt if none provided - public final boolean useColor; // use color to distinguish generations and inputs - public final boolean interactive; // interactive mode - public final boolean promptCacheAll; // save user input and generations to prompt cache - public final boolean promptCacheRo; // open the prompt cache read-only and do not update it - public final boolean interactiveFirst; // wait for user input immediately - public final boolean multilineInput; // reverse the usage of `\` - public final boolean simpleIo; // improves compatibility with subprocesses and limited consoles - public final boolean inputPrefixBos; // prefix BOS to user inputs, preceding inputPrefix - public final boolean instruct; // instruction mode (used for Alpaca models) - public final boolean penalizeNl; // consider newlines as a repeatable token - public final boolean perplexity; // compute perplexity over the prompt - public final boolean memTest; // compute maximum memory usage - public final boolean numa; // attempt optimizations that help on some NUMA systems - public final boolean exportCgraph; // export the computation graph - public final boolean verbosePrompt; // print prompt tokens before generation - - /** - * Private constructor to build immutable parameters object. Called via {@link Builder}. - */ - private Parameters( - llama_context_params.@NotNull ByValue ctx, - int nThreads, - int nPredict, - int nKeep, - int nChunks, - int nProbs, - @NotNull Map logitBias, - int topK, - int topKMinKeep, - float topP, - float tfsZ, - float typicalP, - float temperature, - float repeatPenalty, - int repeatLastN, - float frequencyPenalty, - float presencePenalty, - MiroStat mirostat, - float mirostatTau, - float mirostatEta, - int mirostatM, - float mirostatMu, - boolean beamSearch, - int nBeams, - String cfgNegativePrompt, - float cfgScale, - @Nullable String pathPromptCache, - @Nullable String inputPrefix, - @Nullable String inputSuffix, - @Nullable LlamaGrammar grammar, - @NotNull List antiprompt, - @Nullable String loraAdapter, - @Nullable String loraBase, - boolean hellaswag, - @Nullable NativeSize hellaswagTasks, - boolean memoryF16, - boolean randomPrompt, - boolean useColor, - boolean interactive, - boolean promptCacheAll, - boolean promptCacheRo, - boolean interactiveFirst, - boolean multilineInput, - boolean simpleIo, - boolean inputPrefixBos, - boolean instruct, - boolean penalizeNl, - boolean perplexity, - boolean memTest, - boolean numa, - boolean exportCgraph, - boolean verbosePrompt - ) { - this.ctx = ctx; - this.nThreads = nThreads; - this.nPredict = nPredict; - this.nKeep = nKeep; - this.nChunks = nChunks; - this.nProbs = nProbs; - this.logitBias = logitBias; - this.topK = topK; - this.topKMinKeep = new NativeSize(topKMinKeep); - this.topP = topP; - this.tfsZ = tfsZ; - this.typicalP = typicalP; - this.temperature = temperature; - this.repeatPenalty = repeatPenalty; - this.repeatLastN = repeatLastN; - this.frequencyPenalty = frequencyPenalty; - this.presencePenalty = presencePenalty; - this.mirostat = mirostat; - this.mirostatTau = mirostatTau; - this.mirostatEta = mirostatEta; - this.mirostatM = mirostatM; - this.mirostatMu = FloatBuffer.wrap(new float[]{mirostatMu}); - this.beamSearch = beamSearch; - this.nBeams = nBeams; - this.cfgNegativePrompt = cfgNegativePrompt; - this.cfgScale = cfgScale; - this.pathPromptCache = pathPromptCache; - this.inputPrefix = inputPrefix; - this.inputSuffix = inputSuffix; - this.grammar = grammar; - this.antiprompt = antiprompt; - this.loraAdapter = loraAdapter; - this.loraBase = loraBase; - this.hellaswag = hellaswag; - this.hellaswagTasks = hellaswagTasks; - this.memoryF16 = memoryF16; - this.randomPrompt = randomPrompt; - this.useColor = useColor; - this.interactive = interactive; - this.promptCacheAll = promptCacheAll; - this.promptCacheRo = promptCacheRo; - this.interactiveFirst = interactiveFirst; - this.multilineInput = multilineInput; - this.simpleIo = simpleIo; - this.inputPrefixBos = inputPrefixBos; - this.instruct = instruct; - this.penalizeNl = penalizeNl; - this.perplexity = perplexity; - this.memTest = memTest; - this.numa = numa; - this.exportCgraph = exportCgraph; - this.verbosePrompt = verbosePrompt; - } - - /** - * The builder class used for creating new {@link Parameters} of a {@link LlamaModel}. - */ - public static class Builder { - - private final llama_context_params.ByValue ctxParams = LlamaLibrary.llama_context_default_params(); - - private int nThreads = Runtime.getRuntime().availableProcessors(); - private int nPredict = -1; // new tokens to predict - private int nKeep = 0; // number of tokens to keep from initial prompt - private int nChunks = -1; // max number of chunks to process (-1 = unlimited) - private int nProbs = 0; // if greater than 0, output the probabilities of top nProbs tokens. - - // sampling parameters - private Map logitBias = Collections.emptyMap(); // logit bias for specific tokens - private int topK = 40; // <= 0 to use vocab size - private int topKMinKeep = 1; // <= 0 to use vocab size - private float topP = 0.95f; // 1.0 = disabled - private float tfsZ = 1.00f; // 1.0 = disabled - private float typicalP = 1.00f; // 1.0 = disabled - private float temp = 0.80f; // 1.0 = disabled - private float repeatPenalty = 1.10f; // 1.0 = disabled - private int repeatLastN = 64; // last n tokens to penalize (0 = disable penalty, -1 = context size) - private float frequencyPenalty = 0.00f; // 0.0 = disabled - private float presencePenalty = 0.00f; // 0.0 = disabled - private MiroStat mirostat = MiroStat.Disabled; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - private float mirostatTau = 5.00f; // target entropy - private float mirostatEta = 0.10f; // learning rate - private int mirostatM = 100; // ?? - private float mirostatMu = 2f * mirostatTau; // ?? - private boolean beamSearch = false; - private int nBeams = 2; - - // Classifier-Free Guidance - // https://arxiv.org/abs/2306.17806 - private String cfgNegativePrompt; // string to help guidance - private float cfgScale = 1.f; // How strong is guidance - - private String pathPromptCache = null; // path to file for saving/loading prompt eval state - private String inputPrefix = null; // string to prefix user inputs with - private String inputSuffix = null; // string to suffix user inputs with - private LlamaGrammar grammar = null; // optional BNF-like grammar to constrain sampling - private List antiPrompt = Collections.emptyList(); // string upon seeing which more user input is prompted - - private String loraAdapter = null; // lora adapter path - private String loraBase = null; // base model path for the lora adapter - - private boolean hellaswag = false; // compute HellaSwag score over random tasks from datafile supplied in prompt - private NativeSize hellaswagTasks = new NativeSize(400); // number of tasks to use when computing the HellaSwag score - - private boolean memoryF16 = true; // use f16 instead of f32 for memory kv - private boolean randomPrompt = false; // do not randomize prompt if none provided - private boolean useColor = false; // use color to distinguish generations and inputs - private boolean interactive = false; // interactive mode - private boolean promptCacheAll = false; // save user input and generations to prompt cache - private boolean promptCacheRo = false; // open the prompt cache read-only and do not update it - - private boolean interactiveFirst = false; // wait for user input immediately - private boolean multilineInput = false; // reverse the usage of `\` - private boolean simpleIo = false; // improves compatibility with subprocesses and limited consoles - - private boolean inputPrefixBos = false; // prefix BOS to user inputs, preceding inputPrefix - private boolean instruct = false; // instruction mode (used for Alpaca models) - private boolean penalizeNl = true; // consider newlines as a repeatable token - private boolean perplexity = false; // compute perplexity over the prompt - private boolean memTest = false; // compute maximum memory usage - private boolean numa = false; // attempt optimizations that help on some NUMA systems - private boolean exportCgraph = false; // export the computation graph - private boolean verbosePrompt = false; // print prompt tokens before generation - - /** - * Constructs the immutable {@link Parameters} objects with the configured options. - * Note, that all options not configured are expected to have sensible defaults. - * - * @return an immutable parameters object - */ - public Parameters build() { - return new Parameters( - ctxParams, - nThreads, - nPredict, - nKeep, - nChunks, - nProbs, - logitBias, - topK, - topKMinKeep, - topP, - tfsZ, - typicalP, - temp, - repeatPenalty, - repeatLastN, - frequencyPenalty, - presencePenalty, - mirostat, - mirostatTau, - mirostatEta, - mirostatM, - mirostatMu, - beamSearch, - nBeams, - cfgNegativePrompt, - cfgScale, - pathPromptCache, - inputPrefix, - inputSuffix, - grammar, - antiPrompt, - loraAdapter, - loraBase, - hellaswag, - hellaswagTasks, - memoryF16, - randomPrompt, - useColor, - interactive, - promptCacheAll, - promptCacheRo, - interactiveFirst, - multilineInput, - simpleIo, - inputPrefixBos, - instruct, - penalizeNl, - perplexity, - memTest, - numa, - exportCgraph, - verbosePrompt - ); - } - - public Builder setNThreads(int nThreads) { - this.nThreads = nThreads; - return this; - } - - public Builder setNPredict(int nPredict) { - this.nPredict = nPredict; - return this; - } - - public Builder setNKeep(int nKeep) { - this.nKeep = nKeep; - return this; - } - - public Builder setNChunks(int nChunks) { - this.nChunks = nChunks; - return this; - } - - public Builder setNProbs(int nProbs) { - this.nProbs = nProbs; - return this; - } - - public Builder setLogitBias(@NotNull Map logitBias) { - this.logitBias = Collections.unmodifiableMap(logitBias); - return this; - } - - public Builder setTopK(int topK) { - this.topK = topK; - return this; - } - - public Builder setTopKMinKeep(int topKMinKeep) { - this.topKMinKeep = topKMinKeep; - return this; - } - - public Builder setTopP(float topP) { - this.topP = topP; - return this; - } - - public Builder setTfsZ(float tfsZ) { - this.tfsZ = tfsZ; - return this; - } - - public Builder setTypicalP(float typicalP) { - this.typicalP = typicalP; - return this; - } - - public Builder setTemperature(float temp) { - this.temp = temp; - return this; - } - - public Builder setRepeatPenalty(float repeatPenalty) { - this.repeatPenalty = repeatPenalty; - return this; - } - - public Builder setRepeatLastN(int repeatLastN) { - this.repeatLastN = repeatLastN; - return this; - } - - public Builder setFrequencyPenalty(float frequencyPenalty) { - this.frequencyPenalty = frequencyPenalty; - return this; - } - - public Builder setPresencePenalty(float presencePenalty) { - this.presencePenalty = presencePenalty; - return this; - } - - public Builder setMirostat(MiroStat mode) { - this.mirostat = mode; - return this; - } - - public Builder setMirostatTau(float mirostatTau) { - this.mirostatTau = mirostatTau; - return this; - } - - public Builder setMirostatEta(float mirostatEta) { - this.mirostatEta = mirostatEta; - return this; - } - - public Builder setMirostatM(int mirostatM) { - this.mirostatM = mirostatM; - return this; - } - - public Builder setMirostatMu(float mirostatMu) { - this.mirostatMu = mirostatMu; - return this; - } - - public Builder setBeamSearch(boolean beamSearch) { - this.beamSearch = beamSearch; - return this; - } - - public Builder setNBeams(int nBeams) { - this.nBeams = nBeams; - return this; - } - - public Builder setCfgNegativePrompt(@Nullable String cfgNegativePrompt) { - this.cfgNegativePrompt = cfgNegativePrompt; - return this; - } - - public Builder setCfgScale(float cfgScale) { - this.cfgScale = cfgScale; - return this; - } - - public Builder setPathPromptCache(@Nullable String pathPromptCache) { - this.pathPromptCache = pathPromptCache; - return this; - } - - public Builder setInputPrefix(@Nullable String inputPrefix) { - this.inputPrefix = inputPrefix; - return this; - } - - public Builder setInputSuffix(@Nullable String inputSuffix) { - this.inputSuffix = inputSuffix; - return this; - } - - public Builder setGrammar(@NotNull File file) throws IOException { - this.grammar = new LlamaGrammar(file); - return this; - } - - public Builder setGrammar(@NotNull Path path) throws IOException { - this.grammar = new LlamaGrammar(path); - return this; - } - - public Builder setGrammar(@Nullable String grammar) { - this.grammar = grammar == null ? null : new LlamaGrammar(grammar); - return this; - } - - public Builder setAntiPrompt(@NotNull String[] antiprompt) { - this.antiPrompt = Collections.unmodifiableList(Arrays.asList(antiprompt)); - return this; - } - - public Builder setLoraAdapter(@Nullable String loraAdapter) { - this.loraAdapter = loraAdapter; - return this; - } - - public Builder setLoraBase(@Nullable String loraBase) { - this.loraBase = loraBase; - return this; - } - - public Builder setHellaswag(boolean hellaswag) { - this.hellaswag = hellaswag; - return this; - } - - public Builder setHellaswagTasks(long hellaswagTasks) { - this.hellaswagTasks = new NativeSize(hellaswagTasks); - return this; - } - - public Builder setMemoryF16(boolean memoryF16) { - this.memoryF16 = memoryF16; - return this; - } - - public Builder setRandomPrompt(boolean randomPrompt) { - this.randomPrompt = randomPrompt; - return this; - } - - public Builder setUseColor(boolean useColor) { - this.useColor = useColor; - return this; - } - - public Builder setInteractive(boolean interactive) { - this.interactive = interactive; - return this; - } - - public Builder setPromptCacheAll(boolean promptCacheAll) { - this.promptCacheAll = promptCacheAll; - return this; - } - - public Builder setPromptCacheRo(boolean promptCacheRo) { - this.promptCacheRo = promptCacheRo; - return this; - } - - public Builder setInteractiveFirst(boolean interactiveFirst) { - this.interactiveFirst = interactiveFirst; - return this; - } - - public Builder setMultilineInput(boolean multilineInput) { - this.multilineInput = multilineInput; - return this; - } - - public Builder setSimpleIo(boolean simpleIo) { - this.simpleIo = simpleIo; - return this; - } - - public Builder setInputPrefixBos(boolean inputPrefixBos) { - this.inputPrefixBos = inputPrefixBos; - return this; - } - - public Builder setInstruct(boolean instruct) { - this.instruct = instruct; - return this; - } - - public Builder setPenalizeNl(boolean penalizeNl) { - this.penalizeNl = penalizeNl; - return this; - } - - public Builder setPerplexity(boolean perplexity) { - this.perplexity = perplexity; - return this; - } - - public Builder setMemTest(boolean memTest) { - this.memTest = memTest; - return this; - } - - public Builder setNuma(boolean numa) { - this.numa = numa; - return this; - } - - public Builder setExportCGraph(boolean exportCgraph) { - this.exportCgraph = exportCgraph; - return this; - } - - public Builder setVerbosePrompt(boolean verbosePrompt) { - this.verbosePrompt = verbosePrompt; - return this; - } - - /** - * Set a callback that will be used to report progress loading the model with a float value of 0-1. - * - * @param progressCallback the function to call ony any progress - * @return this builder object - */ - public Builder setProgressCallback(@Nullable Consumer progressCallback) { - // Similarly to setting the logger, we don't allow passing any user data to the progress callback, since - // the JVM might move the object around in the memory, thus invalidating any pointers. - if (progressCallback == null) { - ctxParams.setProgress_callback(null); - } else { - ctxParams.setProgress_callback((progress, ctx) -> progressCallback.accept(progress)); - } - return this; - } - - public Builder setSeed(int seed) { - ctxParams.setSeed(seed); - return this; - } - - public Builder setNCtx(int n_ctx) { - ctxParams.setN_ctx(n_ctx); - return this; - } - - public Builder setNBbatch(int n_batch) { - ctxParams.setN_batch(n_batch); - return this; - } - - public Builder setNGpuLayers(int n_gpu_layers) { - ctxParams.setN_gpu_layers(n_gpu_layers); - return this; - } - - public Builder setMainGpu(int main_gpu) { - ctxParams.setMain_gpu(main_gpu); - return this; - } - - public Builder setTensorSplit(float[] tensor_split) { - Memory memory = new Memory(tensor_split.length * 4L); // Allocate native memory, 4 bytes per float - for (int i = 0; i < tensor_split.length; i++) { - memory.setFloat(i * 4L, tensor_split[i]); // Copy the float values to native memory - } - FloatByReference floatByRef = new FloatByReference(); - floatByRef.setPointer(memory); - ctxParams.setTensor_split(floatByRef); - return this; - } - - public Builder setRopeFreqBase(float rope_freq_base) { - ctxParams.setRope_freq_base(rope_freq_base); - return this; - } - - public Builder setRopeFreqScale(float rope_freq_scale) { - ctxParams.setRope_freq_scale(rope_freq_scale); - return this; - } - - public Builder setProgressCallback(LlamaLibrary.llama_progress_callback progress_callback) { - ctxParams.setProgress_callback(progress_callback); - return this; - } - - public Builder setProgressCallbackUserData(Pointer progress_callback_user_data) { - ctxParams.setProgress_callback_user_data(progress_callback_user_data); - return this; - } - - public Builder setLowVram(boolean lowVram) { - ctxParams.setLow_vram((byte) (lowVram ? 1 : 0)); - return this; - } - - public Builder setMulMatQ(boolean mulMatQ) { - ctxParams.setLow_vram((byte) (mulMatQ ? 1 : 0)); - return this; - } - - /** - * use fp16 for KV cache - */ - public Builder setF16Kv(boolean f16_kv) { - ctxParams.setF16_kv(f16_kv ? (byte) 1 : 0); - return this; - } - - /** - * the llama_eval() call computes all logits, not just the last one - */ - public Builder setLogitsAll(boolean logits_all) { - ctxParams.setLogits_all(logits_all ? (byte) 1 : 0); - return this; - } - - /** - * only load the vocabulary, no weights - */ - public Builder setVocabOnly(boolean vocab_only) { - ctxParams.setVocab_only(vocab_only ? (byte) 1 : 0); - return this; - } - - /** - * use mmap if possible - */ - public Builder setUseMmap(boolean use_mmap) { - ctxParams.setUse_mmap(use_mmap ? (byte) 1 : 0); - return this; - } - - /** - * force system to keep model in RAM - */ - public Builder setUseMLock(boolean use_mlock) { - ctxParams.setUse_mlock(use_mlock ? (byte) 1 : 0); - return this; - } - - /** - * embedding mode only - */ - public Builder setEmbedding(boolean embedding) { - ctxParams.setEmbedding(embedding ? (byte) 1 : 0); - return this; - } - } - - public enum MiroStat { - - Disabled(0), - V1(1), - V2(2); - - private final int level; - - MiroStat(int level) { - this.level = level; - } - } -} diff --git a/src/main/java/de/kherud/llama/ProcessRunner.java b/src/main/java/de/kherud/llama/ProcessRunner.java new file mode 100644 index 00000000..6a1fd8dd --- /dev/null +++ b/src/main/java/de/kherud/llama/ProcessRunner.java @@ -0,0 +1,35 @@ +package de.kherud.llama; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.TimeUnit; + +class ProcessRunner { + String runAndWaitFor(String command) throws IOException, InterruptedException { + Process p = Runtime.getRuntime().exec(command); + p.waitFor(); + + return getProcessOutput(p); + } + + String runAndWaitFor(String command, long timeout, TimeUnit unit) + throws IOException, InterruptedException { + Process p = Runtime.getRuntime().exec(command); + p.waitFor(timeout, unit); + + return getProcessOutput(p); + } + + static String getProcessOutput(Process process) throws IOException { + try (InputStream in = process.getInputStream()) { + int readLen; + ByteArrayOutputStream b = new ByteArrayOutputStream(); + byte[] buf = new byte[32]; + while ((readLen = in.read(buf, 0, buf.length)) >= 0) { + b.write(buf, 0, readLen); + } + return b.toString(); + } + } +} diff --git a/src/main/java/de/kherud/llama/SliceableByteBuffer.java b/src/main/java/de/kherud/llama/SliceableByteBuffer.java deleted file mode 100644 index fdb3ab72..00000000 --- a/src/main/java/de/kherud/llama/SliceableByteBuffer.java +++ /dev/null @@ -1,76 +0,0 @@ -package de.kherud.llama; - -import java.nio.ByteBuffer; - -/** - * Container that allows slicing an {@link ByteBuffer} - * with arbitrary slicing lengths on Java versions older than 13. - * Does not extend ByteBuffer because the super constructor - * requires memory segment proxies, and we can't access the delegate's. - * Does not implement Buffer because the {@link java.nio.Buffer#slice(int, int)} - * method is specifically blocked from being implemented or used on older jdk versions. - * Unfortunately this can't be generified with {@link SliceableIntBuffer}, since there is no shared interface. - */ -class SliceableByteBuffer { - final ByteBuffer delegate; - - private final int offset; - - private final int capacity; - - SliceableByteBuffer(ByteBuffer delegate) { - this.delegate = delegate; - this.capacity = delegate.capacity(); - this.offset = 0; - } - - SliceableByteBuffer(ByteBuffer delegate, int offset, int capacity) { - this.delegate = delegate; - this.offset = offset; - this.capacity = capacity; - } - - SliceableByteBuffer slice(int offset, int length) { - // Where the magic happens - // Wrapping is equivalent to the slice operation so long - // as you keep track of your offsets and capacities. - // So, we use this container class to track those offsets and translate - // them to the correct frame of reference. - return new SliceableByteBuffer( - ByteBuffer.wrap( - this.delegate.array(), - this.offset + offset, - length - ), - this.offset + offset, - length - ); - - } - - int capacity() { - return capacity; - } - - SliceableByteBuffer put(int index, byte b) { - delegate.put(offset + index, b); - return this; - } - - byte get(int index) { - return delegate.get(offset + index); - } - - void clear() { - // Clear set the limit and position - // to 0 and capacity respectively, - // but that's not what the buffer was initially - // after the wrap() call, so we manually - // set the limit and position to what they were - // after the wrap call. - delegate.clear(); - delegate.limit(offset + capacity); - delegate.position(offset); - } - -} diff --git a/src/main/java/de/kherud/llama/SliceableIntBuffer.java b/src/main/java/de/kherud/llama/SliceableIntBuffer.java deleted file mode 100644 index 029e38eb..00000000 --- a/src/main/java/de/kherud/llama/SliceableIntBuffer.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.kherud.llama; - -import java.nio.IntBuffer; - - -/** - * Container that allows slicing an {@link IntBuffer} - * with arbitrary slicing lengths on Java versions older than 13. - * Does not extend IntBuffer because the super constructor - * requires memory segment proxies, and we can't access the delegate's. - * Does not implement Buffer because the {@link java.nio.Buffer#slice(int, int)} - * method is specifically blocked from being implemented or used on older jdk versions. - * Unfortunately this can't be generified with {@link SliceableByteBuffer}, since there is no shared interface. - */ -class SliceableIntBuffer { - final IntBuffer delegate; - - private final int offset; - - private final int capacity; - - SliceableIntBuffer(IntBuffer delegate) { - this.delegate = delegate; - this.capacity = delegate.capacity(); - this.offset = 0; - } - - SliceableIntBuffer(IntBuffer delegate, int offset, int capacity) { - this.delegate = delegate; - this.offset = offset; - this.capacity = capacity; - } - - SliceableIntBuffer slice(int offset, int length) { - // Where the magic happens - // Wrapping is equivalent to the slice operation so long - // as you keep track of your offsets and capacities. - // So, we use this container class to track those offsets and translate - // them to the correct frame of reference. - return new SliceableIntBuffer( - IntBuffer.wrap( - this.delegate.array(), - this.offset + offset, - length - ), - this.offset + offset, - length - ); - - } - - int capacity() { - return capacity; - } - - SliceableIntBuffer put(int index, int i) { - delegate.put(offset + index, i); - return this; - } - - int get(int index) { - return delegate.get(offset + index); - } - - void clear() { - // Clear set the limit and position - // to 0 and capacity respectively, - // but that's not what the buffer was initially - // after the wrap() call, so we manually - // set the limit and position to what they were - // after the wrap call. - delegate.clear(); - delegate.limit(offset + capacity); - delegate.position(offset); - } - -} diff --git a/src/main/java/de/kherud/llama/TokenType.java b/src/main/java/de/kherud/llama/TokenType.java deleted file mode 100644 index eb7c75fe..00000000 --- a/src/main/java/de/kherud/llama/TokenType.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.kherud.llama; - -import de.kherud.llama.foreign.LlamaLibrary; - -/** - * This enum represents the native token types of llama.cpp. - */ -public enum TokenType { - - UNDEFINED(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNDEFINED), - NORMAL(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_NORMAL), - UNKNOWN(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNKNOWN), - CONTROL(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_CONTROL), - USER_DEFINED(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_USER_DEFINED), - UNUSED(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNUSED), - BYTE(LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_BYTE); - - private final int code; - - TokenType(int code) { - this.code = code; - } - - /** - * Returns a Java enum option given a native token type. - * For unknown native codes {@link #UNKNOWN} is returned instead of throwing. - * - * @param code the native token type - * @return the Java token type representation - */ - static TokenType fromCode(int code) { - switch (code) { - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNDEFINED: - return UNDEFINED; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_NORMAL: - return NORMAL; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_CONTROL: - return CONTROL; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_USER_DEFINED: - return USER_DEFINED; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNUSED: - return UNUSED; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_BYTE: - return BYTE; - case LlamaLibrary.llama_token_type.LLAMA_TOKEN_TYPE_UNKNOWN: - default: - return UNKNOWN; - } - } - -} diff --git a/src/main/java/de/kherud/llama/VocabularyType.java b/src/main/java/de/kherud/llama/VocabularyType.java deleted file mode 100644 index 2bb71644..00000000 --- a/src/main/java/de/kherud/llama/VocabularyType.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.kherud.llama; - -import de.kherud.llama.foreign.LlamaLibrary; - -/** - * This enum represents the native vocabulary types of llama.cpp. - */ -public enum VocabularyType { - - SENTENCE_PIECE(LlamaLibrary.llama_vocab_type.LLAMA_VOCAB_TYPE_SPM), - BYTE_PAIR(LlamaLibrary.llama_vocab_type.LLAMA_VOCAB_TYPE_BPE); - - private final int code; - - VocabularyType(int code) { - this.code = code; - } - - /** - * Returns a Java enum option given a native vocabulary type. - * For unknown native codes {@link #BYTE_PAIR} is returned instead of throwing. - * - * @param code the native vocabulary type - * @return the Java vocabulary type representation - */ - static VocabularyType fromCode(int code) { - if (code == LlamaLibrary.llama_vocab_type.LLAMA_VOCAB_TYPE_SPM) { - return SENTENCE_PIECE; - } else { - return BYTE_PAIR; - } - } - -} diff --git a/src/main/java/de/kherud/llama/foreign/LlamaLibrary.java b/src/main/java/de/kherud/llama/foreign/LlamaLibrary.java deleted file mode 100644 index e11ab3ac..00000000 --- a/src/main/java/de/kherud/llama/foreign/LlamaLibrary.java +++ /dev/null @@ -1,187 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Callback; -import com.sun.jna.Library; -import com.sun.jna.Native; -import com.sun.jna.NativeLibrary; -import com.sun.jna.Pointer; -import com.sun.jna.PointerType; -import com.sun.jna.ptr.FloatByReference; -import com.sun.jna.ptr.PointerByReference; -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -/** - * JNA Wrapper for library llama
- * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class LlamaLibrary implements Library { - public static final String JNA_LIBRARY_NAME = "llama"; - public static final NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(LlamaLibrary.JNA_LIBRARY_NAME); - static { - Native.register(LlamaLibrary.class, LlamaLibrary.JNA_NATIVE_LIB); - } - public static interface llama_log_level { - public static final int LLAMA_LOG_LEVEL_ERROR = 2; - public static final int LLAMA_LOG_LEVEL_WARN = 3; - public static final int LLAMA_LOG_LEVEL_INFO = 4; - }; - public static interface llama_vocab_type { - public static final int LLAMA_VOCAB_TYPE_SPM = 0; - public static final int LLAMA_VOCAB_TYPE_BPE = 1; - }; - public static interface llama_token_type { - public static final int LLAMA_TOKEN_TYPE_UNDEFINED = 0; - public static final int LLAMA_TOKEN_TYPE_NORMAL = 1; - public static final int LLAMA_TOKEN_TYPE_UNKNOWN = 2; - public static final int LLAMA_TOKEN_TYPE_CONTROL = 3; - public static final int LLAMA_TOKEN_TYPE_USER_DEFINED = 4; - public static final int LLAMA_TOKEN_TYPE_UNUSED = 5; - public static final int LLAMA_TOKEN_TYPE_BYTE = 6; - }; - public static interface llama_ftype { - public static final int LLAMA_FTYPE_ALL_F32 = 0; - public static final int LLAMA_FTYPE_MOSTLY_F16 = 1; - public static final int LLAMA_FTYPE_MOSTLY_Q4_0 = 2; - public static final int LLAMA_FTYPE_MOSTLY_Q4_1 = 3; - public static final int LLAMA_FTYPE_MOSTLY_Q4_1_SOME_F16 = 4; - public static final int LLAMA_FTYPE_MOSTLY_Q8_0 = 7; - public static final int LLAMA_FTYPE_MOSTLY_Q5_0 = 8; - public static final int LLAMA_FTYPE_MOSTLY_Q5_1 = 9; - public static final int LLAMA_FTYPE_MOSTLY_Q2_K = 10; - public static final int LLAMA_FTYPE_MOSTLY_Q3_K_S = 11; - public static final int LLAMA_FTYPE_MOSTLY_Q3_K_M = 12; - public static final int LLAMA_FTYPE_MOSTLY_Q3_K_L = 13; - public static final int LLAMA_FTYPE_MOSTLY_Q4_K_S = 14; - public static final int LLAMA_FTYPE_MOSTLY_Q4_K_M = 15; - public static final int LLAMA_FTYPE_MOSTLY_Q5_K_S = 16; - public static final int LLAMA_FTYPE_MOSTLY_Q5_K_M = 17; - public static final int LLAMA_FTYPE_MOSTLY_Q6_K = 18; - public static final int LLAMA_FTYPE_GUESSED = 1024; - }; - public static interface llama_gretype { - public static final int LLAMA_GRETYPE_END = 0; - public static final int LLAMA_GRETYPE_ALT = 1; - public static final int LLAMA_GRETYPE_RULE_REF = 2; - public static final int LLAMA_GRETYPE_CHAR = 3; - public static final int LLAMA_GRETYPE_CHAR_NOT = 4; - public static final int LLAMA_GRETYPE_CHAR_RNG_UPPER = 5; - public static final int LLAMA_GRETYPE_CHAR_ALT = 6; - }; - public static final int LLAMA_MAX_DEVICES = (int)1; - public static final long LLAMA_DEFAULT_SEED = (long)0xFFFFFFFFL; - public static final int LLAMA_FILE_MAGIC_GGSN = (int)0x6767736e; - public static final int LLAMA_SESSION_MAGIC = (int)0x6767736e; - public static final int LLAMA_SESSION_VERSION = (int)1; - public interface llama_progress_callback extends Callback { - void apply(float progress, Pointer ctx); - }; - public interface llama_log_callback extends Callback { - void apply(int level, String text, Pointer user_data); - }; - public interface llama_beam_search_callback_fn_t extends Callback { - void apply(Pointer callback_data, de.kherud.llama.foreign.llama_beams_state.ByValue llama_beams_state1); - }; - public static native de.kherud.llama.foreign.llama_context_params.ByValue llama_context_default_params(); - public static native llama_model_quantize_params.ByValue llama_model_quantize_default_params(); - public static native void llama_backend_init(byte numa); - public static native void llama_backend_free(); - public static native LlamaLibrary.llama_model llama_load_model_from_file(String path_model, de.kherud.llama.foreign.llama_context_params.ByValue params); - public static native void llama_free_model(LlamaLibrary.llama_model model); - public static native LlamaLibrary.llama_context llama_new_context_with_model(LlamaLibrary.llama_model model, de.kherud.llama.foreign.llama_context_params.ByValue params); - public static native void llama_free(LlamaLibrary.llama_context ctx); - public static native long llama_time_us(); - public static native int llama_max_devices(); - public static native byte llama_mmap_supported(); - public static native byte llama_mlock_supported(); - public static native int llama_n_vocab(LlamaLibrary.llama_context ctx); - public static native int llama_n_ctx(LlamaLibrary.llama_context ctx); - public static native int llama_n_ctx_train(LlamaLibrary.llama_context ctx); - public static native int llama_n_embd(LlamaLibrary.llama_context ctx); - public static native int llama_vocab_type(LlamaLibrary.llama_context ctx); - public static native int llama_model_n_vocab(LlamaLibrary.llama_model model); - public static native int llama_model_n_ctx(LlamaLibrary.llama_model model); - public static native int llama_model_n_ctx_train(LlamaLibrary.llama_model model); - public static native int llama_model_n_embd(LlamaLibrary.llama_model model); - public static native int llama_model_desc(LlamaLibrary.llama_model model, byte[] buf, NativeSize buf_size); - public static native long llama_model_size(LlamaLibrary.llama_model model); - public static native long llama_model_n_params(LlamaLibrary.llama_model model); - public static native int llama_model_quantize(String fname_inp, String fname_out, llama_model_quantize_params params); - public static native int llama_apply_lora_from_file(LlamaLibrary.llama_context ctx, String path_lora, String path_base_model, int n_threads); - public static native int llama_model_apply_lora_from_file(LlamaLibrary.llama_model model, String path_lora, String path_base_model, int n_threads); - public static native int llama_get_kv_cache_token_count(LlamaLibrary.llama_context ctx); - public static native void llama_set_rng_seed(LlamaLibrary.llama_context ctx, int seed); - public static native NativeSize llama_get_state_size(LlamaLibrary.llama_context ctx); - public static native NativeSize llama_copy_state_data(LlamaLibrary.llama_context ctx, ByteBuffer dst); - public static native NativeSize llama_set_state_data(LlamaLibrary.llama_context ctx, ByteBuffer src); - public static native byte llama_load_session_file(LlamaLibrary.llama_context ctx, String path_session, IntBuffer tokens_out, NativeSize n_token_capacity, NativeSizeByReference n_token_count_out); - public static native byte llama_save_session_file(LlamaLibrary.llama_context ctx, String path_session, IntBuffer tokens, NativeSize n_token_count); - public static native int llama_eval(LlamaLibrary.llama_context ctx, IntBuffer tokens, int n_tokens, int n_past, int n_threads); - public static native int llama_eval_embd(LlamaLibrary.llama_context ctx, FloatBuffer embd, int n_tokens, int n_past, int n_threads); - public static native int llama_eval_export(LlamaLibrary.llama_context ctx, String fname); - public static native FloatByReference llama_get_logits(LlamaLibrary.llama_context ctx); - public static native FloatByReference llama_get_embeddings(LlamaLibrary.llama_context ctx); - public static native String llama_token_get_text(LlamaLibrary.llama_context ctx, int token); - public static native float llama_token_get_score(LlamaLibrary.llama_context ctx, int token); - public static native int llama_token_get_type(LlamaLibrary.llama_context ctx, int token); - public static native int llama_token_bos(LlamaLibrary.llama_context ctx); - public static native int llama_token_eos(LlamaLibrary.llama_context ctx); - public static native int llama_token_nl(LlamaLibrary.llama_context ctx); - public static native int llama_tokenize(LlamaLibrary.llama_context ctx, String text, IntBuffer tokens, int n_max_tokens, byte add_bos); - public static native int llama_tokenize_with_model(LlamaLibrary.llama_model model, String text, IntBuffer tokens, int n_max_tokens, byte add_bos); - public static native int llama_token_to_piece(LlamaLibrary.llama_context ctx, int token, ByteBuffer buf, int length); - public static native int llama_token_to_piece_with_model(LlamaLibrary.llama_model model, int token, ByteBuffer buf, int length); - public static native LlamaLibrary.llama_grammar llama_grammar_init(Pointer rules, NativeSize n_rules, NativeSize start_rule_index); - public static native void llama_grammar_free(LlamaLibrary.llama_grammar grammar); - public static native LlamaLibrary.llama_grammar llama_grammar_copy(LlamaLibrary.llama_grammar grammar); - public static native void llama_sample_repetition_penalty(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, IntBuffer last_tokens, NativeSize last_tokens_size, float penalty); - public static native void llama_sample_frequency_and_presence_penalties(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, IntBuffer last_tokens, NativeSize last_tokens_size, float alpha_frequency, float alpha_presence); - public static native void llama_sample_classifier_free_guidance(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, LlamaLibrary.llama_context guidance_ctx, float scale); - public static native void llama_sample_softmax(LlamaLibrary.llama_context ctx, llama_token_data_array candidates); - public static native void llama_sample_top_k(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, int k, NativeSize min_keep); - public static native void llama_sample_top_p(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float p, NativeSize min_keep); - public static native void llama_sample_tail_free(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float z, NativeSize min_keep); - public static native void llama_sample_typical(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float p, NativeSize min_keep); - public static native void llama_sample_temperature(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float temp); - public static native void llama_sample_grammar(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, LlamaLibrary.llama_grammar grammar); - public static native int llama_sample_token_mirostat(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float tau, float eta, int m, FloatBuffer mu); - public static native int llama_sample_token_mirostat_v2(LlamaLibrary.llama_context ctx, llama_token_data_array candidates, float tau, float eta, FloatBuffer mu); - public static native int llama_sample_token_greedy(LlamaLibrary.llama_context ctx, llama_token_data_array candidates); - public static native int llama_sample_token(LlamaLibrary.llama_context ctx, llama_token_data_array candidates); - public static native void llama_grammar_accept_token(LlamaLibrary.llama_context ctx, LlamaLibrary.llama_grammar grammar, int token); - public static native void llama_beam_search(LlamaLibrary.llama_context ctx, LlamaLibrary.llama_beam_search_callback_fn_t callback, Pointer callback_data, NativeSize n_beams, int n_past, int n_predict, int n_threads); - public static native de.kherud.llama.foreign.llama_timings.ByValue llama_get_timings(LlamaLibrary.llama_context ctx); - public static native void llama_print_timings(LlamaLibrary.llama_context ctx); - public static native void llama_reset_timings(LlamaLibrary.llama_context ctx); - public static native String llama_print_system_info(); - public static native void llama_log_set(LlamaLibrary.llama_log_callback log_callback, Pointer user_data); - public static native void llama_dump_timing_info_yaml(PointerByReference stream, LlamaLibrary.llama_context ctx); - /** Pointer to unknown (opaque) type */ - public static class llama_grammar extends PointerType { - public llama_grammar(Pointer address) { - super(address); - } - public llama_grammar() { - super(); - } - }; - /** Pointer to unknown (opaque) type */ - public static class llama_model extends PointerType { - public llama_model(Pointer address) { - super(address); - } - public llama_model() { - super(); - } - }; - /** Pointer to unknown (opaque) type */ - public static class llama_context extends PointerType { - public llama_context(Pointer address) { - super(address); - } - public llama_context() { - super(); - } - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/NativeSize.java b/src/main/java/de/kherud/llama/foreign/NativeSize.java deleted file mode 100644 index a23fa30b..00000000 --- a/src/main/java/de/kherud/llama/foreign/NativeSize.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2021 denkbares GmbH, Germany - * - * This is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 3 of the License, or (at your option) any - * later version. - * - * This software is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this software; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF - * site: http://www.fsf.org. - */ - -package de.kherud.llama.foreign; - -import com.sun.jna.IntegerType; -import com.sun.jna.Native; - -public class NativeSize extends IntegerType { - private static final long serialVersionUID = 1L; - - public NativeSize() { - this(0); - } - - public NativeSize(long value) { - super(Native.SIZE_T_SIZE, value, true); - } - -} diff --git a/src/main/java/de/kherud/llama/foreign/NativeSizeByReference.java b/src/main/java/de/kherud/llama/foreign/NativeSizeByReference.java deleted file mode 100644 index 3d787665..00000000 --- a/src/main/java/de/kherud/llama/foreign/NativeSizeByReference.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2021 denkbares GmbH, Germany - * - * This is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free - * Software Foundation; either version 3 of the License, or (at your option) any - * later version. - * - * This software is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more - * details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this software; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF - * site: http://www.fsf.org. - */ - -package de.kherud.llama.foreign; - -import com.sun.jna.Native; -import com.sun.jna.Pointer; -import com.sun.jna.ptr.ByReference; - -public class NativeSizeByReference extends ByReference { - public NativeSizeByReference() { - this(0); - } - - public NativeSizeByReference(long value) { - super(Native.SIZE_T_SIZE); - setValue(value); - } - - public void setValue(long value) { - Pointer p = getPointer(); - switch (Native.SIZE_T_SIZE) { - case 2: - p.setShort(0, (short)value); - break; - case 4: - p.setInt(0, (int)value); - break; - case 8: - p.setLong(0, value); - break; - default: - throw new RuntimeException("Unsupported size: " + Native.SIZE_T_SIZE); - } - } - - public long getValue() { - Pointer p = getPointer(); - switch (Native.SIZE_T_SIZE) { - case 2: - return p.getShort(0) & 0xFFFFL; - case 4: - return p.getInt(0) & 0xFFFFFFFFL; - case 8: - return p.getLong(0); - default: - throw new RuntimeException("Unsupported size: " + Native.SIZE_T_SIZE); - } - } -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_beam_view.java b/src/main/java/de/kherud/llama/foreign/llama_beam_view.java deleted file mode 100644 index 59c3462d..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_beam_view.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import com.sun.jna.ptr.IntByReference; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_beam_view extends Structure { - public IntByReference tokens; - public IntByReference getTokens() { - return tokens; - } - public void setTokens(IntByReference tokens) { - this.tokens = tokens; - } - public NativeSize n_tokens; - public NativeSize getN_tokens() { - return n_tokens; - } - public void setN_tokens(NativeSize n_tokens) { - this.n_tokens = n_tokens; - } - /** Cumulative beam probability (renormalized relative to all beams) */ - public float p; - public float getP() { - return p; - } - public void setP(float p) { - this.p = p; - } - /** Callback should set this to true when a beam is at end-of-beam. */ - public byte eob; - public byte getEob() { - return eob; - } - public void setEob(byte eob) { - this.eob = eob; - } - public llama_beam_view() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("tokens", "n_tokens", "p", "eob"); - } - public llama_beam_view(IntByReference tokens, NativeSize n_tokens, float p, byte eob) { - super(); - this.tokens = tokens; - this.n_tokens = n_tokens; - this.p = p; - this.eob = eob; - } - public llama_beam_view(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_beam_view implements Structure.ByReference { - - }; - public static class ByValue extends llama_beam_view implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_beams_state.java b/src/main/java/de/kherud/llama/foreign/llama_beams_state.java deleted file mode 100644 index 2e9cd3ab..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_beams_state.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_beams_state extends Structure { - public de.kherud.llama.foreign.llama_beam_view.ByReference beam_views; - public de.kherud.llama.foreign.llama_beam_view.ByReference getBeam_views() { - return beam_views; - } - public void setBeam_views(de.kherud.llama.foreign.llama_beam_view.ByReference beam_views) { - this.beam_views = beam_views; - } - /** Number of elements in beam_views[]. */ - public NativeSize n_beams; - public NativeSize getN_beams() { - return n_beams; - } - public void setN_beams(NativeSize n_beams) { - this.n_beams = n_beams; - } - /** Current max length of prefix tokens shared by all beams. */ - public NativeSize common_prefix_length; - public NativeSize getCommon_prefix_length() { - return common_prefix_length; - } - public void setCommon_prefix_length(NativeSize common_prefix_length) { - this.common_prefix_length = common_prefix_length; - } - /** True iff this is the last callback invocation. */ - public byte last_call; - public byte getLast_call() { - return last_call; - } - public void setLast_call(byte last_call) { - this.last_call = last_call; - } - public llama_beams_state() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("beam_views", "n_beams", "common_prefix_length", "last_call"); - } - public llama_beams_state(de.kherud.llama.foreign.llama_beam_view.ByReference beam_views, NativeSize n_beams, NativeSize common_prefix_length, byte last_call) { - super(); - this.beam_views = beam_views; - this.n_beams = n_beams; - this.common_prefix_length = common_prefix_length; - this.last_call = last_call; - } - public llama_beams_state(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_beams_state implements Structure.ByReference { - - }; - public static class ByValue extends llama_beams_state implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_context_params.java b/src/main/java/de/kherud/llama/foreign/llama_context_params.java deleted file mode 100644 index b6a630bb..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_context_params.java +++ /dev/null @@ -1,172 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import com.sun.jna.ptr.FloatByReference; -import de.kherud.llama.foreign.LlamaLibrary.llama_progress_callback; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_context_params extends Structure { - /** RNG seed, -1 for random */ - public int seed; - public int getSeed() { - return seed; - } - public void setSeed(int seed) { - this.seed = seed; - } - /** text context */ - public int n_ctx; - public int getN_ctx() { - return n_ctx; - } - public void setN_ctx(int n_ctx) { - this.n_ctx = n_ctx; - } - /** prompt processing batch size */ - public int n_batch; - public int getN_batch() { - return n_batch; - } - public void setN_batch(int n_batch) { - this.n_batch = n_batch; - } - /** number of layers to store in VRAM */ - public int n_gpu_layers; - public int getN_gpu_layers() { - return n_gpu_layers; - } - public void setN_gpu_layers(int n_gpu_layers) { - this.n_gpu_layers = n_gpu_layers; - } - /** the GPU that is used for scratch and small tensors */ - public int main_gpu; - public int getMain_gpu() { - return main_gpu; - } - public void setMain_gpu(int main_gpu) { - this.main_gpu = main_gpu; - } - /** how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) */ - public FloatByReference tensor_split; - public FloatByReference getTensor_split() { - return tensor_split; - } - public void setTensor_split(FloatByReference tensor_split) { - this.tensor_split = tensor_split; - } - /** RoPE base frequency */ - public float rope_freq_base; - public float getRope_freq_base() { - return rope_freq_base; - } - public void setRope_freq_base(float rope_freq_base) { - this.rope_freq_base = rope_freq_base; - } - /** RoPE frequency scaling factor */ - public float rope_freq_scale; - public float getRope_freq_scale() { - return rope_freq_scale; - } - public void setRope_freq_scale(float rope_freq_scale) { - this.rope_freq_scale = rope_freq_scale; - } - public llama_progress_callback progress_callback; - public llama_progress_callback getProgress_callback() { - return progress_callback; - } - public void setProgress_callback(llama_progress_callback progress_callback) { - this.progress_callback = progress_callback; - } - public Pointer progress_callback_user_data; - public Pointer getProgress_callback_user_data() { - return progress_callback_user_data; - } - public void setProgress_callback_user_data(Pointer progress_callback_user_data) { - this.progress_callback_user_data = progress_callback_user_data; - } - /** if true, reduce VRAM usage at the cost of performance */ - public byte low_vram; - public byte getLow_vram() { - return low_vram; - } - public void setLow_vram(byte low_vram) { - this.low_vram = low_vram; - } - /** if true, use experimental mul_mat_q kernels */ - public byte mul_mat_q; - public byte getMul_mat_q() { - return mul_mat_q; - } - public void setMul_mat_q(byte mul_mat_q) { - this.mul_mat_q = mul_mat_q; - } - /** use fp16 for KV cache */ - public byte f16_kv; - public byte getF16_kv() { - return f16_kv; - } - public void setF16_kv(byte f16_kv) { - this.f16_kv = f16_kv; - } - /** the llama_eval() call computes all logits, not just the last one */ - public byte logits_all; - public byte getLogits_all() { - return logits_all; - } - public void setLogits_all(byte logits_all) { - this.logits_all = logits_all; - } - /** only load the vocabulary, no weights */ - public byte vocab_only; - public byte getVocab_only() { - return vocab_only; - } - public void setVocab_only(byte vocab_only) { - this.vocab_only = vocab_only; - } - /** use mmap if possible */ - public byte use_mmap; - public byte getUse_mmap() { - return use_mmap; - } - public void setUse_mmap(byte use_mmap) { - this.use_mmap = use_mmap; - } - /** force system to keep model in RAM */ - public byte use_mlock; - public byte getUse_mlock() { - return use_mlock; - } - public void setUse_mlock(byte use_mlock) { - this.use_mlock = use_mlock; - } - /** embedding mode only */ - public byte embedding; - public byte getEmbedding() { - return embedding; - } - public void setEmbedding(byte embedding) { - this.embedding = embedding; - } - public llama_context_params() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("seed", "n_ctx", "n_batch", "n_gpu_layers", "main_gpu", "tensor_split", "rope_freq_base", "rope_freq_scale", "progress_callback", "progress_callback_user_data", "low_vram", "mul_mat_q", "f16_kv", "logits_all", "vocab_only", "use_mmap", "use_mlock", "embedding"); - } - public llama_context_params(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_context_params implements Structure.ByReference { - - }; - public static class ByValue extends llama_context_params implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_grammar_element.java b/src/main/java/de/kherud/llama/foreign/llama_grammar_element.java deleted file mode 100644 index fcae95ac..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_grammar_element.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_grammar_element extends Structure { - /** @see LlamaLibrary.llama_gretype */ - public int type; - public int getType() { - return type; - } - public void setType(int type) { - this.type = type; - } - /** Unicode code point or rule ID */ - public int value; - public int getValue() { - return value; - } - public void setValue(int value) { - this.value = value; - } - public llama_grammar_element() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("type", "value"); - } - public llama_grammar_element(int type, int value) { - super(); - this.type = type; - this.value = value; - } - public llama_grammar_element(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_grammar_element implements Structure.ByReference { - - }; - public static class ByValue extends llama_grammar_element implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_model_quantize_params.java b/src/main/java/de/kherud/llama/foreign/llama_model_quantize_params.java deleted file mode 100644 index fe72c372..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_model_quantize_params.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_model_quantize_params extends Structure { - /** number of threads to use for quantizing, if less than 0 will use std::thread::hardware_concurrency() */ - public int nthread; - public int getNthread() { - return nthread; - } - public void setNthread(int nthread) { - this.nthread = nthread; - } - /** - * @see LlamaLibrary.llama_ftype - * quantize to this llama_ftype - */ - public int ftype; - public int getFtype() { - return ftype; - } - public void setFtype(int ftype) { - this.ftype = ftype; - } - /** allow quantizing non-f32/f16 tensors */ - public byte allow_requantize; - public byte getAllow_requantize() { - return allow_requantize; - } - public void setAllow_requantize(byte allow_requantize) { - this.allow_requantize = allow_requantize; - } - /** quantize output.weight */ - public byte quantize_output_tensor; - public byte getQuantize_output_tensor() { - return quantize_output_tensor; - } - public void setQuantize_output_tensor(byte quantize_output_tensor) { - this.quantize_output_tensor = quantize_output_tensor; - } - /** only copy tensors - ftype, allow_requantize and quantize_output_tensor are ignored */ - public byte only_copy; - public byte getOnly_copy() { - return only_copy; - } - public void setOnly_copy(byte only_copy) { - this.only_copy = only_copy; - } - public llama_model_quantize_params() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("nthread", "ftype", "allow_requantize", "quantize_output_tensor", "only_copy"); - } - public llama_model_quantize_params(int nthread, int ftype, byte allow_requantize, byte quantize_output_tensor, byte only_copy) { - super(); - this.nthread = nthread; - this.ftype = ftype; - this.allow_requantize = allow_requantize; - this.quantize_output_tensor = quantize_output_tensor; - this.only_copy = only_copy; - } - public llama_model_quantize_params(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_model_quantize_params implements Structure.ByReference { - - }; - public static class ByValue extends llama_model_quantize_params implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_timings.java b/src/main/java/de/kherud/llama/foreign/llama_timings.java deleted file mode 100644 index ee4dcf54..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_timings.java +++ /dev/null @@ -1,103 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_timings extends Structure { - public double t_start_ms; - public double getT_start_ms() { - return t_start_ms; - } - public void setT_start_ms(double t_start_ms) { - this.t_start_ms = t_start_ms; - } - public double t_end_ms; - public double getT_end_ms() { - return t_end_ms; - } - public void setT_end_ms(double t_end_ms) { - this.t_end_ms = t_end_ms; - } - public double t_load_ms; - public double getT_load_ms() { - return t_load_ms; - } - public void setT_load_ms(double t_load_ms) { - this.t_load_ms = t_load_ms; - } - public double t_sample_ms; - public double getT_sample_ms() { - return t_sample_ms; - } - public void setT_sample_ms(double t_sample_ms) { - this.t_sample_ms = t_sample_ms; - } - public double t_p_eval_ms; - public double getT_p_eval_ms() { - return t_p_eval_ms; - } - public void setT_p_eval_ms(double t_p_eval_ms) { - this.t_p_eval_ms = t_p_eval_ms; - } - public double t_eval_ms; - public double getT_eval_ms() { - return t_eval_ms; - } - public void setT_eval_ms(double t_eval_ms) { - this.t_eval_ms = t_eval_ms; - } - public int n_sample; - public int getN_sample() { - return n_sample; - } - public void setN_sample(int n_sample) { - this.n_sample = n_sample; - } - public int n_p_eval; - public int getN_p_eval() { - return n_p_eval; - } - public void setN_p_eval(int n_p_eval) { - this.n_p_eval = n_p_eval; - } - public int n_eval; - public int getN_eval() { - return n_eval; - } - public void setN_eval(int n_eval) { - this.n_eval = n_eval; - } - public llama_timings() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("t_start_ms", "t_end_ms", "t_load_ms", "t_sample_ms", "t_p_eval_ms", "t_eval_ms", "n_sample", "n_p_eval", "n_eval"); - } - public llama_timings(double t_start_ms, double t_end_ms, double t_load_ms, double t_sample_ms, double t_p_eval_ms, double t_eval_ms, int n_sample, int n_p_eval, int n_eval) { - super(); - this.t_start_ms = t_start_ms; - this.t_end_ms = t_end_ms; - this.t_load_ms = t_load_ms; - this.t_sample_ms = t_sample_ms; - this.t_p_eval_ms = t_p_eval_ms; - this.t_eval_ms = t_eval_ms; - this.n_sample = n_sample; - this.n_p_eval = n_p_eval; - this.n_eval = n_eval; - } - public llama_timings(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_timings implements Structure.ByReference { - - }; - public static class ByValue extends llama_timings implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_token_data.java b/src/main/java/de/kherud/llama/foreign/llama_token_data.java deleted file mode 100644 index 86a27c26..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_token_data.java +++ /dev/null @@ -1,58 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_token_data extends Structure { - /** token id */ - public int id; - public int getId() { - return id; - } - public void setId(int id) { - this.id = id; - } - /** log-odds of the token */ - public float logit; - public float getLogit() { - return logit; - } - public void setLogit(float logit) { - this.logit = logit; - } - /** probability of the token */ - public float p; - public float getP() { - return p; - } - public void setP(float p) { - this.p = p; - } - public llama_token_data() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("id", "logit", "p"); - } - public llama_token_data(int id, float logit, float p) { - super(); - this.id = id; - this.logit = logit; - this.p = p; - } - public llama_token_data(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_token_data implements Structure.ByReference { - - }; - public static class ByValue extends llama_token_data implements Structure.ByValue { - - }; -} diff --git a/src/main/java/de/kherud/llama/foreign/llama_token_data_array.java b/src/main/java/de/kherud/llama/foreign/llama_token_data_array.java deleted file mode 100644 index a5320db5..00000000 --- a/src/main/java/de/kherud/llama/foreign/llama_token_data_array.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.kherud.llama.foreign; -import com.sun.jna.Pointer; -import com.sun.jna.Structure; -import java.util.Arrays; -import java.util.List; -/** - * This file was autogenerated by JNAerator,
- * a tool written by Olivier Chafik that uses a few opensource projects..
- * For help, please visit NativeLibs4Java , Rococoa, or JNA. - */ -public class llama_token_data_array extends Structure { - public de.kherud.llama.foreign.llama_token_data.ByReference data; - public de.kherud.llama.foreign.llama_token_data.ByReference getData() { - return data; - } - public void setData(de.kherud.llama.foreign.llama_token_data.ByReference data) { - this.data = data; - } - public NativeSize size; - public NativeSize getSize() { - return size; - } - public void setSize(NativeSize size) { - this.size = size; - } - public byte sorted; - public byte getSorted() { - return sorted; - } - public void setSorted(byte sorted) { - this.sorted = sorted; - } - public llama_token_data_array() { - super(); - } - @Override - protected List getFieldOrder() { - return Arrays.asList("data", "size", "sorted"); - } - public llama_token_data_array(de.kherud.llama.foreign.llama_token_data.ByReference data, NativeSize size, byte sorted) { - super(); - this.data = data; - this.size = size; - this.sorted = sorted; - } - public llama_token_data_array(Pointer peer) { - super(peer); - } - public static class ByReference extends llama_token_data_array implements Structure.ByReference { - - }; - public static class ByValue extends llama_token_data_array implements Structure.ByValue { - - }; -} diff --git a/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so b/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so new file mode 100755 index 0000000000000000000000000000000000000000..1bdc1b3dc7a526a2c35fbcded95439f207375c2b GIT binary patch literal 1021112 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%0AJ8E3qgPQ1?HY0 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

Xnwol3je?CSIXU&iOpij!5h*{r~$0(2Rl#aZ*b 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�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

(o4Vr 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

  • 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%0A$nhV`rFUcDglDeS<-w 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 z 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 zÐ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 Gw)H=~!WM}D literal 0 HcmV?d00001 diff --git a/src/test/java/de/kherud/llama/GrammarTest.java b/src/test/java/de/kherud/llama/GrammarTest.java deleted file mode 100644 index b7024020..00000000 --- a/src/test/java/de/kherud/llama/GrammarTest.java +++ /dev/null @@ -1,209 +0,0 @@ -package de.kherud.llama; - -import org.junit.Assert; -import org.junit.Test; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static de.kherud.llama.LlamaGrammar.Pair; -import static de.kherud.llama.foreign.LlamaLibrary.llama_gretype.*; - -public class GrammarTest { - - @Test - public void testParseGrammar1() { - String grammar = "root ::= (expr \"=\" term \"\\n\")+\n" + - "expr ::= term ([-+*/] term)*\n" + - "term ::= [0-9]+"; - - LlamaGrammar.ParseState state = new LlamaGrammar.ParseState(grammar); - - Map expectedIds = Map.of( - "expr", 2, - "expr_5", 5, - "expr_6", 6, - "root", 0, - "root_1", 1, - "root_4", 4, - "term", 3, - "term_7", 7 - ); - - Assert.assertEquals("unexpected amount of symbol ids", expectedIds.size(), state.symbol2Id.size()); - expectedIds.forEach((expectedKey, expectedValue) -> { - Integer actualValue = state.symbol2Id.get(expectedKey); - Assert.assertNotNull("expected key " + expectedKey + " missing ", actualValue); - Assert.assertEquals("values of rule " + expectedValue + " do not match", expectedValue, actualValue); - }); - - List> expectedRules = List.of( - new Pair<>(LLAMA_GRETYPE_RULE_REF, 4), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 2), - new Pair<>(LLAMA_GRETYPE_CHAR, 61), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_CHAR, 10), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 6), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 7), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 1), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 4), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 1), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 45), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 43), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 42), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 47), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 5), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 6), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 48), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 57), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 7), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 48), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 57), - new Pair<>(LLAMA_GRETYPE_END, 0) - ); - - - int index = 0; - for (List> rule : state.rules) { - for (Pair actualElement : rule) { - Pair expectedElement = expectedRules.get(index); - Assert.assertEquals("grammar element types do not match", expectedElement.a, actualElement.a); - Assert.assertEquals("grammar element values do not match", expectedElement.b, actualElement.b); - index++; - } - } - - Assert.assertFalse("parse state has no rules", state.rules.isEmpty()); - } - - @Test - public void testParseGrammar2() { - String grammar = "root ::= (expr \"=\" ws term \"\\n\")+\n" + - "expr ::= term ([-+*/] term)*\n" + - "term ::= ident | num | \"(\" ws expr \")\" ws\n" + - "ident ::= [a-z] [a-z0-9_]* ws\n" + - "num ::= [0-9]+ ws\n" + - "ws ::= [ \\t\\n]*"; - - LlamaGrammar.ParseState state = new LlamaGrammar.ParseState(grammar); - - Map expectedIds = new HashMap<>(); - expectedIds.put("expr", 2); - expectedIds.put("expr_6", 6); - expectedIds.put("expr_7", 7); - expectedIds.put("ident", 8); - expectedIds.put("ident_10", 10); - expectedIds.put("num", 9); - expectedIds.put("num_11", 11); - expectedIds.put("root", 0); - expectedIds.put("root_1", 1); - expectedIds.put("root_5", 5); - expectedIds.put("term", 4); - expectedIds.put("ws", 3); - expectedIds.put("ws_12", 12); - - Assert.assertEquals("unexpected amount of symbol ids", expectedIds.size(), state.symbol2Id.size()); - expectedIds.forEach((expectedKey, expectedValue) -> { - Integer actualValue = state.symbol2Id.get(expectedKey); - Assert.assertNotNull("expected key " + expectedKey + " missing ", actualValue); - Assert.assertEquals("values of rule " + expectedValue + " do not match", expectedValue, actualValue); - }); - - List> expectedRules = List.of( - new Pair<>(LLAMA_GRETYPE_RULE_REF, 5), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 2), - new Pair<>(LLAMA_GRETYPE_CHAR, 61), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 4), - new Pair<>(LLAMA_GRETYPE_CHAR, 10), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 4), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 7), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 12), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 8), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 9), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 40), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 2), - new Pair<>(LLAMA_GRETYPE_CHAR, 41), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 1), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 5), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 1), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 45), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 43), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 42), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 47), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 4), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 6), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 7), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 97), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 122), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 10), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 11), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 3), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 97), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 122), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 48), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 57), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 95), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 10), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 48), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 57), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 11), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 48), - new Pair<>(LLAMA_GRETYPE_CHAR_RNG_UPPER, 57), - new Pair<>(LLAMA_GRETYPE_END, 0), - new Pair<>(LLAMA_GRETYPE_CHAR, 32), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 9), - new Pair<>(LLAMA_GRETYPE_CHAR_ALT, 10), - new Pair<>(LLAMA_GRETYPE_RULE_REF, 12), - new Pair<>(LLAMA_GRETYPE_ALT, 0), - new Pair<>(LLAMA_GRETYPE_END, 0) - ); - - - int index = 0; - for (List> rule : state.rules) { - for (Pair actualElement : rule) { - Pair expectedElement = expectedRules.get(index); - Assert.assertEquals("grammar element types do not match", expectedElement.a, actualElement.a); - Assert.assertEquals("grammar element values do not match", expectedElement.b, actualElement.b); - index++; - } - } - - Assert.assertFalse("parse state has no rules", state.rules.isEmpty()); - } - -} diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index b45fd139..212a052b 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -1,27 +1,23 @@ package examples; +import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; -import de.kherud.llama.Parameters; public class GrammarExample { - public static void main(String... args) { - String grammar = "root ::= (expr \"=\" term \"\\n\")+\n" + - "expr ::= term ([-+*/] term)*\n" + - "term ::= [0-9]+"; - Parameters params = new Parameters.Builder() - .setNGpuLayers(43) - .setTemperature(0.7f) - .setMirostat(Parameters.MiroStat.V2) - .setGrammar(grammar) - .build(); + public static void main(String... args) { + String grammar = "root ::= (expr \"=\" term \"\\n\")+\n" + + "expr ::= term ([-+*/] term)*\n" + + "term ::= [0-9]"; + InferenceParameters params = new InferenceParameters.Builder() + .setGrammar(grammar) + .build(); - String modelPath = "/Users/konstantin.herud/denkbares/projects/llama.cpp/models/13B/gguf-model-q4_0.bin"; - try (LlamaModel model = new LlamaModel(modelPath, params)) { - for (LlamaModel.Output output : model.generate("1+1=")) { - System.out.print(output); - } - } - } + String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; + LlamaModel model = new LlamaModel(filePath); + for (String output : model.generate("", params)) { + System.out.print(output); + } + } } diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index d550b790..66dcde4c 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -1,43 +1,24 @@ package examples; import de.kherud.llama.LlamaModel; -import de.kherud.llama.Parameters; import java.io.BufferedReader; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; +import java.util.Iterator; public class MainExample { - public static void main(String... args) throws IOException { - Parameters params = new Parameters.Builder() - .setNGpuLayers(43) - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(Parameters.MiroStat.V2) - .setAntiPrompt(new String[]{"\n"}) - .build(); - - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; - String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + + public static void main(String... args) { + String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; + String prompt = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n"; - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, params)) { - String prompt = system; - while (true) { - prompt += "\nUser: "; - System.out.print(prompt); - String input = reader.readLine(); - prompt += input; - System.out.print("Llama: "); - prompt += "\nLlama: "; - for (LlamaModel.Output output : model.generate(prompt)) { - System.out.print(output); - } - prompt = ""; - } + "requests immediately and with precision.\n\nUser: What emojis do you know?\n\nLlama: "; + LlamaModel model = new LlamaModel(filePath); + for (String output : model.generate(prompt)) { + System.out.print(output); } } } diff --git a/src/test/resources/java.gbnf b/src/test/resources/java.gbnf new file mode 100644 index 00000000..75f86183 --- /dev/null +++ b/src/test/resources/java.gbnf @@ -0,0 +1,209 @@ +# Taken from https://cs.au.dk/~amoeller/RegAut/JavaBNF.html (02.09.2023) + +# Programs + +root ::= package-declaration? import-declarations? type-declarations? + +# Declarations + +package-declaration ::= "package" package-name ";" +import-declarations ::= import-declaration | import-declarations import-declaration +import-declaration ::= single-type-import-declaration | type-import-on-demand-declaration +single-type-import-declaration ::= "import" type-name ";" +type-import-on-demand-declaration ::= "import" package-name ".*;" +type-declarations ::= type-declaration | type-declarations type-declaration +type-declaration ::= class-declaration | interface-declaration | ";" +class-declaration ::= class-modifiers? "class" identifier super? interfaces? class-body +class-modifiers ::= class-modifier | class-modifiers class-modifier +class-modifier ::= "public" | "abstract" | "final" +super ::= "extends" class-type +interfaces ::= "implements" interface-type-list +interface-type-list ::= interface-type | interface-type-list "," interface-type +class-body ::= "{" class-body-declarations? "}" +class-body-declarations ::= class-body-declaration | class-body-declarations class-body-declaration +class-body-declaration ::= class-member-declaration | static-initializer | constructor-declaration +class-member-declaration ::= field-declaration | method-declaration +static-initializer ::= "static" block +constructor-declaration ::= constructor-modifiers? constructor-declarator throws? constructor-body +constructor-modifiers ::= constructor-modifier | constructor-modifiers constructor-modifier +constructor-modifier ::= "public" | "protected" | "private" +constructor-declarator ::= simple-type-name "(" formal-parameter-list? ")" +formal-parameter-list ::= formal-parameter | formal-parameter-list "," formal-parameter +formal-parameter ::= type variable-declarator-id +throws ::= "throws" class-type-list +class-type-list ::= class-type | class-type-list "," class-type +constructor-body ::= "{" explicit-constructor-invocation? block-statements? "}" +explicit-constructor-invocation ::= "this" "(" argument-list? ")" | "super" "(" argument-list? ")" +field-declaration ::= field-modifiers? type variable-declarators ";" +field-modifiers ::= field-modifier | field-modifiers field-modifier +field-modifier ::= "public" | "protected" | "private" | "static" | "final" | "transient" | "volatile" +variable-declarators ::= variable-declarator | variable-declarators "," variable-declarator +variable-declarator ::= variable-declarator-id | variable-declarator-id "=" variable-initializer +variable-declarator-id ::= identifier | variable-declarator-id "[]" +variable-initializer ::= expression | array-initializer +method-declaration ::= method-header method-body +method-header ::= method-modifiers? result-type method-declarator throws? +result-type ::= type | "void" +method-modifiers ::= method-modifier | method-modifiers method-modifier +method-modifier ::= "public" | "protected" | "private" | "static" | "abstract" | "final" | "synchronized" | "native" +method-declarator ::= identifier "(" formal-parameter-list? ")" +method-body ::= block | ";" +interface-declaration ::= interface-modifiers? "interface" identifier extends-interfaces? interface-body +interface-modifiers ::= interface-modifier | interface-modifiers interface-modifier +interface-modifier ::= "public" | "abstract" +extends-interfaces ::= "extends" interface-type | extends-interfaces "," interface-type +interface-body ::= "{" interface-member-declarations? "}" +interface-member-declarations ::= interface-member-declaration | interface-member-declarations interface-member-declaration +interface-member-declaration ::= constant-declaration | abstract-method-declaration +constant-declaration ::= constant-modifiers type variable-declarator +constant-modifiers ::= "public" | "static" | "final" +abstract-method-declaration::= abstract-method-modifiers? result-type method-declarator throws? ";" +abstract-method-modifiers ::= abstract-method-modifier | abstract-method-modifiers abstract-method-modifier +abstract-method-modifier ::= "public" | "abstract" +array-initializer ::= "{" variable-initializers? "," ? "}" +variable-initializers ::= variable-initializer | variable-initializers "," variable-initializer +variable-initializer ::= expression | array-initializer + +# Types + +type ::= primitive-type | reference-type +primitive-type ::= numeric-type | "boolean" +numeric-type ::= integral-type | floating-point-type +integral-type ::= "byte" | "short" | "int" | "long" | "char" +floating-point-type ::= "float" | "double" +reference-type ::= class-or-interface-type | array-type +class-or-interface-type ::= class-type | interface-type +class-type ::= type-name +interface-type ::= type-name +array-type ::= type "[]" + +# Blocks and Commands + +block ::= "{" block-statements? "}" +block-statements ::= block-statement | block-statements block-statement +block-statement ::= local-variable-declaration-statement | statement +local-variable-declaration-statement ::= local-variable-declaration ";" +local-variable-declaration ::= type variable-declarators +statement ::= statement-without-trailing-substatement | labeled-statement | if-then-statement | if-then-else-statement | while-statement | for-statement +statement-no-short-if ::= statement-without-trailing-substatement | labeled-statement-no-short-if | if-then-else-statement-no-short-if | while-statement-no-short-if | for-statement-no-short-if +statement-without-trailing-substatement ::= block | empty-statement | expression-statement | switch-statement | do-statement | break-statement | continue-statement | return-statement | synchronized-statement | throws-statement | try-statement +empty-statement ::= ";" +labeled-statement ::= identifier ":" statement +labeled-statement-no-short-if ::= identifier ":" statement-no-short-if +expression-statement ::= statement-expression ";" +statement-expression ::= assignment | preincrement-expression | postincrement-expression | predecrement-expression | postdecrement-expression | method-invocation | class-instance-creation-expression +if-then-statement::= "if" "(" expression ")" statement +if-then-else-statement::= "if" "(" expression ")" statement-no-short-if "else" statement +if-then-else-statement-no-short-if ::= "if" "(" expression ")" statement-no-short-if "else" statement-no-short-if +switch-statement ::= "switch" "(" expression ")" switch-block +switch-block ::= "{" switch-block-statement-groups? switch-labels? "}" +switch-block-statement-groups ::= switch-block-statement-group | switch-block-statement-groups switch-block-statement-group +switch-block-statement-group ::= switch-labels block-statements +switch-labels ::= switch-label | switch-labels switch-label +switch-label ::= "case" constant-expression ":" | "default" ":" +while-statement ::= "while" "(" expression ")" statement +while-statement-no-short-if ::= "while" "(" expression ")" statement-no-short-if +do-statement ::= "do" statement "while" "(" expression ")" ";" +for-statement ::= "for" "(" for-init? ";" expression? ";" for-update? ")" statement +for-statement-no-short-if ::= "for" "(" for-init? ";" expression? ";" for-update? ")" statement-no-short-if +for-init ::= statement-expression-list | local-variable-declaration +for-update ::= statement-expression-list +statement-expression-list ::= statement-expression | statement-expression-list "," statement-expression +break-statement ::= "break" identifier? ";" +continue-statement ::= "continue" identifier? ";" +return-statement ::= "return" expression? ";" +throws-statement ::= "throw" expression ";" +synchronized-statement ::= "synchronized" "(" expression ")" block +try-statement ::= "try" block catches | "try" block catches? finally +catches ::= catch-clause | catches catch-clause +catch-clause ::= "catch" "(" formal-parameter ")" block +finally ::= "finally" block +constant-expression ::= expression + +# Expressions + +expression ::= assignment-expression +assignment-expression ::= conditional-expression | assignment +assignment ::= left-hand-side assignment-operator assignment-expression +left-hand-side ::= expression-name | field-access | array-access +assignment-operator ::= "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<=-" | "->=" | ">>>=" | "&=" | "^=" | "|=" +conditional-expression ::= conditional-or-expression | conditional-or-expression "?" expression ":" conditional-expression +conditional-or-expression ::= conditional-and-expression | conditional-or-expression || conditional-and-expression +conditional-and-expression ::= inclusive-or-expression | conditional-and-expression "&&" inclusive-or-expression +inclusive-or-expression ::= exclusive-or-expression | inclusive-or-expression | exclusive-or-expression +exclusive-or-expression ::= and-expression | exclusive-or-expression "^" and-expression +and-expression ::= equality-expression | and-expression "&" equality-expression +equality-expression ::= relational-expression | equality-expression "==" relational-expression | equality-expression "!=" relational-expression +relational-expression ::= shift-expression | relational-expression "<" shift-expression | relational-expression ">" shift-expression | relational-expression "<=" shift-expression | relational-expression ">=" shift-expression | relational-expression "instanceof" reference-type +shift-expression ::= additive-expression | shift-expression "<<" additive-expression | shift-expression ">>" additive-expression | shift-expression ">>>" additive-expression +additive-expression ::= multiplicative-expression | additive-expression "+" multiplicative-expression | additive-expression "-" multiplicative-expression +multiplicative-expression ::= unary-expression | multiplicative-expression "*" unary-expression | multiplicative-expression "/" unary-expression | multiplicative-expression "%" unary-expression +cast-expression ::= "(" primitive-type ")" unary-expression | "(" reference-type ")" unary-expression-not-plus-minus +unary-expression ::= preincrement-expression | predecrement-expression | "+" unary-expression | "-" unary-expression | unary-expression-not-plus-minus +predecrement-expression ::= "--" unary-expression +preincrement-expression ::= "++" unary-expression +unary-expression-not-plus-minus ::= postfix-expression | "~" unary-expression | "!" unary-expression | cast-expression +postdecrement-expression ::= postfix-expression "--" +postincrement-expression ::= postfix-expression "++" +postfix-expression ::= primary | expression-name | postincrement-expression | postdecrement-expression +method-invocation ::= method-name "(" argument-list? ")" | primary "." identifier "(" argument-list? ")" | "super" "." identifier "(" argument-list? ")" +field-access ::= primary "." identifier | "super" "." identifier +primary ::= primary-no-new-array | array-creation-expression +primary-no-new-array ::= literal | "this" | "(" expression ")" | class-instance-creation-expression | field-access | method-invocation | array-access +class-instance-creation-expression ::= "new" class-type "(" argument-list? ")" +argument-list ::= expression | argument-list "," expression +array-creation-expression ::= "new" primitive-type dim-exprs dims? | "new" class-or-interface-type dim-exprs dims? +dim-exprs ::= dim-expr | dim-exprs dim-expr +dim-expr ::= "[" expression "]" +dims ::= "[]" | dims "[]" +array-access ::= expression-name "[" expression "]" | primary-no-new-array "[" expression "]" + +# Tokens + +package-name ::= identifier | package-name "." identifier +type-name ::= identifier | package-name "." identifier +simple-type-name ::= identifier +expression-name ::= identifier | ambiguous-name "." identifier +method-name ::= identifier | ambiguous-name "." identifier +ambiguous-name::= identifier | ambiguous-name "." identifier +# literal ::= integer-literal | floating-point-literal | boolean-literal | character-literal | string-literal | null-literal +literal ::= integer-literal | floating-point-literal | boolean-literal | character-literal | null-literal +integer-literal ::= decimal-integer-literal | hex-integer-literal | octal-integer-literal +decimal-integer-literal ::= decimal-numeral integer-type-suffix? +hex-integer-literal ::= hex-numeral integer-type-suffix? +octal-integer-literal ::= octal-numeral integer-type-suffix? +integer-type-suffix ::= "l" | "L" +decimal-numeral ::= "0" | non-zero-digit digits? +digits ::= digit | digits digit +digit ::= "0" | non-zero-digit +non-zero-digit ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" +hex-numeral ::= "0x" hex-digit | "0X" hex-digit | hex-numeral hex-digit +hex-digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" | "F" +octal-numeral ::= "0" octal-digit | octal-numeral octal-digit +octal-digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" +floating-point-literal ::= digits "." digits? exponent-part? float-type-suffix? +digits ::= exponent-part? float-type-suffix? +exponent-part ::= exponent-indicator signed-integer +exponent-indicator ::= "e" | "E" +signed-integer ::= sign? digits +sign ::= "+" | "-" +float-type-suffix ::= "f" | "F" | "d" | "D" +boolean-literal ::= "true" | "false" +# character-literal ::= "'" single-character "'" | "'" escape-sequence "'" +character-literal ::= "'" single-character "'" +single-character ::= [^'\] +string-literal ::= "\"" string-characters? "\"" +string-characters ::= string-character | string-characters string-character +# string-character ::= [^\"\\] | escape-character +string-character ::= [^\"\\] +null-literal ::= "null" +keyword ::= "abstract" | "boolean" | "break" | "byte" | "case" | "catch" | "char" | "class" | "const" | "continue" | "default" | "do" | "double" | "else" | "extends" | "final" | "finally" | "float" | "for" | "goto" | "if" | "implements" | "import" | "instanceof" | "int" | "interface" | "long" | "native" | "new" | "package" | "private" | "protected" | "public" | "return" | "short" | "static" | "super" | "switch" | "synchronized" | "this" | "throw" | "throws" | "transient" | "try" | "void" | "volatile" | "while" + +# The syntax category consists of strings that must start with a letter - including underscore (_) and +# dollar sign ($) - followed by any number of letters and digits. +# Characters of numerous international languages are recognized as "letters" in Java. +# A Java letter is a character for which the method Character.isJavaLetter returns true. +# A Java letter-or-digit is a character for which the method Character.isJaveLetterOrDigit returns true. +# Also, includes none of the keywords given above - these are reserved words in Java. +# The simplistic definition here is not complete. +identifier ::= [A-Za-z_$] [A-Za-z_$0-9]* diff --git a/src/test/resources/python.gbnf b/src/test/resources/python.gbnf new file mode 100644 index 00000000..227f3956 --- /dev/null +++ b/src/test/resources/python.gbnf @@ -0,0 +1,859 @@ +# PEG grammar for Python +# https://docs.python.org/3/reference/grammar.html (04.09.2023) + +# ========================= START OF THE GRAMMAR ========================= + +# General grammatical elements and rules: +# +# * Strings with double quotes (") denote SOFT KEYWORDS +# * Strings with single quotes (') denote KEYWORDS +# * Upper case names (NAME) denote tokens in the Grammar/Tokens file +# * Rule names starting with "invalid_" are used for specialized syntax errors +# - These rules are NOT used in the first pass of the parser. +# - Only if the first pass fails to parse, a second pass including the invalid +# rules will be executed. +# - If the parser fails in the second phase with a generic syntax error, the +# location of the generic failure of the first pass will be used (this avoids +# reporting incorrect locations due to the invalid rules). +# - The order of the alternatives involving invalid rules matter +# (like any rule in PEG). +# +# Grammar Syntax (see PEP 617 for more information): +# +# rule_name: expression +# Optionally, a type can be included right after the rule name, which +# specifies the return type of the C or Python function corresponding to the +# rule: +# rule_name[return_type]: expression +# If the return type is omitted, then a void * is returned in C and an Any in +# Python. +# e1 e2 +# Match e1, then match e2. +# e1 | e2 +# Match e1 or e2. +# The first alternative can also appear on the line after the rule name for +# formatting purposes. In that case, a | must be used before the first +# alternative, like so: +# rule_name[return_type]: +# | first_alt +# | second_alt +# ( e ) +# Match e (allows also to use other operators in the group like '(e)*') +# [ e ] or e? +# Optionally match e. +# e* +# Match zero or more occurrences of e. +# e+ +# Match one or more occurrences of e. +# s.e+ +# Match one or more occurrences of e, separated by s. The generated parse tree +# does not include the separator. This is otherwise identical to (e (s e)*). +# &e +# Succeed if e can be parsed, without consuming any input. +# !e +# Fail if e can be parsed, without consuming any input. +# ~ +# Commit to the current alternative, even if it fails to parse. +# + +# STARTING RULES +# ============== + +file: [statements] ENDMARKER +interactive: statement_newline +eval: expressions NEWLINE* ENDMARKER +func_type: '(' [type_expressions] ')' '->' expression NEWLINE* ENDMARKER +fstring: star_expressions + +# GENERAL STATEMENTS +# ================== + +statements: statement+ + +statement: compound_stmt | simple_stmts + +statement_newline: + | compound_stmt NEWLINE + | simple_stmts + | NEWLINE + | ENDMARKER + +simple_stmts: + | simple_stmt !';' NEWLINE # Not needed, there for speedup + | ';'.simple_stmt+ [';'] NEWLINE + +# NOTE: assignment MUST precede expression, else parsing a simple assignment +# will throw a SyntaxError. +simple_stmt: + | assignment + | star_expressions + | return_stmt + | import_stmt + | raise_stmt + | 'pass' + | del_stmt + | yield_stmt + | assert_stmt + | 'break' + | 'continue' + | global_stmt + | nonlocal_stmt + +compound_stmt: + | function_def + | if_stmt + | class_def + | with_stmt + | for_stmt + | try_stmt + | while_stmt + | match_stmt + +# SIMPLE STATEMENTS +# ================= + +# NOTE: annotated_rhs may start with 'yield'; yield_expr must start with 'yield' +assignment: + | NAME ':' expression ['=' annotated_rhs ] + | ('(' single_target ')' + | single_subscript_attribute_target) ':' expression ['=' annotated_rhs ] + | (star_targets '=' )+ (yield_expr | star_expressions) !'=' [TYPE_COMMENT] + | single_target augassign ~ (yield_expr | star_expressions) + +annotated_rhs: yield_expr | star_expressions + +augassign: + | '+=' + | '-=' + | '*=' + | '@=' + | '/=' + | '%=' + | '&=' + | '|=' + | '^=' + | '<<=' + | '>>=' + | '**=' + | '//=' + +return_stmt: + | 'return' [star_expressions] + +raise_stmt: + | 'raise' expression ['from' expression ] + | 'raise' + +global_stmt: 'global' ','.NAME+ + +nonlocal_stmt: 'nonlocal' ','.NAME+ + +del_stmt: + | 'del' del_targets &(';' | NEWLINE) + +yield_stmt: yield_expr + +assert_stmt: 'assert' expression [',' expression ] + +import_stmt: import_name | import_from + +# Import statements +# ----------------- + +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: + | 'from' ('.' | '...')* dotted_name 'import' import_from_targets + | 'from' ('.' | '...')+ 'import' import_from_targets +import_from_targets: + | '(' import_from_as_names [','] ')' + | import_from_as_names !',' + | '*' +import_from_as_names: + | ','.import_from_as_name+ +import_from_as_name: + | NAME ['as' NAME ] +dotted_as_names: + | ','.dotted_as_name+ +dotted_as_name: + | dotted_name ['as' NAME ] +dotted_name: + | dotted_name '.' NAME + | NAME + +# COMPOUND STATEMENTS +# =================== + +# Common elements +# --------------- + +block: + | NEWLINE INDENT statements DEDENT + | simple_stmts + +decorators: ('@' named_expression NEWLINE )+ + +# Class definitions +# ----------------- + +class_def: + | decorators class_def_raw + | class_def_raw + +class_def_raw: + | 'class' NAME ['(' [arguments] ')' ] ':' block + +# Function definitions +# -------------------- + +function_def: + | decorators function_def_raw + | function_def_raw + +function_def_raw: + | 'def' NAME '(' [params] ')' ['->' expression ] ':' [func_type_comment] block + | ASYNC 'def' NAME '(' [params] ')' ['->' expression ] ':' [func_type_comment] block + +# Function parameters +# ------------------- + +params: + | parameters + +parameters: + | slash_no_default param_no_default* param_with_default* [star_etc] + | slash_with_default param_with_default* [star_etc] + | param_no_default+ param_with_default* [star_etc] + | param_with_default+ [star_etc] + | star_etc + +# Some duplication here because we can't write (',' | &')'), +# which is because we don't support empty alternatives (yet). + +slash_no_default: + | param_no_default+ '/' ',' + | param_no_default+ '/' &')' +slash_with_default: + | param_no_default* param_with_default+ '/' ',' + | param_no_default* param_with_default+ '/' &')' + +star_etc: + | '*' param_no_default param_maybe_default* [kwds] + | '*' param_no_default_star_annotation param_maybe_default* [kwds] + | '*' ',' param_maybe_default+ [kwds] + | kwds + +kwds: + | '**' param_no_default + +# One parameter. This *includes* a following comma and type comment. +# +# There are three styles: +# - No default +# - With default +# - Maybe with default +# +# There are two alternative forms of each, to deal with type comments: +# - Ends in a comma followed by an optional type comment +# - No comma, optional type comment, must be followed by close paren +# The latter form is for a final parameter without trailing comma. +# + +param_no_default: + | param ',' TYPE_COMMENT? + | param TYPE_COMMENT? &')' +param_no_default_star_annotation: + | param_star_annotation ',' TYPE_COMMENT? + | param_star_annotation TYPE_COMMENT? &')' +param_with_default: + | param default ',' TYPE_COMMENT? + | param default TYPE_COMMENT? &')' +param_maybe_default: + | param default? ',' TYPE_COMMENT? + | param default? TYPE_COMMENT? &')' +param: NAME annotation? +param_star_annotation: NAME star_annotation +annotation: ':' expression +star_annotation: ':' star_expression +default: '=' expression | invalid_default + +# If statement +# ------------ + +if_stmt: + | 'if' named_expression ':' block elif_stmt + | 'if' named_expression ':' block [else_block] +elif_stmt: + | 'elif' named_expression ':' block elif_stmt + | 'elif' named_expression ':' block [else_block] +else_block: + | 'else' ':' block + +# While statement +# --------------- + +while_stmt: + | 'while' named_expression ':' block [else_block] + +# For statement +# ------------- + +for_stmt: + | 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block] + | ASYNC 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block] + +# With statement +# -------------- + +with_stmt: + | 'with' '(' ','.with_item+ ','? ')' ':' block + | 'with' ','.with_item+ ':' [TYPE_COMMENT] block + | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block + | ASYNC 'with' ','.with_item+ ':' [TYPE_COMMENT] block + +with_item: + | expression 'as' star_target &(',' | ')' | ':') + | expression + +# Try statement +# ------------- + +try_stmt: + | 'try' ':' block finally_block + | 'try' ':' block except_block+ [else_block] [finally_block] + | 'try' ':' block except_star_block+ [else_block] [finally_block] + + +# Except statement +# ---------------- + +except_block: + | 'except' expression ['as' NAME ] ':' block + | 'except' ':' block +except_star_block: + | 'except' '*' expression ['as' NAME ] ':' block +finally_block: + | 'finally' ':' block + +# Match statement +# --------------- + +match_stmt: + | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT + +subject_expr: + | star_named_expression ',' star_named_expressions? + | named_expression + +case_block: + | "case" patterns guard? ':' block + +guard: 'if' named_expression + +patterns: + | open_sequence_pattern + | pattern + +pattern: + | as_pattern + | or_pattern + +as_pattern: + | or_pattern 'as' pattern_capture_target + +or_pattern: + | '|'.closed_pattern+ + +closed_pattern: + | literal_pattern + | capture_pattern + | wildcard_pattern + | value_pattern + | group_pattern + | sequence_pattern + | mapping_pattern + | class_pattern + +# Literal patterns are used for equality and identity constraints +literal_pattern: + | signed_number !('+' | '-') + | complex_number + | strings + | 'None' + | 'True' + | 'False' + +# Literal expressions are used to restrict permitted mapping pattern keys +literal_expr: + | signed_number !('+' | '-') + | complex_number + | strings + | 'None' + | 'True' + | 'False' + +complex_number: + | signed_real_number '+' imaginary_number + | signed_real_number '-' imaginary_number + +signed_number: + | NUMBER + | '-' NUMBER + +signed_real_number: + | real_number + | '-' real_number + +real_number: + | NUMBER + +imaginary_number: + | NUMBER + +capture_pattern: + | pattern_capture_target + +pattern_capture_target: + | !"_" NAME !('.' | '(' | '=') + +wildcard_pattern: + | "_" + +value_pattern: + | attr !('.' | '(' | '=') + +attr: + | name_or_attr '.' NAME + +name_or_attr: + | attr + | NAME + +group_pattern: + | '(' pattern ')' + +sequence_pattern: + | '[' maybe_sequence_pattern? ']' + | '(' open_sequence_pattern? ')' + +open_sequence_pattern: + | maybe_star_pattern ',' maybe_sequence_pattern? + +maybe_sequence_pattern: + | ','.maybe_star_pattern+ ','? + +maybe_star_pattern: + | star_pattern + | pattern + +star_pattern: + | '*' pattern_capture_target + | '*' wildcard_pattern + +mapping_pattern: + | '{' '}' + | '{' double_star_pattern ','? '}' + | '{' items_pattern ',' double_star_pattern ','? '}' + | '{' items_pattern ','? '}' + +items_pattern: + | ','.key_value_pattern+ + +key_value_pattern: + | (literal_expr | attr) ':' pattern + +double_star_pattern: + | '**' pattern_capture_target + +class_pattern: + | name_or_attr '(' ')' + | name_or_attr '(' positional_patterns ','? ')' + | name_or_attr '(' keyword_patterns ','? ')' + | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' + +positional_patterns: + | ','.pattern+ + +keyword_patterns: + | ','.keyword_pattern+ + +keyword_pattern: + | NAME '=' pattern + +# EXPRESSIONS +# ----------- + +expressions: + | expression (',' expression )+ [','] + | expression ',' + | expression + +expression: + | disjunction 'if' disjunction 'else' expression + | disjunction + | lambdef + +yield_expr: + | 'yield' 'from' expression + | 'yield' [star_expressions] + +star_expressions: + | star_expression (',' star_expression )+ [','] + | star_expression ',' + | star_expression + +star_expression: + | '*' bitwise_or + | expression + +star_named_expressions: ','.star_named_expression+ [','] + +star_named_expression: + | '*' bitwise_or + | named_expression + +assignment_expression: + | NAME ':=' ~ expression + +named_expression: + | assignment_expression + | expression !':=' + +disjunction: + | conjunction ('or' conjunction )+ + | conjunction + +conjunction: + | inversion ('and' inversion )+ + | inversion + +inversion: + | 'not' inversion + | comparison + +# Comparison operators +# -------------------- + +comparison: + | bitwise_or compare_op_bitwise_or_pair+ + | bitwise_or + +compare_op_bitwise_or_pair: + | eq_bitwise_or + | noteq_bitwise_or + | lte_bitwise_or + | lt_bitwise_or + | gte_bitwise_or + | gt_bitwise_or + | notin_bitwise_or + | in_bitwise_or + | isnot_bitwise_or + | is_bitwise_or + +eq_bitwise_or: '==' bitwise_or +noteq_bitwise_or: + | ('!=' ) bitwise_or +lte_bitwise_or: '<=' bitwise_or +lt_bitwise_or: '<' bitwise_or +gte_bitwise_or: '>=' bitwise_or +gt_bitwise_or: '>' bitwise_or +notin_bitwise_or: 'not' 'in' bitwise_or +in_bitwise_or: 'in' bitwise_or +isnot_bitwise_or: 'is' 'not' bitwise_or +is_bitwise_or: 'is' bitwise_or + +# Bitwise operators +# ----------------- + +bitwise_or: + | bitwise_or '|' bitwise_xor + | bitwise_xor + +bitwise_xor: + | bitwise_xor '^' bitwise_and + | bitwise_and + +bitwise_and: + | bitwise_and '&' shift_expr + | shift_expr + +shift_expr: + | shift_expr '<<' sum + | shift_expr '>>' sum + | sum + +# Arithmetic operators +# -------------------- + +sum: + | sum '+' term + | sum '-' term + | term + +term: + | term '*' factor + | term '/' factor + | term '//' factor + | term '%' factor + | term '@' factor + | factor + +factor: + | '+' factor + | '-' factor + | '~' factor + | power + +power: + | await_primary '**' factor + | await_primary + +# Primary elements +# ---------------- + +# Primary elements are things like "obj.something.something", "obj[something]", "obj(something)", "obj" ... + +await_primary: + | AWAIT primary + | primary + +primary: + | primary '.' NAME + | primary genexp + | primary '(' [arguments] ')' + | primary '[' slices ']' + | atom + +slices: + | slice !',' + | ','.(slice | starred_expression)+ [','] + +slice: + | [expression] ':' [expression] [':' [expression] ] + | named_expression + +atom: + | NAME + | 'True' + | 'False' + | 'None' + | strings + | NUMBER + | (tuple | group | genexp) + | (list | listcomp) + | (dict | set | dictcomp | setcomp) + | '...' + +group: + | '(' (yield_expr | named_expression) ')' + +# Lambda functions +# ---------------- + +lambdef: + | 'lambda' [lambda_params] ':' expression + +lambda_params: + | lambda_parameters + +# lambda_parameters etc. duplicates parameters but without annotations +# or type comments, and if there's no comma after a parameter, we expect +# a colon, not a close parenthesis. (For more, see parameters above.) +# +lambda_parameters: + | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* [lambda_star_etc] + | lambda_slash_with_default lambda_param_with_default* [lambda_star_etc] + | lambda_param_no_default+ lambda_param_with_default* [lambda_star_etc] + | lambda_param_with_default+ [lambda_star_etc] + | lambda_star_etc + +lambda_slash_no_default: + | lambda_param_no_default+ '/' ',' + | lambda_param_no_default+ '/' &':' + +lambda_slash_with_default: + | lambda_param_no_default* lambda_param_with_default+ '/' ',' + | lambda_param_no_default* lambda_param_with_default+ '/' &':' + +lambda_star_etc: + | '*' lambda_param_no_default lambda_param_maybe_default* [lambda_kwds] + | '*' ',' lambda_param_maybe_default+ [lambda_kwds] + | lambda_kwds + +lambda_kwds: + | '**' lambda_param_no_default + +lambda_param_no_default: + | lambda_param ',' + | lambda_param &':' +lambda_param_with_default: + | lambda_param default ',' + | lambda_param default &':' +lambda_param_maybe_default: + | lambda_param default? ',' + | lambda_param default? &':' +lambda_param: NAME + +# LITERALS +# ======== + +strings: STRING+ + +list: + | '[' [star_named_expressions] ']' + +tuple: + | '(' [star_named_expression ',' [star_named_expressions] ] ')' + +set: '{' star_named_expressions '}' + +# Dicts +# ----- + +dict: + | '{' [double_starred_kvpairs] '}' + +double_starred_kvpairs: ','.double_starred_kvpair+ [','] + +double_starred_kvpair: + | '**' bitwise_or + | kvpair + +kvpair: expression ':' expression + +# Comprehensions & Generators +# --------------------------- + +for_if_clauses: + | for_if_clause+ + +for_if_clause: + | ASYNC 'for' star_targets 'in' ~ disjunction ('if' disjunction )* + | 'for' star_targets 'in' ~ disjunction ('if' disjunction )* + +listcomp: + | '[' named_expression for_if_clauses ']' + +setcomp: + | '{' named_expression for_if_clauses '}' + +genexp: + | '(' ( assignment_expression | expression !':=') for_if_clauses ')' + +dictcomp: + | '{' kvpair for_if_clauses '}' + +# FUNCTION CALL ARGUMENTS +# ======================= + +arguments: + | args [','] &')' + +args: + | ','.(starred_expression | ( assignment_expression | expression !':=') !'=')+ [',' kwargs ] + | kwargs + +kwargs: + | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+ + | ','.kwarg_or_starred+ + | ','.kwarg_or_double_starred+ + +starred_expression: + | '*' expression + +kwarg_or_starred: + | NAME '=' expression + | starred_expression + +kwarg_or_double_starred: + | NAME '=' expression + | '**' expression + +# ASSIGNMENT TARGETS +# ================== + +# Generic targets +# --------------- + +# NOTE: star_targets may contain *bitwise_or, targets may not. +star_targets: + | star_target !',' + | star_target (',' star_target )* [','] + +star_targets_list_seq: ','.star_target+ [','] + +star_targets_tuple_seq: + | star_target (',' star_target )+ [','] + | star_target ',' + +star_target: + | '*' (!'*' star_target) + | target_with_star_atom + +target_with_star_atom: + | t_primary '.' NAME !t_lookahead + | t_primary '[' slices ']' !t_lookahead + | star_atom + +star_atom: + | NAME + | '(' target_with_star_atom ')' + | '(' [star_targets_tuple_seq] ')' + | '[' [star_targets_list_seq] ']' + +single_target: + | single_subscript_attribute_target + | NAME + | '(' single_target ')' + +single_subscript_attribute_target: + | t_primary '.' NAME !t_lookahead + | t_primary '[' slices ']' !t_lookahead + +t_primary: + | t_primary '.' NAME &t_lookahead + | t_primary '[' slices ']' &t_lookahead + | t_primary genexp &t_lookahead + | t_primary '(' [arguments] ')' &t_lookahead + | atom &t_lookahead + +t_lookahead: '(' | '[' | '.' + +# Targets for del statements +# -------------------------- + +del_targets: ','.del_target+ [','] + +del_target: + | t_primary '.' NAME !t_lookahead + | t_primary '[' slices ']' !t_lookahead + | del_t_atom + +del_t_atom: + | NAME + | '(' del_target ')' + | '(' [del_targets] ')' + | '[' [del_targets] ']' + +# TYPING ELEMENTS +# --------------- + +# type_expressions allow */** but ignore them +type_expressions: + | ','.expression+ ',' '*' expression ',' '**' expression + | ','.expression+ ',' '*' expression + | ','.expression+ ',' '**' expression + | '*' expression ',' '**' expression + | '*' expression + | '**' expression + | ','.expression+ + +func_type_comment: + | NEWLINE TYPE_COMMENT &(NEWLINE INDENT) # Must be followed by indented block + | TYPE_COMMENT + +# ========================= END OF THE GRAMMAR =========================== + + + +# ========================= START OF INVALID RULES ======================= From ad43610082dfcacba36142296b0565cbac8aac7d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 17 Sep 2023 14:39:06 +0200 Subject: [PATCH 002/384] Remove test files --- .gitignore | 1 + src/test/resources/java.gbnf | 209 -------- src/test/resources/python.gbnf | 859 --------------------------------- 3 files changed, 1 insertion(+), 1068 deletions(-) delete mode 100644 src/test/resources/java.gbnf delete mode 100644 src/test/resources/python.gbnf diff --git a/.gitignore b/.gitignore index abc1db70..26f75390 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ replay_pid* llama.h llama.cpp main.cpp +src/test/resources/*.gbnf diff --git a/src/test/resources/java.gbnf b/src/test/resources/java.gbnf deleted file mode 100644 index 75f86183..00000000 --- a/src/test/resources/java.gbnf +++ /dev/null @@ -1,209 +0,0 @@ -# Taken from https://cs.au.dk/~amoeller/RegAut/JavaBNF.html (02.09.2023) - -# Programs - -root ::= package-declaration? import-declarations? type-declarations? - -# Declarations - -package-declaration ::= "package" package-name ";" -import-declarations ::= import-declaration | import-declarations import-declaration -import-declaration ::= single-type-import-declaration | type-import-on-demand-declaration -single-type-import-declaration ::= "import" type-name ";" -type-import-on-demand-declaration ::= "import" package-name ".*;" -type-declarations ::= type-declaration | type-declarations type-declaration -type-declaration ::= class-declaration | interface-declaration | ";" -class-declaration ::= class-modifiers? "class" identifier super? interfaces? class-body -class-modifiers ::= class-modifier | class-modifiers class-modifier -class-modifier ::= "public" | "abstract" | "final" -super ::= "extends" class-type -interfaces ::= "implements" interface-type-list -interface-type-list ::= interface-type | interface-type-list "," interface-type -class-body ::= "{" class-body-declarations? "}" -class-body-declarations ::= class-body-declaration | class-body-declarations class-body-declaration -class-body-declaration ::= class-member-declaration | static-initializer | constructor-declaration -class-member-declaration ::= field-declaration | method-declaration -static-initializer ::= "static" block -constructor-declaration ::= constructor-modifiers? constructor-declarator throws? constructor-body -constructor-modifiers ::= constructor-modifier | constructor-modifiers constructor-modifier -constructor-modifier ::= "public" | "protected" | "private" -constructor-declarator ::= simple-type-name "(" formal-parameter-list? ")" -formal-parameter-list ::= formal-parameter | formal-parameter-list "," formal-parameter -formal-parameter ::= type variable-declarator-id -throws ::= "throws" class-type-list -class-type-list ::= class-type | class-type-list "," class-type -constructor-body ::= "{" explicit-constructor-invocation? block-statements? "}" -explicit-constructor-invocation ::= "this" "(" argument-list? ")" | "super" "(" argument-list? ")" -field-declaration ::= field-modifiers? type variable-declarators ";" -field-modifiers ::= field-modifier | field-modifiers field-modifier -field-modifier ::= "public" | "protected" | "private" | "static" | "final" | "transient" | "volatile" -variable-declarators ::= variable-declarator | variable-declarators "," variable-declarator -variable-declarator ::= variable-declarator-id | variable-declarator-id "=" variable-initializer -variable-declarator-id ::= identifier | variable-declarator-id "[]" -variable-initializer ::= expression | array-initializer -method-declaration ::= method-header method-body -method-header ::= method-modifiers? result-type method-declarator throws? -result-type ::= type | "void" -method-modifiers ::= method-modifier | method-modifiers method-modifier -method-modifier ::= "public" | "protected" | "private" | "static" | "abstract" | "final" | "synchronized" | "native" -method-declarator ::= identifier "(" formal-parameter-list? ")" -method-body ::= block | ";" -interface-declaration ::= interface-modifiers? "interface" identifier extends-interfaces? interface-body -interface-modifiers ::= interface-modifier | interface-modifiers interface-modifier -interface-modifier ::= "public" | "abstract" -extends-interfaces ::= "extends" interface-type | extends-interfaces "," interface-type -interface-body ::= "{" interface-member-declarations? "}" -interface-member-declarations ::= interface-member-declaration | interface-member-declarations interface-member-declaration -interface-member-declaration ::= constant-declaration | abstract-method-declaration -constant-declaration ::= constant-modifiers type variable-declarator -constant-modifiers ::= "public" | "static" | "final" -abstract-method-declaration::= abstract-method-modifiers? result-type method-declarator throws? ";" -abstract-method-modifiers ::= abstract-method-modifier | abstract-method-modifiers abstract-method-modifier -abstract-method-modifier ::= "public" | "abstract" -array-initializer ::= "{" variable-initializers? "," ? "}" -variable-initializers ::= variable-initializer | variable-initializers "," variable-initializer -variable-initializer ::= expression | array-initializer - -# Types - -type ::= primitive-type | reference-type -primitive-type ::= numeric-type | "boolean" -numeric-type ::= integral-type | floating-point-type -integral-type ::= "byte" | "short" | "int" | "long" | "char" -floating-point-type ::= "float" | "double" -reference-type ::= class-or-interface-type | array-type -class-or-interface-type ::= class-type | interface-type -class-type ::= type-name -interface-type ::= type-name -array-type ::= type "[]" - -# Blocks and Commands - -block ::= "{" block-statements? "}" -block-statements ::= block-statement | block-statements block-statement -block-statement ::= local-variable-declaration-statement | statement -local-variable-declaration-statement ::= local-variable-declaration ";" -local-variable-declaration ::= type variable-declarators -statement ::= statement-without-trailing-substatement | labeled-statement | if-then-statement | if-then-else-statement | while-statement | for-statement -statement-no-short-if ::= statement-without-trailing-substatement | labeled-statement-no-short-if | if-then-else-statement-no-short-if | while-statement-no-short-if | for-statement-no-short-if -statement-without-trailing-substatement ::= block | empty-statement | expression-statement | switch-statement | do-statement | break-statement | continue-statement | return-statement | synchronized-statement | throws-statement | try-statement -empty-statement ::= ";" -labeled-statement ::= identifier ":" statement -labeled-statement-no-short-if ::= identifier ":" statement-no-short-if -expression-statement ::= statement-expression ";" -statement-expression ::= assignment | preincrement-expression | postincrement-expression | predecrement-expression | postdecrement-expression | method-invocation | class-instance-creation-expression -if-then-statement::= "if" "(" expression ")" statement -if-then-else-statement::= "if" "(" expression ")" statement-no-short-if "else" statement -if-then-else-statement-no-short-if ::= "if" "(" expression ")" statement-no-short-if "else" statement-no-short-if -switch-statement ::= "switch" "(" expression ")" switch-block -switch-block ::= "{" switch-block-statement-groups? switch-labels? "}" -switch-block-statement-groups ::= switch-block-statement-group | switch-block-statement-groups switch-block-statement-group -switch-block-statement-group ::= switch-labels block-statements -switch-labels ::= switch-label | switch-labels switch-label -switch-label ::= "case" constant-expression ":" | "default" ":" -while-statement ::= "while" "(" expression ")" statement -while-statement-no-short-if ::= "while" "(" expression ")" statement-no-short-if -do-statement ::= "do" statement "while" "(" expression ")" ";" -for-statement ::= "for" "(" for-init? ";" expression? ";" for-update? ")" statement -for-statement-no-short-if ::= "for" "(" for-init? ";" expression? ";" for-update? ")" statement-no-short-if -for-init ::= statement-expression-list | local-variable-declaration -for-update ::= statement-expression-list -statement-expression-list ::= statement-expression | statement-expression-list "," statement-expression -break-statement ::= "break" identifier? ";" -continue-statement ::= "continue" identifier? ";" -return-statement ::= "return" expression? ";" -throws-statement ::= "throw" expression ";" -synchronized-statement ::= "synchronized" "(" expression ")" block -try-statement ::= "try" block catches | "try" block catches? finally -catches ::= catch-clause | catches catch-clause -catch-clause ::= "catch" "(" formal-parameter ")" block -finally ::= "finally" block -constant-expression ::= expression - -# Expressions - -expression ::= assignment-expression -assignment-expression ::= conditional-expression | assignment -assignment ::= left-hand-side assignment-operator assignment-expression -left-hand-side ::= expression-name | field-access | array-access -assignment-operator ::= "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<=-" | "->=" | ">>>=" | "&=" | "^=" | "|=" -conditional-expression ::= conditional-or-expression | conditional-or-expression "?" expression ":" conditional-expression -conditional-or-expression ::= conditional-and-expression | conditional-or-expression || conditional-and-expression -conditional-and-expression ::= inclusive-or-expression | conditional-and-expression "&&" inclusive-or-expression -inclusive-or-expression ::= exclusive-or-expression | inclusive-or-expression | exclusive-or-expression -exclusive-or-expression ::= and-expression | exclusive-or-expression "^" and-expression -and-expression ::= equality-expression | and-expression "&" equality-expression -equality-expression ::= relational-expression | equality-expression "==" relational-expression | equality-expression "!=" relational-expression -relational-expression ::= shift-expression | relational-expression "<" shift-expression | relational-expression ">" shift-expression | relational-expression "<=" shift-expression | relational-expression ">=" shift-expression | relational-expression "instanceof" reference-type -shift-expression ::= additive-expression | shift-expression "<<" additive-expression | shift-expression ">>" additive-expression | shift-expression ">>>" additive-expression -additive-expression ::= multiplicative-expression | additive-expression "+" multiplicative-expression | additive-expression "-" multiplicative-expression -multiplicative-expression ::= unary-expression | multiplicative-expression "*" unary-expression | multiplicative-expression "/" unary-expression | multiplicative-expression "%" unary-expression -cast-expression ::= "(" primitive-type ")" unary-expression | "(" reference-type ")" unary-expression-not-plus-minus -unary-expression ::= preincrement-expression | predecrement-expression | "+" unary-expression | "-" unary-expression | unary-expression-not-plus-minus -predecrement-expression ::= "--" unary-expression -preincrement-expression ::= "++" unary-expression -unary-expression-not-plus-minus ::= postfix-expression | "~" unary-expression | "!" unary-expression | cast-expression -postdecrement-expression ::= postfix-expression "--" -postincrement-expression ::= postfix-expression "++" -postfix-expression ::= primary | expression-name | postincrement-expression | postdecrement-expression -method-invocation ::= method-name "(" argument-list? ")" | primary "." identifier "(" argument-list? ")" | "super" "." identifier "(" argument-list? ")" -field-access ::= primary "." identifier | "super" "." identifier -primary ::= primary-no-new-array | array-creation-expression -primary-no-new-array ::= literal | "this" | "(" expression ")" | class-instance-creation-expression | field-access | method-invocation | array-access -class-instance-creation-expression ::= "new" class-type "(" argument-list? ")" -argument-list ::= expression | argument-list "," expression -array-creation-expression ::= "new" primitive-type dim-exprs dims? | "new" class-or-interface-type dim-exprs dims? -dim-exprs ::= dim-expr | dim-exprs dim-expr -dim-expr ::= "[" expression "]" -dims ::= "[]" | dims "[]" -array-access ::= expression-name "[" expression "]" | primary-no-new-array "[" expression "]" - -# Tokens - -package-name ::= identifier | package-name "." identifier -type-name ::= identifier | package-name "." identifier -simple-type-name ::= identifier -expression-name ::= identifier | ambiguous-name "." identifier -method-name ::= identifier | ambiguous-name "." identifier -ambiguous-name::= identifier | ambiguous-name "." identifier -# literal ::= integer-literal | floating-point-literal | boolean-literal | character-literal | string-literal | null-literal -literal ::= integer-literal | floating-point-literal | boolean-literal | character-literal | null-literal -integer-literal ::= decimal-integer-literal | hex-integer-literal | octal-integer-literal -decimal-integer-literal ::= decimal-numeral integer-type-suffix? -hex-integer-literal ::= hex-numeral integer-type-suffix? -octal-integer-literal ::= octal-numeral integer-type-suffix? -integer-type-suffix ::= "l" | "L" -decimal-numeral ::= "0" | non-zero-digit digits? -digits ::= digit | digits digit -digit ::= "0" | non-zero-digit -non-zero-digit ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" -hex-numeral ::= "0x" hex-digit | "0X" hex-digit | hex-numeral hex-digit -hex-digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" | "F" -octal-numeral ::= "0" octal-digit | octal-numeral octal-digit -octal-digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" -floating-point-literal ::= digits "." digits? exponent-part? float-type-suffix? -digits ::= exponent-part? float-type-suffix? -exponent-part ::= exponent-indicator signed-integer -exponent-indicator ::= "e" | "E" -signed-integer ::= sign? digits -sign ::= "+" | "-" -float-type-suffix ::= "f" | "F" | "d" | "D" -boolean-literal ::= "true" | "false" -# character-literal ::= "'" single-character "'" | "'" escape-sequence "'" -character-literal ::= "'" single-character "'" -single-character ::= [^'\] -string-literal ::= "\"" string-characters? "\"" -string-characters ::= string-character | string-characters string-character -# string-character ::= [^\"\\] | escape-character -string-character ::= [^\"\\] -null-literal ::= "null" -keyword ::= "abstract" | "boolean" | "break" | "byte" | "case" | "catch" | "char" | "class" | "const" | "continue" | "default" | "do" | "double" | "else" | "extends" | "final" | "finally" | "float" | "for" | "goto" | "if" | "implements" | "import" | "instanceof" | "int" | "interface" | "long" | "native" | "new" | "package" | "private" | "protected" | "public" | "return" | "short" | "static" | "super" | "switch" | "synchronized" | "this" | "throw" | "throws" | "transient" | "try" | "void" | "volatile" | "while" - -# The syntax category consists of strings that must start with a letter - including underscore (_) and -# dollar sign ($) - followed by any number of letters and digits. -# Characters of numerous international languages are recognized as "letters" in Java. -# A Java letter is a character for which the method Character.isJavaLetter returns true. -# A Java letter-or-digit is a character for which the method Character.isJaveLetterOrDigit returns true. -# Also, includes none of the keywords given above - these are reserved words in Java. -# The simplistic definition here is not complete. -identifier ::= [A-Za-z_$] [A-Za-z_$0-9]* diff --git a/src/test/resources/python.gbnf b/src/test/resources/python.gbnf deleted file mode 100644 index 227f3956..00000000 --- a/src/test/resources/python.gbnf +++ /dev/null @@ -1,859 +0,0 @@ -# PEG grammar for Python -# https://docs.python.org/3/reference/grammar.html (04.09.2023) - -# ========================= START OF THE GRAMMAR ========================= - -# General grammatical elements and rules: -# -# * Strings with double quotes (") denote SOFT KEYWORDS -# * Strings with single quotes (') denote KEYWORDS -# * Upper case names (NAME) denote tokens in the Grammar/Tokens file -# * Rule names starting with "invalid_" are used for specialized syntax errors -# - These rules are NOT used in the first pass of the parser. -# - Only if the first pass fails to parse, a second pass including the invalid -# rules will be executed. -# - If the parser fails in the second phase with a generic syntax error, the -# location of the generic failure of the first pass will be used (this avoids -# reporting incorrect locations due to the invalid rules). -# - The order of the alternatives involving invalid rules matter -# (like any rule in PEG). -# -# Grammar Syntax (see PEP 617 for more information): -# -# rule_name: expression -# Optionally, a type can be included right after the rule name, which -# specifies the return type of the C or Python function corresponding to the -# rule: -# rule_name[return_type]: expression -# If the return type is omitted, then a void * is returned in C and an Any in -# Python. -# e1 e2 -# Match e1, then match e2. -# e1 | e2 -# Match e1 or e2. -# The first alternative can also appear on the line after the rule name for -# formatting purposes. In that case, a | must be used before the first -# alternative, like so: -# rule_name[return_type]: -# | first_alt -# | second_alt -# ( e ) -# Match e (allows also to use other operators in the group like '(e)*') -# [ e ] or e? -# Optionally match e. -# e* -# Match zero or more occurrences of e. -# e+ -# Match one or more occurrences of e. -# s.e+ -# Match one or more occurrences of e, separated by s. The generated parse tree -# does not include the separator. This is otherwise identical to (e (s e)*). -# &e -# Succeed if e can be parsed, without consuming any input. -# !e -# Fail if e can be parsed, without consuming any input. -# ~ -# Commit to the current alternative, even if it fails to parse. -# - -# STARTING RULES -# ============== - -file: [statements] ENDMARKER -interactive: statement_newline -eval: expressions NEWLINE* ENDMARKER -func_type: '(' [type_expressions] ')' '->' expression NEWLINE* ENDMARKER -fstring: star_expressions - -# GENERAL STATEMENTS -# ================== - -statements: statement+ - -statement: compound_stmt | simple_stmts - -statement_newline: - | compound_stmt NEWLINE - | simple_stmts - | NEWLINE - | ENDMARKER - -simple_stmts: - | simple_stmt !';' NEWLINE # Not needed, there for speedup - | ';'.simple_stmt+ [';'] NEWLINE - -# NOTE: assignment MUST precede expression, else parsing a simple assignment -# will throw a SyntaxError. -simple_stmt: - | assignment - | star_expressions - | return_stmt - | import_stmt - | raise_stmt - | 'pass' - | del_stmt - | yield_stmt - | assert_stmt - | 'break' - | 'continue' - | global_stmt - | nonlocal_stmt - -compound_stmt: - | function_def - | if_stmt - | class_def - | with_stmt - | for_stmt - | try_stmt - | while_stmt - | match_stmt - -# SIMPLE STATEMENTS -# ================= - -# NOTE: annotated_rhs may start with 'yield'; yield_expr must start with 'yield' -assignment: - | NAME ':' expression ['=' annotated_rhs ] - | ('(' single_target ')' - | single_subscript_attribute_target) ':' expression ['=' annotated_rhs ] - | (star_targets '=' )+ (yield_expr | star_expressions) !'=' [TYPE_COMMENT] - | single_target augassign ~ (yield_expr | star_expressions) - -annotated_rhs: yield_expr | star_expressions - -augassign: - | '+=' - | '-=' - | '*=' - | '@=' - | '/=' - | '%=' - | '&=' - | '|=' - | '^=' - | '<<=' - | '>>=' - | '**=' - | '//=' - -return_stmt: - | 'return' [star_expressions] - -raise_stmt: - | 'raise' expression ['from' expression ] - | 'raise' - -global_stmt: 'global' ','.NAME+ - -nonlocal_stmt: 'nonlocal' ','.NAME+ - -del_stmt: - | 'del' del_targets &(';' | NEWLINE) - -yield_stmt: yield_expr - -assert_stmt: 'assert' expression [',' expression ] - -import_stmt: import_name | import_from - -# Import statements -# ----------------- - -import_name: 'import' dotted_as_names -# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS -import_from: - | 'from' ('.' | '...')* dotted_name 'import' import_from_targets - | 'from' ('.' | '...')+ 'import' import_from_targets -import_from_targets: - | '(' import_from_as_names [','] ')' - | import_from_as_names !',' - | '*' -import_from_as_names: - | ','.import_from_as_name+ -import_from_as_name: - | NAME ['as' NAME ] -dotted_as_names: - | ','.dotted_as_name+ -dotted_as_name: - | dotted_name ['as' NAME ] -dotted_name: - | dotted_name '.' NAME - | NAME - -# COMPOUND STATEMENTS -# =================== - -# Common elements -# --------------- - -block: - | NEWLINE INDENT statements DEDENT - | simple_stmts - -decorators: ('@' named_expression NEWLINE )+ - -# Class definitions -# ----------------- - -class_def: - | decorators class_def_raw - | class_def_raw - -class_def_raw: - | 'class' NAME ['(' [arguments] ')' ] ':' block - -# Function definitions -# -------------------- - -function_def: - | decorators function_def_raw - | function_def_raw - -function_def_raw: - | 'def' NAME '(' [params] ')' ['->' expression ] ':' [func_type_comment] block - | ASYNC 'def' NAME '(' [params] ')' ['->' expression ] ':' [func_type_comment] block - -# Function parameters -# ------------------- - -params: - | parameters - -parameters: - | slash_no_default param_no_default* param_with_default* [star_etc] - | slash_with_default param_with_default* [star_etc] - | param_no_default+ param_with_default* [star_etc] - | param_with_default+ [star_etc] - | star_etc - -# Some duplication here because we can't write (',' | &')'), -# which is because we don't support empty alternatives (yet). - -slash_no_default: - | param_no_default+ '/' ',' - | param_no_default+ '/' &')' -slash_with_default: - | param_no_default* param_with_default+ '/' ',' - | param_no_default* param_with_default+ '/' &')' - -star_etc: - | '*' param_no_default param_maybe_default* [kwds] - | '*' param_no_default_star_annotation param_maybe_default* [kwds] - | '*' ',' param_maybe_default+ [kwds] - | kwds - -kwds: - | '**' param_no_default - -# One parameter. This *includes* a following comma and type comment. -# -# There are three styles: -# - No default -# - With default -# - Maybe with default -# -# There are two alternative forms of each, to deal with type comments: -# - Ends in a comma followed by an optional type comment -# - No comma, optional type comment, must be followed by close paren -# The latter form is for a final parameter without trailing comma. -# - -param_no_default: - | param ',' TYPE_COMMENT? - | param TYPE_COMMENT? &')' -param_no_default_star_annotation: - | param_star_annotation ',' TYPE_COMMENT? - | param_star_annotation TYPE_COMMENT? &')' -param_with_default: - | param default ',' TYPE_COMMENT? - | param default TYPE_COMMENT? &')' -param_maybe_default: - | param default? ',' TYPE_COMMENT? - | param default? TYPE_COMMENT? &')' -param: NAME annotation? -param_star_annotation: NAME star_annotation -annotation: ':' expression -star_annotation: ':' star_expression -default: '=' expression | invalid_default - -# If statement -# ------------ - -if_stmt: - | 'if' named_expression ':' block elif_stmt - | 'if' named_expression ':' block [else_block] -elif_stmt: - | 'elif' named_expression ':' block elif_stmt - | 'elif' named_expression ':' block [else_block] -else_block: - | 'else' ':' block - -# While statement -# --------------- - -while_stmt: - | 'while' named_expression ':' block [else_block] - -# For statement -# ------------- - -for_stmt: - | 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block] - | ASYNC 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block] - -# With statement -# -------------- - -with_stmt: - | 'with' '(' ','.with_item+ ','? ')' ':' block - | 'with' ','.with_item+ ':' [TYPE_COMMENT] block - | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block - | ASYNC 'with' ','.with_item+ ':' [TYPE_COMMENT] block - -with_item: - | expression 'as' star_target &(',' | ')' | ':') - | expression - -# Try statement -# ------------- - -try_stmt: - | 'try' ':' block finally_block - | 'try' ':' block except_block+ [else_block] [finally_block] - | 'try' ':' block except_star_block+ [else_block] [finally_block] - - -# Except statement -# ---------------- - -except_block: - | 'except' expression ['as' NAME ] ':' block - | 'except' ':' block -except_star_block: - | 'except' '*' expression ['as' NAME ] ':' block -finally_block: - | 'finally' ':' block - -# Match statement -# --------------- - -match_stmt: - | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT - -subject_expr: - | star_named_expression ',' star_named_expressions? - | named_expression - -case_block: - | "case" patterns guard? ':' block - -guard: 'if' named_expression - -patterns: - | open_sequence_pattern - | pattern - -pattern: - | as_pattern - | or_pattern - -as_pattern: - | or_pattern 'as' pattern_capture_target - -or_pattern: - | '|'.closed_pattern+ - -closed_pattern: - | literal_pattern - | capture_pattern - | wildcard_pattern - | value_pattern - | group_pattern - | sequence_pattern - | mapping_pattern - | class_pattern - -# Literal patterns are used for equality and identity constraints -literal_pattern: - | signed_number !('+' | '-') - | complex_number - | strings - | 'None' - | 'True' - | 'False' - -# Literal expressions are used to restrict permitted mapping pattern keys -literal_expr: - | signed_number !('+' | '-') - | complex_number - | strings - | 'None' - | 'True' - | 'False' - -complex_number: - | signed_real_number '+' imaginary_number - | signed_real_number '-' imaginary_number - -signed_number: - | NUMBER - | '-' NUMBER - -signed_real_number: - | real_number - | '-' real_number - -real_number: - | NUMBER - -imaginary_number: - | NUMBER - -capture_pattern: - | pattern_capture_target - -pattern_capture_target: - | !"_" NAME !('.' | '(' | '=') - -wildcard_pattern: - | "_" - -value_pattern: - | attr !('.' | '(' | '=') - -attr: - | name_or_attr '.' NAME - -name_or_attr: - | attr - | NAME - -group_pattern: - | '(' pattern ')' - -sequence_pattern: - | '[' maybe_sequence_pattern? ']' - | '(' open_sequence_pattern? ')' - -open_sequence_pattern: - | maybe_star_pattern ',' maybe_sequence_pattern? - -maybe_sequence_pattern: - | ','.maybe_star_pattern+ ','? - -maybe_star_pattern: - | star_pattern - | pattern - -star_pattern: - | '*' pattern_capture_target - | '*' wildcard_pattern - -mapping_pattern: - | '{' '}' - | '{' double_star_pattern ','? '}' - | '{' items_pattern ',' double_star_pattern ','? '}' - | '{' items_pattern ','? '}' - -items_pattern: - | ','.key_value_pattern+ - -key_value_pattern: - | (literal_expr | attr) ':' pattern - -double_star_pattern: - | '**' pattern_capture_target - -class_pattern: - | name_or_attr '(' ')' - | name_or_attr '(' positional_patterns ','? ')' - | name_or_attr '(' keyword_patterns ','? ')' - | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')' - -positional_patterns: - | ','.pattern+ - -keyword_patterns: - | ','.keyword_pattern+ - -keyword_pattern: - | NAME '=' pattern - -# EXPRESSIONS -# ----------- - -expressions: - | expression (',' expression )+ [','] - | expression ',' - | expression - -expression: - | disjunction 'if' disjunction 'else' expression - | disjunction - | lambdef - -yield_expr: - | 'yield' 'from' expression - | 'yield' [star_expressions] - -star_expressions: - | star_expression (',' star_expression )+ [','] - | star_expression ',' - | star_expression - -star_expression: - | '*' bitwise_or - | expression - -star_named_expressions: ','.star_named_expression+ [','] - -star_named_expression: - | '*' bitwise_or - | named_expression - -assignment_expression: - | NAME ':=' ~ expression - -named_expression: - | assignment_expression - | expression !':=' - -disjunction: - | conjunction ('or' conjunction )+ - | conjunction - -conjunction: - | inversion ('and' inversion )+ - | inversion - -inversion: - | 'not' inversion - | comparison - -# Comparison operators -# -------------------- - -comparison: - | bitwise_or compare_op_bitwise_or_pair+ - | bitwise_or - -compare_op_bitwise_or_pair: - | eq_bitwise_or - | noteq_bitwise_or - | lte_bitwise_or - | lt_bitwise_or - | gte_bitwise_or - | gt_bitwise_or - | notin_bitwise_or - | in_bitwise_or - | isnot_bitwise_or - | is_bitwise_or - -eq_bitwise_or: '==' bitwise_or -noteq_bitwise_or: - | ('!=' ) bitwise_or -lte_bitwise_or: '<=' bitwise_or -lt_bitwise_or: '<' bitwise_or -gte_bitwise_or: '>=' bitwise_or -gt_bitwise_or: '>' bitwise_or -notin_bitwise_or: 'not' 'in' bitwise_or -in_bitwise_or: 'in' bitwise_or -isnot_bitwise_or: 'is' 'not' bitwise_or -is_bitwise_or: 'is' bitwise_or - -# Bitwise operators -# ----------------- - -bitwise_or: - | bitwise_or '|' bitwise_xor - | bitwise_xor - -bitwise_xor: - | bitwise_xor '^' bitwise_and - | bitwise_and - -bitwise_and: - | bitwise_and '&' shift_expr - | shift_expr - -shift_expr: - | shift_expr '<<' sum - | shift_expr '>>' sum - | sum - -# Arithmetic operators -# -------------------- - -sum: - | sum '+' term - | sum '-' term - | term - -term: - | term '*' factor - | term '/' factor - | term '//' factor - | term '%' factor - | term '@' factor - | factor - -factor: - | '+' factor - | '-' factor - | '~' factor - | power - -power: - | await_primary '**' factor - | await_primary - -# Primary elements -# ---------------- - -# Primary elements are things like "obj.something.something", "obj[something]", "obj(something)", "obj" ... - -await_primary: - | AWAIT primary - | primary - -primary: - | primary '.' NAME - | primary genexp - | primary '(' [arguments] ')' - | primary '[' slices ']' - | atom - -slices: - | slice !',' - | ','.(slice | starred_expression)+ [','] - -slice: - | [expression] ':' [expression] [':' [expression] ] - | named_expression - -atom: - | NAME - | 'True' - | 'False' - | 'None' - | strings - | NUMBER - | (tuple | group | genexp) - | (list | listcomp) - | (dict | set | dictcomp | setcomp) - | '...' - -group: - | '(' (yield_expr | named_expression) ')' - -# Lambda functions -# ---------------- - -lambdef: - | 'lambda' [lambda_params] ':' expression - -lambda_params: - | lambda_parameters - -# lambda_parameters etc. duplicates parameters but without annotations -# or type comments, and if there's no comma after a parameter, we expect -# a colon, not a close parenthesis. (For more, see parameters above.) -# -lambda_parameters: - | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* [lambda_star_etc] - | lambda_slash_with_default lambda_param_with_default* [lambda_star_etc] - | lambda_param_no_default+ lambda_param_with_default* [lambda_star_etc] - | lambda_param_with_default+ [lambda_star_etc] - | lambda_star_etc - -lambda_slash_no_default: - | lambda_param_no_default+ '/' ',' - | lambda_param_no_default+ '/' &':' - -lambda_slash_with_default: - | lambda_param_no_default* lambda_param_with_default+ '/' ',' - | lambda_param_no_default* lambda_param_with_default+ '/' &':' - -lambda_star_etc: - | '*' lambda_param_no_default lambda_param_maybe_default* [lambda_kwds] - | '*' ',' lambda_param_maybe_default+ [lambda_kwds] - | lambda_kwds - -lambda_kwds: - | '**' lambda_param_no_default - -lambda_param_no_default: - | lambda_param ',' - | lambda_param &':' -lambda_param_with_default: - | lambda_param default ',' - | lambda_param default &':' -lambda_param_maybe_default: - | lambda_param default? ',' - | lambda_param default? &':' -lambda_param: NAME - -# LITERALS -# ======== - -strings: STRING+ - -list: - | '[' [star_named_expressions] ']' - -tuple: - | '(' [star_named_expression ',' [star_named_expressions] ] ')' - -set: '{' star_named_expressions '}' - -# Dicts -# ----- - -dict: - | '{' [double_starred_kvpairs] '}' - -double_starred_kvpairs: ','.double_starred_kvpair+ [','] - -double_starred_kvpair: - | '**' bitwise_or - | kvpair - -kvpair: expression ':' expression - -# Comprehensions & Generators -# --------------------------- - -for_if_clauses: - | for_if_clause+ - -for_if_clause: - | ASYNC 'for' star_targets 'in' ~ disjunction ('if' disjunction )* - | 'for' star_targets 'in' ~ disjunction ('if' disjunction )* - -listcomp: - | '[' named_expression for_if_clauses ']' - -setcomp: - | '{' named_expression for_if_clauses '}' - -genexp: - | '(' ( assignment_expression | expression !':=') for_if_clauses ')' - -dictcomp: - | '{' kvpair for_if_clauses '}' - -# FUNCTION CALL ARGUMENTS -# ======================= - -arguments: - | args [','] &')' - -args: - | ','.(starred_expression | ( assignment_expression | expression !':=') !'=')+ [',' kwargs ] - | kwargs - -kwargs: - | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+ - | ','.kwarg_or_starred+ - | ','.kwarg_or_double_starred+ - -starred_expression: - | '*' expression - -kwarg_or_starred: - | NAME '=' expression - | starred_expression - -kwarg_or_double_starred: - | NAME '=' expression - | '**' expression - -# ASSIGNMENT TARGETS -# ================== - -# Generic targets -# --------------- - -# NOTE: star_targets may contain *bitwise_or, targets may not. -star_targets: - | star_target !',' - | star_target (',' star_target )* [','] - -star_targets_list_seq: ','.star_target+ [','] - -star_targets_tuple_seq: - | star_target (',' star_target )+ [','] - | star_target ',' - -star_target: - | '*' (!'*' star_target) - | target_with_star_atom - -target_with_star_atom: - | t_primary '.' NAME !t_lookahead - | t_primary '[' slices ']' !t_lookahead - | star_atom - -star_atom: - | NAME - | '(' target_with_star_atom ')' - | '(' [star_targets_tuple_seq] ')' - | '[' [star_targets_list_seq] ']' - -single_target: - | single_subscript_attribute_target - | NAME - | '(' single_target ')' - -single_subscript_attribute_target: - | t_primary '.' NAME !t_lookahead - | t_primary '[' slices ']' !t_lookahead - -t_primary: - | t_primary '.' NAME &t_lookahead - | t_primary '[' slices ']' &t_lookahead - | t_primary genexp &t_lookahead - | t_primary '(' [arguments] ')' &t_lookahead - | atom &t_lookahead - -t_lookahead: '(' | '[' | '.' - -# Targets for del statements -# -------------------------- - -del_targets: ','.del_target+ [','] - -del_target: - | t_primary '.' NAME !t_lookahead - | t_primary '[' slices ']' !t_lookahead - | del_t_atom - -del_t_atom: - | NAME - | '(' del_target ')' - | '(' [del_targets] ')' - | '[' [del_targets] ']' - -# TYPING ELEMENTS -# --------------- - -# type_expressions allow */** but ignore them -type_expressions: - | ','.expression+ ',' '*' expression ',' '**' expression - | ','.expression+ ',' '*' expression - | ','.expression+ ',' '**' expression - | '*' expression ',' '**' expression - | '*' expression - | '**' expression - | ','.expression+ - -func_type_comment: - | NEWLINE TYPE_COMMENT &(NEWLINE INDENT) # Must be followed by indented block - | TYPE_COMMENT - -# ========================= END OF THE GRAMMAR =========================== - - - -# ========================= START OF INVALID RULES ======================= From fe6b635529bc45c6123956c14331a30088e6fbd1 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 17 Sep 2023 20:54:47 +0200 Subject: [PATCH 003/384] Implement model parameter parsing --- src/main/cpp/jllama.cpp | 104 +++++++++++++++--- src/main/java/de/kherud/llama/LlamaModel.java | 8 +- .../java/de/kherud/llama/ModelParameters.java | 4 +- src/test/java/examples/MainExample.java | 38 +++++-- 4 files changed, 130 insertions(+), 24 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index ea9d05d9..17481b49 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -59,10 +59,10 @@ static jfieldID f_beam_search = 0; static jfieldID f_n_beams = 0; static jfieldID f_grammar = 0; static jfieldID f_antiprompt = 0; -static jfieldID f_model_seed = 0; +static jfieldID f_infer_seed = 0; // model parameters static jfieldID f_n_threads = 0; -static jfieldID f_infer_seed = 0; +static jfieldID f_model_seed = 0; static jfieldID f_n_ctx = 0; static jfieldID f_n_batch = 0; static jfieldID f_n_gpu_layers = 0; @@ -170,10 +170,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { f_n_beams = env->GetFieldID(c_infer_params, "nBeams", "I"); f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); f_antiprompt = env->GetFieldID(c_infer_params, "antiprompt", "[Ljava/lang/String;"); - f_model_seed = env->GetFieldID(c_infer_params, "seed", "I"); + f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); - f_infer_seed = env->GetFieldID(c_model_params, "seed", "I"); + f_model_seed = env->GetFieldID(c_model_params, "seed", "I"); f_n_ctx = env->GetFieldID(c_model_params, "nCtx", "I"); f_n_batch = env->GetFieldID(c_model_params, "nBatch", "I"); f_n_gpu_layers = env->GetFieldID(c_model_params, "nGpuLayers", "I"); @@ -192,7 +192,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { f_lora_adapter = env->GetFieldID(c_model_params, "loraAdapter", "Ljava/lang/String;"); f_lora_base = env->GetFieldID(c_model_params, "loraBase", "Ljava/lang/String;"); f_hellaswag = env->GetFieldID(c_model_params, "hellaswag", "Z"); - f_hellaswag_tasks = env->GetFieldID(c_model_params, "hellaswagTasks", "I"); + f_hellaswag_tasks = env->GetFieldID(c_model_params, "hellaswagTasks", "S"); f_memory_f16 = env->GetFieldID(c_model_params, "memoryF16", "Z"); f_mem_test = env->GetFieldID(c_model_params, "memTest", "Z"); f_numa = env->GetFieldID(c_model_params, "numa", "Z"); @@ -201,10 +201,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) { goto error; } - if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_model_seed)) { + if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed)) { goto error; } - if (!(f_n_threads && f_infer_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { + if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { goto error; } @@ -289,6 +289,84 @@ static gpt_params parse_model_params(JNIEnv* env, jobject jparams, jstring java_ params.model = parse_jstring(env, java_file_path); + params.seed = env->GetIntField(jparams, f_model_seed); + params.n_threads = env->GetIntField(jparams, f_n_threads); + params.n_ctx = env->GetIntField(jparams, f_n_ctx); + params.n_batch = env->GetIntField(jparams, f_n_batch); + params.n_gpu_layers = env->GetIntField(jparams, f_n_gpu_layers); + params.main_gpu = env->GetIntField(jparams, f_main_gpu); + params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); + params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); + params.lora_adapter = env->GetIntField(jparams, f_lora_adapter); + params.lora_base = env->GetIntField(jparams, f_lora_base); + params.hellaswag = env->GetBooleanField(jparams, f_hellaswag); + params.hellaswag_tasks = env->GetShortField(jparams, f_hellaswag_tasks); + params.low_vram = env->GetBooleanField(jparams, f_low_vram); + params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); + params.memory_f16 = env->GetBooleanField(jparams, f_memory_f16); + params.embedding = env->GetBooleanField(jparams, f_embedding); + params.escape = env->GetIntField(jparams, f_n_predict); + params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); + params.use_mlock = env->GetBooleanField(jparams, f_use_mlock); + params.numa = env->GetBooleanField(jparams, f_numa); + params.verbose_prompt = env->GetBooleanField(jparams, f_verbose_prompt); + + jstring j_lora_adapter = (jstring) env->GetObjectField(jparams, f_lora_adapter); + if (j_lora_adapter != nullptr) { + params.lora_adapter = parse_jstring(env, j_lora_adapter); + env->DeleteLocalRef(j_lora_adapter); + } + jstring j_lora_base = (jstring) env->GetObjectField(jparams, f_lora_base); + if (j_lora_base != nullptr) { + params.lora_base = parse_jstring(env, j_lora_base); + env->DeleteLocalRef(j_lora_base); + } + + jfloatArray j_tensor_split = (jfloatArray) env->GetObjectField(jparams, f_tensor_split); + if (j_tensor_split != nullptr) { +#ifndef GGML_USE_CUBLAS + LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); +#endif + jsize array_length = env->GetArrayLength(j_tensor_split); + GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); + float* tensor_split = new float[array_length]; + env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); + for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) { + if (i_device < array_length) { + params.tensor_split[i_device] = tensor_split[i_device]; + } else { + params.tensor_split[i_device] = 0.0f; + } + } + delete[] tensor_split; + } + +#ifndef LLAMA_SUPPORTS_GPU_OFFLOAD + if (params.n_gpu_layers > 0) { + LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + "See main README.md for information on enabling GPU BLAS support", + {{"n_gpu_layers", params.n_gpu_layers}}); + } +#endif + +#ifndef GGML_USE_CUBLAS + if (params.low_vram) { + LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. It is not possible to set lower vram usage.\n", {}); + } + if (!params.mul_mat_q) { + LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. Disabling mul_mat_q kernels has no effect.\n", {}); + } + if (params.main_gpu != 0) { + LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a main GPU.", {}); + } +#endif + + // todo: these have to be set in llama_context_params + // f_logits_all + // f_vocab_only + // f_memory_f16 + // f_f16_kv + return params; } @@ -310,15 +388,13 @@ static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jst llama->params.mirostat = env->GetIntField(params, f_mirostat); llama->params.mirostat_tau = env->GetFloatField(params, f_mirostat_tau); llama->params.mirostat_eta = env->GetFloatField(params, f_mirostat_eta); - llama->params.seed = env->GetIntField(params, f_model_seed); + llama->params.seed = env->GetIntField(params, f_infer_seed); jstring j_grammar = (jstring) env->GetObjectField(params, f_grammar); - if (j_grammar == nullptr) { - llama->params.grammar = ""; - } else { - llama->params.grammar = parse_jstring(env, j_grammar); - env->DeleteLocalRef(j_grammar); - } + if (j_grammar != nullptr) { + llama->params.grammar = parse_jstring(env, j_grammar); + env->DeleteLocalRef(j_grammar); + } llama->params.logit_bias.clear(); jboolean ignore_eos = env->GetBooleanField(params, f_ignore_eos); diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 3aa6cde3..1f73bc1e 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -5,7 +5,7 @@ import java.util.NoSuchElementException; -public class LlamaModel { +public class LlamaModel implements AutoCloseable { private static final ModelParameters defaultModelParams = new ModelParameters.Builder().build(); private static final InferenceParameters defaultInferenceParams = new InferenceParameters.Builder().build(); @@ -54,10 +54,16 @@ public Iterable generate(String prompt, InferenceParameters parameters) return () -> new LlamaIterator(prompt, parameters); } + @Override + public void close() { + delete(); + } + private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; private native void setupInference(String prompt, InferenceParameters parameters); private native String getFull(String prompt, InferenceParameters parameters); private native String getNext(LlamaIterator iterator); + private native void delete(); // fields are modified by native code and thus should not be final @SuppressWarnings("FieldMayBeFinal") diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index d39a13f5..534e3d6c 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -32,7 +32,7 @@ public class ModelParameters { @Nullable public final String loraBase; // base model path for the lora adapter public final boolean hellaswag; // compute HellaSwag score over random tasks from datafile supplied in prompt - public final int hellaswagTasks; // number of tasks to use when computing the HellaSwag score + public final short hellaswagTasks; // number of tasks to use when computing the HellaSwag score public final boolean memoryF16; // use f16 instead of f32 for memory kv public final boolean memTest; // compute maximum memory usage public final boolean numa; // attempt optimizations that help on some NUMA systems @@ -62,7 +62,7 @@ private ModelParameters( @Nullable String loraAdapter, @Nullable String loraBase, boolean hellaswag, - int hellaswagTasks, + short hellaswagTasks, boolean memoryF16, boolean memTest, boolean numa, diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 66dcde4c..147e8342 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -1,6 +1,8 @@ package examples; +import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; +import de.kherud.llama.ModelParameters; import java.io.BufferedReader; import java.io.FileNotFoundException; @@ -11,14 +13,36 @@ public class MainExample { - public static void main(String... args) { - String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; - String prompt = "This is a conversation between User and Llama, a friendly chatbot.\n" + + public static void main(String... args) throws IOException { + ModelParameters modelParams = new ModelParameters.Builder() + .setNGpuLayers(43) + .build(); + InferenceParameters inferParams = new InferenceParameters.Builder() + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt(new String[]{"\n"}) + .build(); + + String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; + String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n\nUser: What emojis do you know?\n\nLlama: "; - LlamaModel model = new LlamaModel(filePath); - for (String output : model.generate(prompt)) { - System.out.print(output); + "requests immediately and with precision.\n"; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); + try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + String prompt = system; + while (true) { + prompt += "\nUser: "; + System.out.print(prompt); + String input = reader.readLine(); + prompt += input; + System.out.print("Llama: "); + prompt += "\nLlama: "; + for (String output : model.generate(prompt, inferParams)) { + System.out.print(output); + } + prompt = ""; + } } } } From aa9f5bd879549be39cafbb9bea2d5827f7dc1e99 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 18 Sep 2023 22:23:04 +0200 Subject: [PATCH 004/384] Major additions, replaced make with cmake --- .gitignore | 3 - .gitmodules | 3 + CMakeLists.txt | 56 + Makefile | 73 -- Makefile.common | 131 -- pom.xml | 2 +- src/main/cpp/jllama.cpp | 1070 ++++++++++++++--- src/main/cpp/jllama.h | 85 ++ .../de/kherud/llama/InferenceParameters.java | 4 +- .../java/de/kherud/llama/LlamaLoader.java | 22 +- src/main/java/de/kherud/llama/LlamaModel.java | 86 +- src/main/java/de/kherud/llama/LogLevel.java | 28 + .../java/de/kherud/llama/ModelParameters.java | 30 +- .../de/kherud/llama/Linux/x86_64/libjllama.so | Bin 1021112 -> 5342576 bytes src/test/java/examples/MainExample.java | 16 +- 15 files changed, 1199 insertions(+), 410 deletions(-) create mode 100644 .gitmodules create mode 100644 CMakeLists.txt delete mode 100644 Makefile delete mode 100644 Makefile.common create mode 100644 src/main/cpp/jllama.h create mode 100644 src/main/java/de/kherud/llama/LogLevel.java diff --git a/.gitignore b/.gitignore index 26f75390..0b0d20c8 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,4 @@ target hs_err_pid* replay_pid* -llama.h -llama.cpp -main.cpp src/test/resources/*.gbnf diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..fd82610c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/main/cpp/llama.cpp"] + path = src/main/cpp/llama.cpp + url = https://github.com/ggerganov/llama.cpp.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..79ad3d04 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.12) + +project(jllama CXX) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED true) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +find_package(Java REQUIRED) +find_program(JAVA_EXECUTABLE NAMES java) + +execute_process( + COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --os + OUTPUT_VARIABLE OS_NAME + OUTPUT_STRIP_TRAILING_WHITESPACE +) +execute_process( + COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --arch + OUTPUT_VARIABLE OS_ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +find_path(JNI_INCLUDE_DIR NAMES jni.h HINTS ENV JAVA_HOME PATH_SUFFIXES include) +if(NOT JNI_INCLUDE_DIR) + message(FATAL_ERROR "Could not find jni.h") +endif() + +file(GLOB_RECURSE JNI_MD_PATHS RELATIVE "${JNI_INCLUDE_DIR}" "${JNI_INCLUDE_DIR}/**/jni_md.h") +if(NOT JNI_MD_PATHS) + message(FATAL_ERROR "Could not find jni_md.h") +endif() + +foreach(PATH IN LISTS JNI_MD_PATHS) + get_filename_component(DIR ${PATH} DIRECTORY) + list(APPEND JNI_MD_INCLUDE_DIRS "${JNI_INCLUDE_DIR}/${DIR}") +endforeach() + +include_directories( + ${JNI_INCLUDE_DIR} + ${JNI_MD_INCLUDE_DIRS} + src/main/cpp + src/main/cpp/llama.cpp + src/main/cpp/llama.cpp/common +) + +add_subdirectory( + src/main/cpp/llama.cpp +) + +add_library(jllama SHARED src/main/cpp/jllama.cpp) + +target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) + +set_target_properties(jllama PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" +) diff --git a/Makefile b/Makefile deleted file mode 100644 index 75809f50..00000000 --- a/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -include Makefile.common - -# g++ -I. -O3 -m64 -I"/usr/lib/jvm/zulu-17/include" -I"/usr/lib/jvm/zulu-17/include/linux" -shared -fPIC -fvisibility=hidden -static-libgcc -pthread -lstdc++ -lllama -L. -o libjllama.so jllama.cpp common.cpp && mv -f libjllama.so ../../../../src/main/resources/de/kherud/llama/Linux/x86_64/ - -# set up some variables -DOCKER_RUN_OPTS=--rm -CODESIGN:=docker run $(DOCKER_RUN_OPTS) -v $$PWD:/workdir gotson/rcodesign sign - -NATIVE_DIR := src/main/resources/de/kherud/llama/$(OS_NAME)/$(OS_ARCH) - -LLAMA_SRC := $(TARGET)/llama -LLAMA_HEADER := $(LLAMA_SRC)/llama.h -JLLAMA_HEADER := $(LLAMA_SRC)/jllama.h -LLAMA_INCLUDE := $(shell dirname "$(LLAMA_HEADER)") -LLAMA_LIB := $(LLAMA_SRC)/build/$(LLAMA_LIB_NAME) -JLLAMA_LIB := $(LLAMA_SRC)/build/$(JLLAMA_LIB_NAME) -LLAMA_CMAKE_ARGS := - -CCFLAGS := -I$(LLAMA_INCLUDE) $(CCFLAGS) - -# download llama.cpp sources or pull new changes -$(LLAMA_SRC): - @mkdir -p $@ - @if [ -d "$@/.git" ]; then \ - cd $@ && git pull; \ - else \ - git clone https://github.com/ggerganov/llama.cpp.git $@; \ - fi - -# build the llama.cpp shared library -$(LLAMA_LIB): $(LLAMA_SRC) - (cd $(LLAMA_SRC) && \ - mkdir -p $(LLAMA_SRC)\build && \ - cd build && \ - cmake .. -DBUILD_SHARED_LIBS=ON $(LLAMA_CMAKE_ARGS) && \ - cmake --build . --config Release) - -# create the jni header -$(JLLAMA_HEADER): src/main/java/de/kherud/llama/LlamaModel.java - mvn compile - mv $(LLAMA_SRC)/de_kherud_llama_LlamaModel.h $@ - -# build the jni shared library -$(JLLAMA_LIB): $(JLLAMA_HEADER) - $(CC) \ - $(CCFLAGS) \ - $(LINKFLAGS) \ - -L $(LLAMA_SRC)/build \ - -I $(LLAMA_SRC) \ - -I $(LLAMA_SRC)/common \ - -I $(LLAMA_SRC)/examples/server \ - -o $@ \ - src/main/cpp/jllama.cpp \ - $(LLAMA_SRC)/common/common.cpp \ - $(LLAMA_SRC)/common/grammar-parser.cpp - -build: $(LLAMA_LIB) $(JLLAMA_LIB) - mkdir -p $(NATIVE_DIR) - mv $(LLAMA_LIB) $(NATIVE_DIR) - mv $(JLLAMA_LIB) $(NATIVE_DIR) - -build-jni: $(JLLAMA_LIB) - mv $(JLLAMA_LIB) $(NATIVE_DIR) - -build-jni-header: $(JLLAMA_HEADER) - -clean-build: - @rm -rf $(LLAMA_SRC)/build - @rm -rf $(TARGET)/classes - @rm -rf $(TARGET)/test-classes - -clean-llama: - @rm -rf $(LLAMA_SRC) diff --git a/Makefile.common b/Makefile.common deleted file mode 100644 index 3fd1a835..00000000 --- a/Makefile.common +++ /dev/null @@ -1,131 +0,0 @@ -ifndef JAVA_HOME -$(warning Set JAVA_HOME environment variable) -endif - -JAVA := "$$JAVA_HOME/bin/java" -JAVAC := "$$JAVA_HOME/bin/javac" -JAVAH := "$$JAVA_HOME/bin/javah" - -TARGET := target -OSINFO_CLASS := de.kherud.llama.OSInfo -OSINFO_PROG := $(TARGET)/classes/com/denkbares/clingo/OSInfo.class - -## building OSInfo.java -ifeq ("$(wildcard $(OSINFO_PROG))","") -$(info Building OSInfo tool) -$(shell $(JAVAC) -cp src/main/java -d $(TARGET)/classes src/main/java/de/kherud/llama/OSInfo.java) -endif - -ifndef OS_NAME -OS_NAME := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --os) -endif -ifndef OS_ARCH -OS_ARCH := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --arch) -endif - -# Windows uses different path separators -ifeq ($(OS_NAME),Windows) - sep := ; -else - sep := : -endif - -jclingo := jclingo-$(version) - -ifdef JAVA_HOME -jni_h := $(shell find -L "$(JAVA_HOME)" -name jni.h) -ifneq ($(jni_h),) -jni_include := $(shell dirname "$(jni_h)") -endif - -jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h) -ifneq ($(jni_md),) -jni_md_include := $(shell dirname "$(jni_md)") -endif -endif - -known_targets := Linux-x86_64 Linux-arm Mac-x86_64 Mac-aarch64 Windows-x86_64 Windows-aarch64 -target := $(OS_NAME)-$(OS_ARCH) - -ifeq (,$(findstring $(strip $(target)),$(known_targets))) - target := Default -endif - -$(info Will build using target: $(target) (detected os: $(OS_NAME) arch: $(OS_ARCH))) - -# cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-") -CROSS_PREFIX := - -# os=Default is meant to be generic unix/linux -Default_CC := $(CROSS_PREFIX)g++ -Default_STRIP := $(CROSS_PREFIX)strip -Default_CCFLAGS := -O3 -Default_LINKFLAGS := -I$(JAVA_HOME)/include -shared -fPIC -fvisibility=hidden -lllama -Default_LLAMA_LIB_NAME := libllama.so -Default_JLLAMA_LIB_NAME := libjllama.so - -Linux-x86_64_CC := $(CROSS_PREFIX)g++ -Linux-x86_64_STRIP := $(CROSS_PREFIX)strip -Linux-x86_64_CCFLAGS := -O3 -m64 -Linux-x86_64_LINKFLAGS := $(Default_LINKFLAGS) -Linux-x86_64_LLAMA_LIB_NAME := libllama.so -Linux-x86_64_JLLAMA_LIB_NAME := libjllama.so - -Linux-arm_CC := $(CROSS_PREFIX)g++ -Linux-arm_STRIP := $(CROSS_PREFIX)strip -Linux-arm_CCFLAGS := -O3 -mfloat-abi=soft -Linux-arm_LLAMA_LIB_NAME := libllama.so -Linux-arm_JLLAMA_LIB_NAME := libjllama.so - -# Mac-x86_CCFLAGS := -I$(JAVA_HOME)/include -O3 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden -Mac-x86_64_CC := g++ -arch $(OS_ARCH) -Mac-x86_64_STRIP := strip -x -MAC_SDK := /Developer/SDKs/MacOSX10.10.sdk -ifeq ($(wildcard MAC_SDK),) - MAC_SDK := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -endif -Mac-x86_64_CCFLAGS := -O3 -mmacosx-version-min=13.1 -Mac-x86_64_LINKFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -dynamiclib -fPIC -fvisibility=hidden -lllama -Mac-x86_64_LLAMA_LIB_NAME := libllama.dylib -Mac-x86_64_JLLAMA_LIB_NAME := libjllama.dylib - -# Mac-aarch64_CCFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -O3 -fPIC -mmacosx-version-min=10.9 -fvisibility=hidden -Wno-implicit-function-declaration -# Use a CROSS_PREFIX as the cross-triple clang is not available in crossbuild, see https://github.com/multiarch/crossbuild/blob/ad79cc84b6fb3fb1d09bc4a78719ef26f23bab85/Dockerfile#L134 -# When running on a M1 mac, CROSS_PREFIX will be empty, and 'make native' can still build -Mac-aarch64_CC := $(CROSS_PREFIX)clang -Mac-aarch64_STRIP := $(CROSS_PREFIX)strip -x -MAC_SDK := /usr/osxcross/SDK/MacOSX11.3.sdk -Mac-aarch64_CCFLAGS := -O3 -mmacosx-version-min=13.1 -Mac-aarch64_LINKFLAGS := -I$(MAC_SDK)/System/Library/Frameworks/JavaVM.framework/Headers -dynamiclib -fPIC -fvisibility=hidden -lllama -Mac-aarch64_LLAMA_LIB_NAME := libllama.dylib -Mac-aarch64_JLLAMA_LIB_NAME := libjllama.dylib - -Windows-x86_64_CC := $(CROSS_PREFIX)g++ -Windows-x86_64_STRIP := $(CROSS_PREFIX)strip -Windows-x86_64_CCFLAGS := -D_JNI_IMPLEMENTATION_ -O3 -Windows-x86_64_LINKFLAGS := -Idocker/inc_win -shared -Wl,--kill-at -lllama -Windows-x86_64_LLAMA_LIB_NAME := llama.dll -Windows-x86_64_JLLAMA_LIB_NAME := jllama.dll - -Windows-aarch64_CC := $(CROSS_PREFIX)clang -Windows-aarch64_STRIP := $(CROSS_PREFIX)strip -Windows-aarch64_CCFLAGS := -D_JNI_IMPLEMENTATION_ -O3 -Windows-aarch64_LINKFLAGS := -Idocker/inc_win -shared -Wl,--kill-at -lllama -Windows-aarch64_LLAMA_LIB_NAME := llama.dll -Windows-aarch64_JLLAMA_LIB_NAME := jllama.dll - - -CC := $($(target)_CC) -STRIP := $($(target)_STRIP) -CCFLAGS := $($(target)_CCFLAGS) -LINKFLAGS := $($(target)_LINKFLAGS) -LLAMA_LIB_NAME := $($(target)_LLAMA_LIB_NAME) -JLLAMA_LIB_NAME := $($(target)_JLLAMA_LIB_NAME) -CCFLAGS := $(CCFLAGS) -ifneq ($(jni_include),) -CCFLAGS := $(CCFLAGS) -I"$(jni_include)" -endif -ifneq ($(jni_md_include),) -CCFLAGS := $(CCFLAGS) -I"$(jni_md_include)" -endif - diff --git a/pom.xml b/pom.xml index 09f92e3e..ab2a6562 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ -h - target/llama + src/main/cpp diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 17481b49..02f002ba 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,9 +1,15 @@ #include "llama.h" #include "jllama.h" -#include "server.cpp" +#include "common.h" +#include "build-info.h" +#include "grammar-parser.h" +#include #include #include +#include +#include +#include // classes static jclass c_llama_model = 0; @@ -17,7 +23,10 @@ static jclass c_entry = 0; static jclass c_iterator = 0; static jclass c_integer = 0; static jclass c_float = 0; +static jclass c_log_level = 0; +static jclass c_biconsumer = 0; static jclass c_llama_error = 0; +static jclass c_error_oom = 0; // methods static jmethodID m_get_bytes = 0; @@ -29,6 +38,7 @@ static jmethodID m_entry_key = 0; static jmethodID m_entry_value = 0; static jmethodID m_int_value = 0; static jmethodID m_float_value = 0; +static jmethodID m_biconsumer_accept = 0; // fields static jfieldID f_model_pointer = 0; @@ -86,12 +96,26 @@ static jfieldID f_memory_f16 = 0; static jfieldID f_mem_test = 0; static jfieldID f_numa = 0; static jfieldID f_verbose_prompt = 0; - - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { +// log level +static jfieldID f_log_level_debug = 0; +static jfieldID f_log_level_info = 0; +static jfieldID f_log_level_warn = 0; +static jfieldID f_log_level_error = 0; +// objects +static jobject o_log_level_debug = 0; +static jobject o_log_level_info = 0; +static jobject o_log_level_warn = 0; +static jobject o_log_level_error = 0; + +static JavaVM* g_vm = nullptr; +static jobject g_log_callback = nullptr; + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) +{ JNIEnv *env = 0; - if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) { + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) + { goto error; } @@ -107,25 +131,32 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { c_iterator = env->FindClass("java/util/Iterator"); c_integer = env->FindClass("java/lang/Integer"); c_float = env->FindClass("java/lang/Float"); + c_log_level = env->FindClass("de/kherud/llama/LogLevel"); + c_biconsumer = env->FindClass("java/util/function/BiConsumer"); c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); + c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); - if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_llama_error)) { + if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) + { goto error; } // create references - c_llama_model = (jclass) env->NewWeakGlobalRef(c_llama_model); - c_llama_iterator = (jclass) env->NewWeakGlobalRef(c_llama_iterator); - c_infer_params = (jclass) env->NewWeakGlobalRef(c_infer_params); - c_model_params = (jclass) env->NewWeakGlobalRef(c_model_params); - c_string = (jclass) env->NewWeakGlobalRef(c_string); - c_map = (jclass) env->NewWeakGlobalRef(c_map); - c_set = (jclass) env->NewWeakGlobalRef(c_set); - c_entry = (jclass) env->NewWeakGlobalRef(c_entry); - c_iterator = (jclass) env->NewWeakGlobalRef(c_iterator); - c_integer = (jclass) env->NewWeakGlobalRef(c_integer); - c_float = (jclass) env->NewWeakGlobalRef(c_float); - c_llama_error = (jclass) env->NewWeakGlobalRef(c_llama_error); + c_llama_model = (jclass)env->NewWeakGlobalRef(c_llama_model); + c_llama_iterator = (jclass)env->NewWeakGlobalRef(c_llama_iterator); + c_infer_params = (jclass)env->NewWeakGlobalRef(c_infer_params); + c_model_params = (jclass)env->NewWeakGlobalRef(c_model_params); + c_string = (jclass)env->NewWeakGlobalRef(c_string); + c_map = (jclass)env->NewWeakGlobalRef(c_map); + c_set = (jclass)env->NewWeakGlobalRef(c_set); + c_entry = (jclass)env->NewWeakGlobalRef(c_entry); + c_iterator = (jclass)env->NewWeakGlobalRef(c_iterator); + c_integer = (jclass)env->NewWeakGlobalRef(c_integer); + c_float = (jclass)env->NewWeakGlobalRef(c_float); + c_log_level = (jclass)env->NewWeakGlobalRef(c_log_level); + c_biconsumer = (jclass)env->NewWeakGlobalRef(c_biconsumer); + c_llama_error = (jclass)env->NewWeakGlobalRef(c_llama_error); + c_error_oom = (jclass)env->NewWeakGlobalRef(c_error_oom); // find methods m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); @@ -137,8 +168,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { m_entry_value = env->GetMethodID(c_entry, "getValue", "()Ljava/lang/Object;"); m_int_value = env->GetMethodID(c_integer, "intValue", "()I"); m_float_value = env->GetMethodID(c_float, "floatValue", "()F"); + m_biconsumer_accept = env->GetMethodID(c_biconsumer, "accept", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_int_value && m_float_value)) { + if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_int_value && m_float_value && m_biconsumer_accept)) + { goto error; } @@ -198,17 +231,41 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { f_numa = env->GetFieldID(c_model_params, "numa", "Z"); f_verbose_prompt = env->GetFieldID(c_model_params, "verbosePrompt", "Z"); - if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) { + if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) + { goto error; } - if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed)) { + if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed)) + { goto error; } - if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { + if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) + { goto error; } - if (env->ExceptionCheck()) { + f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); + f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); + f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); + f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); + + if (!(f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) + { + goto error; + } + + o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); + o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); + o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); + o_log_level_error = env->GetStaticObjectField(c_log_level, f_log_level_error); + + if (!(o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) + { + goto error; + } + + if (env->ExceptionCheck()) + { env->ExceptionDescribe(); goto error; } @@ -222,10 +279,12 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_VERSION_1_1; } -JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) +{ JNIEnv *env = 0; - if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_2)) return; + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) + return; env->DeleteWeakGlobalRef(c_llama_model); env->DeleteWeakGlobalRef(c_llama_iterator); @@ -238,70 +297,627 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { env->DeleteWeakGlobalRef(c_iterator); env->DeleteWeakGlobalRef(c_integer); env->DeleteWeakGlobalRef(c_float); + env->DeleteWeakGlobalRef(c_log_level); + env->DeleteWeakGlobalRef(c_biconsumer); env->DeleteWeakGlobalRef(c_llama_error); + env->DeleteWeakGlobalRef(c_error_oom); } -static std::string parse_jstring(JNIEnv* env, jstring java_string) { - const jbyteArray string_bytes = (jbyteArray) env->CallObjectMethod(java_string, m_get_bytes, env->NewStringUTF("UTF-8")); +static void jllama_log_callback(enum llama_log_level level, const char * text, void * user_data) { + JNIEnv* env; + g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_2); - size_t length = (size_t) env->GetArrayLength(string_bytes); - jbyte* byte_elements = env->GetByteArrayElements(string_bytes, nullptr); + jobject java_log_level; + switch (level) { + case LLAMA_LOG_LEVEL_ERROR: java_log_level = o_log_level_error; break; + case LLAMA_LOG_LEVEL_WARN: java_log_level = o_log_level_warn; break; + case LLAMA_LOG_LEVEL_INFO: java_log_level = o_log_level_info; break; + default: java_log_level = o_log_level_debug; break; + } + jstring java_text = env->NewStringUTF(text); + + env->CallVoidMethod(g_log_callback, m_biconsumer_accept, java_log_level, java_text); + + env->DeleteLocalRef(java_log_level); + env->DeleteLocalRef(java_text); +} - std::string string = std::string((char*) byte_elements, length); +static std::string parse_jstring(JNIEnv *env, jstring java_string) +{ + const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, env->NewStringUTF("UTF-8")); + + size_t length = (size_t)env->GetArrayLength(string_bytes); + jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); + + std::string string = std::string((char *)byte_elements, length); env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); env->DeleteLocalRef(string_bytes); return string; } -static int parse_jinteger(JNIEnv* env, jobject java_integer) { - if (!java_integer) return 0; +static int parse_jinteger(JNIEnv *env, jobject java_integer) +{ + if (!java_integer) + return 0; return env->CallIntMethod(java_integer, m_int_value); } -static float parse_jfloat(JNIEnv* env, jobject java_float) { - if (!java_float) return 0; +static float parse_jfloat(JNIEnv *env, jobject java_float) +{ + if (!java_float) + return 0; return env->CallFloatMethod(java_float, m_float_value); } -float getJavaFloatValue(JNIEnv* env, jobject javaFloat) { - if (!javaFloat) return 0.0f; // Return a default value if the input object is null +static jstring parse_utf16_string(JNIEnv *env, std::string string) +{ + // this only works correctly on platforms where wchar_t is 16 bits + std::wstring_convert> converter; + std::wstring wstring = converter.from_bytes(string); + std::u16string string_utf16(wstring.begin(), wstring.end()); + return env->NewString((jchar *)string_utf16.data(), string_utf16.size()); +} - jclass floatClass = env->FindClass("java/lang/Float"); - jmethodID floatValueMethodID = env->GetMethodID(floatClass, "floatValue", "()F"); +// completion token output with probabilities +struct completion_token_output +{ + struct token_prob + { + llama_token tok; + float prob; + }; + + std::vector probs; + llama_token tok; +}; + +static size_t common_part(const std::vector &a, const std::vector &b) +{ + size_t i; + for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) + { + } + return i; +} - float value = env->CallFloatMethod(javaFloat, floatValueMethodID); +enum stop_type +{ + STOP_FULL, + STOP_PARTIAL, +}; - // Clean up the local reference - env->DeleteLocalRef(floatClass); +static bool ends_with(const std::string &str, const std::string &suffix) +{ + return str.size() >= suffix.size() && + 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); +} - return value; +static size_t find_partial_stop_string(const std::string &stop, + const std::string &text) +{ + if (!text.empty() && !stop.empty()) + { + const char text_last_char = text.back(); + for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) + { + if (stop[char_index] == text_last_char) + { + const std::string current_partial = stop.substr(0, char_index + 1); + if (ends_with(text, current_partial)) + { + return text.size() - char_index - 1; + } + } + } + } + return std::string::npos; } -static jstring parse_utf16_string(JNIEnv* env, std::string string) { - std::wstring_convert, char16_t> converter; - std::u16string string_utf16 = converter.from_bytes(string); - return env->NewString((jchar*)string_utf16.data(), string_utf16.size()); +template +static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) +{ + std::string ret; + for (; begin != end; ++begin) + { + ret += llama_token_to_piece(ctx, *begin); + } + return ret; } -static gpt_params parse_model_params(JNIEnv* env, jobject jparams, jstring java_file_path) { +struct jllama_context +{ + bool has_next_token = false; + std::string generated_text; + std::vector generated_token_probs; + + size_t num_prompt_tokens = 0; + size_t num_tokens_predicted = 0; + size_t n_past = 0; + size_t n_remain = 0; + + std::string prompt; + std::vector embd; + std::vector last_n_tokens; + + llama_model *model = nullptr; + llama_context *ctx = nullptr; gpt_params params; - params.model = parse_jstring(env, java_file_path); + grammar_parser::parse_state parsed_grammar; + llama_grammar *grammar = nullptr; + + bool truncated = false; + bool stopped_eos = false; + bool stopped_word = false; + bool stopped_limit = false; + std::string stopping_word; + int32_t multibyte_pending = 0; + + std::mutex mutex; + + std::unique_lock lock() + { + return std::unique_lock(mutex); + } + + ~jllama_context() + { + if (ctx) + { + llama_free(ctx); + ctx = nullptr; + } + if (model) + { + llama_free_model(model); + model = nullptr; + } + } + + void rewind() + { + params.antiprompt.clear(); + params.grammar.clear(); + num_prompt_tokens = 0; + num_tokens_predicted = 0; + generated_text = ""; + generated_text.reserve(params.n_ctx); + generated_token_probs.clear(); + truncated = false; + stopped_eos = false; + stopped_word = false; + stopped_limit = false; + stopping_word = ""; + multibyte_pending = 0; + n_remain = 0; + n_past = 0; + + if (grammar != nullptr) + { + llama_grammar_free(grammar); + grammar = nullptr; + } + } + + bool loadModel(const gpt_params ¶ms_) + { + params = params_; + std::tie(model, ctx) = llama_init_from_gpt_params(params); + if (model == nullptr) + { + // LOG_ERROR("unable to load model", {{"model", params_.model}}); + return false; + } + + last_n_tokens.resize(params.n_ctx); + std::fill(last_n_tokens.begin(), last_n_tokens.end(), 0); + return true; + } + + std::vector tokenize(std::string prompt, bool add_bos) const + { + // If `add_bos` is true, we only add BOS, when json_prompt is a string, + // or the first element of the json_prompt array is a string. + return ::llama_tokenize(ctx, prompt, add_bos); + } + + bool loadGrammar() + { + if (!params.grammar.empty()) + { + parsed_grammar = grammar_parser::parse(params.grammar.c_str()); + // will be empty (default) if there are parse errors + if (parsed_grammar.rules.empty()) + { + // LOG_ERROR("grammar parse error", {{"grammar", params.grammar}}); + return false; + } + grammar_parser::print_grammar(stderr, parsed_grammar); + + { + auto it = params.logit_bias.find(llama_token_eos(ctx)); + if (it != params.logit_bias.end() && it->second == -INFINITY) + { + // LOG_WARNING("EOS token is disabled, which will cause most grammars to fail", {}); + } + } + + std::vector grammar_rules(parsed_grammar.c_rules()); + grammar = llama_grammar_init( + grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); + } + return true; + } + + void loadPrompt() + { + auto prompt_tokens = tokenize(prompt, true); // always add BOS + + num_prompt_tokens = prompt_tokens.size(); + + if (params.n_keep < 0) + { + params.n_keep = (int)num_prompt_tokens; + } + params.n_keep = std::min(params.n_ctx - 4, params.n_keep); + + // if input prompt is too big, truncate like normal + if (num_prompt_tokens >= (size_t)params.n_ctx) + { + const int n_left = (params.n_ctx - params.n_keep) / 2; + std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); + const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; + new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); + std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); + + // LOG_VERBOSE("input truncated", { + // {"n_ctx", params.n_ctx}, + // {"n_keep", params.n_keep}, + // {"n_left", n_left}, + // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, + // }); + + truncated = true; + prompt_tokens = new_tokens; + } + else + { + const size_t ps = num_prompt_tokens; + std::fill(last_n_tokens.begin(), last_n_tokens.end() - ps, 0); + std::copy(prompt_tokens.begin(), prompt_tokens.end(), last_n_tokens.end() - ps); + } + + // compare the evaluated prompt with the new prompt + n_past = common_part(embd, prompt_tokens); + embd = prompt_tokens; + if (n_past == num_prompt_tokens) + { + // we have to evaluate at least 1 token to generate logits. + n_past--; + } + + // LOG_VERBOSE("prompt ingested", { + // {"n_past", n_past}, + // {"cached", tokens_to_str(ctx, embd.cbegin(), embd.cbegin() + n_past)}, + // {"to_eval", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, + // }); + + has_next_token = true; + } + + void beginCompletion() + { + // number of tokens to keep when resetting context + n_remain = params.n_predict; + llama_set_rng_seed(ctx, params.seed); + } + + completion_token_output nextToken() + { + completion_token_output result; + result.tok = -1; + + if (embd.size() >= (size_t)params.n_ctx) + { + // Reset context + const int n_left = (params.n_ctx - params.n_keep) / 2; + + std::vector new_tokens(embd.begin(), embd.begin() + params.n_keep); + new_tokens.insert(new_tokens.end(), embd.end() - n_left, embd.end()); + embd = new_tokens; + n_past = params.n_keep; + truncated = true; + // LOG_VERBOSE("input truncated", { + // {"n_ctx", params.n_ctx}, + // {"n_keep", params.n_keep}, + // {"n_left", n_left}, + // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, + // }); + } + + while (n_past < embd.size()) + { + int n_eval = (int)embd.size() - n_past; + if (n_eval > params.n_batch) + { + n_eval = params.n_batch; + } + if (llama_eval(ctx, &embd[n_past], n_eval, n_past, params.n_threads)) + { + // LOG_ERROR("failed to eval", { + // {"n_eval", n_eval}, + // {"n_past", n_past}, + // {"n_threads", params.n_threads}, + // {"embd", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, + // }); + has_next_token = false; + return result; + } + n_past += n_eval; + } + + if (params.n_predict == 0) + { + has_next_token = false; + result.tok = llama_token_eos(ctx); + return result; + } + + // out of user input, sample next token + const float temp = params.temp; + const int32_t top_k = params.top_k <= 0 ? llama_n_vocab(ctx) : params.top_k; + const float top_p = params.top_p; + const float tfs_z = params.tfs_z; + const float typical_p = params.typical_p; + const int32_t repeat_last_n = params.repeat_last_n < 0 ? params.n_ctx : params.repeat_last_n; + const float repeat_penalty = params.repeat_penalty; + const float alpha_presence = params.presence_penalty; + const float alpha_frequency = params.frequency_penalty; + const int mirostat = params.mirostat; + const float mirostat_tau = params.mirostat_tau; + const float mirostat_eta = params.mirostat_eta; + const bool penalize_nl = params.penalize_nl; + const int32_t n_probs = params.n_probs; + + { + auto *logits = llama_get_logits(ctx); + auto n_vocab = llama_n_vocab(ctx); + + // Apply params.logit_bias map + for (const auto &it : params.logit_bias) + { + logits[it.first] += it.second; + } + + std::vector candidates; + candidates.reserve(n_vocab); + for (llama_token token_id = 0; token_id < n_vocab; token_id++) + { + candidates.emplace_back(llama_token_data{token_id, logits[token_id], 0.0f}); + } + + llama_token_data_array candidates_p = {candidates.data(), candidates.size(), false}; + + // Apply penalties + float nl_logit = logits[llama_token_nl(ctx)]; + auto last_n_repeat = std::min(std::min((int)last_n_tokens.size(), repeat_last_n), params.n_ctx); + llama_sample_repetition_penalty(ctx, &candidates_p, + last_n_tokens.data() + last_n_tokens.size() - last_n_repeat, + last_n_repeat, repeat_penalty); + llama_sample_frequency_and_presence_penalties(ctx, &candidates_p, + last_n_tokens.data() + last_n_tokens.size() - last_n_repeat, + last_n_repeat, alpha_frequency, alpha_presence); + if (!penalize_nl) + { + logits[llama_token_nl(ctx)] = nl_logit; + } + + if (grammar != nullptr) + { + llama_sample_grammar(ctx, &candidates_p, grammar); + } + + if (temp <= 0) + { + // Greedy sampling + result.tok = llama_sample_token_greedy(ctx, &candidates_p); + if (n_probs > 0) + { + llama_sample_softmax(ctx, &candidates_p); + } + } + else + { + if (mirostat == 1) + { + static float mirostat_mu = 2.0f * mirostat_tau; + const int mirostat_m = 100; + llama_sample_temperature(ctx, &candidates_p, temp); + result.tok = llama_sample_token_mirostat(ctx, &candidates_p, mirostat_tau, mirostat_eta, mirostat_m, &mirostat_mu); + } + else if (mirostat == 2) + { + static float mirostat_mu = 2.0f * mirostat_tau; + llama_sample_temperature(ctx, &candidates_p, temp); + result.tok = llama_sample_token_mirostat_v2(ctx, &candidates_p, mirostat_tau, mirostat_eta, &mirostat_mu); + } + else + { + // Temperature sampling + size_t min_keep = std::max(1, n_probs); + llama_sample_top_k(ctx, &candidates_p, top_k, min_keep); + llama_sample_tail_free(ctx, &candidates_p, tfs_z, min_keep); + llama_sample_typical(ctx, &candidates_p, typical_p, min_keep); + llama_sample_top_p(ctx, &candidates_p, top_p, min_keep); + llama_sample_temperature(ctx, &candidates_p, temp); + result.tok = llama_sample_token(ctx, &candidates_p); + } + } + + if (grammar != nullptr) + { + llama_grammar_accept_token(ctx, grammar, result.tok); + } + + for (size_t i = 0; i < std::min(candidates_p.size, (size_t)n_probs); ++i) + { + result.probs.push_back({candidates_p.data[i].id, candidates_p.data[i].p}); + } + + last_n_tokens.erase(last_n_tokens.begin()); + last_n_tokens.push_back(result.tok); + num_tokens_predicted++; + } + + // add it to the context + embd.push_back(result.tok); + // decrement remaining sampling budget + --n_remain; + + if (!embd.empty() && embd.back() == llama_token_eos(ctx)) + { + // stopping_word = llama_token_to_piece(ctx, embd.back()); + has_next_token = false; + stopped_eos = true; + // LOG_VERBOSE("eos token found", {}); + return result; + } + + has_next_token = params.n_predict == -1 || n_remain != 0; + return result; + } + + size_t findStoppingStrings(const std::string &text, const size_t last_token_size, + const stop_type type) + { + size_t stop_pos = std::string::npos; + for (const std::string &word : params.antiprompt) + { + size_t pos; + if (type == STOP_FULL) + { + const size_t tmp = word.size() + last_token_size; + const size_t from_pos = text.size() > tmp ? text.size() - tmp : 0; + pos = text.find(word, from_pos); + } + else + { + pos = find_partial_stop_string(word, text); + } + if (pos != std::string::npos && + (stop_pos == std::string::npos || pos < stop_pos)) + { + if (type == STOP_FULL) + { + stopping_word = word; + stopped_word = true; + has_next_token = false; + } + stop_pos = pos; + } + } + return stop_pos; + } + + completion_token_output doCompletion() + { + auto token_with_probs = nextToken(); + + const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); + generated_text += token_text; + + if (params.n_probs > 0) + { + generated_token_probs.push_back(token_with_probs); + } + + if (multibyte_pending > 0) + { + multibyte_pending -= token_text.size(); + } + else if (token_text.size() == 1) + { + const char c = token_text[0]; + // 2-byte characters: 110xxxxx 10xxxxxx + if ((c & 0xE0) == 0xC0) + { + multibyte_pending = 1; + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + } + else if ((c & 0xF0) == 0xE0) + { + multibyte_pending = 2; + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + } + else if ((c & 0xF8) == 0xF0) + { + multibyte_pending = 3; + } + else + { + multibyte_pending = 0; + } + } + + if (multibyte_pending > 0 && !has_next_token) + { + has_next_token = true; + n_remain++; + } + + if (!has_next_token && n_remain == 0) + { + stopped_limit = true; + } + + // LOG_VERBOSE("next token", { + // {"token", token_with_probs.tok}, + // {"token_text", tokens_to_output_formatted_string(ctx, token_with_probs.tok)}, + // {"has_next_token", has_next_token}, + // {"n_remain", n_remain}, + // {"num_tokens_predicted", num_tokens_predicted}, + // {"stopped_eos", stopped_eos}, + // {"stopped_word", stopped_word}, + // {"stopped_limit", stopped_limit}, + // {"stopping_word", stopping_word}, + // }); + + return token_with_probs; + } + + std::vector getEmbedding() + { + static const int n_embd = llama_n_embd(ctx); + if (!params.embedding) + { + // LOG_WARNING("embedding disabled", { + // {"params.embedding", params.embedding}, + // }); + return std::vector(n_embd, 0.0f); + } + const float *data = llama_get_embeddings(ctx); + std::vector embedding(data, data + n_embd); + return embedding; + } +}; + +static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_file_path) +{ + gpt_params params; + params.model = parse_jstring(env, java_file_path); params.seed = env->GetIntField(jparams, f_model_seed); params.n_threads = env->GetIntField(jparams, f_n_threads); params.n_ctx = env->GetIntField(jparams, f_n_ctx); params.n_batch = env->GetIntField(jparams, f_n_batch); params.n_gpu_layers = env->GetIntField(jparams, f_n_gpu_layers); params.main_gpu = env->GetIntField(jparams, f_main_gpu); - params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); - params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); - params.lora_adapter = env->GetIntField(jparams, f_lora_adapter); - params.lora_base = env->GetIntField(jparams, f_lora_base); - params.hellaswag = env->GetBooleanField(jparams, f_hellaswag); + params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); + params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); + params.hellaswag = env->GetBooleanField(jparams, f_hellaswag); params.hellaswag_tasks = env->GetShortField(jparams, f_hellaswag_tasks); - params.low_vram = env->GetBooleanField(jparams, f_low_vram); + params.low_vram = env->GetBooleanField(jparams, f_low_vram); params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); params.memory_f16 = env->GetBooleanField(jparams, f_memory_f16); params.embedding = env->GetBooleanField(jparams, f_embedding); @@ -311,66 +927,74 @@ static gpt_params parse_model_params(JNIEnv* env, jobject jparams, jstring java_ params.numa = env->GetBooleanField(jparams, f_numa); params.verbose_prompt = env->GetBooleanField(jparams, f_verbose_prompt); - jstring j_lora_adapter = (jstring) env->GetObjectField(jparams, f_lora_adapter); - if (j_lora_adapter != nullptr) { - params.lora_adapter = parse_jstring(env, j_lora_adapter); - env->DeleteLocalRef(j_lora_adapter); - } - jstring j_lora_base = (jstring) env->GetObjectField(jparams, f_lora_base); - if (j_lora_base != nullptr) { - params.lora_base = parse_jstring(env, j_lora_base); - env->DeleteLocalRef(j_lora_base); - } - - jfloatArray j_tensor_split = (jfloatArray) env->GetObjectField(jparams, f_tensor_split); - if (j_tensor_split != nullptr) { -#ifndef GGML_USE_CUBLAS - LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); -#endif - jsize array_length = env->GetArrayLength(j_tensor_split); - GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); - float* tensor_split = new float[array_length]; - env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); - for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) { - if (i_device < array_length) { - params.tensor_split[i_device] = tensor_split[i_device]; - } else { - params.tensor_split[i_device] = 0.0f; - } - } - delete[] tensor_split; - } - -#ifndef LLAMA_SUPPORTS_GPU_OFFLOAD - if (params.n_gpu_layers > 0) { - LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support", - {{"n_gpu_layers", params.n_gpu_layers}}); - } -#endif - -#ifndef GGML_USE_CUBLAS - if (params.low_vram) { - LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. It is not possible to set lower vram usage.\n", {}); - } - if (!params.mul_mat_q) { - LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. Disabling mul_mat_q kernels has no effect.\n", {}); - } - if (params.main_gpu != 0) { - LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a main GPU.", {}); - } -#endif - - // todo: these have to be set in llama_context_params - // f_logits_all - // f_vocab_only - // f_memory_f16 - // f_f16_kv + jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, f_lora_adapter); + if (j_lora_adapter != nullptr) + { + params.lora_adapter = parse_jstring(env, j_lora_adapter); + env->DeleteLocalRef(j_lora_adapter); + } + jstring j_lora_base = (jstring)env->GetObjectField(jparams, f_lora_base); + if (j_lora_base != nullptr) + { + params.lora_base = parse_jstring(env, j_lora_base); + env->DeleteLocalRef(j_lora_base); + } + +// jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, f_tensor_split); +// if (j_tensor_split != nullptr) +// { +// #ifndef GGML_USE_CUBLAS +// // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); +// #endif +// jsize array_length = env->GetArrayLength(j_tensor_split); +// GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); +// float *tensor_split = new float[array_length]; +// env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); +// for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) +// { +// if (i_device < array_length) +// { +// params.tensor_split[i_device] = tensor_split[i_device]; +// } +// else +// { +// params.tensor_split[i_device] = 0.0f; +// } +// } +// delete[] tensor_split; +// } + // + // #ifndef LLAMA_SUPPORTS_GPU_OFFLOAD + // if (params.n_gpu_layers > 0) { + // // LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + // // "See main README.md for information on enabling GPU BLAS support", + // // {{"n_gpu_layers", params.n_gpu_layers}}); + // } + // #endif + // + // #ifndef GGML_USE_CUBLAS + // if (params.low_vram) { + // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. It is not possible to set lower vram usage.\n", {}); + // } + // if (!params.mul_mat_q) { + // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. Disabling mul_mat_q kernels has no effect.\n", {}); + // } + // if (params.main_gpu != 0) { + // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a main GPU.", {}); + // } + // #endif + // + // // todo: these have to be set in llama_context_params + // // f_logits_all + // // f_vocab_only + // // f_memory_f16 + // // f_f16_kv return params; } -static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jstring prompt, jobject params) { +static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) +{ llama->prompt = parse_jstring(env, prompt); llama->params.n_predict = env->GetIntField(params, f_n_predict); llama->params.n_keep = env->GetIntField(params, f_n_keep); @@ -390,24 +1014,28 @@ static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jst llama->params.mirostat_eta = env->GetFloatField(params, f_mirostat_eta); llama->params.seed = env->GetIntField(params, f_infer_seed); - jstring j_grammar = (jstring) env->GetObjectField(params, f_grammar); - if (j_grammar != nullptr) { - llama->params.grammar = parse_jstring(env, j_grammar); - env->DeleteLocalRef(j_grammar); - } + jstring j_grammar = (jstring)env->GetObjectField(params, f_grammar); + if (j_grammar != nullptr) + { + llama->params.grammar = parse_jstring(env, j_grammar); + env->DeleteLocalRef(j_grammar); + } llama->params.logit_bias.clear(); jboolean ignore_eos = env->GetBooleanField(params, f_ignore_eos); - if (ignore_eos) { + if (ignore_eos) + { llama->params.logit_bias[llama_token_eos(llama->ctx)] = -INFINITY; } jobject logit_bias = env->GetObjectField(params, f_logit_bias); - if (logit_bias != nullptr) { + if (logit_bias != nullptr) + { const int n_vocab = llama_n_vocab(llama->ctx); jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); - while (env->CallBooleanMethod(iterator, m_iterator_has_next)) { + while (env->CallBooleanMethod(iterator, m_iterator_has_next)) + { jobject entry = env->CallObjectMethod(iterator, m_iterator_next); jobject key = env->CallObjectMethod(entry, m_entry_key); jobject value = env->CallObjectMethod(entry, m_entry_value); @@ -423,12 +1051,15 @@ static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jst } llama->params.antiprompt.clear(); - jobjectArray antiprompt = (jobjectArray) env->GetObjectField(params, f_antiprompt); - if (antiprompt != nullptr) { + jobjectArray antiprompt = (jobjectArray)env->GetObjectField(params, f_antiprompt); + if (antiprompt != nullptr) + { jsize array_length = env->GetArrayLength(antiprompt); - for (jsize i = 0; i < array_length; i++) { - jstring java_string = (jstring) env->GetObjectArrayElement(antiprompt, i); - if (java_string != nullptr) { + for (jsize i = 0; i < array_length; i++) + { + jstring java_string = (jstring)env->GetObjectArrayElement(antiprompt, i); + if (java_string != nullptr) + { std::string string = parse_jstring(env, java_string); llama->params.antiprompt.push_back(string); env->DeleteLocalRef(java_string); @@ -436,41 +1067,44 @@ static void parse_inference_params(JNIEnv* env, llama_server_context *llama, jst } } - LOG_VERBOSE("completion parameters parsed", format_generation_settings(*llama)); + // LOG_VERBOSE("completion parameters parsed", format_generation_settings(*llama)); } - -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv * env, jobject obj) { - const char * sys_info = llama_print_system_info(); - return env->NewStringUTF(sys_info); +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv *env, jobject obj) +{ + const char *sys_info = llama_print_system_info(); + return env->NewStringUTF(sys_info); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv * env, jobject obj, jstring file_path, jobject jparams) { +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, jobject jparams) +{ gpt_params params = parse_model_params(env, jparams, file_path); - llama_server_context* llama = new llama_server_context; - llama_backend_init(false); + jllama_context *llama = new jllama_context; + llama_backend_init(false); - if (!llama->loadModel(params)) + std::cout << params.model << std::endl; + if (!llama->loadModel(params)) { env->ThrowNew(c_llama_error, "could not load model from given file path"); return; } - LOG_INFO("build info", {{"build", BUILD_NUMBER}, - {"commit", BUILD_COMMIT}}); - LOG_INFO("system info", { - {"n_threads", params.n_threads}, - {"total_threads", std::thread::hardware_concurrency()}, - {"system_info", llama_print_system_info()}, - }); + // LOG_INFO("build info", {{"build", BUILD_NUMBER}, + // {"commit", BUILD_COMMIT}}); + // LOG_INFO("system info", { + // {"n_threads", params.n_threads}, + // {"total_threads", std::thread::hardware_concurrency()}, + // {"system_info", llama_print_system_info()}, + // }); env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv * env, jobject obj, jstring prompt, jobject params) { +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv *env, jobject obj, jstring prompt, jobject params) +{ jlong llama_handle = env->GetLongField(obj, f_model_pointer); - llama_server_context* llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); auto lock = llama->lock(); @@ -489,17 +1123,20 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv * e llama->beginCompletion(); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv * env, jobject obj, jobject iter) { +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) +{ jlong llama_handle = env->GetLongField(obj, f_model_pointer); - llama_server_context* llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); - size_t sent_count = env->GetLongField(iter, f_iter_n_generated);; + size_t sent_count = env->GetLongField(iter, f_iter_n_generated); size_t sent_token_probs_index = env->GetLongField(iter, f_iter_token_index); completion_token_output token_with_probs; - while (llama->has_next_token) { + while (llama->has_next_token) + { token_with_probs = llama->doCompletion(); - if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) { + if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) + { break; } } @@ -510,85 +1147,186 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv * env, const std::string str_test = llama->generated_text.substr(pos); bool is_stop_full = false; size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); - if (stop_pos != std::string::npos) { + if (stop_pos != std::string::npos) + { is_stop_full = true; llama->generated_text.erase( llama->generated_text.begin() + pos + stop_pos, llama->generated_text.end()); pos = std::min(sent_count, llama->generated_text.size()); - } else { + } + else + { is_stop_full = false; stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); } std::string to_send; - if (stop_pos == std::string::npos || (!llama->has_next_token && !is_stop_full && stop_pos > 0)) { + if (stop_pos == std::string::npos || (!llama->has_next_token && !is_stop_full && stop_pos > 0)) + { to_send = llama->generated_text.substr(pos, std::string::npos); sent_count += to_send.size(); env->SetLongField(iter, f_iter_n_generated, sent_count); std::vector probs_output = {}; - if (llama->params.n_probs > 0) { + if (llama->params.n_probs > 0) + { const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); size_t probs_stop_pos = std::min( sent_token_probs_index + to_send_toks.size(), - llama->generated_token_probs.size() - ); - if (probs_pos < probs_stop_pos) { + llama->generated_token_probs.size()); + if (probs_pos < probs_stop_pos) + { probs_output = std::vector( llama->generated_token_probs.begin() + probs_pos, - llama->generated_token_probs.begin() + probs_stop_pos - ); + llama->generated_token_probs.begin() + probs_stop_pos); } sent_token_probs_index = probs_stop_pos; env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); } - } else { + } + else + { to_send = ""; } - if (!llama->has_next_token) { + if (!llama->has_next_token) + { env->SetLongField(iter, f_iter_has_next, false); } return parse_utf16_string(env, to_send); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv * env, jobject obj, jstring prompt, jobject params) { +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, jobject obj, jstring prompt, jobject params) +{ Java_de_kherud_llama_LlamaModel_setupInference(env, obj, prompt, params); jlong llama_handle = env->GetLongField(obj, f_model_pointer); - llama_server_context* llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); size_t stop_pos = std::string::npos; - while (llama->has_next_token) { + while (llama->has_next_token) + { const completion_token_output token_with_probs = llama->doCompletion(); const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); stop_pos = llama->findStoppingStrings(llama->generated_text, - token_text.size(), STOP_FULL); + token_text.size(), STOP_FULL); } - if (stop_pos == std::string::npos) { + if (stop_pos == std::string::npos) + { stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); } - if (stop_pos != std::string::npos) { + if (stop_pos != std::string::npos) + { llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); } auto probs = llama->generated_token_probs; - if (llama->params.n_probs > 0 && llama->stopped_word) { + if (llama->params.n_probs > 0 && llama->stopped_word) + { const std::vector stop_word_toks = llama_tokenize(llama->ctx, llama->stopping_word, false); probs = std::vector(llama->generated_token_probs.begin(), llama->generated_token_probs.end() - stop_word_toks.size()); } llama_print_timings(llama->ctx); - llama->lock().release(); - llama->mutex.unlock(); + // llama->lock().release(); + // llama->mutex.unlock(); return parse_utf16_string(env, llama->generated_text); } + +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) +{ + // auto lock = llama.lock(); + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + + llama->rewind(); + llama_reset_timings(llama->ctx); + llama->prompt = parse_jstring(env, java_prompt); + llama->params.n_predict = 0; + llama->loadPrompt(); + llama->beginCompletion(); + llama->doCompletion(); + + static const int n_embd = llama_n_embd(llama->ctx); + // if (!llama->params.embedding) + // { + // // LOG_WARNING("embedding disabled", { + // // {"params.embedding", params.embedding}, + // // }); + // return std::vector(n_embd, 0.0f); + // } + const float *data = llama_get_embeddings(llama->ctx); + std::vector embedding(data, data + n_embd); + + jfloatArray java_embedding = env->NewFloatArray(embedding.size()); + if (java_embedding == nullptr) + { + env->ThrowNew(c_error_oom, "could not allocate embedding"); + return nullptr; + } + + env->SetFloatArrayRegion(java_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); + + return java_embedding; +} + +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring java_prompt) +{ + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + + // auto lock = llama->lock(); + + std::string prompt = parse_jstring(env, java_prompt); + std::vector tokens = llama->tokenize(prompt, false); + + jintArray java_tokens = env->NewIntArray(tokens.size()); + if (java_tokens == nullptr) + { + env->ThrowNew(c_error_oom, "could not allocate tokens"); + return nullptr; + } + + env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); + + // lock.release(); + return java_tokens; +} + +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decode(JNIEnv *env, jobject obj, jintArray java_tokens) +{ + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + // auto lock = llama.lock(); + + jsize length = env->GetArrayLength(java_tokens); + jint *elements = env->GetIntArrayElements(java_tokens, nullptr); + std::vector tokens(elements, elements + length); + std::string text = tokens_to_str(llama->ctx, tokens.cbegin(), tokens.cend()); + + env->ReleaseIntArrayElements(java_tokens, elements, 0); + + return parse_utf16_string(env, text); +} + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv * env, jclass clazz, jobject callback) { + env->GetJavaVM(&g_vm); + + if (g_log_callback != nullptr) + { + env->DeleteGlobalRef(g_log_callback); + } + + g_log_callback = env->NewGlobalRef(callback); + + llama_log_set(jllama_log_callback, nullptr); +} diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h new file mode 100644 index 00000000..b1968a22 --- /dev/null +++ b/src/main/cpp/jllama.h @@ -0,0 +1,85 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class de_kherud_llama_LlamaModel */ + +#ifndef _Included_de_kherud_llama_LlamaModel +#define _Included_de_kherud_llama_LlamaModel +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: de_kherud_llama_LlamaModel + * Method: embed + * Signature: (Ljava/lang/String;)[F + */ +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: encode + * Signature: (Ljava/lang/String;)[I + */ +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: decode + * Signature: ([I)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decode + (JNIEnv *, jobject, jintArray); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: setLogger + * Signature: (Ljava/util/function/BiConsumer;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger + (JNIEnv *, jclass, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: loadModel + * Signature: (Ljava/lang/String;Lde/kherud/llama/ModelParameters;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel + (JNIEnv *, jobject, jstring, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: setupInference + * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference + (JNIEnv *, jobject, jstring, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: getFull + * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull + (JNIEnv *, jobject, jstring, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: getNext + * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext + (JNIEnv *, jobject, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: delete + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 1d7e3413..6235c82e 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -14,7 +14,7 @@ * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(String)} and * {@link LlamaModel#complete(String)}. */ -public class InferenceParameters { +public final class InferenceParameters { public final int nPredict; // new tokens to predict public final int nKeep; // number of tokens to keep from initial prompt @@ -263,6 +263,8 @@ public Builder setNBeams(int nBeams) { return this; } + // default charset usage for Java backwards compatibility + @SuppressWarnings("ImplicitDefaultCharsetUsage") public Builder setGrammar(@NotNull File file) throws IOException { StringBuilder grammarBuilder = new StringBuilder(); try (BufferedReader br = new BufferedReader(new FileReader(file))) { diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index e06ad014..e6cd2d3b 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -55,9 +55,14 @@ static synchronized void initialize() throws UnsatisfiedLinkError { cleanup(); } if ("Mac".equals(OSInfo.getOSName())) { - // todo copy metal file + String nativeDirName = getNativeResourcePath(); + String tempFolder = getTempDir().getAbsolutePath(); + System.out.println(nativeDirName); + Path metalFilePath = extractFile(nativeDirName, "ggml-metal.metal", tempFolder, false); + if (metalFilePath == null) { + System.err.println("'ggml-metal.metal' not found"); + } } - loadNativeLibrary("llama"); loadNativeLibrary("jllama"); extracted = true; } @@ -164,12 +169,17 @@ private static boolean loadNativeLibrary(Path path) { } @Nullable - private static Path extractFile(String sourceDirectory, String fileName, String targetDirectory) { + private static Path extractFile(String sourceDirectory, String fileName, String targetDirectory, boolean addUuid) { String nativeLibraryFilePath = sourceDirectory + "/" + fileName; // Include architecture name in temporary filename in order to avoid conflicts // when multiple JVMs with different architectures running at the same time - String uuid = UUID.randomUUID().toString(); - String extractedLibFileName = uuid + "-" + fileName; + String extractedLibFileName; + if (addUuid) { + String uuid = UUID.randomUUID().toString(); + extractedLibFileName = uuid + "-" + fileName; + } else { + extractedLibFileName = fileName; + } Path extractedFilePath = Paths.get(targetDirectory, extractedLibFileName); @@ -215,7 +225,7 @@ private static Path extractFile(String sourceDirectory, String fileName, String * @return whether the library was successfully loaded */ private static boolean extractAndLoadLibraryFile(String libFolderForCurrentOS, String libraryFileName, String targetFolder) { - Path path = extractFile(libFolderForCurrentOS, libraryFileName, targetFolder); + Path path = extractFile(libFolderForCurrentOS, libraryFileName, targetFolder, true); if (path == null) { return false; } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 1f73bc1e..92358b14 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -3,10 +3,27 @@ import java.lang.annotation.Native; import java.util.Iterator; import java.util.NoSuchElementException; - - +import java.util.function.BiConsumer; + +/** + * This class is a wrapper around the llama.cpp functionality. + * Upon being created, it natively allocates memory for the model context. + * Thus, this class is an {@link AutoCloseable}, in order to de-allocate the memory when it is no longer being needed. + *

    + * The main functionality of this class is: + *

      + *
    • Streaming answers (and probabilities) via {@link #generate(String)}
    • + *
    • Creating whole responses to prompts via {@link #complete(String)}
    • + *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters.Builder#setEmbedding(boolean)}
    • + *
    • Accessing the tokenizer via {@link #encode(String)} and {@link #decode(int[])}
    • + *
    + */ public class LlamaModel implements AutoCloseable { + static { + LlamaLoader.initialize(); + } + private static final ModelParameters defaultModelParams = new ModelParameters.Builder().build(); private static final InferenceParameters defaultInferenceParams = new InferenceParameters.Builder().build(); @@ -34,26 +51,83 @@ public LlamaModel(String filePath, ModelParameters parameters) { loadModel(filePath, parameters); } - static { - LlamaLoader.initialize(); - } - + /** + * Generate and return a whole answer with default parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prompt the LLM prompt + * @return an LLM response + */ public String complete(String prompt) { return complete(prompt, defaultInferenceParams); } + /** + * Generate and return a whole answer with custom parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prompt the LLM prompt + * @return an LLM response + */ public String complete(String prompt, InferenceParameters parameters) { return getFull(prompt, parameters); } + /** + * Generate and stream outputs with default inference parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prompt the LLM prompt + * @return iterable LLM outputs + */ public Iterable generate(String prompt) { return generate(prompt, defaultInferenceParams); } + /** + * Generate and stream outputs with custom inference parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prompt the LLM prompt + * @return iterable LLM outputs + */ public Iterable generate(String prompt, InferenceParameters parameters) { return () -> new LlamaIterator(prompt, parameters); } + /** + * Get the embedding of a string. Note, that the prompt isn't preprocessed in any way, nothing like + * "User: ", "###Instruction", etc. is added. + * + * @param prompt the string to embed + * @return an embedding float array + * @throws IllegalStateException if embedding mode was not activated (see {@link ModelParameters.Builder#setEmbedding(boolean)}) + */ + public native float[] embed(String prompt); + + /** + * Tokenize a prompt given the native tokenizer + * + * @param prompt the prompt to tokenize + * @return an array of integers each representing a token id + */ + public native int[] encode(String prompt); + + /** + * Convert an array of token ids to its string representation + * + * @param tokens an array of tokens + * @return the token ids decoded to a string + */ + public native String decode(int[] tokens); + + /** + * Sets a callback for both Java and C++ log messages. Can be set to {@code null} to disable logging. + * + * @param callback a method to call for log messages + */ + public static native void setLogger(BiConsumer callback); + @Override public void close() { delete(); diff --git a/src/main/java/de/kherud/llama/LogLevel.java b/src/main/java/de/kherud/llama/LogLevel.java new file mode 100644 index 00000000..25520f0e --- /dev/null +++ b/src/main/java/de/kherud/llama/LogLevel.java @@ -0,0 +1,28 @@ +package de.kherud.llama; + +/** + * This enum represents the native log levels of llama.cpp. + */ +public enum LogLevel { + + DEBUG(-1), + INFO(4), + WARN(3), + ERROR(2); + + private final int code; + + LogLevel(int code) { + this.code = code; + } + + /** + * Returns the native log level code of this option + * + * @return the native code + */ + int getCode() { + return code; + } + +} diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 534e3d6c..9b91a134 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -5,7 +5,7 @@ /** * Parameters used for initializing a {@link LlamaModel}. */ -public class ModelParameters { +public final class ModelParameters { public final int nThreads; @@ -101,24 +101,24 @@ private ModelParameters( public static class Builder { private int nThreads = Runtime.getRuntime().availableProcessors(); - public int seed; - public int nCtx; // text context - public int nBatch; // prompt processing batch size - public int nGpuLayers; // number of layers to store in VRAM - public int mainGpu; // the GPU that is used for scratch and small tensors - public float[] tensorSplit; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) - public float ropeFreqBase; // RoPE base frequency - public float ropeFreqScale; // RoPE frequency scaling factor + public int seed = -1; + public int nCtx = 512; // text context + public int nBatch = 512; // prompt processing batch size + public int nGpuLayers = -1; // number of layers to store in VRAM + public int mainGpu = 0; // the GPU that is used for scratch and small tensors + public float[] tensorSplit = null; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) + public float ropeFreqBase = 10000.0f; // RoPE base frequency + public float ropeFreqScale = 1.0f; // RoPE frequency scaling factor // public llama_progress_callback progress_callback; // public Pointer progress_callback_user_data; - public boolean lowVram; // if true, reduce VRAM usage at the cost of performance - public boolean mulMatQ; // if true, use experimental mul_mat_q kernels + public boolean lowVram = false; // if true, reduce VRAM usage at the cost of performance + public boolean mulMatQ = true; // if true, use experimental mul_mat_q kernels public boolean f16Kv; // use fp16 for KV cache public boolean logitsAll; // the llama_eval() call computes all logits, not just the last one - public boolean vocabOnly; // only load the vocabulary, no weights - public boolean useMmap; // use mmap if possible - public boolean useMlock; // force system to keep model in RAM - public boolean embedding; // embedding mode only + public boolean vocabOnly = false; // only load the vocabulary, no weights + public boolean useMmap = true; // use mmap if possible + public boolean useMlock = false; // force system to keep model in RAM + public boolean embedding = false; // embedding mode only private String loraAdapter = null; // lora adapter path private String loraBase = null; // base model path for the lora adapter diff --git a/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so b/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so index 1bdc1b3dc7a526a2c35fbcded95439f207375c2b..062140dfaf49f34131e2614729c67823943c5898 100755 GIT binary patch literal 5342576 zcmdo!33yCb)GrZ)S_ZLGL+zBAtkgEhAVM;d*q6y38u{L3F}X{NB&>p7>dl-V>fI50=8OSfk%0KMlRNcYSA` zkNBBhi$`<9Q^>CiyvOwNs)^Leg;9QD{R`jI$|6VMDcB;*R}R2zrhQ0PusgRbhN}p` zk~@9pZ3@1#-@E{rVKe&8D{|{sEpy&YS@jcL#F?=V|E>{G6n^50fSyZ1CN}uYY92lo zk)?By9;1|;dntJhjvHQXoN;uZ#_q|LhTn@afi8P`dbt<*dG>sd=rnn+4qO!vdqYmO zV^QfroM(;~SIo1fJdi8Gsbn>3c-lN`dPC)2H_9#~cHlhQfFk5;R5_lJa$v-DSWwr4 zt5eS-(l)}!R#=`RcPrr0p#tZol5?#`xkCxsLCHqQ>sIg@RispbLY`ccy{ejSGPB(y z@H4K0*96YZyMAe}B0)pbIL?!kb6y^DZn(;Q1lPK?t*E=M;(Hmh-8j3ayH}vc-I_m@ z^(dK@B|9t+bT@GIYn0|9;f)HO+$hey=3;jZx5T3eSAIHZvOpx~uJZ57wA@9?&&eWqmWGn zHId~}NM$Q3pSsAM^H3D@{K{6fl;#6ZZXu`gC~b3Vr{Pp8PFD0rhTLOY&?q@4bC+>) zPnDaeT;}V+*}x|iQE}Wj`=Ak=P388z{9@5X9MlEm1xB$~zOvAWAwA`zhI5{tP;d`B z_krBqZRhr{GfI5`mf+FEv-1Lv4qS&(BRhDgu5*)D1#lkiJmnnM5mfBvu2IRk+Q7Gz z2UoWoC$n+y4KFA!U3|jM$i;4UnJmq=Pv*&O?*JvUm9>Le7F2i)mutLKZ8E-}ebK#? zS6YUTNZyBGVO zEB78(YYu0tB$vxPEFC;5wr*J5jZ?UnN~`LYuBz}}Yfe^bcrA4S$MDh`y94C(<79hf zGTZE0o;Eid=jK+l49C@tl*?43YuF|aUm$DEjk2o>ah`56Iq0Oda)gQ-HG-25=Q@E7qHo*vr;7HF+s2JzW+~%5YPhq8>sG2$UC(0mxuTp`kIxD&D;Bx;y}*&> zxWYAS%G^{1i`13%b>~zgICpn9PIe+)Q#30p(&JI2M;kYJ^*~Jln+I3g29B;Y=lNNn z2j^?!BHg)8?(S3f%HHE5)o!h2HQd&zBJEtEeMJj{pbaxPFNN*0+_Q~mg#z4&G>@#b zEHDAL)?xC(Q3fbj)(H1{(Od`jQL?~5nN6i~bNBLU!+ZftW#CyBpaMW8fXV>x0|==a ze69&l2cRxMLjVPU9{@`M@N7z-+4qm&b2EUJ0IdN60n`BP09fh>&&~iEfG~h?0G1-? z*$tjO0D1!S2IvQ%1BeEQ1?Uf81c(EO2Vf}yo{0d-04anU0?&^DJ_Q&KFalsCz$kz* z0Am5h0elWH0U!f_rOEJ|N}p%Jb1uLG5Y>9JWm7U09+&-zQJ)< z;QLj8>j1atw>$8>3-AEoA;9kdj{qJ6JO$v~@ojf_769;|?}gy$2~ZTE7(hvYQUEN} zDF?t(d3aU;s0dI6pc(+Q0zTD(XKjGG0QCSG0AOt`I&;=k2ARM48KzD#%0DS=Z0SHM;pLOtz1~34`0>l9%0GI(R09Jq`fE0is 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

    -1QIJxESx1kzyiq*WY??`T)`6_El!wnFx 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 z%0D-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%0DkIX!|Ty!?2xidTHzUvDzmY4rGcq-5Zgy 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

    VK9_QY&u1cvQbXhZOhtft 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

    eGDM>~iI7SpCdppFFPMCzAQUZr5)|h;M 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∨LB4t*vh(k?+eJ&9ZwJQvq2|~k)L)={DF{SChPW0Acer8EV6I9#?ozEJ^Uigfh`{aCza=Ysn=YDpV^gp#wC=XBn(6#C&}A@jH^A{J=?G z0G~K0nM+{BjBZ<1lx*A8ZlI0Cq9T~n0@J;DP=fmv=aJw}JpIXwKxxkxo#kU1B77=K z(9c=^n!5gc7y1$=gVlfte%ATO>a!SPY*t{jq4 z4NSK%bLSNlZC*GelOyUsM?v7+mvzol(PbBU(mRA1Hv6DhG0rRU5Z;$0#DRt@ zzLj94QyV^?!;sWP946-|`B*U@lHQ4!LvxD%0N4~N;M)n(_B_+0^eN|| z6ObZF)FG59LFl;CyjV@eLVzbh2n?+$PtpvPz@h2VTZa)a*vH<$_k^0u)PpsZxDV(K zshHN(BB5Mfd{z;RKmAn^p{JjT05YZWG(6v&;fDB$XJU8)@dw@jQS@Gj@7_ZwzV4(w zz@M~?=t`{R+v9u+_x-sKZgnQG2e-LpnLjkdZG7HBbk3cuc+2ljN23DXviFMm<*A63 zE0*J;69KyHH1w3%i3+`XYH{evQ{0gJ=v4Gh$s*q20I~q;!}7$oidg#9+K4=1&PP~T zSI>i$;0|gi_TrrdV0wEa>f<-`3$)4)ynIp-^)tnRE0-6=w&O3Qe`xfUQhs6qiM*wh4B-bn zMhVhBKUZ@&;4wNrp3{gZvE4l%K=Xp7R4Wu{WfKo5p@!%J3W}Kne37PdDKZOfnDX{X zP%jYFX>H_lqKLw0P)~#*(EVhqszh=nx!`-hT6J8mKoDO^l&mh2rl5`p zB|@g$V_5{j;XQ#<2|;wWW2Was(C;fd&^LtLwUzU4wjjHlGJ(7a{;n_l_wh|z3M2R3y71p~NHfYFHE_^Vlk2z~>@+b2R)kB1Q$CE(-L8 z9mFtd@Z&DsCkA(cUcwW-0FDPzdNnEr{o#_Fj*7ZHq!ayn;zaW26UkTOuOQeQt=xMl zU)(=E1U5;cC-FTJ7)Nasic-OLHD^>5!^_5Hbvq+(F@zelwMmvPvNdx!mdVFM+|Nn zn=IESJ^G53^$|J&RunJQpX`9cLeNV-={hONpxp@a`#dKlE-@|m5-{=eUxuXB4i}uT z@u4U$$u|r>WCyMVT*{NZp`IGH4*SrdBpt~p57FvKW(=K4`WRP-lc2nkecUs8V*8Ya z7?96wKqB#`cOXe_L$9jx4!pa2%Z1`f-d3Vq{Ko|I~vf}X7W^?%8;-0 zj5Aj`l^z)l=DACI@_b4b*l{+X=;_PmE^%jr#oO&@8-e)$5NIo)RPwb6tZT5PnP@KI zZ|Ff26x2^tP(KS$Ur10lz9mj`+7fysWG`6gBir%CdJx(@qK7|eq!9&^SPw{E`UIEj zJ1_y|eFXNf{uBWU0bhnkXXTFLa1(=wo>y>w=Gfw(C&JIg8GwrR&Le}cZ2n}AY!ZQLGgf&O)BoQ>98;zu=t)D$5qCLS#XXi_#)-oLAkN3gF7i>JSYm+dA=LF zI`XFhOZduZ9f$ihbLugX^;iEbUTqZTYCn{U$PV;<4zK%hzIFgpqd zf@cd|+iXaL=Mw)m_93>iPlt{d3sr*d7qaZvp!89Y@No!^@?Kl$2Bn+)B3HskrOl?* zgcHeh6IKp10w$|R;A7L%JaKY@zb0L*!H4>d68;A2vQ0$!gub~0jUdu{AMBbGpLxRN zGpLU6J`z3zP23I&LP-;^f>5P-=3*4mosw!tNRDieGy(Le$pwAs&4G^rVlutp3n^>D zdE-hze!24b6>1a{Oe;qoye2||$-&VBz6^lAb@`?072E_PZYh&3c^V-~RKNi7UrJ*W z2ubwWIEiSF#SqVHtK@d-3a9>xXTW8w;{f;x9U(+MlQ1T9fP?<`Arw&Bq(>&j#Hgdu z#o7Y8I3K1@Ebx{y6XJyfUA|t{HTYKw=UI#i;T*QG6lI{^PO^+g-mb7N$G4+JM8W?< z09FW^;JqZH=q$-o4B=z|eNFWQnO;~(FCZVVsmvvy^=S&{%5_G7Y2_mZbj8IXcx(V& zVGM*QOr&;MYBs7O7q0OI1=5=s@{L ztEBQQj14AYwgTiffqa%42A93eB0{?_T=r7*V!0ZM?iX^&&BZ0i6=%|dih5{vVXxSY zcX?)JlD@0xsZT>x(uL-55Wln9eFd=*L6S{7*vikoGV@Z+oC8>Am!c zTHn2$NBSnm?xlfQ?ngHWK=G8-0OC7YVj&#A3E4j0MDE7AS`E--P6X4j?*mZWsHoBLMqe0;gb~myiz` ze<5wdo90mQI=Wk}qc!L-AB|ghIDjO6CMMT&?{g}FO3bVBcA#oLv?nP<>|>sZ2`uKQ zFB(daM={;ZWf4sZac6kQQWK9A=C%PE!cQn?uoy35>3^DC#M0$A3BE=_Tz#*nZ>b%t z!P7a_O5&oNn{rn|`MFwXX!$43^8Owx=rM%rCzEbU{y`E;(jHvraop|nM@ifag&hir zu5cLFWE`KdoXlb z=Pxt>o}V5h68zy^7##k&E5H!3J^n(Nl22Fh-*RfPT11JzWQo5l_c6Vk5WaT^{gJP~ z9VA7NpP>Ys<;04R1@Zg7?Q#|oS>45cP%w80<_^K!@nG&@3@~5*CSb1Q8zMYDy?U%= z@3r*!VwCR{=q9r~-WOr;kTm@eUKa^1aw@J)fgZl6JD;c9V{_7ADdBV$ITZ@rCD}?Q3yyAGML@IcdblK@qc8@^&SplfaB;pN*rpa`r18J)^f%B`# zAy_TQLNM120tBcg4cEyaT2A~$`S^reK{TF7dUm_c?ktaX2QDrOBuzvIQCa(o9v3@)&7U&j{_3%2VADpT0pVUbzOAYl{CjPP+Ocn zG&ljG?NAHUQO^gp1>X{&eEfriZDP{js}+=JyM90sq!qPmJBn9Omyy#7Dw72Au->59 zO436)ybPkRMQr6-wJdf9i>MoJY4#UYH~g{kUrLLt8@_fjmQg$=@q>BJ-wsoHj3P9w zE;+vrBMta~rmq3#fBMnGc{Z5Yo{SEvxakf9O%xb@~%nMk}qB$wSg`6J1VE&1t8UPQ)?saK7t; zAHL(l(EPly9SsDBfnE>7xRsCJq8F9c=3nDlwjaO0mG(COZh8v4<)L(J6kxCiqfLw+ zyHtuP+ND+xn|719cdZs-?D?DKEjWJ3;DyI$wE;`ao{as#t{UBciP-=zcMVndG!2XW zZEYXN`qW|#*T%oT2}%_2GVShdP!WhVFj2y_X6RMIjLuJm7pBjfg^y7r2(=}2Y&7mg{efzetj+M^L6!qo_qJJ7T zy^T??z?gLgW(2S?ESQDD`L~BZhH}d&h293A=Lf$C*nuN6C^;!+;XX^mF;f1|`z4^G|)ObbDA1hG8AX<{YElC!jl$%1nKnLFb}h zXWJbtJ{k($+<5&JRP}`^p|COv+tX2;bh-vAy}waB)R=dW=JpL5+sL$OkMJ~$KM&Qj z=b7(43F zRnoK`JLAntscWE84c*Mb;-ov6$&Ae`DqmlRY_ZL78dj-ork-zscIfK{2CSrQJ%9Yj z&=%-EK(%Y2QtjFT<+DO&3o{->rCXT(;VTT4Zh_@jy!-eSn6^HuCyn(MAYu!PKe9nQ zUPl`DTTtgSa6X16wC14XHBf1ZQpWe7$ZDZNXnDN{P465Y@hXE#VRDPK zt5KDMX3pO%cK7g_slAWd7Hn3%({`eFQFQapwQ>s-?kJzq5T_iVH*qp=;za{nN6Pwz{{8w!wZT!bpaiczDRIi+!y} zK&2gFInnS&4Yb2#rn+oD8zCgOlgZBs%klT6O!v@;iVNPBo2$;6P%#W=?A_QvRj}P*8nD;-H`!`hTUqRH(r5<-t>dae!T8^#Y@8h0 zS_F=*0LR||atCP}bIu3IMvoszV;XvO-(-BB{XnwV&Z;(x=89q@l;;Czu-<6Ic=Etx zo5|u^A#`tL#!SG_s;(gz{v9ghY19-zgL3^HDy26g*Tdr}S8OZkd~YSa*R81)9{_$o4zvd`+#RhVGUuDI!~093~|`;RFyjTgv(!s=Ib5s%y1C zlUfvQydLJTP2g6BPcUevB8y@nUTstbYBMPtDvs`!#z{MQ(t4Pqd#H?$pBP4MZ-hnD z9<{v@j)s1@6Fd)OfvAtl-VAddI}qcR*a`-Mjs*Y#MX;c4g|z}zmyNn8Sc?W3X94@x zhhWWk%lP*3L`!@Xav8{0Fc470Hv3kV;Gxx~#-fE6>;x4TFpr8hDAdhAJaX8-56ASC zJE7fs@^-ynI{P!WubpvPuR7Z}Xy>n_h>Lnwl4VuaWEe^A4FeslKJy&NXb#_TG#JSw zD4j;DM0vVOln&o9BwZN3S{cjK9qEkggpDx6Ly#vHLA5pE-opcJ30mo^}wtPh0&LNek+O^jN(J z>Z&QIn?iFDa?ls!AePY^4T&H8HY0Qa1Sw0sg+u7E0kJk<_*Si1oZ}1q=()pd9p<= ze_9NLsTm=@<*^sq#AH_C+z@AzNu88*Jo8vuwKnKOp`{2{<)8)%Ur$oJ+JO0~%@X1m zeC|Lqoy=4kkAsv7BNRMW3epRuaOh|7#@K7tDdb|+c4N(~Evtj9>EOr~R z{6l3?s-#&`CA}Gnk6-s9ZPC6;krd&kEGd$X-64|JJxeHNs;5Vq?0UaVo635mckV33 zbi(J)Y91Lg$aMw+z1G~ALA+lfeI{il59QF?C>e{feCJqwU@Ua}2OwpO18K6}Sx5S? zh+QXZbDv1#{w2K3Y57cB#Es9l>zKU9LAo^_mu0ZH3LAdp0|p-2NIUZ>to@{&8Qv(2 zFDYquDZPFgwjWaMGH^N+<0L6@Tc3TF?tE%>a-;YvE_GJ{jk)h5>ERaC3xeDYG^- z`HG+67Vp)k{X+|}M%ztJY|5N z_Oqm36_y|M_tR!S3u!Mj_ArmxVhohL(*7(|^3C?L>_(}-9)f|6Ht4WqF)zQ_?hQXZ zC9MYs>3LEN#n%Np8PcKe>9}=$q_jQZEP_5Ym|NYDdpq$K6;N)}2j*L zxkWe>=$X^AaOG2_z7?xuz9a1m6QVAbVDa_gmNsU%iIOH27asY3GGy&w>W4V?_WY^N^~HI9huHy z>QM!8of&z@Eyj0`c{ul8vJ}1BE68y(0_+%daDK?ah>t(oUY2{MiY~qlJD4uMC9`v| zqY65VrwNvoqkBM5)WS^zMLw8NMC0mE9cYP*Zo2$pDcu8d14FHXOJ#~Fz;=a8WJ>nP zGaki*0P+mCVN^!1&MAWH+K4^t2T8A5te01#QFuIGQQXx9CAzCyK)V8xXNztD8GXme zyq%@H{dDmvSER23*;<#|mw@15xz8pvN!z}JPw1-{3wl;eaqu0a9RZ@+MARb{QAc(M z(QWxaBIQN8At-vnl$Qb$;@|`YF0RjTb1`1PCtxr7(ARRI*2(=^hd32U@cz76+Y*)KW&_Y#1dM zf3u|fg)0@n>C)91irh*MGy;HsPebqqf!R20g5=wX?!Fq9(TO(?E1>7-RxRYeG4W_p0X1%Ems;7K znt!Rb08Fb$y6g7O?VSDQ#V}H-j_p^>Rcrz=TwR9VQW!`7iZSjo9iZ4Dh#yQ-nI8~b zX2ysS!n@-T;%Aa-CO+39Zt!B4=nCOKY!@pQ_y{)%;Xn8Y$5)(pjRdUh5#$s%$+>I- zrVNRj5HdW7|FM{xzye|rGZd!hiUZwzrqbD9)D@s{OT0%-TAzCd4M0;s<`q7;p(z4} z?7r+$WCp8{1ap<{sbfR9#jJF0BcSfd&m(W2BmB{zS134X&Ayq?{fOcvqJ0gKZmc?~ zc2_zy_K_v2Ea)mauR^5k4?I&)b|`oc*dr(&K89HNJX{INn&`E-=}0e(vV#bc)KUqNfaVf5xsx1S}JZMCYF(+Cl*h9 zqC?JogIf?p;F;dq2?>~rI$eE^2lF0CFcSBuI}o5dn724}0NoI#X{^|{Mc`&Te8~V$ zNz3W$vhPwcpqEQI$m1k_x(H6?z)OT(>5@)`_}U&QmDmNv$$Lv(=E2`8#r(pjOtd(N zd@|%l4$IMN_oApLp%k}6j)%!O8xjf_cpl%EL1(rD`@`wP%iX0Af(fy0e6%cDFJ0jf zoW#AbPrQXPmRmWACi?OTt!4aFPmNGd?zLLBC`JQrkt2wY_AvWzL;SA2xD0f*NjYI!Qv4cEgfUxdNuElqwEkmy&ME1XxF&$edT4 zr1ZZF7V&JcL+B?FAt9BBsr!-Y31kBAn&97~8ktl9V^JuO zkc)9rA-TbqN+>P}@gI(b4obkjcii|W^i(S!M1+NK$xqfv7|cO5Y|yE7QYP(&rPvUPqdYkVcLflFk6c6_FN5gQRrI`w@Y4r-OHu8B z<~rE7L+slL0ImlB$5Yb2m8v23?LC6DG)I7Osu3Y@PpC|F$GYMD?KG_qK|F=g0cf*f zERg!?XHe`FzV#RaI$oC9bCv$)4^TC+zdVvitVV*Mj%fB}@1kQ9 zS3nFFP2x641d>cB7QbmxyCRQnVNG^Uw|vy3hkVyh*_L3K*#mwa^Z20?r-?hiXIb5jwBd&2Hfu&3NOO z0PP5!baXeTk#$FP2f%0CGEy00Ewj21g`vSGOuWYNmkW4#CXTVwp@6sGsm%U(JsqUb zKJy)gm&<+G#KtVAT z4UwY`gqu?E7VV(}k(76O2$nKD7kyPjK+*EH!}bV{on0Ipnjs`1vB%G=vjBT|2XyB~ z#$ZYX%v{dFx^ISq&W3kr2fzX<=;1OLj3+IU>V&5jqvNb&<4C!>iVB=Hyh zhT_04ivx#v0eG_MhBxgmb9Qk9K<$mw^p6fw)E;*b46Yc6F0&5~lr{<8XlR+eVSTW8 zS_Efh$BZOKb&RO?Ovs99HU$(8&I&=2VB@1!&*BZH60T*hDK7Q(3hF1u#tVL|^ssK) z;00gUGkB{P>;|};J0aXa)1pB)ra^abr$(1F8;XxH+}mq7X+#pbF!+}a*`O{Ax=I1H zc@^U8=t43{*(zv^Zr3aA(d};1|1gBxS*?~$%|RhbaQT%mA_1R^5RuQKo0`z3()dXe ziJhpOP2@Wb=@9$!QUbRkF6}m5#aUWIBUnT2UQ2wo@4f=zU+4%m=;9CVd7+)f^Xe)O z=Ge(2_#jw`d3Z$E$8~58IS7T)sZ8L-;RFQ1ifhf!_DC(qAycEx-@L zBOyx0-L(ci9tCI5ISsJ>VQ1C8^CV_O1GGnXz*GB6R5R3*OGQab&ZRa|(}J4!hB~G(N)d=EznZHWh^fhT159Wp`iwLu4t|$^JA$6{$31iDYMU>sDbEs$;z%HL0qY7 zhCy_Cwe32ehx>0%Rf&|e4nhwx{k0Tj9RM%J=)Bx8i8u>szo~#r@;w$)rGZS~l63&L zMHC!Q$lE)31+ebLf&lWNgfX6mXS^D&-Rg7~uOp*lC9xgitu_p|F&!s{`OI9nG!D9n zr%HPpmG9ma1Yy-(L3hWg0*Yk&5uy?EzXpm1V?S?XaOVfurZMxdooFfHuZ!aQu#BIh z@O=*OeKO(OAU!~P@CEcZ7CZdEU*K_Xx|$29djesgrRfUlir1jKNpwj^@1G`WJr zD`G5r?Kf4+Fc~NAOZzJpsM)Wnv?^C<9y|h^w>+;!A@I?J>ku#`sL-KMu(;?U4pOIy%^UTIsky z#k?E$Fim34GS0>B^AvRtSt)6T|EZzHdYS#edb;c#!p+#**B9T6jT2XiQzQn!)n7vf zu$A9+gqn5nPROVuO~HJ#&f&gMiDR(gX(H-Luoe3lV0vYNWomH1^#)%7ljM))^dtQUGsL$Vl8YM*b*Qrk8<=EUe ztIL;J+J4sADqtJ|ZZfeQNr;>L9|Ex1Pfb9zJ`YE&-S?1t<5c|8iJ{)^wePdljo1WT zI##45t&ynE(NOT6wd--m+r1F$_rDRF_&mB7YzH<_&9oGNcAyvR< zDd?GaRLDv&5oZ|)eyEE7{|;UZm=`7fNs!9MAT||1v62K}UT~UW=ffW9!93yj*T7Sy zy^E?;e8qA}EO!yCVZE$b@e-o(^me2n#`1p%v^glYCa37F;oBy#knr)17J!heC+eU# z8dGLptnjUrGhu;;-m%1fG4GNwK4*ZalfY=MSMTj3tr+=+l~E6(51GFbi_(ZcZi$r$J8>q;8iJq zK^N|P8>K;4OGzGgXix~;Fb|+8igBT1pTpV#5}&|_5w+D~NgUEZB{X4ag3{s$|!X z+=Iv9C6>)^6}5L0wIevb1~qqk0QZk+ePV0+3DkG-@Xvw|#|XVVjzY^K(v9UODt;b> zMZ@Sl;zhx=9)x;;a&h#cFc@ftczBokxCw&y2ndd+O8YyH;HA2H0+Ho+?#gMoES-Ps zt(`TjcK(peBcN!#OVX4gR+Z1aQ21*4~%qa ziu4~;&^oA;G708AXbg6g(88H%l%Y&S0`R_4rUiZ<;VQkiZt~BRav-fiFxU#dg3t2+ zVAj*Zq|fu9>q}TRbIT$yENr5|!t}mBxLk)HtM>IPptfM+2k|E>g%JReIIXxqC=*Te zF^TXbFW=zv@eFD$DFeuF>*6aW63FFT90r+X0c$CvIhak+bf?UYsl< zHU3{8e#wCm;evJj%YP^J9~#g6Xb@)zxqB2JE-XT~mWgJk=_WGjr@64W15 zD<`SzYzkJ+TGEax;MF~}auOql){(Co=xdVTO9gZTzx9+cL5Lq+u2M1?G(*7UFFwh`A^~hj@&NPQu+6CV{TIA^7~lUJ7LpCokV2Ha|<`B!t5@ z3oG3c==&Pw1n~qlN3EK)yaB2Hm7oB&`kBQ%B5%-{l0| z%>nl=Ljfp&@Ijvpf6_MZUZ?-HW=B?{I%XZx{K(5cIOUgE~~JD0+Us4+q3&WN?p{Uq~zFh5q{a??V1U zs}ds6MoUs4qHy?4FpJwktU`$>Xi}N|oLVrIL|qGx0T`3@KX1KM3g44-+y?Be1aA@p z$#4X0*0~S-7NvqoYmfN5D}fW=lFwDi-bxX$c)3)&%sRAlX$m) zT&6%W;FZPL-Yb9xk>x8mTB&rdYQ+Y# zuY5VYGN3x1DxGF(6*vkkj)6?d;+Psxf=58lH6A@(>h2vvvxsXe%CG4jAr!u*UGbGR z5{ILhaNcLmT)HxtZ+I$m-kun_`Ft#xg1@flo+BZU1Qaxp4L%|Y`Uk=}z4~icAe%yX3+}; zbff46kd9#~da+UsoCo!)9pd=~9@NFFB#x2PizOV6P!%IcmR65;`=*hns%O5kO-W@WON-an`r0hZtS1)jt^bg z7ffXt*1v}WIA?+&d>8k?^>i8u6`d^n)?F<34uNF-%=B+@=aFU&40S*tuZFDhRu{ki z4q3zP}bjUi?FKvp^T?kZi(I2$jUM^;dE#wyA2+wpnf^{ zghfYHK;f?J-aeV3m#q!&W>5)Db0+Rt8%>A!w=4pWN=_9MsVx2E=qFD&1ii!ply=ftR+%}5)tz_@6Z1l%FRRZwP@6f1 z)#43q=@$@qGL$@Gz@yF*r|mMX{4Y4_-2N>D*&`-&Z#O+Hvz| z9(HKPJodf&`4RW`o0sXlzasPbePxH`S@N)9ai=FxebTLM<;g+47$*Z#~ z7{8AF3>v-JPR_0!*tqQY%b1+Gu6+JM>qOgI;Wm~Ux-Z9WWM7^N_v010n;A?MtY@$a z(FdAU?UXZzCC*w;{!%lCY!X}7hBrddcj&LVev0U6uVAo559N?mz}_km*UI7N4S(VJ zWoPj!uyo*D{=5EeIQ?OuErwY*FsLD^mHL>(0&g5|N zs~Vfc>*$q}nFJZj%#@&pd}sP*)L^JL7S%9`*P7#4$=9L+W%SA{mwZ=TZ)93Kyj->O z5?DE!#^de0$xh=dt-geq5@SQ+l%DF>!Wp*mH{1+3+FUUqGG z5HoOHn{3ZOons2GO^=6WjcBy3DZI^0PvP>VO6dK_DKzn?pnR+CV4j%5!?%UuH((0q z+OxcuJ%!h2rf_3Hm{k7_4&UXS&s|MLPoZ|B8p^#Q#2+h1xv=<+IO7(f4X`>}FDY&?ks_yxttd?4 zrKK_L?viF3k170>KyBt=UNVI@IiLyE;|^aObO0@kYtUSWnmfSmoPD8NECAy-HwzNq zBKkY1Jh3{YU7l#7M{IDYA8EgH@ZDm@7y99 z9T0SojfQEvpi_ookh27nMvYrF+6TknC^zSoOBAPav#P<_&S!t+H#qAxIQnX=XVx3I z)ggI7+@mjwDFJVD%cWvk5?qWRyv0|C>d|<&T-DxO=U1og)!tgGd)QFy-7yzuDSL3D z1p3!Pm0N{MaN(AQ?&G?_rn5R!r`~{Ic(0nA?`%26Z*tCW^6Rmlxmz&#rtn_KBS%r; zz=V-O*_9k+)97VUF5Yl{Tm={hH5%zvqjRd!h0e~C_HJ~>9Xvt~22UOu^@xG)(&Td| z$LbJdNPqBRz}TV^f-#Xfk2VXqVCcN$1i#Vw?nc+=F@Q9$+Nf=EcZ5nmveK~8>?4Fr zk}#EyBzsIfRkSztHXT>oXqtLv(bPkuBdS<5h>CqB_}qgwpR4dWv27Qnvk3rLYw7u%;P*tH^^LbVmcV;bZ+E0EmkGZ5K^qu@^( zy@GA^g3C>fgU#Gcq53Ss!(bQuZm^+j=la=hp~Bcyr&XJy641UpfR)@0zKQ1E7J@H8 zA~EueMxjTAyh5pv(P-^wo2j+8Vfx|4Z6OG13+uG3nd|)UP%3v(oiG+tx%;79%Pkiv z6L*4bY91MKV^HvgO>V(e`RN!cbOoN3o6z1nG5_!e3VUFj$Jc3E0@lqi2FB0ppozVl ziXM-mO;vP70dy#Ukg#6iwt0UPy(x^MOYoA4HTDNGZk5inh|7 zKX0d^%VdnOufwWHB#cl4mV$cMuZ>I^Pt3E7`%4GqR*w0jW4owLLY9{vqVx3KBc zwqohS|Ft|kgB!mIL6<*Ut`@&re@3OBQ^&=5gMm68n!#H#1<>RkQRU3wiTfbxaScTy z-*gl`jGS@8OJsFcz2I85tydn28mg(}`#_Nk>NHXJq5SQ5D)_=W&S(8m!FdLR5tMtc zsLG+-`$ICssmU{d<{4Q19B!c4$o(N>W`dR5t2=25-XG%41JES6ugaj4#=UC&lVhmp zONk8G?jc6m3%doJO?Gy9K2TyD4+oeh;9ASXthK^g}EsE55lE%wTU9g8m5gyq<*8(~ z49?*7M0u2J+)$^<&;BGX$y2evrZ(S5ZJviV(>w&BX#kP(RMRE2ad@I6=`^1#4&#YK zcvbEYa)xWnM9~E(6vy!}f`w;t;}I0TmI#vT++%hLvu>}Lm8thiXWM#5*;E*)jH}_9vhOzPaFYGGRWD2`d_^Ta~IiRqs z9|eb`#};-qr7{oyC2P*iWEYG!mhc~^TJx99tlpB4nUr-h)a8FJqq2HLYz!3U$FTa| znQ@s^{v6gbg>?j*&HY$C{ou3@Pkphact=bQH|7f~!_8Kv_8oC)ob`t3&fG0w*l|gt zjbUiJ^vkrRpu;^dqTPyS9nP5E7MU0xkvq)1sgTVbmKh!%kLRIBu*QP*aV&m6>u0z1 zX82#>z;kOOi`>t|c@fsYYMfUr_}pF$9}*u&P*H7e2&*a_WrwgGU2{1;b%btZ{NwLs zZx{jUgc9_At%btT@A8Ac59e95HY0alE?2R-LOlvTHqm1cujqf&qB9u(lF4C=um3Lk zx`q3U{o&OKUWF@jL$Md13OB7#w=aP@`9^G#rZQexmOugk(8@%h+D;UBIbsP~o5K~UN!?eZ*WOA$FQ160am zH*;}Zqpk``4C}}NaKCheGlUpDJ0{e+wtDU`@EOla?@AAxo~VP7pGLAYAT1U zF~q0A$UtTqw!o-Lb(>r@#$oESl>c^29rIZG(8l|9%d!n;f76#96VJ6 zY10_oxAbA9-5syQaKq|0hV=r#oQAci=a^G_jWZ z9ptcs9Cnby3350=4kyUr1UZ}_M>fcj^>bh}YM7W2>gQyy8c<_imTaOXy>n$ zMchD@TnlJbFeql@thdss5oJIVf89?HWWtlf*j zm3Jd+vGYf=Mmi#jKg=rgr?cq1it@~uO1%KyxQ2-XDq-X^_WPumP>Cz?_(Ys#jVAKd zm={AvELdgVHWR3Og?J-T>#N_4}W=C%}a=vXZ*UEFdWL+l5IIO*nWW91vvx>qBjc;Hj7qY&@;iF*r zbv^W%SnaS%G_Xdpw1y4GP@067$6K6CFPNx7v&7rKlrO~_7ae{PFE=;N$jo=lIp2hO z)XK!SybqJ7>c(gW?>6|E_)Vw}%q7t4RiuW%l9_dm!92cm9>4(aK#Z#FxfU z)5;E~8k<=3un_-#f8(&w!TpX~_>7SGWMdle>C=Dd3pY0}JO1=T%VsvR@=izxFm@sA z2>+#s%@pF#r9gP}N)Z~$LN`FlH;1_`h+QSb7!89R-HkolINkx9ZS6FEKpd)$Y5KvC zGwy*!x58u=`!y5eH56oA0Y_P5HEkv=>|y=x?_lMv!`J{Dh`d|~(ORK(;`5<(GnXbT z`~gf4;#*Gztha@};$mQhoS=^|9cP@bodDV3W32{{gB*LDjtSPpO2+B6xp8_NJh%gv zV#evQeoii=_r#MJ%`j%hI6czODU4=4^LTYZh5Jg16DsuSqr(_I6Ag*oC&c6m0&-mR z&)V%QK2DdzH3pgDejx@|=!f78kyYiUuowz4R3Q%t#(E^fvsmm}y?+iXCGv>ZlT`kL z=++xaZ8ko!V6mBSbDluj5}fG%DnTSJOoO?g3`mS9hoX!-@TFsE8YITu?t@sU1H-7XV`6~6 z0WpO2ON2YIj$%_MXKNMt$D|xhriUhJ21ZB>;4otIi4;quK3+>)6cvl*;Q3kn?~vMf z+@QgPkyXsNC>rmZ&xf^M6jf77y&SJaV3lVyqfCc+Z=^W96gD(p7xLLSM^;s`nt-mEC%w3MZ9U)HK&tZ>6oLq+EYHs2g2^ByEIYG*HNiw}~i^j@QcR zh`0}n-i6pqDOwZtJRWl-=$Qoz7HYjV4*IeL^*Ki)I#a2dy z86Gk}yD}0JzrgO3NTdz=dPt@)UW;0mnHkMWR^m?BTIxSaE4RK#z%|nALhPo&Ckk&P z3P(pm4!9;k%Lz65BcI406Op5%;^o$r39uaM@2RS+HJF&6Cctf=QVqs)d4dDNsNf^$ z|5^LQHLf2HgQ9r8L1-3?-;LJ>TJ}>?RFrxc?%@$x_P27tFtQp%V#4tG)S}vK2kURA z0b)d5=!1A=f=Ilb&aL{}7GR9XqXHOb6GUO#c43UDl`0A_7F#6|I7cuZul2KmV{wuc z>k^s^WU2Am0&x6ZjBpI9?vA;{#2W%~&INJ`{fPB-(qXM<4rKl25SOfA5#aSi=noEd z-$?Ne=L^O(QCwRw6gt2_jRU`oyRlA~O8a zfu(0XmX2%^8uZ!va!pQ|LOddC6NT+e78K4ppzy^ZkHSZXTo}WuRbEk8?iAojMB zQ8)(*=di+1h0v9E*~E4M3PT+R1kTwmfiDgSyexsmu?|}(ViU-PVfO&MIzjZ!yY$u9 zRSB$p^Apme?nh+g-otS2UtstnHe@~s8i$TVSdo85z$5Y&cmxJyRw*v@EH!{+F~4+> z1tuXn2|@(ne@EJ-hJ5cX;u5Eoh^q;|)aFYF+lsU&5PsF>q7vdXLGUWlUOnE>wAJ5( zwkZdsWwRD0JMVcp`u`~V4lpUItnIq@R&|`|Vy1gw0?@z!GcbX!uBxtXaz;c^1hY6G z41%O_0OOi*MHE4TqN12}mDM$e6%|kcv#yIdtODw)>$;}ZUG;y@t*Y)G!SDP2=h2~0 z-MUqE&wJ8M=Yq4Xr5~f5UQWG2}Q9#F!7&3#8-4(UCSVL4MYLVFB4C0BEIHa!@zFe z6c~q9fip`n202a*#Bjoh_d`7jzd8mSE-wL|W5O+&f$ zE8a#9t+6c%Lck(%=3T^hSY5uMR0DG}U~VGwcva3yJNsiU7rXC*^(DwoAjn8=A1kG7 zZE0BE3e%O_hY1RDZ)?cCfxEV4X7(?(=D`f8RI^ z{rmk2Ze%Z*Yooj839e;BaK(fG=1A3} zWO8#}>;SXS3%eoJZd5c+Dlc)@$+&i5Vrir0wCe%bg^yS_2eHEg;jYffy88QjAS+~V z9|*hlmR}xjwqQcat^2~@ZRG13^{IQB9QalKqec*sx&60>*dg+r(kF{}nmGG!4a@w% z*|;^7lTFAHYjMggSewm(wX?Zr6sD5}1@JHmX_vLFJTJDyT3Ff&d%vt573h=87O@s4 zq1=|Xwi3avjl6VI$n~l-??Hm|+nFf0uPzl+6*m4J*a!^~gK4KsS9C33bXA6vm@Loc z=Jq4H$Fc#$?Fj1HQgqen_rg7(1wmYLr0jOG2gl%}!jiwps5n~*WB1q{_co+*8+f@b z?Jk85w)AO$zmx4cwRXLe{b4jHy;{aLY#BO~+r{?5jnULT_cf;AyUK0YUfTep%Wc;_ zz_8G(fin6Zrf>78sKvKS8|*Nvk^g1m}PeqWU>)<8odnS=o$A7Narx_ z#1~QM5Sd(~-g2L^e?c})&q$cNClQA54W>(!n11F-wFf}5tM9|HW=plTC%|rY$D90Ak8SjcR(lZKo8?A$=|6p zwoM5>sq9)=M!dhdlnh12`U4Az!_?Z0{e{HM)nxd9W#S9?UafYJ3GfrGBy$OawGIt7?o5_t(N^cJFb}%xtOxNyb z{0#6m^ASMDCFdf&-2Pd{W>W$PdBEE#s&bd)?K1H8-^5$L`!+@8w@TLD0oGnpO04~v z_o0DKRN|Xt(Vg&c_e$1gjXSwkYglJgu%{kGPEP(ipS!Qgwod_fvo^Skx~EfJ;_hE0 zcl{0=N?!80dxzxiB-je-zqy~{ad)}o?n&To4#6*#9bQ75C+;3zLJ@>b%$=epa!&{` zf|eZ}tLk_^ug77L&i8^p9t})UW4DL+Wl@fF^Z2nhs!hS7Af%U8u^97q1ZTNyTNY%Y12EX2>8Zy(MPL7-Bv zN3bg6N?qlz42P4$FdDHpZC!-%D#Lsh=VU$N3Gd%L_HuFQBXG9#*uV%pmiYSt@z?LZ z;h|4G0!EcUcpsv!MdY*^_3cLx%b`l=5%_#5yjM#0o?63uj^MDwfA5dH#(C*|Tt>bb z@Rv_fP0TI39L~BN=HfYq^BBGtRrVCM*|0haZWMezL#CSsSJ}Tu@VE+YiWQHLWgy`- z4ar|#G7^j7!Z%9kT^no4m|*V;8UEhRd1=IBZ`YAvFNyEtQhaaJMcJd&v$(B<_Z=w^ zMW9vqa2R=#-wm?+MspMVMA>~q>GN0wWZeuF4;e`;woGENX|JuwWh@I4yuz2@J$VVX z99M#$klqd)-ktBh+0=c*Q$O%U_)*E@3v2j!Bav^IiXN2DAq#P}Wb)D)zG5VpOl6Pe zdAvpP*l}gJ*3P;H;?h##N-<`6t8) z@h6S~PbHT#X_yFHSsBAx>RTj}uLP6HM6Bw-6*!yR)gY}72ce!sSTqaWwE=xT) z6#a_Ht82vXHse?p68>T)`yIGRe19y?dMwVuPLK`uSoXE@HbcBZ|?udU&rTf2B`+6l@L2NLyBP~%AF0R;y8ufxj6&|qZfxp zl{?_DlLCiD$>S6a+u(27&ZMTO?Ay(OXNB#goYgFRGAnm{G3I!5PFf1l_Bb9L-h@Jz z$LP#qGzXysJvqBy z63UQ|AA?J@Rdi5ZO6BbLPm~{j6@*Kes9MN(9xjZgqv9u5@)? z))9#Wb}7x4xeMdE^!8oo0q+7@yA)NuS4VyoysEd6yNZW@4yxa55re`FhSOc?V(dK_ zp1ivvCy^r$s{ACumQGaOJieqx%FvAQA4lZLO9WzJ6-_{_7&r`)_t}o+^w|Aoa;>$R4MJ?kEHVh9Y44@dxI2{eJ z3xQ?llUJdrymm#};1+_j146t)s6vUNPZAj4{L8S~T z;eUm{B)@YD&ciUa;Aj~CAc8GQiTYds>;6%neLAPS(XEC@Cmnj1>Aedtr;`Zk<+(TX zt_M*GUlUSicFH*x-io!LsDz3P1D5Uw;t4p$1act1FVNe@tLcs)1lV~Rhw_5%f;T5o zomdS<;!``7hww6-S5Ys|y`h&qjT2#TFOvH2sqF9APYWE2x&;A2YAaecvV4GJKZCPO z9CIsg2X!X#)1w;5bb8MaayaO+6Qgh#jJzjZ!QX+=^lF zAmdNPkym9WJ}-+WG-UGvvQ-K6&fr6E6OL*)?@R)0D`xU=WhJWF2~g1D6x2>MIsM zr=r&7sP&mwt6vV^Q}TI28C@3i+Vw0_)Z>$aCh|KyEBa@^jY>RPUyTDe{!@;%b|tu) z!|Myu;k_)k8lUK7uIs^4|HjI8Y-vNaHF(>9@ivEAmczsH@0M ztVN~EDw?U1=y7ZS@5&1Y-X-vf>C{@(8ubIi$B-0s!3Q;`@j^E6SbQT;uEbR~_`l&I z;V4wx^Np+sMu+HO|D$viYF+eC?;~ZUUyDa%ZBPt3&Jzz*8kROv8%v|&IT3xYtUjCC zrs(T%_Q~Gknw{)(LVR+ZwoQ@2w`)GOfgM?68z$$sDdAejejcZVgRD%W-W8~K%v5aW zdmc}~R#8yIUqwhcf(kA;YR^e}7rsJtr7KZsCslfZDrHeAFCA3r1yrg- zr61q(D`ik=Jt|dDr57Q;X}rH7?Hi75FdQ#}S@@t3TlW@raQ4qSco&|mUxjKLsoG0; zR~m0G2nW6EB~-&#hikK`mqg^_Zes7NDr#MgS`VUDPS(P+^0Gn9$l>j{CB&b5h2BM^ zWX3h9)%$p_mI<~Ngu{E6iCgimG}Qt(yWo3}ws{*)x;Y#>9PqM!CN4LadBfq>OPU+- zHn!8_M+jd{Px9=>HrNfk3rF0zcEf)cJ{#|{=w0|JD}h6v;XtL_Hms!$@}oMFWO$XV z)bA2e@e+=KK&cqDiB3Z><2^MqM*{!}HJUKhbEd%Ke|T?xNd#b5aV!3BQcWv^BJ zGOTLmYgMf6ec}2&{O(29tF!kH6@Pt0J&fy3VaDfl!}{e497qIuRyP4r{hBAIUWv5< zcUKL}8pbu~y<;gc?mVQjIct2utIccRh_1nxe1R=f*C?8{oNhEXKsq-l`gi3|NPbYj>W@bw#%fZAHsDSKvl=&nZtXJSL*%DPDN{3`3^`&r+9`nI{ph0eiX zLhhs1MJbGgcH- znxEr*j9dFF_uxnkL_;9{&>!nuE7M(ZrpLwo`3DTFiS|&s!t9{7OrJ`Vx1zkkm#)n?~C(- z6utZd&L(ctM#Gs*eQ$1sdFr`|)CY5MF4O?dyHjKqJ%{mMqC6bHZ~X!V>ja$(6jr&b z^sKGoxW8eVt9PIFhu-g$THC2H5xiX zTgO71F~ntjz{4Bb0qjym{fkNm;e5|A-HaTaCEsI%N#i+T;{Rd)R*)j?r3!dhwoNHN zvu)+pSw^PEyoIMW&YpAP?8{Uf?3y?;uJk&qaWK{))GJ3kjRV4Z_L&tOKOHv>IxDj6 zX?>#7WLS+oEM>r1kqej-&yGweWdTHXU593~&U~f2{bw9;s?=3xaDw3GC_nWy_I!<~ zCw3|Kh63HtWnuh#h1#2W_!)&wsKLsLzdjRw=o#L(MxCzUd?MvAg;yZbK8=U4X6E)o ze|TA&&tq4PC+I)`BH;kitEZ- zVHMX;)0Eqc=xG`j2EWFmr)zvi-{3nuyxokOm-Gi_Q5_*+`gDAnp$momV+ft7q;FQc zDub2S$!d4!bPX`nS7x6;o*}I{nL9?yLYj`zaH4V$Ge>N(5;;bL?Zd%GqZR!ajq}$y z_8}ZYxv6{(;|}$Z^T6Suj+6P8u>+rF->{x$=8AG18eC_lh`ZTZg;!c*0Tq4(*F}@| zGkZ8YWoKXxWFMD8cf&EyK`vN3g_|t*ihiW3@)v5v@ll2o#lF*G%?e*qjZmH+@SKA0 zX$HG9)luHvqj;y>e*%H;BmA3Z{bK922!A$DW$%gb>pe>FjS2O#2tOrXnwcBn2N9JV zv`BQNykgC1W2!1Sl-?>zKGN7#&x&2)vWCOo)K6Bb*d=$Dv?;N*5lCr$(mF@g(2-~$ z`K&h2Q4!hxNW!UK{xV}-d$FCY1T$iw# zkxB_;-NzECd~fNe22m6?4R2Nb5h3Ggyw%5KW{D6E;vUG$L>5-B5>B-;Yf+?mS$cLViCPd39+z5;A}b^(&Lp{ZwC3IJe7Sb z$j_oD4X_4X4ER?BMQlTqIE2{d?O=E;j-)i+3F;4)C6(byY>^V%5JG9cWcn%qZ#NEL zY>5)NiWZmrEZK$Y7+iUXl`MRN@9bNE{rw=8!i5x!cA#+_i%Z`R>Wf54+^GIk{UE3< zM*kp#>F7%9!=So^7K;8eqQ;G?Pt`p^^;Dw2j;QFxeiIR&1l7~&!gun*_Yv_~P(4#9 zZpu1wS{Lz;pn8@^Yy4XU2V$z{h+bF?)kQyx#j35j`db#8$~h>4^%B zoy&QYq#%;0V14@Wx1=;DDmWKuWfLozDp*5IJpnqaD3g`wcfq=p6oOp(n*g?u0)IV* z;ZtM49ufifjG$#f?A40(p{|>kST##$1a%D|R70}c!U;iLLrAfL1A>%=$V4PyMbiHc z@+{MTuST#&{Kp`>vy9>FEM!c;((wNV+0;@dn~i*UKL^TdB|Hu=Ms&F z*aPxV1DWXx=L(<8xLb;a-hmK*R|9_*ch)zED*X|Nz_5e_IUB?pfRF1mbc#OvNMEE> zc`~qr*i{b!zf)D&e*)ZXFNL?!Qo>BEcBjseGlB$(dHsw-%q9g!)qnb0D5#thWDe^L* zr2yY0)q@iH=3ry9W#AoT`qSHxL`Murn$yHUeQaD~NgwsGafXF*67{4tO>p%ERx&Qm zH#X%lk4zKl)T?0mhhqDc@0cP=W1Pb1d}cKAV9Ip5Hl6*H zLTBKqk+?7EAjNKd25B+nZQF+9HUN)v)x>wx)o6$T_>0uAxOX}l!A3I<@ z%t`^jRe(PllFCw^?JY{1I1a^(68bpw$clzE{Ah}5YOf@k?h&E~j)TY(KOIm+>>cM4 z2tO!i79NlwY|lx+Xk3bgnN&+Xk5F%lT@feD;bSG}%?Jyoi5ygOn$VQZ4BAd6Y?^=x zbCtb4&P2+BvX@T7S&AJ#KTEovO=Su8KMvMHL47JS}NxyLZ#D8AgCy$gL_C2)?{4JN!xK89>CZ$1fYkI_X@wuhIk;pFa|9W7Y+8v zA4d~8Z;(fxEXnl)J@TkgR2m!TA}+**BZ>Yx>q`K5g&~{{klUsQIm#mJRSOWPJ?izT zY9;%-RRW{GMcM;>OG4#69H=`W4{u3u?s$lA0pd?(fOrXx_V_ST&=nYnQ8&eHB=MTY z33CGi2h3yQ&=L45sC+UF)P+5~n3_J!rP!3=lx>Aw;Hj~D?_)!}((tuZTICuG_Vy4^ zT$~Vg0l@EG=cUw^$JjLg01ZJFVP8IQ;)>Du zgNPe9UW*3tH{%360$0HEW;~fDT`s>WP()p@0Ti24?pb*fdU4Q|=sMA@;SG2QTP!vE zVU_YyyNYgj>Egj9b}5w(NDtZoN52_fFk^VIx1Q+!FSy&%3^91>VYtR~>$P^LkRaX~GK-_GK zk~A*GNysVp7!04124BLB(u67TZfwrjcs|s<1LFPkQ{tMKhAu5NA#w_Ae8ltYr^I<8 zy@8eD+KPhQQUfvsc&8iyud|`>Qq!MXt4V*oAt;bc)U)PY)enryJs=A*A3o1Wg)s>~Z%^Hx}dI<2<7d z0#e|c`+@YKo)oAX*SiF|edNqndd^(O5B1S2-7;6N8=D=o1I|gCJULM2Hz)bSXDdsT z@HD}y$~{k>0a0rjYbDNsK!=aF3Fp&?mxh9DiLB8?&h zA&x&J39~(YR>dpSe(1Lww&7?g-2LEc*QVo`19BJbMEZW*gS%f6%#N`BtMN2GY|yXK zuE$^sDS+YhH5%1?)in{EpIU z5#S$=BfyiZeIKr0Mn3%btY9~+qF)rbjUDUbZTOMfLxcU>uE@c-ODEpTE&`k+T^zYa zI&l(oFK~lAOOq_Vy4*#W)vN;>_>JTIC|v^1Paj!i-Fd@MpTd)PXUe=P5C0&k;&)|G zn9LjVY*E-2VOLuuF1_|uZ>TX+AU7(~m=oUb2l76g^RFi;`-|G7iX3nt02enCEE4dE ztMLn}o3sh=C)T+X+k6H2Vd>~m$ZlIl#;M@K<;~2$`QiywN}i1Foi>&zMC}k(qRU6Z zO&Kxi!t3E`z4$FB3b>fYu_0ui_>D#$hGi|7bA}Z2;RB%SoRyW34$~oC zI2nz4Xs*465VS)aDi{d?E+M(DYt%gtPp9>zaJ$!8>t{kGF-v%nT7u3Qn16Vw+gC&9 z3{>Aj=M2;)zjG%2Jv*z=H-q#H>c;l=CnlnA=92UJ`fT!icq$Kju0!YsDNY@ryt7{) zUVy#IhPz%C^PD*O?poV$4f~RPRYjCfA}3A(1>ufuyLpSvoU%}!5S!K%JUY89?3N_6 z4CtyYpaK|(Mhmfs~9f))Zf-@~ph}Vl^HvThX*pj|a&_+WJEIEaI zxP_oin)aD12yPm7kujSbb)jHALuk($T^zE}6?HQ3mk~XpcQ(dAsLm>(jv}-YN*>H* zD5Ndwo~>Aert&TlV06!Lq9Z`$i~Eo!gXYO{aEZS-#;1Rm1}*+|Jkk-v2J*8HBXa2! zkZ|N;`Q>zX2S<*c#}zRdxb;oq)##$-q9NsyML7JV&_mBhZW>$cMQ)_*N0D(y2qc}k zopUko-ZAbW9TBG<#Stt76iZ_uV&UV>fB;XiSv@J1#uyo`hnvM8=KUdUTXn8j@p6k0s;& z(T*v~2=((Xb_w5~8^002u@OGx z2fV~8kUvL`ybMwlcL{O+)Wo+rqsX^405!7&kRkYo|z-NTNgownNi#q<58JO-4k~H z&Pejs=!yx~v!9Un<#-M^2f3adn*qo?JW}k-J-EHl?O78HF3V1j?;E>OXof?OSOM_j z@wYz&FlSL1e*>>xo2eeV8v|Ej#EEX~hBio(PVodVrG6Q&nFQJOiO&yql~|Uvk9YN! zv57^3ATAmYNivob=-`-P%@3H%U(pI&dS=?7qA&mu`P)-k0M^@a1A=JNSe2 zLM{~|S5Emj@Z=6=ondaGXyC0bhk-Y70L}qZtD19m@fZvafoc@&q$vVVu0KK}EJ=z5dQl1URNy{mwkT$)jPo}=s2Jk#HuHM_`sy~4qSk;C$dg7oh zpxZ!TNfE@H;u<2dWZ(;9t;GW`_4QaGK|`(0SoA=nZsz|QwPlNZVrh+YA$KI@8hMB_eNhu4lcQXx9pT%I*(kr_T56X zRjizc<1nG)+7FUk4KfEZ@ZW_nyJDS3YQM!V5Leb=gPF`%%Qs8j%uGj$Ocs*LV?oQbuk$FLJwD&#TCQR`rH&;>fS>4Z6`N zf`ptxRKhaRrX`GuV$3Uxh(JvnTIxxI)}0zg1T1;-p(eJg-}F2Ipem?l>@(d6nca+1y31b=>d zpdpvRk3=*Ne5#f83PRV#FOg_7uSnV>q%tvRYDP$Wu1ze#sSIi_m- z+Y8lQ@kWw#zw#=KxTjB=uS!~uKRg~ZFo$rVI|}!bJMQ`iw?U`I)w0|_XxNnokWY=5 z<&LQK{5!NB`K3}DSjnkzKFXV6Yn+waGlSj6$-g(pV&Pz&lMM&;<4F`wmijM8UL@E! zwL=7l66t|$TAu0*$`uJJs{rL<>h{vu`IiJsLK*}D z9Uf`z-BMQh0GgC)w$1$lei{J|yXOLa8UVl18+c91Avps9UCC*2{zZi^!@0dP__fo} z3id_?0Pkz3!a;mOGyJ;^P~CZRIU)zZ*)e4132}Ec*1(j?NGTWoiGETDXf)RArPmv2 z;PIeq?`4BQV5z17d*6`^3?$|GRjC)m<4$4_*oATr=xVT=59x+yt*rq27A^pTiak65 zztNjkEeS>IvL@iUeMQn!d5L*FI!l`n(gi)xL+RGCTsNKnBCRE%K80g$0;qd)6F@!P z$`hr8`sC_ZGiTj7Ace~7h+QRMKvPo(5tu-4A0jY_TA481B5e@0iSFCl18RNu0}xFT zmer)>^X9vhx;g>KG15+zXr$fMad$vY0`5>JUD~YuM02ObS=JkX#n*p4gKrar_W9jP z!$Ee=Tn+l&f;qKC1f#x$ton)aC&7Je9&XuBBe+LNxaB-MO{(EiE^QaZb6L{HhX`*> zs*x@}&q^9X= zE}f&}3{E51Pnt_-(;$k$6d$ggLD#0pYu@Q8m}o~Kopq26@quO<$F5)no}R->S38pk z@sHyAO3bKbQi+hj@6puQ(QN|MlaPUQ4l&(m0)4s!9VNdm*8IDDn6r2kJKy*3{jwIw z71F<_2HlKFwPygkW3F_k&ruk`es2f&tZXQP{dpJm=fU4kFzjvu_U99u(Uw*DThnl6h zPF&mIP8^&Y$MTboQC+%2RG0f|1{)(CdAuPO38J$W3F@<<=x5KRQ;9N!X|;v(p9aE@ zJ0t`b5a3hi(&13J)<26gq4ahv56$6>7kO8X;D1hwt3Y zKbUyJF3{ks4<<&)Vm1Y5R1#f*KPXq`$$6E7+YmFk7f$siT2%DZ@a&1**fYc&QB8ui z*PT}z0eAik7EELf4{_WXt;^-W%&%|NXHmZ`hhXkC7w^}A_g9UI4CW%QCD?N@PtUFU zVb^OpwkF-LBG$<}!ZEG<9&&`@iUFkO8Ney+dIpUp1tr8MLe=x|7ZZVr#0GW*LpyQ3 z0)Jdk-QHR?o&os1RWozL?o-qo3Gc?{tRKC3h%b})>&r0Na!W(6EE%e0arR?bA#_6` zI*i6Gi;HnlE++;du|Lk>NA@7o{&c!D5@f6AYLQ^lI0=wnBq5ha$H*g+2EvY?Oqxyj zA`LRY2jZ~y-X$EU=AEcSr&P@_fVeo4+9O_dF+W0L{wgrHfO!rFoy#(p3>-nSk6T?* z>v(gX^bI@d^!fQ|Hay7FaLdzh5qpRLtsjtsF^D*pV#k1eir-H$n)P%?H{be6(|Z=;osB&ZH97e{ATLBkKgLEq~-yMr}3?!{O?r zg0PC2?6PvQ=%)@Ou&91}E>7z~R{NYV*iy$TFK%-!x;Bm4Lxy`A`SEF<-tJ3vMww^Sac2c6w;mo)3QHw1$79$} z(s0qNntUw#_6{id0QU3eF}!1<(ib`63v1zkJNv6Q087B{^~YbmwQvNx@a7Ak<0Ug$ zi8SiZ42My#%cdhicvhsj!g`0kSlfI}R^)8YU?VdN*>`Ee0jz|5LMslw)Hgyp%1&?% zJ!gZ$P><;S z3(7NBhw-efv;1xvp2pYA$e*)F0>*dH*q#qPW5d3RNz;x5(1iY*CLYLVZ2C3&{dA~0 z8%@w7aErW?U~_!q4h?54+sY8c0sTS{H?5UVuLSz#xfCaVPLTz5)Uj5kV9@6jS@(f9 zxqK1}*!{p9Uq(P^k|1T5U9&3p0W7eP{8a(=J5B=ZM(mGn2xs^qoMF(goPj`X|BK<4 z#d&SUarJ$1eiSxWF_V2HBe>FW^`nr^ z3*YqHaOHuXA;fRezZb%{dV|z*$UstdZk_;@<6CW-OdWwi*psR0d`+5Q1RXe;lz>+@ z1Lc!REZp)>`+McMpB%;U-S7iyfvH(Zv3KMcb~TCDuiUv&6u_aIhWL&5UAuqCKV${S z>;1T$+<2`+5gY{J`}|BrZcZydk^G@pHG#}K#T9Np4UHw+O#Zx`K6ZaZpuO0<%iG9* zXWXM}rC@lgW;#0aCKvF2o|4C;E3d~W2Mx-Vk)qR}T=$t}xmRh`Ytf(_#dk&Ks{2eH z98KQ*iHT(3AC%tQBnyA1wCi^Q%_bq>Idrv9#rJX!DV=IIRfj4 z>gl4uEuy~l71@uQYWEK{=I6X|I9T@lIGh){8H9Ozp;z19${r)LC`L{usMGjPQf}=` zUv1AM(|)FJ+V`P4qpZlA%W5PQANA10rhmKcJ85A7uN$kQ$am)H-wfUO<_0FwriD>U zeX}lSQnNC4V{&OH?~W7NCm%uToy&UaeZP#{EW$G%xn1Xb^L~aOxh?ZA;RFkS zO%g$o+xdpAP}L<TNjS!BV z=PzrA+rGgcYLziu&WqvBDh#!zX0jpDnb#gq&fH1CnOi2DIhM*mo$rM@-|NM2DssMh zzFhXpV8Ai>>fJQ>1d7|qrss+RIPB-anu+q(ycQZm_>5_8yf29f-gR-yDz^U*SoJ*C#`y?ppQy zP6kQ(dT#lHZ@&)S@*5d|_&ysM&_O%$HFXAN%oGG~xtZ*XNB~Mc`nA%MAnTk9lmzv8 zu;|OA6ZcM8B~%9^Xn(TN?~U0My$wdt{_oxt+usklc)TY?Z*(oy&5hn-gM?V$rgjeT zBL?c1V>0#1HUZ)<(vOdVA9v}Sr5^_!xU!9-yk|2haH0HP(vKJDg?;l1j=P6r?=5@@ zEw00fh#|hYJ4%y-ZpBc{4yc7?U+(Q>=!}lJW8;oLdnnq4-Ufshbk|%NUD!$c^9Z z)N>psdD3Qv*>W?(Y!Of%XS{^5QEWzX~ zEtYvAj!A@Qe9Z>Cwqq%P}~4?Fo6!3*sQHD5OJnao{V* zxuS09J_4JUoJ?;Z#PlmM%a%>y_XN3xg=X0-P&iEp*wNH+Wfr6ygp*K;$t408=E+Gn zif=0EL8r>w(VOKJX4m&QuH-xE@^PMP-vsEf84mLiS9+sxy+h&g7z=Z5cvJZsfnU>X zIT)4M>&~(KLt;PP$NtNNxB%OtCH9%eR9RGc>v22?q~UcQs}7>~R*jH-I7~lTb*$P0$Z~Y1q(8;!c`t|LJ%^5PMa$O*x(=` z(}BM-^u!mQ zjGIcuACPorW5N5M;sNmqQaX{qM*kFNmqfU$^w4$eYuLzQxOhjT@ZIa`kqrkhUlj@5 z^PjlADUEsd8!fCHY+c;eJa6%*YTveWS4BAvxodH)>_eqWt zSg*9EadhvjIqQ{PR&G7c#%a7wQQlQ5Q?q{VWoItJ-e;vey+$OK)F}USaK=E(F~>}_ z%$D&Jr;Isl;)sJG;!U6ys?-{D&Og)`>1oNTuk2hE|Q*bbVLv69MHk)x*1JgDWE ziIZE5-1K?4XZqsSmc?`CwJvH>%Es3#--pJGIpxqp=Nx*d)6z0~`n*}`$yN*g8#7p$ zYR_9ZeP&kS=O|@Jihu5eQzn}&lQS&=<$SZ{unBV}k7^N0^_XSKCbvd8rsedO znTwDU@|-UGB*qBrYgu5Ds7^0IhV(8-hZj%3u9{0S)?;kcOv^|iQ{u&{@>4hD4(w`v z3AnywzYKlli_A+o;Fkq{;VLA# zFgEB&m{w_&t0PS#W1RhU1=2?-L%Dvcs)(oN@VQD92Xv(GQq@z{L74eVBEbwY*ubIp ziLEy^)V%_WO3HR54@*oyc87oD%ELhbr?2W+|7~S;V2twuy{~O zIWk_yry}np7dgCgC{9-W31VbY+R&enRpcj`hNhp)VD*!Ngi0lNF8_)0H!-EpBkD6s zROLuh^o*jv8c@`m-e@+Qfq{W(+j)jk(ID{xQnoyUR5Xt93?htYpg($8Y)8Y5?MNB2 z9a^y+@5|wRCEMvBrtLBpO+T5%YCB%|OkccE->!s})VO$~p+r&5+Kv+x!%A8D@1+9Y zxg8mj@x%;r(cpw+ypQUgnsn=hlpoJiQT_Mf3Uk*Ij+&JSde;lRTLceijRx^TB&6vl z6IoHk>Pr8G(LLS^!yjS~A$?|+*s>i7Y4Cp*DbP+Al+F*e)DN*t4BsA7t}esdq90)o z6v!lQRM-{6@s%YXVWtP|MZ@tnnUZEZ*pdYslKA>?Z#(;uK&C5~E0`eMf%jRY%{!3l zY==x&)K8`>+JV>Yrd4S;!SHi$XE4$`V}6V`eN6o&RC+GR)cbIP(_;7B@j#1mdExLYy?{!0-Q-n@d?NH0(WI-JsY#!pGY8HTBI?ZDP*mq7 zyr&{ZE47zVcLE{0CDMX@BC5?Xi9y)X>1GMV*Oj8yFq~Qujg^Q`#h`S`*$Ls; zspzjzt?^Z;^{Eg~w+D6>NykoL_9-$N*gKU7Qgr=YAUoFIML#2jdani*bLnEg0sXALG3&@`cdGebBBiAo$M?3+_~+h-Z8BB{^}c zCCy!U*AWMCJl4qVgjpwkydGqfFbQwN6%&nZkQ|Z5gE*1~N0Rt-yf2OS5m|}5Aapx@ zm6!%!t!Ne2YN+G{ zB@$TCg}r)#evl#(2I6%5AJxjc3`|?bXVsyjyY|W&Z}zB&ywam*W+3Oa^RRNR%pQM% zSl?C4brvA+>RfP!_lJ|BsND@CVgNx$X<7)#;}z{c5qG9 z>6WznCVT4NcdeS7Zoz+3x=uK)W#;^IFf4eEa!kX?^YF{IyZ7Zx(5j=uAw(@9PDvR*_$PuA<}4&Xlc*4#HI7P8$`~;#7yuxvb0K z#DFBu6H(#VQPRq(laAEjYG)kY0!xc~lszF8MOSh@4_T0LVDpVQ)1Gd@2jKb+dYF!5 zwH%x+fFx2kGZlGrspJQ$f#g}?KXY`Tcd2aJ`tWy@UJDHW4kN23x)rrZfb|`(we3G8 zD9zR;MZcl33-UIV+|Y>A)?)u`L`Sz@__C&w1DALC_<3Kqz)1=?!;VoRlC;9Cn$IPO-P$HKZ$-rXe`oI z;aEtu3dcg~x8U-E?sR#)MrSA^716zA;s{#5h~NB?Zd5b@ML6gYCo-YN!J5hsk(UqF zu(kkqRhf4&3`yb!`PR@OxNd<8(`EeN;+h(I%p_c=7t8DP13)w@!O2=D^RUs;$y)zh z;~PBkVJu-^tCeSV$3jtLw=^c>b5l{lwDF;&vsUd!EF7aMu@eUpi?MEht*Y-<2VmX4 zsSU(un_2)+bz-bPl-tzsj=w3y(gCBmKo0jbkC__SCK-yLuO@Ry#vM_Z`wJGnm6;na zR$q!JkCyACm1jqX+375PAb~r8NW}c1EOrG93`RwLH|_R(>ubXXvL=5N9*8Yt zUx^YWFxoV;_5|M3Xs8=2H|Pvg@Q)HpXGsu~nfp|v-ETBW_^R#uR2BqR?l^!;Me_B`g{MV0g2N*uSqO>l^?z&j3h$mAA z1qHkDV%o1k>vFNQh4yR6%^9=}i+14Ab^Ra=Gv9iVzoOToW&IN|q@Z1fd2u@>k8nBx4OF5W49H|)rx#U=Xz5ghU zPiPdD8>UbZwBI987t*HZCUS9%kaX1^;YH; zE}=iaf&@W7ze3})nqA-{=U4FC%Z01)_$}I-m4{fY4Zyh?4-*xI)_fXux!x+4viggokUDhf_@ zNfYGA92u=BGY3YXG^FLx3a-9s47IWtKlF{G$0{0z6N7Ie$d8BR!%BFOz%P6P(9w?v z-dV!C13{u-Q_&kf+(hMUWRxT^!Bbq(msHaJ0IR+HI}@PLo+cc5NnqQS2lkG*1bYWE zXKc4Tuy@4yF_s55ev6?Nz%FeQ>|mak+6dJDCtAV6&b$?H*JrYSt<@)D;SX)Olqs-8 zCGD@9giRP(tjCs%^s}^seiCIvp_Cd!f%dZ(Q5FSULUs&ykv^21EeaFL6Q`eUl5)Yhs}zmX%3|GoxTlRc!N;wH>IWC3+% zAFU99I{`JeDM;PM3?a#?3-mzSaq*L=AN>=x-4lU-URodq+F4Xa3E~Md`hQE1@Z(1O z5dMwo-&~Y45U+vtnY4>?(rgohbi(-Zfd!18?q0xHJ#63*oB;!jyF~IBlSWe-ANJv< z(tbfFW2KFo*dyXA#VQJQN)iFl#72ZdV-9904E59Jt5pLW zlPtN!x<9f32H2%TT}vKCHozG7v^r5CL|t%b#)L2w8NjMRm?W?b1d*N0Rfaxh7B1a*p{u^wUv-`bHP)?q5;6XCY}QK}yJo2BjAPME zG42xSwjFRq9d}7m;`}k;%qGb-^{*l0k(BW>FP4RT!5wHenQ&~V+n)*FQ-R0UI_9^8 zv&L6!q}#puA9CB|+#IrZ$jd>Bef%PNS(`ft?Ah=F*y8*IU)#z~S0cdi4eTnHCY->2 zIxxgZrEzt5kpYChKiY}beLVG$YsB#_HY7+JSNA>gr?_SgB+VFS&{`R_5TI^X6G@r0c&d;9g?gmytZkFpj)A8G(Q- zJbsYM$DSU94mKtTacPLjf;-S`zVu|2{4Fw4Ic827ailpzL(pRUUw;!YZqa)N#QZ_;r1 zU^bBum7d!1a7R)?lpT({`pYu%)a1o!JKYE**n%pHQ%S9ZqRT2MmwM_Y$t>A#m&*Pq zsT__#^6Mc`b?Hm+yg4{2~lnU-qC)mMPb=L?t>h# zW&7%MJ-hJ;3cp;n#xX&m+Rf$0b;AL8QDA258<6M2tFGJ63O1FBwXAZ*}-S&jUk7vJuA>L zLJNpYoKHO)PAH15cGeqX*%22B`!+`QyCm8HbXvhP)XX3-E3=MU9=u>YR`9@hSIVuj zP+i~y8x4vUs(AfxtmSd-Hf&kU59f8!eXd9Q&Sp>@t@OzA}qKGy? z=ACvuc~?F)-?Ku12D-TCMKpR|t{cbd5|HP~+YyB$u@^{eqchNN805Nb&h9@iwq8ZZ zU6;ho;WBIc0f9@#EAMx3-Cu@e-vx1+Sk=ToIp1^LSl}XEcM^beHex*X8j`Aa?5UEr zh#r594dInQlyEP%u2=^F3jnbk^#?0SbP2u`dS!8|`_F*0h@Q3LH|bG5aeq-cB%$0o z>~K6B^|81oIf(ijGHf&au+5NRoAK+gZDgQG^S2-6b-D|28`*cjq_CDZ$cH;=srRDH z()&Q&z2xGu|0TO!gtF|3S7rTf7a4lmKu!HG>BHxgq9%)`X}AS@ae$5I#Z6N6#snCG zu5`Ke(OB2R`}EDDI?`3cKo=Q#;<#_*HEHsF6ORMP(FWRQ1rf-4B7g}o8M#s4Ho{H} zg4@biN^(W(_q^DxqX68y+!KHo{O&hmH=a5QroNOSbFq)+l$%>Fb7MDPLo(36&=W%o zkL-&U05aHgP|x=)rdD(>rg*hS0s3-lTW61wz-OuV0XyJ_>(tNmBe&;Bg8N}y9g&+D z-N-sISTEB2j)QF7vvBGi`;>AOPrnbysapu#FjqjGZ^~*0L(a>r*+0OQ%iv6Q!*T5Z zob^tlY!C!>{_j-}_KY98UA)wVojPU*m*SKCj#(@MLOk*#2EZtMyFfaFJUN(_G`y3qc{?VNG5Gj7?*o;-!P6k z;V|xi8Dnb{#@$fV30GJ0=G1SDteyS2tJsh}Qf%?c+4v;rGFFa7H8$ofS3@Nw^xqYg ziL(iK|IR$co;;(-{U_5D%uQ&=oq5g1ScDAb%zcBo0@~-c^1joG(0);CvS9Ps;_|$t zqASkcms3&4{Dagxn}vEiQoVEJ!es(+Z)^?w=8pIEJf9E84d!42b{|$0&G{Cc2F0+T z6N9P!DaK_FGk<&xqJVChxPCDjN;AEHWI>BpC`VKV9OqJMVJy|afPfd>@YX5b&E80= zX<$TEcFx@Hsyn#WdH|RvCUA_mRAO4GTOXy_%sob~p4Q)Ebj^hub};<>EPl^SFNk}7 z7E72%M{vs7euvjOnY`Hxa3r1EUX!@ z7pGCuF2#-EK(nKdmFRU(=g3o040}08aYld%B`qKFmqMhRXvE@tKV9}^1I_So_gjyH+qBS!(=_jn(dCGY#5vo zyKNeG8T$0z31+WXp5&wXGM*A=Re&G+36F zzPsmq(rE&}k~(OHoFF654#e3{^H3-wHrtQb*8Wh4*j&rpzCez&k(`V61=z&{&+T$$ ze4NQ|DWt9wdaxbKTlPa~C~LtIYgyzGfnYmt3K20HJ@f59YcBC2 z0Iy%@66%Ku{k4e=!(>8JNGx)pcEA_>20k+YwQRHJz46=QPrlq`L!MNF?W$iJe2H6o zD~KLQXzvBujcs5xNQw4)!8GMmrSbE06V}z+COE|s@nW<)yJ&aDnC#?-g$s7)3LcGk zVB@z)KjMMiUKmr2f?ZNOPI)9Y6fTg!l3<5?utNm)|CQ>DJMjbvi56;?c}^t3u5N=d z$1F5hhO&hH5h31$1@>qadb-}s*t71;*t79~I@TX?dp2I1PFE`N3?%m1xKQU}@7=G0 zH8g>S6^2=93yAl1GW{uk)giPc9&Gop>*E05 zn#1WADRCuPa|v>$c({#jvYw{t6WoN976q?ufZ4of1zB)@8Vi6Blpa=}fqAdvdJ(<* zhym?ZxLqr^hKvF&mO$?_(0kr}W-+Ns2BOs4P*e>jcN|v*T{K?MH#cD_T& z`R}6pfK3w(n^jF+>zQ$a`#lD@$qv4ZFwI&QXg0IJyQ3W>t>|P0B;M$DNxYGz42>nU zfHyBY5MS>T|2nBaXc2-2ou{n!E+>*mwe$ircs zyUJ_Raji^VJCf!^=g(I2s~x>qqV;Nqs!6Xi3{Rw|#+rJ!L4%$lpM7F06QY zyRb36l`d8FJc&Eq(m*-s^?cbu!;J~6yj}GxA41b5DLji^Amh6)D}?5>;bH7DqLYK} z#pKvtOpax3o90Y#XN2ALZU8qpjm3Z`UF}XnyRY@(PF65G?rC=t+FdJ}jnvZ}#@Fl+ zM%xH&ozTWCf$f^{I5mjCijx`tzfjobgmf42b}s8_aWYxr^8{K7Y4De~NJ9NQfhJ)# z6fMG#qBk3wlYv^UI8cke8fVLBVvNF$SL34ALYx-E#Yc;##?S)9lLULV0n0LT>4uq1Kg}Mk>62f~2BryVlw2>SNtix@`9e z>@ITI=nKi`C9>bRSUWaiv_Mo&f+CM6x{&O;opNE?(WK$jhrFVd-_hR-(ynM_re)he z`>i;uig#!Lji(K>>O$f#vD0rSyPLL|wo4R1~ zZe_lIA%P1TBESmA3DH;eL#h%wR2Cg*nkT5$1WY1Mk>fxI74BmiXO-EQ- z0J;w~kgz4xf0GFG@eM-@O!|^vV2G&BH!$gA7rKNhA#Y?qyr|olIQhrH-oy!@1n&Ly zx3Cj(x;KF8j-YrN{uVSmW5Tcl^Rl8LUhF-H#6{z2VicHPF~7>kyg=p%^p0epiNqf@ z2Ut|9HWjHjbyCr#NAX_hcn;WWhe;jZ>+3is6-dPm=wBq8%Ya~CM}7nA2MKE$R0FJw zf<;(o92e_biUv=?EK-n8R=tZg)X2pet6wEl&F!#W&BZGIn?#_Qnn>o`TgmDXvUwy# zD00zm!V~~mbHk63v{2j%X#D zjsO$C5Aw7W``bYsDXlcM5%CD<6KE(k>CQ8Olz!aJIlZU^h7y4vmDAW-B|Yo{>F4Ea z89nVXB9Ym|_2Y=zU*ir^am_uQ)L=~3MMp5Nzj=v!4cz9-#u4z^6J za~?;l!Sg6?C!Eb%?$@-@PG6>HQ zf8VE#|Fy^9!?e9U7l*$8pD>+k%R9=Ts{yIeyj()62jU&Q8`381|6{5XzVt+ZuE2Ny z02xmLLG8OzA3+Hf1|aFCZ#=nPwDTb zMUehy5M_jhogZ1|FS#l@le^)`|CdUAgQS5H*n%JeAn}}NAmg6*tt0&TIXhEJd^zwd z`1KiL-GL?WPZHRX0O0$y7yraAKK!`U3c6FOo(x&vrV~pJ^-v^LFFqa7mT-*{i$HYW z2Yn(=R~Hg$P=KfEAp{N^;JqU0A0Qu?cs|3IZTCc(x|h(#^qZ!O&kh0bB+52T=i%!@ zr0!2|Qvn1!EyNAZyD;$>&vy*e{S`^V{VKx!K=M53Y4X6tBUe{s(D7kKjga@`g5Y1g zhMWQHG>7tFN1#7q%cA(NCW27nUmvwlmRpDS^FSviRu3MluUlxn67q2;Gj23puaXbX z#a_K)kbibZ7J2;}NJHz3|LH=>nAxIuct5jO#WJjot%HjQBuyZ0sNArqD`?x}$G z&?lax%L(4{D~vqtC*EY_pVY*TP3??4;+77UVtfXMhX5ni7j+%c2!d`j)*-A9Q>Cd< zvC>p|xHNStM~Y|$J*%*me}M8R1zS%W?{ zmx(J1I$3)w$l4Rf|1ShUX23^ugoGd`W{mT1H(*%#TfGSKjQQSXHYjHqPcT}yhPcPN zn28e*WbeiMSBfR$iwrOLb)SeGybOB3FAU+53-`dlxtoj|CoOA5b5J#8&*@J>p^womV9b!n6M zLi<_p&(vyN$yEj7eYIMLrFPQx1qgm+>7Sv1S6;+1hZpPhvU=RgB=^#4E=Q9(CEdy2 zjS>)DPWC4FbQ#`rbVLg{Cb7FO@uw1k%;Wv33q_^nJ@D9n>O$#1ko#5WQ!(4cYd|Vr z>_({yq%h39R~JvhBft()7Y7?|kP3JUfgif)Jzw7Ah_P?@#rbtg-Tzf60?7YE5rC@* zfV=_0@YA01C-tC!j@JLs0xgNl#u+@cGJX|nTP4A_YTWWCHr_-jWe_q=N7$@*Z`jxH}0mAuzAU*rFN!t0?YyF}hl{!`)I+@*6uq$!DBVxP4gdYkA3Eh?4YH zGdh@l&Q+M_f5d`yyBS5XZ~E(YjzuOw+Wl7x7Vh8(5zzd*qmuJBWWJc53P4`0h@c+s zhpojV0KN1|btQ#BU+h`-B-)YG78B;ZEb}I&xZ?Wvib<06SNfQfW$$2?=c#yG8F$nM zY`c+SP;F8WUdyloZ5eS6^Fixs84lz$6zw;MD+A6l~QhH+C1c)!u|X-g@5;@!4R z{U1`D(EVxyGJSFBBHj{SvWOSD_Fc7J8yI-Fbeh5SQmjVPE~|VCE_u{a)aTPh@fySD zFzx=XR&q+OF`)IdIN@4m;r(Cum>HPpm$uD11!dlWaW!Z7I{A0H{0aG4^V+sTC-S}WwRKrrPt!_xdm4Ovsg7A^fmBB z+8z+8oiV+ZS@W%?m8_>@wMJ_2Kd)QPI_TTxAG7e7IW6#B)uZ>qY3FzPs(iwvBaK|q zlNa1|9dOW;EcxJqdo9EBi`8+G!_t$U*5xoJu4Q~B*N3s{T6^NZqjj_Ay~Eflu8rbu zpVw0S28+@m_6<2}c;ES}fmIi-4*$?+NX5)(%=6TZ^A^Ii+5#kL4I=19fL7dZ^G zl|c+E7ZZ5r0=z)1VF$t=TVWz+i$vX`#VZ+GDLPD;zO z@OpHOz=3C;vG9N7SUQWkAC3|Y_zUaQv{2OKYw%_EbG+Uk?hxFjMi$>+bg}mr85b_F zGX zdfWu7RJT_5e%$rfTY3|Fk=oo0);VgLzhHVUQf{P8VeNYa+<73b-B$6T) z$~a?CI{swbF(}4`DCi-8CDOz3|SGH)0Y`+pisa{X2++3`!ZQSxn~64_F_!kS*u z;NWM*9K#dXZc(MxyQl;fA{9(%Qo*?~T)!ra$(PZA%L=3r?+s&k8%oXxZ7vLFiQ7bP zI1J&b>%v-VWdr?$?+~7>H=2&*$uT@~T^QEf7>LHbaNL5$uM1<|9iiIrQ0TV_c(okE zW0QqnbkJx^70o;C#mDfnZgGBc2e@a^yxu3_&+kZ{Lg6={a5T+Bky@Qct8YZBE!AqI zsAP*8ZTXFk-IM5w2bC7ud~;a4p);avqB$mtNrD(uxt-Ai8XyluDi@z*@W0n!{AepS zXt1e9nean&F5vebtHN)}lmz#9&Al1TMVs2tLp}Pyumi;dwd zjt5q?P(#7jS73-yP$s{3Dk<*mCA_g9Lf9Kc|8W8peRH@5Rl_(#H}IDVPx1!D83P$o z>2}cUPvSN7U~x47Y_?E{$A>6v7)pOc`lSc|FQ3kr4#9~GfL47z{T~>)!$1%pIC6Sll;Qbvm8=f(Try3A` z4?{`qb^@9vKD^E2Lt+Tl2_B`Gc6KF7OA6ec_KL?CsN$PDdByXJE?{ESa!0j%c&ah) z`Ym_-5s!Tm?~2L-C^uF#WU0F-m@nxg6}!|M#EJHAIFX3NRilko=ZOW)6C;AM>0Nt9L=A)Cji4iFdj!~GPOU(|x!b~B@O1|NOZ^U^X$PnJ=B+ZW z{{`hPdr6f$j@Otd_fDWVjw1l_IIevJZbT^~G1QT6QWYCnk2dGW1>87}cR@WFdukV{ z--&WZVJz}xJY(D`r2dZ@ttxj|sxO_>L%EeM+IweMZi&z^queoQZkHIEn;ggc*btlho@@t#|nK_ji#@ra>t@vV+4G+irzT`1>X~vy+i&$ z*yB)gOU56F910qTg3qUd?*S){6q6P%>_Jq2#)p ziJ@>&fX9X?=qQxDH13y-alivEFQSq+f(?=02;RD>1|cFRVu%eCjFEsc+z(thj`z*F z-cS&98^hYwiH02Eg1!YVkU>*qoZ` zo5e9lA3J{gdx=APz>zDCJB|mVPDhisC&VP48qYgB?_9evWY#l@1sJMtuIEySJryt5qT(#i_g?-vS3D8%;jGr*?D1Z}JH!_?uo3w=^6Nqse(HSXndU!GUNo+Mz#9 zEj|G)&ZF4P80YMt{c(yM%MtyKJSwAxH_{XUFzL5=i8UIRY-MLMnVh0_-gh{sQfw@jbA zc;SgXj%#FHjpG_?8{#)LcI>gZpPpkKA!TUqv`@+THzN|}k<7@-UaUcA`pNw-h z>zc`*&A^3tl(F`~F9W|i7IybfFI*K7r`59*uQf4)g@3kQR#SJ@kh4FH)VYN$V|6S# zg7q?*GOWUy8`W-Ytum%Ec3M;P(#T%Uq}kK9yjIwW8;x5+9MJe&S zm>e{(+&zm`yBnDJH!5LO*4RAs;I6#J;Xe#MhIi)s7};;~(ayMKmDl9y^Jqc3VlVmyFNJV`+Qsz8cseR@1YXTpr8ab)(b3r0nE9=pSTFa|2j+HM>>rH;(sDJ zTuuMx;ptPo>22onIL5#dXoHCg@lH(cfWA?#I$c8(CK}X)Pf{o$b{MNN8+c!{Fp7m6 zIA*#HoP7}vqo@WhPE9o%cw3*RI*>j#)neou;8?g=h4?G$h9{z_zCXPY{L=w2j@i;m zs$pFUn`8~V3jbqs->V?+;Hx% zif?k%g-{(;FsQbP9#-N1z7{ILZuOjSO}-oJz1*GuP zku}CJ@l}650Ipo|>)w`750)H55cj5kE8*-BwmZWzpZDDHpW|cD$KecT)_bz#;Z!a% z9L_ow4u@y;!sYo+){K8EQF+!Vs?Q>KX2I~+gDSQVY!aG$peV_Nf5C4Ur!*g1@z;n3- zPB`g%JST664X*bb9j|AJBUrsd75{~cQJwvY?Y4sQB^6_VLp7)pz7r9MprmHkd(jEC zQbF(3q9C+f-XH7l6gyog?etQ=)8wd;vh0=oKXw|OuuH2h>9qYjou>Y^>vSB$eZU%c zpM=Lpaq?;qHiijHJrHC^Fd8POq}TP-YdlxIc1xE%Ev z{LmiJv2c9?tj7ZDW$5-;#v!xDviO}`d>szeveZ~sPgvvM&bhI`dMshBo-3@!0=v67 zf29m10cB(;;T`BNz)hUWtzPEr1y0M<86 z{P#uR@1|LVeH!?l+EL#n~Guc+>0wvMTi&n?qxtHQsO3+r_KY^bF-m+>B0Y|bqU zvpHe82vHS24)-(jzl7!c%PNh!YUVI=5k(RxpSHe&Ke{YgLwf8vCeMq=*TV?n)}0NS zmd~G$bnHUi;EO}3MRnE%6jUo>C4He>RxLw5}dn>DRA)nYmiMn|Ut8wI( zLyE;dsNv5ome|oUjFE65LYdhIKgC89PbjW0i5f3#*?uLZLo7jh#*NR_i#&)y5~Sk|y;@v@^kOz6b8(U*1O z(JwoTpQnpcMEocr{#6O^Vyi^Bm4&b85VixnR>a{zcUvVoSX~$iufy4qEdC`IchT2L zRDMOJHjc3aS|fMBLN-US__B~#LNE0z1QUxZwFz`-29h1ldTZP2i|nQTR37Vzk?FoLqhS>QuM9|D_hwS^bD+Lgycq?SvER^s;n8IW-C7c#PrE6%}Z2O>QI$A1d&s z++0$D&lA6JdHYEeh{EpAJD7Ke!vwaNgF(_M=wUV;xKXER_ za&01x6`BA=Zq@k5Cq)2?VQtl_9F#JAIqFPOWk01Q9H4L2JSMbH)Wp9cp{-iVj*DH9 zmT3k2`(;Gis`V{^|70ho+wnO6_j2O81m$0-25BoiNjIL%hp?oLICo#el8bEhc%hY!#X>CkxC0N^fgmg>)rG(kY{Jlr{S6wKPg z8Go$5o z+fVCl+8^=wlduNMXwZdL>p9Rm7PPi^|a0Y6t9+2SBJ)WF$UL{(=>~6u_xA z`@@d2z$_TS3*!)5`p;N=?w<-xVDZC5?>sCZ%9TiYxCrrDl6b`hEErTAYXd5lfnP>$ znh99pb_=#hqCuvpIHm$jk-==x&vJD=bw`uVkVq$dymZH8*(|TF? zOSR+;F}eE)8kKDt_Ie=#>B;+tBgRcs56Q(R6SE|x{4UfL4`lZ*(7pJ`i1-d3cUc1U zZ4b4W1-!XnGAUEUi_4m_0D#KEJ5DFR`e zCdEmqfK6H<(Y9$=#cjb|C40<(jtj3mG_t=YR;9ougadwH{3z4F6u5*c#Ul@hRVlQz zCa;);UK~o_5)3003@%`B48VX__avzpz`#z4g(0&XFh}?>L9bp=uYQ94`!@xHMKEl` zrO3iNyxzfx#@2L^_nz#7u!}%Id$30f$~#FD=ZVlZEp=l|oGUoU9|fK#kR7hAJ=VA} zmZ){JmulT?d}Ao$BpBS>5JtIFXH@?Nq&ytN71WJ5WYgu;zxb$#xHRP>@kh#^d{KzA zQs9bMb6T9ZTY@bxKE@!tDtk$2Lzau9SS!|ZAhaO3sEbYCKn3dC1(!Pq$fFsr{f2U! zz1+h?$Q`Y1cytC-{I%9pi)80LNMg&{Uz0DnzSMeuxd(@kvCm0pq44PEC>%md{P`11 z$7-NKNM?cf#HW~n01feJ7))US4a0`KLd{2=9H4P(ETWi#JrkD@S14}my8=iN94{mx ztundAVO*EVqE$F)3dYEp+caEF#+R?W3zIX6AI6)S#~Am8TX9OnXAE4gY|j`N?G54n z(||*quReu?F>Z`$J>J508!+bm-XckbZ=Qdh1`EZ?cTe#VQA9|HT#>?TFaBIgoc4-< zoI+Rr{7)Z|vlSwbR%+Y+*_;E_h~s=g#Khbbm?L%oV!OWNy&9ojZHE%6CK=U~r|v8+ zvPXje9PzK=o*rGmRu_09oo|B6CPA!mWxyKv;j_k|fHmUMXN@a~bd*ZBNTs9rktqZs zOjpS>PJu?pmImOkNTK7^y+!6YRWXMJh3+%Q)*^GfpqPX7IWdO?b&g025IJa~xJFGo z@MCwt9m;w$z#iAeefIbv-ZIU>@ctM_{=}>*ab4UOQniKLrCL|K)9(E%_R=82dKIA4 z35(SKdRP$m{}u~$F;MBKTP9lag^DU|`u!3b-6oCxW}GxS-u)cMZM2FiA@4Yu6uKQK zbi8^Xj3EPW2ysmqk}6qICBHe@7gTbEz=D&~=aEOM020FV0E}{{q6%)FZGdsD@a5Dp zT&?ru)b+xbQ^3cQQwj`UnFmmy2=Vr9#28TJy&Z&4*aH&r88zaMHw&l>G_({7QsXYE zal*pQ0}B_rpqiv?dn}+XYx_*$?13pp^ZtZPqL=GjN|H?GQaA!nJn`MNK2KbI zb-)vctZ2%+l~vlL75%cf0ii{|0!PFkqlT^WI6~|GRdd#QQE1n$g0_e~Ua9T(Rg()! z5koISA!W$>=_vpK{2+fmg)0H2bvPB9@7skGUta_a`jOr%w*rO`+VE2mT?9QDf2!Q3 z!M(Hv;Z$z@FcmsG3J^M7AUtIeaDU)5V+c~(IVf!sPj8;ulFLCn z9az-aIp}P96Iy}O%0F|#ek+}(oz^CuptE%dr#j21tP0(DnuKsN4N&g|{k4l%V51!k z7JobiqKVW++UbvZVlk1yYnTw`&aUbly}}&-dJq%d7?TM z-uV^D*Z>SEPX4v>wn%xGTa{I=m3RM(fch0rwCQe$CksWCTOJ&wy9>VVE{Z3)AD7S; zGixjhd)SI8HgIA)Pg{@;6)5ilDenR)Zz}UQJRzKTt5tydRwfkuUj9Z?Oo#<0lnv#L zu`joBN@|nxwteNj+JEx9;)#@Z2^JVtQr@1b0B8JbS+fl?fvSKLugWT+y}ndJJUPDV zCS&5!L;%Gz2~rirz`dPq>bhWTfzT@)%-UFhF)O>z=1|&7%l*mrls24J1cubbsO2P0o^xR6MJ;txOkQ{( zPH7~zYvPgvLoaLLgI!Gpw$lF$y?v-tJ^|5bUPI)KcEoWkh6AQ!XEqg#?p0#0L#EWrDe2CDDHX>zOB_g}#2Z3(I+jeSXDh`i4w+J~ zYx3J^I1PbJ;w&c&K{Yxq|2~xj6>?obx%4-oEo#;5BA3O(HI6u2P`&b|V@PvQZk+<5g`QFH&DG`D^VBvm2Ty^3!<8neE7(|sMf z8{gfmbT@t=Y8b32H2W~Dtg)H_E5ICYXyWZ5i5(Qm1@ZNEXf^f@txExL9D(`x4lQ1n z&t0P>?~RGSxrn}~@6e)k`8>e5FDBmhpGa69{5TfxEXD20u-zd<6RoHOs(Xhfu1~cT z@{Lturwb@B|AFehE=8&v?@meKq%qzJ-U=(KuNA0nygFL3-`fDAIYp`)Usbij4o5qr zxWp4v{e@`75=?dnP6xU;WLsWntm20(kBrvD`oNIF4~!x*)fY@mF;Fs|cxb%Jh&jA@ zIK7yLmZAhXWhYJaNOc!Tb>q#Jq7k){popJbBX8WWhP*j4DKzq2T!!oVCLKF8#!#lLHjWKb3RP<#@{5U=u+M)F`5Qj~} z1)h!2-nMg%*3G~xjJJ=4lO4)ZcygcrM2ZQirh=VElkUY2hko3nCK)p#y&c+{LGA0% zMfK(uWzoJ{StvM|dQ%_I1r~TE*nzAvK05hxF!HY zV!~Gd7Oq8DxcMqv4>m_@y91gx|wVjmjC)EnXo?=bgPrS{f*i6wXK3?|Z8ZjQu*rP{O>9P_+`gOiIS`O*cedEM z!RYU;DbnXTU!SWkou9%1n885jt(}Ap^mz{YoN|S}#SrR*PAf4=7YEPkzV*PtxL#X= zPG|HPzTOQN7M6Y6ELs%-t2_{}3VtY7L9R(^(gB$9%wv`ZsJ+2_94{86T5NN0mHhBq zVir>Ac~a?k^IX6z;xdT^tN6+q*?U)$ZBWlXDl*H5ZS!&PN}g1D9#SWUBG26A^GYh< z6)dyVxL}o$(r1;wNS{^il*B4Ik5w}0U%Z!=%@nQjiN9!ZAmB~vpa+_2; zUKIghm-{pF-VPQK=~XEnB)lBM6J9m6qU)GIhNP=N)Lc(`1&A>DOQfG;`Am}A1CwY` zk4dyTr*Mr%f~pM-$MHnh#-ivd!J^4_52}*MT{Id0B4y$1f+xD}0Kwr6aR=%2e^<&8 zyL>f5NZ=Ld_F|fiE7^sGL*kBecX`~w(@raBnhkKW=#ad1SHK{SLL>I0klS`aMhtec zCfK9a$=cF!vc_nw+))fd%evZbpFt3#*;W!v_TP>2Nr2%iFo>F!8>HJIQylP!W1urL zchf?VYC z8jb{?reOy61Ix0^#55K!XD9il-HDeWeJ`1=zs#7J$@}G;RUql6mvIt@ARj;AN&&xcGqt=a(#H*f)EbiA6YmXTHqB;$wkL*HuhRNk)qKRXoj?5h*zLGSg>; zHPbQiE$)({2>Aef=^|BC_-tAk3R(t~%)%;2o0nNj9xre(2+c?B1ypLGcJbD8Xg%7> z`MD>cdO4BF7wL5QC8K%EYtinkvwPw3kxxfqi3{hzae}A1us5tB95Nl9$^9akxF$8o z$r~>%mN>UFk)?*?u4dCws;G*k;W*~RSdH~L z!%aVk?tezgorgJ{1$g>UzV18ygoVEhim&F_B$-K}(lgd~g6-|(?TI+1u|vRr*Iz}( zK2I>VGa(yT62AteBIk*I7GxK;xu8+b6A|sGP_1R2C-jFHtL=Wr+nalXSFIe-wvEEd!qv9%YeUM)v!jt&U|phP~3qu=M;GvQfy% z)MLQ!F_xIxMLeUjJ;ownQ`k8gah6C_iQNfmCcf3~ z$0on^I75uhsTovfBa`zuRss>(8Y|siCOkwGYg`uf^E^!_sF1mrnSE?O*RkBk$?8Kc zlXB6C^5o-K_`wqjLW`R^Dqpx4H5tp#sI8afY=IXQ{H#Jv8MKNaUN^i_J%h`YHj3$I zBMvQq^=o{F9ClKT`RwyuTb%;Fs6sk}mSau8ZzeiRfoO4vpd=UC9!(bt`yvxQrUA*| zfAFuL32je|iwP|q3<#=nvM+?=@) zjtnM|Z)wLU`h^hI*tjhAE8|=qiJG_%h(^+IMbYYNq}yphiUN@pIm$YAhuYFCWne))_FCgppzz%J!X~Z6{@m zUmlTf%<+jtWizrjr4sU4WU@DbX*OY-7MX_4MJu0`vSDs$6H9ziNk1@>n-B>5S+vnG zH?dgSPPV#^<8A_`S>#)Vd?(KB@3_x_Oblz23UiLFY?Y5fg5#S;Jyu~HeoU)FsVZFL z(N`lEu8}+L^OOtqw-E_y)1Jq<&whH$G;I5CxV(&dqkp4F+?&8^lX@cC-#{ce6o$~# zelY7z5F+>{hti|G?C0{PEQ{mk3&@7=d>YvVA%eP!G(vUZiyWFA>jln1UBP%yAW?c?|^XH3++jLnkXHLW&hu7T)Z!@}Be z)g9bSEc(ck;pH-Iy;mP^T~M8$@(3T=pbwgJR1D#w^SiqJvUm7OI5l8>wOcc>lW{5R z>JT2iUY|C*CB(V1D)(*Av^gZ9f>h6q6cE041J|&UGCz_w{~AZs+^XDKEp3*?#k(9) zp1b6GFn*mTC%VmM?nvx---jT#_fZh&UO4cQ{{-a@j=|Jo%LEQziElInole}zusk4A z6eU_;@jmO|&P|n1K*boYg3nK-m>+Wb?54;vu%?#piEi4|D+p!nzb*J(xdK4qA<$?rKomch-A*2x_SOCvW5S*SwUSCHjI={|HI1y|{iCzgWoD#r`v zJwRybQ6#h}Q=T%xl0qg*5lIf;;K3td;B=5PTtWU4-pdNNyZRCu!GenuFuP!}M3AO{u6_7|}~9N=Z^hz@b1 zD2mY0CSpi8Sh(Hg1(7Zw%Cvqo_Q{XvBBv!pe;)ohlK zdr8l8-3FDgsJrr&xV(gtY=o=-PbAxtv(Avzwb+A6y{m;Y>yZY&|3r)Qf6+ zG7j|h5wELm;1#a9HnH_QHCfi@n~L3FQ8RW zN<-rNN;X^pT3v`o<)#tAC?SM2(x>@p#G8&s`Aou7->4yQrGuA4lK#gcULQhwbgP#} zG!>+t9f(wBz#3rxP(+q}lAz&%poqhNPktZ@?`Ysw%_0@wsB94{Lv$d5J-1E^u@xM2 z%9pVCI@&S&S&bK72)QiW>=xE(IPF>-u0#}vGzs~vQO*iEUdM~W>nus`3SK%syNW(5JH|bgOr%rJbzT7Q38Y8oyf@1WWzok+J zJThk!QAB?}2f;-A5RvMgmXw9Cdk(Zc%la5#Af<@jk93P44xxaIbIsu}}<&g$IJr;o$R_TuJ@m`{EcmzQX~$ zrFlxj@c{6p^i3wx@`=?jf3k>WS*?=sAo;UFUl#!UU8ZRIIo zULqNN?kIQe)61F>3`Ic>uj=S5@FK`V3o^2pkn=KVyZ=VMcy&o)jGw?rLz?4~f=4G8 z!%Nc-S9#Q+fp8y=G?!hSCISUO3hx$NxSuRtu;OGH!um@>i75bHC<4x9=P_dG_W=A? zVoEvTbh6-S#_cOYVC{)u?KDBDfAuq%_V~+*X$kx2n#f>_LMV6q>923XNzPD=T$Zt5V!vFnr`uQk)ODm@1$1 zJKTQiq&DQ2PijM+7RxsB6lmbl5_1mRP8?J2tc#F@cTs_o@GklaG>P4{W@=Nw;a{%y zaL(lMDvduLf$+G}@HpnI^5G7$7s<{~8OojuRC+~Tv3*lZ!D_G575a@z&`%)jA++Kr zr1^aA>2wnGy)dokDLni#UZmdydZA+Cte*lg-=_c)P+b2Z!8f?z#kca+x02w5GMpwW zl<9P^kGo5{Ua5Hcctfk~XpCJ2K@|x3&D3|<2(0oX#NS_yck;D#Mx}0PmpV$N26W?( zD%*yXzZ}pF&i|DtBw>nVCJ)HvSyV-P`7X+?CGp(=*9|1zT^Hg#KfB9s#QX0Wa$t3g zlzVk13T#Uqub_!I$Go6MAXl(kuMW9_bO1-GT&3 zcgIh7EZ&5j+?)~n{*f(VG1zF!%S%kR3LoZ~;dYHD4}v^(TnbE{staw~N8$Wp z58#|JW;&7|)RhE1v2(}jfSoO%=?VM?X!(Jx_5!dE3^zW^D1+7h=;Z{%u-?jSH&y{@ z(W#dBo7DF~D!rx~f)eYSq$bN$dX7@j^!~{!==*Of$(*C~{wn=M;AWTPgBanv*$t5Z z6kQT13;wprbSDc=0p6Iwt2o~n0aJ;K2K*ZD2F$G?s^uF^wYCk`055;r2^=0+aF6ol z+;1&7#ToC7i5h64Mp9E;kn?SMn)Arj7oj9@ce%S)L>`%+YUb~TkCn`V* zeivJQR4+lSq{s(eh7?RAPlO|)CZTS6YcW}N#wW?Tl( zh4#F{{lfOroR$~{J9$`f9MNpX4F~MPDL7EwFesq4vEp46)gCF}@KK<(Fa9H`d9v{0 z2trPJybC??Z8-R0ff{#mZEAc($W!C~q^wKnq>RLS0TdywZzhU>K>v898Wt2%qQpsj z%Fixn{bK^41I5LGHG*-v0O8@RZ?f#~yXKg4{Jd$UiIdA;*lIi-X4a*4wMU z<&$zp8E z-g4{1UrQ~95cGu?WGnzO$(-IR+>$0F0Mj|J0Baru}(f_?pX(@I{G z;Rc&MQy|WN^@tLdRRawTB0NqnbZao!?Ugv=ci&W|?6&$0xCXN{8?*YODByJ4 zf=tn550NT-?`Eh%T90x3^_VuL`(5(w$s~FEv+pKb_xKT@rpVPCOg6aVh!%K9)aLKtShlHjCXH}MrK={ z*5F9NkL^f!lf<`5*5Eo|zV0o;0gr=7o5#GFndqjpIjuHejKodd0$dl8IV~3ZxT>`X z@qJN~ue*reK1;Gbqa+|nQZcHi%c-o|1j-8LX}&6Nz>x~l<)4I!s#flq(fML{-P+?C zT&-v}erFBN`8cfRXh4(LTsBbqNnr2YOyWBb(Qd{HoscQkKFlj;RLHL@lNB zGM!-G*wK3vD0Jg@EjWIYzwkED`fIkf;+?t>ofHC;5H(`LV=Eze$G;&TZGtZusIe1ZimOnKGx z3@rubDH%Q$nESje?>gBdfQ$$v}FMBZ}!()(T5MFYFGY~7U3=qVRih*$_r+ z?P}4rkxV!azZPl*jx6?ZqSS^vzq!2)hw!HWxUI1b@iZlRSs)}xJD zKbR_>PQX_(zbjGph}I_$9tU^Jj=A}>h`lKgDO42+>tOlKk39`MNyx(|ybnKOrYc=7 z4#;I~WB}UW@pR6akB$qq02l3)v**JZp<;6#u?Q=X7I+&hx{Ba|w+2`8g}2b2O%}gU zt1S?o)!A&jDP@WhMrsKh>p2wvq*T8F;_((t7iwz3amNWbW=j#^v!w4AdMfGbF>8^ z@0qP8>7@&>3QR>Ecw4$ta?fmR+TzPfk9JDldL?<^N_pWkU~>8IbwOT|`o97`U%Coc zz=2U@_-K)eKt7a}EoNoUds|YEgX5bc0uH=sQ*}LAbH8|-s_S9RohABZ^Z4i#7SWG}ZeO67pCVAJ9aY`H5}KN;&BOVG zgXtwb;zNlnfV|+%YXbry?fzjmtj<(BNzB;_w5tZ^uu(oS)qf#|AVlMU?(h~k$uCXc z9coKsoaDWr0>eP?6g6yK^3fhzI``$DLwJ41^#SY!q*ks)Dl>rQ>VJ)hvg^F1IIIi6 zoEyD1jOtz}FF}2ix6`tz0@tmsky*tn#<3gok>LP(Lx;Y!}uS_f#=l#&mXB2obR4 zfDAxKz()^scv|vs?GHKM8i0&Ms5PJlFM)0WMZK5+o!}D{3&q3x)e^k%k}tm*-N|AX zp*`NqJiM2sHQs!!w~rcImKIZLOHDar4Nv0XirRo?-H)cS9*t-|KfV@d*IQ1Ef>O6Y zs~5noI9j6k+sF1uA6p7{0FVK9gVOkm9SHcG()mOcr1Jy4j%~82ypI??f?)vVBY~rX zgrORh|BwVhh`qWMKlYM7z%>|VybMwp>r%x|aIaNxX7C2VEe*W?F;@ci6CN=Xvg@&v zdR!PxPWuz!@jQ5(BqM?S7@Rgc0NdY51=zXi@FxPzC_k(x4!1yN;BYLvqL)63;Q`dk z0MY@3d|Lv2AUQx_4+zNM@gCX;3?53LS1X~^XU_p~BB8DHSi4}fgW6k$1JL6A8@-tt z0iEpY10C3J4%u&46}6K4@l=5&Pas{`7qkMT)WWN|#?75tEeBo(~MT zJPCILi!b}A&(yX$)?+dx2k5NCaBqI@f}Q34N}xBo#C`V%FsmWhQ_>_NXnWf(S;EIK z+Pz~mWafftOQbn)#@<6@zkX=KR@% z_%@yb*!~tOz&5ADD-wa7TU*wG9aLYM4-9}CNYZ>@AkC4gM5+YtJtn;4GMMOlWI=Gx znFHAc8u8$6F1yy-M70AO&Q>;@{oic3WoeF3UFxU@8vn^uzLy{=zW0rU_Gz<151o_A zP6pgdW+A4HzKm4(@v|u62@DlTbi}zSs7Qts#H;|k51^M6?+7cg$lyd}Yu-c%BnoSZ zyEYAld_`0~I$OUO$79^2RuSa~s%>+as9qW`;eX!+$otNh>f8UCe6|O+-5dvHonD-& zt*J!Wz49hzYHKR>q1Z}$3LEFPd9k-~j#k9sw97)Ci~E(p{+uVypThuuf^~LUhI_7p zU%@@l_2()CTiqnHxs^^WXhmDl|+9bu3GX!V$fbZ)PEwq9bKK&UqBcBbWT%43DRN!Px{$e^Alf|h2i$g~rOv7+6 z4Hi2>A$Kqt^4^1E6#pJPA7;9GAP?!Lw|$RP=-~MX-i^~TAd*A6@u$48!AS87sVp3d zyBWJHPl4GT!$&;_)NLzkWBm5MRXprXJ?@^W; zZuSB7SR1ztn=bB}Osw8}04Z@B#S`c_DdXX4Lx~?kAoHCJy*-3_dkFQGK*!6_o)a(i z2(==tp!eC0Xw!;0p$f(7Hxl4YElyyx`H-Kh2tYqK9g?^7^R^4lP4lCI4K=k0m#0Oz zbJKGFgb0}Z`>A4V4-)NT1_ALt`9hqcRA&*T+5$_1f&g9(g{xJuhzV3;>jL815#DgS z;0HCtWgI^O65`kKsRsBQr{I9fi^S%U@DcNcO5hm(P_Xq8imhJ+m;Y{(&sN|MMeHl} zHQX)JYL34LQGrl|C-~bfH5exGk#{;~C`>lMU3R~xrCkt4qL1xXVE6QhQXb#op}hku zUH5e6o({i7sLpzL)^D zsh@r#ZP^Ln?x$RMz3>um^a$}WD_FJg$z#==zCqNDVekCh! zmO`4}U7VV`avJ}toWy!~zf?TJFCP*Ha~}`pZajdb`ej&DyLn&w1zh>@LwyO}*Cg;s z&Qq*nFE(|aq8BQ9@B`M7Om{HSV*5~l9g{=b$#m>?;??)VXs_&9EWW9?;@Q1@^r{KH zQG+N&SWlu66SV_^w-_YxzB)6v9&yVqpG$9#s`qwIJ>Hfc*jRf5XY-0I29IMVvlvGn zy-AtEx(}B#bV8LkGtWXFJ6$|@Ke(H0HhKY@E$aa8Hk%D!e3T@(&l^E-8)zxG8<~IB_#ll}Mq5|0NZgOi~L6WQv%JyQ)znNW;UtAK(7(GL(pe=DtYxEH`ks zxVN8p`+M3XXgmH^TzJcq;WoXv+Uh2!@wrN#8wU}0yIF8|j<~zQ1*Et|0nnSZh!WM3 zf5S+p2f!-nJ!clZT#NGq7knRD2-A(kffuokG&zhBNOU&~i4IsHpm><3VKZqUW|ENO zXV5gvPZM-wg2gx@3i$y9K!N1JOeGIg@_n$wo!!9>+UGxTrRYE|Sfu!w(^j;zxeh}=2R|tQAD@BgB z<6VWVn7z5|4yC#qaN@{YhBK52XOx<7(aLEZ-S0d4?2b2T3l$>ZmEw}CTRDvnQ^>D9 zj5K*6=QI0_q{&q*YUnBw*^0GqM9{ihKns5elsjDN`J&z-3$8VawZjqvE(flZUwD#z z0WHBDs5JKi(%kr?UiQz~gzN$$1Nlu_UqD3RrH<}al447JBRxdJTnto6Td{z%oml5B zMv3i)$r(&HQGfZK0pHgLyxIcD=L;Wk$aBtzPKU)#*4y|tRyl6Em_dqA){Y}yCyPRf z_CQJl<+NQYz(Wg5wfLSBpk+B_moF?xwBOWDwEJi`24CMk*Mh5U| zmzK);Zx$hyDVl7#Qj?88FpmWLO}+Mv_Io^7ZG#psuD1C$TaIkD?QQefh0}R=TBnlR zClS^r2u)#4_9?OVauVyyOZE72>RQ0xK_ZjCPll8Tq&L7?Xe&G^?r*-%ih24zP~^Ga zwb^*bU=Iy!{87wjZDq7Mp3%l-8?E-4CO$}mR=J!?fM0M>pvp%pRlWh>KDTdCmIp># z&Ntfli*8Z5ml|yfZDq8H=MHYu={8%a*_R3Si{N?L7}pzSMhy178Id`y3m<)81fXRtA?_f+`u>EhHGK4<3$>_5=O zg?1(zK3SC|zCL>f&C1RsrX^YK{UWr_B(%>AlsHnANcl?qKcqrudP{AJWaPI)!4FI- z#8Ie>zN;@0)oSKp{;v5Z9`480)Qrx)T^R^;wR7rv_S@n%iJqOt*D8sA@A0I|Z3ns> zvuarC4gpJ`=QYoM^MthuIIJdQG+T2i;P3`Vj4-p=z<#4p({HC}W~QcN15<=LE-ir1 zQl!T(ps~1sM$Dg@T|fd}J>U~WyALE}dfVqng)X4ssUo6in~=kVL)x2~<$XRcHQ!>x z&8%Ud`mx03HG`1A%*X05%TxZ-Gz46+nJE^I&t|8JHX{? zLZ*~BS*nCP8S57YK$8-`uvDP$F`=$5hzj%DH_?yqS^gOr>Ldz;V9N|xB53}>aeo2& zo7U7}vmeT8a25)eR_O`@Ot|6|1~S`U^iQ@b8;+{;oI6&?1nL{E4b762b{z^ zB5Eh;3PUoY&&HmbxmoFQFVr;R;mlT{rVGB}?n^T>3P~&AJrgS5rcmSwgc~1-X*#@) zsKuB8lJzliouXn0*Duwgoy^tqIZ~cBUk$MFK;XdzMs!fWxD27jobFNmLR?p~a^0ih3#C3Zp>;B^pWkRSd5KCSMDf+{roOmk7Rk0)%Qb}!ng?@^t(zjwB`YzqFqiYS%3PlGsl0r_-R972jN;vUoN^*Vz zOU$IJ4LiIWSThle5<7!eq~$Fihk|Y-mo&f|1gK!*(o{`^|6^8o)!+4#q2u3CI{pc) z!VieN!;%7hQ%~@^xVox7hO|BmivP~}a!<+NTL)!%GN9YrAgK@L;%gZ5>Sn`wgdu(f zBw(4}dnABX#9hO(Zg`EoOEl1>?5!sU*%sU;&_L?{R3xx2?32Kk6(ESS5nD#lK;a=c zzH>W*1X2&dAv$jxyi*!fw01cvkt)#ThB~5wGHv60^pgPG2pwQ4kujeTVFbD~#fRDU= z)t?pm2L$NM`drmcfb zTyRhHfaHgZpmhF(j{6{1@bq4Y0MhL!+?9uW+QF=6A>WmWm6|y%pNk-#(|{{6Q@E0a z#F*yDm8?q^xgF&0Z@O2)+s9mqe5orDu~>$#gu`D%EUC7ShD?Tca&^x?g&z;|@X>JS zv}|Z_QbF2p2Mq$`RF5$XC&VeEL%`BRa&ir{Rv zDlc1%m3^q{L*e)+liLioa)_;v%fBR3sXpM_Q;gb=RUm8e(;Y>?g8|`w3<es_|eZr4e?K;{yd!HU{44A`UK5JDdcC!qZ6;D zjPraXURN-KiqIJSg$ReQ5LFLfnnyiF8VT~e0Dn5}2I^64GtuL&~Y6Urp_fgM9t@!BTzExt8^$rSl=MCT;N(9BXBo39A6(THrt zdF_XUhMmRDOs*E_ZumX{&(1{xY0LQOg_JSAnF85(Ikn}Y#WX&Vyn~4Tnm`N;3QCXh zTh0#Z!85RP}56Xshd(6@Dgy8g10>=3Y(1IZ=mELLJC7*fer_SyKB{_A{(4 zEdHs~x1nFns-7+ILbauYI<|lgKb5%BgAeO$>oerBw;*uL76h+BMV~_#8lS=UQUmxk`t42Tcmm@4~9?=uo zz93gw1=I%@RG#>tTwlP!7Wxy1+sQ9vzuf=h?7IW3Dz5*h-23|5yPa+D*aFM;_ug&q zE@c%(Fd|J*6cLeP1BC^QHL*kl^{YmWCdPs##$M2`H7cOkO^oInyJ90njj_d&7=NEL z_ujW}CExEKzdu;snYq(Wn=@x-&R~@F_y(2?iXA-GFUEg25PgazVbY#8miWUjmofi{ z))q_;TO*9T6y-MFSyY3AdkuY5I8oXoXw5{=(HgqbnfHJc8kq4ixbfC@1gu0S`R!S1 z?d7O=qTO#T(q;lH_$V&6PZa1Tf%T}}cm<;NjYldKWJ3pr)JNDFnm}t76{3belE$lO z>m&G^R9ioGBj}_R^2bxq9>549Db=L#qst_!`(-#bBmH)EVULew#(FiH;M>{>7sftJ zuPp4tM#B}r5vxY9cN?{-Fp8!!crIN0!oPSVRX1Q-F22<-#0AEESR(S%5qKxyQWmN9 zuz<(Eq+UCs-?Y5HH^dHUYAHBxj;=}kadflOFGTAKoR+Jym(Ar@H0k4OF+JcK=Y37F zF(bwPwJJ{4vc^jLt7c>%hET1Im`DR7S*6KFB)4OFvRX%uHr{Ot9@N~eX`ka4tzLmx zSmrf|g%z*Gu6xVKMjMf^a_Q#pCP#0T;+0EerTR_ z@wm4&A)HYoo~=cgt5+!smi*z^+3U=F@45pbRraS#JC|Ckj7s~G^AS50!7dYsCFmTnrc=!*IKw+W$mgx~)TZDPy@*c+D*jTxskJT^SA^0`- zWwIt7kaSE0#40}k%b$TS5mGCIs93TVf1pfT@vG3vj1hf;|8BiL1xqWq0$c}4@%bol z*Lr;~iix!she>;Oq{ntnqbGjR>S-K-3{T_QV~Aw-BgR|p+>a=_Br1}d&Vg@6+swr# zM8j%>( z6BY%rDTqMj;1$t&JhN$BhvbAxo~C1`63;J=Gjscs{=^rc2fqISGVo#};(z1&>AIAS z=TJ4%k&M?WHN0bqr9FM^;OpoN9aq~?7=9GIIBML6D8b)#a%9ZX@!4%0j~N&gQJ;!} z4#=3J^OfbvIeMqt{jz9u=jdn_c%Gv-cyn;A&_K|)$kdo|kv1}8cMP%_xojR8Kp)nv z*^4yeU9At3OJ46sr}KIQB2mtHCxXf4b#&=%M(Dh3vXDnMvz#c)>xiSOkO`}<(RsjD z4g>7T!~}x2B{uSyXm;Gue!#1fgMe3vf-(*K)`nnYE&^GhAw;>Vb5?+Xkp`1@8Z#)~ zRl&k%mLCDjScHqO`TWeJ9DlZ!j==xTE1YJg;l9cEvj;4k)TG;@*<_MVckLbQ7yUV* z9lK!wervTyuswk2P=^>(qhAxi{>{=K`;bKyiR)AP!339E3r{mHisPAP^PPDAI1^7E zBgWMf=tsa6T^CMKcWwq4{$piVxWt4R=PoS*kv56(8tl6?et!%bY=pL-0&NG6VXyKu zQvcdkWWwb8api53w_I5^0gqP+ZByL1NE))fOgkyAUxe#*ejoQ&fTPChW^+E|-=s+? z0Ex64@~0RTa@9ch?9jLQpkK!o1h8|G#vh{jvU^h04j5-|Z4) z2T73zzIvMpoUU92FHt`ZH#w^$!g+=wl$^Z3?>6}0>U4XQ*KgFT5Zh`x?$xC?;;=O; zq?;BNUBgfp>w*LK<1D&^Gabi2D$epxVv|P*t;~S?@ay#`$uHf{fUgkdcNgMNoo)PF zi^;>&S{KaufW%UMdY;}D)86=M!1Daz0b0Ldz|Inm71WU*2SG&(o)zm ze?wBPD{B7&)E?KxUgIe^3is(6qIP#o35h)J`t(F07bdmtm~pWz^K28>&$WwX#$K4z z<>~*@zYpmbOM|ky&PCSufj-M0qRQ#B{ShiaJTk&K9os{1L}6s$wst>)&HP>v#mi2s zQDZo*MiX2d7Dn7j(Vi0IBCNnJd8K`Auh z&JsxOK~xXFEJ6cL&S(4}ZwJnp;KZi$VyiI&=X)rqQ4rsX?##_b z;Hm;$r=iQT9v#pIA7Eo2SvP{}_F3WO8#N;Rgmo$XOKjH0olHN7K9Zv75sx)l=d0YZs~wls<=Z61_v^1!w zMdw0|g@CvJ5FlT+0%eZR^o?E8|7?$DU9Jh)fQTIeKCye1oaG3UGsRfE4)&8?_D`<{@gYq`BLe3Lk0tS0S}G zo<(U>kah}*u;PH#MeS~dx29vbb&=bBi6$RgK!Uv4pShLd);6D=AyUgZ=Oas7{I!Cr zkVIO(U0g|ED4MZp zCf``3b&d=*QUI&Zis0A5<288{>FGd)^FM2~B-zm61)}y*L~Zf<+n8z9K`xq<|Gh!w z3GX|UD?*Qa<3qgfJA8?Y2SFZ*bnRzB-uf>C6%Lmx={z`INr|7kGEm~y3yr%daYbzH zf*w|s?du~$wAQv`Cod0DzZ{8_8aX5z^73a$hm+|*W*TlCDB3FJ+)jiJ#99smt_{e{ zm%W35;5aW?9v4gg*EiI-{5tr9uNFs%yxsl?_RaMbl#NyhZM5QS9T`UJ_v1s7t-s96 zK>iWKl{l(l{I%bL)MN3M7|!oxF;}-cFuOCk**G!ZxQWD>CTmjAYO*fCLL-%pr5Cd1 z;iI1gCYnEy2NoJ%69*~eJ0#grdAgG2ch2T}{gy`4fU&XJfkB32mViplGa!r|S;k!@IHVF+R4Ku=UyPmU?E$W**4m}GUJoKQ1$tjfCVd?;uUuDcK@8qjQ|p8p_a zrS;>}NWgtEAC?l8*0di{La4y;#X~1h!n#1CBVqkE4v!AJ@tk?Qzn2 zWTV9^tdp92dz^0=Cf*;%pzFu+kIy7q%$IOd=jTD4A2M^em6qStN>f7e+$+J{joBCE zFUQ=CUm!VT2AaLn%Jide5yb+4b~vTbynHEC+vh|63XE`wVtqC(F=3i1$Y+D@0jxs1 zW0=qAFL60p>*E+( zVZ_ha8*ISY56WZU0*YUSW4KDL;gh5(TrJ6m!cEg^OtHbuWU*!FCM}YrS4)R9;Pit@ zc1~cJg9*6L1d7U+HjoSu(jjnzbtH_u&Me zd%L;>tOf}69$0R11;i3pM*5?^ z%SAa_NZ!@Li!Mm3`>^#+V6{C$T3zV?x*|(@f|g>*JT1TR(l6w&bS(w|-VmC|?+7M& zAH9pWqn62+A4mBqD0~;agS**uy8ASN1 zk_FlSLUg>sy`0#c(|jMS-ot4`?d4 zVYOkepO)P=t*Djces?<2bC`RL=6NDNpK&Vk)aH`)DSY z9cRMp1yXuAtp#w_PkgWnX^?-p^^7pvBnn<}x)1i}$$iB?3?h!JiJ#vZT);t4X=199 z0N1ZC0Y#hYy8(98ET5q<+g9LNxnT7l2y4@0~yApIbWC+ z>3Ivj3B79M3KLzEXyqMv)y%xV-jc7MfpLq)#RKygo@g}drQoBF~5tT zJ({KLI+Y4PH3QO zaF!ne9=UQYZc`~UE~EVAO2FZ9p-5$+gH+DE-2d7$$$KU1uJC7fx(NVq;L6g;{@`x_ zkvcasq2ZQrtvsBnavuSAOC5Gg zl|*cElZN&ho*aTW4+K%GXyXJ7P;{-13tX!>k6YqkBR&rtY`Q)Oax>px(+Ba+k3JX@ z+|UPQHDE9_mg#`>0OHr;6fR}d;1Ah*b!CCvlM3XoBtnRkM2SLII}6x^fP_2PedtD% zs)PTtc%!9o9Zs%PFItpuQEl}g?)-3j4Mv@O&xY5z+){J5zdt}~9d`dRD3sRR>~?-Mo@iIk{76R>GZ<$x+-%HM!IL{q2fS z(K|(t%>Aq)pUju-E@ebfaPSzKzcDxrTMizBZ5|Tu$e<_zHHD$TpNgz%%TMqZX((EQ zgkpItVm&)g2K>3u7B>7Zk*-x#-MOKN=lyL3tZisT?m`vHd)FE3)J16g$I5E_y^@+5 z5d5b-%%=U3L=E;w3>i^-CHO7hxsAQf(+_FfF^UQ?*%Nr6$KGyC61=|96El8>S$t7a z>xt?3wFvZ%4$2}Bi4KY)Ff3;X*b}Sr{J(Yovv;7(#~tef+B?<8o3P8>9{AV(UE*JJ zlz(kX;9pBTRVDVQglL!SggW2zuc6<-7~{Qnr8}d%f2H0TH8#PSx(B0K`yi0Iz8S{{=<+iY#0xek$mvC?*pk3calg9Vk2rN z(N_bpV}p97b!knc1UlX+g$_Jm2&%Eda;Sh#&10;n1lxE1?umk`op*`kJ=hb#uyAZX zQ0Pzl`(jU5MYO#_ujwpN2wz4yOqb_pNjf0J~ySV$e^R+bocMYyp39 zcWWkXjDfZ|-T?0^l(izWudG$vu_TFoxcD*_fIB9BO`;CM^LxI;ufTHaw1}L&{^r<{ z6u4FbP-vMsDXO51gLIKymUBWmDA4G2F1p?(gGV%y=N z(%sMmK6QxX@T3NFI7lv!7X0U{;E3USm*{oyE%Y8} zZstMrcH4odUky>u(j;yi3}UvaUl43WLJlo9mo`I@gss!ytHZX_P70Db3efI8#g)dB z>wKNA#top)azRF*0peK%HHD%;r!PrKz+jK!3LJ|tKtujj3s{z$NAe#MZe#JA$ssnofWbyDX<#6+mh0Ynm^I`?yixB#C8z|>}4>wOx7CH{C1>b&b%Ukhjf zp$nw45Sn{e*`8KH=pTnpR+8r)(^N#xHN2#e?Zo^&ai#vz#!U7aP&&Ud zikoeVK1<2Zj>#V# zV{C#_KRTt^F+M$Xf7cgO7U+I-O4lj}k%=#N0Sn00D+gteTbK#qhQAEpR}k*P#}IDB zDOI4d&3D4pQm}2>HF0dHb67rT)$J}NcE*?L45a#skkpwPUX=)>I)mNNDEK8wUKldn|4o@nQnuca0>OXl8 zKTCX8m0|15AK&l(bEc{_CZ{3P}vwrl*3l6^8@jYOo`vUd|@lZ5!a2&vvgoeXKI03vhKAl|xf z3W*M=22j8r!yvtBkV2T`fj5-nw<)bvkAVWJ_CELN?%FWhBFS)D)Z@qOM+eok14+u^ zL62XuOdRb5cH1S(xM|tsV|x`Z`otr}y*`YAoCpJ!?Q}t%yZJ7POf?&K9bMdCRFSC= zGZPnBL1wzjfgg0awLtgW7f`&C@FKKFA*vR{c!m9&FQFgs*agWs0vp*eu~)T{a}XS~ z0?}!Afp%4C-+j>OJ`y9yoV7d6N zKal#q8oXMw92djWU;v|T81hJLnk{FwNKe9X7lmm5cs{0MFo+cNezTQ9T%Q=MmZiyhbHs*=7S=En*W18hF7tLvN-Ut z#;;l?j=U|9`&Y4t;*jeN^q*1UV+H-OmIVDB3-m_-WC;E(*h;haRZ@N;cFF9?^i#0{ zrcR#$a2E?&UPZMj2CQ;$2bvT=@BpSj6hg>;mEA+b7rS%ffEqwhdBRuqYf_>X2^+4x|G#OfJESBR!YF{Fu`X86bb7%p1x4t8yw$737-|dt3jP}0wthKy3M%y3?-n{ zB(8G#sR8<>{^Z8OXCipT0pp<^q;bZKJ-t%)MocW$nFg$1Mx^R#u);qj=~TElRROdNSPnTAnukX|#WAne%^8#D?G6PZ4!O(P3|p9?3gji1%@2k=)2P);-LNU4NPFXO zv1?mIG!EDpJh-X&4d97kyE4-Y~*j zq$RPmBFW#hK9Kw`_ax%u*vR)x!XokO4i`uLu7voD@B~YKyH;TzKYR)xc`3Jj!7o_} z&Y_+XS?3V9mO`*tXvpDuL1pa%V079E?*SE*LuTQca2;3_djWqnseg6LVHfqU^Nq_j zbz(B{YL&S5(4zXsRC=YJezmH?zPDuk4-O#j1#XnUB*bO^RLZH5O(EU5Z}xUGr?=(!RaL&5Lknx6B2w1SphIY zv1qnqcq;UrC)uRDoqJ53D~9UF-3wFmO~OQ9jc}J0SwK|V`9!a0!52_+KqU|z;s7iP z^#w$BvH|>G!~hG30aSVb)dB(o0LoajFeuF%`Vz@19E$poPnfT^Y{~XTIsLS^gSCOc z?gTM`y7aIs6I9th9Ooavi2q?(g?-A9`Ue|K@Y$f`=0oV&z*HRX;QYciatx3jn5K*X zKPuLvQE`i5j75MHng~eOt5qTCdJ2N$bIMDpk~oOI8o&-M(C#{$5C{ikha6)yxCCoM zdx?^2AF2j4lovp}rxto288!F=R%oT?&HbpwY9)A3xOYdZX1oD9jQB$q;1%Jt|F9t8 z&)6R*;(LntViU^0S_u;MaRb7a zexmPE>N3%umV`?~z3}~<;%DIvh#}cO^FPQwxwC>>5WAAS+Fl(v|48`vUNt2ARrbFH zA1Eg`@98COUW`Mz|Li;&f1OrAyaBokeomnOB|o+35L#DEJE}M(kjVeSlb%fx(IEU- zyY~<^?`?eWZSp9fe%t4fb9@{LhK_j=P;)1|4Md6-iHP!PVsNrR{CF z1LTEK-a7cdI03(}`VD^)2sOIuZ~#QqQ2$eoKQ784#eebJkN{#BDE=Z)I`1ndpt=>| z(_Y{l1=)M<_wBtq^djm1?7t&)i!fKS-ST3_qaCDt|Y=&vQRlg=;4l_b*nDgjOm z&=zbV_9XK#u=)M{4@i1cy(0M?PD#z!6WQYP{Tq#MiTqgBg^GVT`S%Qcz(oEm?*0uXVfbA;CX$&z_SJG%DSq_cr{3B@ z=&Mqw7EpZ-bVW|3T^IN5dLJ6u=|lQjnAtB!s zfu{d(nK&aISbQJC;k(B5(X)Ej z9dl$gV=oCk&6;!lxA53sn3-LUw?7)jH?h`ycNyJOZdEo0FioBlZT$E807`s39x zL<-5$&m8_3e`gx}A;n)*#80Cl{x4M|Pel|=8=S!}YQ;~ZR{USoiuz?1OPIwHX0e1> zEMXQ)Sj7@nv4mADVHHbQVTp`Q-M5Pav5Nz-ivzKX1F_XWoMIzR*a$8>)UilKq_R*E z(KaXfiiY==tX+KM(%ut5$s<BH#ypxe z9)C1Zum#uJZB}I;&FYcRY2%A3dwjIz@MSH`US)S*$eO)uf3(5wkMg#YSh?~0Rf`7~ zuk1z8tI=Zymo94kd*y;f2j%j`@L!1WwKoO*Lf|e0<;wZdv?>-ASk`{dQ}yBGJaJ+{}6X7vn{z1{3ZCJtdH z0<4XKT3#A|s?~O0i19^C6z~j6_ars}{+b0mhVT-XvwaZ4%~{CV8qv09?S+h8D9RTs zV66+gFB9==W4*clJvg?0_u!dm8=ls@j&+;)N7z`myP4rJ@FqkScm$032$O8lWcer} zs^lMqm%INOe7l7=SwE(bZ3v6;OOYx3QY5u1g!RC`=yE#Fz8B)Cbn~%Z_aJ=gTRlNy=D>$6i?@?Qdhq-OCRYzJ^e`fOvMM8=xUQ)6k%CN&#dc}U3N7~L3? zx<8vYdPp#F1;)5qV54F-j~^s5`K$2^XP$Z=osC@q4>eyc#(4N_q=SmxpkfylBQV_o zJdKLcN(Pm4Txd}hi)X8&b9ly{gMOPigNwFYc0V3ph-k0Zp?1^UlWDQJ(74lB>Q^w! z=kjiZ?%>*9Rft|b7o!7^LN5>E>A8G_GZ(#_%enSAx-geF<^a2M(d+Alv~szHeSe9k zxbbVMxDZtAqT(Aw4ZceMBciRY9_QgFRg!|Fs9K|!MQ{@swJKUBQEh%MH+~txqAXX= zaV&Z+E|#Q#z#CAn6?WM1>-A9Yl@UCjGtR?LL?q!Undin_j>Gz=N~B;AOqyDco4qo^ zt%@kdgT=<mUoik<5`;Z@ ztnHTWuuU+AsyFO$Zis-_Mffe%Kr+$Gnw(DYF)i{So|?%|zmFDvzex^}fU{hqB%~bZt8Ro4`?af{ zPfK@LUeNPGfbsaB6HRC=q~!0){eDx;{0>4mBwS$x{5M<{iT6B(YjoNoS@fvWUfAgp zSpYzOXsInvRCI}op3l|_ z8&`A%*g%HD#vu(pHpKgF0j}x7R0UXMZ*<#9L(yk%5`zEhkH%h1#123l#viccEn-aG zoX^uYVE?ZYJ(u$#0n>>~ba4nz&xcN(&yDH8_Gyi%KY2r>(MG}z5h0Fv!KlO(v2VK5 zvdg$}8|ps(MOF8F-eCTKrS1SF=kuOIc77m{C^!q~{&}19t9DcZm#q!GZvK`?BjAj? zq){4o2u+&}lvrh$DDDu__@F_nL$JwCI>C*4Yg}~sj)<&J6S7guT=aNNB zdQ^J{#1Zfvh(vwQbLcSF=ApwTI!yImO7$LqdUJlg9_qb2BG)AXRJile-w!kBZ)!dt zYhonW&zujP`V#6k?~XK}EilJ?Xw=IaG`);>Sb0=^Wdp7{T}5>-K;5__n!E$iGVxiD zmj^P`q=-%(j9&jP>i0T&Uj+OxAG}ACVsbvD5ntRFk;b(RT6KOQI-T=7jY)AY2;+R- zne|l7V@#qTJ{_a`=*VEiB#a8ns$#Sn2qU`s0WEh_)iV-Um?cT~zPU=?=4idhc$)lWX@WraO=~;1p$Z^~_cOaL>W-#6=^w~w-oAFwcNIF z7CtIl*sOhnb36EHtVN&C;{hu2ep3Mf4}|lh8=w3JU4DqVycS({Q0>En=0^w@Yk>=r z!OdcT8LMaNnAX&i@oFCIHYy-b1XRa4@Dm=c3ppP*WgLys-g`XrE?y)i&?qCA;; zx?!wE)IAK7toVNn)~fb5YSE#nf` zc2taB+hycgh5ThlU$z_J>@vB2Hg*I8+rgOVXZ0BqV8)_9HvMt%=P)AExMqT7Rxz=nZ?6eh=3~d9OirDUw+j7CL}hk@nH|qs z6Y;|MFLI-M7q2+-@MA_>qk9i4{C~tXewpnEBO2$XOh2+PcK_o-s15 zDf1UEoxbRx8T&2Dd5c%9ICjb6waXT*J#xjeHKRGh?bR0krS^Y@GiHY}j)(dV4;^#dd-5IGi$1`ihsA??4@fK}P9|cQXC>6#iDb zD7-cmxsye{ir3k#R$sx}YDsZ)AL_4j`xv4C&a$Glh`(IR5_=%bc6Sr2GaqE4wWrCO zmJ`n<H~Vh+RFaSnwiMMlBTz+WS8S{Z9EVgXVv#kIkh~H?#EIVAOM2ErL-duIA#3cFj*$gGRocL&h~+oG~lN zP=lV!^lLbOxt40OsHTTv{-{xtjRMzk@yVE=fFku=2BVoJN5#aV@qW5&z@X>i8F^|M z-+xvJzE_k+7|a_@d0|4{$h1bncneFGZJE5U2d&us5`;^$;Q;nYtXf1{Ahsum*7OC`_ z@wWRyhJ>XoQHxNmwTxpuU&}-$M}Hva@B+{ui~iX3$Duzi{ur+__#RXdlZq(Vq$2(= zD&qg5BL1&J_{%Dmu!<$DVhO8Q!YY=qizV!03A|KNp#TIOn7;U`H>sRL&?U!FPrQq@Y;}b zb7wJ8w+T`D<;eY=HICJs5hK~CTm$CJ?(;PH8zx32#Ba;Mxcy75ENVAVJ63HHThP^+`<>;V)QGo ztU7552+EE)Wqe}g;-v@kYUg0Q8c@R%oxIKM9?RkvBGS%T#)WcLm3N`6U;T_GPQ6T= zNiW{8SN5q}yY0a81+}cjTR4ivUyR7pH^_gI%TTm%y6thuhUDQwOfKi2UKV|fi^i|MmFS>7eUk8C1kFkrFqo>!XZV4I&q(mWe9Ii%9$zjRodXa6nHkGPs>&d-@CI2pU zuO*+`HZ`c#L#<`hVzvQd@H!jk=Fnjm6+b1Vbyanp^X3N65x7VfqGs*U6adtm*W3={KHu# zzvuX!lHchW{IAFeoB-rrHC)ovY^&o@#g@tC6sU6QNHa@(r?V;PsE_E=(?vvg79chO zri+yl`TRIR^7$_ z(J`h^L+bC;+OWT_O*I315MNa@m&*k@jMEN&e=jW?>aSPqZ?eh+7W`^=q2AMp7#hK4 zeMLGg;J5wTcRX1`4yYu8HOuah!j5on2SZ= z9$F=0IA70_tMR5(eiG3TOSnnEbRnCFVA7sMk~js9s;$OSPvb z@%RtL_*@q6Lufcdc_J`UMHQcfiV?mzb+V8(5k6Q?OT$Uv4aYQVP_Z?MYfV&bL~JhO z&s`9E8(aOkNqki9WW;4pYn@cG0YFy{!SvVIXw;0}fsB5a<)J*85$v*5Y!WX!S%}?|^ghVRqBB>R#8V4ZkEz-YzuM?nE9=+W z6%p%M-x{k6^}43lg?do}L{#>oGd|oJXG*CxSi$P!9l5pYc1{YUN-% z;TLL05a%SmJrI&O6{`dv(_Y?*B=4=32aeV6tFCo*E|*}v(^PBRSIy;#W5?$$gvW+r z!IM3;1F40<;~`i&V~L$9G$5?YL|)+?knKEa^hZa?o+&MBavvTMsppl;>v?m|OGU6~ zj2}|fYUK~9(r(pcg7arMbRXaM(o`B0&o;7TYedY8MAE#+%%(Zp8lh(pjzT~P6Fx*U z4`+`ymiA84Tx(WOhopI=3Q*z-O5P)GC$XLxQJZ{3zu-Q zzP2@Q?}?*WPvc6Nox_Zjz+TSPwQ{{M#_Z1I^bRzaUXN#i*NbE%svn0KgX=}2%{JEy z@lM2ekny%I`@_mk8@q8MEbPkRA7g*Q1!tCe1W&!>9$~3Bb@`I6K{g&?5pDMb&ip;X zqS!pzQPyeOTi6I^3!>d`K}{xNg{QY*9^b-}<8^VUrlZgn6nZp{Q*~QdtlEA!(P_IV zQ$QJ%<9JHWFM~upRRTfD;8#+cf)e;9%AdC@yZcyt3#^kY${>@sQONt$7A%vHl5C3$ z9Nkh4>8(y~3!)X_PYk=4KZ$h`9D4+V-olvNfi1yDaBa>uQS6Kcc}{28zegy@7Fxqg zC+-&6>EMGAfDL^gCSU8s@#ZbKg=3??^b!RaE*RDp6hnt%`c-wEPJjsrI4nB6>)OH6 zTd_9AKRjb2E*I3+R^VbQTs-(B+Gb@huI_Z)t$5pKE3WNt1>Uja*TGWT=(g8ZJhp?! zIWSEG<+h=mxfM8cepKG!pk4&<+{%n;aW0o)W_uJpbnLAxISrvvx!;)H=Azn+vn`U4 zkK!ps0Az0(XW(U-TO06-#$!|ntq@JQ$AFsLPVe`@kd}!_0S`x@P;u38dJqyc~40Rn8G7;P_f;B4v)~` z5m%fYl~*>93~yyRcBF|b{wtl7kK>qOZX37)Zx)_|LJ=zTI29^vE8&W57}w*t1L$pI zasAuI#HImx=d~KjoEv5GvyR@p_k_g%Na6SXmK2&|3Y3yh;IWo$g%NMdM|*(O5<9>PITOvn;la!Aq7!vGY;vw2odg`?QpcRcl4&*v2$^-H6;f_!Dm_;G2Gx z5Pw=47ogyYoBe{D+VyRCmIqU=ZzoVcpOyppoV5*4L_K&1HJLy^0UAF=xoW%(gUaB- zaxlCihY%*8#)%sY39aQ-Ye32fe1z|TKVNffgXY-A5;!6E*_bG(<`>K4FO0^-|6Com zML4+#ZGG3~w}s1&z{L2mc&wB7DrhTjs1cl^ZTX1@S2A1E2MV`icJ{RLbq?6AHdRT8o8xpB} zmHD_76wAQcfw#IE8}ZOltU<1A)_2gLx8kLcXnExVI3?e1Fyd!ciwX34n7n(GKIhC# zyrYrxb2u!Sjz$Qw-O-r93xpdqysv9~4vu}l5#8z3uqea<<4j)Tvdzun7obsy5{F;5 zhL?*s!e+sbsP@}B*3A+KOykBl9*c+CXu?`B9peo+2$!*9T+`0SLsA6P=kN!gCHX?x zw+26A+KBqj<>o#qIpQCq!Mk zZw-FL<)QVght-ci?5yb2k@CW=iFdqCtDjzhIhx+FISl>&+BziuV`e10L*ligD|26E z_&b?M#H-A2e3sW^!FLDFgL{7*|J~%+#W=rExEa^gb{mAti4ACR522*@!J3LCp2Ldv zZ?$}t7JnvIl|S)jZ31I>0&A}SN=;*aJi|6eCC;|7Ci`3jId%(s3H=O~oI=a#RYIJ~ zVxyV(s3tm&C9Z9eFW-#kR+5{TCTgnPR-AGg&$QRrsDi4dNkcWG>`fP!n|I-xD$vgvF;PDL^Ef<-tHCqIq_d|UR*d9qZ zG*j}0CZfG?JQ$bZn}14e4XJZ{#FsLmzGCpH*=w*5IUbfR9^q(rU3`uA8KmCIOX`vB zCfY~L3ejH3;m3fG;HQ*^!`!vlz^_jPd*6XRLx z3WUk+-h(Ah7^pJetbuKq8qXTsQ}tdCzNU)&Z|>3FzzZ_@tk7h6JMUq}TUt3bMCUT2 z0)yGuf~3e+I%0KW{8zef)fk7mYuGAeIlP2PKwKfxowjtlIR)l0|9xi3=Ze~){PyN{CH5stU7 zYGt&500DS!>KHt^QE>k!%1y=(M@S_w#_kASeQ-p>V)wsGlIuKteH6a-?2Cqy#W)jN z7RC{v=@X6G>ZmyBTjp02`x!TM9CbhO2yJHR_ZC{sIB2KN?TLy%e^K%|)JUbZxn4^~ z#Z#YBdQ8fiLNeOj<$N50`Bl06fCw!dlak@e#}%R}mz4ZGsqKkvA;xN$aVNZUSYjvt zB8)!9>bzHV`M4OsrJY`chsvA(t;=f(^m;)^_X3161e7-^)65;M%Y_8Glxgp!t22Z>pa)Z4C(O7FT z))b0h=V3F*_?yIoFW%dlI6jUIwHRvjP{jBcUpwYI8ebPd9I`!dU1rHcQKVnS@#u{E zt|l&h2t`tEpZ$KEXQ{YOzL4|!F4U*i_zM<6sI&P?8|17>F* z8QZCegYMUMYW#TJsFqCJ$$DISrv{IFak!gtzsK9DB|Z^lFW~KgsJ>H^&%xzP=&pAG z+(-v~fb9-12k1;dgzS1$BNx*N8-?qgnl=#ta4lr*7PP3<1N2FT55M3O?5w#{8{zCE zyz7H?@tGcoM#v=`6ePB`(Y^+>TRv9<0M_jyqJedrm>TSZ z_JDS~NGl-SQM7W2R$uTg2NlC7qp&Wk@{50xMnCK#^~->?&#%!>t}=E+HPP=i`rQY^L7j0`2DSTV%9w+U+kyf@zE3n2?;K1W!jBQT zXXAKf7OaJv@jK~Ic(oL88n0tCSf@Bx1FT+$z5(ZDeHb30=sEbhPc|^W*AeY*6ymPa z6oi(+>SDLE0AYVAOseM#E^=4IcWQM$yK55M zer1wR=0i$vr^eb{6U+|8iinbMic39iFJ2?Z}wgk0fLW+`gj+(yaL1&6b110 z@|5WR3FyIM7h~E2e#J!kUTjQ>zig!R`aou&laPFCN}O|k8K_D+3H$j}4Wak<*d_TH zeICCI1`lmLE4C6};E2;@-~xX4rJ?pAUXp*lR2;bp{bbQ+;mvp*8Ybj(c`)yxPfFMe z80Q_tiqI~k+m+HFikFF*fN`VD(B!+$|ADxy#V zL$Z#P0co7mE=DWz@l%janx3%gD;zW$aR2@Wj;t$9MAZ47CL+9g*r3OofJ5@4N+?Z4 ze4aY^+)Takr`bM-<6}VXqPR|pk=ZVwBBJ5RR@Ytyh2dp?9 z{R_1V&_UWIoC1#G8Zkc9$GbcF7q>F-7{fK*cLO6i=5%L0VeLJp0A&qD}xfYAd;>74o^ zgi!$H<%K6S=oK|Xh0IQzfx{g|+Cw(SI+#W?7MQ(IP?MRjTH0wUBZcD?XsQy=R1YAV z&`Wcf;%X8~{s%E!)eEmca}`tz-d{8@LefMe97spw&@BV_fP^E!E)F0g`S-=oso8T| z@wrk(U-;=>L77LO5zHfe4leieN0?A8zi*3z%T3~PQ*k-26VqoU{H3%D@m#1~2uHws z$qWef;uNhFU%PmqvBEkrHsVR4e4t$bPz?c>7nHdJE~msImw(QBC>Ml#l(#mQ&Y(ia zYea0fE(VD?hXeeUukGVjnF~EFSSps8~E@>-Z=~moWrV=#&VDeo>)!+x81w zdxqmKlfPsDkK+mNbT_FG6vOz!*;CopNcFHehg7gQvN4VAjZ=eIl^LJF5OLf;X~Jgw zDD^089S*PohLRz{IQ(M#g3#)EA5jJyffY5LhmBv0 z`yZ5EFh4FS08NAf*C|c(Ntphr24b7d-3{4K5m?UpRD%K@4OM;|7p71z z_ohvG-T#-Uu)Xl z1h@LIjU^FwgmT%jKJ0y`VJXb^W+{$`Pq=Qp4G+^XEd4-|^+t7E*uuF*tWJeK75nfm z9+3Mss^Mqe)O4W1K&VlvZjrjo_D3tr_&6H+FW`Jw!+Wy%5?D>Wu0kA)b7$dwA)%GN?B$( z4g#e8>Tu^2TWxqj7P0uGa~P@oI*?w{y5uxt~g}(PcE6U~kV#)adnIjc(u) zsaSRpJD#O11YF@-IBeq{vI$1$sd8z2C9y5w)$5TD$P%YeO^(@wi{oU8Q=ATWq^?~p zjCqEJ#@yT}T{~GA^9_ydGcy6;05X8+I}bo!7>B6u3MQbm=yH(?{W(fE5X4Wu%z7vT zONU}dM(K=SvP|0!)s`En;aysHl+Jr6Z65 zPIk(BSWga}#1geQVxYbr{YwJ%IY!U315+P}fn1KTO&tO1Mb{0;NdLn;!tkvek@|?V2}=J0={x4)dl>XY6C!Ty zJY;-{jQm`mBq%_{Jz_2q7eAsC5@P(nVxz$C7$$=7YB$Lq`lOV}?m<{LV!VXHId32& zgWF*)P%v@AF}S_p5*MRU;`aLq-`5=oeCXiz2jN9JXFeeq=>CnN%li%>O5_E<$q!_a zqdL-pe|~Bl{O$k>`JHmGhA2{>`29~u6TiFQcTKxuf8rva;Whmz=`+0i+dMQt%;j^u zdZxOG9!fd^y$F~N?@Nz!NIQVHwNroSXN3AmJycC4maWt0bGciZzd9G{NyKl(C5JXy zof}w#79?&>e0&_z`8cJVj%fp9A2Nuls$4v2ZQ7s%X`0ia&g=dSEX&)|{Mtbv9^1k| zC{9Fz-yPz2NAde%xci3mkjKa&M*I$h6Td^%h(lt8RAApCd=rs%QZ=MP6hi~~z%c*o zk!X!H4FQ)OK>#$3qbR175Ln$QQVgt4i6N_N6It1b^;klLjJ|kYV!P0~=L?_HdGE4F z5$pWpd7+vi9w{PSVy^R%+d)c6?z?xOPhwBvHn&ngXcC`uC=qbKulbew!JsG|Qw3^( z?-?RP&jF}!idlqPMOWwB zEy{Jeg{&qupd4!qbk5f?xSI#;eIWRRgP}H*@&UgOm^o7RzW%}f_vTroag_eS0hvL9 za6cH80PiyEXHq?RA^$d0eF`Cij_ERys-!q%d6T3MM|8s8p#NiCcRP%KC>e|lNDhPi80f--vBZDr=;DFp8>gqhZjRcBqlc_U{C+P^+SwUBQ9=40M`AL%_96KNNY@lh zKu-YjXI22$2;(6b8?WxG0XRhg;=eSsqRsb#hUt-vuABa6C+;f&l!*`(_-4eN^M~H8F2kK!1gL74Rswba;0~sNC}|YC5cfYNCv( zWdYVj%a4K`LtG){bf7%Kzt|_DP!2HxW5}-Q z;ar-dx%AibMP=?SLA1E{I|}_(R17!H7d5%R5^@nXaJn#JEBD(fd`1 zLg@AGF`C{#!>2{4l!&1z{V+;zwetX}nt30E{7;-D&iP0+j9+zyNeOZPXkzmMu{qY( zU~?S9qVGZ$^Vyv1RWng3VP0ttVCq95>qt4!$vJ>e2%aVoOKCvY2)S;C`V>`x*X3M- z$N~a5Ur5u>#IQ6IXW<_KF+Qfj1OF3j;-rw_CC8~S)Q@#*3H}k^&jZ7c2gA>sK^*)? z9oWZv*QP?grq7=NF{pCW!Mvt)FXW)#CZ6FFk^#TtJgCC3h72^yPmBa8R#Pep==)Gb zLrRIJ)E=OC&9G#6f{D76@k`aP2h_*QH7wxBR3eL>m`dK6mfL5PK{A2&=c2J8W*6~g z>;#q`&Ss=s&?!*9@S-4IaI*xAGg zC&Z+F(G1zFw>hSP?RcCq#_iDqunav^$km@mT6FR8M2;}}2av6Y^k(S$LubfVox7}c z%;5T`kpumC0F;mVq)iuVZl(fdP$lDUj-rSK>~5ZcE2k(z(=Dpe5_fUKM*3?rkrIO>78H^g=H65R*c<1Sk9&8dow^4R*ynN6+KDy zFqa8MEgWbg9B)>B0DON+S~@f7d&2Ql&}5-%wg6}}bPPOq___lW{RzHsPfUcIJ{7~Zo(<3-_k?C>M1jbDIoHVa0 zD`j~+h6j{{ItJJv9WyU9#{oVo_zwtFEfdpk9#TL7-jAXF>OS7ds|_H)d$-Dgil;`}Tc-I2-(!7RmlWAWIz@wQ3 z>t;+M6e*^FAV8DWKx&^97HK9*$9E(&N;QGkVJ{WGC!xW{2@1>yMc$%uw0b%4J1E%i z<%qPT+lilon$S5>mz$9gcdm#+L?x;7(C~h1pL1s}sCjwc^ZR7(X=|^u_S$Qg zv-fX*y6)`~V0P#9$nB8QT&fz}g(D2kuq0BJ*W0bPYZxCPvYXF#FT|zKMT}=g@&4 z^zRbxP}6Tf*+&1)Z6%uLaya;SaU8~X#lai>KZeGZ&;OhzAOtS%+9^0PAKcvObsQF3 zvjZ35mHS=azcv=pLK?W>S}9AIa=1jBR)5lVCP;!n-!nvSsV(@f^$%!bQ z{w)*wCBg*947zi4L-i^XlsG(zh>&?D&BJl`@Gb+#E9W3A>hgiB%iIwWKF5n!n=|(3 zGD8WK!oF(Y^WfRDF2H-u{;2K5fI*;P61S^VF~lh6eZV#tHo^}0ws~(;!Y{K&alcf( zZre_dCRN0X$p{ykOg4-`a=(-XOeDEHubx-v8Dbm#O&^GJzeJk#B9j>UfUy{Qm+d6b zWHYo~ijp!Hm8=?Fktl;Ps!>KfPNGaW7~l*) zFed2?k9%Xu;-Keq)F=uCv7Mv8yAYJGZ3Yo#o|;3zb8S^=%QX8zoT=%pN}PFAoL{DP zMeHO=foe4xG~eAP42c|*f|m!s!6>YF^E#EAefy4TQ&OVuXnIEf6mk^Yl*D_AQWZQeZC7czxC?u_JTJP4LtgEAtK^l09Puc#+~uwKeolP9 zLe0ttR?7QSUjCe1+A z>Z&(ezCN(Kj8Ho3%3uJuZ+aahJgP&z@LDkyR;Lrk`OB^i&;RF|(A{;Pp`mLF)eAql znrwo%Dt;{qKXrBZ#LHI&Mz@g*oGMNn@r?j$Bhy8Z!q3Eggwx(t_V27LLLDdF`6@%kAOY8W1<>9a}$euiX73+$bs*C-X8t6immAdw~~k;a5I z0lRF-?aYs_ZMwJsB=LdTb>enXySljKyn2qi-yP%btg#54S|XFZuHGK8T|K!_zAX}* zUnel(?YMC2j1K9nN(Tz>4LhsibhS=~w=+60(0P(D>0(VVHsCBjFeb@SSjlcL%2g}b zUUv{yvN3lMRI*GEzysVcBx0+sE?w1fol0~?1_ous)Bh}<-d&as)21TBHqFM>ff3K9 zJrfKoieX`u1Xb)nv*n#ImekgW3wDd2hQ)@} zX`ykYi*L92DfOikoA#eZ$;FDRV6PWln~VEPH;#Lx%SuanuwkR?BkV;&kJW6zRQc*q zw>Ui7;qVQb@VUK&YGO>ypnwb!RC}z%nA-3YHY5u!;83j&Hi*Ku%?B>r(72Iyw`)RG zyQ<MmPVWRF5FW%I4?xjQt82HNB+TRWA>rlQ}3*8^uL^)es68N^==jmUwn_= z=fU)*ih=I__g{eIB+Dk%MJoQKYVxx`gRVL%pFcQ0V&V0l=-f-@T$TRry_y;F+o;ru zkF>#2)zg}iK%ojJuqse(1xU33NOepCkm~u$etA#hqKlt1zq&d46Drf`Ki2r>k9Bu+ zly1#mBN)}C0^MP?$KFaW-lDt8w`lWX(d$w6 zRvyZLT@^UOM|DV^tHIQHjPlOr4O@qT&{noYmlGj3c+9G z&(>|l%~Y5FnQ5ua*2A+uu=Z}jWqNaXY>uuo%%U&PfoGP@%+cx0BiehL5qRiAkT^N< zs7KQ<50VlB#Im1>=s6m8fk>XiH>u53>SrJvvvc4a%wg~r-xI<7PU<-cGu1jvngI zp}B?h01hUS3*1veQ2HtZwWWXj6@g#|b)C+0bX$HimbG04coH3__&n@D6(YNW($r5* z^e|Czt4CSNtHmBC#5ze??m&_#-OOR)drY#t%1~shTIV)XbytBio1^RBiR#1BLd--( zA3cS2w-e*t;OLP2EK8K=HX!-TXb1XInyX5~2fm=HbiS&zkD>EO=GOYNqIQ?zp`A&o z4z`h)ZWy*sFM2FQd?wF|cFKvfqWFoka=Cwx^VYX=*6G{AYc-gpEes8%@}RI^ogv^t zBId=%w7somO5R5-cL!oCl6jT>-=0-fw-BnExG>dOxC&|`FD2?0h9OuCk>f-iYj^@f zV3lrOU?B5MYdp3c*(bE#0$4>;%x3zFr^lwS=tEp%6XivBVAex`*&XBOcA)o|*&$>V z!qCm{fb?Q7purtrLhhi``#i2~*RZL1zpkM(%kgHC;N8L_2)-zQ@fZ0u_X~(3dI%?)5-es-P*9m`BAf90-X@y1m#7v-~We`0?~oa zBKfI6GLq^qirPMhXkFNt?uOiWSPMK$QMiocZX}=Aj^vA?=Dq|^rY}b2qEk87A3eUR zaw$}~t+=`BDqT+r#1;jA2kot3Q3;QY2BG(WH82)YY|A!YgHzhR&_M_5(x`bjDY7p^ zcFF0S@1K73`Z_-gp!Iq)mPwPk{)(u#Y6v|%tbqYirn?K#DDB9=WI>RJsU0YQfx%4r zdc*AK{sWJws$8zBoZnn^mam63Df!1*gRlUi&jgfCMQS9ARlP&iaPqQK41YzGwt@&Q z_FsF*`ue^IJT=Tc?z<)h`NN`2VKPSEvpqDjNSTZwb{ac1pSyyxN9L7CCeXLk|Iz_f zeJfS3csbcsL9XN-a%}>+;uXAToy}-Gh@ywosYtzaoRiuq$K1=loH&F{LHx?4fWHzd zD&oc1zCF9Sstfb2M81I&aAMP0Y)~8(WE><&1i`Y_;~d!Z3JPCUvU7<_f8XLzUjeCp z2hpITUrkQVW^OQ$Ab}YFG-@8QVhYH;#UjG*W;ZH_iWVp<$W^sw7}(w<0Nh6!fU-KS zG4;cZ#uoid{~>$Cr}AxGvqpbYir-v4$**jwQn#2f`P^LLrp^tE-&~e$V(6VmFg3n@ zF2&EC(E6z1EM`q!9W_JJF;4LVO`*$35xjc0K)6XS>F|d6GwUb%WoG2v3&gT8SNO}` z%Rnso3A(tBX?G?NU34e3J#F%od>&Bk@FD00m~<|=IKP9@gZ}4s5yAZ(%s1q-mC__dLt%4OtkOfD|%MK1K%{f3Cff{}f#l5W&M;`;wH zR|M|`A0xY1RNfSoi-_K*V@$q+Ju3cOsyT`v4{nCednM7i4jUCP6lYk4HFZk9a9h;; zfUn>>&5!QvejT3e{iB)kU6H+iht{Qk(U37*?jYZpZLS#ZI!9z5)&cRZ57~0LJ&)c;cEFtAfoW?}^Q0UC zBb`TWg65B;Ouw$5r(<^tftgJ#T{-0MN*&{tJEJyzbca{;i~VPBEwYd8(6h2RaS|?f z-j^-hUcvo#bIfR-CKi2jk7`xG(vJk0GQ`qYkbg%Yywjz-@1v{Raodz8n5PS2C_h~%A-yv9fJ-PD8} z-;Ks+ba-BaW}KoySiqoDtNLaUdWUJP%+n1WqwJS|5MU_J?1sAi6HvDf>l8EYjMg_# z#idhAqWTmirdWdD^TiaE{;my0-wQGGNwb`p=jr5E$+}BA#?hzH_4lx$x~#YsQ&bjW zgWY3C+vh&E^gYmp=Ck+?TuZrmOJy9STl_pmVk1LDlt8lyz|LGhL zt=A^&u10IgzSv|5)?uf<`^Np#vYQ^Y;*dNL(P6U$BD#GZ zi0FAw)<2Z#&h0nVf)I^#XLOe42L#b}g0Q|2*2HP5D`1FLgdqwUO?3-bG@yx6wRDay z_CNT#xgn-kouKRCPGw(w-JDw=phQ29>AvH2MyW9>zLk*Mx>ZZzgt+%^r7a6i^ovQc zYh&9KGYkB;D@FdCom8XfU+fLGvres2sk>EAr5EPR-D*rF6G&m*>EkIiQneMD^J6Ri zX8FY3c{83wm@49k^m4dOr>gnT`{_&NCHy3zfJxYxmyXLa@8Jqj12!2M!PLp$up2r^XaO zjJEmv=>ij|+g0*DZLi&4j{;m!IaRfmS?&U6ue3d?QzIr0dZQ_O-FQ2auP&7?*0J$y zdjW`Dd8{78juUgWTHBKz^UnO}J!*{Kd$N1j|GkQyK|9gEPMiAC0Jl>7cx9wudah$y zeW~4@SUiG6<;v9Ivcv%7(DurF+KE{1GQaL1O}TnfJ6)!U*&=Cf-p0j5O1I_4Q4O-F zm^SiKt9x4G?CVnK{ZXWO%G<_%qRj0rEP|Vn^$RmgLkX#TF#0Zh%IOezz8jzdp?C7h zBjATZB9*1t=F@Zps3{kUTo4p#j;A24?kL!fQK~LvO7eFov+_G&O+vf~&I?SF^Nvml z#$DMr-7I~}ZXE8yQ0SEMQs*>8+yl16LX+}N0>|7*C4ZsK*(13i0L(0$z0^*;7&GsH zY3&rG%@y*pn?oJFQAn$tcUVrI$ngZo%;-(9q%)kCUa;JMI6Y*!|7OnTIq!g=++PUq zzgbVrqk=i3GfcV|CS8!E3pGhIa^aE~%1oW)&Gg9H!zaqY`PKpt6iM5z;I(&B9L5*GEU$j-mS6NIGfgdao@L`k~T&!)x;zrEhv|&X>RWwL8kB@Y4}t3N^1? zMul=I6WEE|4lG`hq$@Q^um9Q?$XiGr)x5S|5NDXo{w0_d7QFXdHH`T+$y>F)dZXxQ zRmb&KcA_iKReBgR`nB-1J;DvuX*tb2ygRCQyO*9zYiQs4_S|1n=A{P8662l0OEXNmy1^S> zmzpO4*5HE6>UjWIFCa^C8%KX_SofuwRZL#~wI;9m-u8UGI*YAcp8QT-VXO2%Hn!#_ zHEU5WKT0{uYIp7jTe;z>-J-9;DJ*Q2xn88>br1Q%yi%Ix2@i=1`HNRD1q*KIvutH7v42Tjab2O_@iV zQd?+qbz_mOeXnsq&V{u=&ep^_K+ZpQ*x3mOLSiPm&4*$vbl>a?5 zZL*5!WFO)0K$EyG)#U%Bfxy~unlZODFfMYM@k~o|#rG?3YxD0W?=)d@_8GIP3Cduq zPnev2wM8>{FG!k&msebMcpSI;5V%))hNNYcr z1H{$=B)v8N5ID|IGGlc`|(bTUb1a$Z+0-sF4Mim4A-7&0rhz-yAK}=3JsuRKq)=eMw?1k z(jzz)Re(jNj08oKkTj1;rXUD6Y`~H3?~*j!(LQqlJ8?bvt>H@ zNX#q`^{^d$JE$zvo;h1^ZhK>pWxD=2Yktux^v7jbj|VtDtyRpi47gt9N}WE=24v9G zak7&&ItUsR9mW>?Kn3$kq}MO}bvQfap(2Z5mSK-V9xW1^HrWwd>SZ9o#OaL3P^OLJU$8gOuc^D~5s+J&tck#{p3j!sT%=$d0pu62&0=LK`289B0)fkq{+{ zk@b}>bHpO&vM^mGmjzaad%(rUVrGguP2sXb$(iIY<3NqV%(;Ul(@rUSwo08cV3Q+< z1vW{D8UYcr8}p>>FXN&_fE>jl#R3))tIma1odgG177G<$TS!}Uy8*ox=!T$lA6kG7S&fXW7zX4+w zB}%-M^HNdb3mdwI8RhW~Vu%t-GA1PXQYxTG3O6P1lY5NuKAgpVruc-bfFy4)Lq~bg zH@?%pj&G=$ZPCCt26Pbj6dib*s(X5OF#;}*_G=>={D^l#Lpt-46=gpC1zCZkU<&hs z39`b1n<=BDHFG=kfiuJu6`mMg!6geFa8I!W|2yt!P)v@qQBi}F0r*t(DDyVXMa3yz zCA}a+%3+3}rR1Y=MB(J_xv>=tO*!V&emZoCeWkpLEhs2;gQmE4(mJLvH%|(RNu(!- zYr1lh3q7;Lgq|rGvWW>Z1mbTO?>C`>icD!lzvjw*jm%%bEisqaqE2*hMZ{GS+``Jw z@hY*8wks!lk7#qo$i$=CK08^Esz0>$&7t0JG~CkxR2mQ-`*570o>Q$uswPjfK-V(M z1Ey--a_!A2c2|yU^mOY&i(pO+UuKqTeaG(ga#QBWMwo1b)1mq0I`L?{DfjnYRN`7w z?vq}z3-{VtDtT0+oj4`BT-TpzZFY(|rpt+%sF^;wk(Bn{DR7b2ET;?pa&0zilg!~qv?WkNnTuo@=8qcf z{!=5%1vSe>zI{Mey})*4FR(TIxC`);m(Yc?j@g>JK)B4jZVApTdYiqP16_<_MnBI!&+v)%|eqDFiBBf zcBPmEsX;iEANGAVaoeA0i%`CTa1UGm1_tplh%XG=3*g3GV1)D(hg!7BA(n4W8=y_1lS|*N)o8)1()a`1 zxj^Ytwy0a8`QA8L)h}UM_Y%t9L6BlEfE3#`edMttuTpB4LxwCKshSr*^zcoGW&4g# zCX4H;X`s-Py*5*|GV|*smQ>4#^o-5`01G@=|* zKK(+?uP`XP8zLxEbHUND4^oQ}vSs{R$+OxbP?p){&qSpv%g7BXFCAfhZ{iWa0~Ic`*RKIV9}`L}IMtp)`7xV3ztg^VjK@R3Jim^K-Ka}S<)ey; zNGKD4V)c=$s&LPufICr3=x*Ib=&j!biWPh-_rwwL8)?9yB!}s(6WV+Utgt9dP)Ca0 zI$_3!=?S)UTCw;WK(Rnei@akS)KEdbnzIL<0Ti41am;ML&NBjvWj|qgiZ>T?2))&K zsURh$)bi9elk9`V;LRK$RRFF5C)VL-+YsUqt_N4sDxpE@^q4uMY7d}}?w+{Ltk6$b z$c_TQMYb?p%};smTVb(hfK`3*Pdt>|b$A(OHO~kiwJE7~nshZS&PrPT*V20M_wFfd>=OG% z@7S$s4Hlr`9fEp|>HcS`-XWA*_i9g~WSMN9_+N;zYoCzx%2n?WEsqZ$bHvy|9H=-x z?_VjN7XV|+AWqu~AVdWidy70%1;(b%irN1R7s{-lN1qIVu|1{2Q#N&E6Fp%bf*3o* zf0>F}rC`Qh_*a;*eST&DB+P>WGgk1guiUSnMn^cKZE#B+HTM4e)Li*#JDu67AWLhg zvCKpktZ6Hc9eS_eM-z}vg>5U;*e3tguBkb}#@>Fxw_;=K@6xbND?YST*slVOO%{0w zXsjs;qP7Ma8=_wY8B12kQ)m;1>naFWh1UkpeS9Iz*wn#Y&Hlk%p;c;_v76jj<+zGn zgc*B(fk`?4of+FB%veX~b;+UZI>cDVnts_)g+bfu=|2*zD!CEYM_(nW#XlZtHu(`+ zId1HvB0xscbKKa;{s39{Yv9=F`3xzw0g@GNtbMHzJohzjtYh2y#XVb6<{3*17TYcR zAvx@xx_RKKZw1G0b$)1)M6!c%SVnW@YbBB7EvyPRHlIm$*kcNjw>U@jVDvBJAve|> zJx{&aaq9jD{h)WBefQpH=ix2KHmlLc_Xa50u9oV0)tH^bXyjf>`6TSw=U+|92LT3(=S=8<0%6}7PRbe-H`&V z8{lMTHiS6Yh3$=tw@$`q{v@__j(ypFI-w$!33t_e~3w2)3pf+wA}K&tocOf2{c>oopFt zJJf)YO)#RKr-{*#zgn5et*i`B?m1Ow&thfW@`>idvq_A`*!3#K-g0lWnx9*w_4XyN zxJ(~%YQT~mYxOUW>BtT;h4Bo4+gV zNV4f2FE@H&ouvWuqa+~Nv4zY*YTD%dA?$onTzwuGSv3?390Jq!(_SF4f{!)P72F~} z%=Pu&N#|%5l%6K6SNv7( z<=>yq9g7KYqio&+N1mPH2v&S|Lk>1va_#X zce%A{o=jWwjaig(Q7%)#|nao@P&^2E6mA*<^0L;Tfx7ACFS(ZcUimV zfpU5ePP0Rqz+}_ExXXIv7H2nxB`d&LnsVHodEG>Qz`k9Fd80WmX#$f?AA6hiHg62>loQm{sxvl3P#r6ai=$kkuAaN3P_H5D6*j`F1{_%*j_eN-`m*Z<*$6?O^8%7B6#wd(OA>rZ1v^`)fN^xBuVQAUr*BCD(1at) zd6Esz=ieTbuFJ)YOE)I4)3O7}x*#AVS$2c{o2TwS6fBrNqyreCzU?YUl2v9(5iTCJ z-arO8*rPv)V*`FEIJT0QoK49b91Q;w^dnd|3w5w825(0U5IhF2|=Tn`6^x0m+t%84@$?^M$RcSM0(B zPa)SKjATvA{3_{AEDSHUT+E_?F*-PJCKfPpfL9~Ykh?asN$cNNC7HMSh0$oLlHfh2 zzk9zmuesA-?lSGr;#ZAUKj!YAe6KYxx(lo2!k@XYbeE8?$;Vmb99?gwohp3IVd$6I zd#O2714win*`pKst+P_tyarahM10$!2ch>)$cuq6c`k5k4um2bcr^!DJnx*kKuR7a z&x?`ed4cy9T+t|s2uxlW$S0x5a+0+OA&+f8NRQZ*&z3Ih&A+aydj~{h#$VWi3BB>+ z7gcg^DH9kLx*BPQ_QTZ~tqL-Ntv71UQ%$+kUSv+1&jf=7Ks=XhBOuk>&B9M{Tt|77 zGy^Q8(16K=5Fxv6syRtj?iUvdwZZ7)vcigc>jOa!4kBcm3JX;IiaI^Y3g!?k|S#R2oc(2cqDR|Asrrx9GJ-^ zp?nUo2RD&j=CFGW=Mz5}Uu2_uVGou|&Vi~FS$WeHaPUewUe!cfXK`5&je&tVFV12X z*KwXKs)9Ey=Sfpgk0nr#EQ{tLhewrSDx^oQ2L?{R@GGv1D+%c_xZ4FJM|6}#S8+EJ zFkN<}pOU-9ksQucXuXa&c*Y-Uh=b-qJJa1$^(|TLhKozQs6rmaG`M)tMGJ8%VaOH- zqQ#FLuoS(;ytw#ayqQ_OA`+@7Qx|UV@G>VE_zOM!Nhps<=F@I9xIuX=vPZ{Fl&y^T zxbvT!;D=-I{=}x(8uTZr4mdfj2F^>cDN76*IM0d{F{+qR9Hz!?+pAHiEKz9ife8|Y z(n}shQg+aBp*%v=l(ez98Ry|_;Uiorl?zhIWN(s(#ErsB*#Da;vWxL9Zmab!2`(sz zt4ob4-X*SH_N&e;(Iw}ih6_A_=~?QH7@~^<$Cd@2D$%7T@PxESDjO~dMi#+UCnuZ> zax#R-n)`1C;XJ;Q4?UcyjsBsByV^`Vye!ek!AynHtyw*dc_k7}aFJ**Dum{>>%}4_ z;}emlyeUNpOm|a_iwVxO zr{XVBQ!Bk8E?Ei*z8+M6Ok2WUn7mSr?u3@^iUgC2RAv%df+KMr2`%A~NFlTYM=tEF z(tQAo0G0je{l+=}LI12uYS`Ut`JQ>vCV!&B7=nc`v?BMe1rnEI(KaN{|_7 zt%O0Q;=)hh>1Zr=#?x!sJ7JVz85EZUCCfXm=jrQ!WH;wilz+2H|Alr7G+HR7d6j<8 ziwR7V$xV(@TJdWrrLgK{#|y!fR*E&4QZIfb#I;YYfHE_ge|Uo7+@HnjY2l#CG^g|z z)&WEFAW69f2nN;~T^OI`!#8Sosk|z@l>UV$C-MNT(%1Kh$gKalT$3f<-*+OJ%FFg9 z?zwF7tExzUt!Iao*Lssn#kH)GTs z5(T`L&ku{xO&b=hcl^2P&6lBptrV_ofPrg^uzhZE!(LHT%^aI(kC2@JFFrz6w zG%k?RLa_tfXoz>DEz7G5Nv)XaikNGwbjLO(7YW6Y5$fSAy%lchrGmr!zdZ%P!Tl2j zd}&8kk(+`ij`2E3*1N`# z(-7kRQ(>T?qi~!=A%Qy}0ot8@Z!sCimv)XoJZ^IuM>O$73W&$?r$Id(01a-+4n}o4 z9vvij2;gz^d66dqq~=wE<4qM+##m@IR)IX`}G zU=`Vpjx~}FP>M1-aBX)e-V5E)?zsSvp_wSS%@-v@KKicU!G?^n&DooF6UO0Zwh9Qt z!Yy+Cllk(<(elWj(pKfx3RhynNUm(=u3Y0#vZw)CQ{A;4Z(Buc_7sFQxL>`#ZO6g) z#qwgQ5bwwb+K}!j#%{;hj_&A_4}7TP2-9CDgxIV=BZcpHgOD~qn2S!BK7F$s?dgtS z$=)VM+w3IQge8mUL6)p$VKw6EJ`9vRG5rPG)Uag5m7dxL+eh`!wjO{yiiuy`Ixs!G zX9*HQb1Z+OiCIETvi8xfFqdVG=rLQ0fgSx(9Qdv+IUnKtZyZqYb{2!&xV_}<7n^e- z%7tr=$KwN%BMFm-5@$d>>Ya}hNxO^TFW!zvs@Y5Cd^1aSA2lU|j&xE7-k4b99J2~~ z6z2x?I8xS0)1Tn|h4koW2fX_l_DK?e=>yx4BIeh(ZtHH%iFeNnE_&G?;9lsw}r!P~3e!vTiFO>tg*9V*k&T@bx%bZ7v5jJ(Ac;2l8u_kb0SPdj@ zR@cqR`g!6Ey=IBO5`+q3;?DYRUkurEcxZWI6Q?%}PO}zSViP1;ViTtUnr?f%Fv!g4 zKSGjBpCYW&KOM_EFpG>LfFyQflawK_O&p9)-B{MaWY1bv1Cup}YT(KB>$;i58WfXQ z1JIP&q0Z>E%_Y2uS4*ssK;3~%i8W%zuYM31+#S4qq#Oh+S$*RX*ebL(s)+!?%)Up| zl4J$pP(QBD?ARHsH8y{K9HsRAgCJR&^YR8CeqX%ZdwJgwBn!P9{Ub1I_~RD-ir&4;Omoc;Jk!*nyF&krDLo*|3AbI zduF{>he&9n(G*yn>BXGCvwl`iyv}?xNET<8+iFoz;_P{hU3GT!aU5AOwS*vvGadE(8T`&VghWZZ0RQ;T>Z$E`%0?B-yNxWOZ>y7~u6+ zi^QkDKLfMJ^ud*Ckde@2Zm5K4&1$X6xDls^7s8M{0Fo^SrX6UwgfR)45s91RG=Vcp z*pJ`NK)}aiY*V(|lVpE5DP$JXa0)$IfV^hu_$sncvQ;?N=WL3{nOu*Y4;+16jI2F` zPagd#UbTi*ETJ9Es`eHG5nNJ2kqzs^Cyg%jambuSE<%xA8{!+JOdMzI!vVelA$Yqz zJ~$FNzOjA5tuFH5@E1%FhZl;kThtB;Os>$Q7zlQF*|<_BWtJbShM1>=}bhf9aeU`vlF7A*r0Y>jLR2-Lq zNzRWQi`lntL=G_~{n%`8%WS?9m{(d$oIbNY{lsk8^m!MN>PLCz)`Z-CXMO$CLX&j} zS@qWFEKLVaP^a6>w(|6oU4P1O;Jdt_?3pEhtFXtN$rcT^<=9l1t?Z zzAjD3$#AFU)STu4c2$sgFTvXgWQ10gpccaS4H zldMN{ZSR3s8doV3$s9&@qIgCCGL6c>Hf}EH*CNibzHwIxEVfb7kt>*Dxo2tBitBzV zm&$U9eVPM~EF;6>y9hJ4vAQXI##Ibrcp=7~UX>Mgr-GJ}T)8U{1xvQO>@q?!*X~Rr zuMS+HwTWcNaJciczfU}Dd zjv^a0S~$Sh*|d@HQWERp>w<@UO;WF7Wbbze__|!V)ExvA+37{edGB^cA?4l9*b|hn zi|BMv%XConeKkNHG4;9INP{VxnSrt2nC*=eUrdiA%G~F8rrkm@D)QOt!)>ZCBOCYRHs%88L}e;rD{Utnyb_%0<4*^EVQ^H)^fXvuW&a-tmhiyXV z%u22bNA|*j3$(AtJ1CEO=qJemD37*thXoi}yLN&ZXg9dpbP&5Hq%c7tg~I{P;zU~_ zOXN6bWlS!l*!gnc!Jz67FjJCMFsNn(S(OzjFsM3%i)58VmM?@NTPb8h2$gHLmua?d z6ExeUS`{YJ5QkpN3WREbm{~kt@Ly%Y4u*Y2-tV9)(Uft3z?hMEV1nXAsoMsvY$F+w zGXQy%d3xa!JG*==9cj`d0A-d-;=c|fD;5MJd&)W(*;|9VF}+}98EfZm!N@ukWixnL zTG;5@UWn}#KxB=_468_Yp}41MDRh}B;&`<^R5(;L#|Ir=d>Z4k2Fi^Ha0C&FZ7ikh zgbi~R-&5CV}Zb0!r^czX${RfsGN88B4(%hX`kR7}480C4SU zkx;ex(F4G>GAY`-LW>W2uXsz1_fE=%b|oeS7eeO^%ZC@a!sSpUhrwY=O|Rte-XQdd z;XuL=NrWL=k(i`T4H&Ydy?)WThq=+MA<#;mLAy3?V-#e--`N>B0Si_*cQvCR5@FD- z3SE-`Bq8Ryuqn`-x~1gkRcnn(iM!*>c_YPVaOsnv2ZV< zJ3G4ocH{+XyAQn6__9w`A_Q5_{-q|&Ff2)vLBfgnhW&GE{kwA_ji+>k#-&0d$W#fk zUi^949MAcYj4b{o2LM1x|oEM^T`A`#2)ECNf5(-bHo+- zej8i}gVH1yl-vbLIe0>D8J~r$W!4HnmT##zdUg@p5M&Dr9l3Xd8Z0-C9{JIb5fz7! zWxE+}c2Q=)oAGl%!)`p%S>3Tq+Z|TTIlAKs3PBU}muvR4i3re+A#U?F0csLt6eNSe z;4WQMfjQT7A3&RK!8FZc6{(pPFJgcj7Xoei+YoIER5M*e7nK0qA+ce!$CbMzE#Vj8 zcw)Bzp9v20*suIna=3IT|%bH7KY^hrp2tsqTykk#M>H{I(xyXd683rJY>p~VM zx#mKXToAt+;5$0d;AZ_bpg{{1>ni8-2o0S?lcIMrHd+VRNFU z7>+r~NGbm|a(f`j)vNnRMr<#R(31t>NCbkYdF{;t=L~tWTneKT#*e2KtKmJEz~N-m z(-#rkY0PBMu*T7(pDH1w8fsjfNT~TL2sJ1nq2`}*B!iJ05^Ht{E{bmxYNiB72$8xq zE=TM-!;4AXx^gfM2}hQ*HBA~pP1f`u(4Ku+LQJ@W$XeH;iB6J*(T>bM$|3z&!pdh9 zT$e!r=el0xF{u%l;2Spisx226n_$Q~6ei|U*90t6f)=mlD6-Htxsbj(#A-4Qz=h+( z#*s682$3a$=8Chsr`KLJVD^(-j`)r)E4lwQjI8%(%LvrEPPSg85g(ICQymZB2wx9J zBRL3s{p%Q6R0=9p0?*%TYt^TMT6MD2a5WHF1_;)rdy2Dv14P!fWZntuRU*8+;ut^w zhad!p#zitn6)&#ZQoBwi3&LUgRe3qp%S z$I4KobMt^5%c@?zy{>lf%qarECb-!W{EE@2#2+)jl3Z_+gy^J9|k(9#P5I{+g#etH59#b?u7Un zaM{r+AjeYoDyc?mz_I0OHChR6>w-}Lj&-*aWL!kQ(nULB4wV~032yApgWTBeJk1!d z)noVx7q4+ITwL1W;g%b&6;5cWjs;*XLQ66Dj> z`GP7gK0u8HwT}AhKx1j5*vO_*lKu-dHfXu9<4h3bZP;5W93Z>CNSN4QAMs`p<*>2l zh<#Mp7~~sCHGnv9tT}(LaGRO|D)vZ9Ix${a_xky7pvGbnT)jaPFvab~*Cz#-WM1EGEEA4I4n`J-CYOz6B+OK)vF>1q z3o|qw!w(=lBV&&glL2b1cY^CCb%xumm^=P2cI?&m&$pPkQr~-ekG&2*c`N9MJ2taEJGL=9UkN<+hFo8gd#4_8;Jz(PLONL>vgdqIx4}Q- zooYWjfU6K$G)`x zQcZ{F6nI(hiCCnflKbCjj@`(7Uv(b!eU=!2T6J{UVn~-Q2wk=)blFIiE?dqF(q&KC zf6>%~7aqFsfP>YL!VYGq`3rW*`fuN<7v0&jM|PJxTeAPWqj5o54O!sd9Az9~uY2?h z&1ulHll}gtKa9(>5Ob_wxc^CWy|QaIG#=#H;=%FsqR*5)p}L^g|*lB3-F)oV`l*- z-J)%DBNc#WZFZPl4?O#0z_VaumDziiolO+V0G4F|3F&+jd-l3(gfYsMZg8`97*twe z&vwYcej7ICU;7VWRqqX!*n$)l_AF!O0mhYs^x6TeZGfJ2(9r?*Y~58NdOh}R-Oo%b z1lamFqV{`@f&oP?+}1&eE8Nobw5axSkq~JsCx%4njyWo7q5p_)B+quii)}&B*TJ*A zdq716@hYz%yuB`dug9H*eEH@j>nj{$XTi3DowcubqOj0b1MIADTm?HT*wz~!)#fGh zE!f%3FAU_8>owTfPO!6Mh2Se7*YjFJTky6acUJ4``@}k&3G)w~*C)^3^-bj2lt6gN zFhS2wYYhcE^lULySu*cBh_>`J@r!Rj&$gdkRk;Q|+XZ^oW!_m)eMJ+%M6pFco-Kuf zQC29ygXG!K7V>QRZ1T^6XHDHZcE4`~&(>W-{(U2Nwj2Ut;e@8kk88c!EvEbi@a$FJ z3Z4ZUD&X1s9Yq<$D5B~>R0nuiA%6m%)m_aj(o900{ejSMYss^Acs=_ggrL!42pR=F z+X>WmtPe_5*t36eRNH_(Yfc*(fJVppAW#`v6OgNvK>@i!XB~vk+EIuuhoWoYvx0~n z!(7lo`YgX4eRgjXfLw=(AlS2dpH@*E`0Vc@{|kIpu(qv$Uj@4Q@(}nL0$s)QQU(Ky zKwwReMew;pW!WllR5>Bo)slmwej9vND6uXNzs8<*z+9-d!z2$UFf-xqCeWy248g{V zVX57dr73!6Y3j|T-n`vA+p9NSjtt{Wh{`v6fK0_}*@ z|3sh_lxrSPD+pS%(^!!lAZP=$EtuGG?CZ<2G{RqWA-YFIry$i9l!)g3^dX{kp?`ot+nqgJP_Em8at#TzOt#fJvDx|r z+P|6*Uy(Ewis zL94$rRz$;~y+HqeVbDT^g+c4R@3CkBUh5!&7Dx!dS7FfV#p6Wuw?k;tXNx&@g;5NI zR%ov5ALJ;s59bCcwB~#^Sr;7dFi@{xX|>IdpIRuupnczb8-unxdyz=q9Ybdr6b3?D z00kRBXvfRXfI&N^K9r31!k{%5j~DlV6noZ?kQDnh2CZ4WxtJMKIR>qubAkB^g7)!= zg9uuE&!mv_D>(>))|@&n6n%N)w?k-`t_Pu|`xHWG+l1o_f|g~|Teq79x^8DZu9&Gp zXq$2uj*~Ud0flx}E|Z&n@Rx0BZsIa*+m==@+Me8{f?QGSPOnkZ?iZ=gdukRO% zOWv5iZ?;%`b7OSe=J_{F-<#>;n@K%NvonMmqtm4~+t^=21Dst1t%$bBoAGYH{3i1} z7i_)tiel^hv1g|TMj!Li^orEK6KxhId`afhBY(Um9Lxrp^jjiUm6>eD`(hW;@xNnu#Ma~ z)w`wAlFcdaJL3}nmz-ni(1WyhO&FMd@s{G(l0GhWAc6g zuw9~hd@#6eg_m>c)z-GmE&0amW1q!4rl()@z0sN8pP4kUM?0!xa<;rc?%i9Z_^y*{ zQ(kvo{wc^mMfs;B|CHsQN}IBLES8^H{z-qV*jZd234X~V!7q6v_~jm{$RqB!;t%|i zRDyGoO7Kfk;g>au@21-n3;H?kmPh`(V(#JWKqA?JM6v^kWCs$-hKcYMY~Trh;0b@= z34h=Tf8dGSz!SOZ6O(d0VXuzb;d{rAn_SK=$o+HrxP1QC(_ zYVKl>8})(mN~)c`w`9ZDro!W^$0tTq#ualHs`lb!2KatEBk^Ege48=JOH`z}$2=TY z2Q=EevQtM+EkYc|H(oRLavW`VlOIzoPBN$ET|ah2B-866X`nUN>F&msCr6 zl+`b>E~T3pWTlV5L1wn4m-(iN9x!}#G4l_VJEE9BN!e37fTYJ;R7>fL5p~ZieXNSS z!e*5(3^ml2>A!z$N0t1iH`m7wRZqN^_}2$xO1aOKeJj~sd|O3|9f=XNSqod*`8|j1 zzgn4lRBU(~5Wb&4sk(d(vygu)%iH&;OR%L$sr(jGWlJ68Kuh|NG1{yeI-+#9;G^#r z;MUPC($%?JC)D2}UQf%kV*g*jag1E)ZPOb4r7}B@W}923OrZ&Ie(u@JuibPBl%LNOplOjdDr&R^U#%s z3*nbneIA&?VcYO<`FRx|RVc3**>UJKYsZyK!NcY1!@{gX8l&Vq4N-(~kl^X2%JYg2 z=<_Nj7{_e+&~oKIHLjAmPbEq8>JIQa&#Q>}Zd$q2+j7qXvH<=Fkk|>ZEGv7Sw~*wE z`5$yt4z2k2flLn4&sWoTXj+snl6--uOI79n^xmvRd0r{z=d#5ij7=AKx)?lNsy^)y zygZGr?Pb7|%Mx@m<=vZjZN@T4d~~rQPnUU`7no8iZ5ubcB-tnZsMwf-|DKB94qjK= zf|{|Y;4}2Mds1j}o}N%Bc9^R}=l$(xEh-itk0s41 zo_@P0{;^=4Kb2>+UBUEE&pZ(iWN5QOk0`E?+1($jimRg)n) zb%qYCf?}cw_wq3VMdm5fpP06&yh5koseH_&8l*7CyLcy7xzjUy^;!2iYz39n?@Wnb zu6SH-ikQt3p-o7?nn@pH+PkPyL`W%Dxyu9FjV8HJljhRJOOuy}85F9*y)0x1Y;p#w zROEG#!Cz!le36m=7#>{Z-;x!hD`JzoSfrSfTwcMr*`b4qbW(s^<^)2RAMmk?(66BOc4ksAufI#>!tv70mec`}P=mWLt3p9Vqo0ZLGk4qNg_BZe|YgB4mYtGP7bXkpU-oQ5gYMs!3 zyUuZu)+q0FNj73GY3myOHMDQgL(M$gtl_&j$7XT( zKH5CkqVs;@DkU$%T~RxtWl$FgT@wYrC|Y~((i%Zb&M%hUW!^=NX^kPFuUhP?BWtX} zy(;-Yb7%I~&CS^do7sR&-soK~y{tK*cDUb)j65$?2(!oB)ZCZN6|M>$W;IaITbl<} z0c|~C7BoRvB9|-qA_WWCmvG%R(y&u0mWXyV*C@iRLMO&7tF=9+XYM$`l8b5zB%AJfb}% zhRxR)R$LUD*d4>yaW0D_mHZx=vvadNiHz zeaWwX++AN9W@b&$$B#@rAYkc=qI#{Tewx+H#vc4=FAig1qVSpWJa8(PHgsn`gQ8r# zd?p)!#NQuoPmDBX_v??r2KjD;&4cyPk@|#gE**1M>aNgGA1P}Y#VAD$+o?6r%9bje z=_zDs_?4-syvD-RiU>P+q&+8MUm6+x`$&5`^&X@A?W%>TQHes2Jv!2qFZRSMTHmE@ zNfon&!haND&G?Zih2qRnwitm_-;sMjwNxgJnws^GHRiGwJvmbM(+)f1xb%K}>MZ9D zWcG0tAUP{r&YlZdwwO5=xNrYVJ+_$r5XAfM;U1r++e=oP4I*AykdB9OEk7IS%%BI2 zITLtRQ9;0DQ;17P=^MTDWutbUbl9H1l#f_+zhZo^Wi79FW0&6h#Q2NKyVtF;H=Pl0 zLo=yZZS-{KCK|z15+^2_j^ad<`XXZCYLj&nO>|7jpJRtpX!>2HXZgzUVdJE7 z7M*@V{raqqnbU_c29wxPD616GCEBu~Tfl@ZEuj_CE$vK9vqVQB3ofBP?|)T|tz`L? zFSB8GgsyBQHO`JR9x6bTt&m52BsX!53dvg{;BMH(LkxpFYRV;oR{l8FQF*LRM*ALM zKOaE8odC1SI}%k+mUzQG=DcZ^v4us}Ep5r4Ol=89=jBP`J|d*B$V39kKI=_SC# z^Qe7^!WfCo;IxT5NkkGRn=ww6VQ4YS&lHwuIwzTf(lGY=lzj(_ zEYXq3g(~^|A@&^ljQ`ah%y3d>iB2xE=Bo@p^ljTjd6i4sdi~6Kdl{9*AcEM<`hh{V zYeS0^St1Q*u?NW$%jI2<-Eq>P{V`m+3LV3{hcB_B00Rix^lutvv-Be{ga7A* z`K2#r;KXKaQeybAcBtsUqEFdC2Ke;;iWxsL6V$&)!%%m1QRwbuQ z_x}82w(6PaS9Xv+RtC16$qmCN+j75FX4Jms@NDuyr7lcktB&G6vRTGRw)|1alJY)L zU6~KGNi{{zgdq0{U5i&#BHHK8Kh=AMlFrKE>lUg0Ef@kb(Dh%!? zhuBk3HLvmEv0Se6wqj98{sP&w#>^ZtWykE8eGhy>sf=Ym)5(Rx>P%$OLgLyJeOjFs z+kmFT5HrUlGsfIMgnC#KKUd0k&N` zWMALUP0sf}sLcLD^i6F3YxNnYrC$@eVK5X=jH>+SW>J}0{q^eTY;&H0X;LWx)qEi8#q(k9!N~04scTE3#jZR0Bj~61|x%Nhb zYLLCdoExzA1g9kZ4HVk3#WdFi3PnAn6tJogn-Q{6b7Z@7n~HPxkMd$G=U^esYL7YB zOKwM+F|(|W@fTjr{Hl&SCKs|OB!z*CUOtx*W9QlvNt2F1+0QwL5_>1ok*3_(meAl7 zc9(C7z|qM!938#7l4kSzLA|;QUCG4gVlEwN&81t}w4`cryxci}xuh8sJ4q)3FGmnw zj+v@nj?6J23v_x!GOnNaz_E%kxOg`UGB9}OfJ&i@$JM+B8+gII26@9`t%qZ*?xM)L zY9V+j?6;T9o2XIj%V+F>`3-Bni@M> zZLNC7E}neU$ir~SErglB!?{D|U!(MkBh1{p;!m>a+W#54eegn-vb`#S+x)Oz?CaUM zy0}sD{B`i+%)zq^a&D?U?^kRI>2C^px4=KSP1%w8NDI1mQyud*Y*x$$>RWTR*Oa@y zLEn%DrFC)}WtE|O5XsH?{q8YOcwM>2=R=|$qec`?JEtw%cFy$dg2L17<4XCb+Y>Ts zf8o{(qEn*H`D1@+u2!A-E2$&49ls!P5=Px?%iSZ5vC;X07dM}1`-gVD*WEjzL7i8~6nvOnrJumEeZf=wIXMwu zB%6ohK8qNpdSWCjUVbIbC-r&}?Itd|k<~?RfF!)OZHjAbTd^0LA2hS0WO^^9)k|?w z;8(&v)nxWkUB$haht?ZjT*0yyxtKI9DZLj{STkJBhgZ!R&64V;I$_V1N9#V*W}Bu^ zu9?s%7eCX9@s$$SKG){5@R|(SOiwe2j8mc zY%1E$eF6xEGyINiDsJ3p+M}R?>*mYQ>yA-9{p`ei3fv{CQ#u2mC~p&`ldsVnFptu* zQ;C=An)BPfX10p)P;yJJsd!<6{>J2Neuj+vzOGmjllz@+Dz_?|FqwEtqJpS6{rV(G%g37EOSjYaVZ*&^-iWPO~S0ZHjo=K4lcQ3T46V&FYwmEQsC3vVj^Of9Wwc)SbPM$^tALhMp%19bV||Z?*T*D2o7u5HD(0I=2uOaqM`8* z`k{E_0Ii;irf0b}&M%`7jMML$1Z`4#BHzr^kla;?^xxS~q+C1^>qL2L`*PeqCpW6? z&|j1+7f*06gT@B1-3j;~bl7Qe`(AW(p#ltcv%FYmqFmyoxoY$d(Fpe~=Dv37s~8_y z%2uhV+^5Rm&Yc;%^6wdQa+5iO&R*fmq&fET$Z;x)fO{WSo8)uF(i6msNV?O^5N7oU z4XuS_dRj6un-7~brfGF!c|KVE;-{wna{Y-iAKJFXyIro&Ry5M5_2CLi*V~r-eitS7 zzuYW8)qHfW`eM3ym9`Ls5;9g%0Kh$uHN;Ro7s|$=}T$2 zO}x@OD4~nnB@Rg#|4NCaha~6#vdyPTznqBcMOVi5rfBaiUsJfaH|74aQBuhER>`*F z-ip;MT$7!lxZlyk1wn;T-p?9W##````U>_~cKUA?{V2CrYGr?Kjw z*t;p^I+gxpb;NEgXK_acdBL1gmZmehpGyCoOF#KVWLGJ6bZ}sv+QXxETEw24O24x@ z;!RoY?JAFTmH!wYM_&-IPl~VoE%rF2Z#|=7fw85gnZ;suY04hOM;et{XuMObLfwVN zewGdjVh|xY@uwRoiBtQM!?o>++U98bid4Nl+-WvV$oryMxi=BDTcy%h-@pRP8_-P3 z(92+@H)b3=Vke~1S8!$O>QHB4-pcFzD?*gByR3%sOiXl7sm;2RyAyBn+NAR-umv-{ zpgS0d-=v^-MAZCNVwO%C5q zG2j{R@f5T9Xoh=hBi&`5AzE?48hcC|YZ$EYym#4iM+!oj^m|KE5URy4vJ+HqQ^yya z;E@w}q{1WY;7WOlUz)H_x9QeY@|2lu*z-}{h|15C_F6v3vVBm>Zri4Daef@!hKqL= zC>+vpk-|~FUD1*6EZt4hGGukwj;k|Kt>-&_E#J%)aKdr~>l7#=G z=`5=h*M6L$l;C!U#B68GQcT`SHrR0y>xxN(JOf;y_AyHRDE;d4i@E0 z9W|?v30Nq zeph+f;lu77Lr`$`mA_e8{e^5}& zlu=#9+u}{7&Rz-bo5q#*?v1p^w@9X@mwbO8mAW0<9^WbT0&{9yLx&&9_WV8|HZuPY zb?+S}MU}k)-%!9K-KErVsKYoxg~^^LC*N=F^>VOr2``QYK$WP!#EhLcF`wmm?{N23}~_ zZ}4W$i9z`umj~*`KO!aClNWe1#{gDO(&d+twDW3G)1E#XuW9C-kNNRxQg%`juYCX< zNIPA{pJ|5@4@$~x?|1r9!-iUgc2@FgvMk>TU5Y?MnOqkH7sC0p(=B*;zFVND{P-Zw zoy2-*^u4K52~kQ-^&wR>)q8|qgJ@R%3UhIVtO%g2xE4(g$(bXd#nz}T+Wdrw2DC3D zU@uI8Dog=?iP2ii#7>=3$gRC(HyFX<#L?u^Qn}qrgY#sewG5RijlDeqiwxaAz$!xx zf2hQpKIz;`0cJZn2h(R~(0DmgJq8aiN9xTwZ=JE~qA~ae26TK7;hziPO&@eqo6V~; z{ni=0I)r1L8J^2o6=J{r^*Vo@iF5}lb7R_JY5l8Y=W`9p*!x>r^112lWAdm9Cg<(! zPn`X;iQR7kPmUD0mo#IjT)N%3Q3hIa<_CjG$Y0*fXKoLi%Gm0#@}F!UK2%=3J)QeB zjxlXP1Pui%t03%Jkcy4(21$8ki#Bs8JP9*Ihj>CtZTb*x6%jG*A{!>cDu~MXB|nPD z9?HirMMMlkXj>b-e7ucE4-SaSO0}6RHh!qM3fyd6h0m`dhuW78At%KRo?Kot7?>xj zu8j|b@g#E!0zthcwRr>OWt53u#taDVxV(nHXr^u9-_R8zjSDFf+mp+O$jmq5_Ir>C zsynm@c_=UZ?@?Fo-z>#yObf_cG*yK@17#30fGd2!O$7Lb?#8`6W@~2EE#d z58;Tv`<<=?1^YWaD#z-4%a5Ul5K_*^zwdP5pAH>pKm5Zx{wU<^=(}k-V+an>yutU$ z=W<;LAX^%SoT+<4_P<~s*dr{r3^X?C@v8h24UppEL*2}lf!f}>F+Qwmr8Nkshbb0< zYi!rWd)%m~Z(^E=YJ3kP)J5ZOoNZ~ERwn(Vhl83n(eOxQ9F3&CN{UGvf||T7>It9- zQ>Zb157%chbfSj#h5HJ*vf5ay#c>7ys48tO*|TXybyrqvheFv)2%<&ms%f}DIdQU~ zsT3nphi(;shtwK8xcP$Jn^J(+Xn(viYZ1QI!g%R3tJxi$#y3?X()rzRH1xnhF@!mL z5a%~ED8fD103{N6#H5}Z=50bK`82YYV#b45!yb?AR$XPT)gaYYu;HU3cX0A&e^*LT z%gtPoRD5PyccqA2?h4QyUg{xjpn=Z_@;;yGOG4Bo4>8rKCjo{79RDjE_O%qNq-|<@ zmU!**6!98dW+y?b65OtSH9?$)oJ#!oD5pnXg+gG64xM%MKWBKACZVhmXsIDW-sw223-CM*acc^h)0mM;kT3e&-6|LSgkOkUlmHrzaIMp@e7VR~ znGi0V>)c1V_y#xv2#HZ{0V$XsI9j-zoYJ(-V#WhWkutwOU0%zKF(?=+yN6W!G9r}3 zCRFa0&@!yl-5xYrIMW_HRXZKp2LZo5X67+f_C{#Tn#IV1i55~rb7%=dc$|jb;8&&l zlxin>bEl9afjBA`J!roym#0Ah9Bv#y-0(-05B*X3vVMmwt0F)UHH+!bCt=>N2-F%Y zle|4^Vj-uk8Pa1(aDL=(&HNwIUok5Jg0GdS!si-5Zmfcvv9pHCY1>v1S-?oAlzf2I9mQk#QOYzxDek&T1bptdnQ3|IM% z^{1q^8+MUQc0WZqZ~E5u1Yc1mutzw z`f~Y3QeUeX8z`yZH74!e3#2+Xtb>SeB@vg_I49ZGp3UCtf$b@k*xQ<*;9ooWTNK}! zCc(X!1luvH1)2r6kF|JtTPbEiN3LLBj-V>J%RR8IKN|6Fo6O9>kbFC79Hqs<9GO2R z;KZbKsF`^;sm-TDb}R&c*BR4BD@=si5|Vt*yW5i5v6T95kWwwnOWmSUt=wlxZ3(45 z64WNa$9-lNlQ^|+S=ZwHsMU5PGrmsBfhOb#{hOq5y%tB2S$AtfgQD@b4E1XeBEC;* zD>Sy89^o|9E58y494|Gre@uaDMioB;s+#}Y8Bm|4?R!vf7WL}k z6y{num4T5moGL(1ajzCj=0L=@CVo(`mxuy;no%5zHke0FB*KO^X<}`S)=e}lY|@5g zGMiv+U^v;=QWL)i4tt_0V~ti?mH&arS5}!bQh_y^u}M+KMgP$?zl!BumUZvZKNWVKv%c{hk=OYo0TU8pi zgjB0TG%J8+_9m^?_zWQYSS6-!i}6@xRBI@>2yC(vzTXQT;XKu(T#XuBkk0l<7uiJ7 ziMkm-GaVb5szOOH>sOGTpU;lVktsgr^U%nYcrXriesps?`~{6fh51N=@v9HhPboE? zZALSrXX~R<@{PlcU&~N+_Rd7qWF^5ezHDk>Eub_ZCz_^hb)@9YQ{lLLHayc^bS6^3 zu~_d(thABsl7vW_7oDb$P070{+nFIBt6-cu8Exc~x6GaW;BXo_8bg7GoL-Dpb0kF8bf$1sZO+7AO zJ4qj#1S^$Rxm}ozy8LYvPYg$n{mBT1tjhJIw8M2?d(tip*%Q{~s-^mzlvaSdxH6$sHmyvFA*SG77mXaPB7XN9&br2(Es9Hr87-V}kOo6SCC=_jVxRY{{Y)!uHKn-v77 zkr{$Ms@xGk9_uWnwLf!nE9z?Kr-saTlJU=-z?R=q#%+SmUt*5hx4dslNOghEz)r`vq(6MiTZW~JXSIou0Q|*X38E^q02Ll zL512H9K*#EBFKAVVo=h13%sOG#Fg&@>ORauDyy$F+EVR^ez6>oYXbmc$vhx;zc7Eb zxNd?;X66|+Ld-O>|+?UeuhIR=P*BbY5oL;aL#p1&d8j?t6 zVC?;NJ{i>Yb31C`bVSj`MxRyt@m^l+FAJ0+aU@hF$)|Rr1Vp&*9rz;t5!K{}zn~)o zy4AS@l4u5>PuUSk2Th$qTpN}p)KgO za35nHWZt$EZ@0lLG-(a9Dyof`(3&r-)F9n@Qx@MOttKA5G0b5b^Vkev>#>=IFL9LA z=d#GSlz22ImZwG{>f-X0d^3neExJ6_QYb7>VaP`%7&&M@pvTyj(DdmuI`Cw}UstNTWP~)qQsnjWOFuZ=JzaRi6p;15!c>N@DkWP#*zoKkQknIu5 zhN%V(1pW=fMSO>si+b_{peatUnq1fPc>&? zefKpBI3NnQ+F-^vb;XQ|?-d)KrW*jzk#^n}meP`3V}aQYR|%tR*T=#i!S@J1jFf^( zksto#Lxp`bRyQS}fxP0gp8}`{7>h&f2PF0Jy7Ds%590XpO9(gcasBsisximX4wzYA z{uQ_e_^O^n-CRrtTCz%nCiH12iQv@@qrK7x<#dj~m5>Q-Nw`x(pxf~H)GD<~IT?U! zQ#K3Abu^3jr}&g3Y<)I35&=Pht+_sI%`0rp0_$2#5;5{cXl2;iQ8(7Wb<>$G0UujE zJm_?A2^XuY?XLs`p*FaIpuz#TibHuwiLS=iaD=~RA7VO60=(*L{xU3wyMa(b(bQGq z8B!(OC+-3iopAV$DxjB9vmQooLP=j{C2{sc10N8CfP`AtuSnQeM8nv5fUFWW9FGyA znd4ei9m!>&nXDNFOsWFe&<>N()j@Jh1Gs`_tln3^;0v6$YBim4^1_!h)upWp>wAwVIr;KG%zeOz3r-WFOi zS43BpCKoK}zakOZ5w>cRmY^%NB7vX^T!s9Az?J4D$`$8)j3=%gR8a$YmZ+icxsW&w zNo%)LMqfstBys*6;xr^J{DqQg`pM7;_)&$XVvd4KXpZuB2l(j2YplrzuT|%PueOh` z9gCTS|1EDL;PYB&%wo}cFwt%J_}KDP73i&aEj%uzpE8yKHgypsZpOVfC~<#YC~q8# z?p3>En&fq*d~m0JU8!;XAYJd+rx#-*)wy1Xo!J3kA?(zC+7sUag!wUy4gV6b%7^8P z5+1Mz{vZ3p-1-ij9Uy`B=()Z?t6;7Gm?MZ4iwdBN{4M1I#EKcMsD@C^wXW9TK&f2% z7<*oakFi?ykzW14*a!)<{V-PWV>^J7eC*-zgP1s}jf%dOiU!VV{}_x|JHP~jddx-C z55<#MJD4)v*ijT{DS;RrY5Z5z=RU-~6(!{Xvf6!B#jcP42=4050pJBNW*u>jFROkoOXSWPj<~r*MR}? z;fDSqt&lxo;!B9M;+8-WH;5%q)6;p9R0qbu&LouKLCg#i-$A5(w-kI=+(xOS@tl$h z{#R$s@F#&wSX&g!w0SeAGQ!$CNf_gGe#c={5UpV(&90k)C!8P!QUy>YiL-gahvyY= z$P>o+ZNVIn`#1zC*Lo?{mX`uU2%#+j6;j#rGcf^1cwpONOs$HgNEy?a5-)2$YHZd- z64Z)JtwP{Ck9s7;x&YdAp3lVzTM{nF_NPQxCa2Moq9oXY!i=~yDt&At8TQq<*Kvql z(9Q0HyqKo)86~CrfS3l~AQp~FNxMMVkvQA#?;47*r^K=2eUyz4b3MpFAWQ;QTAENQ zp1hJgFePL?&#w^f$sxkJw!cP_K;{6N@sXe6c-Wj)QnN3S;pW!zl$nO8RKWg>YV2p=jeZ&`x;$|JO*!-NCesmv>c#St8jUVKjmzEJeSh+}lIVe%US zAcd>*ev6VCYOE0|p{P#410)ZUUupU9lKkD0ON)|rAGWK@Q{e*QLZTuPUNJD(cPQWS zh}xL()+D2Ewl;Z0Va1MnA$MrZ1bGL}DIkOL4 z<#Q66Xcy>Ow61^}*Z_Ipn(tE;5P$KrXA-vJbH!iLaVcI95MKH3qamQk3-AKPqPX&8 zVa;o|GNTe@*1S&by3%x(koC)bkd+)pLwao~WVa<^CW{R(OId55);w%=3t12bSp>G% zvqN$e+?*?Mj+Dy~4sBmBB`@bHA3um0S4n*sB>=Vh=@fv}&?SP9erdObpe-eB17*t* zwn8XS*ec4b$BW=vR@f_ssX>kO&{ab0?v-GnY=$DB0DQ-#eo!3Qr~yND9p0xs*d}#^ z5>BsH!Ko^}?oh601e~n=IT71AycmVYul;2|t7l=ujn z%l08`Q;xX4zL}R4Eu4S{+&utB42|+H!@Y7W`@61V5RWJ$gw5L!V_nN6F_zAWLX6dp z7==Up2v85Md{Zy2^5FtrzlkFQr}=VbuapSJtE8!MxDK@xP#Mm)`!i)FF=e4It&c5% zusHghMtTT^TObl4Ecn&}#Dd(uu95bUz}WxPHR8+~Ql2lS6mJgij znDNrVMKOa+KAyHfoPvY>1RbSS9&|wAh}Nv3*0hDRNpMDvZ7hk4O57ywfHo3VEl{#3 zEPag~t93V_A|>HEPOp~L+r0bYnM_(+C==jA4OD>OgUX>1p)U)Nprsu5w!f-*>PD3W zc??zT^A`32&?NBlNvMODa|Ks?>wEN6)b5x{h|c>6Vxcpc5xG2etJwF(Osbpd>VE1DU&BIDsLj()4g zq)mXQtbD`Yy<-=k1|F!&BX6i?7S{y7-;{F7>qrq0g!`>e1c9_uEwhF^LD&xXgQH1> zxt%77%(~zGv{^;uFaMLbHpA@;*WuK^AK9v3@>>IDgWb4a%K0z&q*f~wsUm?SBP_`8 z-oDfH_D^}WPGM0GM`wzO(|lfwVx5{g?caDUHdD0jON48zCtkyc%Df1j!C=~o^7kr$ zx?%#IsV0>HQ4LN!pfcd|d~p^&xKmU5$+LxCdG?B3WxLlq;EtTsv#A##+d-0neGw=} z`T!Dolh*H_M{lIc25DAKcn)$V7@5Derk`R#B(3+KE#|Wz&&r3Ng$PLuZ)SkGa*0lQ zLKMUw@6c}o0zi13XyJdDCEt_QARvGHxZY2qMeJT*QkBCV>n(XoT1!}WU4fz%nxh5; z^LfoHpJ}B0!IKUmpq(6RHU(Nswx9T*0XHO)=EjaJ-GWYqT zX%ZOP{~^;3Lk#0yH6uh?{@DWJ^ePAt)C-btzrGVK^OXm3(UZRP_8-cF7a#XHHJu}Y zmXMD`G(?&PKmcw%p#!=DiXP!98I|q;#JK(ukNs)mMxi57+w%aFB1&O6J@upc5E=rk zEvg?q*)8o7()tpbINd|qe6|m1&)=8}lU7<^d%U`OKc|H5LNQUeo4t+s#;+T6g!k z%{S+SZtf8`j3I8jVhlJ8{$~IeWYF=JCX!+M?E$brc`X6LLTQLqiMY#q@KypPxY`-; z9gVk*ByHk#-sZr2nslAVC2Cp1!KgGQaacQ!@<_%IjpxI>|3tuDTAigkv60+e-|nU3{%qt8wYI`0TQ4K~6PM0f$VSugoc!sO}}c zZdSw<(6%VeY{KLtSAulCoQ9Q0aoRUpk<(~5Fq?J*{2!yEn-IbU?1t3|+X2$eZY1%R zbuN#rNQrtO;CpCA3O>(Qq`)Pk0klVV>P`0=Hw*&MmQRr@lyde=srKa`k#;t|76(j8 zYDJcbmYuU!q~u=!PWBwqr&0g^HrMHJYQ|_QGeBJ0WI)MS9Y<~eX-Hsd}S-C z3?NHDdCY%Dx&`C13ou^Gsj#Me=2BrSMZWW{gaA+TjkE^8Q<@U|DmW%}gu3gjC$&Mb zjk$cl7sZH3X#$XHHk(7r z;fOs&DQ}au6zpcu!>YprNP@yZB|W*nmxQn%1h7gjL$Ww)Z{#9*R{W_maA2Pyhay!Y z9UyzaMx6~9AMLYAMTP4v-N6!n(fB0DX9&=E}K>Vi)*FbAO*AaqG`JnD@QBEveMEH<0AE3A zytqUnskc&jxJvS|*%P3ZWJZh!qG#Z>Zv}vs?C4QhkGOO8zZr6xEE_y$Rf*@?eV+3z zIecJy^eKZ6)gXEI84Pjb8dDrZgVNMdR5QF`hh+NQ-DoD_Ab6}sOOqP+qK5Xfb-h$m z<}Z()gu6@5@i8xtm5IqO5+p>S>tfhB#A>8Ka1Znp2&6WL+YRsAYDC0+<0KDe8`ev9 z#|>dGfv6|e>Zyw_{gcc^I4>SZsA<&By>NHV#yIVAVS=cry z8_MvRVs)!OQNcvGnGRtdoc46U-+TgO-!CIh+j9@%G*785?mj*=E;WQG#vg4B;qNUS z(t}tBtd@30Cpe$qsb61e+&D%8a2u?EQxj|Ef*f))@Fov<)jqtX zHA|KNi}vKo^aXSkEnU5t2wkfV^#s}e8ipsKmwn}s-fV=g(G5NbyVn$jDT3E0mEr(U zsvWe!Z`^-_S9N@WP6jxjv)90>0L0HVPa~^DZPE!CT^9meZ=s@^3VDF*GDQ7cF$!`n zt$0P^>#>z$s}>rN zJF9u9Xs`sdlEIQs9aOR+)tJqbw!pCoTAf{>Rn7{dxn%W%1=Z(x#egt-0W`Jq2eoD4 zwGq&&iN--7DoL(Lko7$tn)NXt4i}j7Xqxw(Ng!lZk{Gf3kPtpsx>y$|4qdEKwGo2Y zZ%PPZfUC6|^@R0y$VY5q@<|eHBV@f}G(kjBMk7VR!4;GQWYsr<=K~vkVMdw0lrXj; z#U7XnejgE6z&aGG;AUtTU7QL9uojiskae5v3}`p4itkb4b30z{83MQ0ySMh>WM{8L z(Wj90F~apQ0vblN1xWUNOm#okPsNz?0FYnEktAAu1%mMn3}5#WXcFiWvaZ-r1PRPj z|0oO!m2djUis8w5Ady#wuL2e$d<#PZ=6?~C$ndqz@Jl5ER#B-WqIjExKKS^4JqQN% zf&5`Tq$Y7;f{XwlSz;PU);^+O608=0S5a|+q{XP8{pQvlrp4264Af^T4BgsO<}Rov zgqT%LxS9+RuJ&3BVfgY%RwypuKnPk^3P4DxJiXOONwB!2-RMB$%AL9$}X;EtUSD%4>~$(OYl))_{U~*}D)6 zX^@DVxA~3nRw6R!f@W~VUqseI(e4Fg#qno;OOS-uBClawn;hb`RdJs0JB-24RrbQK zQiQC%%50KeLm_?irfL$xaK*y|)||5<)t<9QC(5!5I)h_20a>x1nj#=aKmVL@cSdq$p>3;+@K}bD8tOZzjrwfLv zLksJGpV`#L-og$1-aDJ|&n9)oKP}2f z$OxA!KZj6O0NPm!!c;uRnO3$hUnrC8#6z$q18)IO2POkh6{zTMG{ym-?fq$u9dIzt zNfOCOPgX!%05c^1pzwIp=bAYu@fN*1Vv`@0o>Mkz1hr{wk1jF2GF-=c|MYM4> z8`CBUv2bbSp&KD0|d}pfM}#1?uXC{s(ASX zG6(=UC=2XgD^f0hg#5pQqjSzIuqh!XHmfkR@e~ zb}TrY$b|IvkW01%Wvwi_mlSQKo>iN+oBtfSQsL5gL3p)bX1<=M)9dV*?4NwFpEWgdvC z{l7)RuiVlBPhup-PW;IeV@Y{Qb|+8R)n@Ggv(YgG*p{vaBL7!if_4MRk_o#7LEVL?wxG#aq*AvE;Z|tkRoIvsR4W6oi^b=$N^RkVkY)y7S ziL%R?Z!aFx<1+AFXmaq*2(A#=O9@r-yb4WQzjXp;g8wI5bNm`1p@; z1+#+7* zs^iKiQ#+YDuLRqy?FqIgLnzIv*Cg1gr^=0OHjn@hAeWZ}!S-ZQ8Ss7>F)^CJ3QWlc?MYzEul^;j)Ut!2G>A#u=)t9>jT)l6`C0>Dt2R-nlN#78 zc;}PwZoGk6Q19MOvTd)tQB*T3@G#(uT=x){1UJlBQW|In{nToc$fRUW5}7E0(Dq$l zcvWKUef`DS2a0HmEhFPEZ~z}|edXJ}SR2>w+kgSW(NE*P4SF)G-jgVOAK@v}4z3`d z@w7g9f-NOotdjcc5~Qk=(k3Yw_SZ@*t0YVNavJ;dQcw*y#8$xmMX=$*iW3Fa7H^2% z-ovsk@oVIdVSZcEL)*~pJxTYM;R3jE%Lyde;%+tox7TP0SLPsu(iqqnd^FlnIs`Pv zxc6HO;ihllOapK4{}$u^z_;KON_vQr9_~}L^vSmJiEpXr7&RXosSD~n3$fZ(U$!;m z)Zng)7H>HG2(P|!$K6GrKoac3MR6L(2l0T`&=`6tKC3DFmpab^P8$LsQLI#Wb_myHy@mLE9w*{CE$p}#7HN2Za`=|~a3?S7k^bWm{JH&+~%e(g`wLv+; zl9Fat&IeH%A;!MQ%CZYPwd+gMIcN^boc9>*=CA35fEygA1IAaSHL&)rq?%;F+Q<~1ZXc)8`eFzm0D{sd&(i=DQsu&1#i{cePx2T)_ z`hS3~cSS-e4}d>j*D_AucC%Qyc5Lymis{>bVzy7xys8$GOaqkkj_(4w5jxp zBIUv4`N%~5$XNuoMFknLvZwGd%|3~?sXzyk8k+eH#l;d(i;dbYW^$5g3nbGncCb`p zu;1f2+;ZcK42M25i9TS187wu7#;F4hHvP{2x1C^ zCE2z0V`2xS45ySwd@)ibJwj+lWXvi8_dmkwoiip%y+@fm`&X!%7IP5oJ(5UO0u`*D zR`^owdnDBsljM7zRO@fz6!on0{Pv(JduQ`GADHR1Tb~W30Qz}06os)ZSe?LW%7l`c zDPFvwS2OFIP@vBK{(`>EfVu_t!e22{`)+|jFH7=0|LuV!(*7+5(^usA7vR>L8qS2f{~kKh;4C-F_g` zl{TQb)rU-t--&E_x35<1cQIlk$-l#vDXz zhZw#+mgL)y9CRIM%j2C$!;NHRMrhB$3YILK8T0WLA(AneN_hatAmstYcZS6Wt?;x5 zaI;tM!#imYTr|eh9_VswDRg!uLX)DlJ&gLGJfP_yZ`3?(9zX(usFKWxXRb*CY1`W^ z{{k4|EdRQ;QSfc%>V83mj@goRazt( z%s}huok{KjgA{gL8 zd*I)+2N(&V{@eCPJ>OS8hC-?D^ikc3>4HC|XZ0SlO8{B3S z)LHVI6<|JK(*nhRj$&RS3C3Hfs|MN`jcltP%b`fr)i0Tz{RLhv zRHU6mn>!1{FP?-%x4M+h5Bq`??kmu?px<>ctqJiMVG!%Rby&O(R>s~isoE5ypVa}Me%YKn#=!ORRW8cC)eh0#F+!TvY+C%+WrsVMNdxn1U>Nq zXiiAb3s0Ru3eKWc46lFd=L4V__?@!X6s6W(^bSb4c^B~(pWa;5DZnRHeZ{7XI}&_09cv4MgpZkWqDSKkq^)$@R7HLlnG5)x&;Xd zH>LZNfRqU|1)xm$+TYfNAt|3tdlSC#TTwlN&XoDyiM7ME0Gg6vSptt zOzzcvkt(5At!AG}*_1B9B=G}t;Z&lhdQD=kdaCIab3sEd33BeKo}AmKg6uPr9ZqE& zzKfB}7uUpm0s8rhTk--zcW?C|&!p*uS5fT^ux_#)kZ`BLukcSKhe*afwTEQfyUU8g zN3X?)?ky1AaF~{aPIS4nsEH(1Ld_>_q)JeVNEZM}FhQDx_cvgHpi^AC=om?NL zz$g_lkk~Y7_o)&dBvk?(#8-E1Tj=--LH&asg7!OXTC~@la*`T~-pdeVN~e_*A5Bqc z&5xAcO*QNh`%7#lRuMQmP*yThQL4LP&~+bP)+ejUizI(~Ll9>4Q+y2;omKh+DZ4!x z*Y(WkaHueqd>x=-P|Fx*c^d*a+3;|63nW>4OFtQR%g4lI$f{BvEAHsAQ1u$fd`c?Y zWOhynz3@fXIU%fS16eK39;6`^lJ}Nkwu?waXmYH24gnW8wkZXRj%OY#su_~miBwv% zlSMYjx7sazdIlgYFB{+~!TJzZYTy1>fc=&Lb_iXLNaq!NRw-O`?6Gi9Meuo-kFrV* zSH2ja9gy#k(z3~MP`v`#8sFeWN(9dp1Lcy`$R;OO&v7(_WLwffsLlXlwGRZA0dZlR zA1nZ|{^<2HjL9c)Q?HRUwnghE099@cA$SuQ{=}efNyp2BN#_n9E|@C}uIr(*Eeu#d zinPmiRV66JC&6qHE(9*efwlZ|2*-cgs?H&h2z⋛E91(7Js~l{&4^O$72)30?~I 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%0A+7oJ*x7<{}l+I#jN#Y*-(q-Tcd}94hN-ISi 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 z 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 (zI-u z8g9_vS<|D*&4wyE%xglHB=Z5ZVOy@b!*}Q3dZZD&=U6O3--7+H8 zBG)6`NuL|avgRclmM2@*H?3-B6KRy34roe+pi07OTH4;aW;M(5b0E_6>N_orjuP>> z8Gj6B!xchro!}p-SL^R6z%>WFuS|(?{CO6hdiXKmdi7oEm8p8i8dSawR|r>`1V2i> zT7Rp2RLQxUr;Ghm{`?I16M*a0_ge6dr5bXotiqWpsZH<$x1F}};;|FrSt)3pACe{2T)binoM|FPjSMfo>#dS-lF^_ zj&H+N`r{n_Z}n>b9Y^IKXTQs*5a4?C77O0t6XhSn@ol(5c!0zIqh77QA2(9@i>!C` zFgifxKcHS2dq_MU0l2{&aEWmThks(@%cr?f!aqI(egWWm^@BG2cJX*G$9KRbh8d%B zKDF`X(*u(Up3H#n0$i__L{n_4oa0 zRQ?j{T|G2>lgj_0dSxANiN`|$H<%4q2;b-MFV(B{_uiR=ztnnH55EUouYOd$vW~aK zqj4nR+i-<&9EX3UUah~aa|wT$^{yUn1YECvOuaI;Q#}5Z<2&FIqyIcA2c{(LXCJ6G zgEgl?8Cw9jUi~8*zD+!y#qk|*iSaszYZ>Lg579MPi(QUu(x(L(2i>HIDQ@B+i-ec%DFyMOi)7CpH6OS|63Eu&i7!x-V9F0r+d5go*h_s&zPNMREYC}uKdpFl2Zy84X+JYgqw=4zpsF8s0d6oGt`MF(gW%|-w4aq{QaL}fp|T&$vk2b- zml*GK5PZFjFP|gJ1zC4%U_y}n~x12}iJZnLf-xxoi@NKw4 zsK1cl_-JWAj{&Y%KW9T_|IfUL@Evf8G4>LIZ?N&@)60PC)mtrihwPtamlD1WR|p4Q zPH-?q+RrY)^=hfSkf!?Q)Nc{K4OiKYzLMZzqO_k+0oSXax1b#r;<4i@!nffHVf@tu z2h*kfJPo*B{elHm^h~{m@NKw4`1`d4KSjM-e=oR>%K3%$&Llk**Au=2E-@avf#6{3 zw4WK@p>kfdpdFRs@m0VLX2TW2ncpKgm_6;M_C_k_B@3#`xdCv4*>Ht$=uHGaUA{2D9M`;ikI?-l1NtzoYM_ za$dFGRXMi-ZZI3J5Q6s-97-bX=Lx{|>ep=OK=Jr{j_-g=jKFV}Nc=7PA1Vh*DD7tw;Cl71Z0G>-xPaq3;1c6k91f+G_M_iV_5O-g z*NcRYWWCb>HyD&z+RsUV>(#%up~J-E)g0deml(g}@FLC5AfB|%RQ?6&U^Wi$VeHpz zh-}YWlAiBz{0lSip9Ng6{*49i7$P3uVK=ndNr~NDgT(5rJhV~JUr*V7-Tw?qV@L}wA zHl$7f-jZ@!iy@G~F15>%Pcgvt>g_gM;vdEF9dL>9JcnOq1he~pbVpOyfwSHEe&JER<4$nkBsLZG3M!LC)W*55+_ z*Q?*M-j$s?j^o>Kh453rhq1TVELmTplq2m&RQ`1e&H6hUaJ~8u);p^fk8?P_11>S% z@pixs=739#fj=eqCi!On znFhFC{hkewe7%C>JKz%IO%A`=#+OeO&rmskvEUu0;&CwG2D9M`VKv~x0H37`h?1i_ zIsPpQ&HB3)aJ~9{>m7yipY0sq0hbtKen$1)YU9hNX@Kk1f3@JsUpk)S+i->OD2Lys zUah~s+e_i86n^3nSL-IaXS6=SDf9^F`AWpb#}+-68^{-!NXSW)CV;- zG^u*CFMf#v%=a}5k@D|ueQT{!#Diyj@8+kzx6vJm&AeVfwj zlWQdz_05=@m-?y=s~GVh*G@9(yKpeUx6G9QI|@*LYA~ z>RX(y#^5{CPey%Lju#2|y(j(oN_u^_i()hCs~?k>`VRD2#fS&F79;Aj)ZZ65W#7_dm%6aJhfeOIe6j1}l7qkXST z6bbmfC-ps@R-al6%BU~AZ(izal)kVkOsx%N)Yq6FeYPpRKKVUGeGdQZ3EL6alm4tO zQ!NvJl`kyn8wjBEmqy!ods3g8`&Xr@HJ6O`y>Arb!tJ(i#Po=&Sztrcdp@8|icuaSn#jvqD0no-}7{OFfWxz-oXPkq&L zF4k(I>^9Lphy9ypVeFCrqUL^8X=*%}QQvI}W6%7hkJ8%bS>Ijxsc&(uT@F2|IkAlP zt+es>MBZP?wZ66asqa8JC$36UYoelkrY-8nVL7#Ee(cOW-?wr1##(3Zwbx#2?X}n0XCK~2 ziR5*`(&5^7&twTB-j5ou%i3o~tcRC-_IgAAz7rPSZ0~0GZ`RV`+IP=>Nz*&&U-T~4 z5H9yD*YvLr06Tss!@~5xs(<_E89)B7X#7Sk9j<-%ESZ$Olm1;P>YsaNd_(`Lf4u$c zUS)Xf+IP>a-)a9Y+Imgx_-oxT)4#;}h*^8R6Mp92?P@W;mxaFSloA&68+V;MemX{yZUSFPvmaC6pU&K^7J-ChCH9)-!y56`9B`&-X{Q}fIZ{9n=hFngb& zz_st5vGTv~gr5;jR`Rm`_6_~}_RZ11(W3U8|7+Uo040{6(an+1D@E3d*j9J*?6{*7g`a^&tFX2mmhV0xL(|zb^A``%T{HXlwc)zLF|Fvp%L;q$y#yhgt7mC_T zucwpq(amWuyEfFrT>5!HqP?5+JYcrCy;S@q(OyDc${UwNe0zxARQWoSC#~g`iTpi@ zJn-iLclgZnBEHW9-{*n}Q7^T7Wn_+KUekNTPCMSPzJzRv^yR{?kU z%=03?&ja7*f&UKyr`2Npzd~eO#P@mN`#f-n&x<%d4;-IIo!mmh$84;Vd0xc#dEomz z@P7$#x>3acWg_DuzRv^S=Yd0fUc~Wv;P^c1d;@S-=PwG|;QKuAeI9iZpBL-&dEodw z>U>v%~>D^Sp@f z^T79c;O_%GOB~=c&x`mz4}6~o{vN=y!~s6@yom4f!1sCJ?*=?e9N;t0i}*ede4hvY zi-2c|1AOLr5#Q&5@AJUl0l3oz=6Mm{=Yj9@z~2t|8seaS=6Mm{=Yj9@z#jwL;WN*R z_&yJOp9lUZ;926Je&%@*-{*nv^T6K*xT~LeUc~o#;QKuAp9DNd9MsP|FXH<=@O>Wm z!+>Xr1AOLr5#Q&5@AJSP1UyR|;4{yQ_&yJOp9lVWm z9|N4Wp7_l3BEHW9-{*n<5y1aGae&V}FXH<=@O>Wm9|ZjS!~s6@yom4f!1sCJw*vlO zhy#4)c@f{|f$#IcZvx!$hk0JaXMPFu!1sCJ*W-WR;QvuS^Sp@f^T79c;I9Y#-xCM; z%=03?&ja7*fqy^XjvnTD5#Q&5@AJTaKj03Zd0xc#dEomz@ZSsg|4AIs!#pqI`#kV{ z9{5#&UndUmnde1(p9j9r1OHusyZV{uMSPzJzRv^y9>5*_%=02X^YWd5@AJUF3;+Ll z;(#9Jc@f{|f$#IcUkbR>7v^~p-{*nv^T4kFJVPAR&pa>U`#kV{9{39YclgZnBEHW9 z-{;%Pl`n5E*BjgA%a%lofIqO{!_mU34@c$ire&gi`T&@Ik1yX5`!Q{{>%n<_8j$}E9jPR=LF3+aU?%4O_vqP&2ba{c|DUUdTHh4;-xbgs8bzZ> zvqfx;TI`)5x+<|@N5)m z7HPhIL$hw%eqZlffCGaTL>G|;HY1M^@j0Z9pIH!HK^lK#L6m(IaHN3&z#jt~sbdgu zq>jh&f28^PP1}Ckj`wF5M5CWu5asZ`(PgC3jSHd-UhcYp)cpmV+J`jzMZmuVIMV1t zfPWcqr0yR4B3(wBuivn=w{5>Oc;6}eAjS@9{1eD`Vr-EHx-hn%#MmNrd!l7+qvto?SBfp{%7dwpCgad{av^~NV9(doByAp=rYpiUjqI;z>&KD3UH*^ z{|xwF1CBKMeZc<<;7Hwn131zwoZ(yq`9d090QtiBTtMo^7+pu2#TZ>j%3z%4;~PA| z+f?2@8D-x<-~M~_6KVDrkpH{j1JdX(f)9TWd_d~{CBTtp{|CS?0FE^J%Yb9iIEplj zG+)1Sw{gF72ncq(0s?<7iq0W*yc$JUkjDSJD9U~zx61CBI~U}pB~ z_(eL0G+)2-w{5?tB%|&cRk)M4FFpAGnSAb_I52 z7B(dZdvXCO2b*%i+La5iD>>Me3rIO@TXL`~7m#wWEf=hPxd5K$!0!u4Iq;h{CI^0B zK+1vN7m#RYE+FN=Z_WidYiq9KHv^u}$F~pP#(d)gvI|Jv2tZs$>i%u~B6a@`ev!KW zEq;-@{~dmjx_=kHNZtPzev!KWJ${k8e-FP%-B<97)cqgui`0D;zewG`k6)zjYxqU# z{sa6X@pzIP(tLdDxQ+RC9S`-+U54HH*RVxM9lwcRq>ldszepY5!7ozBzrin32Y7rD zsRKN|h|~cdUqtEvk1ry1fX5e+I>6(LNFCtuMWhb!_##pVczhA513bQn1jUcCNb~XS z!P}T`S@7sG(kOUz9cdIix{fpo9$iNo1&^*Hjeqw*E(RHLz@aQ_yD0p-o zX%sxVjx-7$T}K)PkFFz)f=AbpM!}=&NTZO&>qt4uBGP<(`{ZrRx9)F)xc?n8hm`%7 z_(jT629dImL&{&mm>O-vOj?r1|*v+1r+HpNx2HZ1$f*U696q4f%`EAEbeQ2BLo*{X^>b z=YS)PUjiKQn2SgQZvu{3%mC6j(tQ2y2FmTa9?$+VWc}|$=8fk)k6KaT)n+W_}vC+(H_!ECC%$p;t%)NaIM3##!XAusqLrZM}swUWCl>aSNZL zbRZ2NIT}ZizsT}DG(LR`X^b$Q9Y_O6<4EU_9E}%{=L4bnX#C18r13KNl)-rNOpk7) zQ6xtr$Ne(P^YAggg*0|71OJfDAzeheg5+rASr#34%unN2Zy}A{kjGi13rLrdt|K`b zBk-7K!pz6V!Y!n6w1_@Ed$V>p3;L)x^U?UiEu@h$IE!?_%HDO#pQSOvSa);m=aI)< zw~$8Cl(V#q;&+xbSsE#$*IAy2#)(@s3=6U#d;1<%zvAu|N1t|hOS<+-_%pp(S&PU^+TSz0vGKbWSG>SBf zZbOkAb4Jdz4Mz(-5+r1L@fcL+z9KiYc^LOz7fdx08Zk_>AjOVWw*mwZ_ibpz@)0z?6CE?WeJcsZc%Wp&LzZ0$LdFH0<6UNwQ;I?!i4IqspokQZ-U%+n$bKu+2g~yy2ms`Wb zEAUXglxCywy{yn{L~ z(w59q=byfVIxis3`F4E$?mMV^l=gcbdcUVS-}xGfHdpf<>g!Z8 z(%#>wy<1?D>^m~*|2(|L7A@GuAA`-d?PgH_d}EAlcelnSC;C4Ip4;o5`=do|qgem) z`XCZqjL4lm_5oWyhj;`p2OqFy2hU+XOv10j2Jv!mu5Wp{`y*R+aEI^U7mDt8_zuoE z1TS~L=4zB3obxv?54ZRZ&gTG0_;=QtGDKD9oeU+)bNJtP-yh)LM|Lt%{wtL066L=@ z`RiHy!NvMmUQz_lXYo&5g#Q`RC9Gd~vHTyA9!iw|1m$b*!yjCP{}Ix2iSi$!T%IWZ zKFTNGi$A!Ce+8*JQT|<&zxf{g!A1D*AU&8U{}#%Bf>;PI!haKKsHps{qVjjG{1E?N zAx$RA-$r?5qWmqCzg~quxQKrVDW51`pNb=e;sM4sQj&> z@|}tDtH7VcdW#qDXZfw7^2$W{X952@{1aZpKZBG{lux33iM|ak!jB<6lqerX`5Jsj zUW6Y;dM;6(Lb*Iq-iPu@tMA0$gH)X;??(BXR{scp5$VB1c?Zhhf$zeL@a;%LiSiiA z--U0;i||pT$wYY@$}1D)CsF=7d`(`&A4bY2%7Z9hvi64XN0A;%lpjXS%@_SLfMgT7UP!*p` zlquTfi84ipr^E5$zd3Z(i85LBO(b4~vuh8sfQw~|s&eU1i324LlsHi0K#2n-4wN`h z;y{T5B@UE0P~t#|10@cWI8fq1i324LlsHi0K#2n-4wN`h;y{T5B@UE0P~t#|10@cW zI8fq1i324LlsHi0K#2o4ivtUA-K@Gw_55fYD2>67#<$X4B@UE0P~t#|10@cWI8fq1 zi324LlsHi0K#2n-4wN`h;y{T5B@UE0P~t#|10@cWI8fq1i32}o4rG7K^_QxDdk&PI z)@S(qc|6hIRoz_#j z|K@O@G#)pHk2j;1(pcOKE|%&jaiGM35(i2gC~=^~f&bPyV2>{UZ@n8O`b!)raiGM3 z5(i2gC~=^~ff5Hw94K+1#DNkAN*pM0pu~X^2TB~c~u3Z09NE{-lOj}HF% z+}s?fn2YcM!mG=pDt>&B7e9(ub2rNNLwN5;x%%#?dMANVw6F~K|Hhi=PL}b3z|lc` zJ^r_sN1wCb0mPTL7e;@)JgVNlXfArhwukyx>_mM(qbj24O~7|9TEy}k>qEI>Y)PaR zPiEELiujJme##FY;ak3BMZ7GOzeW7ANS`t!{^;G&65Ov(4f1=8*Vmw2rf=#+ELS%~ znL>Hl-^|S|pSv=L{;!Ev#P-8|07s~A(b!^r-!;094iDk`(Q)}4*flQvt81d_xI+9| zybSbys}bd;6>MMhUqgQ^T>M3S_s12B$&w24``f0>79AY-oB9X`e=>!NC7wR=CoW&g zPZgF~{*XR>3enPcXB^!@_-My>7xMm8`@aQx-zewjbE7**FYA9}=~9-}AJB{YF+jNg zi@4vE%h{jN0gNZgm2tWFJ@;YuSNP?^AN(`hUU}fhZ!|`kC5iffgY+yDe5vbSyj1PY z{Ri-${X1^p%Sa#aE6*>R<9N@t7<#MYMdg$S@fYn^$9FE1h>;(lkNhRR_>1~h#7iO{ zKSq7`$K{JD4}sr?-bETe)>poe{97VE-3o#Mnaf<;_3B2XxOvg{aSu1J3bed+`#r@5|KZLBQD_`oCf)Zbw) zKAQ2Ce2|{FBD9b4{qd5e{PgG&_DAw%oanX*r9?}L7pl~JDVnomD3>3-=;LSD+)zo4IGK|euX%6?pf zeU76tFJI_ivHeKttK`ktqoub0DSPtf8tCWJV*L#A2YzPayP(*1Jl<@?c-*m6_S?y0 zyy!0SPvawfg>6Dvm&PNZ&l(RS|B)RZr|&_ZBeierG39ZQhG&tLzsjAcp7NNmU!+Il z0e*o$kY$veJ=+;AvLIvgTCsWix)>*K%nE_PE2R0{|=U=&wvd@(PEZSUuGw$?Fao{pV8aR zC{v%o-}14AW`13gjiQFnNBhSj*{|pipm0~$M4xl>zn#CkP`(ZqVQy~k!sz1i=w1&; zyFWs?k7E6i{+0X>=`ZY2$^R(%A5qEwF#cD`|M>rq|AF;{_c#8C{>H{1yT4KF zuaxb?>_Z2g{yO~Y;`m3|&if+9D+Gssb!Q>EPxI5qO?;yZi;XNNFzX*JDtv$iI9T{6 z{HsNU2a3woMdh_cWwX2r_uJL0uMcqD6S)yDPSIVCi{h}wEf-fqt^SFF{ zWkqH9kGwqmJw;_jS3JDT`p>RC`itYg##>DMr)mcojf-qqi}lh@_@e{J^WUN`&A&3n zlO7B3svRp(z(uy<{!C#J76iB$znO>MRfTA74e?i+@u=FdlBFnmKhhxLS%v!qzt6%K z71HB#k8OXhW=8c_?ZD!h*ZoN6?~d--dEb4CXLSG$`C)tLk!cV9`aN;ka#B2(qy1U~ z_`(&4A4GE;X22PLB8P4Kr5x+EGQ}s@pKHrezPs#R2S@$z2h92+qxcNqnKF)uyPxYj zwm+IN@tS+$?v-lqI_SIBsQcOUXy!jLo>R{HC{d#s#BWgl;&`E1Fh$VRv5#SmR zYT#(*Ka2mwC%;EC-}mEFsd5-EjdJ${MUFrsP(lQud2eA zS5RI=KloJ{KQu=PS3Kz&`LS5^<6mX0e{uY&MaE)`+wxM;3%KpyrxpJQ{QBudq#yjU z{QOk(DU<^Iql=718K?e(KcB>cJHW}0RVWAk{dDxxMR4ke_^10n8hx|~zFKhb6Yxa^ zGrG>6vHq;!;IH6mdq_AF@6{1ePef)_Z$0x@w-d>!@ul!eQXi= zh4HZE<%`H4Tz33EuJ~IRpO1(?Vf;Q8eGJF}{x0!HHHiNmGUWmOA@v{k+wuKK^pVv4 z@@IHE`3L>^aP+PKk17ja`l813BJ8K&AByF>w*JNOmsG$0 zr}3jS;Iit1aQ(%jnVw8^1I(n4!QXe{JA$>uB!57)K?v^{u$Z_Cl78uf0yM) zS)nodO~56Tz|X`Dt0iA99v0uX8XlgHhuy!up@H%5M#dL0UX%~c-;$4O%kQizte)ct zty~3uUtON5F5Gt?>v!!hj$ao({$=NfZL2l^((IsrnYgi0?OA`NI$r;JlK#rVwr$^o zJG1gC+6TR8Z>8@q=()d8v!3lWSoy93zK6p<&BV2<&3uXYz1pj(*#`W%D}Qdw8|K!t zd~G-BS(1s@+wxq*=TQ@5yJ`WBqAjpfZ$v1M*HCp;eya@SLp9N!WceGluq+0C9?!=L zyH}7uvOn~f!9TQQ_=oc1c(=;O52 z=f~QGX?`OfJ~8%M&htm`nr&u0=HdU<Z#x z$x~tP3R*1j5B-@K`&t;ks}c17zLk=4@cFc zkN&ytpAO>5A8(=jRTiFF%^7pf+VA_f=b9Lgewgx$@q+yC_2Ywh zb0&_T$`POPs_{3jS+Pv0MMyq8C^cjY}XOt?BmGf84{>pW4vA>QBfo z%9*&+%8Ri#6JrCzp+9BlPhFxvl<(G$`TEuW%_AOP{M``xBmQ<-d2;gIX7xk%y*v}= zt$aEA($bNvAN)-A5BzAi`eOJsG4^O}y8YI)ecWD`5dWnAx_7C!09oHX7_y5Ih zX8v;ab^VZU@7h}UFU=|cB@@5o#!L2;<8ci2k5+0udgsJgO^?4{?VsLe<|m`?i{oR$ z$9P!zJQM7N^lj`#&%bNsr1w~w-tDWC^WDVQ(2JhGqPH{9i~Ug(W5cICT=PTyXcCp*LVZQY*YXW{S)`3FAUb!0^r=+bv9|A$eQ{G0g3Lq}9L@v2OGe6``X z(Z|K{;fIK?OYw>$!UuooAHZIoaQ4rRU(?|PKbB+)Gb^fbv$HqVaqAHe2R-)}a!o;= zjs2JbzSi%MpUT41E0^$o=kMI0KQj*zAD7kt(c>!7-xmK0wm-7(cV^<9R-WAa^3~%h z{>3?~Kh_?_J6!*)y?MdOm-UaDoW4k2stQlfm4Se#xt>A)Ruy*b$~+WB-yl(nXSK}u z{>z@{t$sWC-cs=Nzf}(Tc#gwi$GZaM=W~JHRq$V5)cR=`+k-zoF%}mByd3Snc9iYE z#yYMoU$CmMXAjG#SiZWvY+~%$onGG7E&zVhIN^r~e{%-)ZQtqT6Y#2deC}z0nz$Z> zJ*h0bG@iqy@qs*46~@QQ0e9=o%EFg<>JS6SF4{9VKcf1uwj zN%^QOG#whpHTQk9o~tb6cKI^+4f~VSKdc7|dEdYDABTNE(RAhae((33K45+f`Y-+7 zk@x*Q4|`Vl#tP$aDt?S|Q_kNH`OL(h=-0)*! zY-bP9&G=r;X#S+ESp5WlTk~0zo%~OXz0ecJHCj_{!)KIe`S2KX&1^GUyXk*HU5|n zS93zK{sR23&TXa){Xu_LLH>OIQLZYSex3U0_S2Q1IBMv;n1Pv z{g97fKSY1)@jyTC@3Qw}{z7||g%f1Q_zA<0@~N@t^hq{GBX)Hm;D^S^zeD7o+HVQ= z1?$&h|A6an!+&S5c6IvkJRgByhfYve#V__ZJ}LctjZ%1(_TWUPA5Y42(x1`#sHctO znfOEo_`PjjzEFQvq4Q+W=SGZo*GaGMlCSaRa6jW2XPU$PY|r^Gu)mn^Rux`-mG)(l zH{pKr=THao;t$vB&Yyw*f&Q#2On;5|(-wbX?Depo6MfCHe|uza8^Pa}PEVi4qpOSd zr`gN*p|D;&pCNt=;d=VS z_p5!8W9%d9uPU^Q-f2s3rqI^x?FsNRh31rfsx0j3Bz^6qPxZBTQJ>nZ{a|}6H?xfT zR~6dZlk&T&(AAYLx3r|oO-;#iWudd3^tVxdVb3w%?UdIpE3e>J6U!}L|J#~~-)!*N z|2-^wd4xR*@j__8;w4752R1`^Wm@ zmNvyJZ2u|?ZPTQ`-Hz9)!qi#PJ7wvuES%co`z!m>^rfVISygCjOZEryaEkq(vhrN) zKcT)h_OG4vs=w{Y@xc5%CHb4O{z)bHmu!Dx4Dpi7AddbM^ea<1+n$uq%EHtuzJ2r` z^O?rytmIGfKb7P!{f#93srd=_V?GVzk23UqI*E_|YQEXyoPtm8O~64b{90k?bpd7cJ)yqogt>@nfgSNY?ZF9>h$aB$9NQyQNs zqc89;np8h9Xx};iO~`i3zB69kV&~s+_?K%~-$Z8za0!1)^-rEf*0o<5zw!!o#o6QP z_|-3X{Q$o(-uwJ`U2DYig98VA8T_j*96adDc)qYWKCAwqN~{;KpS^JSu!mpc^M@lx z(&d?%botn^bom?K@MX1k{J1Zpy~@Jg)pwHqi&p;P)+SH?)#X@^PKWvTDz@AgCYt>H zqGzflQC?XcH?{ct)&JSE9?tgTQyUX-Jij}8Hc^H@-TA8br{TZf=x=oHHU1RlYsMQf zA9;M}M<(7=9FI8b;i|9UlrMum#M^^Ef&K-5$>Y_^{(iB4Pk+bwYg})xfj{}gGqm?lunq9z#(3e&lLU$0t9;)g7yM0(XBFbD zPXqjf{5kRy%aw79um1gP@YmHp7q2q>#d_q4a-hpz$sc@mGW6$e*oP;-Li(Nrj(Hxj zC-^&hKGhoh9rPdbf8Ng*dOnk9cP;(!M+;9p;o<0SRl)dYPjbG2{7j6shxO|pW`)oB zME)7@oj>-Z_jlT!@bd}y0sk!JUu6nUwk78$_)jT+sJp;8PfYC=O^{|iO%TP1AkV* z-}LpPy(&C^;P}=%|08~;N%G_7k3x&)ui$SrYkqhBR#l-XJik(VZJp7@&>o(T&NZT_ z^$pqsy-j=``uVG%5A?&oulMqS{Zy6llX$=beCMCVEgv%Stoa7|*YuN#GWazzLVj$; zJ;vV{u1}7CWnpXZ$3T|FqHCtAU`7>AM{ri8phcEux&q67;Z_*du5?< zE9HAg{ul8_OBjjg;#~&FX{}f+g{e`Y)y}Uu6=#R;EbN)kl zRbk5(_CH3^(7U6+GPaEZzESwkbRci>E3toK6vfcrhJ(Jprv3xcCE+jN`ewx22hr0c zdEesYedO7s{8k};O8wg5`7zWL;9M_^j8MLtynYQ0vAl(4+x~EZ-m1cu9lrl)ANn%n z<;&nV(B3)!aaG~D=h*+}`M+z#-?AmNkNLQ0{Q-RvzYRaQztq@|=h#2BH@qW#e`AnO z+kQ(&XrJw|KhOF8Z7s4VU0Xc;qOW1d%QNC7ln0g@y}k|&d3gi=+sdQhiTMU)*pDu+ zPnXD#p$5v^ke9b6>8s=o_^>|-d&lxf3-L!hexv5&MkmjOmMx@L_J#GwO-+;^Ctt94 z4ZeNUUsY&0?Bxw*%5S=VY5G?cUV4$^`4Z~Hc$9&^qGyYzXIS(&`%#7GL6pCjto*Gi z?A*!wU*P>$XQ&SiTn{;UfxQp*l>LW(i~ub9)t@cHTU?p&!thH;dBA)ueb^~|V7x1B ze^d5U{XL=Q11CrW>aQxayyWFu^*2dgq#sVcJAmu-v9Ps^;}Pudh~^h(f2;6(hW$U` z``_Ec{_~lek>{3{B>j+o*QsqMEZUcPuod(M}IPfo}eG-59Y@c z>HZo05A$n7%D=;SG*O;PaZS8RQu-AnK%{L96zQ$qlQ}HykUlqSD`FK6pXW5%x z@q0}<{kyb2rtME<+|c0X1NCos*yE%ARDT5@*Yl+_mVU_l>nVANdwQsk&R)RY45jT& zuk3v<`-A#1p6dUw84t*p(Z6vopF^*Ec|rRaU-84m^SItf!mA21GhQB4f0yPXKR>}9 z(D!%rL4J;TeARE{f85Gf(epR7pNJ2m{;K#j@!!PjHJ{ILJ?zFC_B!~7@Q-1yW_mg- z+{8MxETr~N(9ukmsGC4KDAh@bz?o@9R%BU1f6fj_7p^NH-QiLZ0K zUwbXxpM*b)`-|tBs`#wN0Lu`w^#)am#R0e?b2?ygaEtL+a0IJD-3bXA}LwdgJWbFrM@2Tk&`qe`Lto z=Stk4sE_&~f4ni+H_ZpKZ_d9VFI<1)u939=diE^)f7gQCVE){emalw}579HE`N2J(%V2%z?H%B- zpUL$#<3q9^dGF7(hV_f+Z`{W5mj9vp+k<^peQAEL0zZ=Df#>zD>Gl)rUDOYIT=YDr z*dFJ_zr3?gSYMHzR!{FX&9~e9_$B-cLw}LIPWuZ#%s(sk7cd?gU#(A6f0O8I_4IX# zo`ikX{1NQyaN1vof5ExK$wO5k@jQn0!=KUqejES7d^we}S8+b??KSK}F5bU?E{e`Y zpG2i77q54!3bV86`xEvO?IHfyMtyYgVLZQ7e6f@IY3a1!_fHQlN5qcvYlmHTQiAPM|_Y#B_JH`QRrY65;=4L0B> z%5^mlr^*{@9!ZsJYX(x~^)-X3a!t)pviwMW4Lr_J|09hxBc=>~l*L=a`#%`Z)ce?g zzgG)g@RrvfQ-0#Dm!*+_y4IxY>VOUR|hNiP4SXGT7Iv%U4zw z;xA`dw)Xd)c>T&6;`4ooYplPo){h_LyQ=VlPJnaqvwPwV*f1LK@qWhY^(>p`m(k>o zyyd2dp3AD+RtG9P1f1|0Dqz{ z8qb>ghwtY5=UdqycfQ!$ljpg)s4 zcJxUWh>!k05cf|6cq8Cn?Te;dd!+9xebLLdJV^Yu-Fn_uf&1Uw2>A1T5x}D1JmC#5 z1^5i$JNtCt8`}fFasMv*Lv6Z$`GUzEqkZCyhi@9EZ?Vb1%O-a`-532_*3_^2`(Gry z-@sA-SYLF`!PP$AFvI&;9=@$F%HbcLKQ%8z-JNDU){35I3AXg0zQ_Bb3$8x#Z$};A zh92^7dtWqd;f8--CEUk{>;rqh%k*20;81=dDfd80m}1kU-BfobQ@7 z9^_B&o@mK~24DTpJxTq{3C{ix_eI=*!28wz&OOmGi+`2l+x!^2YwBAL`55Sn{&Cje zk1WOgU7I7$52R;kDe(KA=KLf6WB=*{@#dYRU*idT1N|5!T;mUYH}>F@)*cYv^tk7b z@N1uAf9gmt%0|C|PyLoWH4U*pO@xDAs|p8t#;3qv6tQ2R{DHXk3DRHd;rn}z!J#m4 zwpX)-!!Le-o(JL$kFp%1S$}oh-+$1-MQ`f>>)T-XgYluh+4eEs z)$x%dlMY|}In))}*%i-n~n~n9C4Pqx)}WE4EFI7<)bUuL-D6m_NdeJXGzNbf!`HlNBDY! zt&j4Suz%>^7D`-S@}#*Xs!S6e^jp+WXY^q_q_ zf5pa8%%_}xfsguSk5oU(nL=GW4!E1Y&|a{2*kABK+%EgnNP2)@Rj5;ab-uow^j-CV zzR4Y(oe}*B@^>xesZsi5^$X?tpidf~#zR`a+wp|GsPp$rpWCFL?VcYE!5-@VO`E3B z)Mnm~_OXBEAnmCe&&eJAn7`q_iJs*Ps^i=g^}Er^1Lz6%4f_`=#y0WzOv6vnpRku` z5B!yWhyK(C{YU$#Pxh+b)7u>Eo4H^5?e4FRXZCS^ZSwTA$UX%9Ym&aJK0IHm7~7!f z%E)IK+N+hmsy?-!uzwgYV}HCXM8iVvcK4$Bzu`deH>5e zM{n@Au5E3?~(oJ@#8(6(6>g?8~hpJC-g)0 zoB7k;kNSIMPZI6Po*eb{_XmGL^-W8^rU{q)z(4M={T-zI_H3iRXgu)z@_~4^NWYHB zz9ia{{c!DRzU#L2K^{=wla$9qf1luds`f=s+vA}UjFVG|EnYP#+w!P+xU?V&74e zH9rdf=zh_|`c&S0i1MKOFR{LaK7!vBV<(~$fE)c_fAeO)p6TyW==Ve?@Av)RG(h@X zf2!kSQf=z~2Qr#^-L_U~c+PXB42SijR>&X>e* zB|VZC*axo1t-fLY-bH^a%+Iq0mN$ER*oPeOsZWDye+O-e>@WDk`I6-@AJ;tJfU@a- zBjkI-SSS;}^VvGU6YYJ4WjDSL#C7IN-~71u&&7|;I}`pG+MC|a za-gU28QyRGDcoQ8r1w8D|I1!<*#1f0TZX*9t^PGX;nyFqFAv10MmawQ`a2&ZT=T!^ znSGk@(4X8E+A8DkZZz{vx8o<}y?KQ5gZxjm*Yhax!+g>*NVshe_)WvKe>p!su%82{ zkK+mbsg9cuh(A`IABb~W&|7)L{C-^XQM1>drrlnDuPt8&eR(NSMtgl&u-oyJydIB^ zqa5V5cR==-^r-*2amu6U6TkXiWVuh{$?@;mMg6w(EBLvokkogxe(3h{iT9NzIUY`* z;g1IWM0?QpgGqhI{@bZjzz_b;<~^jZ#q*;VFPH`TWbbll&&zlItAvYQ_4g!?7f$rI z@A;sQ^#5wdLYefO**6RHY0uxj=crG%KKQ${!QWkrW8>oKX9y4eOz%$GqhO!&+gWz{ z4*oq$eUm*FeW%Q`#g$p>PquFJ`gW-i^>6wL@xywp;c*Ywc=bI&{R{M+iO!&`@g1am zPCrI?u=i(2sb66}Xnm6UCHrFJ_i4ft?dkcb{4daJ^v&{nE$i=pAY zlj9|LYgjMoe$40HmOs#E=%dz8cKji4?OOi?es}Kn_VDWRWffyDM=ygOr=Mm$hx)v| zZ^jFTR-e_s-b2(6#}C-^g13LLkJ!%}W2b&%{nNRNaM>f!TQPPzI*qbx5BE#nWPh)& z!TPFM>!D`99_p0*y8APQniy|-`}(n8e(Ef$>-GB6wj+nK=1;BHYE)m1uP^si!rN(I z#J`^Aus))Gy()Qi?NyAOHP5a+|8v`EUxU4B*~zkP59_}soIn`pgT0n~+x`K*J|0iO z+k$-%J^eMF9>{xj{I%5jtE#YG{aNq((;n;z?&p3AuqSHr@LWQ_H==*FvM-_+;|Y5& zeN4;`>wWu@r&{T|vp2A>hm!Uc_lNk2;yoK=pTu9tKi5;#FWs;HwKe(rQHDM~p0+P_ zvL9~##rq>ue0J;XG5E2M^7u8ce;c&^68+M*^!m%#Yv>p4^;)%;vM&{5ubOAW9AEX< z*b_7V3SaBBpx^oZvcF!R6ZS*>L;R(~wl~Q8&HByRvx>2=MPCCc&R(vIj~%1E(E8@m z492@v>oeI0jE~lv-L}4~Twk5&IpOdDuNccKe5v}-zjg7^qtwr1NSI%j0AK4L-oyD8 z@c_*KsE_)s`c9qdN7l5z2KBW@t;8ii*0Q}b{j~3bUu#6U|5e&gQ{ISjXXn>^ne87x z&iU^Y659iQp7xGypp1A=KKK`x$e)D2ApA2YdB5fqlz}h*z|Cjt;?1qBk2G*Si~EDW zApF)~-%$TLyiX&0Dtwk-X?q2E(U0-M`S!F)t}|B$t>~EMqYGof?`wztHgT1;ogZb;o<4OBa9UnbN z`gFheTQ);~4klIfbG=0Q)%r&KX^?$eZ|ptziSUyi@);w6WvdrOcwzK93!r@YpA`&k$CQSr%yKBB#Kab}wO znBo1<7sg+Cf0)1frJvSbg8tbeecT-M@oJ-$e^@-)AJ~^0^{rp}=He^s;_NhSR~E_0 z=RJpyBYO|aqUS_d4-ZzLzFFzttmofm>66x{@)wV%^at_6Nyg`bJRLpO$ujF#yy%$p zOZ4dee(6J~fA)FV7s(gbYmCpKf7A!ihxPcgd1Mpqe}(1a#0P)T{vOVcGk!eU#zKA8 z{^x9clGl8QuU=b@_(9t<)F>~F2s!_MDG>F*%NV^;B9^#}Y%e-wXp{s!!i^v%Tw5pR>e z1^;LEz-)qE#xwnT7xPhdykV05fs-f3k0`GvJpIS_bG@VUHb8&z{D<~K{1NMyRQyQ# zQX8K4>i!z(pR-4d@Ajhp4Yobm2kw6$eNr{)2r>#5-A^d43V%9}S9U2K%^4@yxIu%!T-*{D)KFc`L?mU0gYR z23@N}GV^D1>UkmkTgrFN+k=yekJ|Mk=sBZ!=P3_wQM}XHTdeoO^Azw~{#b|WFZyt%%PYR=;yLT$HPfeY{~9FIpW^uD8O1ll{ihX= zb^HRoQ!TjFtv9)zrT&N>@Jsfo+tLqx!TR<9?UB(g<{tJVv$ue~p_+~fJv6XKhipEiZ~ zChTjbP#cdY{I}}(Q~Xo?Q~Mj#{szB3>rs5u_80NClY7Wd zM-Svv@lM%O++Q)aIXs^{&-H2|ev0<>{IMMLdw=${;+vvR{A~#FRnb%Y{IOl}QAaQQ z)mra=4z56Zy^3dAexkp}qc+fM=9>k8_b8ruhWrpe6aF6BgZ?C*N0Q&C50d|Z-!&nA zD}J7gIG(}Zs15PnYm67KSG?BR544|%_o}^y4W543Klqxt*{2iVbsy|p?=0K0Pw=G)#I{Sm?u?HC62>fhPJh;v36X5%4A9A+;pjZ0` zoPS{aV^=?)?>0>`zTxV_^Ry#ef6)hreZu;(bH=a7@O~DbpR;|9*V+p3yK4{IbI)VB z-i0+V{uS0ISfBQV`JVQC`E)1X%aM$K*B7yVQ{OUczbt)Mj{<-5W~~p1b8REary5Qn zYy3Czzae42=zlW)jr&&vY4C2WkJ9!C>)kW*pH&~}sjK7K&D6*BW`pcin6G+L_KNFY z#y6?M#$P>pl>QxU3iSc>_OZ-147|Ue@ou|bNBwmPd&lPo^}*gro*HCNLi;tcKhj6l ze`1#Pk*BQRtT!Jv{e?WOi{GpDz z2Ya(V_`}-Y(Hs0((6cT+d6N9$7?D2chx||Lf6zWazCkbL8~O_RggZeK2+1el2 z^B&n#7vEbKFFVZj$uiateqjA1|Jd3;l-uR6I)4W9-y!d>Nxyn}yuCmf{-XR@qrbFQ zt-=3v`q*LVT}ycXR6Ck>@n87g346u$Y{EXN|9ROPtABvE$-Y>9C4P9mB>W??Ct5$E z{faRiPiypJko#-$ihrxVON}VE$-X4&Q~cZ63-Cww!L3K(Kk9iztG92x_Gcz zKUjXt9ycfbZ}2OzepP$9ggv4>HOpTXy`XtD&| z=HQQ`J+q$z^wGXtReSQ69lzJb)rzlFvpw<8_}}(<9q2dv2g37I9KYrE|Db;7KfC&1 zj}*_b`ib~jU1~o;bzHn3i2HZ2znS!{WqmV>&**;fqot(>AZtHiADiVbhj{2w#fy&m z`DA8_>rJ=+$LKHWr~VF-zd0NzjQA~**?-b}uo>AP4~g~aTJr0t;z6ok^w{?cbwBG{ ze3a? zXP?acHsIwM@$Z>V){kWN18ffZtmj?*;d!dsn+f_WewqD#p?#xIu6?X`v|hIQ3I21x z1KOv&OMcCMLdEaI@6B4@hWJP>?Egc1>*A$~XDubYYJVoVzYp?tyh#6M!+IM2r&*8M z_6Nzo;{8K8tq<+`7xit{`qt8e@tZkB{ndD&eLU|!$asY-Grq6*4E|^QtGgACyPIY7 z&&6j#{AyO~?^&Y{XzxU7KM|hC@1y=6r@aUNQ}G#;&H8j8G5^mb;$76Y;`r5!;#)Re z3V0%3CI5VL(ewD?_|^%6OD^67dl%wETL0CC`3&u$ z{ji?{&tHu`4O)GoJxT2E(0C>H`|&v^4jQ+K1eH-dKRkXf5sr9X!4^z)GB){BWXX#tZ_7nc!rHv?`F4~WDqR9U{Er0K{ zm&cZrKZyN0splKUAF}P8CqGWfKU6$R{Wa@LyFUo~8PfU~2qHy6Ldcm#P@eE;Pj&uXth@^1T&_BIvm zXEX7h1b-#(qDS)u;|J)k*B>L_FMD}2@g^6)fxjtzu>K|JtxNbn8_|A4%Kxd3Hyz^o z)6E~yclkR(UuLEn0pFzYY~*;!{|WWK9O6gfe|toKQT)RBy@*%HKT`hzH}jwE&svUu z+ZN6*ZKglipLXU^mIHrtinqG^xj&uro$4Rt{dxIYL4R6?8UL{LLEehvE5=`vy%4<# ze->rL7mMOsX9ifG_$&E5or=d4`$uLzwEe?=?+4<&iFn2u#NXPA_LokC_^Rsf*~8dF z@R#7P3?$`!ui_bd4Zkp+6N+a{u&n+R@7LKK^yktH=&23*g7!e4^dnK9q5$azbb8!&r-zELrZTpic#PN6v zUeNqdFz}_t@!<#JUDCH*_I~%iMtJ|@`Jk`zH+sxkgX;rW4RSqO(;MQGYf#=?%UGjbucJJp^Jq+Y2IZq6 zUaS6&MC_mIZz^7j^&0&Be#ToniG%*Gi~IT*AG7gE#Ctc-vaI-~>Pzewg1jmBLB-Drd+uB%WpE;j{-qV~9G$#svO6QMo&NuDXXnzEG#`9U%#qU@AycM{75>(`_Q-P`u{>UoJmP+RAv(~GZtp_#KKDTK{Lk_q{{Hv+ zfRFLGCmy(O09EV#ZM0vB?;$472gUo@pA+1^pN;cGe^T;h$~X^n>xX<9^xgQqu??T~ z_rFPaLn9Z=`d%IIGjYHD-ju%2f^z+5Jih9~@nb3crcZk~=+DHPi@x7hQ~dq5PkDUQ zhwpPWC}7C*fxpi0qtzCDkIsGn3iJqnWW?iN<@vm=4<_rw_sELA&(-wFBz$75zhA<@ z@7b*-z5e@G8c*;e@jWnp&#C1T{(g)HzCUTdmu9~IkU9?)^x^#Ery3%RAHTmTezgCz zzaQ|_`Kp*tGO_y}8Z=7%TOYpPG|2BS`14{defi|~&Hzt*PfPT5eLUS>TYGxEdOwzg z<9k@)`)G(Sr@l`ndJ&&YjrXRG^!=DWs9fadAp7smJ2w5fe|t~S_r~1!S9VLk@O?o0 zeKmaFN9`4V|1AGh9@X3Ld*b^>ZBHp4NB)XmIBz!9{+5q=`e1J|@#8<`%iy=pt4-lQ z_K^e}Fd*R>W`BybHS76=my9$5eTZGrwl(D@E{K5R4iywUyl$!Hq5P#0a8%BKj zH*}t5eSZx`cnR>|TE1XvEUI7c&R2PBc^S*K>GM+R8`9^a)aTOYqtrL2&qt}ROP{Y& zpHH8cQs0(7FQvXSeO^j^Px`!+`o8peDfL6?^HS;uYX)3@cpgptK>ECt`r)GUQZ~@P zH2o+3BabG}ODT**8L&nVgfSoeE#}J+`qzg4Tpu1>9o`4$_|)qB6nnlj#&2{z>-XpV z7uK)*7|QF7KUdE4OyrO8ycFo?HCJ& z^q&I0d7r$K`#}Jo+_8`5%%A6g^Nzy#D1h@kmNY#z&qtIW^pf#soEJ4hR;qrqpE{34 z^zY64^HktZ;yjg+Ebw)n3hKvsEulT(?=tq_ULfgwh@E+VKFV7rB3$QP)IA^N zKo1?J8uka_!P%@mFM?%+2T36Dp>No~H{s8ZQ2E7tv@!|bp4Vn%;zR$i-rQG%tj1U8 zt2~$Y=d+;yh)3=X@J7^+$Hlyt3H{;zYWkmAZ@#$^@Z9s^{1)DC;wg$pzBvOprk9tq z=6>}b8}6rU8U6+0S>gG?n>^3snY{YW_SUk!z8#wHD^Pxu@k@N)Y}($h{(x#NX=gzD5k)z|wX{pns`A0D5dOSadb=Lw;` zt$95l_55kn`qIR+xSz410W*_X4_)PWLEgIE_;UOo&-?RR#Q$DB-!Scy|8d@*&jNWv zJW1d8Y!rRu|I>MYJ`3sx|HtS*D_-*^`9Ex4a3Fo>d4JzCTwmD!f!_!Rall1C;r#{r z|2E!JhV@||*Jti~;W)n}@6UHxtM;B`eTE+PZ(_oquQEt@?gc%s^!yyk`}0-=Z+?;?IC&PREZ{C+s^&v&^>e(o9I z{o|(p;5W{nap%cgT>|+WpGe4O#VVZ7mX^;v?9(Uh^9%BG!;sfM*c&{LdYb*wdipB$ zhxP;bv>$7^e%`QQ99gZ$#SiLhfI}X((BCuis`~Ui$2{NC`yqq$uM+S_*uH@`qW-?V z36$M_S@ic&*0+cKy-NO5-d%hA{>EfDKjqR!JiqD-`|*H}=eG~DJ#+sI@b?s*r?PqT zB;e`~@Kfj2NWY8Er|Hs!AbY3xZF^wAt^EW4@cg!Y56bTSRlE-id2{^c_;u}S1zhi+ z>G@BOp11Va{#A?}3hxhz{?=g66n}0A_DkcHIPb*NCw*0Ym)QS0*&o>#!Hqppd>8fe z{i0sbqxi$sa^M?#l%P-g>*!0Je9gt=e-0p^=Uu<17G?seuEy+r~Uh( z{^WTqgeUBm=t(?ZRk=Cnr^+p|2bw=sZjwHS`V;4=oL`3eYo(ut9@;DFH|V8)%RVK} zS3!N)Z#b^_k>_uV^ilD8wO1>B4(+d(K8JW*?F8+s_8VSe|BODm`^|js+Fy?OVf`fS zfs>C4yiLjbLwu~JwUcoE@7fILTfc|;E&mYo;Q1TugRKwpiFjToV_U*kJgug$3*{Ol z*b~I-6X&z6W&Eq_5aGOs^2PH~4kEkImunK|uWUqneb8^TM}O};^?O6uZvpv0e6W`K zrS{bS+I?8A8h=Uk_w*cQ8Hw#-e0DLGXZeZv|Aw6`yZ0g1#bsSnDAR{E{%I%V?XzCq z@P6NVwnrVq`VG&sdlL48&+B`O>_>zA9XEbBzvZB4<^7_kPWHsLFZ-KAdtP38WM6{4 z>6O1Ce?a&5$UX=zd)X_0Bft;I|B*b(K26KsxaU);`5xmXd3EQdV7yZLa*5?0*$3Mm zmw|O=i|xqTKGKB>^E}# z!Sl31%C>tx273tkwekb`#q)E$uP%P6y-g1j-_6&>=d)DDhbB1xx%c~0&&$N`{66Wc z=;e6}_WNio%f22m-%4JYRk=Doyr25u&R;-#Iv*uGFN41M^G~R6`CZgk+ke)-ljZQf zc(MI%O*|i?KD6zieX;X7^-s^oRG<3aHAa01^-Y^^sakrmzIl=USeRcoq~7P2J<5GP zp)Z|!J{I)*Xo2?5&bMfP{R@75BK@s>)|bW420b4O`!l)}k8}Eo`99`+7xs5FKFzYz zZ|QG`rAPYH@C^O)Fh6xY$#S5leyjJV_5SB*t4NoyTtHXYhA+fc~WR zABmr4|Af{rwKrJer%oSt9F|3`nN@7xa8{+*Kg_l`_RwCehbo{+eLj-eV~u~he)s6uMhtV^55<4J>LHxCx3%| z>)Yw|RrD6`4{8eM!)SjI0BBAoxy{v7R-wMQJE3CfGk z2he!8Y5$O|AN=eq&|b-&fIitje|`)3+4_RlN1eBkIA3Wk>8X9z!!>?+?SBpW->&B& z?X)jyKmQE%%fdllo7rFG<*hYN>+hzgS$6sYf8|NuulmrQ(I4>N&VP8HP~UUZereO* z)&}5*`Jwnch5Rt}QS@kjNS;Tf{_A~aYfsSMh5_Q+`4Q#3=XEh{UxJ3UnS7nBYjl+ zlKsre|iKS=a-CeD}P_^y{e+W8XqpOU{P z`z3y!-cS1<-p@*$zaoFMC+rW=`uR-ISG1RU|4{OjI8R0NG{ByJ(eUdk>Di$D7=|9k zOV&%jWsii9cuNlWipLPYM*G7x|AQY`4~^4a1${m%eGc<&-30v^8&3y)_2K=t^Q`ZT z_H&#e|IvSA??QVx-)Hh{s{S(%(|!ma^2GPiG=JcKxS!`ow#^XVltJGa?SDFJ?JwUK z)BGrSBkn(Xl=^+d;4j7fvn;a?<1Z%8w-P_N-m~<9zo<|9-LxM<^c?P^Kk3@X`)wyW zeR&4`KV7hL}Wy)*)zJ$C&zwP&XEx)l}L+3fwu|C9m`2HK^k9C^)tX})wgMZbqGd(}_1pA}+ zb9;mRxhDEglHOyi4`t&|JmmcetZ!tGdPooY1O1l$kv;++{*mmbZ6Ezxa*(txvGqB7 z>gEd*UqJnoSIJk8?2GEx`pei4)sOaYe#;cs$9MSpYLfO1{4(b~xb@SG{(!MBwtmQ4 z|8A|fDR1gejqG3WpKFWe`$NILqrWCTVd;l{;yjjvl&w20eK-$ein5ZmLLWd+SWl|IiS?t}D_%eLr`C(OKllrh*MvWS`?0<};Meca_lmLf`y#3J zCfY}RMeD(?upU%>W_@|c`+uE@_{c`=$3B!=Z{qyC5HCUdiudsOEc?Hf<6+__!JkX4 zHzn^~il2n}5%$WRAENs^6+e;xA^J^xcG}y6dvw0eJ(Mr?KfPY&d6~2?R^K2`M-@L& zd+0CLgCQQO^;>;-KBD$I6`xW2CLR)=2jPC4=b-n=D%rm3Gw~BQpTIv-yd~T}qxgyR zQ}wqfUg_)w*7LikQI+#gOgsntqqV+4<1HRUWA^yqrA!bzRC+V*V z>rcE-k~)t@@>jh6tkL>2*vG_r677TDuzr+%O03TypQ-hu=-V*9!Hu`>uhDulQUAQ_ z%MiavuP;%*)|0v)^{3X8s=qbFPbBXRMe&n%#Y@_)enB1;pLWliWKVP8pO?qH;w@&q z#r94pKBD`jkBNAY_}QL_m(ac!@8@k*d?v(;HYq;i=1bTw#baE1Mn5b)lE-GnQ>=WW z{&vM%Tz{}0)PCTw9&DDpT71ZFyW}~6ulR>sU*UPL;xA#nI4k*f_^`J(tQWZ+3ixKd z==9I%lcS&VIy*57e61ffeu?#>>`&VMqd#H&CwVK5XS5gD_w@Q+{>^~Z2aFHSbJ6+D zYd{120jwv(`W@q`^(un>cD<5Gt*0bkZ6SV$_f@dJq-g!w6XJ=guXdE@p}6%A-apa% zd~4ah#h`K%_PKa}5M{pnHs(%CbdzcR}GS+0K%#3vQcRQ;lFz2sf`3VNyv#pkWGh4;a% zKS+PFm-;FG;dx@B{u|>5H9>#Guk`sT*e@UU*RQ<;{5_%flN3MD`1kCFHBPLTdZpiL zU-a}zAH{EtS0Y{`eXI@ouJ_^E!uci|&yxpErs}VizJ~c?z4SG?{)Dvp=aqb)ivGXe zr$YP2|A0qJ`;PLB_N89>tonqXc-}ck{FY!p08g(^Ro@oQuZBLZKTSN=+H16r=kKZW zPMQa~o^bk(`gNXxn@@3`@3_`K-rqVK;-%0hz!fjl`I?fKu7_ElyWjZV=&xPx7Oy{X z9^TX$;AfENpYVJW-mmqg`gbNG|MmP3{pWf!k78I49?sK$R~hSPu3xo2<2~27|9+;y zuU}PPK4O2&^Tj?h`c>(@WmU$29;rjz^$eQ+MP(IPdwW7*;pP(z8rviC0 z@ow8+JfFt%yne2)!+Q46A(lzAssB`By~*|Vtk%nReFu7uALsg6>r>Iw*+YJr_9;(o z@JF0H(O+l{{=y~7L)t&UdNxmaJcWezu|DnXVwo}%U2Ek1@*l$dR_s4?2K$J3IOe-x zPeC92sbIgPe>JjK?)ek;r^wzpf77gAANKYO=haMcy|7&Lu)bE=OY5H-`;M0bg1zbs z&tufzL$Y5^-Z38r{~7kn$UoYnJWBtIpVzm_pLX*v&Og!lB+EQKo8@0?zl+-I*Yilt zpOCMr!lt76BrpHk)ra+E(ewXS`P=UOaicGmzO~ecK75c3<8AdXwVp!zfNTD9=aT`h z^FQ4B2=l`xKR*m||G?%Df75v!iTIoJ<4Edx9`F@kbM#^TuK2djZv=j(uxXU%li2Zq z{J!@f*9STeNBk*{f1C5n4|9IF#_`>({S2xf^Kr%4;jsVbJkR55RQ$}I7m0F%_Adl~ zt4{kD+<4%8j&bU*;}_yJil1pcrtz89_-wNAW}F{#kn=}1lA*`!Z*cWvzsqFO{^9w< z1m`!M&w>6KeYfL<`2y#k==~{n&(znK_&x=npY|r!%N)NR?SF9lTd+O}`Xu|(9?k<> z%l$pQ@~1SviNF2wpMrjM1^q;S&He_^$N5I`UMqc){>i^cyk9rS@kpG%rtvu>eGTi; z4bl(IFWO($Iql^O?Lq&gkAc2k>AxF4v%lsMtMA0Gk$%V@L3{Y#k9i-`$~)d~Ivngh z?R!2?TW#zy?>{7cJVb_zALegT zF9Fy0A;R;`reMENAN+-&zj|M^_i-PO6n#g+`74k|tjA@a!t=f!*`MHVHb}q2dZbtJ zZ^u9ApY&b#tA9Ou9;N%yo>?DQ{$aj@er}f)g`1=Dl+JpYY{vPtPPWyFSJjCr+aQ=+(*9N@2u8R*H=3Hsz z59j%8*8U!65BYsI+CRw$_`~x)g1pY4z5bxzikBS;`ik+z{)q{Wr?W3^KDG3LUz?>* z#$HL=c|1WiK9-U`(-iv;Gnrvh6XJLfJWJi`A zP1Ypx$W&8lI!EPNqc&lHf^2hF5Tbnx5xK$0^xA}Ia-^nZlDw2K#J;&+%I?stUvtk%=SV}rhl?ysx9Pw`e~ z?*L!>?VvAB{B?@-7yY0=_`MA6Uk&x)R8hQjCfsjFd*)jtzc~5DeUowO`*0tkDV%4( zUy=T61$^3%(}ce=KL16zPv<2TU#xe7&RebiL%liA2=Z<2FDTv$dZWM2Th(9s5a;zS zAByCwQRfx1$Dj}2%bNizj^7dQi|)Jee&*C(>W5H&INX23c-XJv!P$`i2Jt%GXAAMX z!@AFQ*ysbapUS-7fcR7<-lbq$F2tj{mH*esdkg5z z^E|trgQWLi<=1ui0N+9GwbWkgIgry{&g#Dl@5dd!o$X!!%y|Up$@7gK(o6ir`0M(R z-{LIu1NMac5u*Q5y(bgy(;a@8d$}lH7S8vS|93L%Z-Fo9mpSj_c?kDs+W!cjcAf8q z{n@n6_bmO;zk3(k%buPgybhiBx&4#Qe=_-5jzsaIN$}^fqIhew?oZhBe)#(x!^|fU z_FwIa|AhF#5ygv+kX{=9nBqIf%=!YKX~l1+Z5iLg6y5)BitcAGKtA@C%=v*kpVayS zzVyAzzasf-SG*_S6W#X^{mglTv-i+JAHuooX#gCzZ#$N zcz0y)j_ABX^EczkA2RY8{2}M>g5Em62=p=M4N-sjL+X$5@cl+nJl>o?xc-^@5*q)} zz`wfhZr&f$eF)XJh5Mm`-yh=Xntz{(6?pk+4fngz-^jO}e+}g^%BO;Q?r#`h4&#l6 z`)Oy_8UNAcPmw%7Dt>>|^Uv=1yaM_;+OJ4n_KDwZeiV#9x}E;PsNpa0^KRXD+wJ-9 zQJr51zV<&+KAaln-`=P544WSX`*{-|?(p}Mwg>ru{x75>!`vKLd04a}c__#e@GGR- zhQ~rZ-aFncc@aJspYp_Sfr31ZNRQ|C8feNx>Abo9c0IDDU>_1PTcS?5>1 zL4S&0qVFTn9`YRG*=Na5n{__8*{mPd^C8KXoBt!D?Hzvqsr|=x$&;Hu^Z6*2X89NP zSMnR=Y3JUZn0~N_o0ad#jMoDGO&?1$^$+R$42>^;xKZCrXgtYNgYqK<`1jv;Kl&>_ zis}cIf5py+@b{0RKK1dPhsGXq&8}hbb!`N)&IMMEfVh{#)<{a~x0bu%3J$m+=wx z$Nf~qQzzS9`P@2`r`vt}6!>HOVa97Hvqs-G=6K%d=F9vix(~&_X+Qq>A;yOpBjkPr z`>Q8dUc>Sk!i(aqs(*4q`vcZ%yuQ8;{3@S7_1)bp6DL#OqI@Z&i7D6V{TRj&nE!Ga zzMo?}h;wAT6!}vQ5|=lqya4%7mLDK4%YFG;#SgFb|48ww2%eFUif{m8;5au;XF97ABWn&K|1&eoO8aZEW#}98Tr_f%^6G z%a*d`le*oL92Fy)CzQCXP z!fPC#y2tV7|H%Axb`p)h;5ClF^mUG}vxsQ?OJC#owXbu0sjO)HOJ3vnv^}qf{=`4# z|MJ&3zU=wy;6J#(nemss#_<_{c|G%&ZI0-_{56i>`8vm!?T^M^@fydct$#i9r~Ql9 z|BbIWey&LWS5>{aXncY*_{8=a_VBmpfB7!a{I7e(@$+&h7Lnh+vE(<}6ZtxXNBvz* zZ1`jB>;92ke)SlNs$Y=1h0e8pO#NDve@gd-`Qu(J@_+s(l=HjbT~XoDzMol;JNPpU zg->e8REuLwwX<+~DiWQaT#=@$h9WqO!DiRF*Z5%K1$Hd{SF9US+1fETuKYj~|cT zWn8xYp|5A)Hq>+d#y-nGnDwk4y@Cbfe`5cU-vw`M1Im{E`Ca(^PFu$Ot4GC+hy~+s zXkSQ6O2iIUzg4HX*(IpTEi&}39+mYl4*tFHS1r8RI^-|H`mw$Ek?r9REll!Pa0L0Q zh__UygI5D1@6Q#|(mYqd$}{}aLSF6d`0%$&SU+5VJb`}-X?Z^K57GY8eB=+5RwQL= zk1iK+e}MjZjyGHYKhZw}JaUZSVg9wrN0eL9#p4$ygVzkAe)gxB5B6(?^xAx+?+CAi z95P(^55iNK964Noe+>AAbWT3_hYNt;ygbJX^P8XNimR;oROXkuGT;@`MR`a>)V?Yo z**nxP&PVnKm_`$^38fmR9L^#upXdaMY2Tn zKod)^xxyFaJlDS>xmfsNzIlWHTlKb{!@nZAMEIe-#s5P(iwyOb2|q`#+T;WJRwUG4 zCHzoNeFgg5sumhz5r?Ie?^JW zn4rJbqq@XuOiS-~<+OjZ``?P>4Vq7&_d9abn2w$m$ui9cf3ozxF-Mac>X&OiVLjfg zSVyRTW6(d6k2mQqgsq4ETYWY4qd7mJ{<%)E5!Zj=t|d!o4`**M`QU1kH!Akw`WMm_ z*DPg!>POLwCHz?XP)I*4b8qWGZ>~;Uf7@zsvg?m}Qa`T$;A%*2RL|9m>)*c`l#lAO z_N$PtTaA^7>a+H&klwNyk`UF~)$;h?yc(9w)JuQ8dvy*d2L1WY)nl3RO{=NEL;c%V z^Zr#RziqY8_bvVUmeq_et6uQ0UrmK$+vhU=!MOz}NA_FgYlA&UxjNl&4JqW}6V>UR z%Kvu_kTzh3VM~CJ3NBfP_*uTWD&R?lb?!KD# zSp0x^U2RfV=gaU9tJ8X2^$YmaNq(+%<0lRE)bGj<3ww?HeMtC<@}+PPz)#56+rSHF zD|1G_^S(AYMDt<1C2edZK8_y|Z*RbInfU`A^4Zoi-sa|4nXYeQ{@`oQ0v`S0wBc^{ zue0$Z8Jk98yeIf`9D=|nH9Wqdu5-HuhrzEX8u*xuguhsk37?i?ztTE`Fk){Np_82byvZ+w$2w=(ll+$A|HwbZ8^-)qB<$Z+V)itn)CG$452| zd3c-VqI`JB!&CYG1l`T}$Q(I7(g=^lmIp8L@P|l`uPwO9!B13Pg7zN^@ax$B=>T8l ztpUEu69InBMOfd-YwyHxvx@;A{FqPgGI#sv4}yO|&yP&9Uj9}K^2avc5z5T}ym^EC zu@?8e~=G&v++-mpP2HNG~FJq$@1zqx4s$akB; zzkhZu+ml|HAM)FVe7jiROnzp_*Z9cVkdGMkIKLlU!v2ysuJ5q9|L`N5-`DcD`0wnJ z(#mwl23l~JuXKE*GvvFiCA^jQ26&`@o9H3_k$g9;jO4q3e9rIl^b!6~1%9qA0sptQ zW!rCa`HF46-Q$7Z)xNIFw+H>kM{rz21;u>4syFf}`4RtY*Zu2RJ744z*7qH1ul4L( zZ~SNG)8_uVz1`Cv>p4DhPgCwYfKPoQdN*${?a5CqnEwu!Z`|Vh(IAh4-!jYds9B@G zaK72P{Y932{^%2typq4#&3&sMAz!ihqu=&->%V?`jsPq^(DzHcKLLCxUpok&q$?YN2~p@KCjQDPrBMYeN~?B^ZKo>1oSx?^eyJQJZ+bL z)ctGZPaPkb3i?<5`$#^6f88?F_qTd|sQ%m4U+X7+u5b7Ffd0$V;h=w2-_Y*yQGKiG z#m_Ib0RGJOFdp$ex!sQ^{7f zkKpTba=%`VKC&Nzx4+5b6U|TdM))6U4)_uO1I@o3KaT%+z;6ZVW#mEd;Gd6=JQna% zeS|;mSC5b2^OZ5XKA2x+y5$=BFVY9X_lbz!q>ot-vtAq@=>UBHVBf-g$0Gb$Z`Lc& zcOT8i1@sE*IU4jwM1S$G`0bIPFGT-6fxcQ_TsMmFt4@bzX^ywh{}R2^qWPKi59_-< z@Vnq4-IKHDT0g`8X1=87!$BVipS?leRsOxEu$~toU*|K=6h4&8Jx3axT?hI+EB?~@ zNgq8F*0-(<@bNjepU*P%f8YW3hY7)aCQ-jLtT*y`R41orhfwu^^#`ld0r_{&*!vRW zBfElpqJ3rBa=H~i#vUvwb@Cv3fM2T9)2B-T&+TW%M;;9Fd^U&v&$leV&%n=}{Oowv z<17Db_*p;y(>Hp4c-G5P($1+w{#(1J_i4g^_W3dV%>J78yaoLYKZ_rrKgUP51b#Z5 zM||elXMgm=AO6tUtML(B=XUFd`pUE;%op*h%C!A?H2>kVHxfSK4Fr9m@t^77{GRdi z+ZOZ(>f!&q*V{kXi>mbb=TH18=*2k!zpAvo-IoEs*#D_a+n(|B6F$$k@5Rsa8-Ne` zBVSLOpAYz>GHq>V`)A8-J?sey;NF9%Oq-tJeA+l4_-EudKfdsJt|=~8CeOD%&;Fz@ z;KRRrPnZwKd*(Uf^Nhg<{=;+6ar`!puleA8gp5DaVf{bYCya-D_SZo2{QimlBN|8>XZTMP2zBP)YHG)R5c@$3S?yN2tUF;r_*bQ^_Y)rXAhh?D>HY0q9)y3RvXk3?VZ8gv zAB`H1^KEa>%FF#hUy7gFI!Hf9@52QLHT*6HR3mv zJDw%KbdX=fA6fq!f~wh^T+&tzs34{MqY~XsZJ-v zzgsQ;f*+pt{B7nNjnDD0UeWw2(+Tm{gypZ`Uz+(TY!uKFHNmp2Y z$?!k)K{355)2-t7k6C`NObNhVpkfgMY?8 zNS+T%{~tE+p>I!1-#dK3pKtc_(|FH?^)H@}?#sCShS?uirN^Hl{~ag)p?_6+;-f5| zU>WN{dbJg>f?mGde!{GGA(?oSA7AVD?6ZMi5MN1-i$9NBeY1b z{hZiLS#b6X_cxCR{^5T0_;Js#=+FFctUp11K12TK=!okJ$>gl?v+*SMCx5hi{n#OU ze!`dAkH`EA`3U-1^LuV0%x@{^b?Ox9b%gZ7_=R+$J*+?PH?;?St@Uh^K5qB?8|hcf zrwaBx=I5$(W`^)j5aeMOXH{WB(99|mmsZOV-z{*+tKbV~Yg(y#Z{YZPC8k^UOx zd*)gnZ?^chwa$;}*B;ZaDxJvaQ{X>M{2e_jla3C`sw+d@raXOMZz~~hj9+g(YsN36 zQ(=8Yzax^j3BwQ6SJ%xDo{0}4-q!v`U$*#mj1>aD=~2n&B>4yR8GQ(PW$X{`gN~0t zU-C!s?MqQcyvmi0|2WO{pR)9;O6%*%Z;YuMeLg)M=2xU&FrVtALHt_p`L(W&{dq^1 z{jpw}@3iOtDd9gA^h-m`FNjY`-{?J6(W{{$=9jAU&>_M<;NjOdkRR$jKeV;Q?W>bR z!tapBZ~sB|-_QOAetl+rp+5<)&cREjrzp#Az4<)=@!c2tSEc*wv+I?$ z50z(1Eut^pFFP2`7xX+Z6~nJe4<3y1sRBK++ATjDt+`(;xk5koIcxtGf`&`(kan@%FnM}^gk5VDLsLtk@AL8j_;^2Q?3M7V zPDaHqqh3DtK1_J<<_$k2<9o*A^#%XveAdQ;D$_mkU-x@@j%hw)em-rQkK#eVAM!Nn z`3LbQCr^95JdKXV^sj<`%HqFgPh76V{7K&+PrG*$|CIPU{u*2A`3vi@hx$VC2huZX zYa2sTttaS(`Rw8P?)UW1+AHYWQP!LFXZ&cl=(pR`@1ch{{!YN;doGZVJt2NT_(s0= zdj8#6@7GK8*|Xcz$LWKq+6ez*`P#F`(+m9zIRE$XG@rIn^2<)G5B(U^W2`+)wO zKk509#gFpL{y|*= zOWhvg8{(TIBV3Q)(|T}z>2A(1<@_vtJH8X>TZQ?1`e6KGdsLl_XuU`LdOx^}@E`Q> zJ0Nj^Kd5iLykLHyukhdF>34yAjQI6Od+et={CcA7%8`At@JQeLeyjY9NPb5A`VUKf zhJ*ZQ{(;`FY+s7yCnFzcIKN_hQn!=y3-)8%0O_&K(j&8;nqStQRVUlDe%rWygb({q zT^sOyAR)X5EWGM;yX5&k&#yanWaxc?eC(8b?DX`xKt8tl^^WYv10MdiZ5jCK_8nZ0 z?RGt?(#8Xq z26@;P>RYn%&GFJLL)rP6^M#FmenUgq`5AlifSq3<9mvQ>CHS4|E&1nqr9(rUpF5AZ z&|hoZ#`Xi&o>!&Yw`ckNzWd@b?I&%W)?e_qY>Dx^P=2;;i~D0e8slYPEiwIy?Nt@l+t&kr zu|HL8pRm6jTuOS_`%O6imppFq^lOwq*XZb%4r#wR6y#O@s`K|2CLM!Y36Jj^5-~H<-J_P$5&j0Ls*Z=4`zuvfCxH0ZumG<>R7qQ=ETeyRXOn2HN-I!}Cr3k4-%P@C`N|Wy?pW7G>(E zZ_Snu4%_{jZ9o3v(oFl&A6fsw){o>65gHcqyD{c)j!gx$2nL($b2JfChPF4^q<}*f1=U9mtM#5hZ}_}+he|XZ|NWd#HM`< z>i0JK_r(WUzh;8#rTmvKtwa5IV{R$_!2YMz{{Z!?@?E|(iTcMH{d?GWzXyc*%ZuN6fz9^Wg!&phbL@j!p%|9UdakM!z%)V~KVdW<#t_t-^` zzVIFe_#5waBVV;0PxWgbVLa02_XPi~;g<%v2J27ZJ@iH;xAgR_dxG>Z`EvQb-P*Me zqwMaxKQg+lF?V8V^qzL#Fz+)fADPA<81V0Vi~hU!a=r#$3*hzl(KlY3H}>g~(M^rv zy>HUHPWcYadT~AOY4q=Xi$3j-`SmJK$$--oZ? zvI_8(KTY*J8gril?w z4^uF1k=)J@9i~2)fy7$x3ANkkzx1hiBmtsGSe1j?1 zU-`yB|MHPlAs^9c#4$&q|85QAqyH%Nx$>Lg{uT1eJ=lY?%V$`XcEd@hLx+Uf?&}pYNJNm7^ElU+#xBu=n>S zQGevfVU*o_uEyN1-qs{g@AE%^K1lKB4?;Qjp!+D|KATFCb{ zp!|JCKMLM{+8gC>)A-=W8!%t;BlvwqaugRVk*}TfG2;zWUZjseALPT+`>O%Jjvb!A zQIGc$9-c;fx1QjC|`e6)Xn^P8r=R((s#`Y4}2_|@W9!||hh;D$b< z)MuKH`ZsN&y$I`dRPUFV`Ow~+e4Oj)@RR&*uuYgnk6p*-pVP?N8@X~ zAV2i4>2D1Z-@Ye(f7F+coHTb=1fTRhewgdy^vffo(;IU1|7j2K{shLKAn!|GU_Ag& z@7dY>p(w9ZK5C=C)*&C|33GSJ!l!(B{bcCBkNPC!7wy~2a)8%)fbyYyqsoVOEW9TO z`~gqzNq2kxTlGj+fQR}{`T6yke5P7|&cAaDfp)$zQN94@|$_j2mI7GN_p0NwZ5&& zZ))H(KYaUx)Sm%<=O)U#@YDJXMEUbB0)DHMpEIK0y_6@(v*hvV?JNr(#zVeZ$gjn3 zQ2aGX`(o(V0($rB{l&oFM>gahar{Yp);B@>;l`^?Iv*lGx%EYUeC2C&?~B$ZPwnFR zc2b{czCBNd@i=~$K7bHB#N*3Hj)#2rxX&v6zaf^do+pC+()t{X^c}trU8VOk96pfW z$9%o`;i=qHz$frS&)y~!d$``H$NlvWC-_zSEAdOG@~vrofPZcB^x>ybFMdS5%fHw} z|61*v_5Of+KLGhl^?rcXPwTO25A}x|uYBZba~Iaj@5&%g_WdjJtIdZFdUQtl75N@O zT}EEuFBHi~gXB%}eUA9IJWPEa=wseLxAqA2AANxGrTpV)4|xmnb%y$>NAe;3Ro^K2 zko^<=8a|k%U!C$}3%>aGqq&a)zRB-L_^px$M~@5NOKO&Ux%p$ieOnfOQ;_#F>j1Cu z9_nA&TYaxlul-NGU!OY3lf?)0>-jRyqEgf*>il4{1Dei z^aOt_OF9Pl{o)$@gZ+fR)$}0oQGd|K_^0pl_M$dvmpuyltxfW5{AafBuJ`_L&9%U9 z%`W;k`kq+yZ`$tdh2Ybl1$?i6+oq^Lgdgh5N7m-39}WHI0^dt@AM8^84fx|dk;9aS z@LoCh=K_`|R0|7t!@ zJw^VP&4j+fe4b{Rb0U1jCo=E7Hz*z<`Pck-(9iRGukyh={f75jGyWyyQSpJ`4>gDV8pgwWvk%bz_F8*|{<}%v z^&WN}e4p|DtbT0MdthcgCeeP)gVare2Yjp3R_RB5&x5kr4_bbNd|-cm zFXgL^_EGq(*)ILYvgp-r-Y4<&SsVG!^k*V}SnWHe=s$(^Ikrpt8B1@B7yMi8f7i+% zw(rltzRw&c{vCe2Vt==z$X{-ke=Gc9e;{wIL7&opS}Xrp@G*aUud*&nzsUbZeI_1& zGWyFOcKuzvtKKZ$4&y>zXyBV zF8dz%p;PuU_$&1fOFvqAW#TD=T;Eo`|6%<_uDAAsq8HW+?=Kz zw5Pm_KUZmgsQmY!FZ@sQUWuJA-a~j?_Q&%}qx=`^Ph&nObKH-Z`QVfKrj8ibTg{1P(9b{=wZ@F`(gCw z{ZAHplFg`}}_T?1H)S z-)^w;6Mr@A@b&87g#!e;AC*0CKtS5&A2;=i?-==|zhvT*T{>V5BQn>faJsLhk=J^?}I(c z?jLFYxqiX^cL)21_%6m%d_w*L<`4ft`(3>k4}Hb=LcG328Sfz+ra$5KkMgHB06+Sp zkZ5I+@mgS!a-^jk9jQGg{0e-;pYA<&@k3W6KZJMUF!y&Z9+im)X+HhpH)lT(|G6dM_`DAUe4vjc zKh|GRyp`~bysW?_<2|*z6~6}l=#abyd)lh^NzM4{u-JQ^jPNM(Qher_u(Xtauj7#Lq`KQL?`4J$J{#w82 z{7Lc5mEk-|{rlqcRKRNp=S3R-GWpk+`SJR-A9nt(v7Z=^>mz;Hp!3k+pB>eCsIyng zlDS97i*r4^KE;=;eTF>FD83Z@*M7x!tbIZKQJse#wf4lsYwY+~f6yc7E5*Bu^^rL* z4gO+#&=-at(x(wV(x)@tezk`C9g5dt6%k4xQIKd4vC;^Z4Lz59q#! z@Hs>LyQQzg_??Qk7#7`}KAg}ayS?|V!eSFy4N5Sh- ze8$+v1;D>JK2z+^7W=#X4^Ur7|C#v|od>NsOnH*Os_~-p8}KjRCn7%5U*g}`f2F-% z8~j!D&-lj}&-lNX@0EZde(cuylC|&XAD#DTyvRRA`9lA8t^8XXFG79f-^%~Up7$94 z_I5M=S<<^%@fq1;op&@TKI7nFzxufJhxKJ+cB@G;(u z;x)2gs5kNnd?=qaoL^6f2MPb|`6ui_CccCBn-$OLA^(fsJpo_P8}gVr-=x3E^9$Y2 z()hf8V8DOMxPvuVw-?p2w z_;$*FmVBa~_PU3(ShN)DQ;PL!5Aj6sKl4rSzFmm_t(CuR`3L;mDgW8ZEAZ)x{Ow7U zBYzv?K_9gFc%}HWOa8O*A1P10Q?#wYe_s{*+k_YU!#Izr(0NA%`WXM`#9`WZ?O!$j z&bMdh-!1=F@+f?GU&zVJI^r+?+~R}zt&)GP{if)3!sJpRy-+Upzq$Y5dIf(!@~5?4 z(fO&)4`;%8liurVlDt}dF%R)0$(!Bpf&8F( zi1!Z|pQJD0;$?_0wo4zeKjOtkf1the2jL@M45|bl_cO{z>VrQBeu6*M>isF;3w#C` zpQlcMyu+WFnPHh@pbY*wc8u|Q`8)FGqIhQw`=30)`r!XmP7_uo{u%#@{-MQB^eR5T z&g!>iNxA$psxyp__t47ZkCd4*)@!}=UARv*lhJSR*Mt3+yf+lt|8CiT*B}0BJ?))Y zk4eB^C4a!}mrXp$;*a&i`0@u7PZPg(EB+;Z1U;eOQa}M)5iEV|Un(V>}~Iz{koH_UnYaa8fqK>s@Nzu+PMX7+Oy|3UIcgZ9sYFMWR0 z=oW7uj%&Z`;4^+jd+Xv&j9<~-IeEqTj(LyU`&)J5f3?T_5dTqpO6NJEC;1=vSbr1# z&lGi8u%GpjJWYZgS^438yAx?(Y3H_fEe+GZGPVy7_Gaifn zl#jEtkM$2T9vJ9ZCwZ{z1^bXYBHLi_Mf;QTKg0Q8Ly#}5Uq*lHJh(yfWcf$_nBb9r z#9wu>K1csz`D~TG4*cCFeieSO4`zRA=W|;AWwE>#*^kWr5aV^rUO0UXeIfmB<)8K9 zXD9FQpW^)=>f6NME6=gEPe8sz`E^)>rTeBJ5yx6%2C`Wye&?H`^08rjFNUlcw1jPGUjWyZf0 zyryV>#q)&heLutxcJn;X`HvVc+|SegvPt``U@y&m6<!?DxeFyl;m2S^J3iV2C%L zk-pRZ%f+8y|F!=z@FzjfX#WTNxgSux&+sG8ld}7}%zYQZZ`1zD;VXN6gT+Vu&>r@0 zf*-{{Q3ibN$87us<;k!g)BP;?{~PT3iT|Dq=OGxM`wRNJZhwLM2Z!m;yZESy=U9BC zPbRg0o231e{mY(ztVo{J{_RO?U*V7Hdx!xvhkl1YzJ5L9!}L+Hf5Z9y!4MDB``W9D z?vplzc%$Y!sd%5p*Lpvxc%R0@{0d3kTcZ6R=b@Vqj* zugm&Fx^H&K;>-8Rsb8Hxu_C!I$glXXA)GJN$R36JW?Ij2$*&y`_6zxH>+X&8&3%&R z`#7HPJEZuG##jHWeAOnC4^N`0v){GJlaD_cl~*L2B+nX8{qK`JNAML-iQpH>-+>1X z0N$jxH)FfUP=3;vH$Ai|Gv0lYZ@~vYm5*#Rx$~s|=x-dFI^^1Gepz|0O*ZYi5A~Zo z{C3IbA(jQNEjNaG6VK89^(6f{w;x}Ye6)`Dm92jT|E0HA_aWE^_7nT>hNG@t@HXX$ zzk#Ryz3xM~{bcsN^>ygq-`wx|gPyz(%lj1caSeX$(S2RQYigpt5xg_pkN5SlJ#pZE zU|BLTLH|oWk@Q7R56il9t@>3uuUKW;L!b0_^SpvMnErLTe?=OY`PJ&Yqt?`8|J~Hi zc!s&((}MA8v_G%$^~Wr1d*@5PgaieA-}4{%J@q};>U-+NX1!nSdvNH# zJMIA}o&N$qZe|PV%h<=6S-jH7z?_DfMcApp@q4?V^Zv{7ozQ=o{{7)SB+;wK=KI%pSdU_QwZ7MnC;WQDdrTT1-!HrIYe@g@SEOel zS+iO4Z{F9z`yzeey`Vwyi>04?52@i@etg&;ysy;b$5Z>}8-2a-8@|DpHNRD1y;NT7 z-v843I~UTY!_o&DLhYO0;o)Jv7t*IQygz_?ycg7+#qa*NX8R8hXV+us%~3t(hwpVA zJvF~AZ;I+MelfqbzHzIQH_-?DlIfpZ7uBQx{r6|b?+Wh?iGB^4^;y1iXeeq=`3?LH zeN({uP{SJE@z0hmQG4)1V}{;%A1b_$rTInq^F`mR{1uQtY8&D6JuBho-si%5N0N^u z$&Ppb=KF<@-m3zCf&V={_+HYc%|oh}z5xDPHgAdWSAP5{{DJv$u`R;=5y$U*&lBYb zW*=btb9?RkO&H&|XZ_|`+Dp`1e7DYu{{B6#C?7uZ6O4~wJso~3gFiB5tXHPIc~dC! zeK*kC)q|eM-?d^1$A1y}8u@=0CiPbU!y*4%jC<*r<;szpaJ-n^1HOv)vdAl zL6qOE?OvZBWs><|+6L<0H_QToyDQ)-HZOGua zIh#MFZOiYPKLzu9HTwwveiQwBd%qR=hZ;BC$uje$fWIr#;aAC*(zv0K?QOm#bl=mWf2Z~%I^RKmw7*9B zJLF5*9p_6aq?H!*~I$&T|WPc%6q$feiD^? z`+PnY$P?nNQGOAg4{hxdF2o1(L44zo{15IAls}?%x6j9-{YLiz%AfXsFRep=T=$=k zKd?XMkMn8m{}exaX%h8mS8ishsn`5*{g`vpcx=CFpZp7r$NN5;yK*ON`x@fYt?#=P zKY5AyI3DiG=Huvjkp5ne>5uWYbY=5#tkV8U=PO!|@h&-&!k6%y_eSHR|HiIdtHY1^ z!XE35@?9Xm!bq>rUjcey|F=7vpXK+ue7=`K!e6zO;LP}>H?}W4VCDFRo{Gns`L&?F zANh0Mf&BvNMbG&AfOXj4bay|7s&IaISC`NCa+>rs-}9UCNdJ4fviVb5WZ!Lk>7v@C zxp@Tey6yf4=aIX!`BPRsO#j}}7xagJGw()&pIM(R+&oUwS*dvMN?$+L<@2M6-Yxf1pBQ{d@1!gDnWdiI$Y0VQ z*0TlcxuZY3o)2{8K4II7{wwdIJZL<9kKAwWZY@F^ocH5AW!2-T59@JXm(Qmnes4lP z9J`*U=YbwA_pCvCgCExi;ojc|EGrMlj}qteKt7?-kk3Q>hVazqZF|vw<=vD=;dgF9 z9`|Xwcc85E7qyS>gNi<_LyQ;M^#}edSMEYN;NK1X_bwAJK!3!;9&Kkm=?(pg`z)=a z_*L;j!S4aT#O+(Q`SpW-g}w>-a!}5E&v{ngheF?>KXroeYf1e2;r=uF>pVdE2KEy4 zyU)`P>w)~~O<_Ixp4Ssi@p_`a&X3d|-+SV`NZ+g3`Gfx(8V+)Pp8uhLZ?O2(Tnc>G z(j7DVcf5~={d7OY7dD&p0KM1OKY?G}_d%%d>q2>g^`Z~;gN65ZgcqGJ){s5}dp&(| zo`LUKJGnlBe{LQ41M*1!B_+Rxehe!!<$-^YabY`@}b;XJh|=nt)T zi_Q;pzYg#bf5rM*{IR}>?`HTF`p}$5*!U3Q)6yq4o(%l^r4PdVCdIFle!hK*{|SH1 zr&0XtLm^{tyP_!D11lXUpdS9)D1CK zWX`WBul>6iFLC@`J~D0I!l3>d zbCCE1_){id6X6R#>W7$r>kp8>g&*n>U-_{7J%7KxaUbKKM&GQ%c-?z_8SO8OC$Bja z@Z)@ozwd3-_fvL$SU+=rL;NlL`l9$Pzh7MQ2=P%HoQ~1{37UK(jyMy{6 zd=F&qhZW~r3-RMd`2z+Ye$N?wAB_DO==sDX;2rVn-L3B_1HO|RqWmzxw?XHzf`|AY z)<4)==tq1{3H|Y2qd#ze8S|I@mw$lyl#d(<`9mPj@Gnfh7_Sebd|Nft2VHQ$?Drby zSnibl7d(~QHhTF!Gl}|E*=wyg>H&YG0sZA~pe+B%<%a?P;=J;4!WTaoc=xuT9PY12 z`9SdA8{pqXeG$%6i|y6P9n_6cek#eIIZtijeD0>ah5oC8y%K$*d_9AduTIIAJKr?= z1oV~t68^eBBmB>hJ~P`qJv9Gj-Tw*rH0geqqo4Gv%g3Vinn^hS8Oo>dX^#94#($^r zATj8Lf6%wMkAAf8s4JWCr7zSU`us+DIM9opaf;S+25{)PM4&xd53*(vZS!F-ZaJ&KO zkI=te@*MiNZS?wA{>1dQsEqYoAMO(ipKg8MBKZ>h>4g47fVb){%A=Dv^w;@Sq(60k zsl(C>-}gT@gZ9q8NZwpNk+YQ2Q`Bx+#7!UsPLCL4r=QD?T0MGCr z>!){-f1SR={R(rR&bRM7KzknUL(DwFa)3WAeG>As_3mqS@NxbteZu&Za_)EjxT_(=cEZ1nyz&YQV^nLvM?=M7c>zxHju-q7pb4hLWJ??_k<{%ZSOttbmW z>GR_IZZrD6%;2{U@Vj+i)yV_==ey}IJ9xP79ll={y#8pv!u3A!0LMGw_0P-@<Jt$G^b$Ny@kQTl@!q`&LI!_U}9t z>gj(>N8c+`9!?xQ;oxcgyAePO^0y+HKmg78ACp)w>_;{LKKUE^0R44e;)IucJdaG3M){_TY1X~M5ZQ;7ed zeRbMhbYG&mNFG`wU+ORTE8ic($9jxXU+Vq|>XENG%GXAE&qUuVlwdu~eI_T5n6Ko^ z&Ij~td7S=7(7!kjs=L?FTlz1OPmGtj|Bf>D7m~M=oG(;m?y_|Hv2o&n$8{|Mi&t_zvw>3Alt8$d^&$OqaQGy^b5}qEWg74LO=}uhUEvuV|LLW4f50; z^oPc8mHavT3HbL>o`OC&K0^KP?w{g*xbla%`&~xgVtndb$xG|ORyQ8-%Y471`FDl; zP#Aw%vbK-@(GmQkzX|>O1o3zG1C2jy;SaKX_2e4VSF^p~A2G3tMN3h>2=)E_@+Vl2 zcn9t?b<=;d{w(VUsIO>)X}?iF!!p~@Uu3>9>VI>;q73wfKJfWa_`T-hN%mdLHs{#? z_;J}^U+(ESiQhGz)`$MCT_1e^%6u)dKWg8C@^l0Bq1tObqIkN#SB&E48gI=S+G~!9 z@o_(6{siea-;{BGV(tX#GuM>CKMf(i4)`Yi^C818;;*_8Ul;r%M+pD8@87e}+ke@g z-VonLd&sx+mx+f-K4t%V$bT4*-*YhjcGSSbeUNG0KamYk|0e0Lz~3f5Eqg5b!C%eh zLy>+9`lUzysvQsem5Y_HoG-ca6VF{%g0Sds^`Y zlh4cAXY}7e`XBb?DfzRCUu(S1IR1q17Y5`XyYq_jk;5T>Hsk~66WBjuMZCY8jSpdd zia*);fj(XpSt`1#y&%o~h?O|B2{zq7L{A275FrxgNro7IK zw&PcKe;N3M_^jgVt%{FIUuu5leszdvNAcTp>R0p{0V^nHYhcUt|6dJ}IH zJpf<&&*is}{HzN8vG_gmN6mQh&x1Vn%RdkJMfvg2J`?}Mc*svSc?|Qv0{;yEtrj6z=zr0(U;MA}HD31na`?9){)qNQULC!uU%RC56+glF(BDPp z1tuSc@=*(ZZ-|EvvVYb-puf($Ogv`N=<^LhUSMzI^EL2CdpO?{{3F3%J;vwL-V*PR5U=RaJypFE-c zr0aj-c~GO|QS&$J9rm-DZ~Z&t@et1o``JPA=ZPIBFn-W?9YH=3&)|FRyzdnDqs8*t zA$fK28su{}`3Ze|rBC*3HI@VI{fJnBo>ADl-_(SB*a2Yk?efMxbE z_PWW$>ZyNf?0te8Z2!S#%*X6s9sc+p>EP4o8vKjt>28+s5BeSZ*{8LiecJk?xZmF` z|CaR{zo%yvezp4{_-j$V_Cey;dxZ7uWAaOLKWg!Ty+ZyBDy_#1%t zH2ZT*&L8dNA1J<|_3x8^VAh-XR!%ZrQ)$|xTsFbJWws3eG5E*Ezx<8*Tho=7L zNZ-pRr_l9s;)^o%hxozrBm5{&2Va4QF4>Ljf_z3WUKGq<4a`*$jt(!F)3D3D9#{ zvQqYpbE14hUxxcp8oxQSUtgBwCaCZABY4qyiSF;L4DxH>73Z_hiTM1s1^S2f z&aVI9rQnx7#i!I?^Xrb!VIXg!hbj%?BP1#W8zoNz99ZIO8c*Pllpf> z_ZKEP-*Ddm_1tf8{}%K?6o10{aKAxcCG0o4bsxd$7Z<{yXKTQ7TPy|eNNc*kV# zj(PiG>}NEd>|ML(ujoFK#_P!JuQTx{t#6di4fMnLyzJ!>uTPrg-@Et)<4KgKqrSdH z{(A?<*Lp?qB$Q43*3Pen>(eazXXK{^^XrlQlYQ6v&1ipM<6Ee2mi@BwhO)6=PM(bX z06zW2LHQrrAK3mF@0j)nqMzp5vdf?EX}qQ=K6RnL$aoO_5uMMWKj0O;x7H;8G3blt z;6I8U(ff%g!@mphB%K#?KY@#I*58Hvh5LU7KgF9O`1+pM=^y%wtAJn7Puct%h%X#u zJjeO}&|kV=CwPLtO846Wye`F$3_R%r?O!EdT2I~w0=|?d=y%3nqx%Z52kYez=sZ^R zisDlm@0j+dR(`2p9`pJI?UCBPCCripQFG64$d!@z$V^j_dr?#h(!WQofX+Z=-mW z{F^SFpN9V3il?f-_@_AjW#mQj4tg5-viOVtqx*W8FXCI_exByPD&lwL+b+7Fm)$R! z`vx(8n)`5)Ka7v~Vdi`T@f*p5jjusov->ID_o4q0;(^`!W?JmZAq&F*&q&)om9{Xy@Bus;Gl{iFLlYH#9GC%pdekMivhpH{_x z3_RY?qP&5g-X3=<-Xi-Uc-i|t=&$%otA~HADE~_o-vNHb`L00^$y11joK(Ea<)=pc zOZgyNe8$L=#ZU6IUiSec?`J0!KT_;L>&^K^`B3zJ1n=iqemPD37=4c*`aP-lc%I~Z zq))oT_Xm>q;`=!Jf_&(G*+?EluO}rB5j@F*)7OX}yd~^M7hpZp!2cKz-vhrbTfay0 zAb5yBxO^fZKJcLABfwvIeYXF8$=^P^UiiLvbyN>}j7Rdr_+qp6Z_R%H_GpN|0>2CI zyX==d?KkkjPx$_}?p`CGXpi|xeo{NWio;TC~QN>dqwf*^C@ewSQ zi5GG`_sf2T@uT}NHLOo%Z#2Hvdt;C{#9P4sAwDVoDwe;ElD~}{U;HsH`(pErVErDI zd<#FVe`KF9UTw1Hu|4P-?EOZ`pMl5y+Jlcjn5iF^{R!}QN?s!P;l7Q5Ke8YF_jvzr zNb+g%#rRJhd@6#E@phyrKgjmt@4IruPxQq6Ym@O^gZVoD;wb~K zw0z{j9Ool=rwMOpbO^<9iy!Qt;+s2dnfXV;{TAg@Z=gKO-xq$}CiY7C#(FM8yqfnt z&3?QE{g^JRWg`m@}#kY9jLAIrpv{uASa+)wk&)71C$uzb{%QNK#}T~@KI z@lJO0K8%U4l0FSXygy2sAwMhN*D79Dt1{u&b+Mi_GWgf%zE6#>Up6^|-<1zV@ZX^L z?;A`#?gN!*|D}8=%73zOq6c*gef`o&;kpFn} z8WnRSfXdgJGC$JZ#Ck%*4+#MNUzn`8nmuM)As_hOfBr5&+F-}S`YlYZ)%dFaeoO8a zU7SLP+?eva6w+(1U5b*MPwlR&S1|9vwN^d~>5>(sjr*QEpDs7FB7p!O<6X=4nx83O zW6J+pLi#P=dG*z~+jF_)1|HilG5GykN$xufa{Kq?uD%MOazDX}{P?2W{^{J+myX#o z&fjh!bLhw5o8N``V>~So#w(;(tzazA;I{<&e#w$N%SQikysP|pFG2oyU8?ylAwJ)r z{kr^1Bm?9=j{`F!BN zCA5$ErDz|~KVKNL<=-fO2L2M#`x{G&;K|S3x6WN3)UXT9l`!z zbkUEAj^(fUX>JbN58r70E%-Z2B|rxMeDeFowYCA74LHRMze?s-G&VpC~FnQB;1ssC=NPyuYaY zNKyIWqViZ#S-Z6ezuzmW-&Isji^|;1;m6N^dr>(lDi0Tx@6VL;$$gpiCqL(Uu=bX} zt4HZL;%5c^VgHuj1!>uU-+v3gBp}uMvD1iow>c>#RkL6G7_ex36;R5ve z*#+~<(k%ZM(gh{n9~JzpJQUJ}C07$1^_l9k@=-|VmiYaI);lXN3zK<2%(MSb$qy}< zUsir9l7AO|Xu|w;m|s?&h(GUE4Hy1{_@h26U#zDn3>VD)t~UAi+`n@?x4%O@_uh8? z7(XkIh4kW*0^9rfW#zMwUQ)8i)kFUm(#uMgx-#<(rdO4;X3E!;bcS+{_;HInT=;nj z_ooY!vT~Xe@dL^gNrmPIdB2GEr6O5S%K4zo{cLGP^3TE_e^7qE+T`DIq=%hfDd3Ag zh6}JSpnq-hQ>lh{{`@v)xbRC`|IfL94*iASC93~5@guxa`nRID@cEhW$Di`9p8I3b z+qUO^-_f@=`C0B~D7*0s>E$K0EE{_WdRY@67$^A>H$9h~< zs(1j`L-qeXNBX$=RU|(twGk4#KL3G%Lp|xq{gT#S{r^F^6kLDSb3Yl@=O?+J6!oV| zG+e;?fIe(b{jBw|^nZiOSbtlVyjMaVY+3wQ3He94BKarbgD#d{S7?0DCvW)gA4@qN zek{NIQ|_NoaQIdvOEi9<=YP}P`cVJ(rNl=+n(sg6{t<;xUuNZf%+mA62*AYkf9v?o z((~_ge;?{gtJ8Dm<*(8#3jW{e?xKTVNK5A3!1hL-ArF6>``geT{`P-8M~mj_t7&if zvmF0qAAdD(DSlPG`0*F>Hn{RR#_#j8k8^0BP_9hNf2j3leoK@W?t;Jk5%j+S`VQrc zeOLegJWG9@Xa6&-|I1+iRX^XzH|K}=S!FUbEB)HRcpBtm7xJIpVevy5{4n%i(R8>{ z>p!1m>X%`&{_~+R9@S_8#~X{;vez@LP3SB6|JW!e{+2RPXem?f*CEukn7R{%FGdrpQNG zQu1pQW)~ay70EBuAAchMVmPat^&HDVxj>rD2n*9d@zd9`yKEJT_)oGc^zhoKn z;rx`lPxHG7^ULQsA2&YWK@d@9zDbO?FexqNd_sL$*)Lrg^I?BKKH}NHw*$M~Q>7!vpqsG(0;wwx>VW$+v4FN02a zh<}P6955>9$-pe1y9n`L{LUZA&$U{A`a9x3>>u}yeg=fa58I!<6#VpOL&hT=6FE>ty@?<3aq_FclCn~RkI6q>oxWiFDbCl9=k+`A!G67j zAE=zoVf}?)d8xr~QuC`!Uw%RU9Q76IF`ut_dZApAyf{R7__6tguYN)NVd#hZ+l7}+ z`TrAt6_R-+vZq$xV*Ijr`~vK=!5{gL8ShRj%KiL7@7kp7#d!Qe`sMTB6hm*+Q$8$x zEk1KfwBD9q3d!6u4XyHFULr;t!=%w|^TmFFB zBYsKAmm~UNeXg06e|c`N<>$H=jC}oq@KL|?Wm87JY4tD7NBx1%#btgyh2KI4kM;uf zWhI8*SbxELqwE>-VM`wu($Ae=9Iamg{;g?`^}u-JBma9rhh5A+e-`IrNx73h`8S31 zE9ayA2HOAi3gvTU`o$#x1IO?JmIHb zJ^zkO{TI*QkSV|Y{ChLyub;m)Q~vgOh?mnB81I|sH@LFkfA9PzSJwDHI6oZ9@ZbI> z_-~SjWxtN-mk<1|{Ovwh@)_<<$Z^>80&y(_B$478}R=|Lk-)T>3-T1(d z{P!y+#)XXoWBlFtgh^wBxWZVr8!zZ-osK5|uMpjQFyUtQmP0pkr#73=daIr>@sQ*H5uybHfeEqx&0lDGLq z`X|!Y;NN0tW(a<0G}T zem%vnC4oMmXIOv87x1r0J~_nxR-SJ_*32r^DeJ=ZCmOe}De4#(JUhN&R zy#PNueQWq7sVMRN!4I%^bGMx!Z z{ha+yuCK`2>uawK?fL%1>JD%3xSsHDuLCulei$FQ^ioex+4nN%FG-#jCKVNSJ*__L zUKP)u^yc?Ck{9W-OXhiar{AIVF#fLOv9vZVD~st-k(^O~@w?XRPn|z2e_{E~H(ei( z2l}kie#!fj<(A*2ZwS94hL7*NUuf5Sq3=O|+{Zc-=uLZA8uX{?JN`7P2mRi0y&sSC zOWI~v6Q1Y)vRT>3bIv~B)MeJg`EPIQFlFN}E=;<*B7TQ_;JuPo0Hi)YP5-K+!_r&w zNBVwM^fmq}%U@L4!~^gi(933i)}Kgk>4@iFk$hGC(S`aH{_YpmU-BS+zVW6keLLLz zto+Zl{I*y8Uz@J(is2WM&KJ4?T>CYwe{J%XuSWC(eXo1rO{zEk^tbz$@sR~{eEZXIRghGK1V%EpllR|RK+inrQik|}?;_b z;^hbUEKIJy-mbs+dwk@&>tgs^-?syvUs2=pY;e{Jj5B?SX-ukj>Z}@BZ&NXYZ>-Y9q`FoTH z*{gS7pXHCY&5EA%htE-dKKM>UKPMmSZZc&D|2;Qn;lF$ByM>Qij~i}?=~YPAp8rr( zUz@)FE%EpZlXt!|D{pUoYj%BZy2;jidHXux4Kw}CNwq$1fyrdfD*5_9L)IUmqfT{E!}y$8V@V%8KU}lItD6TL1kWFRVf3?2puc zKIr$sn^iXSs7-GEdUpNRylmPVd0M{nee1ILzs0Tx^cCcPeB@1U^7J@Md-1Lp-Xr)% zUTf3-oBVvh54FiH-^h-)c2?_iZm;Y`A$g}Q8+$oE^5!@D^%DHvn=|s0yn9yk^zzxi zu0NWe-m@y;58mHhe~al4{K%i_y7RYZ+P~u+@puc9n{W2=X4mW6Xg^$O8M(;L%oVRG9o2HvFIAHM5d@p$Bib%GE75%^Uk-yY(4_>ue;(p%2o zje_j2#pjzSJA5jVZ>hiJoBA|eceAHI)~k@*?C53vhxdOwUJs6ci{QEOzd1zs__6xq zFH~>!2jJc020@V=kvaoO@AZ*<0CiT824Y8-2Q$~Z>~4qekob8jx0U4_Ir4eulKz# zo)5mye_=rI!C#usUAM*btxfOwaF#v;FPrwxzTbI!Tn~KuBYfaby!X8^KZ0Lx^YjD1 z6_Wnh^@d(H9`J#e&H9-A+VY)Swnp;-{noqoR$ttDYYdyzGD#2+8D>udB$ZTjIN`rQ7)M+D#DfA7ZZ_;=lv9Ut!v z7Q*<2xTv3*`E)5AoR~;ejlE_gZ2J>xjS50{IPHJ{TC_u zB;)C4;hHCZc&A@)t;fcV_eAjbjjp>$$pzG&_p|T0GqZl_o#%(5_RDwv!5?Pl`=J+l zRPXi=ANfeY7w=_Zy+{x1ug?d+-4pXuA?bP9^f&&&_{iVNE4_KkktD8H%xV9gzBdw+ra{%I6--ir1W$u%mg z4dA2xZ=hLn!ynLjEaHoWA98&6{$U~gtAfhhZ{U5y!oz=6V0+mg*~7xs+4x2A6%hMHqMe(e$=Tls-%?=*?{pD%R z&$IQL!+VvQZ{;FG55Y&g^Z#5Sd8hs#gsMm{Kc6~yXumL7w8-+aUC$rY`1WV>(qEUO zy*;l3e}C$QKTv<8zsE;5ZSwr~<4eIm%c^|&Yz@}`@*(zz{NcSl@>k8`AfJ2>=89kW z`G2DY^r^bS<1c=@;tG!+=v$jEzQWTJ`LCDntg6b=|B5RXV>D0yWX|OtzUcqy**|1G z{a?{@vFKf8=v}~h#T+v}=67zL;y1q+!CRhIiT<`d=r?DM#n1YupZb)aKhAS04|CDq z#W%-C{@=x(zNc}vpUk!K7o2~HKL1ZusONrs@h=1Z{9a~-k(Y7+#rlnpRF(VjKE4$6 zyJE4&U-VnNIL2@J&hjffy^{#PK#1z6+{-~;+D_Vfk4D$`PPAD!o+IRD0ZRfVT7 z#z(#GXZ`T!sMq>*<=+l)rA9sqwP|BXR0jX%MelOb8~D|xfAeQiJ=*_SE?dsc_2sh* z7LAWA$p`w7f9B5h^Z`D#Y1?O`_E^u)&VCp8V7;yWuf9C0$9yiIYv^U{8_v^z;o*Tk zh?mZ_^t1iH_O+;gp*meY%lPIG?f0g&>5DJM_2InS!cV{aQS^Th{mwx%&=d$%% zUN-u|`J-R?O1AzFUN-V*_Mf%spZ~e9KSO$a=}W$RZUN}~g)d~wpZsLD{HK4KEuT4) zEr0QgzAX4({i-hu{^viREx+_qw*2+4XUpICMz;LzZ~L;~f9qSmEcoC2X14qne~~SJ z?|a$u_rISl|KJC{EclDB@nz5-=jr))y^HS)jF0^BAA5QEPq44x|5#qeM?UizFOQ$V zePVlmPWlM)u{f zzL)^0Ukto|dwuX$7Q_45>x0))4DVlGAH0rYc>nVH;H@f#_tV!0Z*?)ee|~-Nt}ll7 z-(MfRw-m$sr`HGXZN>2Z+v|h(_F{Pd`1;`8R1EJQULU-77Q_3=Z-pm+$h~*I_afb& zOkP1h{QvB|33!&rl`i=4OZp{1yYV7yKoSCDyhwJO#7VTVX|*l9!~q=JSl%$)bjYU! zet~U}EpLev;w+AnI1V9B;w)|4)`}oY_vN}XnVxpKr>CcvnK;dG`}+25-M4Sw&dl5y z-S>T~zN-2@2!uF2H;MV52b)7xojT{#sq@zIRTc8<{qkhIFv$2ZX2(;Sk0QS170-n4 zh&Llc-CiENq&+h9$}28@qI^?f!GbV;^81_`#xJfXp}u81YHQtiMfD%byLd9l_u+GI zoJv28zy7Ci{5~>-^UWbu~jTG7B` z(KTLP;0eAzdCjC_{H^p7A77;pK6gywr{a0F|K11sV0?CNpfAST=g#VTYO|gX`W#C` zEAVS7l$AOAp}u81a2|F8lHB+zyB|7#e)zrK$Pn!7+LQJudug8Z(|!x;oA;Wblkxrn z|NVsQS6a&Pt?)+rF8B6Rd-Zxe!+o3h9wgb1HQzH~f7N_ngYme^U+nEAI`hr~6f(#&2qm<$k`jr3n6t z^QB4tEv2B(&H4IjQ2yfnIjoOD{jfQzi;HJ3#$W$j-_P!=#`%zom2US>@qKNv{LPNv z>*7C`|Csz7PtPr`#!vHM=%4WWOY%F)`T9A3s{Qn&eBsakJmgnf=zm@59IvB1_|2`t z@5daUWBhbN{e>UTviy%Zeg*&9Ldl=EtHl7{L#L} ze{1@W`U~3Y$N$#R;y=HL`Tv6Q;C&m6uZmrNz<31TXZ$#%M~3uyt{FePfqOoNWIjXV zd$&6D2ip4z*_-zIOW9NQg8s1AIiY>(5MP+TKCx$fh4S0-`2P4W|1!*9i}Im8>I#b% zh3UA@=86;@*NdOyU-+xPlK!r}{zCTt3%lM@i~2(TtdI7&%(ho8>I>6(KM(8E{XDW~ z(G@Hme$05G^f!t` z|7CrWpY15Bt>>8f32qXRn2G)AHE!Z1NYi=f4i^Racll z-^t7Nj2p#Y@~M4Rl%)BsT$#>aBKa3fpQ`HGLPJL0#o}kvX|MT?pX6`EE$cSk8GHRe z=X>NY)UQbTEp_^>TkJ+-@XvpllCBg)?b;}AKy=LJZAHg|Jxhull;^t6JHCJYOhM#)3o>D z7090SC*qOQSMr=M{ziWFzr!n2`~!bC{lC1(r6c|qs;biV4C1w^zr4iNUxNG#uk`jr z|FZr0D)~<{>}&AS>W}>AV}Z>2yV@`8p99EW>H7!T2mMp}S2+J)T;=pddJ^ByOYB=X zPx;St{&)WQVg9=KD%r=#XWG-H8~qlB{R#3^vi&NoKi1;@BhvFp+x&A=_AC0Hvj_C6 zg}%&h<%2#~UFGzbet+->F2D3K_}`-X7_Z8|AEq-NGhV)f_C4B+^cLyc;_Op$mD7j( zt$)5-?Lm8<5TA=GU3)VBJ7gd6mplefB#+UzXtC3m`~rVEN__)=H2MD^9sl1g{*uS| z-yfWx;`fesIQv-tOt;7Ulz$}tb+v7uy288P?aE7kgO}~npZ2_3_PW~HtLPohUXZ^o zj5kL9@)9Q>@oxTnw&yjbK8*ja5x;9Jzq&%@!LYp$e}wOee27o)_Vsc6myJK|vX7CM z@|0hi=4aZ&){pk8kUy+;?K?B$@~b^e{AqRawzoU`82u`X0{!X=6%{U>_A9hXzgFsJ z^ZW4x(&N>VH>tlC<-LCNhoW{z<2*XzUAY@?XgsufwX4szx3{;-%YKsIq|bPN;CR)H zC%R1gR@cQ{lE=`L|L9R?59mYr*nXXfzu56qpUO9*e4omTra#2xvhVfIzJb5XK3!c- ze$kz>SEuu@xvQQ2O7H7)`Heki()KU+c*gp1UXc0MI(}LI@9IkNkFS^flGpG*T7mKg zFN&bQiN{X=(BD;`8E^EcKKf^0U&tT!EBACW(oKI@YwZdD?xKB568jd)f8W_({I9>> z=?{Bk{U83)$MPPpEC0}ySN82Z)4wbIe(Cpqwug<+MUGzy^eMUB>&x+<=`Z(6-)58_ z9CY%?K1G!-Kh6ul|9+I7AD91kPG99Wcqe&}(%-WEXZG27n`Y{nNR-6*QG5Tf_dkvw)AQ51cvAXFetdrhfBIwJAILu&pNd{#e-}QUtiQ(9;^*c2vp);< zLHlTZXk7aG{#q;har{%O@`h&plarzTsrV)RtEYX5O(uaZe; zFW5JUPZv=>gYSRl?Z}B{XzDgd*SBLL8T)N~fs&(z5^vw7$o+o>%K4XtRD{=AD%qN_DsIRW@zSp6d zyPpaEP??S|^X57GvcC9Y;Y*(S7<*Nw{3p(U!0N`=kXm){^5L4^8M^*p?&M(pK3qh zr)saNGWH+ZTk*8tA)0ST{URjXD zhxo5&e+GN}HPa>kPk-8ipSMqWU0VLXQU1Si@)hBrgl%8QUt9RePr~xG*ngsa=O*?q zPSN{_6TVmy{EkuXH@^$f_DE&{I{L|B6dTrsae@gy;?fC!XC#3(z@&~_&^b*q6 zKYaYAywlT6{}ZO$@qp`}Z)EVz(7G>7^AAhs>tO({ZyNf&|8w+kNZ<6=)uSPO!%x!m zK$NDhn@(un4}$XvZa)X#Z`8!sy?!0-&HKQ9$o_TkI%j{-wS|KR|FheVVfwuP#ih$1 z5Bm8$zMn*YoVRTKQ=xqGE?NJH6n**nPp0VR^`A=7Z(IMF6#dTi&!p>$#K}zi0gy zQgqw;=TdaX`sY*hs`dL*^qTbtQuMm@FQn-1^mq3-pSsj>c97y_=5G75^Q8fk!biMz7KkR73ea4 ze}nJW&|i*oJ28m|_`d9Qj#p;iF!%Rxf6lch`YZ6d%+aV1`=>9_zmxq|#uugAcsDw% z-SH^80GUvKO(8#*?v~ugQ(buZ_4=ed(np6|iz52RMfgYF?-b|F{W{#QRQ>a?kqUXK zpYp%o?B|mIAitNddO46E_Y1u8dMA=3AI{T^4!^HheTVt+JtXsU{@~^Lz1KJU{E!FJ zxpMr2 z3(?Jg3ReSk%I?xp>=mYDDHU>~JpxJ?F3M|>C^?kS2kTmD-} zZ!Xql`AipmN3kAsB|XUZE9OS6_^bAhv0pVhd{43NS7JKa1L^N?!(Zp-@t;?lk&fwB z3;xb@)Q|M{wY&5Iq<0oYdu{z_AEe*X;nMdZ{qACwWqEv`HadJ;adb8QE`H2kp4$M@ z$Wt|Eboj1f`3BP)SzpDS8}Zk2$y1dZ9e!_dbd4=9{cbLnLd-Ay%J1#LUyb~<#~@4M z!!rC)dgW$(4iQxten`KtINDopC$h^M|4P6zT%!srVAo3^oCowa9iabrRd$z<|<^dn}M|9%jRdZV6iusO)y+(&GD2|TU z{A$mVW%OrLAN$97Q~`C&iU_geM`qYvf7_Cm4cr}WzT&V(PvL!-m*LVpR%SH6e-@5^6< z_-)HWU-*AB{oD7)ccTCJ@=bAN<)uiMKd3#h-CA$U4^qCWMWCWuwf}(HU%IIMA<8g5 z*C-F`tGbB&!}M3S4?YLjZ|g(*fZqk|A10mg3fnPHCF#K57<*Yx9<~RD_f3|++N-kK z`9Iz_T^f&Xp?ytz(7wyj|1Ce+uk~`5ANI%(U813b-e-A%{`+>|f#p9)d)2&~{_gE{ zHTr9c-@BOJ>f&1y@WPf?{91~5kjno~`n&SWAI2*#0X>dC5!RlLI1b>woqPdzqi=@(r-hl&rf?VME|w<-(dc?0iSGs$%pO1&)9U)b-qL_Am?7oXDsT9*`JJ!Euv zTe;&W|LS-L)06hX`>e}Z-n=(Q|60l6gym0vDSkWSgZSzFub!((cTgVq8{Shb_wvj^ z{(KYTjpW7tD&E6hN?PwlD?i3}o2@-SL;eQF6MWT%c*gfHZ(TxK?`JFjC1W51c`6ro zf)syzPq#eoTu9oyw@UxWZ*}?((%*{T#`q)o5&xIRy;qU$aq`z}b@5R0RMw$&5_^LG zDxJ^hlzg(sm5fK$9!T$NA>C{F<%e#HZUPwUuXdxN$G z^+})p>q&clYtJDqc~xKcJ4kntpX{;eUdC7PSNU77Bkjv?cspsszZv?sUQN2&mLDBP z|KDr%mp}I3!}#j!yY*VqUY|{GBdz|Z`r58?@mTV--pzOr)c+pRLHR35d;aY$q}!Z6 zZFjl;kN8ksXf4}|bUQzSy=E?Bdb`Qb_Pm0$_`$y1&z=K1+0R}cx92)Rdw<+C*U_@) zWQn7tPiJXBqrMHziyxQvVsuby~ zZ>0Yv>1gi@D6jaVzNK;R7TR+bf4JY9A6o0*=R3yuvh7^fpS1tdxTk{ns5ZcSYjk+i zOHtV)#vi3m@A;Hp_LViMjv+lAwRSxqJNq87EgnxeMR^J|oul4cj)xt~ms-u*rvm1Xi`PH7Q@29@2%kUr2P4QGE?{if9 zL;n2Gx`^@_|16?DH@Ws#`N@h&BvS^KZ-_sz`UCtse@9tgMH~B9C+TDRz;7a&;NKN5 zI9>%Fa((k6{M#V&Z@GbZA$`Taubcf%`hl*Gw`|)2S{y;=ho&ORD}HE?rSVJ~{abxh z_PW1I_LRN&eqzN|&X>1PU$xh*n|wO$y|$bE%i6QJCEjGxt^X{I`-`3avX8FgHTXJ+ zcNOF5Zu-A1kNM~pQ@<or>QxLLAQ~?NJZ^4BH3&zlZJ7PkSr>*d{Z8?X>NjU;JW=8Ge> zX*<3^{*HH(ws-)#^YXBKL;T?QgGkp;^{;wYh~LQnzST(d{5K4c_WZ}MA#L!G^Bc@3 z_FDbXp1`knGTo1_SKXrin8!aV-fp;_v>k6izVUNNk278Rta%4%k6)el(l-sifwKB| z;}*`BlJ;L7ueqA(30`2na1Z-~#v|~z>OyB3$IHq13jTIK+6$# zo7vaA{WiRZ`F;IUSFk=`e!Rq$7yqsmtly6BA@7_?1y;K>Be)%h2DtI zdrBQY*>6KL>+|(@Urhe0-_*B^^7{F~>f70$jQmSzujS0I`6c*aJQ$2`7=L=Wnr88Z z^W_aqj5wXLL7X~n1 zSp8nk2NL_VU_7jJ8bSWnSxA}Lm)INQVN>4XX+!*_$uA*YKgbV% zTR{6H_GpPG*ZKOYfTvRt95oD2k4iycpr@`x~3|=2O30_H(|9!G@N>fh4mRCv9Q`GuD@ z9xz^=3a_yq(pk1Qz-yEj{sr}&Azn`jPp$mW_lWQ?kjLY-+AoXGQ^HeUKE!L{&0*oA z=XWH7&ufLJzI=e!vfsK8k71uKkFWBdEIzKz;PqPJrN`fO!egzMnfCE`Ed30g+IWuo zzMH~J^dFDc2Y8=O7O&R{f9-l4{m0|4)|y4bx3y+V|o@2s8JAXm>iJGpYJmhPL zKREqC(E6dg!N0_Q(jN=tNqqwtKTLal8?m(&kM(-_tBM=qedGHqJA()9HxUnzNAk7A z<0ikAw;|p$vnR<9dGkXZetiM{(GY)m^2G2NGzW%ALl)u&E zC6U<7e^B3P@D}kZnEz(+RrD$FRs0WS@bMIQDtG0FkC;U9*@N-7^IpgS4 z;b+y{3|>P2lgw{(u%EqOaCv-4c&GYQ|C$glai78I=C?D#Ybzhx z2Y4#}-5x*H{@>O7Q}Ivw2J>6dGpYG&Q{0uon{MHy=9ea3{d{~?{Q;h0{R{XaeD?Bp z3qKQnsrjt%bw>DW@euk4^I6Gj@KSiB`V8J0e*FHXH)6as_`vzG!CO;5_t&y`9N?w+ zXXm3c9*ECmnsi=PQ+s~-xIzm z-uIbU$??U39OuIu7_XD~nw@`QepkcTp5S|Ze0YmuKcgt>N4($obMd&5@*MK>LyVt* z|C=~J^7VBD^JU@J{fzgAZM?>O>Q=^gKYyO|^IP0k)DZ6<+mCepAP?|1HJ@#WKRJQb zLYJPJ&%$2$p&37)Y~*@9*PE@q2d{vB6MjC5{(0hjH9eoq4;}LM1;2)P`_%SS{XHFo zcHyD$w6DYAAL0|_6aLbsurKPH5Z=mWqNjwncE0QIHo)r+H@}8{khdeiTdXIy^%EN@ z1NdWp+ul!m+w#EU)_%4(Wx{+H>C?Ku-_{5F5Pz+GpkIAF?&rg(5AD0fwJ+MEKAze{ z{8f8{#`r?>-*MNzGxxJ@wXf30Z>79bHa#^z2LIFHb;_T?5A(0odNlOWdQ7tZj`?tA zeS0jkzCDpz-!|*dR{sN9U)B8B&c{%nSU@29^k#~9jsqVzcJx?z|YUGl|O~= zl+UkME8XC=Ef4z!_`(!;C^$X8i887U5zvAhFdaMVq{SW#1D(Z9V&1U_! z1pC`Hiud;W5PTmHj7K>C+=GLqq_FEoLrtlH#?HZpQ za(F$R!rK(Ss=mV~!PCSZ9#5y~|Ee#Gr<1}{^*8aG)_nP}!`IW{>7?+~e@`|oJXL+- zcM3c`&iTkG@zm`97Quhq{CHaU>GcWl68-x`JPq&@{Rj3I9$S4uPYXY-yr5I~2|B<} z(_X^gpuF(Wmk;n%`zL1q!mQ`8{_Os3upeyrzlV71`J44=&p(T=(;2)>@8_oQ7V#&A zf0(bp9$J6)?U%({v)=6M@5RB)T6mk}Z;34)3D3BHon9Y4@q4mxzm@aN z$x9he6TF2y!qcREPF(Nq^YcG^-?EqeLJ=P%lWeQUn!$mpJ)yDn>nBL z`@_<&?IieYjGT&Dr{mj;vF`wQN z&ZiMSJl;wlvp?+T&!<~&{zdk0!~PxMtMti!Z*_|O+g}J@gZ*3aPvI@>car&Q3U7n` zTT@@S9(|JeYZh;V{ae+anoly`{`~#h<80qk?cWX{J=niB{KNSv(oeB}EB>kZF62qA zFM|&DZ^b`_kL3UJ_ix2Nz(die*uMq;^#1M1zPCEX{;k$mgZZc8N4S5>{m)bE-%7u5 z|F#+VQ}_rv*uPbMXRv=O{#pDD@Kp8*)}tl=DfVxb{}lVTs_z%szkSZ(?TL7Hiv3&E zf6Dz^)&JYJe>*fiL@eMB?PKsLv7gq<&v5_t)8n5u+$_GN=A*#l?EdW|Gx!?Q{9xY` z_iw*C`PC#H?eo^yzfJ7_R@uL``VOAv`zQ6kL;v#ox5eT7^z8mEzn8S%GXX!(?%#5~ z$$!s#cK>z_?2*jZ@Amz|MrEk7Xth{asT!+6Q2pvG5_-4BMVPY zwts8w{VUnO{qWR>Q}zEg?B9BSd~5FCTK%d+x@@6`?sTqM-zKsKI_)YxycIp z%=d3UJO0^(AMmsx{@V1{5*qe>^ZU1t&ODmpmzpoz{oDPfJ$_^MZ>_wIw9n+({oB2X zJ$_5}Z%e}Y@!9=b;;EevVt#yf|F#wO`0d)i#g5}eP^yvr_pP>n``FZDP+dRZC%;d6 zbNjbnpZI#hPk8#wp=T0W{7<)kyJKuel3)1y>#%=o{o^-g|JKTTcK_Diml5{wU&H;| z6yBcQzt#7Wc?1E(kIeVPpwI5#^83nP==`nh_v^TSixp3cw`ccnPj~)y=k(454}qU% z|2DDTFSCF9x$(~>{4Bn@?~TF##QodHXC6=T!=Fyvzx~GKHLq#jzIy{5x^~_Sp%X z?l3>$<1ey*Ywi6j*}pAJ6;k#8HtgSee|&51-&*~DBld4ku^(%`Pd@$qRQV9^PjR01 zr00o(^F|oI0w3<~LVvLL3ji-t=W9Wq(f7_Q@4qKD{Db=?`TcwLd*!k4{4CN_=W`)n z>O3vd)8}RJ{dIUB2hw}O`!lfrmA*d;=T}naX;brQ*ei9uXpr9<_vpM(@?JoGsLS6c zl|6qeeJ6BZhyQ*cJRijGy^rYpkj{H+{jb}fw=n*z`!&q{k^7K8I6sScnLZz+`>8VL zaeH+h*Vmt&?`FS;&YrI|=W%tPwDifICp!7}&c41*e;!xzrq35O#KV)rN&FT6?EY??f3h);MWwl`uj6LoAb9o9JgMbJ%2l4?k?bYS)Av=dFqusE28hWRDbq7QTjY? zL;U2-lZm`)uO5GXdXVSA%zYcW-xB`Q688o7H8$hCQgB{K^U1ZD^R>Z!8cGlE3*q_P zCk{W6s=wEtzs3B6`@0>9J}SR1bKk}1$3LHxhrSK*H>bau(6HaqxN9x@zd7GpHHYin ztxT7_<|2LkCU<@n@rmb!JiQO}bl%fU@2hY$`z+Q!RlW|@>HH4l z!}-zqr0w|{);Etdd7Aq##&004^ReK6;(6S@wH%L_^TIq2+q1UE(LA3!y_Wk|O2_#+ zoDb@s08Jb4{tK-qY`5~lzBq5B`!C1?={WDxr~5IiJotXT$KQ7WduGq$fd5wV?rRfja%qo3z{t$pBs!TDP7PtMoc`)5(!oX=H% z7QUGCwt8PgwE5o2p0`7L;XaSOR{uus|75>^3eMZAzBh5+R`s9aysgnk?{64<;(d;j zdVj;7F9kiV_c!c$KG19Q{)YDB;2(V7A}WP_&G}pO$5ncNL+AO?U#sz6=w6==eJAxE zhxiLWv+rF@>wON@C;8UseGa?-M|<7fj`m6LG<9D3INN7Z?{x(7>%9&yzj?1i{KVh9 z*WvFE>72V3{FD2ddER;kv_Eg1eZQkU=ku%nX2uJDUUtnDq;36>uj5YkFMIzT?74ac zX(ikJ67UrMwAVHpOdJy7{Qm z+iuo;34~z16pP>`6 zaKA19IyQjv!TrdnAM*M4CvaX$@tp6OTD(o&uOoSa{ZhnF*t3rI@&4U=F6rccY{d7} zeNnid(a2-(A4d7}X+M=mf8_X!{%-Uw2LHZVru*^A^a9!|$&dFe!uKhFr{5Zb^yVjf z_g68$e{X3#TFq4Y*C6q7*TgQ;{K;Np!TTGu&xAj}3w{mpN2fk&a;yD#-k1E%_u>P< zt0~`JxDPV*{({ca_T9wx57jx6J!G%zcj*k8t0zx$luO zvOho`|2~B3o9?Fn8~yeny}y@O&OVR)cn=TvcWk%%9HakK2k+q#AI(|YS<~M@U+CY9 zH2w8*j$f3H`j*F+>%F^blOOopw@tbdbs^vK_!_;hcDYRl-uLo6t@iwJKMB(Hp4v4o zeX{om(xtEXU-NcwicIcv$M=Irxtb=W^~oevL1p_Yp6> zJ_FZxfE;l8tq}gqC9V1|7JihObhLl#J6Yb>w^?{|rz>BocwOq~3-$hNP~UZ(NqyqK zLU^>o@oy5oTy+h|6C$G=prrt_uNDN_qy`Yd+0yDzIx$ViA!HBylXHt_;p;x@5zT@<#bA=ZRUH-f7 zBLBNB-4sWcf(-n5k??kruTS`)`o#aT%UE9ZDL&3+afhFHpH=wl>#r5Qoa^elYw#{) z_x)#)@LBaC9=F6%4zVqGpJ}o1NcE$>mN;k986ZG6#g|=jS;9~9+!c|(`V;y`Q(SUm zNs=!4tAtnPy;7E6bl##Q9rkL97uPIKXz{yH&pR7DBfqN3sw5rxm&Ro`fei4bxY*IC zZ)u#T<~IHle@i3EWBNPs%RI+x;yLr*m6Ls#NB0HJ&C$X(9rLksa_1y8-pg)@ONzX` zh>wdR>XYcdG`=u*VUi#7HH@dX@VQb-(hfHChD(`%eJZRs8jL2KCalp_j?j~ zm&T=>j+iz+z7O`uNnd&4QQp^NvDw4k6E0%2P(6WxtC1bNFk8qvzjB`^|TB$wrV-iKQFj-P61I z5B!0DL;SIsj~Pn*8saaGe=$XWd-B^U`hn61QuI?5Po?PR=0BIv;{TnJ?<6$*yZgx~ z`un}J_&rh-{T=bE=ueA~KFbD0`US&DW!h%NrnmBq{`T5>G?i;C&bN`7YG+%^2 zRL8~tF-@2MgQMYJ%XR?IHbv3@Xzo`-{(1kwrK^0|KRO!nEZc$p<@2My3tpqWXMg$+ zdfy)P|5G}Dd3id2-K^w2zDM?je6P`$XMg&SdjCBm5BOL9pN=2ew>mDFrT@$xN3WAS zc>mkW1Nrk_9`w(Vp$jfhXSp9<0DrHJ7ra)Ust=yy%Okz~?_GUpuj;te%d7e-E7SSU zdu^WhL4VbU_l2nt>pO;L#^Q5l_5PKUH*1f1|A(tj_Rjrpjz)bWLydXIudxXH&Yxv} znx*|ts(-E3FOg@#0#|;J`c%J0*Ps3AKS|yb?Opzw-j`&1NdI%J{HDHEdyEX> z;kCs6(szE+esheyvi`pK?_7PdfBnCAH2TNL5ZWunZ{ZtZ`m!C17YF_T|GVhl1?gx% z_)Ac}w($Me<^MmxeaC9Q`uebZT_H;K|B)g1cTm1MF0<{Y{!+Yb$HIj{dDuVa{U7$L zEkx1J5M921EUE9Ji_-b$+V(?#Qu`Do_OkTi*BC$5ztx`guhol2{h}AXwotV3r;#DF zkCT`FdeLhaDgB?VKNbHiNbsA5{!3tAw1>+-2l?~=)};eKs^cZIOPJsJdp7>CngIKZ459s!`nQlqd!%UCH$}sKDH`(dLT2`Nl}CLE z4gaev%>8G@E5>ugXSB!MpQ1fpW_y4}ypI$=nU3{|T;V=FjV)08qpIkMp{VGB^*|JM z+BXJ7FXj7-qW6hz_N4D}U|!XH#_b`cI|ka^8Oy-VSVvh~lW=-m1PDSGkx7gBWn`md+xh3j8T(HC)j#@BbScs&p^p!4fra`fr& zv93^d-yE1ucnbfnE0oT%`R+Rp|BCjnE0oOA{-V(zn+nnEt3a0-JX}y)C_7$F`e$e_ zl&^{BzRvN+Eb&(SqM-fAuei*&C*$GVmlPlA@2Ib~P*S3F_J5Sed=lL7y8wSse@!7j zw|W%(t4(@cVP0xJi}kDGi2lG%h4D4|i>5;APm-_dWhWov*XZ#3&0vxI2P+}}Ij^{M z$Ws$ny{!1k`cVJq@cWEynICw`{2K3Cd1?yPRZc$TzXgw7Bd_E~{=(LCTsq{bF5Gt? zo6hui@<;TmPx8|~TT8Yk>5!+q5Z%Y*?VJC;$jGyyINEOYUBU8q;!+Z58vOt z%d|D?Yb3vlJ2`;W`{J*1z3IJJJhA1a@6Bd`N%Ap&`Mo_zHucj!gN!uBW`j(x+>G!T zRq$V5Wjdng-g={>(yQ*c6-j#kUFkRG`5vTfuJnp~dO;d_XutJQG-}Jse&u)fA>HtA zMml=Kew)69`VU0W6PAX5LY~_@k-tjv3?Lni_kvA_KO+6MRY*7T>_htXQS_8eKgRTm zyZVtXdGLNQ#&acfkEDO#J>YqM{YLt~ceUe3doGKj7cD>OS99~4B>fosOXcsm{saFW z9lkD#KI!u}#T6BU$Zyt5P5w&Kw*QO{H%8HSeE#KesbBvi|3Y=8>p!45U#mcQGhfT0 zzH6iCGroLNTvKx+l9T$XP|Q4Pu`^VQK|1a>9$7|k$rW0d*xh1YJ?`xBWeMX1j=tpe+Mz&|kGWxTrkL`J0dD>q~ zuVc|6PzcfAHz=LVpR%*VcC;-O3OC*B~C-^3WIl-%S5D{?GP!C;E>qKgjiw z%F0WTE`LyaAbOXF<*OEfip=^8*DGp_E(_`rUy8x+9q3P%pX#f+i2cL#N48H1;&;N2 z`c_@Q{$bJ?uh2X8+wy1+tk+bXhjc3s+T&uxZ(Dv)`ULCa1K2MZ-$MJE_Mm;2qyH!T zSYNAOABTMTp-cRF#tV!mZ-?(${<3$C*3W(XLa_a0il1NamAwEiD{T1{DMF1S$T?-?@$-#a(_&S$(( z`v8Bi|6WUamE+fY1>;x1?=sSU|1yfUG2QS(`^ z?Pp@VYTH}=d)>R3?%xm0OLe0k{blX@x{xk;B!B+^Y0rPtHKf(vlCSHXq}S!~AL&g2=a81Xs;~PUq`SyZ_SmHFRm5NQ^WY*SA66rx^WKDXvx=E8qknugT7y}@`LWUll{%tzlrE$+DGNLT};~RH@2K~ z(mzLsSG^QP4+rCq_RZ{XidSgQCcKYb30n9ox-<2C3+9vl`q4E7g6Z3DQye~l>dU`ZIF!OWt?|$=^F~=|Rw`~o~KkeFc%@Wt2<=^eMu|HaS zga7J!)@S22*rP5j)jnDxnC;1BesbPHXRk)S&oEKN z`s7c_zcu_G2lkrZLHslJBEN3K&(2TqKKK^muTO7n^Y!t)veoUxr}_B9@gv^9G3mB^ ze&|+jfA}}*yUDfBQSR5RUcHTF*{jrko!$7GsZaFk`>F5hGWaQ4o&1NR?0>=cRVc6Z46a9F+7=z7d|PfHUPvF5$M;2*6QJd9 zs(-%6tHG*VeY|Dc7NmRm`?@*4kiAU(TRH#TLivwU-o7^aBlFN+`Jr|Gd#VGO?~zbn zOML4l+1uC?-@o=MwD|VeWYVqwG{nDC@jK+rpUQ9P^6ka<;|@m7{>Pe8|AhZOsge5k zwo`Z6^H^1`CBEO3H}xZZrfm%A?BmhV0ni7_X)g`>pl?0mDaVhphwN2h;xF-iko>3p z_ejVuyxnZ=5C5o-4{k97$WH4IJw3EnFYSl?`Js8yJp5JTk4D;ax{d8K&41JWZCeNb zD*GTm` z^T%8#k_>+Hd)(kX1I4HIYM;*db&B^4jxs&G`t$>h@wML9OYj@{ z-^ci5$2%y$!N0F7{^QyAb1}ZM_JBXs#~U{ZpKbpKp1qU&lJWM^c%#0r-Dukn_1~iY zoJS_6g_3}0RGAEmx&+J zU*oaPGLEnPc&)09>Ba(a?Klb|Z9{d6Rr1M6azaSpB#2YsHc+K~Ag7ZSi--7Y5(&+>$ zAHG*ae=zSK`1;4g_l;=Z%=<;z^F-aL_lr{ZIja4Sr0#n(`1vV=pNMbE<8hroQvHyR z<6DlGlJPR)`-U*SBYx>U-y^2Kvi$k&$ezfL_^09H}g!=Rzk*yEkX9nW~`Ik9AG)?)WPjJ>k97T%o_$~UOOszp(jgD* zr?+H-ctr0HO%tzFpLtK$pEnBeo9jRSviObhzsF~O-yoaknCgj(C?cT6|r}6nj zJf099PniA;{f?Z$`?v$>|G|4hk~hF(wCBn2cW(-R-^6`Y&=>X+o?7`SkMPgNC+KrJ ze4Y?~`tku@WB!r6XW;o|-@7;Ge|`BZK4;JG2Ja0?{@}eK*(;0J!TDgNuS=cRP2sQ7 zgZGBS|8NQ~(SJOCANWu!vv~WCRdGv{qj``!@tCqCow7Vo+H_veKtr+aVc;3kK^ zs{hC(M-ZwKe8T#x@YJvO2Jh1!n@fE2@6#V=e@UO;g}%a5GoImirL70C-mXvZJgE5| zR(NjlkM#?W@V*@MIgjIOJKx5BX^$yy$2*9(8yS0rkC1LtfrjrMaE;kB0cmlV48KAurAoYHliidQWdA@AwP<+Wh;uvfq)&*$?v**yjf7 z6X0VH@lN~@f55+->4#XS!PEJqiDAGm;OjvwAo=+*@VI9Rw2`M7?RU7R)zLi9+t$Oi z48x!DPmFW^YwItrk6X71D>)vL{fW1U{Uz@>=kBZn@__&JcnAJUosE6X`Q29HDeRM) z|H7W9!B52NQ_O#bFRA%2_yzM{@z1`;cRKu>Imvw2>WlGRc7B_}Pg9@p)4sP2`DcWm zGY(HrHJ`1Ti})ShUxD(e`KoyjH;49e@8M?O*9+#a7%!eUUrpUt0exmPf3@;~&c3&I z3cQrQGn%jZ@&R6IJT*Q}|2`~#7y$p&dwkF@i=Q*XYw;8R)8S_d55aFr_hEQ>0(?DA ze+%$b{JTT^MES$If5ON6U_PtzGpYA(F~7>-O}Fm5Nai!C`SAh1M<3j$q56aQEWS5g z9)DN(?B(y){4(K}n$I5N`tXeAvlb5_e->YZ_xV(x!CS+R-{15G^E>V*uhRV&rhe{^ z1@l+wAK<0vEWXa9@EH7VW<2ow6P>B~C;a{A&sX6;D6jdYU#|-8!;n5R!e_~=_#NK= zFaUdZ`}-~wZ_oI>A>j2h0bWn7R6OPWkMuY9SEzo-13b#$ar*uW?w2T55ndozuKVQXq3GjcD@XN+?>|dDqw!`N`df(iie;Lzz zkc=cg?_-p zjsS159^BSXY^1rtA9&fW`!H;I;Bl+&%OED3^Iy~b^cP#7o$q>oJn_D&u`RBB0p81=0lpi1YCaqA6JC3JrSKj0 z4&J*LKZDn{JoE|h9s4zz`=~&t=G&lC_fdg=3a^o#!gr*b_v`ij2joxTrQ}K7cg6ZL z>(c?gqkn>5=Dqp}kKf>*!qY+G^T8CJr|?_%Wn{+#W`6DM8LkHtUk{qSHO70yBiQeD z_Aj%aJ^(s+uUGm7>%qtOF@NTMs?)tUG@)*qnXiTG{qrxO0FzBK;Ao?8F*>lY{B zxA0bYEdBu=i=P=EB=%^CKQ#Fv=&PU7v-eeXW#-SPeQyYO{H(!a^#9a-RKoZ4dUaEr zzK<$dueRU&z&@>-@3y-55X^_guQ!!8{((OpAOQwKkU|v z8}q=Uo>pRyneR1&-&dx;666OS`T4N$ZQRdiF`qE_Z0$ez3HbMvAI}`qd@wWLo%Zux z$P50uFGF|-{eg#CFBaZveLJ|{YLNU6opk*;!9$EET8Y=vN9Uy{TOIx$*L_v3!Tgr{ zv3@-n_-odWtv=|Vz+bH|Tl~j(sePMd<#-A5V?TL|=C+mwzpbo4d9NPx=lkg&+7E_) zDg4BGz-i{YsDHA9ct43hcyA2z@2O3i>%02KwO%d#F`mQx{#NGo>(jw~R*)C-VUMqh zhvq&jkFSSLg0D&YdVJOXiS)_hYjB^H_?!Ez4!QnxI((fJzWVRWPH~@=(dS-%yI}X1 zVb4?ItC=qs!9U!5`Pcsap>Tf~`epZfv-`o5+Q0SoGwRQ}fpZKYjTCKPCUE@iMhv3;U$zud-LGpFhK1X8-mJ zZhp%9q8OiK55?0o9wzuFypufB+OJLWJG|2VEBCJhJd`}?^=gNIcK(>UA4~F13tyA= zN$t;Cd{ulS-r@WD)cUmK3+B(@hxwSl?+SE7{P4uX&{se43+~U-_~4MA|6+Y5b>9^7 zXYd#N4vZa0_@VxW_)}BZJu^S?@ALb;Dj(uA^T!9{B){a%zBhDGdyNLK_&w^l$7ihP zV7{2w_<}r8e`>!L=Z}C-6)xTI_joG#4h8Gq$$GirYYJcA#QyDZwokBstNK&(NygijF0^0r zz3_?i)l=->9v=XIgO8e@82*=WeC+wXiTzuRe}es6@lW9+>d(%9&tU&n{Db{l@c;jH z|MocBC%{+f_bc4L1^?9kt@vm0H^5WL6Rbxo{++@8t?CQ*Z&lwfvVZ%W!`nBtf2;a~ z^_r(3% zuTFk7Nf*Dj!v1Yyf8py}VE@+Yi}eJ=uhjR+zz_dDvijfDzx@7faX246yMIgk_2>D{ z?%#6$=J!j_?%%F~J?!^Hh~K}={_XPtUZ35+b?d>}zkT803jzL}xPSYZvCjnQzu5k* zwfC=N|MtTZA5PW(+pvG@{qe22e{1!}{2uuGo4d@yMGHK{8sGWeq{0^ zLHxz~zh8gGd?~wLjrBCGCnx*E+4XC)UcLXi|v&}gEs=98_d@1x%Q{_UePk0$(O zzwG|)XU9Jqq@RBO_G{B$3-YJt!&ol@UY}(DcE7RzZ_WO#)u-|7{;gRrPTJSwtM*?s zzx@r|zby&p%V+m*_5Fs~U&r{#d@p6^&xpst_r+$tEjZtEcKJ=Cws{w;PKFG3JU z{Cex{-##|+7*y8}{>tx*wb#h~V9XD&zJ7-Lw_hLox@E`x(}wt&sb>;e{7<)kyW`-F zBtP((c-jg&*{{WZ=YNI$Tk9XcG5fbxUbNrY{af6>w>RwH!TPiCI9Pwy{@#Cu{o542 zp54E7_^S3fyMN2?v&?xYe(!D8qy6_y!TDRn%ioOsTda6mygj>rd%E+tJEwOhcxc9x zIG>Z)@0Z!X{oMHH5`Gq6x!)mt1^*Vj|AxQs*8v&O4e{eMk0<%jA5YxB{l?@sl63KV zE9~DU_J6DF-&%bKe@*spG57M{6QA9`J-dJF-p|E+GWb3U@hHK|?{dD5_?3KbeD?fp zz3vmh`DLva+w;z_pZVT6xj)XV7h^`}@cQijZF>Lq#e**f_;=#|?XzPz&0&7R$Kbvw z_~XgX-&%YBO7?FH6NOa$zYY7h-XGtZ`?pqq%$ z5Bl@9C%tbYIG?NdADqvXJlXG?Q|E1ef$yD9c^((#59&S)dma;X>ic8Rsq?vL&(wKZ zq^Hlz;`{46xxZ__PeOW6cz;HE{TcBFc(|G8@9g*0%&+sf{=UX;f8JK>b6x)as6jkU zGQ8HWUuVzX%ARAoufyuc`uzD?eeZ3~|Csj&cpkUgpSNhF{~po#BAo}9yuo=O?cbho zo;GtHw^#RN`1-ToE2qv2p+0l|R__<6zTo_j^f`m`x2C-Ad-C6}XV2dbPYx&XSNya4 zw|$xOxBY(q7W|vyR)2p6XoJT<9OAM1zxiHT=fTu|W5Ipkb5Z`_N}bQ-d0Ew;K2L=G zWStMvecI>`sq?zx*W=Gm5Ar-%a2^QhEpcDw{OuEmo=Egn`r6d~E#~_*TwhMUC&T^Q z=DrFp`r!S{hWN>uCxi05ALV^R?qQke@v- z3;hnyC#^Mn@ta=Dc%l5d4|%Mg_ft?O-hZL*!M9uaU|;ChKY=94cbxZ)P4@Hr59>7V z`St|&JMuj4#1@{H_4iwhZ6*JnGW(NX}T{w9|ZnWn{;3$3KKb3zI=Wk7U-EZOdi%-0-ivDWG=liIS-scGF*ZUmyydTon=zR{w zC-fJ-f58Ww?fe<%3s>oV4u2nWS=nBnPW|*=hm9||&no*K#`N3Vc}Lk}jo$C@@vu|x zclh(dlX|}+kXP?_czMnH9lpGIza#mc1@o26dmZgXYrQ|={;tls0ZsXvJCN?{TXO|z zTOZOp?qq+_dkvC*x+GnG^$Mn|e)wNg+~(iUfISh9{refXPYCm;&Fovc|5NRG=wg=l z^{rmUbm6z^J6xKsuj3B(fBSv};>lWbmz(0BIgiWo_Ix+%yPbX0)W`MVjs}+Z^|jx| z{_pi`Yh=3Wx94$vdEVF2T2I=XPj4oFy=SlT&>#F4kzZ>b|B*e`taRT8OP>zCUvKqC z{x-cwZ_9&!hu)j_>4%roKFNAE@AD@=#p7dhVDHs8YJJk(_jF__^;dq>cjA3F-Akxn zG9GA(*ZB7&aG#apG2a)p^I43C7E<5jK91D+S>a1}Ct{~v4;>)>Trz|F!Y}DNT}OK) z{)_mYxeqGXPX!*}J*IP+KN){vzxjN|T9pTW;J!vvpM8&DdE8ga^klr!5Px*yqoDPJ zeEFfS;5=*z)@#3Y5Zbx)mbf>3uLAvjdI9$ne0>Ll_chqQ{Z&j?JcND?@vgC5mL2cY z;Cb2Ar0I{xbpJ;UV{vl-1@W2X4LtxnS=%lD#=pT|aDKM$CfZwgB)pvP?cK=puKmIq zrK5hH$94J9pMZZA0S)=SFon~Z=4bjN*2iH1jgPK}yodb#A;;zu-*mqtZ3=n7Z%X$| zQD%cLlieDhkkJZ_+;1+HP5(oG%ISU5ob8Xx;{msT-KOSKDf$KVvE`AvA z^E|Nprwson{sY(YJ}ITEeTb)4U(7F{kKRX3>W4hx+z=l?->LX7evq%Okei(Y{$+e081(YEEQ1HF?_xYs{8N3U znfQH;-mkly^~1mMzHiRIH_G;1Av~FDzywDHG2Q<8b_}XzN~O`Qxo%F?C9)!cwLI8p8p-fpUp1+z4vyay!W?j-cH)rS0X&| z^)(28noN1<+i^AXE8a`~C5q4fe#hH|Uw0^fGwgBCJ@l7*UH#X*jkK)~{OW~IB`$sO zV)nHL(&FE774v(1S*ZBF#NyYhG6O@F(`(brr_+Sj*8cvtWEFIK!??DBWC zFu$+wT*dc=CY|*OKW%-W@4Acrd$%ip&K0CppX6U8{9NSH7YiS3eJFp~Wz3({*Ay3D zS`0dgzsuuV;l;VG{u1G@>IeU(_^!dblKk-R{LtKpv+|rI{W$%9k?=Z@NBEKG z-xObV$z@4?@N0>SbBJyBzGA-DR3$vod!wrFu88%kKFnvD;*uLnQsr}|JR24Ho8m?1 zElScQ|Kgg(2@U!1zG!7tLW}=75#<+u;O$ae1|j?K-xTl5Zc5Yne3~wf^F);vIFWe0^N8h3^GvzNz|*d}?#qZ~mtFNjmDQk4rWfeL7Ws zXzT%=ka@FLI3w8u`oP=udwaf89Qa_tpQx@Y_HB|2ckjN%`f-g!g3Y z_+C4Ijrb#)*1>NX{%m2ov2N4=8vU&%&POaU+k*9`A1;Z?cfl1l+xnniO&sM|V)h!O z|5Y^n@gx{EK-{{Pw~BR7Cq%7m7`PHszU~ zGwJ_9@5wjq0@5RYWbcp56>R*Y6QDhiU-!<-KHvws$dvz&D!*(8@cjLFPu-SR{hL|; z&x)cyu8JP}bd-B=FL?a>>L_|+PW0F#QSJjE9sSiP_i;XWl%$VExi9en2GW@CT-VFY z{26=XcEMVdm-0!!(mY*H_JO>0g_4pSX&dh$PpPpt1x6yIo{ zA1#Se`urI3LtedqmdFQv9@>iv5*qSY1?d|y68`Op&1zQ2roy6-lz7v$TUk?)fk`Szcod<)*Be7X-ZkZ&X- z-_sfSzH)~0UGOI5Lr6}w@534SK9!O0z!}QNsbSK8ewp?i%E8Tme+k?)&lDBm@2Qa-J>1@e6~Bi|P?@_p-+@|9-rH*fB@3;d7cVKd$e$7^Q% za5DVWkTQ_(V;T9rn33<>r<5Xp2lYLbsqeX@K8~N>1!eRzv(N0L$X6SchXnHq(uDoV?0nO2Am`-DcG)I3S4ZEgj%{Bvm^_g^ze(-bk zpO>L8$j}QjG|?YFSN^ID&FF%kOK;53L_hpoIwwjYP4w|}E?${xfBM_rUbMaSkGf&Y zpKP!mlG{}jX#(_f{3XZWa3}uQ^t$0oLEuL=C|_MDDv~?1Kb^$C>I%{966RlE{I719 zXoOz_{$T!=JHcPm{#aw{pIx!f@;@{GWc`{k+WJchS${p9zn!kV-bDKVk8|8uLfueW5Z(5B2%0 zb8b9}`7ZM3$bWk^;)&}2;AJ0V{=bL4vA$6ne?a{3PjfgwCV%$8?bVq7f=V%_2*ix2f=@gH4^@%@jcQHEON%b(s)xER}~q=LVLi!OXItW zEMnRAxF@;?g}uGckv_gX?pEmc>32vU6p=q;eP3&-KK)$jz>(cf2ZcXQ3HQS;5u$s}YJDq>s{VqT3 zf%>*MTKQM^`uw!-GogOP)$ylN@-N%5HX~2_)2pT5KgnJrLw%hQyAbs|M*TjQ)h8q0 zr@j1=uVZ$N(Vyc1l>g|{YsEjY_nP~h{Mi43KKBMR@;_$f|9S2AvDtNozipp&_oT}| zZskqv*_x5J`|fo9QL8`XlRdNc>AfqRe{V**+4p^XJ)T-JPzy+T+UGU4K*gg7=S;>brZkTlR(hl)rnkg*xJkJH!^f3#W()gScLLBy?rH5SASZbHNC$}`G0EK zb7W{$!TIxG4a$GS+7tT8KCy34$X^q;^nQosxr=+OIT{)2+~LX}$f10zwLkg`^5+WQ zie9FC$WFQ@?!AIrCbQKhzE;OWnf69J+7LzGijWTZ5nrvn_slW!421F*Hx;^D$Unia zns{Bvzqlq|>*YoL)p5@nwV#c@BSWpNUVirHCz@SpoMt|Bv@)&zS-mZ1tzKs8C9}MfOj{Ca}f3&~!Ik0Ac z{2ZP<_`$%R%4*^PZx7hBDQ>wgNQb;nS$+Q>>Q~lO_)1qOZ*}~D)&KuW^zRSlf&Se_ zUf==vj|}yHA#Kku`Sy~1K0n~(SN^V#hWTsaeOEjf*rz)FY>UbN|5|;&vhFLPzJ>1Y zP~MTDb&sX_Js-9|?D5=ylUMRQIjjD79R8*De#FukfXKcdp9PEouVy(uM0rBClOVg1$d_02(iM?Bx}`!DLRi9gw5+neJ_*l+DW`1^bM||63HYzs>(lXmTj7h(JNse(ab&2wJxs5OcU|##q95k7XrFz7 zyk#RpEf4wp?EfPVn)={R$Cs2>$GdmA`lVmbr+oeh{0a}+_Q-Mnb7ZLF!|C+4T|s@Y z|Bex7f9O9l)E@i%Iq)04Lj8gLN&KFADr)ieShnNCUvlM-aXhf+aVPH&n?Zl^Bm5q~ z^{2u|3eG;Luc96*D(E8gR z>u(S3as1IgtK*M-jQd#$zmcI&KH>Fa{Mx-+<0~5vmhFf?ACyOW+pueoqm=KN<`0XX z`ZxOj8Psy}l)D0!Y6a`uuvzGBnOcx7bhBOgU^%b)u0ZH~#$;2GrKw=XS!;c1hej0fVj zP=2)k9{IP!gMsV4J>}2dUTDu{g^zxS-D`*NX-Rc;{Q220v;N~yQ~v$g{Z9WE@YzLS z$ESUM_V>rVz2Kklmk+1qee_Yq6DQAyA9nl@h^pg#wm!rw$@75Z*(G`CzmHja2!G)( z&s+U1eia^8{)deG=s$6Q-|UY;`=C9R6?RE}@t1#R{o_-(VcPp+s(+$?jSRK<`2Ka; z;|bM2YVaNQ``oPh+i~OXBSRm0*!AZZa>zfb`jsE@j0}C$$F~=%k^Yd;cD5_IqTfYj4Ce^v|$;i${h&9>ib9lih*8GT!gK8Sy8p9goR``5!y z?~r{AzK#ri;S0V!^T1$to+G%W6w@V;^GhFO^r`zFYY&~e@osk z797799)r9O2J*7K9-sY`(a-juPdwq;>+6k3Kd@8d0oNZsx7X`ajr5%vdw<#TOZww; zkNNz<8*iWE`_#TpUd5Y-tUZ$cGwk_8pQgf-9uLr7)$uNCpJaTPZoeA%L%Kblf8N>S z7~{*MvyT}4wZ2pxKVoU)zlg^VhV9FE=ln(Em4f##$^YceC)4dS9QxCV?enaUFX*3W z58pr3exDi*?RTQRADopx9EU%l{+f8i>nnQL`-9@$BO_^jM#BDw{{7_uKk6aRS1f<5eteSUvhpFIiQ+WE!qWV|PTY$|;F0WUB8HR-R3 zemz{Qeh4JuF z$}>Ex_U8Ch_TFX3Q&rfHU_5xxjHlgvYsBV9yp_DWJwM6wRo`C~FJAQirujh_Z|MI? zd`QLzY5%W|pPW^^wd*}2LkEKX%lMj%{~+&Cj>jIi`HeqS$4P%Q@u{hBFzA2OKk0u4 z-$#aC$c%?Zf_SC)>c?xgJrrMPAL;+K$9#Lx-UoLcOxi>C4(yNhMB=3@FZ=Hf>`(bz z|DL1o`wCC)_WneDcYFU=d$|5@=N|-}BFustzza8{<#-Ba2BPJfQ zzhnHe+tTm{<$v+Tbboks=cB3i3F3*`W2f(LlJ8-wkNjos$k0o^{~e?LqgEgIo67I- z_EY`e^!@QzBk~W=%0D=NJWBgMveV%|@-N%*fS<2m{)O?wPKO6LUsV(Dyn^2cC3uN= zzr)*?{6;K);2Go@89G>S`Zvu%`hySp@eK1n?&AUE85w$cuk&Z&&9Ijb@qzu*#1F&+ z&6j@9A) z57_HTFE8Z}`mg+BeAMYLd+%y~Nc@uiF|}tZ<*z$u6+bwCkiP}}Rr-$x{ij*-r{_<* zXT^{GS^hDx!^_L~^}y3cAK?|&yB~Vm$b`%^Q@ z@3HkGUa0=5UA}($PtbpmUL6;j_ey{DKg6F&-~Y9Kx%X+4j{YZqoPNmJvvEGk?+*PJ z`V6P=BGbQ4;;%t}L_A~va`+_q5BdJpI0ydqP+IO6*=>;Zd?$p6$|sejU6gwM!-*vAjFXR5zRpWol}`>Fc( z`0*{|Lw^qBXMB3Nc~tq~uPXoOqi%d9I`MD#ljxnZ(vRZ}(Lw(dJ^HlahyHk!@;~_` za+>j$(p`M9yrzAf7zKYvzcm$h?hNrVHQrVGy8grQ1LDme z1o5N@{=d-vs{6{_yH<;kWA#d#pVmpVk+WcxK{1@iQDRGJcuy zj)|X;Ke3OUpN}NtA?uGxefNVDSIaU$KWIIJ!OB)PiEELcD;OL=yy}`W7&>Eu%1c(eW-bt{6qa0@iXav z@CU`a2Yq~iyd3YF{Fwhp{vA6!K5+jl>3{HN$vZqOd%N~|{BeihD*v$WkMgg*&Dc^$ zJV^Zazp(cv;9VZ~x#(wM7CVj+WNDN-F#=&6$1!q}wn?kyj}StLMKn#@bUCdr$Ge?K#hrbI(2ZoO|!NSNDD2 znfYes6BZ^oX_ET?JWljuW`5f&@BC)@=6Y)n@KyOcg8n!b@>UM_F#pNb<~~zeyu*}7 z{YZZMu*S=5f1%aUc0RjmRfdC{K`u_?)Kb3wr-C@#Adm{cC`52$1U(v^J z%J1SY_(St)7hgGh+I&2A={aaWH~9Ij=$m{zB>EN~UoANY>$_|3K8N~_!~bADS7zg# zWjb%rTv}SZZmrVg|Cz{t}0>(q+T!KPErRuh#m#|V(WXKEYvf{%JNAim|w`Vl;FH7%{K3@K^mE*zxaw8A+wYCQGVgE|W zUvK1>QXbRSXZbfhoXMAe*591bCn2wR&pnxZ(ufa;pDo7z(lYG7(*Kr*{FR%?e*rM_qGktwSqbE+ zeTaXH%C}_YZ@xL^-@KmsHfR0_?1%ohv?R+`m!iZ3Fg=0xYVCi3_G3I}dduPqZ2EZk zE9URoPN2W&zehxGMEl6Mw@2hplRgpo9}q2hvS*|8-I(cnb5viGi|cdk>5)e= zd#ybyD?@usf7xv66Z${!K$ai!%F@k}Z_}aAgQAT+Y#%FqePO+x{%D;71FgR%!yokT zy_x?_{XLY`-y@G?^=I{C{AJ3IL3?`Ofh?W+6kApQ_o_Vm_vX!+zP5aO0m5B<6(4*s zOFzl}-|`6c$=ZV*Zyu%nSdXRt%~M=?%5Qyu`CF;Ks8L4F|a@1-c9@7X7s~&)83xh1Ab-c zHt|=w>@)Rwzwrn9!=sOS|FXXBm;Uz$_O0G@QD$FRx<&kqKbU`H|7~9SQJbIj+1^fj z?{xMSw{6ShS^HLA<@`4m`kMZ+J@fabMgp$bR{AO3wZAPGV6yRLwe(Z_m%i(t%;dZNu>aDm{>zHbJ{!rmX5Pm0L&iobWi~1gy%x^OEGzv_I_n>h1^#Y6 zyff3Mt1Fh*`ZDwT{`~5zVS0YPhW6IQ{I0#Z_+XEbKLO+4t4w#}-{j&>*|U@O*!pfM z;6!6Kp5^Cnr)YmuX8HDE+uy#h{ViUY@pJ8OSJobON&YV19!9pm$~m6@i1xQn^(}d7 zf4fD?-}0})!`Cx;uS?$RUfwC&-+tpS)X%ACin?oqn+ zf7br?X7#;qUs#`$!9Sy=|Ni}%ypwESd!_$guYYcSy=PCHzhximI~&hzdpt<{z#n+A zo9V87x%T)*rr-YknLdzTmL8NnDldKZ?1|FD_(A+v?k9h>N0m46YIo+}g9kHxUHfbM zovgh~F1{gq-^lE3-a~$Bzi#}y>esXO5%oXFkH$;MH}k>gC7<|l@L;UJng1Oy?FIHe zFME~W%3HbV-v#;|kbVcKpX^=l+b`t7zXz$W_wV!1XZBK`usu7xU;3LFfA(L-v&%Do znepo|^^?3!&&T@5^I!CL>32x}qrK}-+1@)0e~jN|ekpn2ANkMud&}1|{V<+I@hs!3 zSf7;vUX$N)#T%<^`-;Xd%ES60=MyWk`pM7NJLC_mFZjjrh>P!@%GygXf0V!S>l>}D zVSTvy_;Opmtk}^JrkABFB;V*qyjw21NPS)V-T%$NKf(Hr>nd!2J^;f(>`rMG!uc`00Ouv>DnSLsN^D0ksKG7|Iy76Ih zde>c;U1jT8Wmu18f4Ir^2eiKy%6Iy?`uFv>{H|>MMe?q{UNqOoto=9cck?H%|6O-o z<{!JB(tP|cgZjC#80%Xc=J};+t4~?lto_AQH2q&Kf83JUpI(=hckSheI3a5Bw#=TF zl6~+e)*G)b(0;Br+Waebczw#!4U)fs@~pnC#~r`1sGpYRO8m_FBKv3wfEOd-0y6?`l>9w8TE6G+fY zS6@Zfp3+qQT4c*(fAzWrl=lPNw*&u4>7we42EJo|u{ES87q46Szk>U1lhOrO2kFr7 zcJaSG)9;Y#;}Giu{3k=-tUjRcWat~yY3lt)d)JBIx=i2dg_zwW!{6ckXzFX_^ZbqY z-+p^o9`;{%87QTSl*4%lx;H7XNEhpV!!Q`0r|+ zr_1=STNlbNE2h=HeyMNqYOU|v{AI-j3$k>pKjm$({L6}q7G>$M7vuTzke*yzw~qO5 z%ko$224}WDUR<~^%WvEB#>xwP`$zxF(rtUbZ?Ro3`GHyAyuWRV$#3b$HdRFQ)9-vK zqF?-BRYbp(%!=q&O6~m8@_TKHo&Q>TXC-Qw{nOIB3U>DL!qytee-tL*&6(r+xa z^94&EX#0A^@6ZlA{@e7!TP%K9diDNmqWtae#Pp5tU`Hm<@8$$MN&&t0huAR+=;l(K znDBIZZL%h$7qpaig!H1@OR+=a^Dn=q^p=pWURR1E>^^{6VzxaWOp1t^?h^}1xNJQ5y-V)KX7H^H{!s5pxx_0ps z5nZ$Rsfe!P_q@IS*Il{zxrj~{zhG#z_mXsDf}JgMe+>I!r~6)FS@Ft^7^(dJQgNZi zFTdaL+?81UH24Vq6~!wrN9#_mH2WJk&sTZ5#wU)a=&!i%`dMg~-PbBBc3qkEH}vB0_1&X&R=NXb9Ou~O?P)+$?_KOI$Arsbbgxr@qLieV&&yiTsrWo6!sPz4f!3d z+q)8Gu=?P>7<;e5lamuKn3SehX0-Abo==uqeYW!ZkGw-le)0 zf8;M-)128Sdk?1>t^7}P>B2ShPvw5^o^JGB=RchHIoy5N(aQg7S8@UVLG}{=H*RFp zl0PsWcC>EmN-p*3`2NpE*8kG0@VySDKij4KW0uGGf%i3@Pp-1|eS`F-E`3ne^1mca z_F{B2?F;R(qxG4t1jDW5qkfRyiPao8^!Cxg=e%y@2c* z?|Yh&|LHFAVt)7+{9doYpZY*+&qkzg=t?mCH1(zOPq6(i;QnaO#B(}YpXyRuVR`ru z2Tz+5`XH+?70K)2CwmNEakeBHi6TEiEROUq#xUH|S`6tSi}M^UMB4 z>*phV5&Z}KC#4IMuz!tfX-*a(N#EO@%J-aZ=}MlPlGRs5x@gg@NR~Xc->qHA-9EiC zJ-7zrrFs7V{cBvyqJ;A&_x;|E)*HK$9X>ziUq-(A>&5sU^ntZmdHHwYuB^R-?r43q zE7@$zPgQ?j5cc0`>4JkA4=5AkK}YLNUCFCH|0U_dm)SoSTKh}W?y!F&|CX-gp(y`O zwtwZvdi%8W&;i;bADv)*w|6C7Hvba!hldMDH~oq7AK3%aw9leX7bo#{OXRn^=PWbW7I$<*(Pe@cK(ue~`D8?O*v- ze=ni^e?3TFaHDVU)PD!Y^QiozZ11K#`_BvLFSb1D1M+Y3?VaWC!}xB?D}CV>ws$Z8 zMf8`be7kS&Gg1CJ^f#Lh|5l_67h-l`+g~%%+b~{R{>Hx@Y~QB8Y()Ai82@ehi3`yl zO?y{+T%!K7V723i^Uxiw_oDwVMFIcn^L%*gp50_KEiZu0?;h^2M+E1*YqJ{~G@v1b$e4 z@b9$r$blnBSNjyds{0C{)gDjKo_jDJSboTl_f}qH`_}s{((eY~jpv8=ajwhC3s06~ zJaGE3d{rBATYXp`D}gt*yy|2BE95VGdRQMV=>N7n>I3rcW&5}C;r~^@7h8TR{ZS~A ze}Vpxe#_9GZF!|vUC;hu{6Tzq0C;H2FOfeVB7Y;F_TP>1%9dAp-L)+5`L_a}qVf;2 zf0^=Z@7JKeJNeYV{vM`#|J@J#wB_aB!VTtx?dq;Cd(I{D;Z zSjqlq^rL_8#Q0>(%fEFkOgH7}-xa`1TVDPxtYUw(_QAgkFrV9C=X3N=-7=<|^7K!N z@yF>W|2@F*!q`v$zOh^LDdMyISARFt>$Cdl*%PN1TG^kieDL45TOWwZ%GX`PbR(bs z#eDNBryuR#e}4ngt$d{KJ`B=~rzfai{asA=^7{^F^5y?In>pU7{7JqSar92o%CGUe zcaPVH@&;CL{3ysC`g4Cb$WY#1_ANWU!=HN&XXCN-Y1oyeWBucjbna^zjq`*Zt%nb1 z@|3^vr7T_jbv|CSvHn0h>Z?2Bulla<rb_ZxjUFXm-cnbf3FkI#83J*>?G~Vk861&=>cu{p9lZUeTC^NFMS(dAV2>;QT?mL z-+fV=6yb+FZn&hbgxh2i{$V5H9f}hQ{_)y41f0A%lt||G4UMEFZw_m{mucu z#%Gz|$_HM|o5KmE<}1>-`9Y>Td75vxZ3y~9&pk}p? zbMHCfJ+JKr&}#3>f9y`C+w$c9aGc)j@dEQD*e86@dy%rg;NMR?aSqz|{Fw>YGc>sOa$NsgDkJ=7>( z2;^zLWy@2a+c~~ld1!C55{#~<{^ajQ&9}UMJ;EdJ-(KO1lMj9yI9>+wZY2Mpyzn9@ zFMJ5f-`3#Dt3B7xfiuCBw{h(dEfc8H#>9GFS_)@c;Kw z|Jm)7r}0^I&nn6jf7NGgaul@Mv&NU+WlWbm$gfEIcC&wad2?na6V{sgp33yPTiO0x zeN?1PkFb9`8vg2_KC@YW@b|cuqo%)qbP8y`_ck!FC&-WYz7Dc~4dXwIZx|1oTdBX( z7w?;y_=KHE_1AC>)1|NY4B70V6`eOgDGF>wtvbH2_R5<^K_Y+r8 zU;BO)-e;>Z@k}OfZp!oqYfne(+U^VwmLLpl=}9;rk^HUrK1$lZhw}sHzsj`P$g}*W zrL*T@f^Y1F{*`G1zwc)CnTYpMY7esi$R8&*B7MF|x8*C+WBZRq{Hv-}-lU^^UClnE zQwN@JLVRb^WiQ`DX*@uGk%T`>#D&eMkF$4N%Ro@yK7$-Grc{ibrh+;;#eNiF{4du^3zPxSsQ-fP5sX_I{)j`{o7P)j>@3$RmP5Lwk;LBswY`p4II?;+Y>t@@|`2j?9CE&aRcul@s>|5d)W@etB$ zZF?zCKh^Xp(E1@A@5N$%X6;pb9IT;zl)?Ku;J23cNoVB8{9&Uw@&LP;-~pFKH9W?t--Uc z)IW%aByX112gMKhON)i)IG^|PyV;L6fVq_qdxLle{h_Q_(EP5D&F|{8UTFORd9$`R zqP&@(@qNQ1iq~YHKHJG~&bSnLd~L8F?ExK6rhau4TG=Uls4g zKEn3riO2YlRp z1hkjew36v+KWJZ->5*QHMO(B0bfOvW>CJCpx}ARm-+E0toeKFFPu6p+^!gkP@MbL1 z8*ZZg&R+%(vHwS>F1dpGE@Qg*%U=!cw9n~_^lL~fUH+K6iuuj_n&VeP2jyG-(62he z6U2wDEU)@N{Y^;+2Wh{XPgJB0s~bRhf6QG$elCABzd?D#Pq)$^$}j&9B`hzz#`p_- zIMPo#DF_dse@cGNKFk;TdO;6P!2gKf;GTHC@}|dsj0YIMdk2u!;YUUK_5#+glV6z* zc)SOmmZxL-#~@ul@UKk!BfK2f(&Xc(CHM?~dT!sjE`PW1uZ#X2=D)$;cpvwTnC@GY z(P}SM!F-4Keav8w+T#R^$F{!VAK>kQtUUCame%Z}zvv_Omuczog`{aC{WGrR?c{C# zoz1rztJI&B&iDHUtJq(yzIgAqubbujlurHo*OI18@|%{vRh7+GFrR=v1DszNyyX0( zs_IS9hF>%CA021{O_}Ds#2USKtNKO#8~kzk&%jKKGicw6xJ)h&MueVAiVSP>V>CHKZB<@Ka=6<+rrbgX}|Dkz8~*T z2#ZzLWL>=B-DJrn#Y(l=Lgy~^R^xR$qq`N(-l ze|rJPUzd*gg0aWyJ07xrDqzxjjy<67QKh(F@Dgm~F_Aj>cN2j9qOln4Js0ge1s z9#2*O0e*_#v1%WmUkv=e^ysCO#~_S6373 zOn&0)u^M8z;&1Tka;(rEsD*k7Hr{Hh!)b;oG67S~m zGr-rA6A|Bzf~T@4kDn2~0xtqQJxTwLil;c=g!r`t?Zck;LV1s$k{945#@~^68sMko zFR1o$le#}v%cX1)ll%75z7gZ?`7U z|1BTSN?w4U!mqc4w{Kbei||wV-x5CBbktuE&#FDn_3^9W@9|akyd}H~%ID(Mxxz;m zKVd%S@fGW>&_{R|l=tze_|Fwyy7Kw>d?bF)65iSPn)XETW)z*goX`~dC6t#>NEg?}PE6~AM_eB?vKYajn=y?7vscM%UBA|5&XEKfgq zlt=OOlRY;6G8oSv(AT5$}e0jQL3Qe6|Oc0iKQnUe0HGwD=4BteMaDNX*Cn2=R43 z^;P@|e;ItX_QM}}JRi9}ZuXCSJUp<5x(kox|3SsOZheFECF9G_7?7!S3c?ZyY_my3^&YW+GWuXtGH&HO>@*FpIpe%=WFN40(( zlvg|)l-K#ApnMoVL*JuXuMWy9{`LCL5q|sfr-+{;yq}}hllz`GWD6$8%FYjAtoN`02{$@fYn^ z^9%3K0N=5`1^oVHzT{98@5bxh#J6AX z|8?l6AM}g%leb=&Uk}E5@g)P7xcq1jx%Fh|6U--&4t( zG2YJR3(yDap^6_3zEIx_`Yv$!#qW54kLOyvb^c;JT^p`XgI~BF%=oX#ukUI;5wBNA z>&Z)U>(SCLSdSLI)`syd@HW4mJXEFm9Bnw+41KBxh`%0B`v&HNmc3YSHu!1nL49yN zTJt}Zr+!8jTXgyi>^!0G=;PH0o5P6>xUp0Q7 z0ltEN4o`^}Is82K9`MuE?`iN;^2~a(Uw=JQ{LIJ0vpjwpdpv$BKF;H3J{~sluN$8* zUU~e){88~PHe`If8{nz2=iS$nPtv~zPc47?H-~RgJc{%N;j3Lw1D@9B_J0e0|5x%u zd~HVgI*+ere&O*I_5kndv-5IjzsN8AwENGXXXo%Pz+1_y6aEGHwO;J;Ai_`TBmDFE z1ALZ#L40lO$*m{P7Cw6Zb;3u_&)~URpM?KBUK;; zH3%;~|NMIOY~iKHuSP~{W;{JXysQ&miofKW^=;2@w(v2~M|f!Uf&T)0R{Z^Dv|e42 z9uM%8?d?s!9u50P;<3R;ClBkntLp-L4Zb~K@s0N_0=%?%k;P}ABYcE?Zhy?g8#6K9 z<@ZzH6y9pRT>R#F{G7^oJH}t|^YJ9|XLzc3u^IR?eQ-Mc&7aca{ZjZt@w=B7$J?;a z<1yls437x_;8&i0W#B7fj{ku_N8;<7iq}2=w-UuGieJaTA2m^YS)P8P?-K#PC|;HS zg7sjB*Up7skUIiATa~#fzr@<9xlV-%lewzutVz*9Z1D za`EW9?$63*_y_T982A zI}76Vtzi9F{7;Ri8oyAV(SFEO;f+5(W$@`~jwj*ysI~}iqxE0tAFMZn|HybVSbvs& z(RwrO&#(Um=ci`EU-|XuU_Ds+2K%+*pI?7|ANOm)pW`Y0Z^l!_XMTP8BeR*uRB6BiDcP_*Vb^?cYKk<^y3oo7=xV7wN(N zE$oZdgN?nyXN%Wtf0{42{Z50I4;j4Nx`_Nn*}o;eHTeBo=~wUfZ&iP1vVS`h`kux9 zt&#uk`?nZ>VUORxg+G3x`?t`qJpGOS-w5#Tz3t!H`gl+Kx99hrAMlUHD~zx2>;A3y z<@awZj#dQnfsdo?-_C?SKZ*TY=RfY>{=(2NMEZ@kf7=W^|F^JzYyG4CF$(^wKj-l_ z#N&UZ{aYLu^zm$fry36e{KR~5B)&#?it!jO);fBV&eue$ug^Yf0M=V;9*!g%$)?%&$_ z_&2+MYwe$Us`xm6zbU`I{PVbf>-s0>t0unwVE-1K4EW9U>$V8*KiI$JUXEM;jN@O% z|55x5`h)#j;nC+KLFifF!Zs{Pw7)?Ys_`?uB}#p56B-zIIYeoup+XwO(b)%mBNsr}orVZ8gn z{w?v(?RNs-KG?s7KYqUUZ?RE$5sX575bej}`y}I9<|kQvhVeey-$nn<@7G5AyTB*x zC%muwxB30q{C(H*w0y7}rsyYp3ifZ8jHUjk*}wg*f!}iFrN6;bw_lsbTi!SF`?p;G z{Ak}tgYprcg5Svf+aR7ju@U|b_HU<-L;iR_ICuXC=aY^F`?<}?AMMZb{08=KZT)WD z0R6@fjd%LVKX3Z|TgeOde^I~DelET*678?bo?!o0-*XA>A5CTXaQ}8A=-~d4_LuoR z3#;D=wm);;if62NUN+tjo(cMx-~Yw=2JqK?TDPAYogdbE>L}-%z#s8nbbc7+!}G$} zzX`r?A%3IZ_u+luY`@v?kM?h&e-CZ*`_1|LK<2#gDZhUKf1CS2zQ00$e|}i@K1Z%62kXt!Ct6>o zefjgh!G7&V)OUXU`PBQhI*)1m>CZ!*WP5qP_iG2WU+d08AijM6_G`E1?%V48?7!xI z?M(VVw_iKt&)Wij5Ko8alTn}X`K1V-x+k6ke*XR~#*>lvZG-(>wXf6d-=1o}_VHjn zH@Kgx_7UvIO8%(#Z{z(}w5QYDkLCHL=>F}<{o?rkY=pJbofS@G!dno4@~)zi(Tfj?+~{15CY zPk+1rw;c`r^ZUEl?~Lx>GM=tsex0w<{(WwLI=KG>e&y*$20!BXLteC>i}nNl(fO<# z9wUE%zu<@SRMo@-d*2BAoyT+gwKb#`pH2pT1uqpXq$qkj@vsCwzrGoM#{Pds1hGuj2oHoQHD#S@EmKPmK=&ej0hf zc_{9`=J#h~{EY6KpQJyc?^S@#<7sdnO5;Z`f5LhL#y8#9@$uKF_ifGj<8fj98sMq) z3Gnlj_!{7;?9cDd=J7K+Z$*1^cp2QkmHgnot@!7^CpF@{RdjzR8vk+r9`WcF-bb+O zv%rfH=Yw;2n!isw>it~KpM&pLSU__iw>JfB$FX`Kztm-RBL~Um>6O8#%YrqN(hO@8g!I7Y|)b z{rQtU!Tv4cq3Av@^v&Pj#d+@FJ}uLO`?}&6+`nCNUL3DWKl8mp_kAk#FMoa-^2*aG zN2f?RqhD_S7I;1A*9VqNK>lCt`&E};<-a!YwSbP!8)H5i#lv>~mc`SU51RRbtq*fP zD~G?M+`onVk@s(d`?lT9kRRR0<$a&i+`s+SyWhVReg@~4aef#64DZ|G{%v?4m*<&} z&!@e*FZ8bWZ=LeUY2Z8@ce9zy%{nn9hslE$3Zw1T2OHh+J}*prKwXZ`5+ zZ>3*w|5p4@asPH)i2v{7{_RQDSAg%5pTD0pBL0r>8+iTh_itriaQ{~Pe~kBUh2O#c zt>nFr`?tnl{{F4_NAWHEc^3C?b-(8f?%zuOS=_&syfe6e3wgXRgpnY)A9WV@Z{^QX z?%zsYfcL;ZgXd4#_3iin{%!ugY<~Z?JpG;i-+}%5LBHI3HSXhnao~$C9rjhEZ~6PP znlD7(djy`v_iv;7xhP+rjvd7En)!it=YNGSkYApDsqafJUGsxe?cX|oasT#o_idy5 zxmbUB%iKLsyv_JBxQ`3@z`u9@9whpIv_35Q4DR2Gf33fNi|<{S`$5(o%-0y-67NjB z%=t(7{YTcM_n9&O@OXNX{Uf+fD>}G8D?0xEGS-vzJuuzR0snC= z4M~B0nd23G(I$9prm?_V_O zzK@fKc=r_dZJ){ZYr#+ZtNobsnfP&j!tW87_0#c?7u=sV@^!ye`DLG3AGZ2nd@=E> z<5!tB1>aYmiSI)P>np;idBOK8HWKgs_cD|o->)rCzcBa(>c^k(=Vo0syt33VPf!{UK6@NtWyY!9mc3L{8i`c34 zTj;~@n>4b#@Qrv@|3;P$e@;sq<~6wd`aVPu|0BIT{qoS4S)M=Hf84KkFF6zC z{qOSc14zGMJrXqVZXVa$j6XJ-_daz z@smBf^u4E`y!K~<^7>vyP+sp<1^#)AbCIC@gQQhn{0n-Y%HEg7erlDz525#XQJ>I9 z?@?X@WUA`|J-+9OxIr*(8$02 z3AWAcS^Yk|j`YJBeP0{t`?B^>UnH&jm8egY-_{V9znOGU{(90XFMaB-B^{LC#P%)u z^54U^kPgb|ej0{ngi3hu-rH`0IT>%O801)RRvkzx!TCMY`*eT@n4-?$;uE|9-sMMotVlancSQ7kd+v+q`3tDO_`{#$T6QJW$KVU&m04Y^Z;fZD z&uQr!Z)7yu2i|j96w@^aGFtpzOK6YyDgN2FuK<#7vao&Oy{3hv-^l3M-K4dqE_sEu zq{$QYeeSrHImv$hP5cACqP^tacM8t;h`)*7w5JPyV7<3W{v;2qcaCdWpU_{Tb-2#a;&)%d`f~o8lFmLT-!MPynUWTc;4l2}zs9~A+Cv-7dsD~t9+18_D1P(J zTL<*tRMzjV8tSV$m%Y*Vqp?05zXt*Tts(Dy7M~Em)=)pyvHY{EhrH^1`XS=MY|^l= zJpHAiU&5dIN#8j&Y=86-^({|-<@m2Cku>XTPA}66mS1@~xo>iiUY`D5|L-|k{6Am& zc}JssdHU&HpN{BBRg)t6_vie+qv4;qw>(zNOh`hWPH|0;b-(>eb>&R;h> z&R;z&{ZFoz|4Y+Ze-Y=epA+Y=xkLS({H6cAZ^Zcvv*P?Mf1IVmKd^V0?P-|uWN+iV zIRD&lX8Fax?hf{k;dlP~c#}VEiSyUrAw19YS@@?}dGT+U8|0r*n$8|(e}epT$gjPn zwkA0j|L{$;nyq-YE1ff}{+sEyU|~=m>4iHA(&xWf|IYujOrG>@yrWU+@DIkX_LjQ3 zj6c3tQ<^TnBUQSyr)hr7|Jpyw_(?x}56kH{mHwMG%&~O%d{S;f{@(YI-8vWHi+FO<{kIP^G^^pJc*M^(Y<;M{&>k8ZVtMn2g_rcV%D1)0<*#-Aw)!qu5SL$c$0G0Vb4$||cNCpJ zrC;%m8$_!;puIFT#pRoao8=Ez-z$eXB)R_6-f}~g&wmd5o8GZX{8Yb?*E)=z#{9Ou zFI(pGvp!bc(WdcqD>(iw_4Nt=w6~;bmX7z%+gnzxis|aAWD^9i|6Y0y(w8pH zX!Mt|;;he(rF_nB@qNUy;_RzS9F6@LjMuZ?!T4Hf$Jfcls@eYw^yQ*2X89VQpZuz- zLb{~5F)0PVWFr28#HDc`tw zb3`v+yd|O=_`U8R|ANI2MRe0*e19oOzhNeIa`BmJ`g@r8 zivCzptiGJ%VYR`_b0?+smuvhW9;5uE^qJ2>yJYxMgP&!^&g!uK%8JiE6Vr{uq@BFd zbl%K*mN)o~^@rCxL7MmUAb)c4V57=gyq{ETo>$s|{G~=e#H-IH^#4UDgZWokagE~P zXJ`-fD^0r&s(;(}3OZU}?Ns~z1oAJr5c)S)X7<4TN$JunGaB+cTDNs3Q@lRRFMgCS z`xhp0{=&1#QmfBa@GoA|oaw9lORroCc3%HoovKUfbK*kiyZd0)|EW*$(9*2D^m)89 zsj&J?g?+`18`%_`|4P$C2M;+~`Csl#F0lEROiV5)CL5=KTzb_H$0R+p@3GG0Qk(t_ z(oc7)!%?3fkgk6=xyst3^bMWKDkk|141Y zOr+o5nN-?z@o#)KX|w!MAD5(ywiS@9_Sw^n{7-i3ZD{HPe}dnx8vJSaZAAL|&g6^u z2kSqSf1K@gk>pLp`|MA2s%q_0_%t*@B!PjNnE%F};4JCn94#-2;L z-npYQ>9Dl?xk&2~h9CX;U}v($rk{{~Pc~%y=)c!GlUr=M@$Y)hXH0qe@0QNwahq=Z z`vm6?)*kq8YiF|Frk_y#DE_zhz<)P)CQsS)sf>>oEZC0nihtF<9_>sv*>vNNb;Ns> zM}HXC(yXTnO}v;upPM?9=Y0N(bkU+)BYs;tle>L-Wx9V2ka3F^am8;@!uf!U?>bs< z>`Zp}{FBlJroU?Z;Cseztj)^He+zeJ?HP1O>%*PNW?O!$`tyRYKTb;*?ALfendq+_ ztsR}ot3LlF>B1ds{|nh3!LKwu==(SH?Pz_ZGkGY={~Fu3@&iAor3c=iJqz$(a-tde z+dGr4DW-iaQGa-_fF#pj$nT-uAWeJSs`OjfA5@=^2Yt4({TqEYB7a+FvS&)re-_-# z_V4R|_3o@aPgVIx+1^#YhyCXjjMtFh`@>Ca@3uVnzliqy^&oxWmN~vW(qF)M9F^Dl znlJwx+J993VYY80pZ(IeP1gYDawzYhJwmRI`1N7%lt{wRL~#?z?0*0W6c znMhxb{^8_vJ!s)V%m!@xW_>)5{$@TY` zejKl^MSrsV+B zM0;TS6@G!_`_~<e$W^9rJiGceGgsymZ5)IeoC*pr+{=bpST$7Plw+)4BE6; zwvPvZKTbdLD_oc57r&Lj1Dn2t?W^hrP=UM_^j|Aa>4oJ?*Lq?P>*s#pl`AiOpJ)H6 zrhPrEpSv*r*z)i<_+QWV?d@3s{IKPfUUx0i4S&{0ivDcNoBDW({N+FC-wOP&<&|E2 zH~W{7KN0e;L4OU)7gn)<82R+~X5ghQFMrl8W4g|Vi+>S#6Q=Kbfc%Yow*RH*zmC8B ztMzEBKm30u#!H(n|J7-I+Vj5;_-gqpec%1;--bW^dk4lpSDyUq?_#?5@4diRTVDPv ztYH7M@=<;h#y4Bu_%~&`l@I?e!2E54oxidE3tB(+<@a`JenkA0f9te`ugL!C`D6Zgm6d;j@&}eO-SDS>yAFZ0<(Xc8C;4l=SmR&M z?u`Fb`e)yL9G`sq*nKD)KgGXZ>jS1d{mc1cD1Xkq9G^`2W~3iEl-ak0{QI<@q4FBf z>tAPIQ~x_L@w|@KeFs4XEFJM6&SSrl(a>icy4POihl7lMuW~#Pf9;PQI+WR` z^oAWwcl+(&_X27A-V^vYz8Lf0n{;RV&!hi#5zjpT1qWmQG`z-i|Gmw*FOhcdNrC@! zl&ANdrT?B}4`{t-e_|u~zf3$9|8CY-!&cG(zXwPM`aVzop5MZx2ejcg3FVs}<#_7L zci+wO_I+vGS8IHl=}ulnI)4r)jDG!pQE~*d;WrKZn(t?RCtvgHwhgBJt9^Fg#q@4F zK7;>L9Dl962{=D6j{xuahwIO@w`mLWYyV&NH*Y50Z1|ym=G{r!^RIrAR)O*<4AFO#I8~;$gv{?O28}chYQTsV^FVl_uncx@T z$BBvOBR*C9R{imFYv9rLjCRNCZ_k$e=3jl6~^D61ih90v36Sle;WK_|7!B{G5Nn%@knjv z|0d1HBv1C#D&FwvJ(_>nbnxpF9`$AIp;qyP@{50u=3CNF{kvEA(woWa6P^U+Z|C@J zo{Io|G}Pt0gXRqy#n<; z|6n$Ls{Qq}Qy*8Km1(V+|FaO%c|X4qf6^zWzSkb~;~&Sb-d2{Eez3nXZ8Y(REsyc$ z8m8BeGv&v%6#V<5C(eg{b+>YU;rcK7KS02>N4Do9T^ui5dS$w%8@6vzd~<^P?>%j_ z*ZHd=ZF-2~k;^}>Wp;4?_8jCNC^Em*_x#GV+3?Hsox7Cj4b&I)Q<*jd`@zld$GrW- zYxy7X$hek1GoF2P3jD+G+t)R6!N$}Ns$WoYjEY zgDubba+A3`LH_8U@W<*Nrn5ZcSEfC|em3{(>gs4e5MA|!{p@Hz8SP>B08&kP;$3f~ zKh7sDp#5II>Q2eSzZv}w96;>^`)}QQI398gW&4QU|G{`LEj{u^0ZH^3^~L$v{hZIy zM({)X1>SQ#@*>a}U#6tp&D~6+{^)PxTKau^nacA%a~rh2&Mdl5($~<3KTUnmpWV98 z+08{D)F0|=Z>GQW8w}oar+!BpR3GBk47#atuj2>#IN!Fv7c_m6Abu%NKhymg{>`8G z9ZWPKD&>6PT;%WH-;X5fg!FSN)9!lTUU~ntcOm^{{6YRrwZw1QWc6JX>RXu}GUe4i zo8gZ)%>F9n$-jO32T_zZ@I7|4x9~kgoWH*8z-3J1PyVQGB)*&W$@YC9crTLvUYlSv zG5C!3X4boG{Y+*1YHE_btRLgwgWjHvu&28AAd0I!$bU_TS)Wa|KBn0IqxwbpDQWK^ z`q$Id)%yb){_kdc?ak`5y5<1rYSQ9gbAbMym!1w zVIkvl(5SD*H}I!xKjmqu)_Z+^tj8_2_QT)h>BO3eO2q$2e(ze^FB?vBJgR!V0D5>F z{^umm$5ik1H1V+Jm6$HP7|_(Gmj0(r&b1d{)z8}muDm0@`t=xTS@!(d=5WA z`f#RC-QA=WKS*9d>w~sD?iUiGc{)?vk4R)3@)&BrGX zX89#=&OHH5evfl(@ca)eeiA>~H|sHu6+V5o)^Gg%;KPcSy!?h+$WQnyd2??dJ;&4! z`?tUUi}4roH*kL8{W;>ibMzh&@OwMki^CJlrtp8HRR>*>mq-V{9Jq*&390q_nSFh z%73yqykATF?>*d0_DMnb0{fPdpR*71i6cFr-TSH)Y5(qQz9N3Xdp%P*zW4U@A-}^9 zzTd+7b@D6Iz7YR_mt%UzAYDJ`TbcHTc#8JYvO@CVK>b<)4X{5SY} zS~`DkOdna4(P}T@dx#f<|4}pcYrZ$m;;*Z3&R44adxg*s^YcCQ7ky;#XlNm6+DLqk z-fsY&$M>E1K0$vK`>WA+Bhrr?WceeeJoN8fOPV?xygyzwfIpQV``gf`kMj@VmENnb z3f>RodEoA{G$ z$mnCf->mlm<&VK`>gw)$$9PP990iZNg_jW?zpwZ!{sI1~KOTJ#`0MNcH291D8sMws z9TgrQHRCbILyyPs7skUJ{uV-fMfy?Uu`eIsvG@o0D|<%bZCix5M}?08Kfiv6_AnA} zBYcKF0sb2MgpZaV?eTbwcmwgbUtg5HdAv01i$Qshzv4glH2B>R;y3&|0xxrTUGMQ& z`~$p|ehtEBKYkyJ@D%;UaeoHk3{dE$)0Ls4+nVAQ_>^*g&h{Z%hO-${Wa>t zALIj1jeTZ*1bpfa#hbQ1^gWCtitmn0KzZ0peAWDc{NVrc^ui+-@^Ai-9^Fp{ zo&fLs_cUaG|K6}X@GgAc9{H<0p2D68KgI88HSx&cCC?LII&i6k8~MOH|2?d3;%RO8 z{VUM@!e@h*oF7DZi}Y&${Vd!c!uo{HFH-=a zNb?1K&tstG7-(WT;#JHC`f7-;9`6VJ_b1`MGs08#k2t;^6;H+gEaF+o8wF3n-^8=7 zzrUAwHjkeHzUq4zqu{CR$>V2)ufU4{Pfyanqv9#fHz9s4LHo1kw@}{Wr{o2AiScqI zo(A|Sd3k&c@ssNr5nh8n=J8PS^6_f@Y2w?XdA!cyV}Q@%e^l|T$LG=GS>T^UyH3(Du> z)w#k)7e8S>=kZnROS2SD2IYNxD*nOut|0&P_&rN_XX9(y6UCd+d-sSR5Z?(;rJu(C z@cUKGNFVL{S8U%wJPCaxyw-R-%J;5h&(SW8zaFplar_cqAszC=c-F?tIKP_Vdk~*$ zKGEdA54@H3)e0}Q9tQmo?;g@vO+1sm@%OFr@o#xLV{iua(NFdqPpF^p80*(uU+38C z^o`~R(BG|hD!!Hc08hm)yifcg;e5kAYm#{&BuzT5iHdqqcbcpSX< zi~as_ph-2%k_4qYfd75wFgNP137e*^xW&-Q5X7x-DD?_o8G|HYsO=2KtAuke?_XKO$D zQy$Mpu7}s|mu+@F1$k?zyZc@x<`ar{-TDUR6S^N4eDBJyM{9f=CH~d;Rr_KA{LT6` z+kf!AXXuadC|r-Ge|zXVeGdfw!unlqeR?prK0Qn8)A9PU>z~47tylZ?-2tsv4`lJ{ zpyK60(vmkz>(zdJFuy)Mp!MmXyy9V%m%XzT4+rJ_`ZVTmut)K6P+swHP+sSMg7RVf zjPZ0p>(fDb#lK$vIl^yW{uJ?Zg!gk4&${*7C>}e7q}v3}`(( z&{ueE?S(%^tUoKBb>DM$NwkJ0bUI}r1e9){|)|{fB5ny-nIK($RFT6_?dWp zbGH6Hu4TaQ51-)pQKR*4@k4&Z+rj>8^SQv^DBg|NyLq4U*L!~*LyLZ>@BDstZao<5 z#h3J5;_{ zh5~#%m-Ano=X3rdensok;5YL7SE?WK)O;dduO1l>2kX(&FIbNjzSf>*J$bN7^Et_D zhCbDO#9xo6NBZW2mc3YSHu!1n!F&z)9IiKm9_-_MM{@+sN22v+_#b%d=X0X-_}Z`Y z16og(Jx97Zckp;Sc!0c5iLV+z&j4S+KZmEpiyVF)eGmBQ>i0DGDS0M7_Uo@_il6y- zIKWS1kH=5N$9eqB$HON6b>kDpKaZc7KPukEhK!GQ13WeMy!(3cN&45|spU`q=I||w zN0DystJ?K6;Ay?i-xad+cLl%yEBPV5Hluu<$5%7I@c0UQ&>!pL^Kx~O*+x`3Lc|_y^y|()icNnX-uwP7p7H?`288*+2ID zW(yw!eT0WrANVi8XZfSa?+-&hzDFG3DchUb?{()HN8+);M<`#W(in zV1HNkH6>Ym26`l(M*F=ne#&0~zKY+x06&Q@W`9lb3f@P`;U~t=(f4P|)9L-w>3{yj zKiH35!t-nW5&lN;D)Q&?c;tRyxn{Yu|gj5I56z7G_iMR65bW2&zJKlYWbQX>uE0@4{Ubgv1^;w&e&Y9&gZ*3S zKgxPD_?h+Qus;`0bABpZU)~7+1b8cXqpUY;JkPH$pBiu7c#H8dcYf*=@n?j;(Rwh( z$6);#{dZ*i8LUT3zx?`hfWNXY#M7CuKfgX5tPhLdDEqhYKh_&_>(%-7>9g3s75@Nl zrGFHE!arxVe~a?@_2*#!*7z$IkDkT;?MeCjz3<;j{;~IO{}%p?)`LL<|Ao)OYsov+ z{_R7-`tDim->N5Ux@VkVE;C0bNyZM?rHEez)ypZx%hMxJVpB- zdHyMnuRp^6Ee;I&cs9UK$qVoj@#084&EsbtA4B~7VE=X`etxij%d;InTl=?<1o-~r z-oKqTIL(c>ieG=)_HREv@bN&uEIwa=f7JW5`Tg6k_I=gm7oMLtbe^Mu=ZJ@^xz;+& zf5ZC5d)vRY_3>|Z|JK@%c>9C>TYN8|&GpaItUn8X{|)ZnMtJ|h{w?=%-1;Z**{?T$ zuz!pAu;JDM{NvZZe;)U5xBM9QZ-2A*H{n11fOn_gzn$7Q)#V2s=GTkQeE;@i{T~bX zoqqpzf{tdXh~^uo+P~dm{q^&*e{1d8`oaFKSs!-wdm8*idqzB}^G`oh`?q7mc=v<- zTjHNzf1mxq{w@5W`GCg1pNIY1t#-WrS=_%Z?=MGv=%@Plaqr*$R^M+$@_y3$w;w(7 zQ72#V@Q<>8YwKJ4x8n!LJAN3ie>(PWt$zO|_ivA$X8+d2qoaTSBJ9s+x_>+9&l?NB zM_F$+>(l=HlZlse=Z!~MZx;Vk?B7QCJLu0Ji+`~GjQ&1yy*XHqR{s3@^PoQ;Y~=q) z_iz3A&-{I&5B6{CFrK)0aMb&^r`*3C^yhD}UWNTsfB#nX_2b^Z4fbm#FWApTdo$;q z9uL-cgZs3)KQik5Tg1!3{n?YJ-Csp~7vH}fdEYm_KO3EQlK%PoxWRo{$Ok{2Klb;B z}ZH@Z)&^!UDQc{)xF zKX?CUl>4~iKUmH4I(EGp=bMId`?WRUeOsg-&)ugz?fqMwH`bXT$jh(qy7Nu;d@|ZE zzhB|}&3Ja8Zvgt)^H9`J=c(i~^iP~8()nU{o_N&rPw?02z85v>eOiszqui$z|Mx&7Dt{%nko(S38&2lNZSR{=WMj}`ymypzU{H~ssQ zSZ_GP`?lu%G42|ja=%vk1o(*lHxfSsyp(?V{n`BfZFIhh_WJX~k{8^+6&;*s694@7 zq=NHR${(C31|6OE#Q8v+_tpI!yFQEaMit}ve-6H1!SlJn`mgZo zxW9iZd-CU>&SL-8=p?_rHWd2^pe=jUZla39CW*Li7oo;r_L2H&3u@IBhUg}nIwE$*}C?(+us zXCR;V8?*bYvM0WeTb^D#c(KD9*%R#Fp5T66aGw|Y=kM?0Ja=%Pmg&KLUGWR<-{SjR z`S}6He|@jeeV-~i-wb)>>6C#ffquFDTi|uLe>(yBfAz?(y8J5twZ5+fbhLlleX9N2 zA%jIazwGYc+WIi(vvT-5%Kcl&A9?>axNqCtjQWZ0;{xALcmMXScfWtD?^6W$t@GN^ zeOuhW4e#Ufyz|g}whykcneT(1>i(^>KevAi`=a}|-K6vPgHC_{mh#`z{UGokiSPOQ zw{IPOi?$>MosY}i7lOad{oA)DAPe-5?hlFod%1t>`ls;wz2Cppco*CslDvF;d=~d_ z^Y@30J-K*z){lPwR{96`Z^i!<@$`+mo!X0N*7)e?KXRuTB2^_cGr7{;iq6 z>H8Uquf_kzc>h-T9h`rby!Y|`t+C&qcNYI3o>lr;+`rZRo-??AEBR+}|5ozO;QlS- z@xBm7f^0ni_h*0f`?vDfDEDtAFTi`?pTYB|?E3bnfd}vJ{oDM0YkvQ>JpG;C-+}%5 zLBEmralhF2MVAiyD$?Wr{;cK;(f1yqe|-Nox}S^k<>}adET5Sl=;;0}&kI`So# zuKB^K_HUiPxPN=P`?k^jTzo(6xcPR3;%(i(@!yYx{QUZI?tT*RH~PL5@i_NA$5HOz zihr%Ye~a&3n0VLPgLsPZE%DC8%bb5i-+u&t)-)^jwfM#RHvRHfL3qXZgZGE3_;1}a z>0f{UR{kFB=KW`X|0evt@@c;3sPQkrQ`nQkPsBGr%6(f`pQph~$@>}Huf+z2k9ULp zTEx?(#b=&ri_(L5RrUt!$*4cz+mj8bzn{wcw@X-mKk56oVZ58WUn~FR@7Ip_o}|A| zEB~IseOmEvRDA8e&y4!E`~dFK^Z(-2I$!Ee-7HW_@t0zE?5Y z{aW}xzE2y)Q<9gze;eGdg*_E%WA40ElfFOU^v8Xo=zeV!k7aoFOt4?u>%XV0@qC{7 z76Hd!yzhYVBKLihUaj}`VvcC$-@$r`^f&9px(_^JJ$pR(nfO-ag-?ya_x@+%dlhs2 z_cD}TAAHY(_Q&{~!$YJ8@ihEZo_?YK3#=dhWZzu>eMivw`?=BiCD^0$Dpy&5E!lwa zJ@`Hq(j&Y^yj`CDZr|@3X}VvUKVLO1ozvNfbhDmIJZq@ucwy*f@C&{lCAkXN4m@{wP5wCo-5_is;}hw?`j1?7Q{gL?18>(i+3LCzr$;0f@qKKow9 ziH*=NSYHJH-24D|-&D{0!g(f2x*TK~e{OVZc<_nS`g z`{g@#7Le6`p9%CU{yl+i;al|mCVYQ7#BbDBV>9h_@#MSB5B&OffY;*xy1xJPx@qs! zN8hX1nbEK4dlj!_bm6)1Jp$spzV9&sDyaSjyLtCm_-^(hZe zorenK>3dN2`%(0t)}sS`^*tz+m%LZBKO2 zzBhpN;3|DTLhtXQeLx?*UnPE$zjF)kV+8#4K2^Z)PNqA3(EqBk??(u~wr#6Nx@iym z{=|b1dYbd2d+y0-$*aFEqfb(wZI82UZ_DcI!COc_n9=v#K>D7Hu3t`C-^VcJA8T;s z#s9&ZNeAVxCmoc(mUK{l1N%oH|0dEw`BkJ<-sr!KbWmRJznb#w9}nui%%J>Aw)a53 z-uv_AU)OtIua83}@!zTUzJmJD`(D02w&}gtK;I6w=Rls``?K=k-@+Z7|Em6s{(A3E z^3fhD)0*J@o|$+r;E5+{kze|t{bPMFcz=lXwNvkN1^VgzFsmQyQ}59R`n5MX{UrY$ zy(j4XQLFd7T>HZQh~5+Q`W2%0gDy$e>AhOdzpah^H?Y4*+SOM@`o#7pK>Pjcoe%Ad z=vTU4iRgX%Xur$P@BfpZ(`Q^uZ9;zT`+pVbx?9(|{IIVgZCl;u=#!-H*?mt$&yT+U zKdxnGLVe7BCgYh|ovbfAUSqu9yEmq1FUn}hL%j7yMx#E*wY-wh9`O@i?b%ZR$uZF2 zN8Liwdoz0WLDI7`y0Dfsc^Z74lkDT)ntxo#_7c4(h5gnl`HOk9{=2hE{w1yN`3^<< zk>gs{CG?l`-?a3VD*0deiATZrKj6PSzDM&j+1r-1Ier+Afag^lALKu**G@_IH1A=0 z7XQ^9s*C8^`(-=R#qXYk_2v9GB`q9A3V!%s=mUFes6TBs_mzVAfa)W7??L>+_W-Hi z&YCt9Rh?@;wssA9?aA8}j_icL29RUP2? zKRYWw`N-rbeU858OdnDI^7Qw5e=kn&VOoLZVNZGb`P$D1>E-FCcYZpeCsj>~=-;37 z`;LbFb8p2{PVK|^tsRs6Gv7!5+~>|gx{L2V(dshe|B?SwD+3z&FG!QmU4egEy5xsr zlJ6LP$-e(D<5%X&UxG|{pS!H}vxdP`M_+E}>G;2IF#U6eF310&y-Z54NLXUH67QMy zUYuO8BDo^D%F2VkC#A{dEHV5gqvM{^6)@JSbY%+!E_It<`D=xnxS%QDy_vK&@ z>}AU_>DW&I|Iadg>5~6_4C|}3_*sf`=}Ad(W^yj*WFr1Uy3hZAj$wTu{}oJ^Jd+MP zyuQf)IYa*+V<><6^2;wzP$4s|KH_&3^Z(B=$rFNVIQSFkBbU+7{Vw{oGt>_?k@>eYy)e*E?K!94g%{@ZyKn}|2l`$3$+m#rmR$JZSicJw zpP_y{-|FiBN70X6JJheNEuf*_1v&kG{S5Wv_mjMS7o5g_7hI6@-vu060{t%dL|Z^_ zOD_0OtltG+IYa#}0=u)(uL9*m{eGb>prPOSIsJa)4E37=c3!{pPvgJy&(Hbq{Anm3 z=y(3d+X8x9a{hU-e&>Jn4E3Y^XQSU#ln?d$SX)3tzX>`0e)A0VBsp% zNix>an7?8^W9MsT{xE&{$okd%Iq=`FqJB1T8D{pKOlSlrziiG*( z*rHuc&FHV?((P@UEd8sw^snUT#W{LWj$V+Xe>F$j)zwU%ln?afY!1IHU87Mzb9Nf0 z(|IAy*?5bbYF!tp}wPx{5} zr(^}vzV6e@S~dGbS^OKyW4=8`&D+LP`Sw;;OolaHf7GH|@XMFu3UYV4Z zOr^&a?_&HcD_%PTHI~I=rNwhg*kgnTh*wLC<4V{=Jbhsadw^*0M|?hp`InX=-c
    AL%9JzqAzNi{xK>>9tJ%A^eZ^50+<-Tw03wmhmxY_L!xmh>yX4d^%SA@lWTl zd}(n)NfwVu-uWf$QId!DR+0V(gAZB!eL)F(l+&lQIJsm>M1QiR($Ur)^0W3p-bYL5 zVPF2^CE0vU@;_0M&5uN1RKgzV^MAU8H7XkXON&!VsvM2{&9Q1eW$6cLV&GN=Rl>esug>;Sw=Z-DL{h9t`{Vgp8KC1j*CVv@}XF5l` zrKSJ3P5)-{O`op%p}&`w{x8)B^K--s>x(0v>Pz-~Xbk;_AL~o?$@bve$GP7Bs;_S( zA40md2lkGazWApSQ~!T1{a{}S`HfG{8)HXgtM6YV<9&Ig|C#jj{`&Le&!hA|8bf`Z zzbevyp8)cleCf;f;{Ek!$)DxYIU;+1{ZaBqxpejq`AhW?;|=}C5n29II%@|%J3cdg z3P|-ArN?+QKAkj%{=`r1VQkS@6P7PQ;?l|JKPqo?2mIAvCu@BO?P*EE^*itX509b! z_?4LQwl;0~@#&w8F^GivKzkmaP8>sf@w4^ur^$yw`1bjA+3V}$Pm({0(mx`5$-uPF zKNfWO@_#sn_W1hxy5Pg7kMZM!+S66ZN08guQ&wEDLhXaqaH1LG!yhJp=+iO2rPod& z?bh$oKY$@&d4o3}%f@@7jq~^9v~`#WGW-Rz-Z!>L@A4lEJ_&Cy-x@9$yct`xt=FcP zu4rwgLQekJqV=XtFDqU)tQL~VkLMF*#o`Rjhh-nmY;q%XDYWo$8?Pn4$D6|?bBcs~WX@w5C{p5)TWX8n>h$2YZ4Gd{E~ z6^-#p{X3OB{F56$TCY>O@B{t3Mdj5Vl>Zt#L&o^1_PA91P(<1D%TG!_ zm$U@wlhP|Mzb2xqt7*T=gFpE#BmK{Y-=y@jpIuIx^A+&Ndi3Xl^a+#F%dd>->gs?- z{?DZ|S-uqdiofOe-HadAGwI@g#Wlh+<`+G4DffR>9yILxEPH@kzlFcxXiI~CetoyB zc*PZ2y2{U-nbF9P_OMLx$5&9l>c7c~%gE2*+l0x*%1hz-WSIU|`Yp@D^wMJ2431E) z|5T)px5VkMRjPc}zt>?!+4C7f}!1WQAoqmqw*%JiwhpX%?{p8cX- z{cJuO>N6?*hvXlSK78Ru^{3L};0(1N`djk5XMBz68J*1F2qr%f{U#&x+gCOJ|OLvQQ{<(91SiZElZwBjE`bvK14E1;859vqVODAJ~1%Bhx z&&waeOVO{i(jRWTqdf&sODDVe+Lq6U@|a$ybof*DY<(r4-lKFkzaEl*@K4si4Kpf1 zc>ng!_)wEI)jY@a^?{Dn~ji2>@(+sA2{~w&OIHGTu z@l{W&{j37*{l90%AG>to1)hP@4gae8kn{ULu#pTn)RPyV&?n?U*YyrDNNPk$d&x@*sy4(HQv zP`Vp0cD2$U_*s9xJmV@5u6>jichC5Sqt!m1+7c@2v39lx(Dgr z->=S~Jl7w_r+Zu5K;vh}leS|a|4C`%EoQvL0uIN6bY4yD-|y@V^N&vt>AXzl-{O;v zo50-7Z^x$xN_U-)|kvr|(v}^Y^z7kw_?|MBUbR{94&>;Ic(6hS!uF#oHdW$I=H`!lbH>EqK^ zWe>90@#eXmVR~u$;^RhtgV&|$^Xm-#-`SrgRHQGw8s~p@y-EKc#833U8+I7_|FZM3 zwzk+mKe*SVqkqC*qbmN~%Y2T%N)c*&V|H?mGw_1CdAND`+ zfGyAQ67+)wn{Mfc9#Tgs zf30l~&c53=*mN^LEdI;Gp}dmf%A^AJx%L0jwCZZv%khi#RlM!CFn?*f;jP#|_tjhb z#DDs7ocH|QBw1z}nfXus;g-8&|E+t%(9VCi+V(q9@=DY7PnmS*zqj6s{deoFvAnnc z*5o(sr8KSk51Id<@8sg@%8RIf7XRJ8DfU-gUF@%ocV_-ld%NTA*k8Bb9?GAT-t~k{ zxBX}1#xT7!-SjP^pKEV-+!3eW`E8SK$Cu(=cg5*xkxo|u3A>MHt&^9A^;qwi08XxHBU=5MUN)?bCc4BJa-`k!7f`HlZd z(>cS{^v}uFwtp20VS7P)GxtU4Kh?*UEtWs$$FTqJp0W1I|I?R0^K76$(%*T<=C}U& z`{!(a>(A$&kMo~6VbiVtHGh%mukqsV|30p-e|W+2xBhJ{|FEnjg!5dfs-XTmQDVpg*3A zfB5F7vA=_}h-uC08kJZ7!2WIHwz&MP;aMt=s9yR%QEBFP&`puQ(cpl|JPt@K&V`h!3IX=}{?*=J+_ z#^ZHqy4CvE*xTNM_U8P7??;rTPhP*x@VD)8)nl=K+vgj9I)7}bY-4^K4@_U)^k|%a z+dSEO68fV51Apvzfc_)>AAKO!|37~tv>)~HNX+jM>wn|l_Le7}$o!-Fe60P^K!5n> zp_uV*T!K|Hr_e?JW;I-{>d*Okdv75tm;T_1E^6hwt^}SwHRVw?_7_SreD< zsAN1d{0{6>|G)nFn*)DLUw+FiasD-xYn0#huLn1Kd92SHZ@k^ev-;k2Q(S)S+S?3& z+nye6^yTUATPkl6f8&qo%h#`u%imPV_(c6t`rdl$9Y&t*&+FF3`PWyjSANqz+gsqj zQv3tQn?%QtO`%de|kr}D5@{rmRY?@@kNpBpyB`ER@JF2m2-2meL# zHdU&9ay?Vy!}q@xx7Q7o8zj$+ztflBeRswmc-Y#4DO#Sb;!?X|dXSMG;@67Up zE=}*Qyj%R7{qRp#p5yC3z7@;Av+_>mH}zXl{Fm=!>F_uD*S9lT{5Nh4`_J^{-#Z@2 zM?81WJz@WDZ$W)J`AewZU3bOf&+#{d@<{()<@dZl(7#YWuKXW!yn5^HIREj=w`0a?(|N5{0KG0|S@^`))&tLww@}DKow9odI?|m=UcgLT`{`$cW z;_`p@FMntF%OCA6$B)P5-&y^R=a2FBKmX^r{I^#BK^M8!m_P6#}wZoSuer#I}*bmkpHwN|d{O2Qo74q+D z@9y^HIli`!y7i9q>Axt*4}a#zKaSh~pZ+#T$N1V2wErCN>s=P6ceP(p>(^Hk5YM?B zhDeg{*zb2^eG|w_d3LPc5$My^{>UOPFZKP$e^mc;>*viu{Vadi=v}h+YHP38SNQUr z4{uz3W56Hd;h$XlL;tS!-cFyN>%p5w&HBLb!}_J)<;VA!E7HxYH+z1VfBM(>@|5?V zR-5sV;nj*h-@a_0n@4YstX8vNU_&*^2)Mw?&KJs_| z2G$cU{{-ZJ=yE5I7Cp!IjsA2yI z{3*!a)sFF#$tQWYZHwt0J7RjvmYBZr#+cr`Ii}m%VtUb{m~No^YWlzGuj6)$p`m|G zao)UYkmnQ6VXvCv!Gn$-nOad({M4sn`mx6xJv_Cd3gydC-tF%epME+{KX@=sZ`RRE z)u-}}pNi98d@(McJQkhtNe_db2Uz}w?fdhgiV zbMM}`eC>W;emcs(@`_7Wd+plgXxVrEUY~ys^1tvxoc_uyKArNs{IW}zzRx`4Xz_pP zrI_Bm+tI4;<(FfAd-lZX&pZ>SKmWW-7ym~ebu{MRs^ae5EbvsK|1RH(T`mHlIN+X94&bse>~2A z`Qu8ime`;Kn^{1aqCri1N+*T=`e0GdZ|4Y$Mb7^!Shpn&AnMV?w6we`TZGfNA z^2^@O`uwW@dHS0{{(1k9(Zl3F|4El0=bzHF==;q1p);XhGyORyU-}cJ|HR}6zcr)W-&kYvPeJ}44Z8e{cQigU z7e5p4Kz~fvDgQc?U+qbM%l%D)l$F+(x` zGV*Jh*Mz@j=SM5jL$%^>{aL){34M_v%U|5xevkaR$ugo%Hoanj{oo`yw7v1ZfqpM%#FIV|ySN^6_a<$b@<-fnt*FUuk@6GAG zWV;?l{To$&qbt7^<$Zfq7H=p7bMX4;i3MQUmm8{^-B(VrOKZ zQpbF>KQg%SzF~u_AN{|wxPHB(rSEN>^zZc^Bl<&Sam|`A9plNw7wq`J_Z>DczqkLr zbz%P5X<0uj?g$os<7oz29c-5B;xIdXv(p^L@Z8lZ)*5oyqpU`zp_W4*So& zt>CZsK*itmzpI@6o+%~QTl+2J{CJi4Z&vyel)qW;iQa75AN=oW^87i!K2l2FANHT? zuXpLP-?dSDmO7p&CAVe$mG-?VkeB^w;q}~aX?FGfaI@nl`)|I7`mA&58>9YK>R1PT zEPu=gv(qitlAqq&QhRN`!}HsO^au2Q*KL*`=I1MuPHWF$+Vi$MeSXS!%MV%q?XLdY zZ;I1*Y-D|UpG)(>kF>t>^U1c`79ic)6Z65%viD7{y%*ii^v#Ap(r;4wR+rxLBc}WQ zeCyV*{!&LP+5;JEf37NSR{1+wUhQ#HPTu=(CBIvoK6kYR{4jql+Fpxv^Pc8(^!Kgz z1?jNI^EYvS=>aQmW%14jZ zrlbFtq^tC0du`73mjyRdzAcu2RdJi@zr)qP@D`>owCS1;xV9ia^|zgynZCo-fB!SC ze!QPt>R4P#HrxJ&@l#pcw#}uFaJ{@k^|jghN*zx@UOQfvF@1~D{d+mi+X_fppz@m_&yF2V9_Ul*cy2e6O?ixu%HozS zE?xcO!ABge{Cl9EpIPicN%@re;!^Jrx)&E z`twfTb&4OXbnWxXgS3b3U$EB$()SUU{=DA5eA1T3eDpX@wi^8~eleds%<}d%Dd-%9>yzslmvwJ!fK=i5c4!jj*pKqP)cy@HhUPoj*{2X&vsg+Fh*Awl~sWd?HS- zdx`5;Ki;2_e%W}({Q9`okLJOGmHcPG9*xg%|J}FOQ=zkoH1*5+d#U5VZf6hZQ7%oxHO9CRgX3gPsMuq*yGgibtlj3i$ZzI+Zz-1 zuk1ZU`5zbA_QZYF*=e`ln|;lW=gQ)1`@`~c)3?_J^}#;-CEtG6{s&)Y`|q*!mpb;o z#p*O)qW#O;>wSC7JOldgiTIzF9zVPf*-;1j=O(oG8@pY5FXQ{sy|0mfuaobUS3>#l zzPa~TFy1iU50O{a;~wbzAj6STA0Z*_-oY!TUEOd~f&I9@c-1 z^@AVMcKGng!pf%o<-ug1vmnx6`TTW|0FDF1>7$#0PSu>LK_ zYrOO)&G_T|HFQ7IhnOyV^zR~nYY(*d{Fk`?vHF7^e1YkjpJkt+=SizPf40$791dee$sad?q{?4=+c{AU!zYV=cc`|)#(#6kl{p;34KJY2lsdK7B94 zj(_Y&Eu4$jOU-%_<8yXe*U9`D{$%e_XZQzuT+i`o@eS?Kl29HapXL|6UwqWHN8d)~ z?~{Ev{_6GpfI35CKJM=3_%`;EKZy6Lv-JVxS#S&IE8kv=Z+7$7$R_YRdJ}2+pJ;#1 zkKLdpkD2dw6hNBtoFDo&GryGw_4n-U0qyPAp!G{OKbAVW=O!g-+SjKQ!qoh^?5<-1^LJ7zl*gV4ESrkaW_vUUk8OP@UozjHRe8=I{ldS@9`G*?IeCCru)pxNhxSwb1HpUI#OIzTS-09l z_9zHXH2##o!QiKr7wZkZCvW->^;s8v54R>AJW$B^sr$*!Qz7 z|MK=GkN3+EuTK~3A7Xy)M`OOgcog19U&uQ*?aRHl+`6!p`SFMO@m_SptN3eyG}hzg z?ZNjHF#d3V_SiurW&CGgJyl{}mQeY+-I_1>Pln%-b@*%J6#NJJmA4;D6yM?eHIwb% z+K1k2=8!#8%c|4ajk7`Phw?S)(7_=PS$&%C8J{>8|G13&29rT%cKqsI9RSHW!qnfg zQ2Tq9o{`p-lty{?P~SrfH9s*O>!b4a{$PAeqI~OUpE}BK^lRIPzh?HTPG_~w0J`i}YErhPO<5q~-_9qgli(3)|jAvg#B6w+(;WUr>L;8%UQ8lzz;V=O6@qUV5UhAAc2w z?b!rOx8jkdkees8<>Q+sspbMlC;uRjc43w?VXru}^T9Y0R{ zE^_I;ZCt?0UfOTqe!bNP>#g(B?l%UIt~ne0tJC+^zZbNAs;~d8u>R`w?7Fjqbnb5# zKpXrep4MIG=sg^t_18FB_*eLTKtuoTqpI84tG9u+(i&i76Ux`#!1b!|Q041>p!I7x z{?YK?L|XWx^oFZRYkrjc-N#OV?zZ;eda(&~#;-d4Q1^#G>xcYUKi|W2;iLFB-c8!` zZ~7r=;RW(*J=|&SiT;D~x4ZSX(f3EBtvtZL#@k2->(g6FYrUxYy0^1$YW+U41o;bh zk@n@AwvzVcTl9V9Y`uu}>BAgOcM< zX}^A*e?MvY$EPv!XQOt&f&8sLULbvg_<;0l_WQ@6 z&rACcaeVaS59ded`x5K3_NP6x|L)~ku!eJkU!M>7{eG0k{=jpzr=Raz@O|aKH~TTe z`u>vk6SMXNzCOzSto*PSzxS)Thw~$7=%f8G8^-}XTS6=!KX@7gbv>($S;{24!hxMWMH^py{?6Z^UMjqC`So^y}u6*HHu1Agi z=zpHLgZ26KR^u}bplyFg`hqP?_xxL*X8ElDVg2pbACTAJC*t|%BGXLv?|}y>kIKvb zi}upD_4W+DHz0d1c#8GQUZCfu#{>LXg71B_KEe8B52bfU_yT?IV|^#6uhIwRWA5FO z2%k1Vp4L}F{`7Z*eQZz6A6PH#=X@^tWY4=`N}`=(3B_{VzsEk{e9CH+g7pFijid4+#kkH~*8@AG8q56B~Y zH+V#TZFLk~@(KTYH9xQp&To)U>$3*Zs1NnmalG36Snm$i`SlXNe>|)MsV031^4Ip! zpJN^1hx8L#ABn&G0pho{2l@-XcU)3kY%kP@^}|uue$sDX9mh`t+e7pT;bFF3i1C}> z;|cIv^JjqH;19fr@OxZ*Hs!~~=LnC*f6(Kv%Kt3*8;_G3Gr3mgA~5{^-+MYsy~mXjR8Jx0>4(_tH3qLFf&KDtD{f82+mt_B8wvWNX46ka^;r;BJS$W{!an03~ z2mGqj_w>Jq<@po8MG5OO?RggX%@^LQ{bcVJ;d{1Tz7m zztozsLOeo$s!88@(yjL}f6qr_wLNU-CNzeh%mS%Lq?V{vCh5PW%IW zMEo-HFP9~luUb96jIjS3|5WXV`3?JR9*>77Aw7?$?+CxOzESxAPqm-BFrhzT@L~e_ zdw*8)1^%ka4-0=izW{$nmau#de`Ea1{9DN{{&{>ZxN@Uqtv1`RUIxzrk1PGqQgqE01*GyWU%pe+WABKaD($KMWk;-0J18O<3OWBYyN8 z9s-%I4`Tm!6W*&E^8O_H)7-Qn@?WF%!5*#;&Ko?B{P`2Up78$c@MP528{u00<4@Bubk-uA={z>nj1nKmj2S{80)$BK0`^(>5?EPKH3wd&Q+aKaB z>>uo(qy6BoHgKt7@Rk1NqJ{uJv40)-$7-KvzfOsa4A5NV5d;8))e`?LKG#6H8H zcs=kc^D8DfGPMl&+{674%7FC;>L2VOo>2ymw^rYol(+W{mbd;k=o3BcPqu#IZO;&B zgXc@Q{w&FUNkQv9wC~Yy{fGV{|5yD5`izUmnm+@7S9C+<@6Jfyd0Xp8TOah5Kdtqf zX`jQ??;WmRVNc*~ZvXm(-@g|B!JL2GsQv2(;wj3T{bg$(te-Oc_VYo%@Z00jp!Tc1 z|7-TE&3>EY$@#wlS$?r!GZ_<8mXM~Ua!gJ5BNqF2ueK5Yp z?)MIAKikV2;JezZQTy2ezn3|`i=X6e7QXxP`TgpaUCi(GH~Y6LFaCKv?$>^`-`|Yz znD`y;FQYy3cx>?2^AFYs>JO*F+ol}ep3r`{^)FF>u-~1>%bE0#0(_T##y_|A!~D?i z_j`vK56DukkKZA_vOnhWbx8O=Wc&X~ z_Lp<}!+Cr)`_(~tzkdvQVtggtl-qA@^mr@zgZ*pa!(hVxWY!mye|$X0d=ug|>dWKv zqNK_3n~3xi&vCxX@OCV|2mUhTfj=4G8`lf9!t+|%PyGYu(Rp9(T+lNwMEkdSe1?At z{?U4%I(`4Z`za59(7!sJ*)!8nc0Z|J{;=>`_E_ls(V3Ge{{i8F?u*TVd=dU(e|q@% zu=o`$e%6Nj*QoEz-ZQiMq~GEYUx5e4UmoWCs`>{!UN58l-Z@CDF!rOr81C0D0o@SB z@3}wh9(Up)g7O1OI(k zcz1~Dv>EKJ{bSM%j;?=$w8cO0>#rmB8N4~r`S#*cIR&#>QE|2W3uvG_WW!`Bl(9bduU;A>`&9KNbO%zH*dR8jHhA>pl! zhhaWGA-whYI}YATpCRF`ou61Ra7$0NtHo#-a z6X5L#?QQVZ^E3E5Z02L)Uk-oA!CRwmh^HtY;IHsIkB=c9PsMqu6Y`I}JVV~U75_Xw zx1Iu@TeW}e_eaOUWAShD@nYG>#9Mv&fe@c#|8*JTxdvZ7eg^(B_(lG4-rrUIAs%yl z#PMACOV4q9Yrd0w0UjIwHHXK6|1ADZJ|1i5bFHVfe<}IH{blHr$7{2H{f@ucg208wl{2c-55ikK_Go;AP+sbAD;X18A6S-273HKdtd7{szBQUmhReU*!Gm z44(^Dex84G{xj@p{NXQH{N(tE{p~#7#&|r3co_N5@K5&-1?^RxR`*wf)(`bXcr5t? ze_Hs~@9`D+=cal5eBa>v0)Ex$6iv1IC)p>D-@PU_CI52*@b}MJ|12wy`sbz*{sJEY z{8V~Ao_oUMugchK4h48fe=~@$4le<} zcZ_dn`!DySiDecq&&uOO;U&8LOPUqyNEf2#e1^Ha)SpToyf?H7*| zpB4X;osY8mW4#0aMfm6awbR`%4&t+l*Nn4YEdBEMX3j_1`q3V}+TYijRP$y2Jk&2C zJ{#e+**~`PCFb)0|1h4$;`OP{Lk02I5zZeG9)doN{bRLX6u(9Jz@L;o^YPl#h{uY5 z5MPzN!G5vUSAjpO_41(iSB0nJ#BYV41|Lrvk5&D_ezDGz<^9#rKV3robMe_c{ssHJ z;velVqkUsMLwn@#E{Mm%9{G6ejCAPe5XOIY9>?I(ms~tHir1R@J-!M*;&^O+zc%l` zVm{J-){w*3AYLneK|B`c$>DG9<$hS^uVOqM=KQApHt7?`XQTM7+Bb~H(jN`tu{!@4 z$78G0$-R?l4*rBcVLWyd`+FFV#r=pN9;^P*>*KkwR~(86_6LbS!aH+*LVMUcze7BGUsycjCiph45GU`~vY?&9~#=G590?`g6o@t$onGQT$f*jf2OkFYlj*@!OyO zyt4dD@elA<@|;HeR{2j7znz5n$@$Ac{8sgy2L6hF=%3ObGybW^n{n{h*e^O?ocY6c ze;WM8iQkT}y(2sZ9r&-{ADtIg{?mxxDt~~-r;6XAzRVw0`(b|iH;vy)z5riU|1U9q zEB<*r&+jjfzuz10FX!U7;vd9sC4cNsj@=*rdE&QUIeGjR^+)kr)Sq7u{LdG^ojy1{ z!#CmMsp7Zgy85OfT0i9Dx6}Hk1^jaR*TCmL@BQ;2{p9gmYyV%F_^s728R0GHv3UD#{Fe5!`}MF_ z9CS@d;RB(-&%cUQoeWNw@GJakN-*Hw-_MaAAL7| z>+n|o^}F%gI?O&M9=U|;jd$a>oQ)Nq{CVTI2ppUX9+)qG`SIJ2_J5S}@u&4naGnbI z7x~jaQ~Y-7;8ep+{HoJQeOR8G-%0U1AHV&J*1yQ|kHz1gGk$CBr~TmQywtBq{5I=9 zzpC+DtN-w?X#6(9>woX~Z9X0w#d8@y_UDr{Kjh=H`SZ#7_bW~}ejCJR4PO8B`?Tmb zh{ug{pO)v3gZ*a3e@_*^&EsJh&t?1}AFmDLx!jNa_l@70cBL?fzi{|jot`_urGS32 zPZ&?-{1(KAg`aVJHI5fA851uy_jhc2Z{z*j&-LMSsrf;kvGLdFJqw**a`wP{Tb-VB z;+(Af9=3lFF9kouKg0X86Y}wC_=i5ei}A|yQ1#$v&mS?K>f^bx$B+H_XPoEec_qe1 zm0$7FD4vUS^IpXuWrRFY{1p65Jl6Mr$fNf*`b~by6W+&-Km60rOKE;Pz4KB$&&Bo|qJB8fmEG6TevbH=^TYQ3I_9gN<$VilKdirS z{~~vOIEdFupK;!o8lk?Szj>PRTJbmMr|kY7JRo~(Z9w$ zFC}~D!yvVV-%Jb&r*Z#Q@=D)R?Jvi834d^$`?oxQ9^3~K{~&&={`GGWzx|q7F91Kr;&pugHo|+@ zlm4c|kC|iRyO@7-@o)5e zAGYt9?(e$$KE1l{qx-O^FUDu$&#BHc$M=0^qyy1?U(6TL`DW;+`$q%r{Nicc2ZB9K zyw;Du48IHI(jW4g^Uwai!D-z8(R`6V|2)q9AK5FsZ)@)VbV3%7kHL9p$dB>aGYnCO z@CWB3Cyd3%;QkNtV?E&S3rW7g-%&r`pE|+%DIeB9cyGDZ-ESS?eVe+s!t(G3bstFgb?_cN{Yl;z z()nPGx4y*TJ0?b+A7(mvz&^+y+%H1?@F!~rkYx46etBIjO)Fa8o8hh$`l#aCNi`t{e-7iOJiJ=9lE{50}yiv4NWi|<2ASN0Fk&^LGA zcA$O;<+TRX`y2hjU%mGT{bKy(d~tgC8{w_y``|qb@gK_FCyL**n2`=1)n0+^-v)23 zJ(khG4bDfYeaw1da0--yz8U`NeygcZ_isJ^jC221^5*e(NcV4j`QUuB_=osA-Q2&O z{8R83{jH+7a%E?f9^fs~$KtWUUtfQKztT6rUn5WM{_SbuFWNi6U-1v{*6cUEJa~%xwu8EFD|{9I*q_CG@jU0F?E5KW@pn-EZHCV{ZynyZ<@>PSKh^se@%`ZP z_SOJziO11>Ug($KFAwoncq+X0^@n&XJofQf=m-3X@CEYfJ!qXLQ~wM7TlVLLe*awa zY4AM)jfebx^$ES-?E8NnkDGK~$$oEy<0*IF=!EX`syy1iCS4TWug&f&`SWjq|BL)N ze;M{Wq5Wykul6MOXTRzE*OL=J2416mf%lhu)5ULQ zr`KFlV0mK?^xr~m|M*6IUm&yBjI_U&t+?q+rM%gAo1I>9g-_@E zS3sk_wQJb-);fD#v4Qjzj=p?7>B~t=pO#M2{{GO~jjf<wCrZEU)^+zy4a%s!#K2%T=U<`ZjZX1oGZO+RJUo zDNnrIv4eC_ejDlRd$n`ZM)Q3h>mOl1_ztG~_jcDl!13ti*}0SS4%V;wZhnZg_(`7y z_mTGH>!0A*@b-IA-*epMdC25%v%0Yx);EmGETW8%*EFbk)~MR_Q2XpjXz#53XQaDJvIY4;-x=w?qteatpOH4d-OT)sK6ISl)5&PW zYwKyh2L6-o=RQ?W{i!2pyl-5n=l9^$ClIfJf35e2PfSrd^{uBo)S2%c1MmHN-Dz#nYLT&DNbSia@&T)N6P{k@}=zrH@szkapqANsG8X>Zj3tvG*cYn=b`(K^aE zvYPz?`RiA6Y>f{6x5?0N(pY)gzV7%bf5RyI*67Hn>@jP3OH05X`WC!A;Mdi@etj|t z1-|hy?e|oqYgV`V`k;SPQ&1lAw0^_YCw&^dywbm|EzVzB-6DR_U-GRTC4PDN^7^;@ zt>Z8I*8WXEqyBZH8t=4^>dWibY2`*cnUK5OdZK1xC&|j>*QJ?g${i@Rk@^`g&b~=8`$Zx^u!puIZ zzv*jn{zZ%8{0qH3#D9L)9utgx^8I(?UkCiAbhX3&S^KO0tCt1oCu#o;e-)&oJlZ=d zf8|9%I?8X{81x79zuH{?TUqesCqVxu+df%;zxwK+Jkskj{nY+l?P&j~{#C0ts{Ks+ z&sx4=LtMVuwwDzF!qnnf;{R{0^Rovv~H?`*#qnH9s|5AC_!_~*{Yj4{0ub3Ub zGi<)cSdm^edX=eP?cdeDYE_sY^T}VTKF)u5zX$WdR~$V&9rD3m8UL?x{tM(pnP0kA%A7Dsc8uE&!haHtBQ3^ zWm)>6smX@+q;CCEAPn*7Crd=HS&AD%qBn^yEyW8PqNh$^{!YHPY3MT2izYiIt*DhTa(alT0646&L{aQq?TKd(9-mvuR z5q;&-Z-(@W27aH+*SDf^>9-6$G9f7|uF$8clc}%|)(fY?!}hG^ryPy-YN?~Slysto52Fm$+tboI?Zs#OE7FF!4M@u3uceMv z;17+Me;f0+nfw)*d`Fz{kMU8F?lkLPjZe}q)XF~Q z{S3q}HiEyEANi*h8yj8ykf$O&P|NkBwGZ;QT%K_JoQr=H|2Jz@zghnz6~z@R*tNVp z+b&NovHAaDYI1flSuq3Ymt6EO6OH}qO6rShAL@5qz59MT`d?LXz4}kR{hoWNqoI^+ zu=YUvR~D~ncKNY>ttzfj{$`hd1Ndk5VE*r~^7)s5UccVaviFVPZ|#BhuPk19l}pF@ zzslm8HI7#P&86gOD-YVgviO67OUL=Is^VJ7Q*iR!TuRQi^30^Zn^p$-%c_c9%Af6* zlsdM6zi*$);?MFzvHJ_02*0^{ZK*)gSZWy``kW_CM*fa3#~*oPBm| zh~>HIu2!ULKSlCxztN|2KeY|~kU{q2{I@~+-stpg`60{eJsg$4Dzay(68UHaXp_{sII{Dw%sQb%hkdB2rk z9g?FK%+>uip}+<9pr@qP!o^RmGd6{}!kJx@#Aqy!L;ge^v2jrQht* z?@|1x+3|mRe!w64J+y)47h3&r{^9bZ)6c)N(>rgVe7CsrH{BGMU--1!-$VVSjzzGy z9e>MczXjJb{Z`Ars(7p9+wA0fQs4W0$fe(=^z8ffz=M*ofb9=^R~9!v;OfWxR9U?3 zHb*19)bY#<$cgVwXZdfvHB5)To9W+b|7&% zLHc~f&u+KvQB~Y3d$l=x-hT`AyVKe8PNm;r)3HBY(paKBw{bk(q4axQ`Th40zkPe$ zuJi|7`A1RS_D7VjENu*)X`&E9CD_?l15y@6R*n8b5vtQ=yiScr- zwI{|)Rq<|>f5MfYuXyKtSO4=1eErj5pT}Ns^`pO57Vo~>rE7dVx7g8oUw1G1Th<=z zpYs(D@cdtF@%fp)=WfcM>0jz7t#jWWUdI0Oq~vXJ^0qw3^{(f4|NSAqQpd|XlQWUQ zjn8}ic#yo0w1)Z7e)qF}iyxTZo=|-YTz#+H%k;;ceRkFQ@=LJ)+}OhX%WVI;s`!-3 z*E;)iy$Sz`>rM1$jK4?N|Fik9s`$9_FJ}G`_P-~B@yPk6Zl~6l)Ms0Q^rxQk_0xW} zipOO9DvOUl9;dfG!S#NoUuE$}kH+b>ibq(y2mdFZjMEEGvAmuC(H@UV-bbB%+8*bA zkH_CIHryNhV|$rwmorPB3sXA{jt3L<>Y1NRsG}__yd?vz+dZkt$(l| zgz|p9D0-jPpVC)!i(k)6zJk_=wmj?CdM8_Nmbbr_yyoi%o;7PdCw{8GMe9eqKE`~p z?@c#fqkqm$k86D;eN?|$FJ<}5+xI8?9sfDVKYts$vg%je~@`D)UZrdN=z@r?S- zdd}L<^!LpyZ`MCk@!qYC=Q;ZwzlG_?UHi;`gzIja(c2cSO1V>REZ{kqq<@@kL%PDiW0W6yE@=IgIr6{MrSUY!r|@+??Od{Fy{f9s1Z zFMEjpam81C{foPpzuSx_tdAGYg|}n;nVHnTe>KzljlE&dx|O7}`93?}kgbPduWLEq zdU?CCA&l>*vApVEa2v;_Pw&5q>6Sm{`(w`>1Filc`Rg|@z0TB+{t}*FVEme&2%imeZ%A5AMgS7M+;rW2V z?W7x=ehtFAj9(4z%e;YfqYu}cZ@uZ}LyWJQ^!VQ6E}itzqkA(N>7|Z054ibI`41n~ ze98Sr*{56UkF5R5+ZQC{=k;H#^~W(MU!&Gbc05BrgP)Qg{P4ZrS9sRg;w|RuMaj{O z-?GV&=lI-Y3T8<8yBBKy=Xe}t9-J?lo39tqJXw>5utbcxw6^{ny0@T>sJe^k(5z zFWXn`*Rzk%Ri7D%goS`G{E zNsE6^@I4KlKWJ<$F^wgZzx4omhp`#@AJ!9ZuLIpU1^-d{qQmp?S1S+XecQL^wlc)i zXE)A9x_+=1&ZC#4o8>QjVtnFUq5=;W?Ag z{zs)h2Z{9WInaZ@vJc`s2JNwq_Q=k&*{JKoTKZN&RbU#tg>{ayXX_s8wKsGjmmp5dwGJnuogkUrbW@I8;Z`qx3qCbG|> zMd}OIKGo^0)>+KYAM6eL)lojR5A@Z3`9;=#GijfGeP2v-lxd#^>axhSSKSegr_3IB zZ$aM!&)T~>{cs(p9{p6l?hx(S@5E!3|%eea_8+U%x3^t5pSE&Hhd9e*>-ul4yQ znY^6ej=s+Rt~n6%KhB5fJPGTh{m)B}>-#mCKHN_(AZb+NaTD+%`2HsBH#^PW|2z7& zcsqNZU3WHl^9TKaw>n=bycPbO{QD*u{-FQqdj&_WJutstSpX{|56_Q$sP{wU&7b%; zUcvbyz=I!hJXySj{73F0Ej*L_y*o%-yuf^f^>3%O7sfx%qi<)rUH^e@e46u(Uq2qb zk@OMShx#>c<5;oz&xF6Vg|z$))z^0e^JnuL@;}1y?D;oe&-5n8ukZlVRbKiv?c(?{ z^DFx!@Z@TgU?$B#2m|yi7eSgIIR9@}f{48lNPwR7>f2{s!pGNJkX8bVT{QZGp zu5XX5X+!?3{n0+UZyM->?1oZ2bp$wO<+3r|(r~_2GQs!|Y!fzF|G>_wNlq?RN+K?qvPqhxXw5 zpXCj{a(&qN6xWv-f1I!P`_15o^~*D~zpu~SSM>awbUxR}OZ^H@He~#?9yk)r&r2qO zzxI;{%aKX)gzpRR{Qjb7{WTZsLCjTle}LnqSNHp~{!)|n?`3;QKIuPrJN5Pa7n!-8 z>mk&K^|J0CWa9<;`Sln2ufaRS_s<0r;0^loy`1~)_(OjiyqmP=UmJX%stoi0@gtfG zlY;7V_XpVthc}VmqqMjB+aAg@xRbQ_L4M%dQR3%u&R??6;)M1$>kHn;>wTQ|HS7JU zIPYI?&ih;Z1OJzp?)!7YZqgZloKNhb|1La1{a6n@=GMEYzdBvgy+rBw59qmR_k7vk z@W*-66K{}Twtgya@Ac~m*bD8kkN4e7`W%#RFy*B`_3Jst`96DZz~G~`_p*&h55E`2 z?_VC%`Dn;Md%%C~_x2v)sW!hgp z6zqfZ`LC-zSVH`dy+xWj8v3}_JFJuT;`=@9e@31qIA0ok&rILr?DpRi6aU%mL-} zXZU3B4CmP#p0#K_;pM9h?o-oVgTnJbKCKUwU-}LTKW#edpD%p0`;92yBK$Y{kl(QI zQudPl28CaleDU|W<{iI7=zAo1nGxZ*y z$4BIk)&rn{ZywJ?AJ5_a34b4N=2^twXuoAfdhDRE$*wO9e%kik_Q&Ag>%T{d^Ge*m zAYL4^>xsGPV6gu*wT$=Og=Lf<`&-rN2M0cg{Q6100gqR@AJE%PydoyS9>C{@muYX| zm&RxCJ#373gJ)U)qyByVd)JUJdS4FpRj2Pc_8#))PxR8`@UF~H^7Q2J{#Xw0k9)k| z!}{t1JSN?{jjUAN$E!Tv4(I&Iy#G7s*8{3=#Gn5fVS6^_ z{8QsEd;JW)Wc825<6-%u+5888DZ)eGqwqg#&)A=&e=;EaA2IDuc>@2J_-63g&ev#P zgU6Xam*KIIcN5D;{x9nH_^bXL;VJm#{aN$9&L+wudo_9gQT7V_RgKq1;hFLyeJuV5 z_^R{;-v1Q;M&Xz6S@U7+-)4Ai_p_m2fVb!`?!G%G)ZrzxR~|n-{)&Hy-xDdX_h+%c z7vY8U&EsW&ui!VVN7z9OCR zl_97qe1^Z1$II&UtiH3D&L8qe_%3>2U+DkWqq-BH7Oe+l zf8x=fbpMH|UG?YuVes$w_vKLD;IXv__CLzo2Mji7eZco$&+9!e<0tt7|5o#P9^ZOB zzM+4VxAz5jP5om3Hh#~J-|Jk|z`bqgg#Nz-`Hy@5R`s38`LFr+=Z-aaf0p(2$RGB2 z)GL2j>jCLgyO`Lg^?>}{`o+Yjde$$0bYL;DQv2A z6ts8LUaIf7{8{anARYZp{%rQW+8E#IpXKqr?)wGQKWgVI-0wU>e9!hrIDVv?_ph~H z^Y4t)wkr#uGk%y4bNkl??;k^c;K9}0f37q2+x_HlJQ+OC;&zb+V1Zf|2V>PgWtA(@C*E3>D!ds{~geNw)m^Q zM&Y;dSEi!;iJy+&7(Z3T7M;J#&dWo7?H6bBG4vOn2l5NQ#b5Oe=J0dOdv7^>&*OPv zS1Z~>{0)A$xbt-AkHDAbneOY0{Bxu?34gu3gThnmFR{Ht{HHy=e=B6b>$6_@&p~~Dzgqlyaw#?-vYmXjQSA2H~6Ui;OW>89x(68x$^_jelOAo z-*EV>@^v|UJ@eR^s9Hbi6YnR_O^=29&*+~skIxM98@#pl8Rq_R{RJ_;uHDZ&i3Id4u%?)-ToR`}^LX$%p!@(?9LO?xgvR z2%laj)>(gz@zj?|8+@cc*Z&sjewGkEA3s2vGI0F^|4;kH+TYcFZf%{9-|{_!@I80t z@7DgY!Q<(CuMYTX?S=Ua`@apuFUue0dmB7nFCpIg{buMB<0G-PgHQ@0T{7t;p>c33$x#GV*p4BIO z_3@KDzMB1Kk3RvvLLbCmgs(onGZtTyiReGxU-tXWk~fd9eZo^C&nDPAkEa8|Q;)ZS zKaBo)5)Yt@)YwmW>GcipQuf4sY2GLO2pUQF7~wVK9XbUb2Y4#`^?UzT z^pNmVc!B!H;;X@HFaLn>HIO%luP4V-zh9ik)BO9V0Y1wz+B7Kg@g9g(>Kd(8u_v zU&#DZd{1NW70z$r{;k9RVb<3#d=KQ!`QHIvn)Vicd-;R+Q-z;_zm4{A_{j+w{vrHT zkDq8i7cX}4++!Qbcwd(B&%s(^t(6!1-9fx}nE2Nxf0h_z{9_Z} z_5N*-{Nn+ptG@2wJy`a)D1K}4)%7=|*DD@tU96HR}a` zeoFP{_miXjZqy(6kK#X0{1*KFUE{ZsCy3ulzh7efR{Vqbt@!^N#&1zy6u*T%aX-T2 z^T-mk$IlYK{nF1Dzm>i%K7K2G|8vK0qy1{FUxNK%tk@9+{bs(UU*O5?m-fhXg{Z?T?-z5M<&>m_hd~s?#O(tP|w8y*gTZ|9y&%PVKt%W`O z`RsS&w?nW;=Fk3o@!PLt{xQbeFFSr)uB{n}DE}$KZ_J0>KX&`WqJP=(+duFAb5(BY z&-=$GkKbB*oHTwry?1)X5A!?lF+9)3{oD{=LH{boZ>{~Xen33`S1^7Xj;H^C_-%ye z@5XQA{pn!88RIwSpM(CNJ$^f_e_A#_$sc()e#`T!K0f^)5x>3Yf8qG;8OP3u`rE1E zw;wzHu^_*R-&*_pr-R|Soz#Qnzxipu_?HpCwe~-0{Pr(;|01go^8Bw6zjghM z`n(&zMf=v7^Cpa6p5(qz)<1s6_-%xr@5XO=pV04Tz8k;geqd&g{P|w2_j31tP9uJc z`#5W#CS`v{|o)2`?%0Q zx__(vg*ZNocy@FjHy_W<-?z>02j}nSM)BEYY`-9$3;CjWuH+jhek*x{_$;QaD4vUS zz6<_QJQwxn;3)vxpP2hQ z{{0D^e|;x>UxNJodr;yRoL4sW<<1XB{w>e%)zr+3k{$uao2Irk6 z&&luK`tzpYdrrK6dqVeX{CU~n{;m3dbe@^(IsaajIS-}t!A9Oq;CJ%-x7NR9d4IlF z_8RB@t@QZ??%#@ka9$Yvc)lu(A3|P#zee+Ycs_Xo^cm878UFrlaNZaFW$gXiA)WsX z&NGMSeR2MIocp(UPYU%35B+{XeExWByf!%RtMky|eOt~i!F^nucQ)snzZR@73_fP{ zIRE?mm=4daeLz>Izt;O} z8NWTOFOJ`iy>3qgM1yT6aC`7gLH1lrse3dfg;=lc74r`m5e??w9iA9*|v?hC2@vG;{K z%R_u0(0;S6ANu9*3kCOaF+X5GJh(r^_0u@_hgAP5?+@kf;|BMKWY7Hlp#V?OKY+Kw z>n7;L`3CoSfBO9*r3d$W44(V@M(B^wM|kh=<3{+*`f~Si^Z0tI`$EBeAL%#F{UM`Y za35FmzwYB^^YPgGJi+=w{0$!a{q*2|knpURBgx(`C7v07IO8APH!|&+yKfZSA5wke z-M^*$0lrJWp`ZQ!kl}wC_iy=LXN2$QuS2>oei8UZ`?s=3{{B#~J`lf!9-noe zH-Eo2ynj0f?`fL*xtad%{*e56;@$5a`(5@I{=h%?9^<6y^!K}e-=tc6jqy5v{}%fB z`@DF+$@t6GKEUJZ^b5yvo5TE|e{`P~@0mpRZ@1AO4DRcqzvl1j0x!b*xkwN055fCa)W58!ERyF`@!M|QzqR*oC{OPGZE)XK_iv8{=bu%-?&tQhPMs(2*Zwh^ zgLrGsKU;fY{=#}CxPQ9@{VRMwIfrki|K#4Q2=3>?-ZRqfgOc6hZI9l&%GOh`r`AW^ zQzRei3-A&Afxo){tNT#E|8d{1(EM_;_baS^Gktv4<7IH4R{G@MvoLt+{iQr!j>X3W z2js2)i}4V=Z-M?%QM~N3PM;2a1N=k(MSlNY1?&g^Da2RUGrq4p7H{)-7raj)d-myl z7=M5Hbl<-S@J;ds_^$6S1b8QV2JcrWe}uo7?|Q@clcDdJ_aj4m=Xyc!P5AwU01pj+ ze?M3KA^#q6g!kar7Tu4H@KExfIK}%M0iK_9Jgf%^Epfda=S{h?vL zCmG)V9gE*cKk54y9-j)j&uZ%DcsBmN`m^*a=zeLzt$%{|F(5De*=IO+WcM{uU+#Sj z^Zv149~6XN;-~p=K|+5x+b;xO39t3N6V!jI`@LxI@V#TmUl87T{tE+q<$i3x@Hsnw zf%lsqY|7-9zWu`IES=x4pzo2%kMCPOR><;8{$BGoklJIS^>4pv@E7~Bs89GD@YDMh z-k-0Rzn%5h2#>*kZn`LVzk>K_{N;MKhtgXjf3`aPy}sW=l746(`iJt3tbF_YHw3-Dk2%i;SMcu%8$AI}$L{i8bl;;}Dg z{3ZWllfTXIr+-V|&ibRkv-z(%8u_F5l$TMy)|S>RKjuf^-+q^0_`K-NfCj$)R?lw* z^^d(@+mm~5%G|H@=cmm3%8Y?=Ka6-w{9+yS5Ac3fi}rU!Pv?Ga3sv*}^mnAL1+M;5|kokNo3Iz8U!5OL!k_ zc6y!OqqvUzpwH~|8u^#kc>a2i;`@#+MBg7E-h}=#_-X%G{4~E_qy1y?6aO8G$69{S zzh^Q1d%J!Cei!sTf^5El{T81DPCdx(TnqU+a}lYd@^lAdlX+ z@bVZu_WIo*{M_O6GyZ8-Kg#R-nWp?4;>#9}C-1-ApzmYqd#=*Ac{9@$4@7^>zPFTp zpAr1@J-|R7eUH)3FW`TJzCRi8)AuvQPx=MlQ^I;|cDjCj3+gldf$Og|YdlT=xwA8- zTUG@$%dcf$Uhnkp>LR^{wA!n4HR(>5K7S=?|6cC;Yg6Cvf$CoM3{r`=3l2&=if5#o9Z+84zZzrwt zntuwx_kHGo->zMp?}PTy_bh|<(f0{$`>_6pIG$C%>f3lfX)pi1_maND)!(e|6K3&Z z#Aokjx|gTke~)N*D(3rL`d;HMme+o7t^Ym|{`l&v4an;I&-$l0K8$_X zA2vQgI*{*C()W7#^!>m46uC2^; zS)S?QcW*-bdi$-fr@Yje-%py6zV^0cVSea4BW*g!^;h;ifEnq5Bjy8-NEg4w=KDrm zzs#ilHr7*KzClQP06+YD(clL>_U}`RUcZj@zdQy15#3x*`DioqJ)n(;$?r9n-gJm* zO{DkGAOG#%-^O3{Q~COO_7~cS`c$XC)Au_{B+dHkkFqTfSbo*%ANBBQ6#bB1oqp-~ zmoi%Xe{=nBX0+0)HdaOSr<*<<(O<6raz?{G3$DPKfR&^8t(}wsvoB39NG`JVLEmXHlOxvVLuHK27Q9?aBG?{3{Z`b+-lkoUtEu&YU4$X|u_FC$%!{}}l{Z0rqrUd8-<>3e0rk5k@#&^Mi( z@OxV-4|>+}*|VKKhamsjWHy`D$#-2c`$L@py*-(Ib}awwCF96nk$&jou0D((%6~T4 zW%5^~XD1)Z=#$7lYx&t{=j1!P2KfW|&i-I$KyOdZeorjl*-K9$Us!)d@jVyteua?_ z@{X17J)wP1Cf|7|AIkTE&VYt|XXWJklhcy#>enu=``Daf{zB4W$ zLX9Ke8K;u(qbMKBH?=dMA>X8&e1CCT@|9okNwD+sP0HJ^JeF_Lq@4XGvHu40O**GD zptmQJCdTqj`rK*BH}QhGU^k9@6Hg`IM^HYL@7Fp58uI-?PQK5drhMGbG4c`5Li=gG zaZ34qALT>&$~prY^8Id3zAv1Xe3LHVew?>oS-yQI#r7*J%e8Nr_N%h>!F5U5@5Sb@I`Ep?u+b&8#10EgvhN*2jT-zmt>ik8<*TXIt_4KZ(Nwj|c zH=xTd#aizyh{yFD)^At*H&l(kjwa`5yG)pq*~R2TOuwYbuGg_%p1}oQ zwmwWhXM8vE!}|1$;%Au%hNwsMXL9tP=IEt4`j2z8^=2HuKggv^n4mtcp73+|t+(W8 zj*c*0tMec~7qVeGSGyrie;NEO_7C+Zv^V>6;kVKDwtrN0SpH-Kf4c0_ zi3#VQEPuYglwFFnzw+r-9iIS!AK9RMMRDRp4Hx?!(;3CMe^nKe(do?pe$)S|I*4}o zRpSr*!?H2`HSUkoZ2hC>Z<=iS@9FhV)_(@;v-O`*%=gz*^~Y1S-!ITU81H52Z}|3t zzcVc@n@J1HUxt5FRs6e8poN@2S5cf)#t|YsfxlZ(EH88ZAN{2?naK1@D&U`je?{?} zGPnL#{)#e=fUG?7my!P^6_`&{|KEM`@0k8Cu=mKEWODiq@xwn&K>8%|=ZL(d!uZRi zIl?ZffWM9X%9`{W$v0R&^M{en89?%Ye?@Uh8AoVVe?{@EGNya_>@toxPgj=B$Y|;F z{xVwJr+=`_t?#7Yhs)T*eELVq=0^0n!c(9Au`-X(ly63v!$a_!oSq^3fQ9^NwvX(? z{S4?cIh`zfV0=w5`hPQFf3y0d{Ci{{q;vkAbVe~A-;>k7mVHpfmj61B2e|UIFWdK$ z3gEBo`_<$9m4h3&~1OzmmgoBhSM zANt!Q-yYKcZzUhHl(BzIPS2cZX5>yw|II|!kDrzAZIW%;a6t*m$6n>|KxP4^n?A%I3G+-|8k;5EZZJ`rRhDh$K>>V(#N;QMS=#O{>6zi zR2}}K{`i;4U*fMm{R7g+x7U}F_eJTS_wxzxsV4nm!gz32{){56!GAD#QImcl`2b1V zo@W$k4gN!x{`utdB<*~Y;mwEKe4oev@$p`GgZ0*EA;TMMU0dH7#Z%$`3`*zZt14bN zsvbdkVE?L)c_y8kYQWFR;x(V-{5!e}r+%1Tobwx^IZQFWDvNVJiIPayd^2fUy6}^8 zNdJWMGv})t<|>`|3%acM_X+1mH5zE}`y?%@{lGoQzvhOyTp!r^59|H9Z!GjQ?%OmA zuYZH`l7HIpb(fC#&8+3Mb;%c!UE=jo`Sww@r)^)@^CFjD z?a};~0S$Zn7cal*Ut#}7d(8ie%a8uw)t;uYJQsgCNJo1jycdj*inP_sCwqSTOL6}C zoIMvr@^rOda*3}G>+N)IzCGp#^+Dd1Uv&Isk9pqS(y!&>AV2uES^Jyz>S}Lo_4Tno z*Zc9M`TpWh`0>o~u+ZAujE7mvo4y_Mul-g_*1pictoZHZ8qk@)F>CpXm2v)67hkXZ zkVo>@jm{^{_SAT2YxDBa9t~N4A^yYut5zkSOOkIVm@h$3OS>+-nB^Hh z(e$kqs?W?Hh(}%g1JaxiR9}0&udf32&5!!mwDjT&yCVM0qbo^|V7@^4n&L|7o8ePM zx?#>L)d&4h|Fm?imrwQK`y|nPvZBk_L*oPOo7o5Qsy{Y0#rdyTZR?l(u;csjJ(O(&_1)4cXkH+VV@Oqj6Jjdv}r@aC6ngIDHAHv z^;UoA!~RrUw}$<}+h_BfPT5EL!G4!t?9$O6YSN4UF7AITSFU4zJ0I5+uZrwV`>tg= z+h6V78TK#W>9xlG=bQc!wLj{Ey(4>7q?fP0T=kj$2>EmM{P?28R5%eeMw{Eq@ z2kj?$lFLlG#sm7xnrq|!amm&smszoM%> zS>fc{k-&Z(MOPm6V?8nl91LE=KGV{h{CHLW==h%a+5R_c`I%7n@zzzbe9OIjC|^^&_S!i8yWd62 z2J5}=eeYJ%nY_hSH*mV?H1lP}wDi^sZ(_QeFW0VBf3^0SRqVXZ<;Q;Htm1l=zm(+> z-=9_7pmfp0Q!(Bzy*1Du>zSK6UH_dq0s61IQ1Y-o^xs*<72>zX&EL1)8rr9;{l-*Jk}F6#nrcZd(DA7w_d36;`CoN z=Tg~E^BKx-Ug68LKd)P7Ko+1uH7jqH)>)75_Yawp#pDg()}{*Cdm^0J_R z0KZnm^{ue;b7qfqMW>Ikx0fIL0i1swf4ooJ)qce)pMM7H_wvbpE4yO+iuJ*GwDWOh zpIa_<{6=V>j-WlM|E;kM zetgP)9UWnRJjr;7m8N9)XyKXZ15JDi>&va*kiOin2Q{A7 z`tdiy`E2W*-abY@w?38rF}`5F@$-k|+v3-Ql4ph2PjuJHt(m>m9;>(b`sT3zdwo=2 zwEm?0x&FU(O#gTN6Xmv4^X=-;e(3+vdK3BY^z(u2ziPGXKazi?mml=BbnAtx zkL|yQ^tRQmzbJokt1CY|9s3FS_1yLgWe<93%3XTyQbLH8Ky_$MeP-j5A=^n-mdno zetayOi26G^T>Y}=T~U2q?K}Ke`MeL?~UynjE9r<-vAF}-+P1p z%kgxo@zK!{*5B2>I_S^r|M~g-VQ*j6cYic~E7E%c{pcSA{aNnqvkzOa4Z zFKvI=*lViw?}POb{Hdqmd>YQG_9f3{z7r?GeD?_TfM zH{$o0-+$Ej*}2o&pZmdRkB7tdfc?=Plb{gsAN#G?Uk=tkobQA6=U%RdzH_~^KmDiW z#c2PkB3(4+JG2kmOY6mN{~&CS{QO;0eE8uoy{r8@1t-r}CqUoD-~G1iJt}{ts`yE|C(XqCD-%cUgXw0un+d9|9|%01kS7KN*6s) zP=FIvr7>1Cfr0`jLg755MyQz>&_t8lH?J?3mz(EJ6!Db6DUGoRWueB1iMG)=gHvJ# z+Ia#|#u`C8zxPYeHchAPIelCECau56`@V0VJ)OcrZhO0PJN|zin^kM?wbxpE`1ab< zS@pZp*X&1NKj60-Ev@ycZeO2E+1^(FC&%A0bzEV+9{ywik01Rx8}+}kbG2VDWce%R zIr~l;2fB&kOnT9)YCV4@_??}OKZE7Z+i)uWu%GcQ{9l>Pn>U_xzW-8|)qSOWiHKll^-Rc3!j z9?^x*Pa&e(f%460vh#Gx8Pk{KazjjZDIM9>331_N%Gx% zf2TaX^{XyFjPp(XF5Pd_QzB0XI|82;BN6xRvzWd#I_}Tp*Cojj}%Jfd9 zzmw@9zaqQqt~h<|SGC_`(od*N`;@*fFRvmy?S?pg{a5Sh-#k6+H}ykW^6&WWRQ&Gv zrS$;$gXy37cu|q{JjwRcwL>09nBYYpl8)5_XI zx~-=SL!kH1hFcbYI-U%|Y)-t}y%MWf&j!b9!(E*K_xA zJj5Ce(>pxq>vQb|eC#g~p3Hm;H1KCmBWdE5#-r@=Fnw?L@;)7|Lzm|Hg7UQeG_)Rj zUf_r_oF|xW^J6`_w>!mpC^TexoX2DOcJlM_yA1fWBud|$C2TJk5|Z^yUq8pmhd$+L z(>zB5?|Zu&pbvhOznAIj633@~*(>dAzIOekw|jnH!tqS{Q(m4v*N6A1X|MbT|MqsT zMtbyj=}&oebxt1ismN;0_)h;SeWO|b&C_FlvqpGAe?p(KbPEnR#-ExjMru}gK(xvvbob5~cT#NL1{h~coWM4~NdaNH*WL;g3R{HL~ z$AB$fO$Z@<0WYmq*;7ww@UyRpH`TZjC;Uu!}BD@*Yow1>)U zmGU<@{ch?@ZqCa?`4!ok`9A;Dad=(z}`7$cFW7Uv?5T71G~d+|gbEKirob zwp#MLo&0b94(0c{@~;*D+MM6p{b*luySKM8>lS}4`TG{3yz8U((cAs_Mu;;Y z0(~p8)xQ19-`9G5^HcuX?~b~6#+M(q1nDt8 z+|k>H^xt&yzOgRgQ{D~aug&?D*)8(tO|Cwge@K4bzA?VsB>px9WDPif1B}+Ew3W`=G`%W?K<+kzPC!B7N^gB-y;7G zXV1;z-|YD7ze#?Z;iEm=6!{nL_w-3u*FSH))s-)OZ@Iwg`$GJS_j|De*hJN@suh5Xxdenocs!(Jc0Z}q^< zPBS-%fnjdmON@GP_&+yB+_LdmF)jK=NzA zzfb&!ojrJ7;<&tjFD2f5=TTR_{P*C4j+XzPg8zJfuE_4cKjhC&pZ^Z^S?}z&1U z_O8`=gUg*ip1ZFJ{6}2=J2`!E`75&TwYu`Qt%Et)iLyoWd zy5}B8tG@d1e&%IKf)F^F!S?Zel~?P^Yt(yP`S=NYp9sezv_DMmCg=Wvyo&6B2SWL? z(~gJePg|dr*`t!*=H$O{5BZPf{;tS=ywK-o`>%Tf(V?@qGW&t@`|+Xk0p`!~6y<;a z`#wMW2j}mI@7O2RKOR&5g|7VeA5*@!?@`~rVGs2G{(SJQ{uS8|eh|v9PTSib2j8CO zs>mLDEacBlJ0E5KPG{dwe&qQzl>dVTf&AX?XE*3V0J?O7{U*G}_89p#e`WTt^#4(= ze|6f?u^xO={vz1_qo=%lzVFhMaK2*SC#g>B>h5&uS>GEZ?4ptqd6<9wi2UbsdrP|-6V5+W{$9Qp_xvj)6$HY+^U_!Q5N|#p zCDDKIzK`C|dd|szZc{9OyWY!sA(uZd-MTi&4}D*FCQM)2W#TDQ{!u6&@yC+9Jz)Ma zJKgmh>p!1A!5^FCk4?FM@xIBcY+on?c((}rXT*Od=l6EMxY4!$r5s=8zd(7pf8hU} z$y3aG%yhKBiO}zvNWb3h%^Q7vmm+^tFn`B>P|Qqhot^G@hV9{{-2UF~r(f~o z4g23yfxi}^{Eg;4yfQSXy{qwF%eGfJ{uq1MKQ?Uv>FNXJYyNHLgSdZr1)JjXCAcr8 z{;>TimcQMV|I(JQe7wK2btm|214uuywCmaAS^it)PaTi)w>E;@#=k)x#t+1Uwm#V3 z8-4tP@e1?TARc3U{qif$-{{XsuXscK7yA=PulP&zwSCMV#51BBHQ)8=n>7EDy{0_P zSM&Uk*X-i~lV9_ve7u-k+Vx`cB5jd({uex z{Dmvo-=x3F-+mQojpxQ6Sn+Z7f%e^r#a}z^o zQ}#3`jNi?8$M(N{HTmkVro3xO%YV|RzMFLZ{W$i=S~nlq%kmfA%JIy;-&vjR*zq*z zz`h3?9iQ!g`z=f#ly@^}l_&jnBs)M$KefmDo50avi-^)mERydws_Fn{mK?M-l%+^;>riVx4W$-nT!!V zZ*TL`27{-jJlZEb_Vx`YlyBM>=O<0VV~ZE_(zT{M4l>fGI(18wYU<|CM&_PN<)?cV^nyzR{-N$NFgPZ1ptot*L={*NFeI|0DfIjTfZhkJ7FV zKOdUG_u!hE`p9Drv_JUcCE}}TAAIkvY1>-RO_T8-$?MDrKaco1qXhDY>R6v!@IUx>d{ugK>&g5#fAY_8-K+R#C+QuW zFTIjzg3A2BLwtXwo%k+$pg-oT#$S1PGt-4H`ub&mM7*&i_aDYL*x#@j`8kH0^6Fmp z>DeB(nD-J{-qN*5-_gLi5q*mEXkP=HS%1VBwh!pDjkJ|F9sb=;9_s`8p}*85H|PC% z?>f|1M+fZ_ANEd92e#86p03k;(9$Sx2kUEq^`Y|W>$l>c9j<=rwz5CeIeO<#)>o&a zhuZ1Cy#ApN*ZXsSz@PZO&%p8E>j!FayTItbV%d*DH89(^>Rr8ODhe7$ldO!DL z8a4m%>-jrxXZgAQuy^D+=J)gM7QfyP|3W{lr+feG{0a3@e%ZUg?;lA2V7=eu*Lt$e zkN&cS{ZV~N{H7;ZzV}z_3#0@2TCcbBb9^5}>+>z8NTl)x{r&*tA-;c{^a<@~YFOJK5fC`ADz# z^Mmx?=Ul|5M|;wGc^mD~e6KxWe&OeOem`bV>*a&w8-G8*^1QsATJOy36YXnI>#a&} z{QH9jq&MYFgMZqdZw2l3>(qPp-rs|F(_ZC={qxeDyD&E8^C8X;S|6qUxxWw(?Dp^T z@5TA@w06C-U-@^L{O!mD+TbP52XGLWLH~B%M|=GIe()aBUjNRAS)N_b;rCOipP64A zj{I$p(LNJ@5TEN>yuLNiXJpd|__7!N!+5?k9M4g{zUO1*&r9>~(HMP8;jc&79+e;Z zmv+6DP@b7ju{{lLpng_gyw|&ncrHAU{q@aWAGXgudSBVF4UPQ$+eq8-0N>ZCrD~?UMJ#U%`7DF|9q%JQOS;q0;Mdm%^C`@C_SCxh(>{Lx z?e*H%kXG{WUJkyuGq?~m%P@Godyw@h`Fr(!IN+~spZq>tLtg{a=Ki0a)@|4PHm70F zAnRK`mVLu(**@*}UT3DeH9rvk!+$XzPn~i|cntZ-|K9j3`D5en!SQzFz3~?E4c_Md z!Te-Qyw&(TBD@{p_$B%f@K*MW2ycD<0B_}wgW+w2uh2KZU&)W~7W@EDjeL)%Xg{!b z6dv~kcsw&59Ax`{9sgr{kMI-yV>BL*2#;l-^m)C2$3=XN@EPO%*mw(k7hZe$3qm}l zeg!-{FdparNBWim{Uug!Rh^ZFsaLLY;tIA2FRUCQ>>Cj89hO|D8$8a|2n`GdXu-aE%n z;~&Zo@N_-(ZxNnq{)zSqJZ;C=`GDDPVEb4Yo=bsj@s?*muv9EY~`003l(ja`4eBsM$3CDAbFA<)DZ}7|dgZT5Y-Q23v5BgQ7 zzo+jZ*z&M`(;@pze2VX#zi#?&j$hN${#S)nZoD7ZrTOb*NQ6IurzSrE1?2;e{Q3p> zoF5S%r0>!M{2|4I{mc)2W~L)`nx8NY&TmwuM-CmyfAfd@_}CI zhc?q6!f0c^zE|Pr8v|R&xATqv{dl_jec-8YuLsA|-NMt|?+Z^E-v{xl{Iy$n>hm8A zPXoMEf8Q;<3iA8-R`MgfMfnk4Vt)Yf>v*&;w?D93_~hla{)qkGjz6REatwUNc`J-x zVf>2n zqxqP}W4uQR{|aA&{K8XjUz_mH^Xr26k>h#(y)ogzq8M+DeZo7t9%S$r=h+p{az5N9 zeDrv=JBU|_->*OK@DBDOzKi0CBHmyCRR?r_NSYE3ckfV z#9LcAHe39``ke69))&q@Ji_^b(yP9HnlQh?FMdB~kG{`m|xb-wlO$G{8^z2mLj|Tf~DAzH$B~tRY@6)qKUo+Xj!v;rl9sbcKGf z$IK6GeM!E@N8v^7D~#WSe<;7SYsjy^3*Xx7C|Z2sWoLkw#P1{ek1(a>c-Q|dj66C-|oor_;(@4#lJ&+!TI?#LF>)Cv9t{nI+tr)c8m;5PCH4IgxE1M!tQB0b~b z2KtAXj`;?^e-6CP?O!UqZeaV#^#i{5_r>#_hK3>V)dmp%9B4gUWph4&`bT@-sks7a zQ-6ww)!x8I`%`<>`iSTOwMV}`KD3MNN9`H>!h8VZU9f%)`J>mb8>0CD@UIXr4;R*} zM+)oJOzmB)*Q14}!&DMBB_vMeq^PULL zhqa#V?P>WD@jQ>m4iNtuJkQIAf941AHrL-Hd?r6!k0#&atL)n&JkH}Qj7P&BU-z-S z1o5yL4+4B89<_$^2bSmYUh(9xpU)#d%J=KXDnG(!%2T{-$5*5;t{(^ZtoTZJ8l?B@ z$C4k-FJS+O<|{rvZ}amN*&DA&>)Ws|h_|)=(pHSG{d%+Hclvl*@@s|1RzBBrIY09F z*5Tu8wFjL4;eE6m&#`{|yyCO`d-_wQ*2gs-5})>R z{OHvD!LK)m>(#`M%GF8h2i=z@UY*nPw$-q`FoxgUeZ4}kKyJY27e*1xLzBtA4m9& z`HaD5>wlf!@axOcFIXSOemC^>>%BN%9L4Xzx2p7lp$j7WMzsD+%p_iM{g(La@$$8B zJsNnsXVBp%;&X$axqi?$TAxOJa6OuMYUT&T-`ZNP2j=vs^P$O{N3dDYcc*Se#M4{k6#1)H0AmD80ilXzxsF?{+ynUY$ulIkm@HpRJM*AAs!S**Y8UI1~Ha>WbwCoA+ zPx1o1Lwfk9xPPntXg{CW6UNif&#Z5&e93R~c&qWZ+2b+#FYFK3r;)#ipC+CT@F~Po zrZ3>{zZ8ae##%M0sct0PTK`7t#lo|?Al@S$1o5Km?euskJoxCyM`=HQ z(q~wBZ0!Z!dprZ*;TeNS$g4_c4b4(!Lq~WsgZ$47e#Y{*(cWRj*Vg}q{nrUq>0$kc z+4Qm}kB9T}qV;68pCOOGGk6}XKZ=LBKPx<@Oz4mOR3EPbpR3c|FA1N_ee)b|^ZHtU z6wc!X@vr5M&$SBqvQ2vwC6&68Jvfb{IU0Ai{rnIFYS3KyMJuQXNZ8^AH=(&BYdR2 z9*-s8oTu{f;TZe3kQeRW3V(}uAFd}eUJdYAN3`QiTUIOrRkkAgl1FTeO+`?tW8>fvgP zKl-WsaQ~L_!~I+8AMM}be0R8iTf_5P@4bI3|BSVN%kyKw{w?&0@EG~A-tqzL-&%h# zemi#evDSXc5B6_S{;%Ku?UbP@fxcDgqJc%07M}h(?%(GAp7G)SZG^AFv-h)q>)Y$W z@wFJw2Kb8hjr_s+W6nncd_{Z5e%S%z+4-etWXfMW4;A4j_P1TU`kS|Z`;noKSbW0x@$0vLyLfQ1)erb-)`x9(#%3`?nFE2kXb^KZqwj+`mQp3ieAs+`olC?0WF8=l<;yhv)zH`?tsR9|QmBr}f-} z?cdHAoDrly^!?jO1Cwli;Zbm32k{H<+t!1x{YS;0{}%hVOLG5z5c{_m4qX`8_d)F6 z=K8JwP2In>_49u4@IT=G?ZhyC{c!)5_Z$8GaqEZsxA2FLUw;$#Z*g$z1ULcffxmwH zw?~g04b}7m-eG_B5chAZhN^6S;bC~+hx@k|4PIpVn*Sbb|F%?5sVIx^{@-K&Hm|S$ zWA|@!{r7&je~a@j2YBDY_s4^;FaHMY-v;>o;r?xK{}$unZ}$G}IN-sk^T8k7{_Wnv z`xf#y&pUm|#yc!u=auaIA=)1mo{X`7yHxrM&y*kMeGamJ%k>$Z_sY-nVSi`r{oAT^ z`tWp%Z^FNy`ujw{`)L1G`UdxJVQ*DhvAe?N2OZ51ay;evBAxG<(uLp%Qjf4=|ww(!@O=cTmYI`(-f zp67Dsb#&h^ct1+=gY!|6x97d@-@<-#p4qlH#lwaBImPo*dvyPH5BFPDUUC06*soRj z#r@np+P_tP@r&o9g8f<}zwn;a9-S`^@<->1F+T|3r!eQ0p{qZyTs&X3=O;W5DtQMy zuN>URl|EzKzumVkKHnt!qVrFv|Kj;6a~@dhtCAm_Uo!Ql^TWBl$bSg;Y4@?c1?QL5 zf0_&Di(m8SfsMbz^Tx>kn)Y*FV|^QW{(P~{4;Am*2KRAI`shAwbbeUnMdyz>e*62l zvi~)mcT)Kp?}GEgz$4gKI6qZ9e;nM$Re7)Je3Q2)I1gp+*M#?HsZZhl?Q1$8?DGfb zhao>Y-voW*`?NKzKYt$=?aiEj`m&2R;cww*Am87og+GhugQNSivM;#LYy2lX_5O>` z14s93B|o_T3L4{^-tV#Z5hFZTee4PD_f7#G2Jb~cAK+hfUl#W1Jg~Ko_dR$&ME5I! zH-+=Y;|_$cydPrDZ&Sbit;7m#TFT$?eOln{OB^rldGY9cwCoG++v z;eA-(bBzDddFN60b9p|zHaM?L{Qku7Cv5q$Z`j|bRe8~UT$Df9K!4XVkKUV%&KrYo z?%VqNMCLxO?%(45M1$YCeM`B%65O{%d8qH`y~&yBYYnVF)w%B9*1f9vRnn;Xn4Z?} z6t?Fy&o}e@yuWWdxP$j|{ri;tTdBLhZ#%Gy^6T^aAJKe3{pVowf#7}-^sh>%4NZeQ z{oqgR4;9Ww5552Ux5#hsIUFB?`?n}>b~>c<&_kstQTiV0{_T*?LkIc&dsUJ@)_o(M ze;(3#tssBl{Bv;s*7(EUCo=jA--G;za{tzxXNK(ozQ6bVS@g%z=b3~3UFj3yGwds# zHy+ac-auc?AN={^`2H=%`}e-zqxXgad{+6R&Kno-_+N3K*2wqwf%dWe6z3a5TK^90 zd;j-qC4Y?jwJ0ybf0b|IcN;H`#`8nCU#s$i`?Zq)0p72b{NR4AK4ZK)xBpx#ANt|_Z{fSW5A5EzF!y{dSK^O1u*6F<} zgU{3Q?+_VMz1#hX6<)%we@-mCEC7w`8(_=@s^`%Wq^zAps( z^*%))?;!VYI~1Si-#dZ)ARdw~{%hsUOFM%5wu>0A z`1h1iUL5aJUb}zqO8Ug#k!7&?Rc@dx{g@hRf%!us)me?M9BhNAd;UfLPGmrw>=(6@u< zM`Sw>`Bz+f#QdV8-SbPaKHb5!4wHTz+GBj57TqebC%~ zy#KUD-vbTu>-(R|FZqr7-ly`T{_OXV{P!Dg)b|wwf9iXWfjoT=GtfuhqqO>d^OXV3{43d(SGoFIaTVzmj_yiHcS%0mL-TUd z_B{*azrHojznXNA|60<@FMXQ3NeB6FWqVfn^52SENC)|ECLQFziFA;Pb_TQ-QTL$%~?@y}!r2lpL{$Nml`re?e zKltw+%2WAhA9!!bd~Znc$|B5HC6#ej6yy>(>x|uZZpC2ON)r`g)AC*XNmMNLznZr#IetBWN3s zRHr|F{Kpaf!t*agbmOK*OKUv5F=2kQzsdH#@F~ide(-m7x@!F@n|>eZ6_2cl=x3gO z#?q44l(2k*&)k1q_!8w={br^c{rmf9uQSsZ{dr!LH#2?NzsD~;S&&eF$usd%;r*m% z6@P7H8p+$D_i*!g4E0+deea3iduwD`;R*3+v*Is(!_Snjc=2VXfxR=+8*AlX(bKTr z+EmN=lg9hKHF#fnRYLz*|IJJn)apGhrRRKNcV8TDnfH*iK92ID^>z7gMMD2t|IJKW zYB?ULJm76KKY@PJ(`Wnmy(#~m|K{zREiHM^B&;9nzv=1AugW%hLFI4RxrKZe57ySx z9<_;mwAZ|6toTpz7ACAuZ*NmQ_0^mbcszPPI@sSvc{9^z^?u^BlaUGf&rF}Gr+)Mq z--||l?4Yd8j{ovj@?XyBs`RXpvzV4Y{2Bf(^0v7A7){BcV||Ejd?8LN z(-oh@^9%+*z(20rCdU5<{qbu88tKc^E9PCn^lz@y_X8`k`Z>zKh3}Ceo=fY#B0k?6 zMtiT!F8A`GPg&aV-yI+QXV%Kvx&+TV^feG@>{;__|UH`ZToMImi+k(g7ma!Ki3=f@4HU* zRhHH-W8YPIO5fZPr|u@5~O_O0$}s81%KfdBpp zd~Xb&%}iUD5x@7p0ew~8@+*V<@MqV5b@El;3-)Wg*>~MIws-h{zs3vtQ~pc4g8bmO zFKd^4)FUS0vNT(Em9AYku3w zm;GPAF31o6E!;0Wa{g~`kMpnoVvryG=jv;M{LnvLmPYnvS)6~(e-84aef6x4^Iy6D zN^7tD+1VNAUzz*g*f(qCH`c`YyY_b}Km4uwxoX+htv+hstE~U>_Vx8zFMk~L|Jt&v zl^*hy{_15tqD}i=-L-tVPtW>Vu^%-P)bFxo-%$GhsqtcUSDMD@>wfEU@i9JOJVt&0 zCr8WPl`G@)*Y4*KsQ$0|Dvnpz>|bs8Y7eWsuDUADf5rYa;^VVm%72-!?;Y%4U;CO% ze<|s!ua4GJKri^}cuQmd6ytT% z8yHXLaXdwPuE=T^ybF4c=xNMfAEXCeTN~2jv&;2q>|`p0?wXq1(3Lbb@cZS&uQwNo zZshkFMXwV*fAK{*J#{?OH!uF2rNwVud`U#N^F2`IH}bQ^OCq|H@0|twuP?^rIiQy> z{$fO@i+?+!S1w)}(N``0azuZP=L-XQS1-OaqL*>~$Mb9J__Uo3J*^*{PMK@ zG~t)Q>j{W6Dt$e&j}EU`Ehyna(fv7N%En;OV9F@z5)8+M}77l#rC(K z`da(Tv${H$U+L%fB|Y$n^f&&IeYt;t*ERLXpRYedpX-qRG?RWQ$B)hE&^cfFG|g)w z?euAcz4!y=BYk&wIP;`qUP4eJiqSm$~oFW4x=(u2g$k z=DrVq4buDiugI=m?$TqvT#;RQrK4rvs=nj~YaipWE3QR#=JQ8>|8TkFFQzppd#cE~uM6^z$9bgHasDfm|2midTPQ!*U*&(jF~|@7o4bSjkiTL@ z$nWjGwJ*6f)c

    dI2BM|!v(fqkp4)Czvq!^;FG9$q21 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

    ?DA#wF06k}@Ai59)A&pAp25$~uq$mZ@GIj} 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%0A%vzAkH@n{Jqrc|3BzE9>E_GF~bH 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%0AJ8E3qgPQ1?HY0 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

    Xnwol3je?CSIXU&iOpij!5h*{r~$0(2Rl#aZ*b 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�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

    (o4Vr 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 System.out.print(message)); ModelParameters modelParams = new ModelParameters.Builder() .setNGpuLayers(43) .build(); @@ -30,18 +29,19 @@ public static void main(String... args) throws IOException { "requests immediately and with precision.\n"; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + System.out.println(system); String prompt = system; while (true) { prompt += "\nUser: "; - System.out.print(prompt); + System.out.print("\nUser: "); String input = reader.readLine(); prompt += input; System.out.print("Llama: "); prompt += "\nLlama: "; for (String output : model.generate(prompt, inferParams)) { System.out.print(output); + prompt += output; } - prompt = ""; } } } From a26826a25e9c3b5208f7ebf680edafdc50aa5f35 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 18 Sep 2023 22:26:18 +0200 Subject: [PATCH 005/384] Added llama.cpp submodule --- .gitignore | 2 ++ src/main/cpp/llama.cpp | 1 + 2 files changed, 3 insertions(+) create mode 160000 src/main/cpp/llama.cpp diff --git a/.gitignore b/.gitignore index 0b0d20c8..fed62c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .idea target +build .DS_Store +.directory # Compiled class file *.class diff --git a/src/main/cpp/llama.cpp b/src/main/cpp/llama.cpp new file mode 160000 index 00000000..8781013e --- /dev/null +++ b/src/main/cpp/llama.cpp @@ -0,0 +1 @@ +Subproject commit 8781013ef654270cbead3e0011e33a6d690fb168 From 7a852d16d3515e1aa60f9c731497e4915594c7ec Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Sep 2023 20:27:39 +0200 Subject: [PATCH 006/384] Update readme and some build files --- .github/workflows/release.yaml | 104 +++++++++++++++--- .gitignore | 8 +- CMakeLists.txt | 37 ++++--- README.md | 89 +++++++-------- scripts/build-dylib.sh | 14 --- scripts/build-so.sh | 13 --- scripts/build.bat | 10 ++ scripts/build.sh | 8 ++ scripts/jnaerator.sh | 36 ------ src/main/cpp/jllama.cpp | 20 ++-- .../java/de/kherud/llama/LlamaLoader.java | 5 +- .../de/kherud/llama/Linux/x86_64/libjllama.so | Bin 5342576 -> 0 bytes .../de/kherud/llama/Linux/x86_64/libllama.so | Bin 937384 -> 0 bytes src/test/java/examples/MainExample.java | 4 +- 14 files changed, 200 insertions(+), 148 deletions(-) delete mode 100755 scripts/build-dylib.sh delete mode 100755 scripts/build-so.sh create mode 100644 scripts/build.bat create mode 100644 scripts/build.sh delete mode 100755 scripts/jnaerator.sh delete mode 100755 src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so delete mode 100755 src/main/resources/de/kherud/llama/Linux/x86_64/libllama.so diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 82a742d0..4baf6cf2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,26 +1,96 @@ -name: Maven Central Publish +name: Build and Publish to Maven Central on: workflow_dispatch: release: types: [created] jobs: + build: + name: Build ${{ matrix.os }}-${{ matrix.arch }} + runs-on: ${{ matrix.image }} + strategy: + fail-fast: false + matrix: + target: + - { + name: Linux, + arch: x86_64, + image: ubuntu-latest, + cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" + } + - { + name: Linux, + arch: aarch64, + image: ubuntu-latest, + cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" + } + - { + name: Mac, + arch: x86_64, + image: macos-latest, + cmake: "-DCMAKE_OSX_ARCHITECTURES=x86_64" + } + - { + name: Mac, + arch: aarch64, + image: macos-latest, + cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64" + } +# - { +# name: Windows, +# arch: x86_64, +# image: windows-latest, +# cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" +# } +# - { +# name: Windows, +# arch: aarch64, +# image: windows-latest, +# cmake: "-DCMAKE_GENERATOR_PLATFORM=ARM64" +# } + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + submodules: recursive + - name: CMake (Windows) + if: ${{ matrix.target.name == "Windows" }} + shell: cmd + run: | + cd scripts && ./build.bat ${{ matrix.target.cmake }} + - name: CMake (Unix) + if: ${{ matrix.target.name != "Windows" }} + shell: bash + run: | + cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ publish: + needs: [build] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: Set up Maven Central Repository - uses: actions/setup-java@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Download Artifacts + uses: actions/download-artifact@v3 with: - java-version: '17' - distribution: 'zulu' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish package - run: mvn --batch-mode -P release deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - name: Set up Maven Central Repository +# uses: actions/setup-java@v3 +# with: +# java-version: '17' +# distribution: 'zulu' +# server-id: ossrh +# server-username: MAVEN_USERNAME +# server-password: MAVEN_PASSWORD +# gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} +# gpg-passphrase: MAVEN_GPG_PASSPHRASE +# - name: Publish package +# run: mvn --batch-mode -P release deploy +# env: +# MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} +# MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} +# MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.gitignore b/.gitignore index fed62c09..a6622338 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ target build .DS_Store .directory +.vscode # Compiled class file *.class @@ -29,4 +30,9 @@ build hs_err_pid* replay_pid* -src/test/resources/*.gbnf +src/main/cpp/de_kherud_llama_*.h +src/main/resources/**/*.so +src/main/resources/**/*.dylib +src/main/resources/**/*.dll +src/main/resources/**/*.metal +src/test/resources/**/*.gbnf diff --git a/CMakeLists.txt b/CMakeLists.txt index 79ad3d04..392151a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,36 +5,45 @@ project(jllama CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED true) set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(BUILD_SHARED_LIBS ON) find_package(Java REQUIRED) find_program(JAVA_EXECUTABLE NAMES java) -execute_process( - COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --os - OUTPUT_VARIABLE OS_NAME - OUTPUT_STRIP_TRAILING_WHITESPACE -) -execute_process( - COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --arch - OUTPUT_VARIABLE OS_ARCH - OUTPUT_STRIP_TRAILING_WHITESPACE -) - +# find "jni.h" include directory find_path(JNI_INCLUDE_DIR NAMES jni.h HINTS ENV JAVA_HOME PATH_SUFFIXES include) if(NOT JNI_INCLUDE_DIR) message(FATAL_ERROR "Could not find jni.h") endif() +# find "jni_md.h" include directory if not set file(GLOB_RECURSE JNI_MD_PATHS RELATIVE "${JNI_INCLUDE_DIR}" "${JNI_INCLUDE_DIR}/**/jni_md.h") if(NOT JNI_MD_PATHS) message(FATAL_ERROR "Could not find jni_md.h") endif() - foreach(PATH IN LISTS JNI_MD_PATHS) get_filename_component(DIR ${PATH} DIRECTORY) list(APPEND JNI_MD_INCLUDE_DIRS "${JNI_INCLUDE_DIR}/${DIR}") endforeach() +# find which OS we build for if not set (make sure to run mvn compile first) +if(NOT DEFINED OS_NAME) + execute_process( + COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --os + OUTPUT_VARIABLE OS_NAME + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() + +# find which architecture we build for if not set (make sure to run mvn compile first) +if(NOT DEFINED OS_ARCH) + execute_process( + COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --arch + OUTPUT_VARIABLE OS_ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +endif() + include_directories( ${JNI_INCLUDE_DIR} ${JNI_MD_INCLUDE_DIRS} @@ -51,6 +60,8 @@ add_library(jllama SHARED src/main/cpp/jllama.cpp) target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) -set_target_properties(jllama PROPERTIES +set_target_properties(jllama llama PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" ) + +message(STATUS "Installing files to ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}") diff --git a/README.md b/README.md index d2acf230..08c30ea0 100644 --- a/README.md +++ b/README.md @@ -16,59 +16,69 @@ Access this library via Maven: de.kherud llama - 1.1.2 + + 2.0.0 ``` -You can then use this library. This is a short example: +Here is a short example: ```java public class Example { public static void main(String... args) throws IOException { - Parameters params = new Parameters.Builder() - .setNGpuLayers(43) - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(Parameters.MiroStat.V2) - .setAntiPrompt(new String[]{"\n"}) - .build(); - - String modelPath = "/path/to/gguf-model-q4_0.bin"; - String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + - "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n"; - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, params)) { - String prompt = system; - while (true) { - prompt += "\nUser: "; - System.out.print(prompt); - String input = reader.readLine(); - prompt += input; - System.out.print("Llama: "); - prompt += "\nLlama: "; - for (LlamaModel.Output output : model.generate(prompt)) { - System.out.print(output); - } - prompt = ""; - } - } + LlamaModel.setLogger((level, message) -> System.out.print(message)); + ModelParameters modelParams = new ModelParameters.Builder() + .setNGpuLayers(43) + .build(); + InferenceParameters inferParams = new InferenceParameters.Builder() + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt(new String[]{"\n"}) + .build(); + + String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; + String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + + "requests immediately and with precision.\n"; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); + try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + System.out.print(system); + String prompt = system; + while (true) { + prompt += "\nUser: "; + System.out.print("\nUser: "); + String input = reader.readLine(); + prompt += input; + System.out.print("Llama: "); + prompt += "\nLlama: "; + for (String output : model.generate(prompt, inferParams)) { + System.out.print(output); + prompt += output; + } + } + } } } ``` Also have a look at the [examples](src/test/java/examples). -### Installing the llama.cpp library +### Custom llama.cpp Setup (GPU acceleration) -Make sure the `llama.cpp` shared library is appropriately installed for your platform: +This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want however. +In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): -- `libllama.so` (linux) -- `libllama.dylib` (macos) -- `llama.dll` (windows) +- `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` +- `java.library.path`, for example `-Djava.library.path=/directory/containing/lib` -Refer to the official [readme](https://github.com/ggerganov/llama.cpp#build) for details. +This repository uses [`System#mapLibraryName`](https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/lang/System.html) to determine the name of the shared library for you platform. +If for any reason your library has a different name, you can set it with + +- `de.kherud.llama.lib.name`, for example `-Dde.kherud.llama.lib.name=myname.so` + +For compiling `llama.cpp`, refer to the official [readme](https://github.com/ggerganov/llama.cpp#build) for details. The library can be built with the `llama.cpp` project: ```shell @@ -83,15 +93,8 @@ Look for the shared library in `build`. > [!IMPORTANT] > If you are running MacOS with Metal, you have to put the file `ggml-metal.metal` from `build/bin` in the same directory as the shared library. -Depending on your platform, either: - -- Move the file then to the correct directory, e.g., `/usr/local/lib` for most linux distributions. -If you're not sure where to put it, just run the code. Java will throw an error explaining where it looks. -- Set the JVM option `-Djna.library.path="/path/to/library/"` (IDEs like IntelliJ make this easy) - ## Documentation - ### Inference There are multiple inference tasks. In general, `LlamaModel` is stateful, i.e., unless `LlamaModel#reset()` is called, diff --git a/scripts/build-dylib.sh b/scripts/build-dylib.sh deleted file mode 100755 index 35e97cd7..00000000 --- a/scripts/build-dylib.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -cd .. -git clone https://github.com/ggerganov/llama.cpp.git -cd llama.cpp -cp llama.h .. -mkdir build -cd build -cmake -DLLAMA_METAL=ON -DBUILD_SHARED_LIBS=ON .. -cmake --build . --config Release -cd ../.. -mv -f llama.cpp/build/libllama.dylib src/main/resources/ -mv -f llama.cpp/build/bin/ggml-metal.metal src/main/resources/ -rm -rf llama.cpp -cd scripts \ No newline at end of file diff --git a/scripts/build-so.sh b/scripts/build-so.sh deleted file mode 100755 index 3d31ebe9..00000000 --- a/scripts/build-so.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -cd .. -git clone https://github.com/ggerganov/llama.cpp.git -cd llama.cpp -cp llama.h .. -mkdir build -cd build -cmake -DLLAMA_CUBLAS=ON -DBUILD_SHARED_LIBS=ON .. -cmake --build . --config Release -cd ../.. -mv -f llama.cpp/build/libllama.so src/main/resources/ -rm -rf llama.cpp -cd scripts diff --git a/scripts/build.bat b/scripts/build.bat new file mode 100644 index 00000000..d2811864 --- /dev/null +++ b/scripts/build.bat @@ -0,0 +1,10 @@ +@echo off + +pushd .. +if not exist "build" ( + mkdir build +) +cd build +cmake .. %* +cmake --build . --config Release +popd \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 00000000..e51f9fd3 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +pushd .. +mkdir -p build +cd build +cmake .. $@ +cmake --build . --config Release +popd diff --git a/scripts/jnaerator.sh b/scripts/jnaerator.sh deleted file mode 100755 index 683b04e7..00000000 --- a/scripts/jnaerator.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -cd .. -jnaerator \ - -beanStructs \ - -direct \ - -emptyStructsAsForwardDecls \ - -forceStringSignatures \ - -library llama \ - -package de.kherud.llama.foreign \ - -limitComments \ - -skipDeprecated \ - -noComments \ - -o src/main/java \ - -preferJavac \ - -mode Directory \ - -runtime JNA \ - -noPrimitiveArrays \ - -forceStringSignatures \ - -f \ - llama.h -# remove erroneous method signatures -find src/main/java/de/kherud/llama/foreign \ - -type f \ - -name "*.java" \ - -exec sed -i 's/protected List getFieldOrder()/@Override\n\tprotected List getFieldOrder()/g' {} + -# remove unknown imports -find src/main/java/de/kherud/llama/foreign \ - -type f \ - -name "*.java" \ - -exec sed -i -E '/import com\.ochafik\.lang\.jnaerator\.runtime\.NativeSize(ByReference)?;/d' {} + -# fix invalid java doc strings (important for javadoc maven plugin) -find src/main/java/de/kherud/llama/foreign \ - -type f \ - -name "*.java" \ - -exec perl -i -pe 's|\* \@see (?!LlamaLibrary\.)|* \@see LlamaLibrary.|g' {} + -cd scripts diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 02f002ba..024e40fc 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -16,6 +16,7 @@ static jclass c_llama_model = 0; static jclass c_llama_iterator = 0; static jclass c_model_params = 0; static jclass c_infer_params = 0; +static jclass c_standard_charsets = 0; static jclass c_string = 0; static jclass c_map = 0; static jclass c_set = 0; @@ -97,11 +98,13 @@ static jfieldID f_mem_test = 0; static jfieldID f_numa = 0; static jfieldID f_verbose_prompt = 0; // log level +static jfieldID f_utf_8 = 0; static jfieldID f_log_level_debug = 0; static jfieldID f_log_level_info = 0; static jfieldID f_log_level_warn = 0; static jfieldID f_log_level_error = 0; // objects +static jobject o_utf_8 = 0; static jobject o_log_level_debug = 0; static jobject o_log_level_info = 0; static jobject o_log_level_warn = 0; @@ -124,6 +127,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_iterator = env->FindClass("de/kherud/llama/LlamaModel$LlamaIterator"); c_infer_params = env->FindClass("de/kherud/llama/InferenceParameters"); c_model_params = env->FindClass("de/kherud/llama/ModelParameters"); + c_standard_charsets = env->FindClass("java/nio/charset/StandardCharsets"); c_string = env->FindClass("java/lang/String"); c_map = env->FindClass("java/util/Map"); c_set = env->FindClass("java/util/Set"); @@ -136,7 +140,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); - if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) + if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) { goto error; } @@ -159,7 +163,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_error_oom = (jclass)env->NewWeakGlobalRef(c_error_oom); // find methods - m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); + m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/nio/charset/Charset;)[B"); m_entry_set = env->GetMethodID(c_map, "entrySet", "()Ljava/util/Set;"); m_set_iterator = env->GetMethodID(c_set, "iterator", "()Ljava/util/Iterator;"); m_iterator_has_next = env->GetMethodID(c_iterator, "hasNext", "()Z"); @@ -244,22 +248,24 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } + f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); - if (!(f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) + if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) { goto error; } + o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); o_log_level_error = env->GetStaticObjectField(c_log_level, f_log_level_error); - if (!(o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) + if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) { goto error; } @@ -324,15 +330,16 @@ static void jllama_log_callback(enum llama_log_level level, const char * text, v static std::string parse_jstring(JNIEnv *env, jstring java_string) { - const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, env->NewStringUTF("UTF-8")); + const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); size_t length = (size_t)env->GetArrayLength(string_bytes); jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); std::string string = std::string((char *)byte_elements, length); - env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); + env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); env->DeleteLocalRef(string_bytes); + return string; } @@ -1083,7 +1090,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo jllama_context *llama = new jllama_context; llama_backend_init(false); - std::cout << params.model << std::endl; if (!llama->loadModel(params)) { env->ThrowNew(c_llama_error, "could not load model from given file path"); diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index e6cd2d3b..4bdcf98c 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -63,6 +63,7 @@ static synchronized void initialize() throws UnsatisfiedLinkError { System.err.println("'ggml-metal.metal' not found"); } } + loadNativeLibrary("llama"); loadNativeLibrary("jllama"); extracted = true; } @@ -102,7 +103,7 @@ private static void loadNativeLibrary(String name) { String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); if (nativeLibPath != null) { - Path path = Paths.get(nativeLibPath); + Path path = Paths.get(nativeLibPath, nativeLibName); if (loadNativeLibrary(path)) { return; } else { @@ -129,7 +130,7 @@ private static void loadNativeLibrary(String name) { if (ldPath.isEmpty()) { continue; } - Path path = Paths.get(ldPath); + Path path = Paths.get(ldPath, nativeLibName); if (loadNativeLibrary(path)) { return; } else { diff --git a/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so b/src/main/resources/de/kherud/llama/Linux/x86_64/libjllama.so deleted file mode 100755 index 062140dfaf49f34131e2614729c67823943c5898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5342576 zcmdo!33yCb)GrZ)S_ZLGL+zBAtkgEhAVM;d*q6y38u{L3F}X{NB&>p7>dl-V>fI50=8OSfk%0KMlRNcYSA` zkNBBhi$`<9Q^>CiyvOwNs)^Leg;9QD{R`jI$|6VMDcB;*R}R2zrhQ0PusgRbhN}p` zk~@9pZ3@1#-@E{rVKe&8D{|{sEpy&YS@jcL#F?=V|E>{G6n^50fSyZ1CN}uYY92lo zk)?By9;1|;dntJhjvHQXoN;uZ#_q|LhTn@afi8P`dbt<*dG>sd=rnn+4qO!vdqYmO zV^QfroM(;~SIo1fJdi8Gsbn>3c-lN`dPC)2H_9#~cHlhQfFk5;R5_lJa$v-DSWwr4 zt5eS-(l)}!R#=`RcPrr0p#tZol5?#`xkCxsLCHqQ>sIg@RispbLY`ccy{ejSGPB(y z@H4K0*96YZyMAe}B0)pbIL?!kb6y^DZn(;Q1lPK?t*E=M;(Hmh-8j3ayH}vc-I_m@ z^(dK@B|9t+bT@GIYn0|9;f)HO+$hey=3;jZx5T3eSAIHZvOpx~uJZ57wA@9?&&eWqmWGn zHId~}NM$Q3pSsAM^H3D@{K{6fl;#6ZZXu`gC~b3Vr{Pp8PFD0rhTLOY&?q@4bC+>) zPnDaeT;}V+*}x|iQE}Wj`=Ak=P388z{9@5X9MlEm1xB$~zOvAWAwA`zhI5{tP;d`B z_krBqZRhr{GfI5`mf+FEv-1Lv4qS&(BRhDgu5*)D1#lkiJmnnM5mfBvu2IRk+Q7Gz z2UoWoC$n+y4KFA!U3|jM$i;4UnJmq=Pv*&O?*JvUm9>Le7F2i)mutLKZ8E-}ebK#? zS6YUTNZyBGVO zEB78(YYu0tB$vxPEFC;5wr*J5jZ?UnN~`LYuBz}}Yfe^bcrA4S$MDh`y94C(<79hf zGTZE0o;Eid=jK+l49C@tl*?43YuF|aUm$DEjk2o>ah`56Iq0Oda)gQ-HG-25=Q@E7qHo*vr;7HF+s2JzW+~%5YPhq8>sG2$UC(0mxuTp`kIxD&D;Bx;y}*&> zxWYAS%G^{1i`13%b>~zgICpn9PIe+)Q#30p(&JI2M;kYJ^*~Jln+I3g29B;Y=lNNn z2j^?!BHg)8?(S3f%HHE5)o!h2HQd&zBJEtEeMJj{pbaxPFNN*0+_Q~mg#z4&G>@#b zEHDAL)?xC(Q3fbj)(H1{(Od`jQL?~5nN6i~bNBLU!+ZftW#CyBpaMW8fXV>x0|==a ze69&l2cRxMLjVPU9{@`M@N7z-+4qm&b2EUJ0IdN60n`BP09fh>&&~iEfG~h?0G1-? z*$tjO0D1!S2IvQ%1BeEQ1?Uf81c(EO2Vf}yo{0d-04anU0?&^DJ_Q&KFalsCz$kz* z0Am5h0elWH0U!f_rOEJ|N}p%Jb1uLG5Y>9JWm7U09+&-zQJ)< z;QLj8>j1atw>$8>3-AEoA;9kdj{qJ6JO$v~@ojf_769;|?}gy$2~ZTE7(hvYQUEN} zDF?t(d3aU;s0dI6pc(+Q0zTD(XKjGG0QCSG0AOt`I&;=k2ARM48KzD#%0DS=Z0SHM;pLOtz1~34`0>l9%0GI(R09Jq`fE0is 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

    N|z{^nM-?P#U!T1wB~te`El|IN93^#v1srNAvUa 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

    -1QIJxESx1kzyiq*WY??`T)`6_El!wnFx z8+If+YqwEtS2CxzFZpo~_c9M}Qra!akMG`MazXS9rZy{Urc7LMleM9sp%Dk3+E!Ce zZ$Z^ECFB{3Oek5GlD~=`-QA_)OjbJw!R-oZ8I+o*p%2>i9-nZp*wja4XleBTeHH#( zA^chI;aM7kKlaO3ePF>QFOC)d?5$Y$QU-r6Johq#ALotb%dL@BkB!e^sE@sr!Jo4q zBL}##>7@+b9Fy<8mki#Fn=@w}zBh#_UHa*`tyy>ig0&ZzIqHay>`q_Lhw=M zD7Et7?MZ_*UzX=jT|er_8Wm+Qs3n6m+X7=gChyBan$$;SDBuwc8B<0V) z9-lLSU#z9YR}2t>vyw;en%1oWHoWi(e!sp2s_9+_ZJhsgy)WkO7Den5RWw{B1;mp( zYTrs8F7Pi^qBbRpoAhy$>Tp3#qmtqwfO$kp90gU~2IJ@0J7dfjAm`1t|KsD@A7}5j zQYc=*aFkxxk(`@<`fo21j@-F-rBE9{7G2V;kh%G1JHN$u&YkgpyhZswV`TdsJk ziu+6T-HDcIwOwrB&VOs}@PsG-x;?X<$*vBP`59IXBh2j~C9OychXq_`=t%CML{7l@DgeTDTp?(gKd|hH(!I%$m zh=_M3JZ>gm%beSj$+1yGt=;Sdm1Lw zx7#$lb!H`w9=5~xdO*;Ms0Jr_8A<`rV3-*5+@Yiux#&VmpB=1HB@fOxmeo@ba%AYo%Ne}V zJsoGVds2IHU+V{sN$``LEtPz_= z*>lR%$*qS8g=I1hdA9a|+H=acCDV7mg^BljYt15WQg@KjaA6lf)`%tD1=Km`0wQK@ zbtbpY+U}Hhe{$Wdoz7%>);4GI7r;&!`MV3jp>4NJIQ=_g z7LgH)d~bY?paT#x6o!B2Nwi(8~Tdro-BRcz>fWY zoj+e6Jb%`KZZ>^A{U)0`Z10~sHxf56rMmm+Ysc}^1iaBSfil~(!zRI*c`)+u1@wdm zReSkrj{HB--S?Eqrn~K|uA;k_jQJ*Etv7uD`J2^jQ(OsHJNoG^5!1T)nTrfr6gcTO z)O6NTLtr&o3PgLMz{yTSkl_vq6e(_lszN^@yUbh2Zg2iG2FW|8Y)!UnO`moqTf=Q< zE_q!)@95_UnMACg(bQ1D`viP!Q(z_b7%E!^btUc<{d@-AYZ7U4?BKhDZ=A14?>fFL z$ukWd-e5eC*G-9*FL!k&e+6mXdOLK#bUjJmAXZb@&H_{23W`latVV{HNgFrm58mDa zv29}-tsD67S;-$xOets7Z2q^L2?=8i=bD{DTQZEX%@ij$&wAgPJUFY{ z;QJ1P`Sy%zxw?z}aV=bfy>YvxOS5r8?v&CD%70ys*4hcX60KKH_z?DBHPwUATYBE- z9|k)!SJi?GgiqO7s|jmYWah7CSE5D5+qG#g*z&`!&1PP`3xXsxuP*$y95W}J{DKK# zI(>-{(G4?kw)Si>E%=z;8BPTU{bE%*xWHpismnE`ZfiED?1SbL&m(f|67C!BTC|ll zA~vp0vFvl+fP#U75!PW7R{Et9cNy zkMh^GYoX}PFZ`u&vz@8+hVyCQS<8H|lEM*`?_ooeH+(AIf%4jPv#<0{GS zy)I|0S`YVT7z}U4kQ_yR+m6f&$9e8|Aks->e8EUNa>U@6VL1c#+5QftKr1Z$eNbHU zR;Nwg*sL@94J4Jq!MOtaJS|6ay&U?EHd|EP<3!+BL|(KkKMlrKG|Cmmv{7t)qgJ}? zdQbP5=96-tJR8~|Fzmaz4ZFGZyR@M4?(*qfV&?k_rj!&y4c^Wylc$jF?9;za%v(1F ziRsI~qogntyED#_A}`Ri%q_U1BxU%`M9Zw&$tr+DY0kBIXM43nVZIj#n^ZC))pHU@ zfOF67r3`NglK!84+Q5$u4e&epH*iNlZo}L!Fd$gym-!Jg zo%i0Egm>Ju6)@ad!tl>LbKNPtt|vS&{Oib&vENHlpp^Lik7}L&NWGLNh@2ZAx6peD zFS4)20MN1GdaQ$>j)24s^HpaB!n+%N?hjp$++cUQXi%qxKamc^8Avm-!i+D1DQp^x z&Rea~gtzVyPZm$cuRE5Ue^>5}jJ~};JDl%gPTgMY4}a8%14}N4^Kb4>PMZ93^0moG ziss$if=7oO#(@Ayj)qe0MtS0zt(v^2w%Lxk99p)_C1mbR8-dQ+#N`$AKXJL~eBGRp zr{ri`R}M$!OkQzQTVmY&qIF@tS-j?~M9b`2>YGx#HPLcMEkfU0YqdkpV@){%SB(oU z{s`p#$d429u?iizp+l}Nxw?{je*9|kNL_1U+a=$LCy(AczMB`_9+92}1Yvcg0}}+X zxqzsz<(Mt+`Cb-8OV5I+sZkZ{419prD(yso(}j$37EXCUW-4$(NOL&9T5zfnoLksBm7$U^0_qlx5aKZdvc9LW6SsDVzRW&Y9C z$zdss>XtySxIj5DDB3$Sz82>ir z93I)nwn7jcM7)_dkz?N2b!P-HzG}Sz-Fnl*d*9(>oH71}nPDCY1NoRbXd529b5}5y z`!j325Oj{VkjN(xg^h5yR$M$R-0DD9GHKWle(!J$fp(phxR2B8g`zGa^on~PLp(VT zrf@z_s=f0W0|9z~>Tsj=D?2^zj(eXG%sU;)-WsHdn4jvcVb46Oji=~Au(<_VA=nr- zYSOArJ?*zOXWK9N&OqZglEVLzEAwafKz2k97*ln~0iRnqUL4y;riV1576ICwyKpqH zu-l!p_g_fN#_81lB!lg(XamgskRHyVgDqzzKc3m{)PhmCDEUDx0zO-uexz$n^2lMB zqxpGliEX|-dRgy`tIGrx8L>~M%dPkR?tktwq)J_`vitk$zv}OD_4mbWf6Y>nx~`)l zu0HR#6|rKMv^;3~{4R~CMf5m-P8Z{k$Xi`>+TGL2!NJjrD?Uu_s~xc-xtabEG>4Ow z`ISjW;t9|5C66TOAK9HK*o9k4lkeNzT4xVu{mOQayY=3u)U9@nWb26|$!I1tnx<>b z*|zp!%^$koaWs9xQxolFu;A_=V{Q#xvMQj~qJi z(R(l5YlhkXQhw%7-j7U=2k=2*yZT3d4HI{49sl0rsWK1^sGN|J{$OboP}Sjf!{FT zHvpm}xM4%l085}eyNu=XrM;OyCdi`^ruqL9?AXd>U?+SMWTfEYun}sMV3u5P*VTjO z%b8Gx2a?~e9g&$Y=VdFeXZrhA ze!n}2yrV677#jC!4TaWdHOP+pp?O$jn-_;(FVef2ldZn8^=LMs5pqqq7xkR;2}C!B zD?t^!GP-Sur=8)xaf< zY*B^l973w(2Q`Ren50BcHXfoSVS%q9l-vRL>iRzepYC37tT1nX>u^_7l+Ks6dSln~ z=-{Ct_gv(!TjzI(k;p&yzC=rP?TAK-jQ{H*_qPt6eFatrJ&uk*9V_qL{IR?X;Ix%| zS_98Je~vnm!~N!hvpwO~A&Q^pa3)$k&wF#6UV^2xK~SC@guJ5wZ6ofl-`Klub;h$= zb0hr+mOPKO9(Fxs*mcG~V6E49?+swkLPP!zeTmH+81W8`c*}?V1I`v^7L|x=jGTlUE|2Apo%qDfped@-@sI*8lB) zMuTME^=+f-nWyV zTyNG(Ltzb(c(PyK%l-Jh8U3P+MYZe|`Kh82+?x$XtIMUX%Jr~&ilio2Z9g;kY>6%> zV)m(6H_W8j8jSvk1kaj#*@Tw{QBd+LK-UWhsFXhXGG!vn-1Ujhs6wxtG>?@ODGlMx zCf-&*=aFBkZZbC>aaYP+Wy%^yzL_*_4iz?)G%61d0tcd4?Ty|-9&brQASx5i7}z60 z4Vmzp!u+9sdxFO!LeW4aZ7xz@%xw_j zbe9VQ3)EdxEIoPUAzhWybkjE5@A3Ph6P-cQx0x^>YHtslE7*i%QKtrrI;(YK3Dr`S z7<4xo5W6CeDb)R#0jw)BA73Echk=l3xTKU_O=`U3OvGXC9hgUxh)`dNSe<95Qy+-^ zgS_q+49H!P2k`~C-xQf4NB9`m$!ko|E3Sw~DbZgR{QT~RGdWIIsQb~3&mkXm31H;? zjq&zUO=Bh^MQ?|?9+)a`^f4P~bVh)2-S5tX%I7Dv&4kY95|rn_FhmSov^<4N6v}9$ zn~h$yNl1kncs?Ji69kGY=hJIkPqzW#C-Hb<-jj~~%5&hL)#rM;-OzBMu{;V0W zGdDMN=yFO9ZBMAVF5l~vu<+rMKd6@2h)b(nzg-KJw>qm_zgUBM?MVmdnYvAX->6#n zLdg>(M7(0XDSNZnd6mVUmYuntvV*F>$m)bjdt$XL7rbkSzDfz9#WVw3mcfz{AuBC= zL$)?}5K!6xe$4K`ulxt}5ELr7?P^ZlUZbqr38dcOb?Y~Et?*aeejsoY;S%4fK_v`njfb)W{SHva% zaNd^@UadwXR>fS6I|8tm@2i^AxtDAD=~|)V+##$ah1cF@RUZ{o(j%HCxM&oGAlCHdtU1!%>GbvrxHySMwk}JEPCb=J(p5-Pd8uHkj5Wyd=j(=HDtXPZhRi!PMy3~hRgLWDrzYnR3^#o59xjX3Fk%OSW$$UcetNT)ek;0y9R+x$aruQAH^23! zhVB;{x}f{L`uBAuRy2ewEK_9B!1l?8Ttt?&#M&IMNv!=~rgB)q(?ASCpr}Ik;ov+A zE0eoxoR^|d;Jj2XS*Vf}2}<{`9zOfuP&Y01SY4j7L)IZr?CxXXqeEN|d_?tFD1Hf{ zYspH#He8V_7r;n6^VQ!18S3)8-!%O#p{wV*u|B9v zb6lOu8{!2DBQR(AfY}cb&B|@BrgVICv)}Qi7n9zxi(i5{O?KA|cf6&J0|=Pj-%yCZ z?k#0lNjpT&s@0M~zz8|E4*(+rh3ipMf5)}xMsnLwXdN;rSr!URVb>xzX?PL&vOFlu z@n8@UedG+H)0gmL`i+IGkGT(F=((uQ04Z@j@;4&V<)l=9ODno6j-}54j`E#b(NWQr zb}%N^(X=ebS#PDkfe*pXhH!4q^UakiD)*j4K6*BCQ+F<(3-?Xq6RqSj#)2cg$5QE3 zuhL(y^cLxRHsbThw@^NAOy`!$_n>^w;B(0rk?%=-`|rosB;POay(8cK@?p9*ccpxd z_|iYM8}*O^?p45TcEDFu)*}j-YzG`wibV?W+5w#kh$-L#JKzNcJfr}bC8U76|z5;UWfYl0^r+|-u5n2920do}~`-B8o3YepSSL}d06wsi67YOL*x3jlV z%zdbhldr*K@e+nB8ki*38gAs;n&V7SEhMrc9$qj7)@n{ZvywrBAMMn8*I1Y1y=$2Z zj#Lxnw~mAlau>Cd)irz&w(lMSJyB#ncwA2-^JL*5)7mRy7e`1BNFft} zx}$zapU3*l&uiy!l1y=|oy{wmdS&cllLF&RFO)Q8l2>_U7=yzV1qjrWN@j%Wj(92B z@2fyN`HqrFENy*P#tJVB0zZ~F#yw;mvE^MstHZy!k6TF1q1eR*p0zN-bj7`M-t17c zrbxHF*)?nr#Lm4Sz>$!$8^-5&tcgT?hd+>x|0XC{r4q=?t>0JY+Tgic#;1+nE@Zhct`$% z>jYeU&&I`%&Ilcci(CZ-mpzX6WK6%(8}&Ioo9S%>e2X7yUTyFYKcEv%LgF(>IduRV zt4_p54=n{7!9l;;96pF^iW+BQ{W9mEl*Q2jFEWR?-}DyyjW!EKxF_`yI<;f4E~ zlufNFit<=ku!rUaU#i$Ad<9`43ClH)WM0sE-|s+7JBcT_$u+~Kr_m85Ykk61PV--x zHyeQ#?xOA(CS@uQM3B$=2qcg-iRjhqhkKamyyXLL0qe7U}MlNf^iVY1q z-U&J0?MFsf)1f~1`|~?Av<#jh=oIjd;Dx$Ol4Et4d&geC8=8xa2jQiNH64Ry(H-T{ z#?0gBgDK`%e3C07-Xr}iccTr$c%ylGx82BQywPEL^Eh%TBm2MLUuL=$_v7D77lVV~o-or01Hev*sh;dX z7C(TBtkc57p;n%k>1I4ApZao3g`at$~=D#+8jo`8jCV_KcS3{8%$RGD))?6wTJ$6i?u)B{N*^1O4#3!}GOH@~Fqk1WRc57R@XA@6a)b!Qq1cE* zIH`%Tu{R;VGJv!8SFE$=I|2-6fOAO4ZCHzN9QC_5+`AhFhP^a3^JEvht%D)=>-9(} z?5XKslPPyOA_Twt4ju{mwLL5}zS3v0_RtzpEB-fxbiMpcEH7vcfyMZpX> zlt)CM4)by}l2Q;8mQuyo+5JZ7t41zLZ^}pi?BESGgAbJ`40E zp9l01{F>=ZY^<3(6^JtDm6UodGn_@CSYbX^Cnm-&{*?{qkae&EB_(a{^PLX~;97xM zQa={R(+F8;`dS1n`$F#b>yeYeNJ0pK_Id-}fMbK8U0lD^G+L-q>CyWuW@Qkpg^uMi zy}4+avFZZAgC_v|mqY~W-ZVp*1-KX>L43q75MTgt_-r6PSf9$k8^H8R6&PetgpUPbcRtMbi`acJ)R_c5MfWDg9`b@(Fh*?pTj>XD| zJI!M5R}9EvCT=Mb=oJ99V!zrPXxRx^+nIU~Vn}GXPD1-H1{A<>?Zf6VR;6iXAe;dt zPlt^yso$L5_sQ`DBLhjlf#isi)I*&o0`k`ekRzB>z)@VR9v}d)el}d+8GvEc2{1$; zVY&_sud`w3w|D`;z_I`REYXL%)lN)2Wue()5HsrJVVoqB%|JAvqDlurv?>G9$Bu*O zJaqV6i(ICQvfpzeNI#Q76+mipug8Hj(E)ij1V@4+^+L0U1e6lLCIMfQ+Q3Mgdb4 zkdf4kQNRrf$Vh6gP&>Y=S~8NFla%5c3Xr6Rz7#6pn+o`g9q=^;d`AJlwgbMZfbS~6 zvID-MfJy~45RiIfn*sFB8HD~^q0{VSBbDsm6mT^GS$)xruIPQcMS%4p0R}lG^*9PU zWi}zZaCoCbIHNXf-+H{!0&PH^!R3$g)JSx^-yC8e;aIdZ5S>${#}lJJ%=cKYu{X;% ztVk$&b&-$vGW`hM?KQw0>T-k{ok@Bv&yak4b8tY52OcNNtt_| za@v`P5Pm7GX4_g_%qothxJi7bMz5(M<|$&l(VtC;UNbciZYUo@3{80}dc&>J?@uSb znRr*^JsCj^8;K7tPlj#0#O%Nj`J9D=qr8iBly?ZZzhkev*EO+MrmJdlXmBO=Uy=B}q-H~r5FfdD;+NJfw&_1+m8yoR8CMuMe5ruLVE)_;{W($gR( zO$+(L$9Z+={+Q{1(0V;!^-YY;z62RE>_^bTBnal%yFw^ENxt*%!ipxi^nGr zRp~s$WD2iguV7~kIC!SOE?S3Hamot1+i36+%sW@o6#24mW5 z4s!{?lHfE*u!O-vP*+T<#>A}NNXI6@Diw9Wq=F_@ISblsbXgDwRTlh1MOJcf_6)U^ zM&b+pEX2^tQ;wBSu_(-grjkZADSDr(6DrVy?}DOcy$IB8S_!)4R2=h{wRtI}Dp+@G ziR>E-PWp>o3y(9K6HkE$`mYxGl|UWWpN(BubyW^*eZdv)&m1vhXg!ak&o~jR%WQSo z-bjU@jQ}qVdzr6ZwVt8#Mgh)joVCB4N-gCy%F)UG2xb8>C#!lQRJR_>I}#()kLn=X zmIIwaa(q~CYor9qO_4eunW)#Xx2)5(@E-)4rE!Uetc;-F^}E&BHuQ1KOTJ?5rv;0u zKv^4n%qd>-5W4gxf$UMz=3bjves-u<#^%N-0)2P8=I&!C2|mfrd^Q-OJ3 zN?s76i`G`GV?3vuVe;};r?o+pNBQHDl2m!D)jHsBz>pyjo9d+?KV}UP8)|?AMI@eM z^9?v5XnW;ga$()0t(i$K%mF(Y^EbVYx60PL7CuOb9}v4S;rY9G#X2t*M2dPwm~+P# zhsXW$g6STsQ|&HhG+KP9LX`D3?BFdbUiEwjac0Q9X2I(r#DK1+*M}S}hHt(q=3E%8 zTc@3ahP2dYb(49mJ*X0aI`*>h!LZawuTRpOm+$=z^ss;Yu3`K%!~E!kdPGs`+9h2n zx33cb7N}b(lNNY*txa^x9!kJMGfPE49PN_2uLHUcZs?Wc*Su!k_0Rz zz|pD)QSZ^H{TrugFbQLS$Wnghg+i6w>$-hnx|St##dN(ofsbLjZiWp=t$)Sv0;%bw zFDAWVy8b5LN%D#5dQiSR`NVYnDTwcG`NVYnM!vh``-R~b?1wKQ`Fc?GwZ9`=$>9_U zeeLk>{9FA|=h?y&p++9;@LCpBe6e{YPXF5RdGZ+TU(iVzb5ifn!hpkB0zNxU3?}|! z^Bt*??T|=o4Awr`G#_!!E){RhtCNWH3r!967jk1GKTB>0?rWeWVvEd7X{q^{@-@F6 zjraT`^#a?bK^m&f9u&|HX5NOiUjMtAXnKR4NIfo|>A>K&r^+bP?*QT$Tb=z)9ttp3 zVMEf9x@nV|eK|YL1l_k=XX|+eqhsv;sdwKcScg?zj zeMGVS$Q94bJL0EyLft-u#2$=YM&sMt|gKxXJQ8UluXfya!@d zZ0O~@SWu4UF19m8ZzEInmrSN@ttL}$f2N-+)8X~Uk6$MLWIO)@sx&appY&!c zy;}KS`274M?fhR+{ZEcG`KQ_WBmMaclz-mm=YRce)9E_{c@;Zo z&BYvSF6PL9*@xgNq&G^?Ck@1|K~)CsD#)Q!4LlDTJ3)l5tYuTRpcT=nc@mSBYl8yI zbHH#p=m<%FZJ`)3lj#oaE{sfLN=Y@MscCnE0c%UK(J+$;4WTUlQrOMe=c6|@TSf>a#pGfz&m*VS zkio2C|3~bpBw?5i3%buOx%WR+FC#+Rg1nu|x|7Em4>w~NB>HX`Wq-*D;hkh#L$kzK}U~fvNJHfiEi=SO-OUexd>-85l%cwZ5?&9B;7`1qtcj zd84P8nPZMHH_%;1rST~C zM@_^AJA&yDC{_eI;0Y7)j2)p(bg3dR)K58&5sK~)6EKWRb4MFmr`NIt)J!TS)J*LT zUSkln(@XIsU6tJ3#$Cf6M>H~Q*rnr zJ6wxSG9ie>a&S=6+mtHt=*OHZ82McahnJn6)YWu8x#&$3@IuLG0nqC6Nl3k#Fl=l3 ztiDimslA8cM6}7Y3!|I8nVllZy=B<^2m9D5blK8XgyH{HqDC`WXJh``%f=)@D`4x= zIG@BR5In^Y6U70X{EZS zzaSQ(;litwWC?x&Srr4)scig2@HkJicR3<_Y)&O{gi}>&vs2YpTcuO##o1Ct4~;&r zz5kbmXtg%i_mV*1=H2=s_nfKRiWkXg zz{KlmK^_7v+huE*ZY7zQ6Bs40IL2`cZxGw^{(l6lgCcUy7bQ9mxwqD*RMJXHGF&sH z3%o%=!Tqd3#(GOq25D2G+Nhp5=$O9n_=-u95%DT64J!t5B4Fj>f!Zg)5>bR5V6HRxz%X{<4QNsFTlLjZoREXwY|>$`XWX-1g$5D4`;X4jjJh1t{_b#I&Ir zi(G`m3Ta$Wb#h`TjV)~TUXi2=tJwm0-llm%%C>Hb*- z6#Cxrs$qdHz7gtL{Y{Pe$TOZdw0_)0Sz5pGb!ff21r{c&4+0*bGphT7+->Hr&|_SYled=4c0H&;*A7{;Hc)ra-?D26=dW&a zZc&KqBG$zMXQ3~43;Lf=8dBt1w2@8(W4B{Wv1JH|btVsvn+&7u#9ja{n&n#bN0V?w zfqe@<4;1|p&H}G1FZ~cvw>1kvMS>(Lp~w->`yCj-YshyN_^ho6>HgsfZ$0dDe2k^b zp^4u&6gY$dj3|++cCt(^KkI=GD<0|Us7&@!i$rO zc`rR?uj_S>+E6pcv~Ui{5BB<96G;a_@$-^UtdcU&7GXdHUQno8t%>6XHNUFJn78DZ zwINiu+grB1C6#Nn#x6g`Dk8eTpe*IXl3^Id>@r|=vdn31%hG-%72Ah%QG;wv%H}PZ z=XG?GyAfY(oP)HykzlW?dPNH&1^s|(aRyFDAScL-B@gAk23)?_Mar0p;yayg=e0C4 z0RmnZGdDKifH6FZ$1KEsU`Zko1ks8NF zb1t~S&#^D59c^l8GwtrDFIk+Fp0rKGmkBru7LsRf69l4Rg>qthDF#F|*+-xa;rt3s z4>6y)CEWrGv>=4N#l!gp_@CmoLaNapPB)_FUCmGa)k_szy;OdF@~@5?e_Vck@~`IF z9r4}rcL&^S>z@-jGONX+;Sd1^b}3DO7+#G}?NdM0?1g+exf`OeC35qkgkuetsaxjd z7YFi^AfF&x3FqkWBH4xT+UZ5)C zUTbUmh*_4iLvK!=tu_Rc(!O2G2bud?U2b5T7@;b5R|5vq)3^NHP~B&*g|fbKuEr?$ z-Isl$(%*e1mk*XU`53|5&W%v%tL^j+O8+wH4V7L$3Ex`zM5QA-3rxtTJ`iU zno{}V@@Y?VvV1Ser#;O+<$DpI+0%r3hyL^%;S_KCOdvdR$BrI0d0 z(n0YwsbQqPM}`wx74cm~=(IDt9Z3@$|K(lQeQl3xPDt_4lKfrEezmxb@L9nbWXfOj~)# zt>;*M@9`_YacLUKIbNtq-c2Lc4J-63j)dJeHIAu`to>IRRlRP(QMRa4tZ$0kk z<6Rh&CD0(RVh)m&`q~hqS@RqH(FMgpE7VN6D^+fEK{>%I`LgPnhpln4=&i~#v2)9H z=o*Y(Pqp)xaV3^ihB;$5T12W|)f=5lhDZaQG}{Z<^IJ@u(XpKC50-7@xfXVgRTQ#n zuL+%lbFr+&5kryl7jhm;Ll!?}YOPiS^u8XU#4hes9spq~)2Z*OlwFD+r|!Afnxxe% zzznAK+ziwI9~bkyin6zx6xVPpJQv2|`waQwsiyF2fZ*a9+o{@R!HcuqDu46_ziZ)d zFc9bu&tJ)!TwiRQ%W&2jr)eF&@8Ju&Z)|i$&M>YY;Bp$54_8_xxaT*!A{$Lvt5gBG zo-w|ITo?VdNwMB_f7m!)b=`l59MQ)$=+Q5+y={6LL7VQuHZ32en23fA4QtI1-EvNB z?K{WUXth|8QX-%*8(FTuz;ew&avw(xDX$|XJ?%~mx3qDgj?$8SS0kLwKY800rqjNg z+MtQCTLBsBbgo#nsb!T$GZ>xRcsUCE9Ew=IdM_$I)LO&MC{B*8=L!X5cYDAU#5}-u zUcP)>irxMt%&C0VPISWBnO25=3&@I#PHu+q8LQ*<;((y_*G?sAc^@$Twb*na8S^M0SM1i~s8lpxvD$N^^5pPt%17a!o}AT z;g8w_Wce1Nah{zBM!9owCGpY4CVM-A6J5kzyxX+LmR&4P;X$rQbqs1R9^TQk6+<6y z#wUe--$Lv0ZY7I8u2FCKaESF>wfwQMLkUwdaRtoWavIC!UY_w7{Wwf-j_96Zt;ciJ zPLP}g(dP_p0IP_CaoE}GwL;6(vgfLl-&)NSxDc-9ufnS6a~e6zykW)JpC6kM{k&;p z2_+E7)%9jEr;&V;@=C6gyv1^sCFu=g0O*&JG$cjU?N($GZqTG`Z>*YPi&$2{B;>0E^vq&UQ&jFVk}1m z*GV09AOCIaV^5);UXl?hLLIdJC^kq5aOS9`$_*bJea=u-E0(ADXv~mkZ9h2swBrql zwqjLwyrI&WdhGZjRc^)n=F_4on2(vV^X<4wRmf9>A_1$aqs#I{Surj=>c=pM#$t)akc7W|z zS+hM=e5<-;^!3C2h9C@|JwF;LCtGx}=5RD7DpA&gRSwClFt#zLDECjgi5Okgslrvw z{FU&=&IheF@ye~?twU$KxshNuoZBi7=j1ff3j0b7FGFHPeFd}l2 z{COr_*wA>kcn9otWiQ=Ez7SnijYA|!pXe$x=+@)QM2F_Vw}X(Bw_Ev_VSdcL{>NF6W^3P9h+l7T&B(ns$^swE9tnF$`zL@E?0ME z2wLmgqpMVl26@p&2zuixQ9*eA^YCaiP2C17@bwD(j4g6OyBZaRP+J>Wm~b*&LxDsgr{pv@bvAf12m3OIb%L*u!RCjQ11xfmCb1;do$ zDyNb>YLeX5pX3LbB;(B%@G5NWpMUZUljiLHG+)i8$x}HKMvx{qXwp18Li|&xUEAqrs4XkTl%Wk`U)=WOiur#Jr^txatUb#gXH#` zI+NS4$Dk=D@&x}`3HT=TTPNbtReLoC(G&1^xbWE2WAL~dqBIzfAtL`19*?2ea&@nJ&1#$Wv3dA> z9QI{;4IpD_8QIRa0p?%hMms z4L-vjiOL!X=0ffUXmwg$zbk6bNXnEL=fBO^S5abg)oA@1MyqU% zH#QL=&cPw~ToR1J@d&9VuQV8d@C0e~L-?_H*pTmLDGtP(_hT||iIa)jP~hM-S|l{O*ibAX4_YxW zFl`1E3~mUKQqLSa77rs!P@ zE%dGRAMB54kHFfn9P-1$hR14;nvKK2x$*ud)5EempHql=P^5gpL{fo>PZex0*W^=|V_JVPA?f<)V+GfTw*xmrWHiRv+ zR4AFsyajsCIRr0_LI&0a-Ag@7G)45F8> z+9-2bx)=+02U0>u|hC!V)#{O*?eXT9$2u0_2Ni14Z!TFKP= zZ=?NS+6=iEiXh8z^k368^xB|nX6@Ed$^S7lO%H*>?d$hBbyYO&9%ve@_C@eA#RQod z$n90U0<>Yd9BV?3qath~HyMgH%uuxJGZgIr7(Be)4z0t+xe6s7^Ufde@(IuFMK{{&` zkSI8ZVr(3UIbrA#!GHrD3$D)6K`ii`fCml#8y@hs*5MQIptt^6ADUW=J{yb&zqea0TeVEWBn?xsKdOMJ*2RGg2dc+j!MCdl?# zMZQqrGCi{6MD3}eV7NhnDFy|wtOoyMqX6J?E|V}>OP0;3UxniEx&;*yLEB4OKMt69 zkNe<)LL;AM;c=Ta%^(4@Ez(Bk0^x)ckxbD21B8guzlL{dR;Qz8@*Bp-wP^SdLnfwz z8o_A&%FN~strRds)GZiYtW_|B8sZAQ(H|@mUSxP5O6@iYF6JcW#+A?%vjSN2n{BuT zq7QZgH+G<`om&j=Bk<>Cals4+x8mV=CfR&!z8gHaB|{I=1_K7+!4H}5`7=+X2cLrn zYwDjxI^67Y@6OVMsniKg_>)Auq#2RU}n2+&?lZOh7FS|)=x`9iA zB3EV?Ig@*VuIS&f2$S4r7nl0;pkhPC>rE`L{s-#wUNkM^>4&+z@3lU}^&8DQ>myuGas|~GwmrqHY=$v~>k@BiAGnTo zVmaN35m*$OxW_JLy^RA`!%sd16Jv2d8b*sc%i1`NuM!*QdVpRdLtr#&h+qy+7b3*Q zLj32il(mr9*cC}Eem!WlC%bEhNru!G-lpT$VXmg{>c(~5UNW1RA1gEz4Viy!5ain_&r-j~mZ z%sKn)v(MgZuf1-2?X~clNbZad;j}l7AZM+?ZGgS{ozTjQ)osq>EVw`y4n44xFRDgPPuS#!Q-N0|TEiW2SCuV6NdVN*V}a!iP3tzgS6-%T{Ty2A7DoOxKw?nQ) zkH&#P^H5d;>jLMfL0G3&%qD%hu8WZQPH(@^SzdZ9ehZ(2vN^`N z@Y#2TYqtK-s%)BibVJR|v%lZFH;2MzUugLYjHjTnAK0Pj&y?O5j%G5mmk`>7xnBWh z7oc#I&pMJU>^W_5TbXM{GN#$f_K zoXIkB#DC%Mp&Z#iX(8q`!|UIKwq?gc)|`bFD%K9k&EFhI%orWl%N|a>yhhl_#|nTo zk~bK4)HN({^Yx$G)1LJ%3w4H_l}Kb6;;hgg)igu}@?c z{vFnp{bY+T=Q?E-KZAu!v$T@83NPHkZN8mn1dTuN2Vtn0<;%9$ULsO-D6mAn2U1Ebfw=#X5nTl#nFnQcE}>|Y+$&T7j<=A50Ie^IhJhY3#E zHNsdZCp4Vt%Ls+;F-}Uzj{Jo=$^7bgoJ+n`4MKZG5B{lEPBI6>MWU$@BL<4SvDqJue~MW}d#E3-5wu*&SW*$yCvb;WYCNn%VjQcYoF0ak~2xcem*7>$>|D zcbDmInC?>CHR}XJ0(=(FtBlNRsndtN%kX7974L~hw;9sR#*hC;t!#i|wI8e3lcrMp-XW`9 z9ULw$(<>|OR?Z=ECAqpL;eD6a|011&rzWdohblfyV@J%))W?)_+G zy!tQdeyHU)vKe8{OU|Kzi2=k;;KTR8isU%hZcq)#DOQ0 z+lUvyq2*}Z2Y7o#lMRbFEzxD%OHhm?$Ioxt{4uMyJzBRu`RGW>kbyt}+YyP?b=bo8 zvl_&b|6&^Z&^FH-`5`*pkPQ(|akB5dCo<&O$PmsI*?ud#>~8Zv*)pAqM8m>eFnRk4 zY9FrxHDL|{EoEHVmcMQHm$(ObnL2|Rz)8-@yhp#Xy@DWZuy=bPT=#kjrw-m7WVT^<7E`2nRlKL_3F+GxN%UW zsBKHX(W#MNh&XQ+YFF`eOe%ONw5^B@f9n>`5$K1K3V}_fUcdct{dEGbbJU2_UCKb; zW%$*MrF+_EE8%w$3KsuSgE`9c=seYTb87L)+qA!A(c^BPL1k#N zrqW8}EF0ai8~u)VaDG+d4KL-e3z@|EbUAd@rnxx{Xd<;`jw?^G*CGr^j-MAs=ugQ% zv*}UIA42EtW=Tff_RMid*j4nrq;1bvK1s#w_RDiyrXKQrwTa061&fc}bbqvfPb#OT$uhq?BzYZP1`heTyZZ z=5eRRayMtBXfB$2%VK>ZdBIAu-1(bPoa#bY#ZDh33L&v6+&=q4_Ssj8*|Nz_aOF(@ zU-Dk{1+5Lwd*kOvv?b>?EY+U+U;B$FnYC5BmL>F^Q+%=1&8IXnqyNA5*K6ksBNmj? za^s^~No=xSYoAFK8)#~mDTCAwPDZ1pflnPL{Xhk_| z?T}9VjD-WkSO$#@+z_Bei$ojkso=HwO?GoMZpY8KzSeEB|HW$A4*LoH(`zTWt*Fbe z)NG&qRrZ_Q{-j?Xu4aQ0&6W+ywYfcZ@lVFL8GA;p!bRR?TK%I_=$&+$*O1SFC%y`& zK|Q{R$EHM;hi=%5I^imPB*nri*{=CXex*oxFm%Jc`C5N; zwK(i)yXWK&)b{y-_Q7*`7HUcGmsR5u3u3Y?iB-So@0({yy0mrT_$B(YSby%(pQY@T zk6Ljrd*!wB)5|ZU%K6gAOWSdc9^<280SdCeFv(1b(1R(B+)P=bEB;KH(yA-|Oq$ZA zE3{Jiclh|%3Cx;Ik%uDfFzr_q$+o3Hx=O*__Ku2uytD7vzL8ooyb}-VUq8od5t(L3 zRDW+#VIkddIG4_Jw%ew70ltaujLy*=F%nr}(_1ECG#S`8bskvuoUm*hSk~D$S1#1^ zv24qv5^CZVU;+^2=OM;K-$h}N&{je`2&;^+AORy(6ZFMj_aV7=@NI>=IBz?YA%*(*rz`_ zUrboMPQrlh&iwoq8X~+7M^_r&kSxX#q-ay^qJXh0bWL7oe-;B7Z)ZQmpwzQICfAY( z4=Z3tN#@-<%>vk!-Z*jAQd9TKW&fMC)Ua%)l&V`0rHoEt?$djjhkM?+;2tVpa8I_{ z>Nx#PWvz~fCT1>qkEzWMG!Tj^fd!9Ee;d#T7>>qd@h3*55E{(rBfm27B$=c3I z03afLEzp^(+;|{Jt(JNX2WeCFQMIM_?;>{=29;f4=fkWa3PTJ2rVD)YXq!V(#y5Za zP*IJkwA3{u;8pTGDelfs@Is6MmIIAhtXY>$V$VPUd2kYx@P-| z{`C!H*obo|H6}CnamFgY%_sb?TJXXIE^+URao*_O#Y(ffX>-4N<%cU8Xq6MKQBvO0 zj}}oTqb_r!)$bLUXb#0h)8?CK4kfVb_RzxD(HLpsh>QP%6snADuU_a@el{w&5^&e6 zrQNZ>6`#bjp7TRjtR~V>w0e!gUr-7b$=-R5fX*(_!ppe;P?LN&_&qZ6{or8?B&{kP z{A<1?BVW({Fh(Sq`?{#eOmt%I12cUe4>>poIvH!I`4cTQqyi|x?9ym;En4t5nHC$! zml#O)n_4ufQ-O9TcEHuxP?&pFJAi6i*L#WivMns>hGaO3wD29S8y|HXqxo3j?mJY? zm!w$?`y$uEJHXtmGOj?R9RB87Q_J~xpGWg9M9PJi=)L8XF7g`YW3Q;?64uWZ=im{> zIZ2y+kX5Joc<#^p&PN9W6!?mcWwz5Vt?QEAp(|&1P_OZ!&;QiUxmAJXyOkQ~U>M@f3O#dK6+j$bJbc67Ov}lJ{QYz1(U1r&aK( z3j8>IOI5H*1v)3mE5B1WUQj{A70gw^^D5BE6>3aT!E-9`&_jqd;HhX!f=ql|7c+8$M5w@xtd2Cqj7=`mp?6oQn&kSy$1J)7&pZk-vYU!0vPb z0%LG|!Tf)yP|4YU)bCryQo+{}sJ=nf{q$of`g7FH& z;vas!i9Pkkx=ZwW+j|dtR~F+uni#Sh zhPyJ|P*!GTZ#$1N%|wCDu6g>D&hFWC;2MiqIu$&g z^CJ|7*{k)neBPJ!g@c5gyr`{y+CL!?I;)K%7`3fbG&O%dZ-su|PKD5~?Fa-gs$IU?ri|pu z9`FA~9&^}$^sYK+hGp~P+i@$TtQ`K8A{i%)U8^CyI+VIA)}=o8n*3a zI+3AS&ZGt+L*BhT?+l>AGZ%#et%BDY*BYnE^+nZl1StY{|^J?b2qP9+C9 zdwIgQf65cyoK9!b2b8+&Xx!~?dbem^@m$f9@Q}9J)OXp9{}|=o#FSs~1->Xu!Bxi; zdya3IJ3M&auYM#d9YZ@@FRutTN{i>Xya_1md7zWdK5Wd2NU>Az+xtrR-d_d2es78a z+mjDS#g{6#5gVR%QfV)FdkH<0u8sk#&JM59lVy}akW2YtH@sCp#E46pY6|c>k=<{R z!vz+AEi%`v=9;5F0B@|lk`uF6s~tPhw1Mxf;i=HwFUV*_XRz-~ z)cfq}_Pb8V8c3(|vS*`$ zkZ1%6(#h{CvHs!>B<)&Cy1J|gENjf7V@Fza*t%Cf*#FS~zWRcW(1NFMS#5lDHlsm> z{LuNYYTfx83bG3X+W)ORptcpfx!&+b%M*;LCGVfq<<8h+izN9VYKYz1|^ z@g1_O47D*iw^Kx{jenIL0Kkn~6!hanreD2?Q1v-K`&(o>OSeq`g<8|gOLp-8UH)&5 z;46(3wPV2PXaSpuhTX<2p>Z8oG>;~gh`nk;YyA*8c6PjW)sd|S@%M<{&Cm=w@SoTl@WVHJZs*0ON5x>EkYjDJ zIE~x8MTEZ>K7Y#2;2AqWcc`BYDwq8mRF>2IXQ1*Kc~tfiy)oH82O>;H6DvSu{{b-} zbBOHw+e4YEfC*6-2#U;2m)~`A{~evzKV&otE^=tb-@!q$h$_UWi|7C765fG|o+bT^ z1GE?|inxSY8XcW=4}nTxh5uWcQn*CJqV(S5Hf>)Z~*fOsNh5{p{gQ%P{DRl zRkh{K>cFI0!IfyM=&Z5`)XCW*vB-b5hR#r$=x4zfXzLyd9Dlrhsh*J%OBPb^{-_@G zv#do40@);=g_=706PI0s69=0V_$>3+>#2ubBNo^gul~`phE3*P&PP4#GI(vBlS8HY zXaf@=RsXPmES3FZDSPdU`Ch2ym~MKH{bMOEF**HiMU5Rr(Hbz!9w0^WNP8V{&VC5Q z)vy?hpb)Qf)*$bGfhq3&P7Hx6W!yp11u*W$>RIyp_b~J|aXiQB*fL;$hv9d|>r93} zGc~L)PF?~E^#!Ix;4PkS&?^y8D;^*dpdB(#xKI|{RZuMke_~4EaMC#Y&`S@3H zb+%TK?#l7h8iY|F8n&TZ;6#v`bgK)%Xc zP{XUw#XYkMQqt--7O(q02TV^OLUKgNDfuKFOC8>5LXS2mUcfc|s}|600mQ=1YFzjYY(L^$3$NfJC%`oCmI=zMU4mU~PIdNenVlAypUTG- zuVsfZ-2BaUs1kN$$cSyu`7ep^h?zUJ8|Kfu*t zLTuHa2#qf~Ks7o1m{Ty!0@?@<^ev#*;+R&91+)_js9hI(wH@-Lk#i&sjQZYUWRk84 z8`C)_wd{S$twZD@;->>LxnvQkn3a_n@=>h1)3&eaF(yzw=pbe>R?sR85ed}Uh2P); zFB`x#>4GK0Thni>J7Ve|*!JQ6=wInP6^DR~?eP%Y z!NSSsWtpT*5E=Um2N7S4$^#}e_a0Ex)qR~Sjp>Mmz+e8FvP-fWoIg~8eh9bE#Smz? z{Yx(L9s3IK&0b4?eZHicLvl4|aFP9l*0J^7cOaI$Uw%vIS9DQJt&Et(Ib?0%HGh%*21vjX`H)8(kAPVNGz&BzBRb#FSd?V%-)wo^-#{-zmx<%c4 zvwy@#&L6*)XLca);H*IQZI-iNo{!fXO@4wmk-}~x3x1nmj^s)p5l3n?cztT|<*_LE zJg-XDsx=ed?%4FK!r)9QI^yTd3~_qw*W&by7=(r10^;~_dcK}n>M6#~xg~zA9-Y;R zQp>CDlf+{}4?IHpcqiM(n%avkP*3%9`sUiuygM+;r5~TLy<^i8L)-PuKi%TKX}|W( zzhW!g=bI^YF)-tTzXf;xty5vnm->T0w@G{gt(5AG) zj!nzmP#?S54b^__vpe_sY<+nqrcV|QwSEAzP1}A1q|{ixHLC=Qac)VdxeiLJ;DY`+ z8geky0D1zD1mpdFM1l!IA*CV%3C=X8`10`vj2OH5xn42pC4(#cUb){%?P=@T@7N13 zoP<#GpDD@wIhhBDHO_=+G7guEKym=n4+QwWeV2}E8uYvm&tn#&X+7I$nT7`9x`Qy$ zehT|zuS8Q(P?Hc+wH7{VjC$##iG`55?q|Sm=QoP<8)_QB)(9hXA+xx2XV^xf)0S2~n3~c}49CMmY z@s3SfhYHxuyiExRoVm%(s{I=5&fK?m6`9ND32q8XWk{R~ThJ>4WY=Pl4~7hGeo!k+ zk^v6mlpcCme6h<92pB#A4t6-(>afQ#~J`twv>f z>N)gqYvmHvE2Ihg`@^$e8(syrwL;*Bnuk-8Sp-=v7^0?qI_5?)=9Jn98N7%>m<8I# z0@YGsx}ge03#%4%{jb_||LjHwRQt8BK1Rn1zsgeivc6b2<@EzdsZ!RnRHDWDx~99S z`@qm#letqPeuH72*}mRp+v$n16#jh4S2BnH9d1h?9H(SA>gHoSTm0qnqhCle!2C6MLhr@a#Blc{YmlUip-(c8yIwsfY$62 zgqkCy@~bg#-1^d3auAGfOo_Ff|5R}p8>40+T>WvViA^;K1q&8B{g~0|cGgY~uZ&Iy z7P$qe-_UiJgJ=XxEBas|f{OS4jHVM2w`Y;aNEJkJ{3C`Q;PHK4Pq}hVi->aUy%?8U7!t z@B75K_xi2yJ7T}qkv~9Gdv|22I&ydOJ{<{KN3{Q)M{;J9Y0RGR8U1+L`mqJuVh+<= z&Hs4cb@&IX_gmG=!7Dqi*Sg-X0Im~NFGrU|jwUT|aJ63>&JHY_y@zuP8_JokrhSIf z*M@Ty&rn}#OE2!BOMSC-l*&)d;Of5rl=brg&W`8dnw9$9Gaj4&P*aRGWOaY2y1Bk) zcSz~A_WXKB`t_3Q^aQu_WSb~fbj_BgO+@Qk<%wAO>&flY;b#&eCv|PU}a0Q+rwrf23PG-@MgkNJyi2jr<=LwO} z32ELms|-R~YF%fYw!O(Dy%Ou!P?1^k7t!7;;e9(|CpVN`_FDFR_2o0>Im>~7&zk>i z+?E}7iri%Su=ulKFXeKuTC+tM(BuOnH(Bq3QWq~W8VMgZ;wUlJCy>{@f>VV}9;h_d zCan#vEw?~z(z~2=+>Bz@A*+j ziCfI)%QBbg^SyX=ac8iSTvCa+&maPI2F>oNSaFaizd^! zaYGz|k5SpI!RI~E2ShO7bF8)I*E4Di?Jl5mTcy=dZ%tu)bZ(7nFJn}DrP^aa)RQs7 z$B%vbeO|8LxmW59;msbKATDYmHT6)3%j@iHy^sts9|obcFuh3e zf6aABrr%JL!oE8kAc!^8fzdLdAow>kH(n#RCM)fwr|z%r5T95?u`~12X~GjDidtof z>dm3%Z!j~7WLIKHHzacFSn*FcZ?vtfcQij#L9>f9U;oT+)bF#B6t7K9vq;wgauIHh zWX2_JuOaL5%#&<@ZO^*cyhE;c1Jv(jbG3@T!c}yc0M5Tg*OlR&*&oqOx)aawll*$} z=XdM9*c*AhtECs-t)&Zj{wZD{XNDgBY3mcozhHfuF#>#<)q^j@@hvUL9g}Y_hex&~ ze5QSp5&LHAeeSu>2X858O%I)m5?&0oMwlKa5=(Y0Ll}Ftv+F>)j?dg4LFr;l25+E za=*eoSgQOAMtbuVHu@E=R14y-y(}lsg_@4g!Co!I8yI8`4o2;-ZE|q1UmMLcz2LAp z-()zLT_U{yJlX7OLCsYFWCcX+HGh8Z#j^RiEiCG(@Y!gzq~{X`guE2H(f`DpT!l`@ zptj_2ELUOHwtOExTMnKjXno!&CihhMY#H_Bo(i@I^PSA$`3u6-&s!~(ROpT6*$C%h z_bGamBfa|+oxte!DVoEJd6wB~r+^*5%pP0Nq~X24*bg@ltwhe1Vj&{p2lmEFV@&7n z|80P4S*1qE{~g;Jtxk#3uW{I(=WEOTPh1H1l9xSw@C6OO52oot$VPmM5M+P)>7tzl zASxWqt#t>wyVFRoBBUd{nX%JyUJ};c9!vk>MwKkk9754QT?T^{jI+aJ%AKkbj+4o zTs=yH%X+)5>`b@zSzh2g3!mpuDnsv9ocBx&QqdoyAHNU1wjHEkz%zc-(wLRqGEaGfucx!;?=&-b$41-&}3Or2leqfa&MIrz#kI4q_Hw|}>` zkIwg{25>iseD#-du;kLyIWuzUIc5AgzcT8bQ$s4o{`^0yB$}L{n+ZIcb5Z5;u}o;= zbVGpg9FKW$7uFgYed=tR{cX?YCiI#gGohO&b?5M=X;gA^ZJ$8s7p*SuWPZOu9?Tge z74N_wP@!OUn#(s(JiHYvUCV3+GyL&r>Nc0hB{iL_ajByhom13j>zAFL<`oU)b)=2t zfk$%Dw6lL`ZUt{W)<;rM@)f0keKm7EdoNMaMPqQ=I;DFrcB~cNfginD+vnPy%9S0O zt5}w_eB<_DpRHe#JmeKU$75^vseHXFr}b|38$He5?3!Ka4gMw7Th`Y9mv`XJx_Z1} z)QY0(xY9qRkI?7}LfpI$PvKy%Kv5uXctz*x<<@$#)_uL=ueC^`ug6m({sFkdD_mQ^ z$3j#&I7E_N$a12aZLjXHeN>5WtcRWs*Cq*mO-Q)+Gc$jZhsH}62^yi6m-xIgjYm_X z9!fFpv4L<>DG@k4?j88#8+y=O(uX;ZBuCB-6QDO-{mf-|NNJ6neDqSDhnkM1iP*Ji z#SAX!q8%Ccidv`=<|sPeX$MZ?1MKoPZ5Ke;!fbn!4wGT*#y(|&5wBCRuWGF0=HJ%n zry76zyc$8(SoC={imKZ$zwFx0bD`_rpyli+WESthcV5dc zgX`^xlqHhN%gg&>Y(oS}aK*IRJ`WAyn|_>~QBR!-9q@`jg~-{%XLj#xe5Cw$)Wr(( zeI#)+EoM3(h0bnw7F&0R4sZ3YEG1(s2JBJSGKlPbr@QClqp7cFZl&?$uHmh0Fuvmw zf#3|88Ws2;*eByrG1{`R{!q6LH1MS$HHjHYDCWG5ria&3quzO6Eb2QKWG7nNPF|1d zo1wc;E7hMe{i!HqA&Yok_-Iit`ZW`jkCHfQ9)sJ_ACO|==!>nyJAI0G{70GGX%v?3L$@@{z(K zN)G(*=Au5gcC?Ki+DXc#lJJg?l`o>B?W!M>$0ifVkg{~Tom`-EOXz*(_)EIwH{S&l z;=Jgzq)X_e5-dM914#^x#8Q1`R4LgwVH~YxQ8r218~OwSosr0ewv6H z#iv$siQG{~mPL;CZ4ly^`(5%b$K6=;NitL1RbI@1l(#XefdQ|v_Iq>rMEh+npJKl& zqa^GSA}I;G!65Jg;a8%e+GnFAq?b6m8<2bAf02f8@Xqezd#%Cneu7;##48dPuD%uSfW`G zAW7?0W+~K^2ELVosJF;K$n$yJDoJFeFtRG{^-8NnzL0~Xsd0Vrh<=&l5(meVA0(3R z;4#DcCb?O5JkGjb7Xc|a_N`c?Lx!?9TMDJ5Gp^y3{vzrYKs zB?=M>XN`M755(y1WAb?Rn8c_~Qlnfa(x!H0x`iPJSAPFk#X^9r) zGCs&rXeBe-rf(;glflx>d^}06i2IB}IJ=GTLpkQkK#~sXOl3lVXXXoWkxU`at`Z$| z-&Jy#^~lxTRWjdU%&vjc%PV<}8O?NIyJe%Rp%0bo4Uc@Z+EsE*`GAfvS>Em&6MCS& z0r;S!q}wO$NnZ`>X`p&K=ssTL`?OJS`VftRc9YgptgpN<=}lqb3D(FgzA{kFQZn+s zj`r$@*K~wWn$+I$+7FIgdl2`xwh1ZM3L6KH=L3aEdB;_QBMq$N_a~8T?(By6{9^?jYGxJ{a4-}>oqx9k4oB$eGAj%C)d<^} z!rXMZ*-?h)GKoL|Da*XmsCi;FSk~g*l8zR!%W9Ve0r*b-+&d6EHSk3+fX3GJ@vANtbV$Q zVmD-4guucf5hw@HID|oPj3w8KNL6Id!w8CX;FnpH!w-gQvWmuDSPLWv|7i^3TWZ9U z>70%@5y3RGoW(%>pQ-+C>YF>JGkIN_bHfC8V5anbLDY*C>Q8 zgc}+|yKh=P|>|$?Tn1 zBW~A6U+~UDV!GL$R#?pmppi?`OgVBK@)Q@=CX&|#YqQvD z&H<9ME7^X0#0Y7qWse>GxTbt;#G8pgHl;W-3dKMagttrplNP5ykqZa1lU+*)ucp_K zz_#ki7~{?R7^2=ziDqNMKTTGxs9&^_IZo zp!6vTOlyNRhAb4(`lAEZ!3cs%hw9&EJSURe5UNeb>-dg@sTSq;N*&%p1?K*=en@32 za#C5emsHm6OJ$EZHh^f7(K{@8fma)Usf+lw3f#=xY)nl0aNS3Vqui*cByj+O` zVtHjAajz}`xg|CUbN$8qlzxSCm6laD^KuZ4Jgsxa} zoup%X1wy4qpue$N3@Srbw>%yVMOHYeOKmn<+c+{0Mg*ec!a=g}Cf|%AK+>j|PE!V< z@Gi%n7b_wF@2%8(p)#bShz$!YQeK7c5ouN9soxtn zivYtVv>1iBPP2Lrrg85ffmW|U8>g06#B@Z~B{+?GH`y~W<*4$JVMSwHCaUR(B=oXO z2vw1%m%+>f5z)&owI}xKxMUQxf+`8sCzl6fO&ubf^Q|8_dYOr)>RUMWveU~q<@l}PM&|O--Fsn*vtf8hsEU&91Su|V_C+({kwcyIu7g|o zzn0KXZKR%kd{cVcq*dwNtJ_GC{e{RV!1{`iq-M?{;cJBmVWmEbZ0@?3RVH+Y2RHkP zd>t9kGW6x;A*-G2Yho@?MaEq;jWIh?@fB%`lXlXojtks>XK{j6lyD0`oLqU zd26e#f_FO^_6HBA(a6?Y(Ql-YJq2zI9PmfW0)vRdnTgQ+K1Kk1n6uKg!nK<2v0n$n z>=#VfgwR164U54Z z=8jXk_nwhDVHkrJ+UC>^F3!{4L5y8U?pBnK)mtWYm>vq*OKZ?ia#XArN+W*HNo6ZQ zKyi?K*L}RptxMslqeBqoSn{3pt_vSAI-m!z5(w;w>6aC;aC3P2HWLI%k0qasCO;yt zrkH_2(Z@s{*9%Q1ji};1yQ^~cJEw|sfD&Xw6EDmB`P+tfAceYUBNXf5!Y$*DwpByZ z>0J{eYVSf=7Vk|Jehx(9%RGfVl_N;JLJ@!MF;Fb4m)bU>==*eG)rGA_utW&}r4pr~ z>PK^C1Xfx+@TQ;J0^TD~AIJYIg3&-W8h8oa>nT9}wsbIlpG$8W^b|B?WjZrxT{<&q zb^3$Vt2k@5f4q8nc}-~HAz)heM!=2)Jn%(i-bBZUgkvXz9MtH?nogk7Qg3ALM0hXsQE9LUx=81 zK=~5BsySJ@MMfF2=^{yw^Uj~>{cv*JBaQ+rtYRndqytvCXn7*j)BS;87Yf;Hh* zTqdejaRrj_Sru{bA~60DXF)?m#>|UwZD@WaB;6S$a{9VNvqsvAdRLa^RCSe^Xyjd4 z6Gu#Pg4ca!g~%L`06!dN9QfL$zzrYHRYR56vuN+F;p7wH9iO<&wIxNRb>OHAq7p$0 z6JxDLp*nMe7H(DMx96drC$}PEJDcPb86%1ri*clpp#_(~-J0GA7!?nPYM+bOeXwRX zGMve!b<3lv0az8^*N9p*0t_PRb!fryyoV>_p5Y{b{Yb{R)p`tDUczrq^F?HN4r8Ls z5~)!qJ_Q~y(nVA_1ACQH+jBcl^^+OIQ6nGk*J?J~B)yi=O-W3O?lIq4f0>jjEB(C_ zhgpjl3^iYnH0yHU1;lhS7y2eRp+*^YILU}ee-$E2l~J6bYIw^!B(@?6w#)9FCDr&a zGJRNbg8f4aqpxKjNq=}{pEyCtf#{_#=T!!SG?=>6HPs0EFIWDm7QFW?34%7OzHVE(9x%9 zK*+QxTaX4Qe&(E$BxG(;7vSZN>POe?k~WLAE!`Jca~i=gHu+l8QYVe>EY%XR}%v%!&1Pq1~L-P+1^FmXI1>TBR ze-LW<0I4&KpoP0y4I0~gpPSumk^s(G3_4)u2%blownq9CY8k;>>Y)R!KhLnj3{Ugs zM1W-&Y+rj)5qZ!_4Aon1HCZNSj&zt9M=CM=ME0oA#7aW;S22r0ND92^c!y+CEx3?n zsQ$D}>PS@mo8Ihcp?{n?1L_2kn#`Pz^kz?w*Ihl%J7?-V$7d zVyXIqqBkul8dgISnX{tME>;DYbl|aFv`%7%EGmBZ8-c*)zuL_gi70)nSVsRz z&^mmhQhYLXT{eCS(DYE#Xxgzx(B^l+Tpd@gpMBa1){Olfxfif#4eTP7Yi>m^u07aP8! zb4$5%0R#z=I9@yR6CRp66kLj zGO!t(Lsc%DHQn{ zxCT1br+>l$NlQ8UN3COg%BQ|_SUORS5Lq&8Kd9+T=;05(=qu%iadUeI-3!tKdK;R5 zf=|}sfw$w;yF-?nI}9s>tdaBsglnZmQ6^h=P&CLIvZCIOimV9-*s=tHq4jxQ3q{+; zgIdf&pj)>!;bz}VJvq#tZ!1<70JFf}>`*W8M64QH%Uqw-X&R+?30Z5C?-2S!1kY*Q z4nuvNUQ1qE4np<nPZSeb{MH+01O7DPrMks(5{%Q+rkgy zXVM8P;{BEgwyMe&$8 zL7&fzhXu#Cv!@jJ%lq)?$4t^8$dv`o>ppH<=!QECg0~AEf>hL-US6p+M2v_FihS#pU)64PsboV#&ASE_q#yeQ{c<2({=9fs=KUP9&dl`q>m)9a>(tkY>Vm z`)2xm)AX}r>71JzE_`KdSILDz?#P(#2qM?xkSSh8JA>8xa5FI4D$;^LU4!+Tx<(+6 z$k%~SI$DkS)y0v}_Q;Id}R@f<~zgxANKPI z&0`cDXWxG6oQ&wAa239a-~qeXXM&uXc@LdOk((|w#5ys>>6qwqla4N)T4b{~GnRar z`>%hDJdeany{SgifXO0F%}foM{T3cLV{PW*N?(Z-#rnOo849Z%k`Mg7Nge486JF;P zXEg2D^n$NeLM>4%XJoF!Yb1w5wBp-V)m*VH74%UlKBiNSy7xSE%66wyqAMQUsy#5{ z24j6C(ydg|&*#uEj~n~b`cDWM#O907Fas~3S7y`OCLH+GMA}8i1k9|tC%~VV)2jz% z(_MpJBvaQ0ux4=@J(KM=n*+sO&8{{QQq;~~9qQwE?nPld^LQ{MH8?aB0H#KK^RAqp z`PixGnM1&2lyS%J!V_Z178ZDv{gW>V~y&InDYmF@(;;&5|GYfWn zeQ7Q0oj%bUJy{B&SaICD0!N=S%Op^h5Wch|!mbT$3S}c+UJ8pst(;muJ;LLf%yAe! zB!E+qhqs#71y>c}9eZNl#HyG#ttQ+wv$8L*4G6W|gnwFX;3K5~YD|Lt0{)^OeHS>3OO`&{m40F92Fi{; zdqPnk-W^FW;wMolpWr#hxXceF#A!vBGQS7L?ZuL#%c)E$6{yAl)M%-mZF4VYjYgJKqD_YN4L89W=mq>6(2hiah zyo6nVxMx8F@#k3h9wH32Mxu^sm6g#Rla?8>CN+8g0IyCVxyaMey2qn|ow(8*lpyN^ zOo+YGFz1z%%YFNf6L%T5)J6FVJ%dwP-%R;w#)1-(pa#S+s0gCP9qm8(Q;=QFfwd5p zmk7#u%|At#^?4ZFOVI$`Xlm8&NDX#&7zau*fGik*b@F18z#f2@adY!{Qx2BG$HHA%(WwZWYxs@ z$ZCi>jbOPBQG?LumM`%!`dN%yQnoLI-d7+Q3B|X@B$2h~*s(rBaky;;H6}#}jU)zf%M_)nZ0&JC8tmub& zmc!N-drgRJ*m^MJ+^}_jE?UsW>835t(1IPvFwwd+3VWjN6ZIcWi|L_8m9`)!R^w^I z7JBH++Nxn&oOksCza`TYqgz2TJ=_dwwc_JwLp#_-R9t}Jf zPYwH4B6Y%Wt%vmL2^cYvhDzi!nO-~eDF}FGHXBovBC2<^$4Dc^F)#$7f%_!_Z;~Wu z&MHP(rcTvJK?;Bc4i`s;TH+2lr@De^p%$mF_ad13E7!%X+B3;_Pw$&}T9m##k?*J=nqjMCaa7Cxhk0Xp2;TGUrLU z8d~sopi`Utm}W7^@ga5rw5%$!k3(vD^a+va3aHRj@(iaz7x}BZD!ke`Nio>JA8DJ4j}{QUT01UjQgqWbbEiCI{0_ z741Mrs8(f!L{y~y_;pk=ASHxv6D*89NkbF6m^tSw$j5jX4Y z>vY%3v&(dMt?m>fXr}Jkbf*|W=jpChcR$bZ@A1*(8#$j<`1k8w3LFkCiFo_rEEsAz zt2oEQ8^|vF{S7^7R-M1T^dUUsBwBuu`OUW!MFpcCXSdiDnuRZecP_fJb7a($8W|6^ z+4?+#YiB6Z1E_%0rg)WWXBs6yONq+6cp(N7T2qVcM$s{xfrUy;-F>E|agBxMK2!R* zwl6Gm^{vr+xDK`aS(e2nh4H@Iu671P&2ea}oQ6uJPog$TP0`*?xBZ%H5VmnhO+CH@ zXs!q=&Tld29>k*=G4B>*jI4>7G7K%z%kn^K2Md}qfrsFb99@6JnNL!~p5nHTka1d+ zNY<>_nCuEmRj82LxDBLc$Tb2h?#pbW-tMZSSLZegS4UI9luB!dZ&W)Bo{-w4cc3>D zqp0o*b**#_JOdcpqN&UGDu^>397{Ogkje=|m*IToxN`mH4^&CT6^`E#gIHj2;PCAL zBzi)K7L*J+sPPs%8V5Z3niKX@mw8AzA|JzH}&zll@>knW~VcU?tTxu&zd1C zB*bc3qIHTC*y@`IT2+GQhJV||t$S+rQ9~emYPTzSiv7G*O|5p3D2_z-io}Ce?&)Qb+I`h*x)V(^*r@ zneer&61f5{R!ao=OkHzGFgk>U5_?KR*Wb^>+&76sw;b%U$e^qZ;NCwWCtH6bL#u}{ zn%mU}T&kY)$6;3qu*saz_S_A&~7)jvR0hAq=3|*OW}^N^d(v0%`Cp zJs)(eb#roJ_LupS*2}(^y?S0;d#x#(OpD%Yxu3kh5h3`)6PT9TNr~Z z3Kc}{WSNDoA4-QK)G3eq`Foj+_t@+%8FsLPM3k(q>YfhY^7)YZ6(ZEgn;+ZP&nk%o zwugzMP5)ZctNHe|GY19<57o$*NLh>L%_HS@&HiTH9$bneWUyfppNY0@?whES%VO{( zjN%st4>IOd6|Z)#EVIM0z~f4A14BD0h_|#~>9opGMO9>=!ZA0Q6>h1{A;zo6$fwf^J}!`teOPygt?o)=DQk zdickF(C|jSnT7|6y1EZ>6fJoY#VU>|$t@n=Mcn(Dp(VwO_#8RVYm+bM{ALnZzJj)cR>=S5O3rEwN+1j0cyJ4B{wq8;iwzT>2k3lrL~sjL4GJ(`&y zN1Zd_6TM#14u@|?c&KNY&yc-WJ;}*U$!!?RmQXH#Y&r<{%sc(+|&GucTes19`_W| z)a*=?ta4qqQVtSri{g(F*bz(Nnt?=5Xv4v*$5?9e!R$Y-hz@y$+>9(z@i__y^eWs+ z6THKs{T7eofwl3#rr|yKK|c8MlhQ9<7$htGz#y)^E6QTkI~y{fO(SnAh{X;3vX*A_ zMJ%chT_26L1LoH$jeyRpgz4!PD?Q|-oLT+K78P1>=n8U-!4Tk zuq(R}5yl7wq_B|(*{>t=GxBM}iLbKVHJ`%qaw|Ih1QU4f z_@W6soxjQnJm;KXvl?csICbZ0V`!@bs zia=l=VLlRG%1BD`8Q3wAaGGrkhPAYprfnTjv6YHqd^2#&3@uQMhMcs5(Ecb7Ayf{* zMP!z!HpwY+F4L*g^(UQB@c-@^@uLGMmBBwSau&$T-Zq^ zNil7l@1d%2EOj=;*qftuZIA*b#2jdUb+f_BCfGmURubtFNiEi@a%KWMfeAf}e0isl&+FWb0qE8Ut6Q+t{(u1!s@TfC zNS$Vo53IJ0_6^W!^))XBMUpR&7z0uW@K?yVFBE}7t>-^!-$b)ktD(BJyw%3R4V84M z1Yya)6`68RO;{54xuB{G&`pm{+VvMAPsg>Guo=8VdAg>GsuUKMH%X%KW&RGfo%XQbj)h(4>3sf$C` zzpp}KO2a@oCnQftgdNnOiKbVHxLhV#Wx!V@tMoN#;hV@RTZl+qGKfq7hqR?LlUqd` zLpYWblW%1Mp;A~k(r%}yrJ3}u{ztl<23IZ#mgsUUq5j>~G?A@CRfdGKW_CnZ6|jB; z3SHLZD^^M#VBe9#D%Cv9{6}?*b%p9sP?}V0A;;^Tb7!de@6bF+4my33)HW;yi3dCR zmS#DO*5EH~L;#$Q1GfrdC<8ZJ zcj^7w@Q`PPSXu@>0)mgX(yI^<$ZhJJyc2aBX$90X0im03a+{MEjCtErTQf$J?P-2d zvBXxZDTAFaAav0PlEZK2V#9)VPCs74Fv1 zn?6B4FqdfJ*azP0Egu|yQu_7D1@b|>dWFdcOL$ZA!EgBWcb_@_>5ER+@5je{*)yEn z?Mn)X8XMGuADFQ>#1cn;i)S(0nIVUfqSYHMcjiXoTOnJN-bej6%Y9klS>0{cU8~Wbq{2n4FHQr$4!TZCUz_%h#2q-~RB)^d}#7q~G{(t+EdCWLsJKqjf74y?SLJy>ne# z`n}6H6zig6)6Utb)T;%2eP#I~9goiZ@gU@!rjFuhQ!6yKYg<7)2;?c^G}pas$EZVh zUsU3qlF1;1d9%cHHe}*#59(FM$cU30zHK?w|+_*5Xpi!+xXn3QJf)Cn$P-dDs`iZku( z*@*xayN-w!A!ID4moJB#_5?x;zRZdubn2ckv(VK2_0aX-MO;$6@1oztuzho$wYx3b z7XhIt9@v@3=RKE>Elz)Q`RX!&Q7P=EWw4e5_QT$O(5!&U&^<^cZ2x>m8KXVN<_ z?Q(I$fjYCZiC5Flf4DmR9oyZQpvW zZr*@5IbTD~ivbc*)p0Y>JR&L(`aX2`;ZP|Y4|c3(pP;ELpafLM0K$Xvk5n?q?)Wo# zJ+p0Ts^+{Ur;=t5=!lu(4e&0zg_)lX0G!nuLf8G=rsQ^`nkbsh|H@UQ*6{5QRdO3o zZq6LVd55T18SBRk3~zn#7-kJo&cIs}E$Z_@^v^V2Dxnhpyeo?1$-ionllwsxz~{#_ z%hBYo^_BFVIj6F1uzmIzo2gx>Yn^-~mYPt^xtCDOcXi`oF*udz#HSVW3lf}0Bd3-z z(ft%+_q0;(Dr}z${9?-xM2X-cO#ardeZ`>(y?|$Pu=>=>sHcR8;9+LA3H)3Y;1Ix4 zttt@dR5e?pi!v^vVT{70O~ncd7wlySt?858k!kz#J{Vf&xBl-ibfMz(_;Ny+Kyw58 zG)zli+^=GS>W9RDUxl-JrUsQFpM9 zjp<<9V(f&SCE1@@TjY+qQs~rjFGIc` ze6a#%(EJ5n+nD_x-6{wGo-%oqiy!3AZaY7*^64 zt)wxmq%o|d+T23wy`unLwr0N!8s+G5xN#QCBAf7PSrx7IM-ZR90@huOa$L!pxa{&+ za(o34$!3KhsT+modB8v`U^JPTwZa{)1fpUeM2c-^(Fo(ICR-dUY2e~THj4xsH9|AS zCp2Tq9EllIk=<*b88KqK;pl8|Z+PqQjhUnOBbLh7Obsu(>L|m}!+4g%(avJS(d-R5 z9Bnun9PKLU-s|iaKELe2$93|hU|&xpR2^+$SR@yVJCrnh_@SZBy*7n`ZQ_ZLJlo+f z&YXCdVI^}C^Md7iR+71Ch|rQvKc;1JIf#kCBJyuAxs}3K2pekXBt{DFF?11Yn91NA zc8NbcZ-}`}lsh4D_UG0Q!^;)>;^m$(pNp4=j_!q*LM%f%hnVU*xM*mp_^;|{Jn7C~ zCp9(n9#qzz3OL32`ztfwmI&AzCw~Ps_z!ThsiQ(tO?Yzng7Agmi!R9dOU05av$r$% zEcxe4dzO3-xFh(Ap{mS3AScKcYH3u@@OcpOD$cJDaf(cH5|GKaxkGq;r108snv9pi z>vM3AfXt7F%C~0kG^G2vqw((wy)~h~9o-wa%trmU;;DxXn{VP3tiFp9>}n6+o2_$b zJDbQ@kk%ETqoM7O`+>H_psnhNIzwU~Lik0D{tk6==-YokL*JqEa_IXHMAXcYNRfH_ z8)?o&O#emx;pB%BkilPvy5|^vJcH2kE{<~w@;XHvVwng%&qxI;0d720 zn~-w9M!qRB+B|pdwrQ z$%VqqL~^b^6-!!aac%NgE=$8JPAf)?5_in}&mkJ!rO?UEJc3SkX8LPf#frgiJZSYfAWdw+ciO-d(n5$KLE$e7sAks#o;bmkjSNqDqeT9S|_QJFY2*cMlx_ z-W`pYmbWJip34zdT%p*m57J7coycOXGY5BUdVeU09^9LLe`vg2n=)r`{I4>akuRCoXw10_r$U2b$`G<_XGC1KX9LW61?=WXq4}N(dM%GP7FYnA}KZa zl)X%1YQ*=h&CTUI$gr77{R_swY%C~O(0}5)!H-X?3f-iE*YpXG!_5`$=3QEeW#nlj zxM+2{et*S{3r_|fQSXvU;^c?!z68mtt}1glRLZxNWU!RPsyiAmfaYXk?_ADSwKr(X z;M}t4$>&BxH@9xRzi|HLn`38y*N4aRZH~+G`De|F^OJ#mTqlJ)G8c16)5O$r3nnuH zqN)IbW+hI(n>pIQS2#JZUp4UwRqM^h{P{|)hYIig z2v@MW%1pOLoowR><$fHYw8Zm@AY$R$I8sLF$60s7&NKIf=v5seDQsOs+=G4@?Pmg9 zWJouJfa3@Ei+h?as%|y5BsMB?qE~hkv>id@mwi}_AAW^eUeT9JwGakh`H9WrFX!au z@fhUY%#B4>|E@cj@QhZ)0JKn)5MkWpaTj$#g>*0A9_Y<;1YC#*9VHZt!pLYX*tF`e0@o9c9^;6xjed~pP(CRCio!@ zQO&y~=zRyKd>Y=6SArmyR*I}uQGi-x=LS!sDeZ80ry(+$gW72|x|l%;-SoYKB>G0Z z8D(*A3a!jUxx!bG0$%3u0vEJ<0;}}_D@v58EPJ3Y1;*YCq5Cd>}jaw8T3le zfYdzTP}`eq>3bL-U^{$fAC7JEI9kVsn<5QxAXb}Y3~8}Yfaa^>Lt4R#PF0_RNYxfv zFo-wgI69V89UCS1I^P6@*R_f}61tnr<4+|-<6V3xc3!@sZKp@fEkNh(T4`MS7QR)P zE$dkIx;Zr(^Te(DEz-^LnEC?oA+HilM)4p!1IQ=UI~rcMxM=bdA@2`!Pp**ab+ey! zat&G1V;mT&ekznY3=ry!1u(y>yphl4wivb9x`=xnlg06LYI(`UixS$MxmP>5!Uu^{ zHS%|jCO8u$bc}l@PYx$x?uM<0ik<*2+ky|Qj42hxCA^EXWN|z-xbjAk@#zx7%psU9 zs~b#6;V7WQvr^!*5g@ZM*Dl|h=i)kxo{a~d*CqhDU#i*oYPemaAHG(DzbQ9(u&JS? zVEAuBwK2k63O1|XC7F+8Ez}5v_!%=Dg81tW*SHE0e>~j5sud#soIK*!+H+xxUii>y5w^`ZO0S%bWNf{;jjL;!KV#fekC+J3GzD^`xCiiqi3;y)fpo8=hL=Jyv z8Q{@Gb}Fc0V5el|K7Xx@CKAKW1uKK2hkFN_jJk0>G!L*5s=6*%I!)b zsB3%`u)7Gal(7k5-e@?Sam#stR*c+`Tdw%Ls7+SMvOOF@NRHav%{*#8e+}ic`Ml5O6T)Vbd5H}~ z2w3-Qv`$`?OwAPL64u95Zs-5gMAwY!Jm)D^mo00XPWc|#d}1@en>Ig(%&!)37v6z{ zY*1vI&57iTcH%?3BJ3v(svh2|$pvEDqzyt=HyIdY-sDs&EP3nfakNw1!_T2VvxmoA z6uV@woQNT#6M=1Kq=t>g;gNaA4I3iBw7z?B^3*-i>W>=U_JZYZLZ8uuJ|=>rugqXR zVu6(qRBlSEyBnId*}9ZjQCJU=ExaN%krk?q3w4_&H9w1003qv+lfzhy!?rZAfaIhg zq6xb=)P!;jeNQM^QFE=t3V+dSf5Hw{2*_tFT;iScg9-I901o2dh`Z zA6Jls&P0+d@T?lGv0MO&1QHc}Uq-DQ%Me3Z$^Gf6ktO7^JT7OCls}(7NS0}_j;N!v z(7dXx`wMS;e$wXn$*P8TW1_B)C#si=pQLfc0xcT)TF=Bz*7^4TSaNp^f8FYrL#f}v zPc*|bwMxhK_=&nbctsnWD2`I0SUnn;$>niEnQxapZo#pP$Z?AEX=A%4;ZKZz27w6tN78-5($`KpGdeF2dDv8@C#l;)3&CO6L@udYwx zAq8Ha>it5^r?CtThjLW&_@Y6K95I zhFYE`Z$tJ$Mtkuhjd$xECf2SU)NA$K>XS=W-$pG!Iaq;u|8@ylIN_=G5)_RLup4dh z`2rh@j|B;qBQS{Z$iD1*tgytstYzxrE#wwp-mk{FE)oIW)|+M%K8N7)>Gc-HvpK)s z+I!?Ttv7Y%Q|oPuR^!Cb0(pNFuDF~S=T@9sM><~Z_+n^58xS=lHTg|qso{qO)lxYW z&+Oy4m~1`R@k=c^h$>62{u=ggHG<-pNYQ|DmRkqx6uR3UV1d2t_$d&2)|Oi!!}5v; zRx4U6!Sl7q${Ow|Tx53?F0!BJ#5NnXKC5Z4FE?C&@uEU}M!j(O%+YGj3xry}!g56H z7LLsnQX_BVklH6cIC(D7;N5JTUN9R6xN&Ndkf)9Q{U`IGmZoVPL<2jbP>UI%mVl9e z=hYQsYKpf<9poN6op%h6^iSZ;C>UAi~h)szmaAjw*|Fk0o_{T#Mr=Rfr}O@(Upx ztGeEuq7Yf&6?^ro#1v*4A$2(BLFK6!j7(=;8y;vbZ8kQ4Irr{CE z=F_kx#~H$uL~=_)0pIwXB(jObu#0+!qcqYRPW{8%U($(tCgMAW79BpVVpKT4WVjzhvLD=2v@n086IhQ4&4bpqP&9DU4PJ%b7ow z`s(7LHYw5tokUglL})=jl`$2mUCInkzY(IYDKBOsfID;X5p%&rC@gL_!;7V+6W=d2 zXrv}#B<5>Yv9a10W7<1quU%;c0dc zXy|C`T+dnaE~Iz>cZ!!Y<>(kH9;@AjX+l@4&*^vWIgyY?jc)j(CS(Ru8)qCfC-C)* zpj@MYMPo?OHYt;}=gVYF6}3OhSf+FDQr#*zf81keB2ZLQlN=b)T)e2Ly^#AInt)Yg zhk|~ImDPv{M75Ev4*DcO*Ap#}<-J039BJqfQ~+#H(+tnK5o+Qce{fOqH@vlv6{Te#yCp_UVnbQiaXk5~NDFCjMnWwR!DP~^WMpBvRCOXhfU1Ng^#&o-uRtB+Jf*|oz$@Xsgt3)) z7+4;zez$=eIloh)gWtuP;1c0Osl{sHK$&9B``6R_nDbBzk(IGvN zcyAPjpo%SJRL_20IlT&XBa~jnxPp;4(L+==Ux8evj2hU#_t;$`G2Duo6?GE zjM9pZjDkD~T#|y^qYp?=21YqO`39#a->|Qq97IpXJF@0u>BoeS%j?Jg^m_E;X{J%_ zG}Rbk*{87or)u$V0rGWaA2U!(6?o3>3Y1d8(J7^AU?`=OBnNCjV`KOqtD93w!^vHU z4LZEenr8J2@lvDyIlC4)33U|HL)8ao$nCHM!^a;Li za*~Kz3Fv)hYQTP6R)&-BSAQ`3%;cbQldHDRJ|TwGDn;as)F2O-pOp%F=9(8l$$4Nn z@{t2$N$>$+IT~25ZrB_~YU0RnxcY^Lhe2w6q?n>JQ$gaX$UQo+ji1u$_d_i|^)XX| zv7QmakiH5tA;_{Zz%7yX!=QCo;mrR(?%qB=s^aeZ&yo#9jc%gBrb=tHu_e|AuxOKt zn#En&#a+M(lBg(ctfj40)U4nGA(AX|JT71>7F)fVUe!vks-@NkXvHRwg@9HA_<(37 z3d%-M5flO<{NA6Lvq?bvyYK6I-LLzPo7ao%nK^Uj%=ymD_xbxB1JPe_T$|+mru)!= z38~<-08;TVN@|xdN(hXiWuYW>O>axdN$ zBoX&%!PDsfQYYt356gqPL(d}4h<2J6cy72YQRic_q9|Db)ARvU^DrE9rE)d+Udgqd zwAw4G78n>J4=75IIP3MH%3)>X67#Adr%(d;9ibn*U5OYIV$rE4TcNaM>H-;wAJAeQ z41?T0#?dphFdCiIgdh z7&B2e-%3CotV}2FSGkmrihxu-T5M>Q2?${HhBFc|@vd1m9B2XZidMc6NFHMrj-|Ph ztn~5ZIpsq{6@|_e79}V}e6Q;<7&Ihog!$y-qP?Sa`lQFyjL@}o;6|g-&V1l)*krkC z23f&D7pBgeWlQD)bB^FKLyQTiXZsD2_M7I_=9^+=)d>I2^Hv>*ZXDs^^%znXz-8}c z541qZaj;%ItK`5NUW5xJyXb7QzQ?zrm!CgPFh@U5j{mHFJX*Ouu~|u~l&}>2_@_MM z>BqH)ss-G!(aH^h)c1V!M&}S6IBg|mYoP6+D)Ouz2Y;3I@NrU-x6#aS$wry6^>|N? zV#^++5C5flv-sESWT7keF=XmOmX6fk-O`C`K!xy!@3Q2LK0KQ1YQ=H?MQ{v3e%GMF zI81>V59o8Hz<^RF=4vKo47!d2_ng_(nKP#R=#vN4dx5Js5Q_k(|j0tr|*1}|F7nwM_-^(peVNO z?5q7qmtuW1=3r&Y?CIJqJ6=DvKkh`?<-qs7L~1Dg+Yp@EogVJ{lr(+9Pm`Fe47=e~ zArh^LJg+S}aE@WQx@;_=5|Ab~1JvonX`)VDUPhXb(z#tL-btP=okLs3q=uik(q9Hp z&3Yt_5QxLDNO9+FT7tyd(U<L&l2qvjO=J_PJKu5rwOqvWF0H7p~l2Pc*_HgfVzX zCIO~dL4K)%+>it?+({JYMTe8M^QU=u$hDSYYy!?Z;Awyk)z2*bKn`K8Y~K(e*`REC z(yp5(H#)Hp|e*rg}nfAmpn`YD}X8`ag9gngU*{;u|pz68`C4v z;Rq4VYvt`)iF8WVe53~KuX;{w9gNc1&T0zPA)V{RrjxXRK7z49JtDsDAZqF#sW8MT zF2koV=)A(rvOA<))j8sjT_&kXpU1v7^F-Q6QDQSo8#7LUxXKteiW7$6+ho5eR&+ zK3teSCUY?);@-eWf~7`H8FQn^@-;LUL*|ZPeBzSb8xRuZfk2NY;M5(#n^3`XhbB!X zcOA`nrPTuj-D6a(SnG%zjL@t~o4#6=%?!^C<2Pc1*6DYM8_w5i=CUHQ;9tgOS{1D{ z=B&uD9LC{%L10F%@M;gXlIZ{QS}pS z8KTr<2`u1JRtGXE4dpV9p+2dM($c^|lrzOb9NJNqM#~oY0Svylv{Dkotn;o1bG^h| zKU>zoR}nhV0m^sa>HB2D2%`^_oJd;{CY`jN)>X-KjhQvB9B-?eCL5Zf^@=V*o!Bbpke2S(u5s19vJiZkUUj7#3jnMi6F9`~WZ z0o$zdlbAyW-O(iI1$s2V0@%(GM4U_0EiP`J9;^H?FbDr(F7^acI9-`xOosQ@xe{0= zjkCFzHJXOWAjeyEa*>sRb}HW#pV z-C!*ho-kg7Jh9#MGWO$$mr5is=Rb^pLX-FAdu^`i)U{=SxU)&DYL)51P^TuFZCJa8 zt|HvvGT)%GXzFqp332_f+KLBPY_zfNSK{L`dU>pTeKvM|5|Z(Q41;kQpPnXfkQRl8 z^xZ8+11l*)@gg3_t~?x?J<*HF0KJ3hQd0$X+l)KJzM0G#8Cr4ZRyKdH3l3JE(;h!Lur6BpQ9VMN zL4xoM#&Rt}G}y3Z^e!ZXo{jg3lkhQ+I#?RV&mvfv8U8NJt;@A%a8q{SlBnb*k_&4u z)E8;sT6(B{I41|@Ti8QuQcSp(3)*}LDPq3Z?!v%a*)Sv+nAJyHJuFDcH8J9Qz%ChS z7D$=I+ae>`7~%1?xn_X(jw(1f+DO25yA8`7RDE~M{*CA)rOrq<+>>x0C*&Ne2|Ltvjc_6uG_q_6tjBqvcWg}cYd}&s=8u~HqA9&LUR~M*#H|>qn<0&fbR;dMU zXMjq(R8mH`M^)OXk}|^m`Bq9hRJxDS4bv!nq|$6k6IA+;QrA?VK*h~!{DCU2u@yC{ z*rtl{R0K`{f8n8O^2s4(c<~@aGLcn|$X|D)pHq*`xx!X01!5@nj{hQ3arPj&PYuv2 zseHB0Pf*O)8#_Oj(uZup$=_=a9Grg+jk>v;pZW2706`HEG|gN_L9)9^{)8`6@~0sA zY}=B|@vrPwibn3sWvkxY+il;HIq31Q}qNW-CTITZAFE$;VGXzyzE!#KB|-cU`e=C7KjshR;NZ42g$vd zlD>&E8d68_8?XH=QrodOpE1O1KMAIWoe*<|m!;HaqMfVX5S{M9hafgsp5ih&<`g5(I_oPp-hLf#b@rRc&0t{kPG@`h`pTW5 z)HGixFlKLH?nx~9#%?kme3gq3Vg9e|e_?1#>-)Jp&u-!MYto3N2b8sS6DpK9V#@=#@K{cvUJ6KNpowgZ*S^eWDz?+5i@`|gigkKms1s(-Qy z94qB-W$TRXVP9uRR?Zz^G_>|SN}_U0*z#f`w5j1m0?C0uj^LX^Rt)1!jp(PNoV2e~ zBXVK;=Kj=N`c-?Cxy;k$ICI&*aoGS$@nu~h%7W&R-vH3*5B9H7%=a1}w)$h+bGyFD zU1vjAAwTSs#p~D>*PLNC@3nBWXhzZ&@mh?SD*rvw17EL2pq> zn|Gv2x2mMg8-}lhJV_ zHE`^O5%)6GyswEpz{=z?EIK5x!LYJH*6$2)Anfxfu>y35*dR-gtBKw5@(EYX@-u% ze9}@o_XY%yXASbD%L>(taz@>$re25}PDxyuM67)Mxk>fiEvH5Ktg?(qO!5+WEx~`9UG(` zhOUL4#W>#*)>i{lFLH6g+9L5;Oc;rQc%8ZtqbXXAM2{U65lMig%b+&zgmX8O77}VgAxL zX_d+7tQlkkEp!1Bvr=3U)`58HdOw&BZuC{>Ek3gGy>6J7I$7kOG>cU;)u3l=L}K}F z@ZBd2MKi2>i}c$g5?E%}S+86?QVA*Zj_3D6+Xb|BI*|KJ9xN*Wk%bGQcP($z0C5qG zIm@LF{Qy@{GXEef81?8I&Wp}67SBAoh^G9Jn-5m_%hCp(8@Pi`+8 zWKMrQ+gi1==|`4Z(vn1dZ-^_L6!mQgaSDzWR${(vK!f>6j_TC6vh(({Npxvs zikJ@}ox$tDQnl4?lS*q42c8HQ2qYn?81vaQbfVP_U9;9X`40PRVnrj57)zy8;1$44 zEfF``>3~z>%_hPmYgC2U=a@N7r#3CUcGHMYut{~1WX9@VsTqnVymL=eA0kDN8V8ae zA&+oyZV=5JRy$6a4*{3$=GH=PDc!q=XFDXGs+o^-%lguE_zPPUg z5xmXx5ah-eDK%{GnVZoCrSfX0K=M-G0*I-BGgcWY`kxnNsp#qOdYSt{-2g$m-rJ~A zPhJ1#<)oZy!~U9VsXqaWZIU-)rs_fZ=l4PS2Ho5YA?)5(8!WQAdLBj=19a^qnf z;Z=oM^QL^KgYZ7^K%{a^ge-RytsVo*J^tU3$_a&aep)cJ(Que!N)i~TMl+*hN)s8Q zr>z`0nBcwTU&fE+nB8@HR{5*tr`HggYx%h(%!B6xaCEiC6(^z5C&KnS9{uv(dxzn3c{H@kEi;+ zXsXxScg>5e0>Zp#SLO=u)}Wpj)%}KBA=gBR2zc*Lt zYm>9NN`;P4a2z&8lu{tC_P`iYN|S;!*}+{-e@-bKPRQZlvwvkzIn5^X1qHnY)&G!P z+-yGX0rNsHd8RhE-Y){9ndwt)io!eJrSDknGW2|@BZpre1_6+?wMFd10-mtz6lEYi zG*b?fZV`U`b6iY3C84u}w3N?tTeKND>(y}iY7wBtw%C)#7jcXXdU!#?&#Z>a*$^yW z7Oh>D^(_~d6K8vaWLtQWVux4kv_;~}2xRhz6nCMH`Ye&9xbGc0+^J#*MXqs1u-Of{ z#w*PGdfyJvvyTrg&ed8KWKhPi@9+ar9_B*-9l}93B6pqGa+LLyZsX`f|4`*>)7cq9i8T- zd_y4lUVw2SGp(nJt?`ROiqLtzGBEQdl~{Bti4f}LftfL{RwdQ8nA(%64Z6e2GS{uP z7%$f}^LDCRP*#ar=PkW0i_Z!rQ~ur5SpGDcN}%VspoAdhfP$3SoI85=ZWQV&Q+R67 zY;E3Gjf&1@w~y8CDDMbk`DRHjVl5Si7SWwby=s4ibARTYK7Fz{l3EBIdu>y10O_-3Y!@KR!f za%9r+wrY=$5$7B|YTzf!$>gjFREZWO`K{;6Ugdv}VE|^M8rO7(&1h4?#@u@}bQQPr zTdn}ENkXull;kh7fW6($|4cbNq&0lm47J$Y_o!x`9uNF^uUBlLC_k}`t)|uIYSq!x z>hoCcAG5D)wzZG~&x?%A@{!bVu)Gy%aOtA!4(W2xy1ynqHn+#idfI`GFdmmz@~rw3 zNc2)+olbrm_w>8D=%UoP!?6Qxmtmx_yJYIs3`LEHw&0C_xF=T_m$F&HC9{|#Y!>&oViNp_|99cb4L$W&dgLfVrm^J$d$g>v5N^!-^T@`EfNU z3#B63eG936*nrQPeRLuEAgW4D)gNt@lt8<0!S9+@_fd5S`_dnksyLh5xRni>XV0=V z;4E%Z%zWko@QsILQDJJ)cQdDq!5~_pIV}K#Qe*CA;5tw6=7uI;H((;XJ?&n`4z&t_ zhcPt`_69i6Vhb9vaKF!fz1PFp6TlR>oj?j0gUz5U zb(XHRYq-W4%&4~PAtQn0TE!F_rPMQA^{^T}=xQ{+8_M?mJ2Yj)ouy2y3fM^l)23A}0HF7Xl4$F;e$m#=kU;sOIjcDo zf+I;#7iwwOE~BTO%-%y#7L%k>$a64RpCY)~a#^8dxVk8f)b2Ge1|?7|G4(=r6cAKy zgDWx*jMea&hT<~fo!BZMi3WWXcwm8kS&C9Bc$^A7VohyP!#+q;4|UR5(YG`-QwI_? zjRSusUF&PAo~;%_R<^&geRS*BG_>o_ za;x;PCdNt7aCq^Q{~X(3v6?dX&HB|F!64PSAc&&CEMz6_0c`8prIg+;#e92BKn0^_ zZtQ_3)Z^&43~8q-e{Z14I0G;mt&o_rjPpzmBdPaZo7DT$Tq=F5(76ndWAW-<{02*A z^Ld{_rpP||ymy#P-rdNHB=)u^B^1Ugw&8zf!5Y{bi;fP$hQxL)uI>{+E1favSn(*LxgdT+vzX4OQfY)SMjfg#+I4c3GTH}hjmOGGgb`(9vYWK!c#b+b# z#7Bp7$~(-yw!48ymJlMbIt}w;cFSk6+7^5txWTH03F9Cgj~1BoNIs_2tRZCckt>Cq z1RcC3p0pgE&Q{@nu)H;@P!k(Di^$d<^S!9zVhypkxSpc!#_e69Vcj*E4J;$g-4z;z zwlPq6bxdklL5zLKgnBrk1($`P?C01(U~{kCb1DCs*UUrC8P;D;?>ZsP{}-*}d%hs- zXpTs|fWfUpkzTPLP2F3N<*s}pIp7_-&W3<$=a4MrK-UwZrm4K?=OWik_=aXAZ%v1o z`+=uC%|1$<6|c~CsvzU)>uV8jLeELOsiMl;4y5y6%gK!zRS}~?2;FY>V4*B?k;-+6 zce{RpN=F3hPNEpZJ~#0BlI#Q_Q1ldMe;l9)d^%-86pK~cKv9^?pq*?;qc_)Xvl>eT z9!8g=9>9uq1&}wgacT@$GK-@$wf#th{b@EggDH64r7e!C=!# zdM^^0x=@PqYUo3YR^b9O3cGG1@YfzI0M2eOcdSrrFs+hgwlJ%&7{?m~ZR2gzLn0(N zD?RfLj|j}x^IChBCg_7qH{_7@NQAxnYA=a^6tSQ-983xpWgm39@jX7~%gF%3mp)pj zTpb;lB?U9S?O<|0)OWQ-=A3(@6!uh}eNg3lRCZQ!Ye=?*?GeJiZoU>2=jQ?$uQB>Ozt{|3-;DzJTsPrPQn}Fw`>F|=8UJ}0#(eh z6%STZ(XNW=w&L{~DpsiCT3hj`D$=UB+*Zs`MVl%{*@_Nz`b$+*+KPxe{e>z9+lnSV zGEWs>u@%*NWUeau+lr}`RBTqor)aMk>1}GUN)?-J#dx)NTovnV#l25a@r){#*@}c- zdq5R`u@xujkua#GtJzlkK#$y^7ISUISXF$Wih5h|pXy_dDt>M&9v?@=Vd~=wTk)}4 z_;SQHJR5A@?yDTTMNq?=Z{A6fHi4L-aNXon-gO{=hB#ytyqvb3r`Z!m&MeJv)D}5 z7+gRKdFq^8A-udxo;Ql7!TO$kj0N1g^#bv$#wM-jGTWtM>C?&d-cG&(r$Q%3*-kc1 zpp&a@Ct&pIMFykacBUVhH*@$uLFb9ZLg&b-Za*{hkw_ZS{C<@#`@VAeA+J0)`^q}F zu)N={He;^S>lS!po@@1wjhX(9-JJfSSYsB{!0*!Jsxm-)6FO$#%Ey=Z5`X8X)R%aY zpTWMwW8!G$@uglGIz*g&F+xcpNk$cRuki=nD`n=;*0x-H=6h)gf>Ti`pD!Be@%G}o zMj94Lpv!8wG(%Yp*FvrZO}#LJUv>lj*Nj`J;*{m`qgLgPy~4B*IbE<`W-iWc&B%u2S#N)x?Ne8ppQC}D&o%4S3iY~IBR}JJ!ND$@`eWHIC`RXZ?OF3i&6zVl!^NGMN(foBTOPc@4Q<@_tpDjbC7D zjs}d#ewAwyxc-T$*%C;~ujUZVtyxHcaeA9`-@YBlFg>-W?Zpuc{DVq3N#%r4a(mc>q3N z?x@rv-VhgzdAgcv){qf66%2qD$(}!8R~5~8D9dKp)ut6}^{=NtD;CX<2peII#*l~H z$Y3KmXD)$3lm1mBkwE&CDrPMftim` z8{}LQPqmTx_{m;i2#1X`_Xm)XCs|=GjbnSVn`_=6_=%GexZ<^KvD8I{M)j)AD!|zm zA*W|MjA<1UJvvo3SAxVNMrZ|^a%9J=9VIN9*Pz3Z^|zE*KAlZsA+rZ)p31uYOotY+ z?w;31DMdA5jw&K*&sjevb!w?puF@U=w;?nr$R-ce93f4kK;Yo8jrQ)tPkH`4b0*=z|p6bz^@)fCi;-CB7 zJWL~Q<{jzo!4FtuiMAy>@hShE>CS5I73Js*iG99hjql~wUC2gz$f`F`^x(DvGVrH2 zU=qfJoVpQRDqNzH+pPiqrCjhSgNJ0@ferp3g?kxf!_+?8EEamu?1IRoCpb_SQ zSx@Ijd^v)6i|kAuf>>uSg&^9w>_H6Q>E{tYj|#b0`XM>_ne}WfQ5g2%e~+kKS`m?3 zr;JKa7Z$z6noyJ~C=ENX&u;QO4PMyw{Sfz>Y5cr?gzXL=3GD*5$&wh zEu0yO4r@DIRUk3xtWfPCEEe6tavZKdmz0ElPDh1GObTMAkYmkQ3K7FcZ~}^m&0f-& z;Z10a+9h;emU%nL)Keg_USzA zRapusl=(-n8jG;dSI2p@d6QZV`*fDv99CQQsVh#t5<}7wZ<*Dac#R);qmC>Z_Eu}1 z4Peg#K_hgqzaMamC6!@^*)fpkG5yQHDV>7D;a_8{O1Mk{;N$=0rWq z28p5>kfW)J$-x0^-3*W|ak8|LozTMyQO~s{jWPF97Iv0^T{wg!uz)t$I6a5$_B5A< zOZqJrR>O3sxsrw{u67DJ(sJjZ#4MjQrd0&tK6ZAfdt7KS?7YBw*&BDCQHeR< zz+1I442Se%A%fby6iUcSoo4K3=!Yh(O_?!hytEzw#AmXuUiY!&_AD|mN_fc59$Sfl>`o*ydo_@UMCL*k#r6h*MgB+FTbT~pCxNx5J;BD!oJN(A3|aejD0K^m&u!*Bxf`qfCt*1%@|T88fccyiv`}^EB!6S8 zJ#ennZ*tYm`IC1mc9J=2E>@b~wScN#`ov!Cx|*6E`x)Z*zCGmSBdbBzWG*!13Oo|c z=Ix3D3yr)>UfjqXPh7~}+GzGx-p5PDJPjO0K4|n?KR=ltqu<)|4+NsC|72W0ldP60-Uhh)N4Js*aVqJvNqbezG;%K$}FO?KG(S@VHl0Q<) z#!dWPk1kY&7dLUd+J9Bjk>VzJWSd%)s6u|`R1DI0+^9#sV=G3e(;HNAlC8Kx702q4 zB3n_Vih-)gu@z;iC|1QsRw!GhK^Lh)dP3gPq!y2<(|_8ET@O>SN)^xAig-B{F+K7p zTk*15)T+g=ZN+CHDvnbN$5uR{7N4obG+XgIRs2d7+N1}G+f_aBBEA0WjcpCt!+VSK zK%a_-#6g|7b-a*C`}0C(eVbL+Z}GDc@xO@t-j-LH^6pH9S6)Kd%?-0Y#s&FP9cCL{ zfdlptx0hWVhRK=~Xc|BhLO4Pqa-ys9bDf+x`VbTk9&s=5M{AKS#GyJL(Y(UFAfKOM zng4oP>i_8+3X&jn$poR`_8tZ)l6EHQP6V4u`f4mEDy3ARi?Li(=>pAv7?cX1 zlex>V-Moj$Z!z{I^5C4z|4EA3sOG%Yx+9{g35un{(6kqowVs5=3v>Ki}wQNP_FBB7Jok2S(cI7;hgMmIrAWRKY*OI=B3=6{HmaYcsuK;y4+ z1#7-ew|;!kt-H7-qmJTckJUAx9n8Ror9$W7HMO5UV2~vP8(s$7u7h;+Y16#Z&7oey zut3UzLY@^w9ruLWz`#dAqlN%T5&T1~DfvQ$r2WOH)dK$#c3{76FN44XTk$I8tAnju zbCuyNU=D8mCm88X-+^K@b1mV!3|oPjD}>+IDdbM&Y}L z!CA>!T)&L+h`*Kp=*>;N;&6$OG}qNokajhm zf`5~KCsAQIe1&&nOjwN$_wZojK2F1v3o-VP0kKr9KSX~`tbCPWVrHGd4cQP5s?-qx zJck%?t$A)(e`974SqSMEuiFa?@JYop75`Km5)QZY;rYb7d`7XHQvU$Fn9c&I1AIR%mNm5XMUK}R`HPG3lt!iG;w;?oRNd0lx?()fhiQd5&_&DR-dLj4+ z*f>k(oaBzIi!btK@}E?~GLjM|RFOSJWwCHv8U4c1;2A>LDBiv}jo_f$=625Fo)anuS!Uk?fYE7oC$sDf}n6nNB zJIZO!#>2xC3ki?DSskz9Kbv#$mpO5)BOVO3QwP?&^S|7BN760P(McqkI1QXDs(=UF zO8t%{JG=a1ed`ecR8ehxI8=ijnA2&h^1A~~yLfrl^2)0)@*RN>M>moes`=M7G9BLh zx-!&uShxxwPBG`Pm&(N=M`~IBkiwWRWBoU3JpYaFA$}Bc00sUVyuFHbTlWK94KWB+ zS40)mczzlER31#5`g3)qj(dDJ4r)`PHeZdn{xUVeb%Xg*M5iAMT7l7-1YmM=S#o14A=C7?=hXu1m)uv+=_j#IoogjqgF$Qpsd9t>_67q zXz^^^Z+G?-cJ@t(!~723aF{^Za6e@Ah8#j~R)teP;R=N<8cG-x1@&oRgh|Qg8KhCN z$R@qL{6+C1Fk&qDDV|jte)IojyL74ek}t7KEC0k7?9y7&y>{uN&7%j~rHc#G+iI{X z9AuY<{hA`H^ejEzYn6VFBDeZjrLk&v>SmBe_|spp_d57~X#=X|BcZ53{R85#d3 zm5=ke`@NXFC7qpkHj~pKbI-$2^vV@=Ll{+-#`i5*xb|b^+MHDzGp1^_Wh%_7B zpXW!MVP%=%LIg6WH5JM`aKH27?$6Pv>ewwwK7~Z2jNXoZ3Pe&&PYMQp`m- zqs93hRu;unXQ&%bVD|jIy^hK892)I02=c*N%`O2D?XlEZFANUrvOAQzPKvTt=~?ma z_7Mx!Kq~^jtX7sSs8yYGGu;; zoD0_f+8>sxzL2UIsRi~{FHgU7WeXdppe+5)6)kP={NVnM^p2X<5*-S#ACuU+@|A?) z>q{j=4krA+&?hQmRKVi)iF5P)lME2Wf#gI08fk2+=$qaol^2-L?0sTpFYoz3nf*|9 zk6CIXkIC+bb&s*y&b#02hmj?;Klv1IKXlzk=~JHG+Je14MFIws;lkM-JaA)o-}tZK z_mvB*L9^+MZ*Y%|IEmR2CpDQd$q)KSnd^*d1KB;33plhm&Z0KvPM;ld6AdVM5ln3T z*Qn33#>zm=;P&IyN}sES;uLcjk8^dzc(@O*}+eU%cgljqh~I z6MN1LR2dg;$7H~ZDM8Id)uGO>)j4H1S2)ujiYPS8jYQI&6VOD48;H$jMeK~ZPw7i| z#df`dXn~kpO~bKhHXa|9XW_G>S`V^#Q3QH z^p@H4zngu@gX_&pk_-76k@6oyEPwJLjchwH<1}>=_i8Y_bdhawtP^g=*Rec#x^59YbNHJ!!gFB{O3X8&qA`f3Gpud@q|@FThcoV*YI$Y(22np z{)Y6eHSHp`cZykS3!Zt|s8+QoO}~HT^7P-T*Md6Q z(%q+L0(Tz45>D^ExFzByC(|sw^RiW(&iP_`*_Bky6V_vCoRr>ig1$}L`SHS!w$M2oDEC0 zhH|jE8&NR6Am%=(MPy!uF6M9)LV)!+`-0X|(?tya_Cu25(k|qhb+*f_U5vc>=5yz3 zB?rq_hf|kfC*s3TiMbP7Q2eifGb2X0;BMrdbf%^VzNjeVtU<#Q^tFRHa_cULq7%bP zVD&&Z)*Q|DE;>4#8jDV6UH!=*M4vy1dum&2_FkxRdHs=*RLqwTB0mhk9R}Rz7Kkfw zmuA7%ZY0WQ2Y6tsKijUS^d~hq8v?g|MHe?vxVTwY&AMvQRg11Vb=66-IS+1&0e$22 zd8ojKnwLypz+k_}%e1$oK=Zw3`vqL~$(OK$Cxr(F)YZH3d)?{Hz)j^~c{`s5jP~}s zx!l00dqsOMj8><&*T_n8IEp}cN8f9~#?IWjb8u;tCu0P+eU`ELl>gLrbKCA}#XHF^^;Cw+sBaftb#oO+zJ@l7rxx3` z!XZJ0j~To|-`epc*^ape3DK~H7A8o_wTQ^Ih{%_!FfB7FsU5JOl;iyNJnqAZtQFenN;8_|8#5g3qjo(t_f2khP3O^}t1vuv zeMWKUDn`UIl5d3~xdNEg3i4xaVlnHc0J`5=8ms&`v3XbcA-2}(JkdD)QS_$c7X@ZL z&NFWO$slRD*)5|}{u86Vf3lUL9OctGt#I5~Ic%!7*2&fRA>ZrTS=1KgXYFfiMyCeN zr-vLKED-_4UUp-3!LPL0@E2#g%;!$j=W@Q6`P|nN8T+~U zK(P07@8Jp1=#wGmb$xHt_hQ=}(+Z2vV{;T^LKFt^zBADDq9VX**NA5|M>vmwHfk`g#QV6Sak+kd(mg#lP($BJZGKlhRUSX8?~w}jjV|SK&==hY<1v<5 z4LPZ5EmLRd6n>zU)A#`v^RLkFtwqU6w*2tb_V>YN{eD)Inyg01lE9t*u53%wo-O^@thGY;2`qiZatO$4BS9SLuF*|&um z^M?M;aHe<7GMwpS`B~1i67yE(A6bI7oy?kh z6uOIKU7qx0WQf4lM!xM=b*zjtu|4y%Kk_1XV!L?L7ig2^L61@U#@m#{>=9kM7nBCw z`f*X@mbiP-;GnZC6&i5By~rPTe^x>ksYE;dI4Pm~pwptfplhJ4aGG#+WC2|1gcp!B ztkWnipW%*s2~y8;c%ptGXZi#1DPl*Ea6;u|Ncb3jI_h3hA(j-UO70q*X%gd%M+bdL z6;(o-G6unXw@`&DCeNAJ1e+tK0Ch3^=2O$SC$8AoCk%{JXTFe7-sGqCpnxeg4ZmEh?@?X6I-06h17D|Chh}oMplLw0qdOf`U#su z&irET1XIN&WS0c-wmA}&0fjy*gdV5a&aWUt0kG{ThnR1i( z)1Oth+Wh`*e4g=~_n{wckK-YRV@oTk>CdiQ zmj3LrjK-s3Ol7MGx^a6>NX&^Zj9FcE)b~6`1^BwHACVc)8DuH4URLM*;qPqJ?$bL1cP@fSNW(9(ozE)yGqtO)v>@FGogx#gYj`Iz zb{Sfc?q1QMuo9d<4O!)519P6DC96AM0B0thhjX}sFlr6Lk9UJY;?C>JQ*Xs3IOr1l z{p^3!)bOPqr6ya;;V8*V+%OCOb&}Uq0-Po-pB(s>a*rSSiTI(PG=rM?!&Qr}#1H+X zQ&*NBa^nwF#ur$TzHzBma{rr$^BOJPQK^EHc#Y5Y*;?B3)Q7vmP0+LZc%N&QwiOl- zp0);<$Dw`vHQaDhd3P#uK#|wq;2Z|aySx-l4PSyj9S-sg2*4Q&bL(RA3Jfod)J|XM z!o;NfOZ7PsVz^Snb76kY02QBsPf6uoF-f-@l9sKmTy6MAQL&nG+L2{GJllly`Pwj_ z#w%Y5B>xJCBd(D}%_eaT(6tgsSY(#K&uI~J%^byCGeJs~;V#uqk2HoCp?(f8l4G^I zR2TvdtQm$#2rH1B3%Nv$;Vd54>}n=ClM^>Y{okaz|!ge6Z}q(A&O2IXU=~_xSDIwBEwSy*EA5;>H3;|+o#{;Z9n5}TTx!*`I{*HNTr!(J@(aKc$quf z8ba>rN{^KM6L|Sc{4uir7xmnhKgQxatjc1NDeulK^vYu?d;S=5#i*83#v%R~zXyro zkAXg_I)p;}f8vjE-2ALR#`r`0F>qb@fSxZEuT)^?iD3Cjb5c*2*RGMkg+HT!7ju!=p^}ToPW4LRq z<*^aHj|rxq+|JaZ*_(M55XyR6$kWc~z!)Ch7T?9&LV91%+hRK^3whH0!|V(^kmY6( zw@0PK-3L5X;C^cm+sTm78sSGyeucmsSI@|u&bV3Z$Ds}@M&o+}I2ghJ3>S(pq%}wq z&~oe@#9zmqG!}n(iw=>lB8GEC9a#)ameG(lI(~S(BB+z@NQBYX$-=l+L*=>w)2k3m z96JFwg>}L57l83F2K`8Y@3>die@hL~?JMzOItT`1LIAL`|vzCi|EElf@<`^`kdied7 zMA#IC^7D0a4Bx6mL|p-%V?{Emv1>$~*i7P|{$yHnL%l$O0rg@K%h(BR7uu~U)@3JPbxi>rKj0=ua|m)y*>?&!$5Hf zi4?uW#Z|_N(PXpW;?z1#Xl#aGQ9u^skz4bzp`Ofo=#bs{@;6L zRLPV#=vW$Z1%K^!_`u!$!OZCWzsq)(Cz{7NPQz!a!2d_qYWQ!D;q+E)@}U zglTK@WtknjSG%LR=5Q7X7>Cdtd}ZW0GnX|{MQ+3$36@4pT+_6o5LRq9&867KM`@{0`;WJRCqEH7`T*`UTv1BCXj zAov8cRIfj4q_)4}Nh&OG3w#FU@S@B79G?^AtS@D#xy&-GltKt01_DZh39I?8z+zT4AbtlhT0svV;n1{X)9D8BJb8~nJV#D7h-b*2EaG|gmmr>R(H-rd zK92TlXm1eDOm_N`wJHhm+^D|RsU*ZRU8R>*l7H4sU!$~HB{>iORL}iGB{>gYqLzQ9 zlyx4yOcl?m!gC(}8%S_TzcZ-toQKcQFcztW=RDjE4qEaTRd~+B@9Kq5s6x)eeLQfl z`4a!I#%+`Ezr8xrb3zTA+Rzr`EH>Hb2=M*E4-_lzYfz` z?#!ROa@>@ejg6TS*c4%eQ*D)=%JZr)sSpk7FB3vcAW!h_KIawe67D?M`vd!CVVEpy z5b%v*(G>X%Rq;QPDROrsjJ*$KC(6KYqYUut3E_yk9cw8Yen_x#$Mjzl*?@WUriz&R zC#{%h?S{Dfh^|DkaPd;q9z3FUuvm{OaY?XB>=IA5<+Nj2%u;pu8RPIoJKkRqZ2c%V zl#0q3cVkE)G9Z{}>y|u{fpJW-(@qD&s3%G-=6j=jrFf{uk9_?2sYOL%@w3=F{P75U z>H;Ih%Q@u$z7 z){C10>jdts<_^9p7B95ogqZ{(FJrs;8^QGi8>~rW*kR-NER)`9H%L|@@aj<ndkrl5RH>V^Z-@RmVlunDhNh9Z3f znE}pBw_ni$E7OncKq%2WND)*w(#v6m4*eJg0V8sShUUYwtn#J$a`foO_^~qdy;ZrA z!!}Z(V-OPy5$H{O`{@Itm}w9C_Ojk@Z(yovPGSL2NsYhhP#A0$eg&4L_NY-5FLG|O zCtYJ~CL1nETLQ`Ni#Zy_!ZmV~h1iR{Mc}P6ez#YXIeuSJ8R?H&a122mvwuGRf;8DU_z9W|JcKYZp8t!vCBu{UbLFRm7uo!t^D8=R| zPT8+1^1BvNC(0%tI>o}OD0G}3C>?3*fD;vhR(6W-{2F7>R1IA_w597(3idnXjA*|D zE%>RR`EfOVKi}f-`IapJWf&B=>7|3e;%%M`DOYrhz5*FY3CxC<;s)n?i!W$vt*Yq{ z6|vgy{=^{ixa5IUu}wtf&AyqLCwt~UFh@#R*1&PuHNY3u5O1Ou%3KyTx9!J4^K?&N z3+$$L4dGr7e}3q~n6-r&G>QC~g#wJLtGX@#7a4d|hDUdXzg(p! zGEXK=^YL{wI9ye~rNKAV{4ka7$?~(o@v)S$6*g|}3?4`vd@*Du!eZAA7DF#nmDP}B-tp?1sf)5s32Kw)j(eB!tJ(DxhVs+l!p{TO zUvED6vyZbMd?#F6W(R~o&yfb8UBBc3XwfghZi~?s8ZC^~ykvGGa*IHG%e)??k*yE8 z(=bL{Ul=1Nbi}PL!Sdgp`8I$d5WtPMBRRgJC1w2vo5SHC*&xf{(}*!!VafEZ|aoJIp(Yl zq9q796QA_F59oR@ZO9xMDqkPwfSEDdVJ_usu+w>}jyqL>`&Ov_KUxl35v^TbHT$V^ zsD;uYsFPk&Q4w3vGFX){`z~0n;YuCdtH+j{Cq1^abhvreC^J+3?>NZ<$~LcM$XO~S zlA7_n*d%4M#9z^<#Ux)iNk6rH_+4vr$5yDXByAOB)yv*!eN2>ER{2V^wahNba^k+1 z@Dvd?l^^9mF$V6$W-!x{9}ztiSI(QC`NyP+&%mmDRlfM)IN6VOAW!3mAO&i=YXWC3 zyz9gla7FjKjYg$7@5U$@l^V(aD2NS!Uti!RMY-P(_5?8(M4jZ%w8^rd5LtJ zXn5`n+}I-SbexoUyUW{`U&(2`cAR)Dh=wi;v*ntqU}&)CYqH}`C*L;+lUohCl-6it zra|!;5&f-+G@EPvt%beikVIHWp_yV#Q<3@dX!;QJbuYDM5SuoHoiS7`3B z*GgMxNVv?3V^Rg=UaPBNJGYdoqbfRTPi)(j)EYwpd@mhg2iHmoxhba+u z>c2HQg^`au^HgW=g(_Fo2S#J#MC$lyO`+NoTs^T_3qotv>dp z1E!Z8xu4iSa@L*DyFL~9a?tm-Cbpp}ouZGDzv%tulT+Ffn2foj{oD6*Pgg>Myoc#n zcG2GNt^U&Qjq|;%;&T(UmpEjf>mt+ zsAgWonMk_zsfHgz$ifou&ujvRruP?f?))A9-eb2&X)H_ zVAgNIYJ?Yk7pZi89G8co7+u67-VHdA_`cgiFU?+Y*#I^E*@Oa6gwv3L2IXYp9a+{b z-1jN_Rfq)o$;FS?9^$#|rYLKLI2_^mtIGQ9fo zJ}v@3+8&&^+*+q6X|(Qq;Uf*s@K<--UN{UJd922Ngpq5HU{J`ls}t|CbnW!Qib^lm zxKt<$?V2$K1ZEjl(Aqh|&T@S37PAotu#E2nvCk9JHGGI(lWxI7g9Hb7c(bBIzV$)) zR2*vPOdJcUIZPSfVYUY_Sv7t<<4wXj7GZ zFnuHOcU?p!zv|!&*cT~2lE2lvEP#=khVD8P%3a@@0!?*OX6ftMH@e>A5ep*28<}oo zO^*^*AyG+5c`t-oY5@SX#&qihIfVGr%PzaXOumk6f8TgwVVmF!^Nw%kGu}CcoLkrp z_tvmWNGqF1m->XQufyFexek`%X0a4*-pMmV;wp-|!5(IruqM9ve68$+T?Pc*Nv*+tPY;KEMVU#C2vCB#3P!P-F zHJrkU6i>k4X_n-Wu2&KQ&DA>?bfjF62LO%~gZQ1&JFu}G!sGrm$JgbAZQb<&>R z4&0`>$sWIHI2~i*MZ-$2q^b&BR@1RubEFd~bBEGiDDegnebDE`!pYStBhYDTr_ia#}@I(5}auGvHfPHaJPY0SycWy4ZU z8N-=qzfcovm=mNww5DbzBfiz(-rn=;uvMdoURFwvBRZq-fcWic&A_dQR=M-F9w6Ih z;$3qqNIv&ewRLkG%*QnwPDOFJXd&o7-CaX^!lHh`T`jqFqb#?=k~881?>+E9B%DItD&vnc-8sdzG)sNIeei!}~SFsNxbSCG$w&-8g+V>`ASZS6Pn$<4SPk zRli{>Q~q4$iM%|$-z7+4gTI@PdXt&rbF^?_rQGp%hsw!;={aqlY{^yvcQMM8pl>ao!n!$k$FG@MBqIAsS(f6%N=zvL!8kEyW*)3dwcaMM#AEeLY#a%?CM)v7xETpc4ZoU%YS1XYSr|t z!RY?8;T`(!} z7h;Iol7a$r=ktcHzw^hO6S=^wg7CbU`y*C?)T4IYYn|^aEMrGqafQE_E$lx=ds!;O zEq1x@fk$avDt8(9GlOZ_IP~UifsjomibK<}coB&;I|mICeOdQgLbre(%+s_Y7_-Od zi&O!=q6~YEq!MSorlo&Y8wVWC_PZFRosBqt0zkqc)-v~Td%V2y&MK)0i zV@Gx;&3YQft?L=_Lm=|5N$Ro%p2}{Iwzrpk$=>Mt79%mt-rBCUyaOLRlBOtA3|^7# zTyCWonb~z7|e1%$M&W|^-= z*nBg`Ut^fBnR&GD5=-?WPrsy6MkO&{3su^pl9;a>RC-S(*+RB$h82sPOX)tVH=Pi? zRI%#gaX#5radlrS1h^X$vUKtJx|*h|!obr_Wex1R*`cx%3`4O!(3-dV*CCWW^(O+~ z?Tx2pDETtW8Ej93S51Q%?=+ly$$U0-Bz4+mYB&f<3pbVb8ik>2w;sdu!cC1WlN$F{ z1)2)L#SIlXiLH^^4LC4eZqy=Zu<~U>k>L7nUL|)9OsuI8$)FunT+XDzs@YS%%Kzh5Rt=)NoWQ+R zCFwmg$h^E~MyRMTva+g5)#<&I22-k5Nk@}4MHwS50D(YKf-ztJ{{4KtQCasfq$O0VS~b#F!9BKz}O z`!mA+ocIfNOxLTRCsxD(Rb_&|Kn!Gct zEA;w@{W)eU!{*ZWiR$~IOX>SQ^^FF24JYpSB8PQ*4_3EqZ3Weo({4$D&h>KhUb%^F zml}9_jb3}!#cyO$+P|t=dP!<9`a#m@s5vH=lyM1CZ< z-|~a(z1(Y@QIS)J0)6D*^xo?YGR3J4R5B8y=7fsA%^6?d>5)Z!tEy&CJ*Z4K`F-z4 z+yQ-y^9&|;uOb`B8+8{&ISu{;s~_TMCK3-7;iOT>t;BZDkQXMx!g@|Lmz9&rWkSu} z%5)?!BBMt5MB7G;Yv>1;Q_>TCK97179a4KFFvl2r0u?Dy(jqWdtSsN0{Fj+Fo~|3) zO3ZnFjoStvL}f~VkW*Zym}Mr1XCltqnG5v<_^$*UT72?gZYA>QVesy9;g(tSl7#k8UdCiKEiY7-x# z!m7KJID{3ln->Plad4cB(1?d%33|Q1DYH@WS7fl?vd_0as4y?isM*h0eY&lXvb{xt z5cw>MIEaqxG5*Sr>+^JxALRU~xbJNa!3*K@GANL|6iO*qMR1%+Cy5rJR|&Tq*5!TR zvb-;$NZ*oP&*8=OYm_2lchLD%Fo`+C%7U#Qz^2}E9o+CO*Dcq=YTOdgL1H9edKYkQ z2V8>IEw`)!WVf^cGJU^Tj-vvz6f|&AYIr$-3hqjm))iVv)z2`HDn`Gse};wA{u#Y+ z3N+2pba}AKH?W!ltoHXeu(}m#VMc+4RkwlFfVxS&u(}mkT@!Ln5UirWuOEf0`l)md zrCgQ#DxF5juTp=NPN0;hQoc&SxW5XA3&y%A=mD{X@E`->VPyc=WUAA8`vrtmYwa$6 zVNn9ly`h!Ga=VUIw4Y?a_)iSN*Hf}nR$j$}jdQg_+$P*0a}>-Caf*15hAMX^HfahA zyUtO!bpIW%`)~8hENPB*1AI-1CP_;<&@(4*m=JVj0n)M!l)_nDy zq+<@6q_0@{_si$$&j0Q_)f_TUcA73Q)8x(4*=Cl!Nh&v!#2f`H+oumQbL34?KvQIA z$j@)Vp_`y-B5<Key|V7UcKuBqC{?-yZd(Sn5~=)l0TKX82G5Ll-7 zOnF`&E7fMz&w2!4{Ey&RH}*@`dJkUcS?gK6a8fS}g%>Ocj|3|KGuCS^0Qv$j#=<8F z82tlx)_B0!I>&(Ien8+3F9SHW$aL^7U;UZ*>bxgjLvp%@V@+Wet{H3i7-wykj~V!L zSeS-tyxztcnn&P*&Nj^%e~Ab>I3LnKa`1|gMLDxa9<4KRBP&N%a37K~a;$iPs?3>& zrM~{6Dk7L7=r^Cf0Ik-Hi(nEyntcI;`+~6%=YopNZzgF=^w8yO{6LmoWT^#sP&9A) zk9ufE)V=bHG-HaT8F$@lX~y0{9y)|->|>N#8glg%Cj7+iVM{WCt=kT!8KfvZm}azl zG(%B5@C%k+d<4B8VJbE$u{~Wy_&p;2o7@4IPBhBiF z5{9kQ#s4?y#h1~FSN-CZoxc(x( zJA`&@Hj~kZ=v(&aOQ^?3>=8Sj{}JB%zfI>wL;hEE{?K`AiU2Z?j7R}taHi4%YyLXG zoq#qY(6(hs$tQitvWG2tu!JQg0`0%_C*6lIA3{tX1GM0UzF6abn=aQ~^53E-Cm&2t zLe3dN8_-umW3Lz1z+?3KFCdL3*?T>bB7ReV+3Fhb+}uM_sw_!aakU{SSFM4hq%BD~ zh8)F+#%I5fB`M2L^kq)_{z2jn{=+%sFUX9 z`b(-%oRERFm&jalD3Lk)V)hRbn;|rPB|gbp`HklzZ9L0-a3Du&;IHQ}@azHV+~=&# zK(fElNZ%;|B~r^#_NV$6(O>>@bDyvZbHmNv=lHcLi0mC3L&ztmD(;7--oBXF!XlEC z*uawl{Bib~SC)~VE?l60=Gs0Gy~v{|M57_SGv zHwC|dw8N=$f1g5`CGAUX!CZ3b9eBG}z>PFc6FiT#q8s6p){-fh7I|Od$=%ZwuF^@b zh%$ZJ^(9nX5A;uwCNjTApF#gU@Xhu;yV!!4{igT#6MVDxu5p;FzVpNQ1mEm^r+AUM z&38Av2z-w$Ht>D<2L`^UjWqBbyDAIcH_>WlMvgJ?oi+wI?H8P+(;lJH9+d>&VwFBo zN$|Z{rCfS8@SUepzDj-IYeFfsK7T=wz6Gv-CL!4eIz4!qby|AJIxX~I%HnGRlnkBq z2VCFRW$*g4>$UV>TCbdEb`U(wdX>*xpZ4B*WoBCXtm}S>Tl=)})~#*R6Hj9HQzF#c zj{ChU`0M`!!e>|r-#E!Y`1!Db@P{k25WW@lW#-+uf$*`TfmEp=B?x!MDIKqpApC?% z$EqX<7pvvTDrp6uuF@$g-PcF?V)WP9_1wW18+>pbR+ul~gX0c?b9U_lIs@Nrz3{RN z7OcSqSPUkEFoviU%^tG6BxDL2j-Tbb~?BgZWt%LuQ#($JMr+Zgl@>5S$7_Y2Hu-%4jk z`%?sn%qtg3;}w#^XdEgxR7?l^*a(j_kX$j*jPoC0+auz{jF`y7zhA|0zsYbdJqRRk>C^9X@Oh@+eFdi9>ukS2R=-c#ez!hmzB7=l z<+-fOP9WJvdN;Oh)fWQCy>SGRe<|v1U-zkzjYmo_)X>rm=H-z$vay9mNRhyw@#aO zs~>&p8>uS~IEiK*1%qthOng8obb9fT;$~MEHCeGv6jv6f@;x?n)+Btb(fkcvwY8v6 z`;Ud9?&1_7EX`*un~F2svSoQ~n=T%;njNHkK4b@1DyLWQPFy5zFYenJBTJEQeW>zB zixYFYHX*F_^cP4@#~RfG$EL+_gMv-*gdW(mJMnut00(yPH{8@YyErBMQZR|THX&ln zt*rnyE%L^ePw7pxb6#{l3p%Tv_&gG{5#2}9avScv+nFf99r?rS{rKTzQda?;1&R;^ zRL=Bf6wpKz@_DZ#MwOgAoL0b0+RA}LxJKS25+{ao|o)j>NcQ^pXH) z5nlLE2)V@hpFrp|;CK&kwBQ;GI5x$6?-+293ggdRFC&um(&s?(;Xq$_ERr^Hm*4bRF9sg9w9}dal8gBCfjfWZt(goFPFgeT%Qy0oSlR)?T0vy` zLe`2r`5e5s$%fN2Unb7_tuJ3Ma&)rm<+z^qz<@Msc1hHo6alh!^_ zjIv^kdOXIiGO2#Y(tvz|@^O<;ICR&_aJvS>K|^;iwYW|=sRM3mXpL~w-*G1>(&wPa19ruHxFiyLh5}UOF@U&@e47dC6A&C0kiuzuQ`riEi zczYA@sH&v#I}II)f^<;OD5x1HDj*^#AaPAY2fC#jK|oN%W#YaoX+aSPlSH_4ZH$f! zj-qiL+;L$99W)^uyDW+*iYyAZjRNY(Cd>aG(T|a6UCcS{1ZU9x6afGaIY57Inn-_! z&>wLWN$t-x`U76_%L!)ErT!R(4E`-npV9?yj(Gp#d+aNzgt(=fLJmy%%2BJFYvB2K zpQOKZy*I6Xp&6Hd!ZI8Bu?1HJ=|^}_l5XK~bA`td*qoO-k0Z&R=zJFbrXgK%ZjpKX zGH}+1%Ik3Y8cJMW<#TvJ2Vz(5?Xbrh`;f3TB4v~0%!)pNGRUG}qtYuw(G*E8X0@Vg0(OKUk6Vs}HAG zSZ5C!s_WNYKkLkSW}S)ml5aT!Q4#6j7%kTqtT9~^aT;sB9g2rC9yq7LV6sCT=KhZO zYwVLt9)c2z$3D@-j+XoGox>-bE0_`>Eh#aOp-5cbo$AVAL%lsYwusxD_pH3FwRqc% zkk2;Y7QIJztK&3gviQ|(`7QO@}SB7R1J zv%I<6e3M%MASmHcW}ul^gQbALSsC#k7*==wz)5i2x*g6TEcTol!b*0XC-G0@w)^?l zB5Qv&$9qT%ep?*kso6ESu6q60^J_Du>l)BZQX_r7HGdkub~YH3p5rY;*GC`hc6|rU z(2$2h!NS$MUq&@}Z?@zNcFp$8c0Lo|tY*!e$`&vy-2OJyo2i(2sK?eEEWWSv)60DmaLvHxGm4lNe zEFr~Xr!di;@ZH;yiA)58iOUnJJ4x%E9r03nso)%WC81QC@4*K6hN z=qs5mv!vjAj@Tc~Qp}{=&_v?gGP)dCF#IM2zfqRlBanOZT+ClG^J2G1SUo;FmGrJM z0lfz$!2JR~foXV58nL!~lZOLNal|oatSS;fxrT@FFn$*A8{`k+*;CluC1edGhM7jz zIPRw;&vu0_6M&j94I+C9zyA3@;jg5`6I^iYPFVV<5o;6ULoQ3=FNpj_o(PpxN1ZRh zT}x#7mW2w&Y<(y=mPzwB;xC9TG>ZH+7WqrUNv$M{f*iEV9U}7AU%2&Z z@2LkmxB|Xp_;<~>gS{CtGw_zK%ns*%3cnpY4U_XU<+WpBIQ;^&G`qh{6dNX~R$NfcEcCg^}?bFe_OwJDE17&>X86GTQXJuMKs)x&7d^i9qOJ{-GV zWRmG*PS>ICz-i)63N4ewlRFl;V}Qfu6J<#yC#|4|gE63+A_b^fT-@GS6U4t_YkU|I zA#9SUoJc?M&p`n*d%C&npt2KEHeT$3h7j$(()u4Dfrc>ch+;fQglaG8n^@5nF$k<^ z-3I82HsmZ;w0|X5wAH;lz*O?SNCQ$GJ1zdJDfn3_I4@D~``-&vdrS0>-dRBjOGrSbQbn~JXWm!Z zQZTQnO`SdLTI8??M}<>lp|2<<-p>FQV2?zD@57PP zd~1h4cYeTk!P0!9`NXF2tt;;Z?YGRX=PKD15)eir*G&`vj=5SmDIK$VK8|_BNXX|{ z2mP*+lqj(_bLR(098#-%uxlbNfy|SMMk7L;_qpVCZqZMk{f!Nv%$s}hn$%cHD`d|S z_H2Yr=W`nCgZL2##EInfqGl6&-&Zir(K6YK?Trs$u|YI|hsIa%T*Ow6JR-Rwv&JvwB^s_fW}=kJ zI!otnZ9iHcYja#zFMqoCddt;KEoLQia&uLa)=S`DVq&W%t()9+lRMF*ohWzr;TNWw zv@E$hMBa%e?GU;9i@cL)FAsHtJ^1CFM0?rv4)6ZOyZ9(&)9F!p{SL3)XfF!|;#PSu z#6S!Zh0AmPzuUr#xuIgGLI|v|o)EfJtYcU=*%uOA$+uN-FkFO^VRGf#osbE|!&mO@TN`)L#{Eq!-CrT>b?U71- zB`0$ikxgZWdEA8X#3yS@rw5x3>&fSL#3^!a(tA4Erf~?GP)tvzI)??Q-%cMB()Hy( zXE00`pF=_L&(2C#_0wIl8io4MS=U41`x*Fq1b&!-pJL$OOTzaR_%{uFTLb_0493(t zSIfW7z}rdqBL)7iz>B^%rRl!XCqV+IHb9W<=D%bo9I_{s@$f)>iho%vb0?*M=r!)C z5P_!vyw)hgKf-^R|8l~33nt=s&DO7|LrZo82FqCnu{Hs}_qMBoR$ajEml4ps718N? z2Miu|N&F!|ocX8-_>J~ry$-ZjpN(#AjW1AgU{jDK*@wgioC9rJ}>bLgVM z3-fAI^4OWuINIFc?`O~^bT8wQH`p!X-u=or@i)tG?(@^KiTt?w>wOCCx^JPr(&uFO z6?>*}2X0x|zJgBXPq#Bl=SA;w+qe!{kD(+|v-1p<;>{~lX(3M~2pxP`J|R)kkO8 zn{P4$whRBp|LJ6%Vb-he3~R&6=M*?ABhimanDCEV^D zF5MBW8)tHtQCq;iQ9JZAdmQOdS4n^}9UY~nIgwN&jeEd~{bNH9B-RqD9XT04H$Iah z__%?O_)2BR0g)J*OU|c8v=;w%gM5~LLcaF-B4+xmf0{nu(NX*S@GEYg|AeIL+;^Jd z=%;|fPksX&)fxC+2L9?K{Pzg3&ZWRRL(fa47w|Q9X27Ot_X|mDR zzLNQ995p=OSF+}g%!t?*w2#<*vwOt?Ej8imATRQgX9>q-0=XC+2r}Tipc1ck6EGPs zcwg*AK2^3`&IJ*;vUoX~)rr-_H~Bt&HWbfrlGKdX8%_GnBopEY+po(XP8?!+YksgG z(R^#waWYI9J)|VjM86CXZZy_nHqbKW!B`&D3PE7yCg%!CA*Q0p;8di9H{l!>k5Lg4 z-$WFhq1YHsMspOFv%cJy(ZJhiATkKfZ~0{e^qwij_K%%?1h30Ez(t^EIj2dGn6Qbe zLqzCd^1zO1*9cR=>C0{!*57yU-&iZ%yMB@r1rLgF2b?H=&hp)Rv%J&*-#o+ECC@IF z#nptmxKl1o{Fz8>)UHtRH(q>vD+z&cbj`wH-s89&<~^2XPLVC=aZq8l9KipABBz0@ zE;NeJ2qx7l*;=GuO~`6c6t+IOvm-)(D0b;=jMSMqvuaijL*FpW`@SUqW#5TEBfD}Q zwQ5>;Bf6S1BeBA%x@&%nUE{EWIE3SUG8nsDf)}aW{=1IIZ__sB9J6IRw zgM>+(LCunJ@T@1VZjc~9r9D^!M8SIe_Jn>%)L`DO?2d;8x{K~;n74;2LArA`rSg1S+8Jk1TUj50$7w-3gE1jmdRB4^q#5r;7^Mog1H_;y})!Uh3RPC{iZ5p+qa zxg`-CcMo9~4%25LA#`s{h!YwSiVR|<;44U2(s?#D^lr|bYc|jAhWh6!<(uQLO7wc> z96lVeSh4g7KMe3O;^`94%Va6pM#!5HGcf?@tRqYkar}!wxdioD!r$ro*BZj~SV^FY zB8Y6dHZo#uBZ3AYR3=f}55Xz2+vIMV{*}pV=Su{oW@5x4l?x$C#zFIF-}{kBgVuGvMt5FFNcknM!%JIGZhp) zFli1?b51ps`RyDT0%Wvv6FDuSsIDLXB|kFZ$T(n zx#x^sC`+mdO_Fm49hxbDNyq?hj{HMc=-q3hYrqMygQyR${oKXA5{dK3q#VW{CZ&ca zzf*$jXdj7X?%^~pv45XZUFd|cFs(Jr%Ppi&XzD9zFRhPtQ;o9s9U^w>Svv0<;n;1g zMBn=+Hv<4Xq4%#q$t2p{Oz#Im>)tm=0D$YY5H^wiJ*q_1gd^Sw@ufT!)W=`oB4m9i zVL`U)CM9U6Pdrywo9vfaZPuI#*~Qv?^k-e2wmt8zPQ@&z&Zd)HyE$?bQ>T^0+$lYr zoxMAC9zX>ss0!G5!-)4aSXQ6O_wZ1I+>X?@!?HOIMg%fG6mno$k>MrGy?i1K zjCek?rY_Np9;Aj`T>&JLyRDhp5^JyT$^0V1 zQxK-Yf~*{S>pPbr&rD*8e4*=B zXKe=+zov-{6!Cnk@z3+8ge0LYtcas<17x6si6mjUBg)6kDH>ap7X7!-M!#6=&Tur1 zt40iO4drIfl4akl2cm0gCNrATDHWvfUK0JT{z1AUXd;@NtZ1M~XLmw4@T}&wjFV`l zM1yPVU<7kl;!Xu(Op+v9krc2MlMJk&&{JzGj+wX_d@ttZM9eGJ7)7bp>BOr0 zCll*AGqJ{G>%@BU8FylJJco((aQno5DMb1m!z#$)rjmw8p}yBYgIX$}I%%BT@*i5) zM0_w{gfwLMCGt>Cus;kBH?dQg@~3hsZ4F9DdJL-+R7a}it`$JCFok@fIU!#V;YS3h zC9Ex|nn%Fz6ElY=ZUSku;>5fc5*I?(3xS7s$?|5IXdlut%ZyTNSR#eA38-S)D^pgR zZ=%@+>nf1g_l7$-e5F%ESGgse&Z0yaeb#HFFqwQ2Yd#CCtTu#KL)Hqhbjr&u@Oc?l zIDz6TY?aF7L;FoIrtgDwx(FH;!Tty>I&)$P02FIx+f*~#OtviRVWAiZM^FZu#2x^e zH1A(H=1p{4GXY%?yEL6sYTYu7-vU#icB}ZS65-rM!o~hm6-^1{w*@8mPj(_PASQt%XoK04KkpZU&S7Iq_+$!Hh-2h0rp65 zc2gFgAQp|cShWP_)cg<#W4Z{pBTO^Vg-X+Ez8Qv`*h(JDEJR8+kAFx$*1^r4GwzZD zd?JH;fKLYS7@hjKlTtnrODTL`LvN&fg2j_KV;r=OczzCfIOH`4we%ihI>0?h5Hm)H zO~(oTA}H$9lE;h4zeDX(oq2X5B11RczFwA`4?JGg~V zOi1>Gwh|dN2`NduCC~f_LA*-ul>NE&J+adx)?7Xi$~D5R?4Zed;*t3+EJPWXH{fP;@vyywsTw$Ic3vWsrmhs42k?t3?818H{+AL~<8K zpN0~&CW?r7zQ%8&NMi1BKq!L!y7UqnA@b%CZ@Wp~XjQjSw5nT3Q~$Ad0#zc~DhIIB zUpZYVI=>u>&NmdjBTFf|-QzArPwNgvAO0tPT6S)bZ$*X;O5|*hZ{q994#!Rp+eK6K zQZ=Ii`y`TmM6VXDXi$QO?nLi2!0B+^p1uCz!{hhHWfqK`>9?DO?fc95E^JRUpQ~a9 z@-G>7G^&{GOrPVpNN87wsxl7^)__we2-R%-Y%M8$&1u?~yPl#i*BEKy6w{XhoC7xJ z3qJ2gH~MDlY@Tl5w^aats!=uXK2rOhorHfy;Ex2}-3O&IjNhd$KDy@~x`|?ukS&D+ zinli%brxHSZl>-6x<37VqU)1o1mCQvAmko4--UPWF(-`Bpvo zl)nnodWE+Ul6zPSLIwX}r-(@PSpaQ?I4Q6;f1d`c(qL=fij&Q}nw7P?#N@U@1gik~ zBz>bRGRF z&nHcmtVAQGAW7qwJ8isVp@=Ux+R9N~l+cFGV(|WC2Cuq}63)g)-N73vipSN*D53Q= z@Ry0DEZe|8WZ>UP!uJ;V*MK+jf7h)h6zEN0oS0IrPZP~T&9@^yuKD)zr6|2xpDuoF z;oPm!wdfcm)~+~0n8d_QP(=8x8msosT=kcMec>}hBFb(@vZu~$-Gd2KR^yELq{g{? zh3v9hcd=IE+vfNDM2-t$NW(rt1wWaHpY6_&9dv8Xezoh8imT@S*a(m06^$)4+~&w& z>@s4;)#%QAa1SzKR5gOn&yD*gi=aWniP6yRjIi09w>}&&_TrbT|6EIDQ_PnJMRJr0 z|LaQRq3mxOe?kVeU;pHzReSb2=dpux&g7@TzXh5WYiqT%Gcjo~MMFApq3FoQm0a>$ zm3&ycZ@W4fdkRXTq&^(B*jObVnu;ypIW|1bQ~bayGCC`{Jq=Tub^U3|D~24dw-#2>2)I?6534CbFF2j9`l!Ty~y(wMBvPi-IT-U`9%S1O}OCu*ucFV=2m`_9*&*U zG^772#dwrM9v3$Z+UcEVT=LnFtE zPV`D#xQHHGpNC`c9AZUXI4vl z!@1uS<`7JsD!h+M#LKrsMDu%4`!p?^pmE1>GYQ?bBt_JMHH4six-+_ITC>8jxGSLVCuEzy!_NHJU(hn(Vtitl zc1Xf$cBAiwa4N05?c#%lBOUCQ0FOa@OYsC-CK2cH&PDJ%7geV~+}-Nn0MP>BKjZ#P zT<3EoxLw05@^njF$8*^d5&DuCb~FxwQXF>Bjb}5rg_$3;R#aTp{P?vpZX5@!S$A1Q zyp4{2`a>Oc&ebr_X1#tYeT}tQi&rS#6W#~iIakIi>im49&e5w3e4)4^yk_9vFz_Ee z;KE-a@CyulHv@mOz`ttXCm8tWlJH#w{&55EHSkj(0sdzLKhVGzCgIZr{zl-9KR(m0 zJq`g;e`Bt7%Km&nI^UQFwK)qOl$}F)ZTW!*m2^;i93%BVW9nbpQt|PhGPi$4Xg{6$ zBNFvvydHI3z`hkHhf%0Huf5bBdWGHhD*J+)uojda!<@rDQ2I4IL;?_&Vzx8>4|ILpfRx)>H`tBN3#nakd-(JNpyPTh95*tP~3^nLIo(*HZ%bN>U?31 zMOSVNWxf*0d#biK33e4A$b#?nU8qd!@ zC|rPS5bHJpTM3#-nfj7JYbB}>nPTF9;VbzbSgvrnIF5>7s^hK`28-DP-?XjchO>_) zcq#6iGugn2-Zs{{EbN&h`V!e{pgzK%lY&ZRelzV4!f52~cCkHeiEb9>P0wfk+=b&8 z<6Xg91rM+w}6hpy)vs`2M<_85FPkLi~Yc?=3r$(m{L@znPypPDPo{o|MvA z-~EzTPy4X0qnylwHSKJ5kOo8%@~d|svg1xtBAfYlh%CQ{PP&^~D3RSi*(I{JvS#1Q z3PhWyOM|3c(kKZt5I>DZsb571l{NsOZ7Xq@$deeEI^ZTGQ|6(M$(h2s{At?MuB$|a z6)Ds4oi50Wp`s#dGLnD}FG&{)2+l>8Vw|?1i6TZ>u!x?WgJi7^mXRH1Iy+iNwjVb$ zLj@nBQ6~&9rXEJOjw4Mnz(&49_uE9q8H`|vJk@ijXfQ+}sJh;`9E$SnMARO?LKHb@ zuo%goA~4hY8AS$!HYD`EFjf>O(-=cC5PSCKd)8zBA#9w^KGBnF3;myMg*h3TKo5=s}*ZHLBdImIN38Mq<`1XpiY1 zNu!)sLH>!`zTfUIj42fad%vcc1gWn(w>t z#M({-dG2@7`5Kuvv^0a~epKUf?ne9%Vq<|Gi}wlU7rbLMgRzEig&|{)6%Atmg}PDd zTQfuf9k5pWF*ey#r7RL^q1(XFq^d`@dQ7_I0b@S0W*A*|spuQgJYww;-7Q}Z;7_Ok zWaJm&S(&hjl6_d`H#3&apvmfv>qT$i^)uqN%PV8FinSHP6;IkXC2l_VdwvXw4e1eu(qZshKiZ1_u*owGCPWSFNBJD~Jg*esnJU8`$lc>B z?aHh8W1k4N$7G>t$n3fm(!&=cf2K3FrErEZXh2bX_Ggh)SAu*l&<++U`S#SC{F&-a zbF$o!YYTk?Ni5Pt%7z$`!*j^!q2!iN!IFZyI_QBMh1gX?fufu{P>)@=Ld=}qXA%el4;Tjp)@LQB<_hddRb+=aeU$!?+6;$v4Rq04xxUAd*+ zD@6oFTeIh5NCT5_L3CQgR^PR*%h=s~js4~nPWfQuW67I|r5(F4O1zuV@}cOJ5Y^U_ zu3|LLfVwY|g-n(&<1=4fbyu5wM$_{JYW(PW#;Z&%6YKPJ2`T0FMo~K9=V9MGUE9tv zIhM*$?xN___{}sZXs5S2PM4!qVjP^@T~_5bmw9zLn!wi7sPhgLt>kEt3hnf@$142& z0v|K*oeliJB>Wd>@|>W7f5X7{5cmlOeos>^|4&KyR|P)Hz)vvn-@E{Pk%3=q;J+_* z+cQ?+o#xt}fd+o+OTdpe@J|}}$|QV5;AaBw+A}~(iss`cs16GLRdvDq?y_x9Uw@4D z{+_>4+fGwk7gO7yWNlxHF7bSAok*dZX?~*0$HgA}1S&_1;-l$I^r>io_;D&!0jCRXAf5cdcOaHOw4}K#pmGBlGz0`o=CjnH}t9>||)_18lOhzoKejz@ds*~-wgPR1OY-mRTv~}o4&Yk3wf|A9BrXZJ*Wu?_2 z(uk8n1vR+3nMP!K|B5)(M8zo*4#2)>%ErF2o4S(-mT5&ZB2XkJKin3)9^btzr3G8$ z#!i2zouac+2JaXnd#v>+ad=DI!7e)%bpCv>4)#?B-V*qB2L25L|533Ee}%v=06uYE z8Xpk!=V-SlwqVbba3_`l5LGdL+$sei%1q#*5ncF7uji3?VEqPdy!KaDrGr??E}#jY zxqGW-(ov$#AbGq8S7nP6Ea;6w_^#}reQ|qTkwv$$W+`Bja_|!_!nQvTkCUE3dtfju zR%Yxu`g6D{tfeCuP}D)6=vOAI1QmO_ag zYzSM85k;)Z!cHUh)1qNvftV7pA2gR!h0AGaSC>cZD+&D&>HN)Jg} z@!X1e|EkM0F@*8>^DGYJ#-nSD zog;O-m0n~%I!Zpeu%|NQMPyo`k}XAUCHKfj8xKmA$5Z&((BDC`=ijFM>~K@rCBmI^ zjB(})Q(1AcGM`j-HYPP-$r{B(0PbnrHdwr@^GS}(Y%ZnBy}s8TR4DxSPx+tSFhaHmCo^d^?ZXUyp4uWa9^`lWo-!USNq5kJlP5$pDG)ilggH^Fdzq+I1b5O85my zh7`8V0RWutC@k2u0-5R=tWucfg>Bjw<-s$1qH2I;Toer2|56meDMhIiEs}Wn5CaE! z6VBKOrz&rv&QwoRqiiz!i!;!nHix|m(|!aLBbXhLlCN&vB`TgtqB=Z;qnkBX*$=yJYDRteOGNwb)J7&GHjjFW2n$m7GF#0+(3b?l;RPlD95) z1N0W%k&WWW9tx#ikQKJaGtzzAhb2<1I3(Mbv*l+OEUvD0zr0}am`o5cD2u%cfFl9C z5kR_W_Y3+;7eP3rsPvUS#6?KdZNs_11;tl-yj+NsJ!L+0vs@R)7?(;jC0qzT1L(uW z1*7X$#@#maM0Ug|u)_AELK9utDL^^6(M}3MeQc9)qG_NCvkSqh#}0!xI#@~--Oh#3 z_~b)|MF>M2svwLrg)mgks%b&=;B?%$m1W7=k z(6YMRM2m3nQIbeB2#uM#A$=)SA*)y~A&1yJAqT_1lpfG&rT_VGrH8Yhh8}88)MU?sRYO(O>n2K=mXD#k7nizT_ercc-c1a67{D@1nO&x z5-h8oa5Skw!jF;CmVT7O{HKI-9Z0Y&`kuICixLUna?ciVM~Rll`)a$=>kn1R+WQ!k zA1d&34E)Ikz8a=9Ylwj#ZQvhI!k;AY z4+5{}eHnkTYx+tZM#yDMxmApkIC)n&J9LXPh^T?nW&DoQH!E4S88=zZCz)ZC`J<{q z8N!`&5<~c%Xq-7Qb|FV1 zmn-|hgcF@m|1>vjkaN$wB8m)ZRvpR)Tu zSevH!n#bNo4-I0e>Ya&XE(nQNifn5}B5i{l<+I2Cs-Le^Y>crz#1VZLNq z95q4%-gqBH_{E4X>ZRo2CJ^#fyroX}6kVCG^jLlLn>vwi7O}sycA~uPu(SAQ&NPXY z78k2-zM6#>*Gd)@6F4iF8!3-&#Hu<;HhU#gfl9bn1?-!PeD}`h0s3XMAVjkXvu?z? zb>&E5w?k^?N-=~lY8kLdOdXx6A)fFj{km!4CEZ=`zkA}o_5bD;{3L8&&V%fOoESgRLueWh*1 zU@E(37W&s%7{t9p7W?JihSlKY*;=i;1DwPwz%>@bQ1)(|ytXgkkR5!^17x_sA@?j6 z`G=X(_=Dh}j#S_;Ub9Azu&(~M6xKJ(wHM_&zRB~=Ggg#Qd69yZ)s^czeipVz1!XtK zDYgO3BUoLqV0cE*njw};@j?K&C+17h6tbR-8jO3rn9X>_W|K5Lah|prg%>c%O4WRp zIN8G)8x)pR*kl$V9+{p9E1cfM5vyd3SxhyOb1`5j0%oehA*yd)>} zBx9tao5IS#M`;!>N%k%$W{o*D%!xTYD{c&%)_Q=_3=rJiO&nce&L(xO2w7y!-h#4I zD#bRogg>ZoEA(ze89MpXMT0Tbm|lORu$c;hE%*}*Yty;O7sJ}aV#?+1H2%o3J1bVM z4`xi^4~Dj*QF~0{GGdW5dTN=zBf(3nAw^K*boV3&+Mr@Rw43IeyiAt@cB|GFkzH}S zI3wX70E*MZOeKsH@45=34_Ol3Xauk!)4+X%m3O8H3B=$z)j4zfR>^i6DX&>M^sAa5 zFEcrNajU~(YdmPIIz)ptzKP9PUqw8ij+=`}t~ghm<0{2O5wc@45}dP)4J3vg?uee9 z3Hf%{#aW!dFT&4m7(W*eE0-&NE*@4PSNvQ&Y>iyuN=JTanEDjfT^d)chZtGE&eG26 zXksRm@d`^IpzZY9Q^x0%Uy+?GfxOF;IM*}t;J?fsY#aAqIYQ z65cEDw;K4B9xea&TY!JXz@K2?gGu<0WGOoj_!PexyNh_{<)`r1{)aU1*WD@nb-_E* zk)($0_!Ry+DjTI5JobW2n2PX0WwZa_gM4d#uwZV!H5ac=I4cU&5-mnJD{`?MTp7s& zJzkC;PI&5CWN~4!!dfHN!jL^CFTqpA-6A9+y)|2A7H{C8Bg%w>c0UZIyQL8kWB}ou zvIo0yFjuQZdFFe4hYSyYzlRy>5kuIDOaeJ#fD4bG&0L_va(F1k$b1SF>@>atvEE3^ zMI4cy&GZo#dK+)8m2gm$hQ;fNx*?G^jBA9o6+aL_h5^zG`;$4ZX%2r%oE7D)uuCCN z{8so(XqtJ8L&8cSGUGV|pka^Zh%PY&tX0^Jq`9zMrAEV;6Z}}oHDrB}NH(6KaOM=R zIq%O`LducY*#{Z+nT$~rP8?PC{6IX`bJZoIyDCdj@RG}17^!Ee%SRjO4J$=&c-g|P zu+vL+2q4U@L{J1j6pQT6OY7j*-eTdpvj2BEuei5-!I#zIrVKyj7-r`!DU9@+BoAFS zEG|HPenjNw;yOcry3jtK8O9|xEnP44_N zt{ciaF&s|hP`I$ogM@7!By6*nu+61G9Ec3hZ0a&cI_1w@GVXYoW>XRS-RI;C5@+T> z(-f|mUq);Y<0~W<%W&?^Q+)TID%4}nYs0<_w=##0?HMv#Tu$amM17Fsb$l8dz&l@Q z6)cL+40lsX3<;eXN=zOP7l|RkQH?_qioL3E?hiypOR%^%-Vy~^UYhdi<7twx*QN1K zg`n;9b9eW~O+EcW3(nNTa3*`5a=zEDayg&qBc12J5zYkunSn*pF>9(acWZ`leB869 z=%3PZ{yJ}Eh>Ho-J|{Ec4_-x|C;u9G3{TlR@=X+z-|BCduadHapm0o4gALIfWN`OKW^aP zPr{!s@H2pS<=loHk+1YNjeq@{dx~qYEz4xKdy196IUl)tkw3l38)NvWK1kGM{V?$l zL-moTo{#X%N!%lv=D|Nz>{BI)ITEkFjc9aLL56x))VzRBf*H-CV`BK~ke?WsaLs$rm zx)M3EPS45fgF5xLlgm2g!1~a*{lPAE78}`EK82lDP-aB(m~j;ULs}x(Q<8XrK#ETYrMVwOAm3Yk0iKL?Y9$WbbU3o1jg zpa)64IudKq1>d^SKtxI_#t$YDGAUBk*C}_&_^+8oYiLEWw%_A=?&*FY=viSuENBRO zVlr`=)Z5LSOjTmLU>O}14^EePP%8Wf(@{C|B!f$4Mkaqam`^|qmK0gNBoTuNvm*Hz zZ1vy+G26IQzTnxTPIv0~Y%8u3p*3_>Qc)^w{O`@~=6T^Q;-cwVs_M|}PU8$PL2T}T zpThUf3&p~xqv#ZM4oe#f9pA*iF-oW`PEW|atP6+8nvelXh(EL_DxuWMC75bZBWM)C z*aErAU!zY&h~8>qRUn{A^$fF2bqR3bStCd#!n^N&IlIBwV5cf)J_{n~qo5^m;yr#Z z-#H1(Bq)rM3CRr9kH4IqROfWwO)dZb{PC~&-@18U{PZn%P7DDaWk0586@ zhetRz1ai6}flDy&N`TG`$`o0QlArdg_NPgPd>u&3h;zh@;3|Ui_>){lEJ=tfcJWC>zpX9j3Unb40}A;JFuX@E6b7&8$lbnw(tJUwhbW)!mG2lRkm za@HJLvZ192L7zggdrn6+D0x?q28(wOc?kgXjKN$?>1VYB{UU52G3>@mSr!1{fMijcrw*NALTmXeeR z5V&Q?h~+dDLD$=jD?>M}1F>s8 zk%F%xxf^_w#nWGD$Af0^3a>;g^L!L6*sI8E9l}$0a#a$9H1`!59M0F5nemr+(G?2y z9u_ab1DC#FD#eF5CL15Z`(i=PdqMvk~%ogM024mcR_A^~4YcF-z$qTo! z?#*7O>*R?B{+zMEe`VlD8u&+&@W%^$%)oE`kCuPP1mM3g@VyQEHA(m%&`mlc41BGD zzx+zzTefF3V{HyM@I8|7a|Her;GOomEi&>eOsQc#{_T^fWAWc={K;=B_s-`NXT~P# zoz73AkA0=jKu5nrr+DJUf_B#bOmteMwc<@^)j64~wyGHne=Q2(;O5@X%!7P=APy)T z+`M6zd6>q-Q1SRoPobPof9OZW@b$Ps&FXWCVr=b79YODKcLd9RqR~IE;b-f2t{#{Y zvOLlE`IGI5zQdpPo+x&3h-EKPQ(lC2OhPSjRNzP`$3k!PGKVv;5rpi^v9q*d?pmKa z-M~f29?$+xPKpu&T5O*m7*BSFA8|JuyKs_@+9OAwdP@LO!)sKe9$ET;wscQh1Vt`WszC^Xt6<` zAM2KBnZ@2xE(9J_Ft6Fw!RVWiW#9N($pbE_hY)Oqr;iHgT2FViSNH@oqkLRtwvNlQ zjcX(k7%DfQeA>gdCgt$wuH@lQu4LOJKMjXJe~2#0=g|LTkq`{ihr`t=WzG;JaQqWb z;uWUMHY*&*Q6-d1Bv|*aj}`F< zMY#>|b1klLG$3N%k{Ph-om|==HJ->T32G6s?-i*cq3z7BgM&^9orDWwQ{FSdpJ0*NDa^NQs`NlJyb2ga1cjS4*2<_q?)0W!+r?tTBOwiPm z10MDxDr&{fnSVX!=0{SB+Qr3dF;w9Fd)TVdGpQ0+tp?L(6C})|IMmXvzqIx#LVGZ~ zypzm+=EvyQ?2Z_nb-t46&q5K_ocec7rkDkSdAJ+dVi1H{ifFFFP$Espj;KS9n=)}u zFFBM6h*pLiIyX=9-CNFw__G-EszebJIp_#Z`rr|&rqxX*8Gih%_Z_<;7}5V+~Nt4t!wf>f#i9n=Eb| z=2hyXuSdwRP(u7>UeGq;Lm+U+ucozDZT;V18P|QQEW>j#Q}jV|HhRWVWf?06xh&u+ zS>QkXl%M$wkyFDDUv@TM*1=h3Jq%QFHbd~WBwW8?r0 zOgWo=q}Ve5BB^cOBUlaks&d=OZd|eKw5_ZZ~k5rU(ft+kM zz-j0-xy<28o6*KI} zPduY$$7Ygu7QWKjs;5hNxI7&C-PM6KX^D(W`=YZwX}*%v7>{7=o@5`WhZ63|$#ABB zsgjxoehb<>p*v1n>5Fu}q$wXt1IY5%ZelP;F0Icd4rm{=yXE8_JMLN8$ku z$q3pv5ru{PnVB}ncC5iUj2D?nU8Ipi>Uey4dET>T#|nnkpPQd?&-vCD@l}X&k|$0o z8rD9yo^Yb>W#KpVf5+X7a)QaY@Q{sQptyS2@Dct?jW;{VRm~^`txYl-NxVcw<#tV(88K;=(3tb8f|~p(iNQQtfO|7Hl@6ehxWun<_0K`5FjGlF(~E4g zy=9POd*>=sXLIw^`FN_qU3@gP+TB+a1k$=Lv(H(^U&PNI49KnLZ4>X@%I^*eR(?&S zaBJnZt-*qo&VtXG$<{Yw=p<}pt+U``xhD$Sp|>}O$ScvT*lFe|2MT zCSp(WzE<&N{lA?~Y=BZSXp{wG6W7qvWIo(M@17?OC$4Mk19{=J{Yd(|vbI=49Hb3T zOw{0;zlSf16cuTO*Wju<8qpf(&5(6z zbwB(P`0l{Y+}FTg=3iVtTkmJW-vI21?)<-ue$x{9{P& zF5YR@m(bX8X!WH%^~Dh31Ifo3`dB`E6OugoYh6v>8pxXH=_QD2bM1Ueh;{#4m_JIa zMYWCdPy9>uvsw>Bh z59D+~IODL-77qK2NX{2ot#zrk`(y@ldu0|9d@KD75sYK$FH+vD>ekxDl6l(2fA({` zc)B$C$))bTI%xOF3Rxcot)GIAg|^+3lf~K-eVeD*=002QpX0v0xo{W z7LOa9R(Mm`+7PrhJ9m96?6z>UvfIth(P#<6*5_<%w2|`qWf0I~y&~YOn?S&P zgMi|>ihvi+cM)(J+g)cW3@e2lk$=#Ye}a~#%l>Fc*s9T4SNtu8hj0#Z&%bk|nZjQ( z8!-oAbM5FD#3-D)mGqG$qxYNRk6$`#=5585QGAIWhnLySB|c3tSAN@@!-k@?FW31c z7+5|LM9IYPmHbSvj{njz{mj+-iLc0fScM5f_!&5m2I%E_+FyNc^H5a*R=JI7x!xNAkpvgo-XtIz0= z^<)uGBi0MjQ(;;?lT6E3xxMStNyvpdkaq*$8&Iz=$euk{$#rNdUkB8^P zd%!%{KS~m=%})1P?MI>Z<0jJ&dQZTrfo|iqE1^d1rpN6TFW zWp!S{-BEJ)rgHvYQl;|i+7RiPnkNj4NjR3;j<;eZFX2?Qu8hPYRJFvmAdK?wBPiFRq zJ>Lamv)9lery7Y^MvGV=1e#qH{X}>^Q$4}<`M3ly8laEsQ{FV-*3@tIBA`~bBN=3& zVcLIHc!o2Fu+Xqokiu7_jzqm>jtxZeo2vScQ)a)^CsW;dw5kE7 zE^oB9)0$Gm-~Hr|1M=T@Rx6e}+zgfz{MTEpSU#zbi{-aOuX*gk|Be4D;{`#5!xFrA zH(VXwdsTw>K8dhsaFoJ(Egt?3-fPAuNoP+w1NjcjnUbpNKY*MTf1w>+ehnQ>@Y%Li z+R<~-0h_gSKD!F1`+~&&Qa6>*Qew60LLrtZ~};AB7etNU8deM%M`b|O1)xMDQC(G$bZVma^?R47|e}@#m$rNAzRKpy=vMpMyWcEve#(9E=I@nPrgo6oQs2CgCJ_~KbdOFj&o=+HOQ%FsHb;=B3eRSoG zB!1?vQv5u1LnHjOuGA4cqqpLx7TuxKmF4gE;pZJBDHlICn&K~%;{P}NRDN&({M-sw1C2k0B2DH2L>h52D-q3mT)>>yWQxSnFGm*C<(&D~{L|jD3SRZT((A-L zm*X7HGVhE-OacC-Yk?P0LPdjOxl=(wM1#xaP6dTGb-fx&9uFD)iy~I7ES|U(HYR}s z4gUt&H_PzXIIFk}VQ0GkO~D$&{}SXT!@r$-GyH4h$_&3+NkpU~AL74V(NHunAGu>K zXp{v~2E4XG7Bsjk=0y^B0tH=*I2b%2n^YlD)Gso)tyL))Jx>NUWmLh4r>+6JuYRJ~ zJ!rOKx5IfZc4vsDGP{PKwvfBCVaIO4b1zv(6wlS%wUs-?^S`*;cD0M=X(#w34ql}aoFa=$kEa*q1 zPUkWTGIF4-%YS_TxS#xTj;hU)^2=)EBQsvOc9|uu%9+Q*KR#YhIuGz2<7G-R@=Ht8 z(ZesJqhn1+hrg>B8+W#gu|uSz(K){?zs&ncv2|8K1GbJZh2$m+sX^*=x=_e}Bfn(K zYH0WY3BU-rN%`eK^WiI0di&3ZafoFGzs(x(dp!^TIDX%9y7C?PH6?*xr)=x)y{g07 zhrWlIwz%}&VP?a32kf5Gx6_N#kUtW(iT(EjZz6t~zGO7?WhxJUeLpY;2wH8v`Gx(! z#CIBC8n>jf1%X3ztBsI-!-q6f{p(Oe>G&ac7 z&f|O!KF!Bf^$SxL6Is8h^K0RW+5jWBeYJ*-XI{X*hRx@lqw(&zIQ_{jO&jZlQT^2H z9`DV;DCrqD#xKcK#Kw|=e!giic4ro5UDU!Z5QoBSuqWfEeGB6SAM^u0T<%v?(j5?jO_3u+r{Xd*qXwC3t*)(_ASKL&# z8@*h35$Z_UOQFa{XDygF3T@H*iPBoOQet{QYwb*UOWS*>05u-PePn_j@S`rnWkq`J zLuHM9;e)gOas=PS+Wh>s^4DX}aQW*?h>=d4+5BYE>R)Pawx_Tg1&%NUUMvhdY6^VG z6u78|Tj0e~U^UW^j3-@fj~@KT=$w5!z4raXv?qa_4AXCKju;p-^@a-x9+u|Z_ojB5 z^sT?U)3X+9r!PEwEgzMcS{;m(s78=~w5sbT9{YcX9v4hjb~3z>?JOh>~}+(*{wGHKqQc zM)C%sRcY)P>7VP0CcAr7&^(nc`bzJUcB&SdN7~D=LX!%ioxCM%-@=r^$C%XQleJfz zT-@yZh_=EWlp*GeSiel!6je?a&asWjpQ&KAa17@jCM9Bb#JWi)-YYppypjp1`(tKX z!l=k(Gx`u{@Y98ghuy=$!}A6YC%&n82z7Ju@G-KXllQJj_0pP<^{w+48iW<{rN)iw zM57WdqB-$Gb}1>;klb(UCepqrGkDgJOkb(lWc62SI4hDB9TT?uw-28cX&=2k46edW z^RpRj)ehJ_3Ui!h>}9B=mG%wg*ajJrzaqQIkQ}3Y1SgNt&X-1$o`4hDSgsriJh)6r zaHP0#5d%WzE>MJYMMRucX%N!p4Mj-L(_MsAqfc~BMUYA9o$i;|Ew7M$k`aT2--|6F z&smSKgw2U&>ohfHgT*{#w8GYnqf^ZWZ#8OBqCYpFC;Tq@j`I(`NtRMo-`IeNzOVS( zOv4(^#N#B8(?S$9*YFL#8FGgb^F%&B9Ng{0^#IQs46Dn;bocdlyP41Y_%CAjHLf36cdU8KE3rN4D%$^1BV7)4im z=V+&GqT&4m*62jT5wyjhJBrGjv-J__`vgME+?%MpQZ13r5`eJtV2E$#BYE{X+#Q z-KqSbHY73k6@R6&L!%br8itsklhh>>M{d8|}@wt8%hL zJ;0h!z5dhVduL%IT6=uI_5?2#J5BZau|4OZB)Fw_M)kV8&Y43tr#XdJA=$LZ5h(z% zg>)LDoKY_;VveL>osH^caT#1PyY=`Q)kAEv!l&yW0BJ+(6lv2g0%^?+(w=)okyh8)McN?NRp)&~EN2!J*f72# z-~HzJWCe5kWa;>PTdP$Kma1}0Rk^0BOOsVONT1Fis!EQ}kFpic?UNmy&3Luvs(tjW z#Hci9<(E-e?2ZaUQy>|!24z%NeR{kIAk|fC(Rd-Yh+fYOiHsS73WJhs2IboQ24&rg zIw-U;Wl*LfS0x4|WOTob%>f2w5Y*-X@=Jdo5U-)+jcU@&EzCuOLbQWL)|?8nn(qmB<(6Q zogGHMV+#3gefuTVisMrUHNwwxFDicOPFDO}gx=DrMAG|x_~}avT>Si8rNyti@PEe7 zz-b4-PYbI0gZMd^a*{~i4?nKHeOp4`ZbWCcG{xWc{AGQ6lxDD=h`#*>X%YJN`y|(6 z!s`B-4ydZqhaJO7|6J;OQtYh9nvuI{5pKbo=|>Ctx}6(Nd;tXq*lRgWIA{^`!q zR6V*{l7Cf?9Cy#q;q>R^AQHU&3V-_J&wjtdvXMP0Gv^RR*O#){+KV2IBl*7j{4|&RkmBI-9u1ecFziUSpeBNDkxlr;pO{U!I=Ap? zb=CF9FJfW5^7y(28wSEpMYN^!;@TAX&Cf?_veJo{Ew{-LyeS9MmAWY1OHDW^hVUjs zSb00Ah(@@(zQ$@7UuhZd5Eb!uS>uYf>b-b|NAFb;V4078nU6!*oiTpzzpLYS zE5fQfADfr!_;o(s9lv*3I-L`cY5ot!?={7jj^DFf{>u10gfRGDj9=vQKQw-wspbE6 z{60rN_W#59Jq&p>etTx>_`N=@Vf^|%spEG`wmW`1SxTL&UvS6I*a}z_MfdR^w*Maw za*k9qY!*k?7IG=EeJde4v&r^LTv=AWr-cmFG0-`2>ejtQv)Ax|Cson&aRJ63xEX$m zMBRx!r2giPpS@gN?*VNA>RORsvNbv|X!T}O#%B82BK=bJC+;HU>VGKd;WhF)*8PRP zroj75fm@)&)B+1%H@-y9wMc9A&nSJW{oL<+xHdizItN9o-cc02jhHv9(ujQRrz(p2 z9p|Fx6GSwp7g9~aUe^daqOWm&61AA682Uyo1w-PDkif?gPaFsz+xj%ZN7shti!!jT z_h<@$U!@|$=y>E{NWwo=G3(;vkwk$Be5_$7Q2#1@-1aZ+)?Ci=W35S+1*IqUwBTFJ-xDU~#9s3Zkb39oBYhpT5xC>|LxC1tTU$atLqfr=B# zDjg&A`HB14djF+!g7i@I+%?Y8T;jkIjoL#p?9+p>h`7Jw@J_P{COz6Y+D`R(k7zqd z*(N^kmov5M@&_D~K*pa5$PInFUTZ1HXt3ug!EAJ9ykhXN2v3otkZ5PMVmr-9o-(7i zsMPNL2iS;pf3Y2Z)WN?y>#b9cd;7QN)|XWv%U)dYLsyso#&DFgg$EN-*)NIDFz?Mysh}S z^D)K8V{Ki0oPZ?flp*T?AL|8tC&h;|mcdNX78`p+$TEsvgOo)HU3YdPq;OEi*#boh zQkF=w@oPzAkXRki{o%t{!#QM2$`wyn`+?6lcpB1pzl23Y3@~Oq zO6*{b5C!i}No;w=g~6R#d!w8x8Ozi<5Vi`yR{Ioe z>1M~^YqJwU?qmzCPVt{2na;Yx;H%~h#n-WqD!%+jx%gTndcK}dDZaYnTQ}=+gRc`H zg@pVQ5@$KWavEp3YLMkp6hf+)(5-EakS3=r9+_g0wk1JXFVHMS+IEmu+X!(}4dUcD zBcac7U`7?pLqT49nT27hz&co%lO-t3cG@-KPOpnQpgSomk@1o!{4UykpGnzpLLzzt zD5UX;NtrNXxcf!z(k7=V5}?e`Sy0|P$cVGX7)*|tu9*DjVa4ROBV9}uBi}ijV7tKA zp9}om29rWBDKk`1IXB_Hz@c)pJXmpl5cc{%Pjb5~umH#`Y%kKX^tGwL76wNLeg< zqEDcOjYb>iSZOh5S>=bl49t$~mN-#5l}hby^WPNDGF{6p1h5ujT2_16LmpM>I(!atpv;F?oIfwc z0@xoqOc@OLjOe@66Eq_Fla$UvefxD5ejrB|8L2?dbwP`Ra^fsPU+J@Rm{O+O-Kw)w zx_gpHuZ-3m()Q~T!-a4-7|nb%A`h>K5ORnel&pIbBq2Cul%*I~e`Y(u2qY5TnL;~7>P{VS5Yo9J^-wF34!<*$iI8m6H z+u!AQQzVD?4B7V3-y5LDhLQaaxmmhuL?|6s`iHqqk=Z*>E^gz=z9Za$-r|;@>@CYf za(qW1;K?j~!Rh@W{k#RTZaltpQ|(ESg6~mi7C8RF;evHyt@(J6{C+Nqt6DvXg`k%j6Nn zOCc-9)kq;r*n44G%nTL?G{?TPds%_!II__@%L?2lf91g|a?zfPx8{!u5Ow-ZP( z-n%D|@;6T)d zr5j}lP>bUB6pLcg-Y4hS+vBhM&7nvk42yF^g8^Rt)-nf!&N%F&X1;RFm{eixWWwqTTr^GEh0-4PvSo-Apw z=Z(Woit-8`jfVw{gtjnk0Y$9!AaMx#=Aq8 zr&l%XC&UkiqGmABQP(AkV&yA*zy3Ad55UhwQc3z9&`Yu7S5MPk&Oor9RcLzI%Ji~Z zrrXO3mTKqZM?~^LqpW^uKanZaoEZ8zI?MF)P1DbprJpYZi|@(?9SaN3ppGj{9gj&J zQB%jOF~#H(pIgVJQb*mxQb!SZpq{%pe#BAyfgBIMC^I@Ufw>Tx=skr4>FRuzFuHnt z3f8tcS0l2)2h5VO(p@zyRWN|VgibthsxH+}BVvyg{6!lTDhA@W>z@<+DZf+<{(^S| z>wWRKEMjd)Jjd$wyVLq)t`W&acB0l=n8Km6-V+|R8_Tpe2h~s?&QpuCLZvt>$Ta`- zZ`z?h^F5koky?J$uaXnmzwB2z;z^~R`u9Qq+81<)hn@lY?>Ff0e4nC!U`rSMUqFIR z@F9MBGb3dEm%b+UOFBu_Ddr%GMT1=E4~U0~dh_JaTxsjEjU}ukiMr!y{9tMj1ZCf{ z%z1fkWBKZU_0@us|Eazq$@Nz| z>ib21?p}Oi%>O6SwZ!?;Q?wjh?0)h5X>%Z$Zswc){iPG4dkQ~y&$~9EkNed(`*Fe3 zuhq9;(y!O|Oa6BSl#C{Urk>Q$z5ZI=AM?LEns1V&?B{ zi_s{s%rsV#g{@!p|C>MYSL+`lV%ie;$Y=h+BCO3*VXe|LM2^kFqrMF`+K;gN#4UBw zGvEYiO*A>;eTshQC#NfogFhKJ;`RXOs!Lv_x0?zqa(xit9;4-||3}=rz(-kJ|NjXj z7%jR%#ip&+sHuWQg%(>hwKtk|RMZDBY)qsl6iVEH!fXeUvIrHphgS6l8|Nr{E{(oDt&)mCDfHgtuaEpIy z>z6Xu4!FmdR?T5Btq7)LR^Myp7}L6Q?+nxGhgjj?I-fuDAkOacZTSBle!{c&jGy&5 z&;EafpA^!Z!_QURNDh8_|Hkk$u(S(5=gc&CYkbt5<)#$QPyESQ`cpy zprx@nw6p*|Ci~&V03bZI`6E^up5D3J@Kl72KSM`@5{9SIdu8y{!II~XNbzSlQz6g? zjeh=b<7aF9|7ZMEBE>oUe80u;(|VWT$3LVCKYf}EKZAQ^@Y9Sa>VN+x{v63P4e*mI zPwtV`Jjb}p1`tlZSjpgEHE@2)W?=l>-!uz9caojE^6E(0abi2V6(0t32@K~LsC)(v zAJlQ6=!iWVaV9uXWNuyA0ILj7`q%OE+&+c9VxzkprZhr?Gzvo6RsVw=6N2=x9Hum` z8&e7-LiT+FDZDQdsq6)h`#Ya7eBHLl@U;w!e1@LZ&oX=!6lUq6g;sKi z=3;}*Li{&s`U}ayDH%<~(UvkW>aLNnsVRRDO+^Q4{f{*j&pUq=YTrHI0V{WjTYH6< z-#JW7yY&V`&U-yG$his;(ti_~z<(85^ndrbouHLIu>5XHa%|t(SDmKvwIe`@bq&*; zDvEqEkeT*h+MiY(2%I?WX z){IlGeqG%wr+Wh>&8mYf-v-PlTnBIbwRQ0AM(bd&YzJ>ahV;Kg3h+B29)Hye>);n~ zo8_ylgVw)MA_T@f>%(shltJ~^%~T(Zdjj+s!2A7f@EV*9ea43$T<^NWi1K!|(IMzk zePa%+DLpcH-^mi`Um~yu0a4C<2p{a`3MEB`8zAbAr{dqcijT%SbNN@U;!kHvk= zKY8#VdV93z(BjHuYbEbprOxIGT3r-cRr}9q|Ft}4k}v1+?NOZydc^MY;LViQ_1h<} zX?^?S!z)YOrEYFbR&+D65dUoSp!0ar=8> zC(oNgpL`+t6fEU6xtVb}Vf=%M-Ii?(bly#NTO4Mr(unuFvfJsD=kAS@f1y0*C$-4$ zn|H}G167s$+}#`LTuT$52oY|q_O7mdrnJx6i!>RHf0WPe#mCY9TcWj}WCrRh zMvnm!&mNd6*t^QBF0nEt(bO5-O8QR?t;TX-c5thA zXN<0(%%(RZTIL3vDb8IJ2BpavQ&>kBQ?3TiGBm~(qk8U`!qCQ#76~BfWCpg1ft~0E zR&#!60fRHx4eKv{X~VjCx()08yLx~UBy0aJ)vm3v(Qx|yghY~LvR%LwBxQYO54l+}n#RB|dFXc_q86!*K zr-(SYU6cm=-6)9&&B+1 zZ1z;}kY%&a!CaPK;ZT0WFAU|=uQQb2{bdH_-$x?$e}O#35UoCv{1Y9@P( z7hf+ktd?kocd_oCuiL*pwPqb zU|9G8sEDwIYhw5|e;)E;Rgz6c^Bc>WbsyET983N=Fzc3NrVD$Wys!Y~7sR}9gKn}^ zn^I8gY1MXDX_waP64qWt(B6199-HfawJC|eNUna<9bY%!Z1}qVaPal*Lu?|xd9@Km z{`L&+Q!MO$=M3Tg{|&yL!7H{p`D_MX(d3C`{v&lD%sa6Rs{SF}7VeU7`gI6i{~0r8 z@CHHR_n4a&s~mneIe5yz7vKxCJ7`N*#T)pURh`A2AaEG`Az(NRc7p}Pg_^Erv&Xi8 zE?Hpq@&Jc8+B}^(Qpi-;&8ruAv-~vf|AdbpAZyQ0gi^2Y`wNDN#WmF%X8*7)gV`V6 z0%q?*m~(nU6)yPR)uolmXJX!IP~=N`tp|$SE`q$jnsa^7WVLq|duh#z-=X;1s=TvH z5G^<^H;iM+Ny$9rBM?(3^Ho)TI&r$hs;YbpaYOiuar3Obqg~DGHi-hue-+YFT6itj z8(umVS5-cZxWDsNU4ANYw#udohDsEDS$|#~w6%3r`tUWVee3NS>GigD>Zn{xzS|dI zAK>{bol$s9K%0Z9P|Il-A6wE$6oQONrODex{xCOduDgsH(hg(J_M(5W6t97QHI-ys zDcC*}Y^PJ)f(-gkP{bLE(6ezwd|MH6YfE45BDTwna=Ie)P6Rn#QN&0^RJn+MD56>s zLtMn|iij!VC>L>!B1S0UAQy42B2H68p^G>{5mk!#Om|&7eK50k^)*`qT&5q}Ep$*hj;s%lB%ZVn2hM>`KiWL*$@+_IAW^grEIF4bEQp{>7Qk$N|9uMs}RQg$=H(p z@&|3$uY^f0pGnD0x~yulRQ78XdN{{G$o!T04{ayM{D(`6*9&%ijbRo{hZ6S!r$k0X z$925LB@CdNAvH=ikj)0bnIb>oO;!F&W zO9TIn>vz#j*6)jcZvAfhG}G^5t;5$LiuqSd(+dB^`h9ID{r+jE}T7Pf*B-7tgnJ&Es{>*kN$b7iv@>X^ANvim@s(3=7N4xfm zv*+2k?=N#i>T}-OfLFf&YKr{JS;6E4xj<71cSWQC_#_$~kGAbf`A7wL}%;U5wX zduQe85{z&0?e)}z%vUL|l4rieEZ-F_q;P~DY>u8#3A=4`F(t$dDk26EC$OHRDNU!AYulyT??`H`u*92Ry zkX$ZqR;WWExm;YT&|3=0-)=0Q zQZ3oBv?Hh8#&VveqaS9*vi|3W-Oc{CNnm%m#*T&=Fnpn!ZBR4} zFDhh%qG5PYAsZA8!;K1QP%^{tt%HcLaj{{@nO|pzwLgfl+fE;TJ}Pqo@X3A)Vj(le zU5KHZ{GjJ@@ZsM_!q+xMGqPH+U*^Zj)ODAJ%GrJGgVv>AMek#=bn>R%MwMReqL8ai zZB0Mi6&5>A|Gq1%g)IGxu5h8kv%A8*6u!DEyqCh4bcKr)KD#Tdi@(ytv*FzPDYjh3 zed5OY1%4L^xMeS{OOIF4pGzIz$b zwoc5*m5*3|Hg<)rKQCv)@{h>)lOyYDe7Q7a<8-&Og=1O&h@a5K|Gj_2y;R`*2fROY z^BvD z?T!m(Z69^YX=;1>pZ(s|7kDt9pxn-3>3!^SdvLw6tMOUCbD6LFi0lB7UC-bzp`>e| z?(UeoZbtRW`{u8ke&e^$h0OhV&NbL!!Y-XO*q>l;ic11d3?Ny+C<#4-V$KLi5x>jrWa5vFH3s zEcs}orS0ZA)?Ih5V5+c_QNIvBHA>;3?!S#3CeghpurQ*iDLSvHQK~C+`_-~;MCO2%P06c+lKSdETXYOg= zRT6H2JO49AB7JrPKX>1ief(|yB19?McV)3ZtkLW(`=j10?~T7LR)NVE+roeIdzpp* z5EdGL?iKurOWzrJ&)4Y1aqH@2t06)Li4OoLN4+T-)GSmKB%Yjc4&2EdRvpCNr$7lN5H7!km*^?z#np?j>bE7+F&b00fLu<)&=k5vCos}Ci-5Du! z;&P-V{~@U{Gk>#NcPgO&>g035`4d}*Ft7c`Ar8koch&7($$-uKSc5F~9%@Ru@iybq zF;}azb!9vh$T%~^I$wfOuerXLpHJ%x=(jXGY(BAMgF0W~20AJeo&S*;^Vp=|>72~T z1a~PGyX{@09$c2Uhmq&qtZIt#Zqtcu#o`v=|5{RrYmHQI-fsa{omIc*8e#LtPgiY)W6oS9(y-~^;g(=^@m-~pOYc`9Cg_C6N1%~ zBV_Js?9WFhV)`WN>#nx;~eVgv#CMC@}8qiJZQ+F_7=N z_6a&krfVaAYF+#JJDIM1iPY#%MDFrynOXj^ckf0}&{L)8>Feu9wA&BlxN?}K1BaFswq#j<8827 zH)IB@2J5E(C_;??Fq0s#e_>0t^EiRf>G*kM&wPwm^~%QE_&|nF&X^)HyzatWGUV_W zBjFx-2}scG-e3| zuI|psc!FyQ&8k++@0@$B22l@V=qg#Ysg+T?>l*9MZ+p<4$K0rGy1=@#U$#4UARGFH zbSJP^<_OwueeaT2L)Hn0edY}hb}%0b%UvUPeS=0`a*fP(jr_4AgR|q+$YM!P@#}d{ z`bmCxtb;pZug6>d(Lnwkk9toBhIJcDQ?CA_>_GF6G*};>(Ej3!uKB%O^G9c!e^`s_ zVKl!0Q34rj_3*m<`u$K#{10T)V|&J~&z<6`+PDu@rCn8zop0!R>#a;rE>~4ABklzB zJv!nYwx5xo=hvx#fR8Xe)}5 z9@ASwL=LxVDpL+FB1pa?*TB;xTDjA+r>lCsUDZ{6Yf=4=twy_P=PiF6%RrPjKUGDS z)Dq&|JGBz1HXG{49)b44wlRtA{jubMW${h< zu~grx-+`Xm*SqMS8?oNvP|U@8G$_=h2kPS2*F<981C4z0(zWO}G-o4!y~-LMrk#b0 z$gYmA@`FBfc&+v(Y%U6zUDF)+wB4e*%|CIno}4?h3Z91_aMR`@>g9>N{PImRp8+J^ z5Dm?JLQUBrU2NCEK5~^eZZmMzI=Hks9KTL*nUiMBGmqxboHqs6Fy0Z}x5+wIa06Zo zyE>}8vl`fcsly*{qolk!3`zEUz{)BeVR=&VZ!ta~W$oQzN5h*o1dw^N8BSS zDVPq25{s41#;k*2IOvE&AS+5*>^^s%I5v)v3d8ix%U ziqT}DYrLF*-*lcc zJG@awS2+~!Ull|=Y7wIv1eU`-ko#@(1BkUlRpsPZuF(RD_X9wB)~X$%f>hk4Jq8(Ag zmdf{3`C~KX>juY?uQ|wKQY8EdG^Q>Yp+i{yr}IS6B!T5&iyfA$+`~9U)IxD%TH9Rl z?@?UP8?Y<=;kFq|VQQ-4?g2M_N^j|^a?9PSa#%z9(Jyia?k@^(b80cqE#QuZlqSB{wQ>vj+-M~*@IC60O6WOR+HwNT%W4g6j*^sT>{iswYIe%1NPztEX}lty#xwheTKxO6TI5$BrGMJEG#;KOd%^ zaq*lZXJ_sB9C;_uzz~IpR1SJQf*4*JdYGa(9bd>w*>*_;6rZnZdCr+buv9zFs;w{) zbR_jsg}L%fnNU`P9RbP;?-|}94qvIF=zE zw{IAGE?)4VrpxH7Rz@41&Hne#qI&TjF5Fn{uQ*fl^=ijSEp8?9vg#P#kRC|MfGWPn zC){!v-e_73neeFOZ}}s!LZmWe{O52S{4)33rrWI%Jv_-xG8D zGgDxrS2^C%D4Za^zGr+x&v-}AcFu(7L!0f9+bVk4Z&QW#9U=@`OoT6eFaqIL_y;52 zrjMf5pn-?DkUZj5k47uY56w9ULXLVV8Stu;9kxVhHF5mzBE)xfF0(2ebBCz8)i~X~ zR0Dqkla)pB&Yq#BOSw%W-dPZ8(#1jX&K|^+aL?8{TM1l!H_z?j59@!G;e22QRy$6Q zl;gQuS)xCs)fy#z^$T;|KOfEU9W-*A>fS*kC)o#$wD8fbkpVf4Ot(gG)$$%N6D55y z;D>A#0nwB<%GxZ>HdjhhqYQ+8`m$g@q#Ukd$^vn~cLE?*bA~m(10a6MM*xI>{~Vk7 z`7|A6UZkJ-Jcn3Mr(s9XTqa=x-uYt~o>IZ%#{ZaX4of~3=|7#{mAoIH-iWc@s4RKF zGaxKSB448q=c;8(Sm-SCFNG zBN-TB{n2Kn%==?AjUgZOZ+X4@*sNx*TeQuqMEgy*Kc{RecM*FVq>cP zEUr0-YqmIfvB#2Yg18oodlURK7+;7qxq{>~{2gcY@dGavn--p`E*0Eo|oDK_VOTRj`S^Ena+SEM7$BfWJxp3QIChZtB=HWmoP~;x$z{7Qi4>mUK-WZ-kn!)WpH5jX#<_XKVKGi%A=(-p@dF zJ0IXeP(f#yR!8g()n~FTh;8OVbvjT6P8WQXEh*#G6hm)0hV<>TCYxaW~%S!|7Pi$8Yi(dU)7W zZKG*gvMh`kOJB!9oGcHMhfUzmh>83eHK`_8!Qb+42t<6iKz6;}H>e$7ymZUQ*#;iw zlSSH12;)4hF{Z+tt{k`V$xH~4X*dL-#r|}uAxXK z^;Ea#|^7iRd!7L!ap;r4ES4VaNIMXJ_6g=+&@5uoN`GT8{nCfzwwx<@ zyvY36z2$-3TVB7}xHu#x5z6GJyR4KhgUDJEWI*t@Hmaw?8)Qki=OZiuf2FLkA~;T8 z4SE3G2LEZxDv8hdQK;$KY%@VFzh4IW3;$y+iEJ(K7}3sPvStL@j5KQ!F+2c0XP7je zVbXYpjjoAt9+9Dl(B5UuN zp;_05xN0qKQYjA>Fit~GylKQR9dAZXuLa){aaRZ5l5rp5JM5i|JU-B0axR3%&7e(_ z5PT7B$Jd%@dnyilnWuo$AK-5iOvb+gn4=ZhFeIyvsCN&85fasQ&-Y&_zXQ0Fm9+0)+9CtnKNZ2_id@kze^m#q=(jzhre9d+;2n&(u zJX?IrbPX?N2+CGa))c!O!$2NY1x6qLHfY^Zwec&&*luQm80tyTU6#;_+l<=W6$jTsi_Y&EGsml;Xw^0<+ zObk_7TCx;(0wsP=;XW6e_gv?&8Kve=ZgSW>N4A*@OdZk`)0+@~PK#W&`8|h=_LvlA z{aZM!J3`$UVSDyR1l4Mger?qbYmh;Dln>j!jLNcvI0DrW)0b>(_7t{Pc;SV{00w^q z0|=gmNpC`N%(A2J8Zbtk2LM6(BPtD8VW=seL`-MM0M%#(m1qTAjTdMIi&*cuXwqhB zu4*6=p&UAcTT3-KmQRFvBz_QAB!wW^ZWH!ICaft5ChBW@Rd$xXLF~Y8O2J3WKIJX# zrWUkI&kxiBexK=53od54+hId@rZj?cg}_wb3q3a^7ly~CkFstC=HPD=@arp`Irv%Q zoH(FN2qNych_f2fFTV$B;@626-(xKQIe9<&$vd=(gP1y$MV(jd(hXf~p!`OMB}ODL2JhUc z)Qic=M6D{9)ASXZ>;y}6u;uy^8@h9XI1V-tr(;>6L}d_XXS1%?*{o1vkTD9qoy7~? z_(mE}dCwUPred6tE8y$dzWV!SyV)z#%{IStRCcno*zuMeOLZ*yfO@AVp#nplf6Xb` z>}IS^-)$!8J&eGITC;LT;NP~0IcSgQEiy!POK$Y91_FI|M}M(@fyJXA=U_gT{F@-k z3LagEpUO3M;<<)wlQ6z($ga&ncGEr}iM9N;^K2^jdY`FmPfUA5HXR{e?c(oI{Kz2wcH%!i*Fd~c@zWg~n;MCK)x}?__y!lBz8IZ=q{m&-7$v>n zs!E^cl78!wPE^vrf~4bI(p;Bxn367a0H+UhNmsa}UP`(mNZQWCq^&bu(x%lUof%a4 zrc3&_8@7MOFGykEmhLfLDGFLDc>dCp`_=6B%NrYt&QgxDrPF_(IDwcm-Mtt znxLc)18j_ONlRQ(m6GJp#z3Y|bV&Y!9V8v*lCE`02PkQ5kkrd1UFecJ+en%g zfWb3>f-vHe-cZurK`Cw~RZ@SKv{Fg$1`u+%R7v}}q(3NWRZtfkI8s5GN5<3Xyjn>fkm%JyI(#3=^4cn|~cLVEPji z=mKlluPD-8RX8=6sOcGM!O6x~eZAsF7|o`8gY;3^TC&>M77P#RBf6?syj~4m5$LG? z8NlVl0ptSzZI;gT1?0%C$3M61X9b&Wf4|z6wYliK;vwl#%IZLicCR;ma&Enz>h0B) z`8z?afyxpSjPG@*?!x9(4D%yK0fh&S8Ky1aD^4_Cvf%NIJH^4E&z}>ag;e1J<$sv` zcJg7CLVr+5Cm-q*`mI8LbNj~_^Ao$YbzoY7o!@e+z_*14Nu}oG1c!B;zb)N|oul2C zoee=;?y~c25SP2`Jfb*TO6zLflH>QFr&?{UklYvW^}9^DF}|K%Z&vwp6`QoB2IbEA z7bf3q%{A&cTYsn=zW_2nw_!4RlRD{Uj&f^iqDNE*t+369ehiq zc!O{6CsFS*GrAV}&!H|lAK&t}P~zJtIb7*Eg!3+^m2l$%QpB22qCl~s2ZwUxX(%$p z=TNr0^`z;w0y>&}Sw#PErXtX*jRd>1TPmwlyMCETMs7N4R!`G?np@xA&T+b!dk&FB z47Hf&2GXy;sZkjzX=WtC%y0+A3{9xegPhea9}W~#6m&}TVnJb;+3H^izOoST{)G{lH7%Oc6fF*;#q%4|+pWc1izFZL(8~X1tpLK>ue%0##RyL}n&rW`?ShfGfeB zK0n1J9U!}<#y|GQczmFA)Hj6BHFbr|=}WDKQS^(gVi{hohGBGWM86t(gPrO*9ZRKO z{A;fn69D8lqp%8&V58XyPmMus22W0HHG2T(?jN}dN`Pf7V8NQhL2(C(4Ab2P@57qR zMc5Oub!=$`8ZSKh`P2ZL2*Ab_KsE327 zqcm5&t3VAFcsj%V2)ZXhSa~^%l^qT%w#QH!)#kxQ|6bH#Ggk+L9yMKQl)wy(+p231 zVBU0mP*502_vwQ2hybM9#F}%*dt)%#Ipgel9HuHa*z_)ZZhD!~`B_-kZKokXtu`8d z$wrj)Sz)2_U3FPhj#5TOND0O6zZ1egV3k%r=xu&bhxOJPQ#DXPcWPWbm>~(;Wk{ZW zM=iTe=;IMUH4l%r$#S-!(N=}VwwkxO_ehp!+k6xDj{+VW>Hwa>^jwei;#1}roUt*x z@~_x`3TqTcXJuxPP6SIEeSJ^8Efz37Sj`M}pI8aLjUz<*GggXBU5-r!_56+AxO%c> zS9O)GQQ4pHM`edMWD^okvUQZrF*-GRm!nK<#w{6Opyy!(G!Yz-$fj$h{qN2DiQwaKerRl2RutTU7nd<<+4qC zl!$f~|McHn#JYbGaXl9O^lx0mVl}nD+FsxyZcs!YMa*;&KUGArA||_t3PpqzaXt~< z{dYglJRR_o`Bv&6FCNSP#Z%KvARS>4lY||z5^fGX{Inlp$OGq0+x~xo3}1K7JRoq+ z%z5x|m0t&eJO4pWLV43rh_}{p`hIv(v}dnaYJr?NW2w1o<z7KI+|L+x<;)|OCxxhg$2n&g@L~T~7LUkyl+4-yWGZ zD!%>uq1mUwC*tV=@$DtkhE~-c=*9A1+qHqrO*Bfs(Tu0(Z6S|&ghyZ45KZg|CH_s) zwv~B#vykGptAg#{2{n!6!}e9e$=IR;%~kZ3ne+6#k2W|elV9pMxi$f&qw|MTmAhIx zdPQ%K}EfkdVQTcYU5;GE{(42|2-c^|g?h7TkoI zj(Qcvb|;fw7h$ogDql?lTQqj*7g1xge!83e3K>aLhwMxFxW5-W>&g_G^G9+Cp5ODk zfd08!mpY>h*SLosJVR%~&nVTOe!2*TkCBQRSsKlMimuWrfkwa57g>`PfMtjY(8cn` z>Tv~9_Kad)gecYZ@G*~SAtVxJl<1upWcjFfO=_Ct6AV4Vb8O3mUSK{-ks}D^S$9K@gJ(zoCQNuSE zr-fdXP4IOHT0aeeF+gs9y=5LR$|BBl(qCGPhpz}bI{?hs!&~tbC zfG`C7ezZkh>5rxB2XHSmI@(9cPvmPH9hF?kv6byeNz|MnmUM551>+ds-aj;F8wR-e z_QKGd$L*u%v}+)=s|N%W;SKRON^ndaazsPVJXEyAk7-_Gtx;~K2zIYf;%|J2x*l

    pA6^6z6}Q2JeBjLxvVf(1sfi@Y{1$-=|!raz;quEsBQ75?5;IEMIz6qC}b`d`-!u+ z?s8kMsY8yjhU+f`B117GM#syC)K%+1&;b8Q^!cc_!swgACH^Z09=2pT!3dIQvdupL zHJY1TV`T#X`Ze7XRl7x3$l!pJGsCV#VzKd*dsyN~!vp=Kl55>K?#La-h~-v)U})su zN?1Y}J2~q#>W;Lt!`_$Vh_@d{fkKHdDD(e}GV|A^C)ik9d)^>Tr@N>{QXF%R*%m|C z4n3&r9RJ14dY<3snat^9DV4=PqxY+m0`>zUp4YWbUA!ms;8aF$3neprCw&{VI;c6F zL=3d`+bjIma9b(=_BZ5>pHvEfAuN`)->0V3@v|Q=t7>1Cd%y9AYN#+>Y58X<|L=|E z4%zf9@z1;X%M?E=h<}*)SBRe)#NS2yZ(RKSik}k1&n7l9Gdg< zDz@%o#kBWzbmyLq-8SSbo0V(0^GfT>FtLdX@Q0cFLfiJKD?4;Zgd5#pG$*qXei2H{ zWty!}0d~s`%=XNcqm0YnW_msJ)^{#SvvVS6u9WmvYHO9SQyc z46b<5-$;&mOVzFef~FaSD(_^T@pycQtA5sQ)vpi7o5~g->Ev^P$(o$Sx}A)kHL%-_ zS()_{-d_Z>n*xhQ0RQl1#{5iZFg=cfMxUw5M&1K5sF8cBlBX8?6UStsKK}=Tx~|bX z>6ed-DyN;|{|OsGRm(@c25qfs+1QhwaxXVhuYb=#d~lARN;ag*L4%qN!wWQ7THfy& zEC1xG1Np`X!8~tyzgN`@>#O&Uy#&c{=VJNl`hWR9rCvJ@p-n!&4tp1;c)9*;vp*K| zppD>GdJ!O+a;%;>rbwUfGksFWUpXk4qJ@ix4%1{~)8b)j*z^#zpCSr8^cEiK zvvcuZN7-E5@kg7BNizGN9cOd#e3$>QH>4^#0pMVxLCg@>v6 zRNre|<%_7?0n=ag-$wo94=evj@^k6x4JUFw%_LSNOnGkYg&bU#nK#~JZ`fHUrpLhx7}l8I9xh>S!&z2`>Z?@e$zh)8C@LRr&sv z;31lC8N%g<&fEwNPeG)3VjprxQ-|#TLXW)4LGQ#orX2d~18}Zg{^OA3@<~_x>}O0v zNFvqu^>yGjb^L4m7(PtqaDHl}Zdz^=C`up0-suI|_!hD=3kOy=RMSqKEHxtp@7D3^pXUj$cm)sSC*sBXDU@6qwa8(eQSa~i zj3pNp^W!}_RRQns6&AO!#6ph_u~4d%ABwsfQpyrZCRA-SX{W>ei&#v&M_smr3i+E^ zgE)h!x($h5P^GKOv%0W#tlYJvPO_iN!dOAMYH%3NX?uk@siQid2F)zHL}3pK8ghR6jf z(2znk-H0JI(9#?+j7BNxP7E6cY1&!IQPB(~Sheg`ISPPQRHGYY(ScQ|(XIx|G0&(f zAc-@X|HnRusfY_c-V2|NX(W7Rc+{??>Z$)DiO|qOb#ha{A4hnRokdl(FGsyQ*NP_W zDA0aPssL95=}nQ~?>2wHl{y^p9IiZOjGH_TJ4_$Z3K$c1qTa1)oHM>cGbl48dB1gN zSz2N_jfyFtERkf&A<&`hFzn-5l&O&aARRxo3dErz8oq=6%q44;Yd z*=7#7>vL?+JYlNT{N3*jg9Gi>br2Sgug(w0zv>lAJZ-Yi(y?T$PJU6H ze8XmhW{qEhG{Dr!3(cR0^1;-}vrJ4K%kDVmrw{;*xBY`@!46(T`v`#__Lc&v$EU)t zUv<|Kq^_9To|sA{V*QVknwLaM^!92uNs~b$j7)A>5Y}Kgg5S^67DUQPqd`?x*kv&c zzJZ<-MdZvhm6NWX`74y30VBEDlKuOLG{7E*Pas>r%8J~e-1A8Ydt(Y{bP{1*M-s~ zHA(BRK8pgOem{Zhtx)f~RpozhjO)msX`7E9-Dbd8C40yV%p8rgAh;nu)1GGs1DQJ>MTkl04Bz ze@AdUR`v>6$QoP-y3#+YsW zR?`PSiYKss+0~CCGXX6S0_J1$*W>u zGk9d;>;dm~kqU_akt)t1L(!do7?IWGpVco@N(C{7G}(YXYa}xkekZ7io1E9;zAquC|53!_PT^e6|?&22=Bnp+AHUhj#I$8x+AMdOf*p05GLR~D7;3ZY?lKMYK<2EcPllB`f-zzl# z4DlCyxOWafRXQizepPLV=1OU9KWDcyeXXT#zp4{Pw-?oKDa1?V^p8?MO50IL3ZdCd&^7+fQeWHtqxY@%bb>#HsI8`Q7Yo~v?Yj;^a zl_zCyZx(P4BWb-b>;)R5gH4U~!0^xEEHmfyh)?I6UVqm=#bnAy7wB2Z3qr1n4TM~!kJ zNcIwBYW^OGA3xZ~8RtCzpP0}gE`_xWM7?EVAj~cQDo|Ec-dZ;q%pUbaVKxm7Trt5$ zYcT$F4zmMn-FeHu?Px0Uma5~y4jK2u9I3c&_KjC*T=Wr3c7BaS96f@DD0NkNvjvG) zbi;NnTA{=+O2!)surgL*(P6K%g84qSIF_1P67eSXj`Wswo{nbF$%_B973 zZUPowlzDk!KR*0h(HIeu13c#E;xY7~UzPs`I#PhkMFB2x;>pG3Z;nz8t))VwmkbRC<#Un5`^14o0|Fc|G{r{7NMG zKHMju1_UhvV_p$EkTF}j&{tv4`yX)SFa_sq&Nu8=pfWET7^b#Y5Qts1&?CP zj82Fpm)KI}B}6i@5;*0Q$#?#q5cbM1^W4%=}l1Q~AN zgKYB-LiWn$jCzk*&S-LlhK>ULtN@Oi*#iH>GP|b&>L3LMSOHAV*#evh=qeEN?##e4 z&~o0Ilk?2(Id9A49BetS$;nyLJ!b&5w_>f~=9F-}^UzS!g%k+Q(LNX9LqbiTy07o@ ztN~w0>r(}?-p*ieeUS!3BwEAoWqIy@8vOH7ED)D%tlU(q@_Hent8g@bjz~tts$y+B zrhJEaxP;GGYEB0!v1G#P-7)iS1<6ob46*$|WJ=)jQUVW(N(o#gGWO0pwR{~1<|vFFCh9}ppin)U^koV`VO zpFN%BERuXcgju_LSjqzKusGlj zc-t(AB~#)KMhC5+E1=%_C8mvtyuZqlcj7Q2VWt`efM=J$QE}oYE?zhc;*D4nqlhQd zK(6Re1BokKcyJ}>ffb&ka*nnt2l3^|E5Y55jK%+sh)Q7fIYbnYPlj$_-|1#*bM`t| zbJYOmcB=0!?q;y5&6%a`46Vw$EouKe6hWdNZmJo3e9R{CSG&?5*xnSQr-?*Z+mY}E zHw6hdxUie_UojLbgqrk^ExH17)3ma9p)&oEZLL*kGL_b!7WDkZrKRX@8QmwY>V6#5iR6E*f@Wk6;m zSy7XoVy#5}`$Sibcb5G(VEa)`c3l2?w2jM-^Ozv11b}v}7{>o8P6xm6VXaSa^=B_a0a8r{B%gdlB{SR)PPKe82A~!oo{tu5?4i??B=Q8y> zcNchTj<|`t3lXy4j??uEZ+#m5b2N3*3pC>Y^B9)4dhm79I)WgpcW;Z3Icp|UIf~<0 zKUTJ^J}}ao@L^HglVi4;_F9RlICau}PxN3RA93`Z_8wOix6d^TB=(LG3!Xmurm|%O zTh~8*^xC#f7xca7Cm=A<+_sbFKXIuzeQh*<^fLoVd7Y>jZfZOGjAK*!@7OBUPTS66 zB2~J%?b8d^sGTNj$Az9Ir0OY!T5dHI`_sD05*cosURG!AcZ59$qg7hWUs~cXfVAzr zptZilxp>p1rumFOs_>h)A&ZA9JHu=j*H{y!V#C%91p$;w=tq(N89GRn4)*CBD*NqQ zb*${Xj_eYWm8_nb)i6_{~!Don@n`+4=) zHcqO1%!cOYftVXZ7%2j<0xIa8jxc0&II&O(=^0u^CxS0 zq&KADG?mmzN8&{oqj-@&Mz%0is12r90sopPcIxr)j$D51fU*Gf%%_^^^D0afN4fSd1 z8E2Lp3zVTS>AyoWZ(OvX}6?_ZIk z;Z@^NB)idDdW(1ixO%CM0KyoyfF;IBgn9ncV-_aSe$gNvY&){CW~66 z{Qb~8I4Jh(`!`F{wt7ulKK_s2ftuTUO}%vT<(0_~a7hWT9$t{=pGixNwo{geTTLjT zb6EcMn3(|OEjES>+?Ap~GNxms+ITn4)ZK^offakoi_rr%PP%fnXsx}*GH;k7@H|P4 zekpG^e69^OeUH@G2@OT{A1<3rr+Ch$^k-LIe6il=EY)+&SbV?;F#HL_K`gn${}Wnf zxbX=g5*~F52gCXBU;MW4^j1~smr5Xee*;OJO}&Cc@HkL-$qqJj{DqXI;2$X{ zpaf823MH}>FRBn|Q2iwG`p3aXv(OwaXwKq~P<+kBlO`F82^=wL%Cx-nLbD&eY7c{1 zh43iqIa&3*hn}T7*o!uOKi-)inmtD-PQLlX5yIlRrNaDX|4fkzx2DF*J7!jiKM`4( zeAoX8@x;xz9;<1pW(zkcO?xE5hAKtovslqDADcEEO$sZ|u%vEU(zPF_X%4|>nZTct zz%vGTHr;9VgP^9wH?5|Ht|sGXZ9C3w_OGY9^abEZ;P$5;-6c`v|6XF?8mGGITLQSj4 z5c7r>Ri7{(KC|1rfe&4$3gAQ06RsrPp25?S9!nka(NY0ksGll~IQ$VC(aobLy2RBDHcAS*?d!;9pybk^Ltp_IL(~1;c%aDk~lSiPNq&8 z@GuNHbfe4;A;*hk8cS9fwU%``RyvHk$YHDYm^ zhRH3=!Yc1J%NQQb?%#fHJY&fx$@fOW1wZt%ANe=6 zx|E}oBGX&p5iao?s_ZA4oXaL%`m>33Kb=%>6ITRTy6j@A6qoFmehG)Q@S_TAeovct zX`N%Cx&*N-{SQ(ry`cs25}iLDeI~t*Dp?8V>$1;u8v(!NTk3w{(T5_AcU^9{YNLG9QW@azGSaIku#|qLfICRW&RLHAC7fDqJucK_lT!CtZQgqw8Z2ZtLt5?Z=;r8iF<|)@-^>^ceN}p2Lo}ML)?Pk+Sb%{NLOBG3&UaD{M>$Ko6P5PHFhj z;-m8N9u>6dQA~#%gR+x$+-2ckj>6D@EXcjoe8jjMYR8n(Wh^I{8@MHEJftpxg^S;$zvrn)q*mZbKQO!N_G9l(u)P`Wz+=wg6l?;aS7c1%I==bz`kJNTCSQlWpEi!f+T zcHe@+|AG5f)Bcg}TMcH=nckl`{Cf1g2itv*;J;cbz8@Hy}dk9i9|LN*-hCjB7r9tQ2>-9er<6+xrAe)#uG)Tk&xXT z|K+!hSqxYLv-n+9t;sj`)I8%Cm*MaT-`rW`6^YLp-kP2R^U(FZS$3MXj*T*mO zcyXMw51$~Av%)eNQIRf+N?3~}Kd(ySn_pJOD?T=l@rU}LNHS+#zwiy6GBt(f?_VU_ z++(dBgucT6S1%QQ<=h9&D{eWcSQKu%` z@hzq6`j51xvPnvN$c79K=w91yTX)X=Wm8E2zOhx_EEOQJsZ1wTqF&=GEq+& zwNV1@8*IHY=gE3@Wlg~wy?0=>1EbD**lnU9PA?tnZI&f65fDM!4Sz1L^N4W8kMn191P*T{dJ0RRXYl))xFT8qIqkgpoHE#(@ zUN}`SxJq7sFC;&YrEV(gAQ4D^$4^ylvyH`E`dgJM;I!>cWpjzw;8sM)wAcd9#$$se z7`o(dr2dJ_pXB9J{l99_|DqVwvPN2^f~>9cxc5VI>VN{dqa-h{@f1r^clkh+G|Cf| zX{YXkwzXqEY+H9US2phG)4R-H0fQ&oF@4zF({uoP8uk<&br49Uj@l59wnB}g?=j*d(XE>*QP zRr#$8BEhMxo&E;QHc{TTB8FND%KYbvp!$>g(jgiEdxT_>+EF|KgH~t1ZEY*ZJ>B-n zIcrF5Ze4lN^8Fx^KKl{-40)!PL2l=?w9YzbdBJ0?H(cAN;4!PEUu(Kx9u1kDI3uC{sn7kprv)grN1sHL)PcICg%-b;Qs{XSzZ2R zC=o`|iRDi!8xoC!BX(brXdJq9&w%bnL6@2&JJ-}0!V64_*I)ALzL}lC;9z`a7Hjf8 zW|ltx927?2FFXWy-zslLgTE$Un0d&og32X^;~&6;)KR`|{vWYSwe1+^+2q(Vdf#$K zEBBYV+0rL2N@)A!f;Et0IyC298;6_RtFJRCu2F$#59+&`27o>Pixx=?5?2{D>;`_ zo!E&!^D2K(WiH&`q?5&eKstFas_8kz4hy$^THN9fWlaG3HR*GpbH5d3MtZ>>{I@eA z{uelJ;}SBSMY_rxI+2}~=7(iiSUTh%c6Ph?THcFVSR4ed#N?T3AOpLUQ|%`;(XuCo z@RK8ORbo3F%Dn8eqIIcm&g-+Z9~s!j=PxM}l8FI)VOTNKORZgomavw+MXKL}jVJEc zM^E&Cc_aG4i4z9{1t`&`_MmmAdDAxqGSdw^oX9kTT+!rXFD)itBz0xJe;bo5-->xX zku7CYj36|%CKujD)zR98su5pa*Kk5z_P$d-R)>4bYY?4cM+&_L7h5z+mJEf0k6<$- z>|MwwY;Wd?@T@5fu(+8VRpWCilW8VqQa&dRG)aiRQ>Io}EPtm=tih$~fvMDIsWluI z9d9z0zYcC4PF^_G$wmQ2mI~Fl7cPE+pX7@1LQ747-wS%e(^Ij*;{Kk$Zjknm77Ek| z-pVT1p6Fxqf_o*sxmZn!$a7ipvc5ha5x5!2pDO&8xIbNvnX00VM=DckP zz0xg(uu}vL1WRLXbQp_?%{`1Z|VV!W30BLJuxvz8+|b|Ebp?03mufrq5z~D|t}9jL|E_<>Td3@*NDq*wFR;qlm8EK~ zeldV+c7rjs#ys{9Gy6=Un4oy$o3>L2I zgUkjg=9S8Y^fxfTVB~)Yw#EyB+Lr|O;035zWevFMAJao1zb3h(;4TOFTlE_%Qssg&@WFpbPB-I*51=h>rkn;yz$Q)Wz^}K%>@&%EX5=F7*~E zIW=ro@>Py^UwtU36j;&Jl?8lG)o1@tqVXLip*f!&!dPb5QcAfn;viL=P>OiSsb;== z;~=?6g|I>)L-pz16PsoMcP-X$2*wC^*hbR56>8S*1WPnB<)X>w{abs=<)qlsWyM06 zS`(Tx;0P0@)?@**$>_?{LQ1t!k3K~|RK(RlU}^9a+}gtQ&S zOEr+fkmc+=?&Hv$od+xR0?*toP{$VulEi9mV%5DnM?wAHOZqj7t5zw|+pz>>h@UxWZk?*vY)f1v&tr z?WqfzS2r3E0N7|{wofViDce!-@J9LIcqv1;w?cfTJuw$h1T&N?9@?I`DTqjgVe$V= zKGl-$nM`~jKvSm{aJ1ca2NMfysJ2Aos|%w2Uy0Se=B6qbpG!(|O(dBfnJQakHMevW z#@BbUSl?%b5@V?>lJvP12Mq{h9XoS@`@cm^bj|ic7 zE|m~boqRXq-K)Vzd7V+`E!3d$0Pc<+SML{%uh6(Lw_lST#w|j)Qi&v>42=i$TENWi zQvmnTOx{xeVSI(E=n^cgk64n&e*_TB|V z^1J9@ezorvETb@xev)LVma!0`a+XxL#_n1R0LlRP0;f`{_eX`y_T5IghSH4k@&X$$ zjZ~NZVe4ft8!~K<8snAqn*c)n!I7@U+FvNtg1QAlJ6D&rZn(Z=CD#np#TK-EQM?bq z`>??HjnVk~jcs4_iSnoTw8e^!E>@U7#iyy%ebHux`BQvahlM*7?ueGZQoq#oqTH7M zP-+Jw5MQCm*ef)90KL))IzWd`MMo4ad1_Fz+K1v+*56l<-`XXmuXe9jcEPlr5X%0{XepS&?i52 zT7LP**B@7viscoM9@(oPzOqL)wfvLo53EX!&O;w5KDu?o8NV96msFGey%iEYk=yd9 zi?c=iRU`6tcmmT8l;J3HX@{~U?|p@zXmZh7^`mndbd(V{2YmT?Mqa97`Bp`Yt_qvD zdE$b=-vT)k*aO+~4@eNmo=)ogOj4)HIjJ+KVImP3sq@a6AW&XW;m+g-jeN zrU0Ex_=41HXz+)A{58>OzPTm`mF(8_?w!oqlQR8`e4&2w(oOS>)4KXO-ufwXQKp}I zdk~9|-`e>(UEJ>MII_i5mw#2i;eY7pElfDWySImqf&}$ZHWWjbe-TXtGl`BbTwr6< zZ%y3zOMWnSNwF2Xb;C7(TzH>lIqs>@oI4rph__;ZuO1Nnv(Rh^%}y$YEyar@`DG=f=s0RXV%rIM@>MaOXD#{k7H*-<6S$c#^$mc= zyrGMT20Bo!=jpv=kmx+_tE=|o@A1A6^AvgmZ|IlYwD@FAt^Y=sxA??T-K2JLH0ybuWkE$aajF4GbZ`dH%KI#_ONZ>Z^; zl=RF}k$k@Ynp6$-^$5-WlwnCe1E}A!$1DP4ULaL98_^Bm|a( zW?#2WV=IY-KF$ZG%yjTl>Kqcu7sV$sJk$G}D2asrt*QUONfn-np>q8=mrD9Sl^V)p ztn_SKF+D@!SRv*?&j!yCl?18OOyWRO!tv-E4-GMZ7p%AXC*`(&%p zf$N$P$3X?RP$KBGB&F{s$I%%C}fmY&nzD}XSN zqMG1_)I1lrsB@gg~N-D*`p{oSwnqfbx=;;N#!}_qeKpI z>8!Nd5}JK8nZoVygNe|8HUOs428Al55AVlP0ARelFz+du8Os2g%*)8H|;e&M5iLjb^Ui_c*HY+hgRw>T?S6v zQbM570u|#5W)l$Tv3&MO`mYe_iH8(89+Kb5O2f6-t~4^9%0+8YSr1$hps%>#agaDJ zvLY|lAStq-Po(@`*AEoh;fI#gH^U$Mz#mu6IMAhugN%#xH9l#BR!Z9lm}Lc6nFjJC zU>0TH+S||}ojNzV2hmxS{qq}^M{^z}WGrAB%F1A<sS%r4Id;iS7ZlzJnR?of4LhUdb< z;2pY-G_`at@MLGVNqoCAkaxFyfs7@1k&|5^*--p{5+9f)gPF_}TMXg=>0VWfRiSJ4 zJ1(=MPuZ-n7q^+Z@P6`^uMH<(hG~UHZebS+d66;74<{{0I8~AVt8LqvB;n+(nn1~a z%{V<^_B;aU)cR!_%kHIfWZk0nsrg48#O2@SwS;` znt=r0;6zbSzyr~E;0bCXtO^8YMtMFTuq${j9=qz|x`^%y0vb&qA%IuJ3-JOk-WXIo zfPhH;-|BvI1d=HHm-YAe^Z$Gx^IpF`s;jH3tE#KJrt@nlv>-M0QV8cbtym}4_m2CG4KmjcK8 z4Wnm8-0?bCtH17|Q1i&eBfCjiMXYOvDY+H^4@R1i_OZJNhVg-kunp)!x=Pg4#kjIe zJj>OykVpOt`Z5QH%jfx&ZQpBu2h)ga%6-t3AvpnZkj*M>ceypc3i+9KGtrYL%nqi* zpKs~RkH|v-#``n2V`PYAoWqY%SzF372+T4(tB?c~9zF-`06Ge!c`CZr6tnZ`5Gs5lC%ucaEj=hty!CkRWUl?8!Hn@&8t~5HQB`G>Yi0R z>DG#@DQdFW%5)2wWs*~sE$GJ7w?T3${!whcUTm%{F+YG)Xx_kOVtQ)3gp1=CGQr30 zEQfVTVRxD{YoR4=W7dkX;aMyi)R2bw+zphztA<}FLhbG#)}&1beBlGYq(E#wZQU75 zu`ZHvI7I`TO*unl4*unl4 zNVb1*MQHgv7r#Z;0>NZ#c5h0a-GdZAvjr|ayE7-t>@I>?Grv8p%x_C^V0PZZPb6md zyr%`J)~sym^7mNcw@>4W*mgG_KgiB>C%Ec;e1d1*$pp_=*04~Kxk_klsXz3o*uy+! zLxZIs0gxJ&nn#%8_cO)Q;#MyEbdPU~vVo)IwSnkm2E{fyK!o?WD_Y{P-Nf6@*#xQ^&@cv zx0xZ#qBdoe|mljr|NwU|;_+k{Hs(;I7j#6m-)MjqLz?7XnmHM!wO2-gLhowyx zqpE)CoHkkW?F|??i4{hl+?+^VOb^Kh4!WKuAlaEp2vgkr84)0O>YVm8l9-ago~N*U zE9#(xRQG#PhL*r22D|>65i44hkrBO(WE#-w%+}6xDx^VCYi{kqUHu#(u+Em7JY&8) za_?x1H=&3w`bRK{NF@ph5)`77Joy%Tr(H=^4gX<1)Eu6%e+Y94yg=3wxj1*){$c>q zoKB$Gfq0%)#50c|8L@L}dLU&4DJ4@z6qV>R8>QAcvgF8G!)B{@DyI?=ij!rf67vfg zW+Eag@y8XIKz0hG6CKB~fo5yTozKcaf^q;(*zaB4*j0(OitH-Jt^gW+A6uHaA-doP zp^KFm6gEX~h(9+)j|U}YWAqyNSr$EppdFCvJi&f++b0lYBLq30bxR;kFKL&WVy@1w z;)+r>ebZwGfo;Rs>vi{jx9NRf6sh|1kM#z#u!}}>v4l$f7d7=*V&5P;&fBrJJjy#G zrl@m+N2pz!7#fGAVOG|=$!G+3nJc&&+f%P-bM9IhB9#xT3sX)8kHJcxO9eX_VKS}Q zcJwsY4l{=GWDoAAs8jD%2M!*+MpGjlzg3(w5{@iWNF`Bw zWhj4PmeGfGqV~#&B`T`3Zq;5HvBVte_C_xINGefgM(0dzkIvG_I(nb&a=K&(e}*~l z?PPDXcYVPL8p zEwQqp`~8xMPIvCq_&$mvXNbGy0KWxZmHyoYDu#;i>}?@^S4 zcB!nAp6`T$A|ol|GWdXf2D{lSl#|14`!Pmw?e}mpiRJ5-tlj{om?l8>?yR9xR_OAz zu7`y-nfiTid&3(Tc7Knz{r1^PVms0#?6;y-Whb}?nEKtt1u{a;YQNDR`W$|{h*CzW z-Wk_gvLsJ@DmVk}*vjHOWV_g?#&c)BtKU^ay(zMvRg zlHHJd2NzU`jcqC6+qgmxg!zW!(f8PU@~RZk;X&@W=QX7?rk;>ZODEr}X#EY5&0;POTbOu?mx1KHV5wPZF+#`77D?262Mc=y&gut&ql|O&{tGjHYhq7*Yged5QMoi_=X~ zaNLZp_(0Yu2$(hQL53dp%qpk9oHX-H#67d!AXz@UcH&M&PMY-^96M?D!j~JHoFm?e z!y}Y)3RTJP6snQ4<|SqgHz&NxQMB*n93eqgM7I1AIB}bjGf_uY+}sUqM{KYaHy^~) zBRt_ZNI(ilJKAzsDok2R3ekSW1Mx;|`s+vIt|C$8$4rz{SK485U>=Vgup{+!Ie`^a z+0QX}9I6g{jU3M7`JDQ)29DN_ich>P9HeHf0O2=lu|`3W;%`3oqm6Qi!0y^*0^KFy z_0=1j6oBCi$s#^lC1g?YXx5SKr&~D8_#}CD1RZ(Xg`4;?8tycKTb&jQDo0CoW=!r$ z*g8g?9OEVl9xoHPFHvw`D{x<(4EHlHYq)_q`aCr3o_icBryD*?y5Cs&$5zhfu#ZID zc}u)x%^zRFOph<~`V@76+B}ELI-2>saxTat-CwCQN*FL=6MQRIA4ETt^cPhH>WIAl z1VTWlR9CKi z<9cd3CqsDd^=6!|*zCN>a-_pF0El+#+j~uNmL}%`S+Sr(WrzEO;Bl7fJa(xPynt|| zyvf-G%Tr-MCMI%Hl z=a|JPrvy$xr-Z!K-S1yGM?s$^*Z&o-N;*aRsStyGsbj7>Pp%2PU`bqG1)`j##q}xN z!a$a~;wpZ)tgUz%zbV{vS6oGtob|Da>!rmkXKzjaIoj#6>~4T9k9Cw@a-)TPe!Qb< z_7aUa^eMXXN7SSzak+FE|KMabEUcx!@i=sHxM0C{ZqPl#_UCpgQf4mv~Y2g zXnNJ3w!?~n&Bt#S<#uOD_Im?0)s5-Ky;vBkkmv`X-CZzi=60 zE4ASs*UA@suiv3FbZN)_bZE6q$5y}W-RhUjR=;#=^~*l3e&KfXmimL)0Q2U)zE{1| zM0zOptPgrVF7|!mot7!DSkLYL-C2sffyMeB&G@(*o~k8DB=z5-rwZsPB=ppGM|w*8 z|LG|{bN-LhQ$R5#ME#VS#?d%~i|&T(txL9DDqvZIxyB}F_k?SG?QE3yyllEzZ@y7%*1yr{e{+p-um6w@e((IE^!ENY9e?$jG_$(ONeiv@`a7^4 zo2gnP^W?RSXnb(D4tTR=QP3Wgi4&U?e$y%HP*v}E=U4H$+7sHEQ$9=X;Kns<|6~2>lg#=XWd)FZbJi zFSS*pLwl+kvA+=d>P4ZQ8g6C&uKYbe<~sb#4=wi9PO6c^k6C`t>xQSc*tgv~O@i37 zN#(Z(3h69`bnsbOhfb)LS@fs+j~gN@SFhNq5gF4pPQ&JnL~Y-)H{$>)aM`_zEl zFC-Jz`R0R-O`IXm^sFR*!+dFfc6V9)6upmgfm43{7{gKnV-p(O8 z=<=V1F)jRfYIYu3s`9Us{A0+kqP)K+Z&%105^DO(@>VKu|K_by-Y$^0M|qnoZ^Pv6 zZr-NK+hBQ{!rL|SHi)57td2>4d%bAjSzJ9+KwT&zg@y7f z-}6-1;JBr~d<3JN9k&;Nt*0+-$IUC5WnDv!`}1n@YS`&l$d9+Uo+GB|O*o2z&*>df zQ}oea`=k$Q(B&^&gr-|%rX412dG~fsfyR<#J)u*j&>aB5xtHp3Kcw8|WKGIeU+$ow z5t@*dQZ^CYffK<8yL>Lx*r9BYC=#53nvgBZQs3gN8%DrZg*S66VYj_-J?6eWxe{gA zoA8MNS)s;^@;Vhkiqs{JKbG2|oa@$a&Xc@zLN{k;c*9d^);Walatl`lFPzur4W%|m zZn-Zqta7T}RCZkc`|f@qv#El{4R|;gTv5~U&RTja8SMeUNI|ql--heofekuKx^?6-ex{B5UPE`vq;n4uwu%bdaY93w2JnkHFdQ_oikQ7I3$O) zo)&M;d=jmWmA}!Gx z_}u{>g0&`tL;2?LT7}tdey2ap(4)$$6Zv$Rg98FS!gE~*X zBy{49q~c)3MuB`4c8L!}qRF~csll*sPBZET6iRzA$^qHVu{7m2B4y;h%Cc)iH*<-9 zxJ>zerN6q8nPYc-Csj6W`#i;kqMXSWK1UbdcuN^n9N!9R!BCdJ81DE!CYa=aiB6^f zeJREuOi4S$oRE5SYebME*UcE=)-K8bJawU=GyUy2cz~ASja(&2v2V_5p6!YqvlWpo zXkC>hbu;^;-)(C;&A#QDl%U`0cT zO*TBsnh;}=n^?5}^oGLet!#yY)BnVSU`&Q1Q@0Zp^VEMZGsr!cQ&gm+p!quI^a^QQ z0e)&dIdwoV?|hYkIFflKa$EjsX>6h_&)?M0Ps?d;DGj*@F0>Fx9hV2#x&mp$Tx?$l zoBlS4mwBiIHH24|ONdV3#p4I+4f>W{zcB{?!g>Y&V(FXR=Vc9lw1I6B;Xlw&`4Ito z6473hDA1{qt~S zD@xx1S>DjMjA+mrkR9DbCz*ohOKr*BtBXhyxtPdf-6!V_S-z6H{60M+hU*;3Tl49e zhpMa|wyyh#bTc3$YHbr7R!BWyP?0%<;m(Fz6V_w zJ0a`(HN;efC?^m$GMOlk6$X$zLYsueTIuh;swjMo>~PzC@@x6wCK5Sk#QH0E-NZn} z@R}H*HB8H9)jbEfL|2eEiGEf2`AOwz(jDQ4o0W$NkCXCuv{3%Wr1IdxEkCMR`F7s$ z2~vJg3+0a|%|&s*9tVQgxtL9t64~-q;GD6TxfA)8*Jv7lgsu|woxc*@1)I^9fI0Nl z?C71)5c6Mgsw5^3+bUpaof=sWHLBrUlB7s)MpbkO1(WcjgLtX6D=|}b9TkZ>IB=`0 zNONoRQj;X9f{e6G9=(bTqLiOoxsyj`MiruGq*^-r34ef_B85U6iCMC5qBT8BL_?|ib>d>Tk*0)k)7 z2yShR@gWxMyd0TLcAxZt&>`z=k5@M0Rnz2++`-Tjz7NUE9z|{WE9FST=1n42M~;9j zWd;-Zl?yrtC@o1%+vA}(Y*eTohP3A##j4F6%LPHA>^M`I5L9EGmM2bIrlV@0M!U$v z9^8AzA=o(v6ktF>+Fptynm4pg!6pW`F6_Px$idK9Ut*2PmMTlUbI0V!pFH`~%jre! zl8)1jY!TjPY~G?&fbjtD?8irLQRY@zZl3OX>5uGAa>CzAKW&A~#Xhf8t4WC1aW37L zWpZ&fm<1h+7P4H1H_IrpUQxDwSTp_Z30{!`O!;y3yY3%IQlF=3B&OeO#-u&h5#bgkW@F!;C*#t|I>1}Ma6 zWMZU{ryKI3m&(kVuYx1W%`1OgqQ|Wx7LzD~r#oI&`V~}(#lSlRi@_5mY6$1gQPsb9 zEI;Z3+e?u#o%(s8$x8R>{2!l1{>OEGiR#XPJ`vB~NAf>Re!Vb!2x8RKhG~NYmoxNw znfl`FKLd6by%9QcGK3VlP)UX}X&hyS1XHgnSXx{Go15c~r<(JOXTPNJJfKnlCH|<4 zDaQd*L^tJ7sXHcSp0n{?a+o@vr%3M)$jDjgBkTGLb}w&K-N_@)gYN!i%Qfy^gHQyQ zUpy(rKXzW64=$(RjHlRMf&nQ)O0a5Ypor-4o~Ch38BnCZ-Gy&?UXzu#$2-D6l=SPI zBXdi0mFRqyy`XhNfg5`)hCK;E{taNc)#8EdjhslW;`_*tD`F87({(5tQ0VlMT7{Cm zVR5QagbmAJwy2hcWE+l;+Xn{ZuoW*=4YGp03XRmMvfXc(cgT<59tPFFD-75hx>wbe z`4>g*y$1oe)Fi>ugB~JUjTxQ|okQ)A`UQ&A?|lL|u=LWlig2KqIi%hz!#RkdXJJ&_ zUD#+jHAQ7n#7|2P__a#TjmdV^3*r?~wYeVL8}D=JOw&lWR?^!or08t;O#d@$Wm? zOZvimTD6zFmavx`SG!yG61P3S`4(Gg1Z~Gy=PXke$nm+dk>3;Z+vnIguF9?}mYJMV zH09E4F~YbO8JUH{0TKIDw(LD5im)?uEDQ#!6dlvBugt4 zmZ#y77(ds(BF*3_Xbm2?ZcFeiQ>MKZ;CTo(&`Rpgyt1kY?Zd8BH5&!o<3 z{D>%eS&`WcL9zJ^o_e(g*Iqlqb$k+BUy1}3hwHu_=2uJOm(d!0Xe@2PH(i$Smd5dN z#eS2<@orfxWndY{LAwm!XhbgXw=;c-DzO9lguWUTQ)*#6U&m6=Y&^HKF2vyaw^G)A z34N`CFSiH}qH0U5FNP_g<&WFqVmKH z94W3zBKLu(dYMrzjo&{Mn;>>hY#zSzPr(xjjNcu|lL`8Ipk?~PPc8x7Y}kB@_~N7~ zl0h@_7q|*qgUcIZUop5&R&Z&$`VQuifNKZ-&JbqXMfvA=7%W4g-b?|mITroWDui(<-w*uyoz*8&Z z*NmS!NKq}0A2!dH`003=;Vt3o3nzE3*`q&9S!MI z2)1DE++;{Eq|WrmF#Q0I+<5{wMmfEFin~Vi zcTcNLZc#4W_h9#m`Cvi?a%O< zbOv{sW=v-73(^_y6p0bkoY9n&e!*%l@YfY*%OHR}=5>xTzOG;s5PHjFTMK7`iGGyn zhE554mUTfM0jV}pWP{v)B$i_OWO$Z17d_dDGZDmLEBxIk^)(+nA z2RtZ)g@&OBq277dg(G^S^xm~wv)|}~nGyRuOi@V%1B^drqTN*w=yszgB)%h)4TVjM7tGC1Xb`Ql|jSxT+;VgvkxVG zPl7v(bwHJ$l=S_@MEQDFRrUQsz6Y(Fa|YS{ev-~Ro1Wu~?1D6v^%C1q0^g!1$wpu5 z5X?+x5!k8=M-y+(!2-l4Wzg4n{YQe;pvnD%TOffTKEK@O|BMjsEj-P6)@^bew4mn&LnfzJhrh(0+SoMfGI&MUeE<*>H-Vm z1&XA=TnZ!+yR@hLuZM}h95E}z2V0#v$VP2pPd>+$*t=BVU5T9pjgdft_QcsvISZI! zKfea#z%_HYma@Q&h?kb@-1|4TdjXTTK`>V_f2UvZt^^jM|JDEwnoQ)>LAGC9pwV7N zpptSr)_a?v+pxM21mU#oLH5u;R!Qur$Xt~=geXpgM35OE4>=sZoCwVh$&t6bP-Ci` zQy;)CIJdjU`Hh7`(Z>O<)i0zDOlI6~Z&)hOi{vxJvh&{kGPrWTy@fO=7Xt>Y@|=KG zk~heH;rPLjFdExn!o79YHog@`>afB==FpQ1ae-wHiwMd5jZNPR)cnQ&`m`*}9vyiY zlEcGUS?1!09`hAF^<)cf;W|woH$I@~>Ar(v^mNz)$Yc87 zu|Ki~yhS5&`s7Dvs&1joC}qdthMb^v8iBVm|025({C_8CUThfVm4j_uvP&1U33fv< z+dz3GTw)d2yh`yEdk}QePn?hb#BT+^ukkzHu>6BLY9BnL%1HGWV&&UjX!mEzNF~?5 zEWA)4A2Uxue*I}czClC&!u<;JkGsVnzly2pyaUB)KBgCBeC}k+%kFd8aXMaOPSXA} zbcdPrO_+%c_L!GaAPp8Pr!#YrDT>49TLz~H@S=HWIjum$44+KfvAyJm?VcF2Bu1AT ztx)*-J&?HK?@}jDb=mQw0_D(1O%5a|U5XxyT12<*eO7hLgHdkbGlSIx|NK7Ht&DiL zW?;E;nqd6SR&?SdeiK@sCwtM#OLfOi0k%<>mMfI*f?Rp5fXpNlm<23-yth0Zu=18T z4@%vM%2}6$z7$4WPLO;cLnH1>RtGvuTM7oj(>U4VOyJ2-jmGixF$aE}p-3V-poR-l zYmgG~h>1Q9ojIKWX1cOBC;9X4_@3X)d;GHLKllE>F27@YJHGD-ubRmBK*Q!@l@)KJ zOqseckqQ|{=K;PUh0UyzRQ!OG-9;F$9qZrmUD`V)=IkSKhmK}CBxpUZ?1k1|+;!r; zRboyWskis)Bm?=AB!w(V;*8LunKE+aS@|oi3t+rUWd}vwbA(ZH^QM63oyhy%sdtK$ zVHfA*Z#vEH(wiOeh67!>!uKv$)FJ1EsCzI< z278EhTJktSvoO#1-Na5oPo3c#-^&|rpioRciphVa?@-1t>y?X*lo^#H<#5t^+pr8) ziSg`cy&mvwE3XZB*iR|UmTS0+vwa&TK5N+h+u1|5OVQ{v)D2!H|5zap;br{Axgj2( z(68*=Rar&8hO(ldFX#HNd75~lxvHp#1Di8Sm&l#iT%{)-w+a@vft2UZTAb3#GB)7a zV0gYZ>|4@PoYxu4lG3l_zI2RcgY4kZh`|>D_jP&Z1#t;*NiemLjo89Ggb4HOY>w4W zZ9*Wi2d3IXeuCEnbq_9lp+Xu+&pJ<9hPz0s{tNsgqgT+1bYUi}=IEytt64f5R+Fm6 zsOwgq;f%8m;77?4J($qWj9J=GQ{3_bCN~Oh7JdGEMV<@p5+S857ZNCzh!_Ue`esC6 zcsPzbqzQxY)X%_Q39@Zo{w92yS-G0>n-<8AOV0s|aFDMX-u_z*U-bIU0pD`J_pZgo z;gvye@p5nRQsvuTmF0V<{B7C83rn~XqjZ^}eP2(viVlZmC_mVs=ZioOcHpiBe*^Q_ zgg+W`otRU8v|pqIU;Tt!VA>Adwd;Y1#%O@1fL)fEg)eKSAj>I)#|F(OWgY|wULwR_ za#YXUfL%mYzIuRM93Y~QniOg^l_lP#KX$N6SIB-MqXASoc>$ku{a$9h4$f&E^z2jp zQvyB?$VCy~4p`fcu+9DJK>I7i?qJW#>g)VlEf#$j&Y^kkv*6sQ8knx&V>PhinAeNVkOyXQ+2#W~M@>S@xH zjvF7xy$$iFk+>*^b)U;i4BwLLC&c)OZ^;eUfuR8ZHh*GNf0=1qvG~j!s_s#RJlp_R z0{)LJDQ_}Z7Vlk3kid;_z}mvOwcm*MmG zDu0o*Y|^sJpCzq;w1V<~lE#7gfjQ+5^Hj)FVfo!W#t`w@&WPwCa0PwQvOYokO7P$WHYexe9HPcU+4y7};Lh|_`EtR*A{vsr382}* zIDu`2R~SAuBHqYX@?t)yh9`~;5v{uXOEHEy*)WEFQr7Oe_EAN6;r(KaA&Ujsx%oaN zvwZfX%0D3~|1&!O(0KkebI5-h`IAHn!`#A!hW)sw&d;TD#6ZY0dTcf(*A>W06KcvH zcTBL9IJp7N04RE}`n5M-@bpt(tJ389tgp;J_p{r@=vZBsu>gS0cey3w8*a&1moE5Y zA1keW?eCT1HV3AoD zTDQ&9=nt()ExUsY1B}Of7}P23o=Pa?J(b3aLYG zzzdSx-zsXKVcuRuk_$e~Ma40f&Ah6H+jwi3C2$*-*RaOHS?f;CR%57L6cP(84!0SG z=MA}6&^#l@z>h6i0#N?5KfP24f_5;P4ZsArNYW*&8;ew(^XGen-5rH68Z=8YutsG$ zAHnryl8E=AvOg>l)7ExfA1i_Xg~RFl*@i+v4v#~e25fC?*EV?F_5F>n{Gs)pvXK&G zR5AL6hmub=EWgfgayrSDG|l6ihkM6QvOaufegQJj=f{B81^_ ziUI6Arh)>>KT;_6;wKaZrec^`c&T2>j{TdW*p*o^iXDkP-C2Hj62BZ$@siXC`}nbZ zKasTlKjd#>sk9#w z=1C2#m<7(^)P@l#7p*cI;ce=-(}3NxCa@sJ5=yKg83F4KmtmA$E-Yg68qQl9 z)nCIamkO_xwXO&50^c30W_n8OJ1Xc%VDe(&=>f|p-s?BG)$P#ucDM0ACe|NcowPrQ_7$|r?N<|Y*uX_H zJXE#MIS^J|&wGaDLD7=-eSuJQM#!JRW#B8yBXL&!Jxt1P-6peK_WFsWE3x;w0UaTA zWm4oXH!5RT<8U#V!lP&+P (OvunyoPF?iNI^#FR)hv;ZUhSZuM{m}1aeABKP)jf zn*DN1I{gm#D1iL#!BpG1TiJ%s{sO^$hDy_P-$Fb zhAw*1yK>@)W`sr)TSnS1KQ>@RWVHzRCd*G*_aGDq&d_(oURB99zOr1Y=$+DUxJQZa z3vc9g2GP1*#t=i2T=-t(>zC`DHiKk|Ac>KNbCzFAu{=(Mp?Gsy1%u2phA{T4ho!;HDu@aGn10~`=Rc;nz{bvrb*smNiVM7w8RG)O(KVeVe-WWo^~LZh zNyr;MLu7(PXEuD7+!yF$0kCNC8vA%0HzM`hh9*Gjy(K3@wG4)N9zQyW?l66yeH;PxQ1k5I4|%Edb6Yd z!7nkv?Jk?1ym%LcWJf@`s^H#V1RtNgUI;VE?jX+mlNXCa ztKY8J4y~HD@|_7RR`*J9P!airWd5a8H)fcTt7QzVO8IflQ0AqwqjvC#*NV!e35WO# z0`|p?uDokUawuxf>L&Hrv$FZAS-a)hD#MQCsic|mg?qr%mru7GiqnCW{umc5O177A zOp@|7pMHDj3g+r#x{P+Xv}g8`8i;tKa!e@Tkh^ww$8$*80Znz_Kp#es9uc36tn!5O zOtEsFd6Fean2S{0r2KQZ`G&`!T{4~U?EU;qLG3xzq&$9$EL8`-Jko;m!tEOg3LpKF z@pDpG1ZBTzv#d63(Uh3Aa^f_|WksR&qa|kO!?Y|D6P0YJ#OY?9C5;U+Kdpgj0?g@v zh;|?|8qO*=;Zh7Gt;8Bu7_f#J!5$5M>y!Xa`6brn1p#YJFNr>DNUeobUm%$?oE$_u zCToFQQW8cCkjS+L{)hn+9#2lu(;)L+cr(`U{~cVzMOL_=E#JLD!Ji?g2GVTkQA4*VX8hsfLNabut>v)$n27#p)?obVXNUTTFpg5xi zJ)d(oY><=C1>W#{I!LVs3qm$G$>fy46mh5gk!?1tkL@Yb4NLZ5IKSAFY0IgZA-9+? z*`AWF43AsNypgX3S)rQINqh*t7i#QS)-BZ7#T&VR9>B-FkrmRY@APbMq)Lj|+_zC; z{Ue9Z&i-KxJhhVPZTVD+v027J{4D}j8b^ddQgjSsjy)@SGj!0bf1Kf+TdUkbG0c=5 zE*%2qZfr2HCxLo!rf_6g)ST^T>LV|V`lvw=FWpE}u{g^S`&I`@l9FB6YQ*UhZlySH za@V5&5|iWYSj16C>oH0${JtvyTj`%Y)L(RjuG;)MiX*q$c(7jb53>=T=dEU!idX)0q!2)ceS(sc^ATexZR( zE|VgwVG6-z1xCXx#{oQTUx5=07fqLj!i%q3O+M+n$_*sbq96bFBa&!57Tv{ z3P|0xq*8Yli4A{q{)C=_{uF)v&`nLdL~mbaC+IEH**At^Z{#PzUMUCqY3pS&iMAw` zq)fxJK`f8ZS2KDk>u-b#QivPH$-?TjN*z?9HImuEhIwtq()5YcvJ-i%mu4UjMH_~7 zbk1M=M75%`7~ONX^u8p;d51*{-NpHu6~|nHP}*T>`cYD4!;^y2F3#DL`0%ka zQtj+bkfHJ~xK-x$YQ`x=svC_9Z^cv{(D{fWu!Jd?7S|fYDTIzk-c5H*sx9t z9B@WTG#AFC^zG8F^VlwxE&iz@=BtZmyB@QU>g#06Rsiy<0|sLT>(nWGaLRP{wbO2s zeLe!;Ok^V{D-+$FFv;smIJTxf27T25Z*ZBLXVM3JuD@|_`5gN~$eabCrhUep3j@u0 z6^j6pW!fSxd1zWQ-I%=P1=J8FPcA3~0K;3dILTzM(sW=u1R%}>QqR8B)1`SmgJIGB z`;}1T_8yO>}&$e`)(|ny>0=eTtUCV_vSfA~b zmCSD)NDSXze(S8fV(Z)tzjad<5#c$_FevAeprtpLg67%Fit|^Rvp!%!LqvN;WYNeE z>Lnt3{z?$zgM2qul}`tH%UDghT-WAyQy3GAjix zBs?t`y3(e!UZ;dn@RAY-RNASFh#;wx1y9pFbmm(A;bES1dHeogbTNa137{swJ!CZy{p9ZVZYn_3plAPs3#KttM; zdYscIh_u;E{BG^;wj0o=kbC}rdig(1FO_T_v`H_StZBPXF9+ZJi|J*+^j7HQER;xx z8Iz=_6gwjOsdEvg-BXdSEre_;a%KwW^1|Jq5&4bHpF*9ch+EQ@$ETo>yUPUhp;xpx zMfLW~-s)3qPO^Sh7La1-38SW1ta<^X+4Qv1M?Ee^;)v7%Oa?#tfO=x0)6i)3Ri9ty z0)2TSY^lmSmcNo$ZaEcrq`jwQ5|3l~Vo-cdN(ba(bUwQJqA2prV5y)pglsMPE6kOoYbmDqA<+?*+Y-M-6s z2o7Qh6QD^`=I`d?5tLj?;RfFdBepUUP?7XY)2pG6)}U#RC(W?SrzrHqY9FjJDsA45 z4CSS+xI%CVpIif zbQw1nzn5Zlk7GQJUl-$X^v*?ZYze*VT1D@xH@1!5pR8u+z3jJ2zv=8``~vzt9UZ47 z1h-DVSC_Yq;J@C{48gmEU!hKd18Mpd@{CPZnd6E?4O8*5IA>NArCBGeK*~d3^~~S& zM`Ya+n;cVNtV&n>&E*Yn1D9FE$kJsKiMj4lXN)9cthF23MoSp$B5hbL&G-|`+Q!(G zCK!wFAMMI~|1aX}?T7XdzSgsIwQKn5cthLxI&sSG;!DUVzW%61B#9L&`Z8zgwIyj? zfKD`Bxl6DjugBRU*pa*x!79;O7Mlcl34e{PLO)Ahm1vwTp{r}F%l(VD- zB|%^2%l@Y88!>c!?vII3eybzeSVpqu<)C>n>k3sTlquX)5)#u&(#%Lt^+jm`dWve< zCpL8p_#9iSmGwG4cXL!hr8A*uiIF`vIcG|pQo(D?PRZ6xkWw<6n%ZtvR{8;WC!@c~ z7x1nah*{Yysm8XXs8QsTbzUFeRq|A9vLA~Pm(gfRj(YZI$2f3xH9++BNSJYGjx+|Bv%*=22yN0(cE!{c$pU-ry+oPsL4o8vL` z(zeGVeA91uJnoskXU1bLy4!A!M@?zl zOx*49xa8cn$79Br-|%?+BeG}4<0X`~-JBn94R3oq(y;&jX6MHN;XN}R$Ksx|o8wV5 ztnKkAyZSdg9=8+gbx*A458<4%o8$59*=>)?%s8v<@u<1{H#{EiPS`W!@eNAbZjMLVnQf0pZ|uL#`BlQ1 zA>o0rJm&o~dHrm*_;+>@RW2dQrw_*g<=TfAqWF8n{1?PKK>IJmy$znY1@HHm zHq~+0Kc*G`D=YoMo8>%!a+-1duj0NQQYMCd?U#vb)|A#z)QY#&Q)rnjq37^c(eujb zZKG!!cF`pCwCJC<%k-lhgc9@<^QaUb^kbv;wS=J7>F3Fkwh{C`hRP%a zCHx^0^s|TY6Zq4A4?ox7hO=wzFSiPCwPJ2|tg}VrA&@RXn>f=d2V=+5&o6GIpLSVp0jFkrX(w+^%*t0u zDO65iTezcdl+zQvkq#ashh%Z=z6La^N6s@Eat42}oCz+F)5<|08S4ZG>Fxn#!ht@+ zm|P>hSmI2;%$d|X?qA&_{cHb=`xnFyXIJ`nb)e1u%^LYX>EGeyzjXYrM$g=p{@rP` z*}qE6qW^>O8(8*B`*$aPJG;`qf1TQ9|2{nbf6~9pZuq7B`xkoYuJrGffo=BhC(NkL z#;>LItxaLk*8aTe7)vuD5m{-useFawlH#Q6rJGv3)B?A!N zA(gl2j6SDWqo=r)<2@f@*8BzdY59DQmLGT1e?R7kul@InuiMGNTDkYfp*IlEpMW?iluP?Dg{_6B~_EmcbUst2f?i#-CIJs?nEgJHF0AGh)xrgx8 z5A}A}@OADEUUjdeQg}Qhwzn&y1HxlIzI_*#L% z^jF7MpG)=-zJe&kyN0hTPiPxo_hUf))$x^Hx`*)94F!4E@O9$xZR6`o45Gg}zTUoQ z58-P)+TO0=t7D(G@pU2=)?Xc8k8xk{9?>6PK-=3je62pNZG3gaV*9J(tNg+}gs(f% z_I3?l|NLXy_*#vH^jF7M@yI=duk-N(+BJOLl;1YK{)xr)SI1Y^3-%DcdZHcg8ombg zY8ziSVS@eD@%8z6dkA0K(Drr>Uk4uBHogX7fBn_*HSgR#gs)f7_I3?lUmo2yz7E9x zn!wkd*|f8Gdh}Z9 z-v$2vN&mhW_DlQM6L+Is8Nc9BZT4>h#@qkF__hDV{R^TE?@Ir!KC;dJ&BECFKj`1# z=ls&~yBh6vSNeBnk2d>PiE;FQ(7%Ca|I+^5iMF{b{rgv5oBjI`V`j7dwY)#v*8b_671}>LEO6k+?_{g{Is?~`~ud?Bm}kTzv4RM?BJlId~p&EI#&9K zA?{!+7oDH=$hjZ=FKNW(cKbFxauyxl=7=}+ZPuZ-){|e@ACu5A%DL#5^=Ae8*{<~G z%fs62&+q^1{aJYCF7;%&*l=H3ehWe733Y>Fe3BMyj zLXZSPlkx~-6q$`rBJadDi9F1sH?oe3NFdzD1eM`loq<3hk?H!ekjE+Nu^89F$Y}j2 zHH_lX8~H9>YAEi7zjpy_sK`3(>P2VBjj)oh3Qb>38DRd#H%%fG#m`O>a^Y5jTr zbK?Q6-RL_NRFz_>VZjqhU8rZzTmXs)qoeL!R~}Wf^aooa5pf-I4sDqc$z`cgj2Yo( zE>i{Fo7gL}R5rQn*ow%o)~S2W1$Z-3rBY>t>(sU9I#ueo)L@$tsf#c={52zTW4on> z+l5Pth`^-1n8bTbe16{|1z+8` zAFvb=7gzHy`vsjuPGCLe^?$1?xHaf8^uB zQRHuUjkjywr1V&MtKx01Kl1G&dHXjsAaw7P9VoF#HaoYVP!Ka_7< zOs4~>u*m#QMJc*{r6&JB^wXL}>cWw<7WLCotie>b z!M$~ZVb$P`xy%01W{-pG0s zWT8vvlOL~neDm?Z4{hz@4PPaTp>;!=KeU~@MwT2>U&FWkpvfPaw=dWEXk(SVt4wR{1A(=`jhsC)upqmG^jy|eTdqJybbp;`@QiupewLBi2;tem-kKK7(Cpk;g3#29v6yyZ0enfKGj*Rm+ zGO3tJAeV4S-;@x1tTf%Lnp_<;zhJE={1s>pno*7*aPpzV{I;onDX}B$HI$1i4G_vI3`af6_j7mNM}PaCFLXGHb_YOI#wEw|1vXk5(+= z-Pb%s`Y|McP+x$O2Z*^yP1;p_a}Fa_Pud4CZxiPvLD{*gvx>5pLZpfybLgk0^B8F- ztHDC!WX+Z!am@%l`Ue&?H+~qB?p7~vrdq37IkSPEa)n{tI4TS4Cx@>9|a3Tz(SF^Rij~KPeNKg2+Y&-zY>}I z_?c4HMSeIW?1b_;q(*P#MdG|L>8q$$;2SLP-Sw9i;492u33Vv=>YOtLzTtj?=y}6m z5Oz`l2QSEW4xl25HRl|xA-pHQzu-UHzu-Ke)F3{86eFdgZyoun43_g3xTg$~PW+=z zoIs);r|&U5D>$2+(NJ;pqgad16J4N*Z=8SQ_W&n9inja@|ah@+x%<_m`G1AKa46!I^)G6~p6DIb-XLR3GV_80cy zW5YubQCMh@mO4E`52IbS%CHrx_hWfaOT3Se?>}sbe_wty@1G^!|1A06O1wYOllPj$ z`?vD`Y~sCxlz%kw9yo^g8ScA8p?)hCjnDZS3J+J6{SGKCYLSrc#DFCVGtugz7f}R6 z-9htoZpjNQX7{t0fwZ|j6wXWQs{}ktb zOsIQn8SVeemcr}}zH&Du|nTwH3-U=dV84RXan9{{nQC&G^=W@)r<1?D2( zCAoQJS)$gTicAJZB6CR&+BXwHQiseFCi#0v8gtA9@Rt$v{aF5mELD#)silBmAz+>S zB7~CSOvW@XiQmgKElodp5Cjvd@dQFk3AnqYP>dkc%0d3p^p|Fzp5lpK3PT6kC;bVC zYil%uui+WAW|dvJNTN`J&FETL{NP(X72kTn>+-E7fFSg!`Rc!jo~QY0>EUWFyPg4MbM;iK-)hpGBS_U;br$A!Y2-y3$zP5nc?u8CI9C2dlYv;1gPS#ZZ@kG3hrwX2 zM1kyBfeS%*0>)?J1zw^6lwHxUT}pJAkYl`iAMWFJFSl9Ir{hJ#x@fT!m6!yHqJN7O zeFEkot@;#*036n^~|s*MR8 zKOip9mCKe2x&v0fTxSJ4i1I+I8s(Ss&3Tqojq)QA0O5Z>0?op^s7d%Am8j8a{4-fi zvN}H?WhuIq*rGV+z=6IxwSP)vxp(TBBA}GMK?HXd|I_YrPs9F+^&wQ1#{BSxk0V!Y z<1r~WwJU3=OaJz9f;%dL8dg=ib@*PPEgo;Uvt-%YIsF4Zl6Y!bXbUsDlbgE2P0a{x zN%e-0c2gI)shOcIX@vE4Qy+IzvqD?az2Sr0)ERDSm(Z5>-tazd>aA{Sc4*69-f$B$ zNMIQ2rgjT$fv0S6Q%Aa~IiW2byy3}iYS2y14Q)ZtUGJuz=%(g{w(O05;-==gsXaqm zGQHs}7l!@a)Lx-2oxI^g-PANUwRdRCKHhL|H}$*6G8s^XrtALv;mCe^HyL7JuKc#p*p#94f>uWt%%Z+9bn zEPa5K5w2;zLnzjY&==capV^+xp-)n4*C-yEQ8vgZty6rkBF+aZ>{C6yWfOWC_wM|m zov(W00Xu(CaVGgwAq28Sh1W$UZHivT^ny1mSwxp1Pf~`GA{|?{r~^sL-Y5+0-bVqo z2AEhO?&Mib%tgWzRjGq1wTJ~%za1iPsFEoS8x~UUBb&}6*_j$>8 zT0CE;qoYE?zN;kPkFb8-4{uVwlg>!0Z-C@`Q}l;~vk2>w zDD_AxFE93_ApWc;I!#|i3grR7H6 zFF!~EUuPf_=_sD%H=|HypLf9$t*Iw{bj$Foxfr^~NuxJU6ZQ4znXT|4Z3Vg`rSd5jK?HETcB zVS^jyI_VhQmHp!EmV4C|cE~DxfGDT}v+i?wsSC4NE8IHGc`yT@zj6K{qP}%d4zT$b ztP^hSssaPMD{d`@9#IebItKxw*mSUTC4}XeO)n5??oxNmOWX#@!Yx#QS zmUR|=1`$!GP9)Vz|Jo1xubMb6|9$`DpQIV@)W7k!AxqWc`?9QSXo<(SYT{|WhO&)T z*U%$pr1;(}UuUj1(XQ7yrTfa(g=mtICn;ui$&IWm+m{jE%Ko1FVVY_vLPM&mN%M%a z?sL4;WQ{JG(kFusH6H*s(!3&^m?RA+DWVr~c%JutDDZs$Fz~ES!1HEjx7qUULXTBt zS^1lQ=9YN!C06>6h5b_+7V4p0(q1dQFC%3!wncwXD>2HEh&{?+cLnPX8Zgwjih##V zg+hAf4lapnbmCDY>cM@4an*HS?$$j<*XNf-KSfg_|KTTz-4wGc$WBO(Tgft>^W>S(Ps=<8`+7B> zmKUs&jlIEA4I6vdv}cWNlqw^mNn&krX3%EanelJ4!z$~j$a`L566&NVnfP;DTTLTNtNG92NA}vEI8H(A* zADWnkDRUs@WfzmjBYDKCDb2_R=d?!APwz7}|46YaNhFMPOhVXStHQcyWDa?SJ}L__=PwjprpP+_sFPSM%*xS}{oWwbcx6@WBdMd}sfCz! zR1s2#$5X44Qm4mL3t1s!c{AdvRY|ES@zg?QNi1*U<~R&VsaZO2F_y`xi}z*cwNmf_ zVNB^vKW(*17AXBNf0JQ%`H()*8;sPE6zJYLG*j5g0F>UwcHY|_q%h)W@vi;?4gMLdb%aFG$*<+z#Xw5eNrdmYslVs2c4J+er4`yQB zS*vREz3H9G@+-<>>~pB99iQLUpI1%Dh~;HSg`N&obQClz8+j3B*_tKvGbQ3k-IkhK zL37>)dGpR)BG!$xD&p0*qZjG)x1JACTe{DdA}Et)`59!T8(r4T8L z;CVuPmZJF6t!_Cy%4k$Ujo&mpMV*GTKnjS10yQi8X;j z?Fp3DqF-kizE$3-w^6_ytg=j$@5ue=(Y{sX@6wcv&gs^(hY2=LxBBIj_%@flM7r+$ zSE2D~9n1Hj%$d53SaA6&onIPJ@TeS}$#JaC;hmwGVj^djA2$VE4_Eq_VwO zCcYEN$xi=0WhyEKu>$-Wu(yV1Z=@QsOF(QXUhAApRczbKgmnHW&ybfD5xO2^_s(&e zZb{(U#k1Nyr-*dMX=?hxEh0p(io8ORfVm`U(wr#zTbUUmkHsiEGE%X8#VAX9Y!7

    (<@TxX{OF07TL#OuH%3r=SKYXelc4hSLz7=}L}Nhzv6I z1Xu#TB#iEGAm_`y@Fm^6H)YJxR-h zc9)1W6Ey2(HW=o-1uzf8{D}6d)YGb<`Dux{E#RG76)<7c!V{LMFZHCoSSta1BWey}hB)}ZbDss8dL!&4txvzKskC`mf)BGvPK z(A>hJWq3~~%(cCYS`-_rMH4YhR_CsNzK1zs&T|AX?_6MYM>p*r~}67=10cb~1M`X9{K$u1u#ETx<+2x$~iNwJa<>3D36tpXOdY_c-8p-MH- zz_oHFmdeQa(pBm65P1ky3PB_3|4Yx(LTag~yjRkgrNV)sN_#f%-uW}1mVTI(De~hj zT4Gdx+O9bND|mw**jdX2>DH{#0?ButqC>FF+c}ci>h|)Kng8Y~V0ZBucE6cYFSBN_ z6fkE^S9xZQk~i;M=&rI})l@lM{d9YoJX3U@;fa(ANwK@Rb#-~2Ok;JXdih}@1?}8h zq269nMsr2pWSaA~N@Z0Gk>OcILN*D}<-q0IDG=pkcQi5-!$QD%aTQzx)nfEqJ=zZ!J5@eemwJ}69G>RS;nh`S!*Q0SL+SGqg>=184dYj zRSuS)`=BsGy{n?e=E~vnR{gcCxdMDpl<1kNe=vl~Dw5bR6jYj@swr(%PL~pzMM`VN z=6Qwk<7uP{N1pJZQVGjQ5OO7j{q00V57akgLLng*?-7b}*Jm`%6YMb)vPloJ?_nvy!JS5ePhGK^G-)>= zO|#i4V;aREDArgA{9`d?$g3#td zA>9H5HL=a_*p#;gAHdZ#Zxj#ivP*phyfw{Rrv5Hae`oV|NK-w=hF;Ej2;TzaDu&RV zir(b#Hi?WUv&^gJu+oSq09%XqVE_f67<8G7RqY z2sz6(|IlP9(a3ofFA@~Mfn7vHy-(zErTs?5{ZjEy>J`zJh6Ph_^;P_+<$H0NN|q_= zoo|c$&hmXk*nXM}*j6{OUWC75y_EtuN$}3lt>FbX9)%!tY0&)GQY(u!^Ipn3bI0&! z5ODkTw*Md&`M3=C55S0?KsCT3xOXn18wfPfNBI!fZ{s3jrN-JT(-qALu?ZUt|3I=! z3+{CEhI=VNc;;+CaO++u#zrIc*;-K@oK@`Y3MQ*}!sNtFaZHAOr!cu~U%}*v1SWf7 zo5ap0q#YRoAu^H$3Z}|cw5J=g`qf46LOds5oNx4(yw*%%jd8*k8afj~Q=C^=$h<7+ z7Zw5!JN(O>Q$XFhYX4lk?3xeyn;YYxu7ck%=w~WW?F6V1_?D%F8Jq}|&nQ+0fuid< zY$(XYgNEuNW&D+NGjcUgTDq@`81dAxJYmT@RCY3~O34EgDCEa^=pc>ABPi}%oTgvK zf#T+%<|RNqT7&v{XTj=K2~bz78Hrs;yiYWKz{bN08;EmCJ_cZ!ZVa=`HRs=l&4K(X%Mw;OJ=8@R&ry7paB|>6yJi(aX$-HQ8w1H%|!MNbOy%2G)5H zBbhWMgWJ51MTw>Yx~auk(#MgBrZz#A)3rig`_q`2V`--@GTcQoexwD0S$k$L^)qi2 zKXsAO?q?)Uo~%ff0B2VY<^>&a=5&6|h*)iy*9v0HA^J_G6yubq-qPox0P-f~_>sEB zy5fb#=}trxUuLm12G%7L?s`(UVW0HCQ?xr%zyw875ZAm4c{ArJ7Burt^`eBGrg_qb zrg^>i>$GFk#r-4t3A7uZ&r~9F*Xnu-UIRv`+GCV1HbP4LDdg9oe}yu!r|qXWgAzdz zo#|cz@Yn@{L8hD} zc$SbL@DVY{#;qj(lTiEn)c$-;>vf=W>hdw90&Imh*9A?F7t)Q05E*cB@5@c z?|uMP-#C56X~sI}*?oi>PJtQ_boEZ`dl@pJ`bHb5GmamB=qHbN>UZDC5Ii;>JfhgH zvd&QcH*3EA!L|5a1~Vz@J4e2k?JKQ3h69N<2LD0xq(>=(_>d>PwL8t1H>~u^*X@M^ zr5A?PyR-8m3ZX7m!vaB5PaFl93WPC$z>*|bN4{JD?LIHXqE||Kv*jlMSnl$3I-Hfx z)^(E3md8oonyGMw{c|t6Z1)-dgtEU@u@5Zv*O@{{%DjF)ADkyh))v_A9m&wFtq(WE z+xi4g8QMBewN)B#tKl!M9mX}miTT2w^)xL&_$l&ZRgPBtL%j_$`+X|Lxj}VlYv^8z z({P>ST#DagSs%kr|G;FcXVtLJYSykkQrT*19=T~m+QT(#xAsJ2YSfCCD`WI{m)h18 zS)EE{8`$EANEzv+Lf(Wqso7(d;&_Vl{>&-W>c~GYB5^^(?)$Q zuxkw&#h7_J?V}Bl?f`}+u>}O94rD3^noq{#Kyw**Vb2Ba?yB|*_498~s4r&Q+Ie~l z3vPUfe}sucF*4xM2o=+o;7RTGfjYq;V}!BK8=3bNq%M9PDbW=?HXouBzljggDX>e1 zXu;k>4tK?eD7s!&Gb{aJ(%H$}0#Pjdvj#MJ7Cq)uM1MM1`f#iJ=>+}hO8sexl(O7U z-Q<(Z`r`pgskKM*;LaeJ!*n`@uG4TP{z8!yUItmc9p!fT2%R8JWTJT5Gde9RIbXG; zm3B4r#A%}zPnj>hQ=cbIwoZ(%W3%Wrm`;%|X*qLg zxt@9l0K*sRJfmWHES)DA;P4qb&+u5D%XOaQ4unr3&uLb_Z=6AVjOOze+Ul9u!L`(u z_jVPgFiuJ!qGPHFpNcFhn;EuC((vz5{q@n1?ERZqAe(ritly(@gI8Kb*_4^9=yn$aE4{!Og@tqr>VcDnwXRsHS`P{V_%wFwedrNWh^1su;k2|=oE(s2Q zlcd*?t~-7bLSw8;9$kM&U4KZ`|B|jh(eDqwR6u;*NdYlZWqR1{_KiXzdbx0()%hxQ zzT;KC9&WzVlk(lE^Uc)x_EGuNK89HxRi|v-`YzG=uF?6vXs=xbck7y}s5D@6>Oo+P3C*)4aUF1K&Ijd-~e1bkWx z&>8?g`!@i78-Sw+f*-qp! zgPhI?4CNg1%TlKkBV$S8O};j=yzxktkrbVp7cgsh8!W{RrC5pY3vVQAKQSSl%Ko7g z;Bz(&$QC4zc|2l)VE^!6`iZpJJULyEPTWny53&2p(MPt4QmIN9JoT&n!_To3iU=Y5 zhr=aN_7Cex3|fy#Fa6>$w(v)|rA#m^G*b2N_J;Pcwcbm@8WIvmE0jc&*iIa!KE}2a zg$?*|k5E>bG((%Yd-J`gk|GD_YC@-`*XOCZ92B|l(`^6?$SYNL9~DTcYiz`U^2 z4kDK9$qX|Rrz%7h(wEo{VsD<=A^8|wVq=$|#17)opehjBu67XRONuwrfutmq$qu3_ z8X3$7y@QC}=k6f(iRLix%t`}T-5tc(M^X#psmZ&71@YA6T|tM|bq&e8f}#z&^+LU| zy+Tp7NG;|V!_>QR*a=li9~tf*Vq1^x3VyWXuHbYsIhhEwiCw{C{vYz*1U#xDdmm09 zktj(#ZANfJ+=0MHz(=7aT@` zA!;-U-6S9&`;I`^ZWCE$Nf6uL2iOAui#>M1*yMbzate|UO|>f+-&o_i!|jGlw`{*D9M&r z5D`ohY2-$s4fx$BB9gFWqI)EMll3_qEPRET_$eF1sRBZAhG-*N zjY~uE?tM58S_r&*KcF|nvP+-2ZLa*b+nAcTF9XJ2HwOW;KYJ4J-#x9$fjS9CCXT67 z!ij(ju(QelzX5K>`$P zuO~`*2h`@nsU1c|Yw!;)Hs#C+I?QM(3i#iYeF#1++rJhkYbR2*gDKkb5bs(Ey64h1 zT5dPxWLpWKg$r#K=^Z1;1dt;bah*%sp#=3gPB!LAiQMYa_PY{i3BGKpYtTa?h!WvO zdN$$9^VDxO2K#uAhcp5%DnXagL-^UmFpaCK3uO?~<4_?G(+fW#PP8e6>aq=kJ)#w3 z@W8=qvQkR@oT{Bfp{Xht`vjG@wlfmmHcwXpDu+|3Q*ENkEMtZB5e_o|OuM*=iVXVM zdc8l+F<_Q5UKdqOfph_p zYB54{XxtWS`LmG~Zni% zT4uhC5EairODVQwA6#h|73UPgNkR$bSStVkl4WA<9RR_vhAn!)uNIFq)G!=BsD6&H z5KhGq3TGXE=w{Q~!Dp5qkK%wPNuogF2(c>D@?%woA^ah=LFh#GtAzI}*0Q16~Pj;`tOMS4yafY0OMDKwcZ8nR8-;gj-HKp8WvJyJ=hu}v0 zh;=09&P7g}J6~kK7%*wjMG;;c6E~XBFx+SfzbMJtS1l7OQ4Sk3VAE5=#v(lp zf|G+xiR7^iPE<_3*j)^A+48#Uor`VNd`ZVXl)T>m*@m1wIjoDL`U2J>S{C+)TMi7 zu&AEP$xrnRt`BsqOtp2|gMw3$Q#2%a%y>dpdCW*0SSb0>g))o_qF|~<1(24&+z{k| z8@@k&P`~tF&*gwHaMo#j*Ar_`FIYyI#a-Y?$2EGmFhJof8ZqML%zO&l2%h&<%wmmS zTxIxHqR;`<7_)7T2~BbAsoKh}W;<|N;B^2Qp3={C_eR9d&hLtRXXiWRZxa4G(o9F$ z9oR>ci66&AnQUXr@nDl;@~6#R2g?(1x9NG}E}uxV9A%jZ1222Uj^v&w&CX~4z|@8x zTQyW{y3s_SC_!Spx0M?!LCZ`Yh0&Wet8ic!8{#O7L2u+dvYtN?^%=`hL@mzZ3E;Xq zEgg$<7Z{AtDPqBxt@8NCW1D1ZJGLBNltJg4O6NVQ^YB;Y5UdR80lME1m_XCcZn_&> zk!OrsPf_rhlV{86B*jC=^xc-gm{y*VF{PAqOd*bk)?hqKe-OV_ZxXQw2(@lwyg6h+ICVfS881?^Dwj$dAeG@mEwRacXW+okw-=}NTnvF#WqN~ zSjj5~Ih4~P1^|C5X;3Yd$Q{8vroX~mC{2GwTZ|6qVaJh=GJ@=Jvosz4Xpu3F)bnb=o$DcRv$;z9yc``=;-m!fv%v?nq1cc zH7lFbyCB5md*+Lh47bHe;~)<^%gOeBTpR{PA9$7|IbFu$sehKSD%=)z_E|L+gH+Js zQMx{{Z?sKvvM1THQ^$I}9JMO91ztkIutKN*^^Jk){~LDL7<24#jycqAAt>|Izx@zK z?rHOnDPqmLlzwVj^EeKGKUCnO@Et3o)(|*E!rQtz*w!tot(nKzRuygwIxA3b!V;*h zz#wNUMcd}`G=KORBI7$$EL>m;Yqhh}@5LRCjpUaU&9yDUxH%m?!!=9ymW$1 z&87oXF^jedeL8h@|1Ic2_*{)%AE1lzbdc!H%8zocLi`uIM3zMF0301n1a(yQU-(o~ zzekZ&$$#;&N~+CLVg3t`D5J)ybzuOz%b;EE#G!$W}$E0c}CtNK4Em-?GZ{ielJ%&d}WgvvBdWjc9;2rzBX zewtY^>=$3e0BGyOl&wbwm^n?r(pIJ~t*l8`lA1{t_f6 ztcH8$Sf=o;Qd}(`%|uAjz(R#~N8Cca-<5b|yjPE|gQf#+8gEic;)XH*Fjr;2dSXkF z`4_8|Rs1VR3h;32LnL9#O(XY#(*2P%kqf^peg*u}O5`>Kdw`9W5!?h|#YU5%*H~=y zkXe6kRsY(9AuLk%u8{`gy6BP0OoW%^t{4jcOEZ*G3*PI{v+#DDkg51zN}&xgX~bQ| z%UEF~SI#BWpG?NxxeCzj#(sJa^yY(9gQiQP6w_?w%TxJ^RK9y8pXo>Oe;JbRHI?u0 zD&Lio&vK=_9+K|~bd1MJ_3+pNbNLx*W{0w-KWufJK_+M8}h-)w<;$`vY0E(uMA+xwq{LisM zzFDIv;NL5iMw162gnr*4{iYDZt4&Iy>8V;Qdlk~h|B9;adsZh-4m$u-)N4sD{qb0N z!~zSgw#KDD8|%`aY@B^I@`Zc#9uc@G7u!3b0B>0Etq66$O|Ola+z(s!^}YMr-YZDS z{^fexdqp?EwRrk^=0n8M?}n9&j4jYYa|%W*EXx-;Smph!v%H^m!n&A+7n`zvjKDa; zoF8yAP65r~9!}0@Sl{>xL8cjh7je@Uu^mCUE?T7|-rv^t(jpZD6W#B$y)<89_aW^* zq)k&Xq}_)!9Wh7tz3~0pAwwN{11#w78LBuw&741yLRXLe;}c+d{prT3`r~ns*nB4r zt;ONU&}kAf92od98h?+8(FH_tvkTQE-{WQ#d~TuG*a#Jg2@fFw!eY}9zSvNZtnE$F zC&yvj#qOcVivZjt?Fv)$Nd!VqOxETMM}j)#lFvNy%#yB4y51CiiRe#JnH+_~GmNp$ zFXK=ND>BwX=3vj=s*;!$Z+KN=*4j^DwUCib=hJ!6-PBKR3}U=G_Z|Ag$BKBoOMd3V zD9dx3_=|-IMXd)A<@1%v+N_3>Ew`0qi9}l%vZIwGlbkqKqU^>y(KDVhG`Y82%VLR~+L5 zg0G-Hu<@09!FLBC&d`gO{i04R+$HKn?QWJjLHTQ(f_{el+01_g`9+;*!`NZQ3Xpbo z4`PQH`y8>4omyq$wJA(|@z_5eL{1U8efBd|NDb>c63q>ESLO{=`4sLCIY@rE>eb+Fl{s@Ys4 zboqEWc%J8c@_@ns%Qi1+YCrL2CZ@cyJjeu}@m}6~@)1^!;VPc97;!#b(jVPq`aH6< zy5Klfg5>kD2R& zk(PvD39;PlJ0M*0k(4%}BlpZ_r5QHJs~uSO2!2@c{m#KA-yaO{y$e}M+vIzv$=Bq2 zp+l4JnFm)EAQxVh7w7Q8DjEL^)K(SaZxOOS=iSqPvkz4>ekMAAbF~~c%YQ+GC3YTO+t$1=F3e`1y>3zpKQQec8sku-~nJQn)^qUi3r2JCV)6( zoX9mp$f`tZvSv&>nNMuv*eGkZWJ&HZL^L=5g1uS2B>~vmfY?ythwq0=C(kA^n|^@D1zz*5@zM6zek+8;zQVPyjTfZ)S>EdlWO&dP1sgKf1?ZN0xcl;vN?P$HhfP;6-2uTT}e zdN=?L2)G^%A;---0jN(v0|iLLn;Uk+#~CGh z?VzR;oY`1D5;u>#nNNvCWx_=?HeOy8$-=`j@V?!@#u>~telya?;8w|+vMXU<^qq>W zUxLFSzVh3V^S;eVIdBS0MyouG={}orzflCW5sFb=9G!@OJemL|NXf<{O?a4QJMv|= zFOTSe>&(~59qU|Vc4qxN09-q+9%Y&n*_9o){=Z8>6}$)v4;@}!)DEdv5&c=)px^QK zSH`nANJa|A5 zdMmbB>=&QHPO`mOEbYFIxl`>PM@a35PjrgC-sZlF)tKYDLq_@uv|2o&)*KI?&Dcc> zqHw6Hr7H@^VD+!a_(s{U;z%<(Duqp_XzzeK@%ZO2-I%*pmRqc*IHPR~fpYN4|jC?LxgIEyn!q6GhQ zX74KpYqqG!Dr6;v{@OUAp*JcyMeb&-M()0_$eAX!D0{#hSHhc^@V~$gw@Qz0ioW7$QhT-mIlCU`ePD=d zj>0Y$HqCiOfwJ&l9X89ZcP1Xm80Er)j&UtkV5P^c-6Jk70}q__rO6Cj6pz9C@VYk< zg?9&A!B}XlDpErGF`@6AWbZ!K_fS*E2KqSFfDnV1bM{=SS42 zHyZd0S#A*z_rux&i#V=e4+L(I=duyJe;th>06Jnb8;CJ3S)^)(0E|fNWA7tJC{{r= zVgbCn2Cl$)b$h}R|Bawi@(-~(gPI^8NJWGflZ~@bXyCPz0SzjlOYh_nrzb5Mq_LP7 z#1pSc#{NQ5G(sH4D9)#hF>&2<*Ek~&C7f_+M~$n@{uBn1(M)4O3XtJHC|sI}p+=;5 zo+>E2I;gKXvwblsiFmm5B=UR%BmvQfjP=-wVRwO3p%^W#?TvtIT2`8&$Jm>`^#j@K z05~bIH~nfO8Hu~$mZN1i{JK~>`4mkb0Pj%1u>gLHPDU6%VIK*(>cYg~Em?Kw3*pdL zVViL@;jhB-z5-_0a04mm=Oj6n(yR`;qwNpfo8QLXc-p)Ne1WO(FiupUH~sxMP>exf zWSY-trz+~CD*9#{$F&dRvMxRB-XO#Bi@cFCQFfya3h|_yO_iD`rG7vuZquPd2=i|=QrBI6z|E0O4)vJKS*-B{23dOa`oNOS&C4sGDLlt=QZ1`|EYtrMbgfkPi4m*FGQszl zY;Jz@f!Tw3@vbIcW{N^@`GQToQkfg~77|W0o?B6K!}(uFa~+@WY4Unn0{AV48)1}UE>+#LzfpD1-6?gqkh-G+b(fjX_hgybG?lHEWGf(sg$m`39%Bp) zc zqDv)bf|Xbg9F^uvTV=v{w+)tTf!^U^px2e&z_(Ae^;loEQ81X)TjDI-Sto1XS)A6y1Eo%_{h2i6_Kb$ku*yl7B;ds_g=!*| z^bn_Z>rsC@v_3_@ziYP9EW5n6?d3Nh+Z?t9%kgh*l5N3pqZI&xefLWu_P(0PafnMm zK1C9ixi+%+AHg4`e`J?q(*A`OFk7~q>o`!o&9}!Pl5nK?r59yT(c9B-AT4r-GjZ{A zb)Ci0%Mg{m>(R>*6g`V>x||O=AiYr>M@gK3)ex^AgE(>WOb{n~12}23|DhV<1p7C( zO05O^lU)o)E|%^^UxJQ1wbnp&^euqfUfRzdXm4-={m;W27nFbC%Q)kbFTpE9C*Mm~ zp)jIo`9pXzueB%;5vF7C6_gdep`?hz_Q3cq&ngO27SC|z75VR!E}8OM&*m(HDofE@r=BS^s^5Cp{}&E(%C|_1Fdklr zcD3lq-GO4Q$Uhv@ZmuUP{ZC9E)aE@_p+yfdv$a7D##h)s$Y71vFjCs}r$ME|a(Kmh zO0R%Kxd*Nh$gkEbWySZjnF%YJ(O@H1&@^;g6qC;Yf=H`?pj9IGY1v|P0@|2$w^wy9 zSjW2WRwB3TeJtHmpT*Ms007ucOhqbo5KAyu5R?tu<40ET8K~H(3snsH>+ypP>Bx`E z5>y+EH5ei~zjcdrzK1l>Eg;jS?;}wm>9dW2eYDXXwW04#{r6JxN*$9`9aB{umrEUe z%}#!)vJ6#OMyM!WvO% zbMr1(*)mJtQv9}f9=f4LpY5#p@lIqhx-SPz#ubmjlF?dm%c?i~Xtl*?fr~aPmO;0@ z2|bv?N0!x@h0me7K0YN6n1riTf!-r1xYwW_!u$y*{BESkI1`r0Q3!yZmGV8bGY`Q$ z9FHxqUjI8dK|_>)9D8Gc6ABV5#tqlnKij1X9xsm^56gl|2wB*5(ngk-wcrI%rT_G? z$8x>i0=A;49q}|cdBrL?_Ugx@rWD*k080-Omfk?l7M5NP^GDgc!1FncjA)7SlTbcc zkKWh0ON4e5v;1dO&}=%Ppm$%tjv9;;&{&Dvdd4zf9;jW1UI4Y7QQooe9gvK*-^hRm z2NmrdDxv_&?t>_=D5joJj2|h+p8!-8^C@O61jSR5Cboa=pd$if&H)a{zwJkb#??EY zPQCrxsa-;G3v~t6LzTM9_y|%_F!TqkvBQx~>IqYfN7PX~wa92{jx5SJ`h|?_XKZpY zvW%4+*=Hdm`}o}u(r`ml`5#*y^_P>pOgoDQ(Rr16E=hiLYK<3PW!Yepxh z{!J!FhR)W9-UkIKBZaC`GW0cBi*SlP2M!L*%;UH`l=wmlW_AazemMt4y@ca`XLn#e z2~PlgF0MaThBpB`Gb$X;jeW*t%4-Vbf*ztj`rZM3s0S3!5lv5aiojxpuc}#nFm+RH z^VyZXMPG!sb&;|Tw4g}Rqr0zg!23hch}np~u^iEVOB5%5qcc!>+4~ZG1<_PS-%#aW z5NQxyN>HW((XNYJccBjdlL#xQ+#A%R6VQ+!XFp7+vTjG;N$8&gP}(U_!vR9$15i5Z z0PTsU{8umx26~|Q7><3^$rzhmeyPp9AEHCGwgVyLy>l7z?nT(r>k@4*`U zoJ6s(*xWM%`BB3tj)D;3TWzyZjzyXF%VNO%qa?vBHxv<+ILS7jMOgLZVFg`6XdlU* z1U}eqOj)dYzMMVJ;qK6X3$r3=1d{yMA)@#rMCd5Sz^c$4J2i-nYxF34rI&^)zuIfe z6;3!JoZIY449BrBp=prErxXh()Oy0=@xMUqhjKzRQjG2ZDo!X_0uk~B& z_LFwTl$0UewPd8zGnDe~kWmJPLbqXIaB6-`!qnE0FskC4C%}hvu#)f`@l-%?((k_r zyA&n4uE40cDqN$6^#-u(Sa=tPg>~+m#gW`~iVD`IC7wz|Ymi-&scs5~E7^4$QjF06 zs&O5LkHOdi%m24Tayav4cm^ zWsleT*z1`tr)0jv5B1We4YuQXSmmBhw%0R1Ix`f>T8@1RYty4kw{q6U*pv7{D62n7 z>{M5N2#OGRvUBX22pG-RvU4`~qaadzOeY@x>i6NVmLR^X(?6M}GWh}yRK#8`&#Tgk z@n_5tT+}U)(|E~8`AO+%q0@A|s=)@H+0L<3XeJc6S9@MMi;(p}#w3KGu~@#c*+ z!WY-G%J_0$n7%SU3F6BO zsU=Kv@$lIlmi}tvGZ)*uO88v;;)U_~*@r=V9)&UdV&e02?2N5-<6`J{wbs-CpPgXr zsD#h=xf)Z|`!Dp_@1H?@z7PBE#l+`8VX2EppP#R)0X~moD^UrbM@L^6pABXO@!1_V z_=}0pD}<#k9zF-cGG1+dpM~9KC43g)0NjP>^P3NX_^bt!ddPb@IPKv$`)oP%#Xa;< z;{_~kWqBSn>&G2XZBq2hlJ!{Z@me>JM-&HfOA=0Wg7?N7pA>sy?9^C*qNYyH|&1%bN9s|TZ6DXqA zz9)45CH|O4dl>7qK;+bKxlu- zA;-Rv#8~j`cCmX1;?(8?M=A$l`$-Dg1EWe+$FJAmG+K?0Ul06;&{nP(bTG}A@|kk9 zYCHjxDlXMBTxrr%;M~%qn_$ez8eYYeQ|@6i?@$JWUpw_(z$Lh|OH(|D%5M=kZ2#Ks zRCAN8se`BH@zglvGS8xh&x$(GZcd0f2VwJSAz$k>SLP05%3Vg{kjbbtg;mU5HD+r* zwsRc9T^NFSOx~Ov^R)cTmew?yhvh>~%H!O8a^=JF^WHngkDu?uts$eF6Xc0r)d4i# z3^eY)8m*ZAzrcC%O7el{KzSe_ARqXsDKIEv;_9lz1dNNY_{Q++rkn0o{SJPnc`o@& zA0F$}lOR02PQ3|;SIFj$&v6S;+ax4|7bHBH6aqM~aeix3b)-Q%A^Qxh;$cq`f{Ck^ z1~^>JVFhnu#3BY-5Uy2>I!jSb=!Fc7As+egb`kzsr>M;v8TqUMgw_f_K@LsEc{7tP zgUlK#Ff1#Kb-Q9NsO)x_>=pmxT(}6D@LLwv@#z<^xh3_~L6hprgyMLUcBVp~HmONn zrLagy-N!H{P8ZHz0?sy;VOBsZg-M{5)=D0>SSa%Fk(@X3jD^(m)wvcYLyhc&nz}aSqlP&SZbiq_R7{f}5WgTK5;fEi(ui zan`u(-!da-|BN~4sAljl3uFeTf*G-*?ZUY}wW2)@XSJ~zIs<0#i!|i#ATt;=2SXo| zdn5nX`MdA4-*EoYh1xIL{Cy1DdbQ{808S%Sn!k_vMC}Fk6_@-yIDZeoDvJ5I7snd% zx~cj5aGuQH#?NH_Zo=_AHGltto@HF~zU2R@JM#05yRsFP=P$r~$vP!>l*xUH`f&$W z|5Uh7ls&IVanX(3A0vz}x8Wf~e3E0i;Xuby_0$N*2`^5X_eG*3>-1TuS>r~FpX3!%!ednyu(RN{1Yd*$Y{UW1T3cpM!%<(9Q9UBMSN#WkX-2qWN zGm7KW%b+Y7H=xt0x=rt$<~Xq!9P*QJ$Qg2oZ4yrd;DZS=)s6lD3|Hb4+1RKZjaul` z9>=NWCb3MAUjo;uG^BkJ4a`Q7K(1$mQYTSo7j6paj*oWmN4Ub_b z@$p9aku8t4!7;UOs!QZ3TrZHlPGCp$AkNG~TWX4QC^>4gbmYdRk=k^Ee$y>cS1fm& zx9^2k)g3@}0o7ELw&Rek(wr;}DR>>VDkZzio5FYFQD5M^$FD-deFYZ{2@n29Az>-@ z09EY^e+CX}v@d+%4dL6-sLz-L`z<&x+Xc>BtN6BTj)Q#LbT&uW<}Z!#BYgW4RuiKi z^cLiQ=ugN$+~V67Ed8|N+p6CCC37AxyI0cpIu7lq=^%Jkig!=n|nvO=;ihK3jxsa&+T} zi1zn(utki&s{L0G9=6G!v;>6r<7|_fpx`$#VE()${P83=Ijb(vexrne3w#=fglQ)$ zg7%(bcN)OVfWvs%Mfa);pAKl#~&?nqrPA zztmk>>rDZ{p6qoK*GQ5f*= zk?7XWtDa12icKAfZfpGj(N$hk^FVXIPNvyFNOJ#i9BNng4CoQm*Px3~Pt!c_;BUBA zciDsh_34t#?tOD(C=LGY`cN7yMCIW$*fTCbgM(1;8;U!V{H_z3=jjS&5nZg<9aQhm zRHfcsNamdpEipu;+Ygp7a&eT6{dU*;eUe`fF{WQw=1u=d;i+%k^OD~+a18u9@|)rY z`StGYk3i+s(dVXQ2Plto_b#X?xSrnBER^Qjph}@R+vHkM;mtk8AD~T{dy26)oFn^0 z?p};lcPbWI<4PQM<0xw5it6uC0IvC0^#tIxI6_1`ZNUc6T2qy7hwa3$CV|a`l8P1~ zDwk(fdyBBAc^ZJC9(DBck3;2E$-i*P7n>DEe~&c_rN0lZ38la3sL-UpzvDqIlm5QN zbr_TW#-MPewfCaYUssTv@divK#A|k)-zWV&G^cv>_x4PMr`~we-l8$t+6I-r*|C)+ zptYO5(9=+pGR1av7H^iD{_ybiH=O>aj0>Z`FL38RME*4nrN3zO)}+7vuv(b(S4=C5 zvZ+jhRQ!KMfBi-N;V7HPKaBl%DgQpM9{pVl_nOE*nDNiEsdZjnnf|I0d{yl_8i1n2 zsKVFtF1YWA9TP@>k)Wm^{e93Vl>VMVeJ1^NhrPz6zuQTQivF$#@&3P}zme1c-+ z=q>jL&+!=@-&O71$@b*2(chPor1l5Zo0kXSJmb971%sYPo*Fnu7d|i5UC;mgylK#x zgSWs%o*JLLquP5Lkl*9H{PiEzo0l)9Dm*<00ePNziNi^mUpFuR%rMuvMk0Q357xNS zlG{2u3J&3o0Gmuqn>hy1do{JisG;C+-|H!lsI!@R%(H4c@l{lD?zG}Yc;0s1}8 z%RTQ_Z(g!<6`nfEhs9(^Y|cS&fqC>&;PBUYL!N&|ogP0C&b z$Lv+`-y;bmy;(gHn5ZifaKdb3ip+CVznRe%d02~G*mp9{e-P%yzliGh8IJ}beK_o@7OgsTGuEad-qd*yok_iPNcUr9Yl$g1dK!sg2PRlB=)o&%Tq zT^1b$`s44t?!VOk_SVpPq+R~;=YW23=wdJr3CRfzj!^oWD!?-Y+{PSr0SF&R^I#(_RU;pa=g_}Kc@BM?YUGcs;sMrKvRWExM!*XM z{0D&WI#&%0AZI;JJ^(pgq)xwCXG_!>UgEuAiJ7WIGbu6IEKv?y8-_Z&42?Epqa9Q) z{zkw|0us*Y#e=~*yQ(^ujN`}#nsv@Zo#DM`5-f3@D)Bcd(Z($C>^UX&4G4_%#~c~y zV^SixuDE>}qoT=7fiS1djLGAX4XQyO?_$g~qK^X*KJ5P<;j!No|J`4`2>9=tt@_^_{f8njgwwC4 z0jGBg?Bx2?Db_V0H4S)4AbbwOKEl`MQKh-BHT_!w{FmaC;RX5gI*hqS_)=#eqZ|fZF{ZGkxE6GS8cjvF zbki7JB5r~lU{Lr$=3_FBHC~V%Y#4Wq*rDHeHHL@L;%__$i*hc)9IU_|k8|)AjP+Hq z!)G_wa1NIDR0hsYsL+x}g8wr()^|btPsW&Qg#RB*8d`tsH^+a+?2CZ^&Z8CnuVVkJ zP)GaK6#uCYo9d_+W`5Zp>6Z%rpMpICO7?9S6+{wdg1eL;u7fg2b~2`n34J)DikHs% znFCD3R`|;5#RL|U7Yp#0k zOjD|7Ix2+GI9%TR2myXUdVddt56*!p-~Ze8@SsUAdyiBP<2BfRJ(PJ7=)E7#36WxM zX8%pSKTQ3cUPJY>??a+~u0JgHf`8!~FnLd0EtFn+m;*cIMy-bc#hy0f*Ad9i>eU^N z8|%;a##@9UpQ=N*HNay1@fQJ$jh|Oo+#x3SUSwp2OY_-?#xRnFubdZ9BCqZ)O5_yO zXY_`>6*i<%bzuyQ$1y!Wua^Tbgn$GB-cx{{1pGk2Bn22u!1Dx*Re*;G7)}7c%YZsM z5bzfQdMiKz0sRPgKmpuZwY|G*wp1S9tUd_T7QS;a~r_8^mUOkQewjir`a=8FIR1k19{YCjB8 zwDcckFPvK)d&DG+xkd}ZHXJ0QK>Z)sgF1}92>4IM!5;RX_Mocv!^?4@t45;Cm8$l` zVh#%34_{v$dqe|_xkmW!`<&|kW52yUsA%Lx!2fa_;358J1?@p$o3OFx;Qs>q;bjk6 z`(d#N1?>^5t7DItgfZ6$|JzLZ`5)MWI=pZZ@Slo8G1mzHKbYjR_qVqJbG0qYsCfx|DZ|#TdQM#uwl$K!hgS~O#1&H*nghA2>4%t^EE>MFxOc6jkzuJw08jc zHFd`<@1*v`Ju2IOCd2-4LHRQoW3CbYe=zB1@BhI5gNJ|r=jvzYAtwC??LXn_=Yc3o zFS4fRzpJ0A$!b3gi;UXeTJ(RWI`#+~##|%(_j}T$|7u!*YOs@D^z=o*|BA;=`iBXp zD)sYSpg&yxUtlM_yo0Ep52HTpcduUxdqkYFM?BZpL3_l^o*q+4yJRay+;B|5E$@ zYY3P~z`F{t`xF4*5a3aOH3ZBjV2lD35wMbgzbe4L2`DCjUmiy*Wd!`406riKKrsQY z5ztlv#u4x-0e?_{?+EySfU5*hrTrn~@%jRICGb9^deYT;c|5fwVTnBH`V9G0zeL`1 z?TN5@db}AzPW`Qo;?QV?_g#IbVz2NPjvBYYco7z`RPBiQIF1v>AUSFxpSQUEDZKjl zTYlSOnD9%+-9{U1v()#G-G4xP&Ty;5mjqS$t&1tJxAC-y^_uGR#xw?pyvb@ly=uMI zs=lF!_b2}fIyTM3JmjGyGmObB|C^eLzryJzE{WLqR4Eeb9z0Vsk?`f8MI`Vwd#7h? zjyabJ_f8yIda~G;ZMK6Kml<~6x3K^sBll7OC-Rd| zB6b5~1x7EBRKT8%?^#x9PYZsDAz81Js^3xRXq6D~dh}1fBSqW5hxDf*;?y6-mly7D z40Zq!n~zf(Bhj9=DOGPEj?wJG>(!&co{oQZl9D3g@XwY~Xt`25>EqK1%cCvdsGO-X z*5ZI3zPi$?5+z>GMysMkYkbz{7Su^3PcG@nB0kWY^*nHZ#N@LlnmTx+NZC>n)W@&lN)GeGDm*AdR0Iw(HN?3i zl4(68RPl+0$3Sl8!d2xb7MgL+7?t`mM+<~p`qOwc zcR5V0#vt@6Rj+5qtOu!pud6EuRTWRV%U4{N;iw_#0N>j<=VJC2Doi_sS-8N1{3Gs``GPy}tdZA6@c-F1;Qw;P z?^pGZ`MST0%-8E*Tk~}t+_8oRodokW@F(Pt6@CvMXFT6~#@1uTapWKMd@pz$5BV0L zujhG<{6=nZ^~>agEB7HxMpqM>yOF|AlNW4_SI~XDr%RB}=(!pzS#)pc{VAF^Ss&d? z?~tZH(#Ko)WXtb0_gdu9JM`Dw^CU3DcdFkK-V*}H1la<(E@%AoIEiGG{=Q#_6X>Ek%z!#AVm zAOZ<$f1Do)+AqYGtj%%(@%Ru7upu&v4YG3>6IU~b$9)D5oCF`|wLSrY{Bra&`1){R z`K2an>-ntIxE9L*yUXgp&^dp_MyZkztHUl;EyN-Oh5K82Slo{d8w7VI8x4%70vlh9 zC+)F|G@b`R;34C2Q}_iQF`BPlLC!sl-V%q$@GGydqr`lnh*PoooXKQuj$~Dj8Ji+j z-NAq;rjSPQ`K-o#2o?uJc`C+SQq*I~IJV5zgKs07PbPcRXL3xfBSx}Vic{c}D!Ya@ z@=vpias(B!SDfIMx>7DFrdVe-$nzOM^`($$zKZdkrl2!2dUasOSN?+0?-9lQ*CMx` z+m;>H<*n!79obv*MRId6(52a}>Ry)V_9u}M-@=q0WN<|XwQ+9>1WLL_=R)Y3i;Vif z(fQ~aBz!JiCxOC9+o5zFqsh~Z@L~&Hcf`T8P&$a`iB;<{$@vD+<;mq7lMXnMLI;>e zqO~$P0Fx2uX(c+yCDK7DsxqMpbIQZWAawpYtGbAj;E4y#Et7XHRglEk!vIZ~WSg&M zp2w1{PII~{(}xhZ9B2-lb~xCd0y_MWolp|7KA`j`tg~F*e}WO+qym#ra7=bo-WkYq zc|qHvA&-ztH7|#@XsvcvZ=v!j!72GKtU1eM%{kR(%~=BD4T;=Dq}Ht%&6== z#5yx}f@!buJP^ON$j^&FN6Y@PSBQ3okI<`6?@R$-yY#Q^3-Rm3cdv4GKyu(yX{lVD z7BlQVV9W7{IJplWVSFJrMXN~B@J9YS_8BarEyqW6T17-;-s{w&>`uKyEaI(^65+h% z9r?l*KXTs~j&;D32q)fw6VamDy6|zC7-Qb;7$?5Y9>cUfShXG5qoXc!4#HR8Z8;wz zueJ#roPH&pv6sFJU!sX|>g|e*&+f!U6Gl9ZIwHwk;LwU~?vdO*v!uv4X6%-*+R=lm zUvgJ|*`{$fhqgr91f}O;feyhJ;&bc@fmq% z$mi|<&D3mfFZHP|o(f$wB{6z4I>I*aO&SOZ|9$uay)(PK!3#H`o1eafiMOtqP#@LD z*kg^yKRa`_YzF6xIEqI{;Qi0!k4ro0^x(tw#8RBo_OG8^GWf!MwT!|~&YaaYJGDb8 zx(%NlTu&@Rn_leF``F_hXV(XWl;5{Bl={vKRE zoSx|Pi5C2&$FYBpu9#rP{ZGqSq+fu)=Cuu;uR}DElI|c*v?RWZ)YUkhJENEL;E8Y)MiB~ z+?c-y9@F;YiWhe0Mn_@Nj~>B~eh--RTR1zpFHf_#lZ|=bJ)oG60sNMWqY;OVwyJsW zt=#jUHU6lo{)<%oE~>`&1y$XzqVBTyB{!JHn2!Q_JG+rD%5t+mp@81d?pQb#WmJLQ zsx!-X!|*f=cmk_W2gT-PAqUp^D3kzswNbe;=MqS{QV+c|UVx^6{5_dJ6Zypg(3-LF zjD>uj=tBDgY5~|Ea0S-y!uEiVMB{r!A##QHthoJ;g22!(OVQTyQ+j@IBqT>;+5@mf zh%-iXggprxxIRv;$N{$Ml{#p!Jx!ZW5uX})EG2O(oOHs*C8DxFi7-`PrzX0jBcBNO zm9;D|bQlxNeZ?%6hAPplxHos$qv{r1>ihZD5U45gKu+s{TVET>PDhE{7NQjFI!bJ(LEWuV6s?MJi$Y8qTJCU6VbJt0=8d5Qsn0GM$GdZN%1EfRGw4V3SG6+;oJYj^ z&dCYb+v>4WQv;zr4da-@{$r1$lGJA<)xHLWIiZ$?Lu?;#;>4;tWQh#iz={{3Y=+}-iru_riR`G&9YbZ@_dvSy;H)LP6-F_om=KW@%9@BM`9=7M2ywr zg?2OK)Tc|8+F_SIi*>m4`D~f%n(uUMzc}CEwCHlk_aGPKyQ9oTNV*G!CMq`-_cWaMiz(wLEjW~3=2^UO#bBXiA& zosmz?NIWC6&B(2c@CGb9(Tb57W~4PE@0gLcj7(+Zbc3yI6%LgF&M zkhlynBrc;g=V6a1B9aq}9JVeiVL5cKcG#RNeXqA%>X_K@ zGH;P%+EU-qK1;oY!_!uHOP|S$n(WLjjC5vK#E$qUWKolyk#wpQqW?wcPI>$htQuE) z#-Mk#B{UMDS`x}YC=%1|>4kuI(AXx}3nK5VA%sh4I6}2iN1^0@lQ9WRK}gl{D)X|A z{s>@T9u}6eLnY6kQCGVsB2?Qq`f_(41Y92V%_t`11hQlz6zO}mm)Cc9FE>m2K2L{( z=<-=<3W3=b3Azd}^k!gOYW&31CkJFw+FEyWY}Kd7c?o$~$HX2OwFe5-_sGZXtxy z8}jCJNI>lTuJ{eoW1D5zjQOr;xiew4cVNo2=6Q^g3$E$a{3C|T9+^J2d6-K zHGIpFC-nPqpJH!O1w&iT5ssv8+cf(pZ z#rI_TUf;<0m6!lGhv6OA?W-N=-A>BZQrm=iIHn4gTkdrg=30eXbG>184G-4EL%h-p)|Ec!MZ*Ut&4OV ztc!Hcx&nhERR=pnVh1X*{j>1(X=q)f_+VXR1hZdrLi;6bpymts>aTKfs<9OntP1YQ zBf+}JL(;EZqZ%Hz1$sxm3HEM^S(Ql|Pxe_8tUxhT?3}^OQ-1q?+l2cN0_8#skG})t zw-4-=E2$8Z$xH)DyKh6l;=j?cA}FA$wq+#+J=<@B7sU7RqqAIyr(_q!db37f-tIbQ z_TnV(4Wln_cx_7dq9{}=>As>zXE|98asH+zmf~aAIE_XD#R|w&a80r>YpYF#s40{0VnECe{I`2NQ+_6Yh@;OBouH zQY$QFct}d^u#}9Dl&G+jks&G3VJTxmQZ5Ng$qY#e?{!W{N=#Upi6JSMhNZk3l5$yC z%9N0lx?w4AhNRRBOPLyyQlBX%cJFV%36M_^`8M|}LQ091V&kUZnH#a48y!1c<{Q)c zxYn^NG?b0D33uXfEGD!5SKLuxQtM!c?=5_`-!4qzR{T4Le?Q9X#-VLQPUGKN0_Mj9 zz`&eVW*|S!4CMA=-imRXk$0;UwkyD4rK?Ea3QIXx6?o!@v{o_B$illq<0Dks&M3|8 z1su#UZcCt+TTzQ6YZtRQ3U@^@G1x?FNfcekfx4NvDNwSlBuWF0!kv=%Lm;u8B<^Lk z*y1VaIZCKibv{Ybcc^A}Na1aP!pTVNq#bl*NqI-%UXE&eAlZrJEIi0GKB91+lnf@h zq*_UHAQ8m^U7FR0#iT|-UsptZ6~l^9J03eCUKWjtTNEiM9Ck{VbphpfV9>+%dKWq3 zPBD!r*ygJkP%Jn_`J;L+N9V}eBOTfig)OQq107T1MDUDT=iQYacZh|}OssLADk?dV zyf@OjC?)Q2q;J)L-Rwc$fD_2D8m<*z#lXdEch?hftH9R7HhXssh}#(H^AA|#+ca>s zuVN@jv#hr7)cD%I_xlwZo3F>&FRf#D?5WDGoRX65i%fyNF(vyKtlf>^ytDo1#jZw= z_Q%e4uq}wXMYeOG;x=m@h>XbIVT1TB@f}Uan%}bkx^>CuS{YxXM0W@@QM`<6Rmp~` zq)Rg}D?32slIkqn5e04Fbisc9V7&*qkBnc7f6MUCYg@1y^^>|t@W-I637LW!5M7IZ zi@ZgnK1#E$g*IoAD$=swDrRQ~ z_agsJQQ<6t&pJrW&5^i1+1BM~!s<@$6D*r-a~@TN@1WmW+S=!PsaL7ug{(s?l(>Oa z?(+S;SE;SbDKrb^na!Rud0Z-RWWhYn2G*c~&1_%`D&LI0m-^mEeZugb&m$rV&Px8o z6|A(>_c1E%yh2+6UGjvls9%LGWrag!cBriqYS^m@DJYfn^IoNn#HDCtm7GUIBdZh# zO0pVe;tE@rBdpQpJc9B&eP5ynB2|2&h7~7!^4JZ@@9mff28B9##F6;D!`AtGhxR?| zJ?pTge2=pPU_+^(h^QHM#=FZAmrr1%sxGvu&x=a0z#emvjW^^@~u^wcLRSP@# zMQP3~cRZSp!1)PXpuTOVz07x*>&7pqORPA}mxvbx{v9t1qz$i}7RXm7-&yt@FDvk! z8Q<}1t1=oMrJ`-8m#GS$er$>aj-OuQ`=xA&${5mGNR6#n*sO7DqT7z{+a|y9BY@>E zRI>DnH!jP&qgF&jZ^t8ibD937zA2u8<%?)f^Aw&c^zmlZP`=?vA3ZSj!R~sA$E%TU+^i;2B3$vfa1o&~EC} zS~9dDM|{uKC_es1|37e6oyldhx#k$xHaT|I-wyYGd=-ZZyoIC3*HKH+3q~YUbli+E zXiqiub#0|OZUAqZm@Q3%<)3g~sK-KFp^X4F9ai*SF|6EMI(FmwKjhSY<~?6$){mL6g2Nrw6!zl`dw=}JSuC!aRQj62)xq`9J8*2{!!XOuv%|22 zE%^&ZEu=U#xW=5GjTrHzr;cvMp$9ThOa^!V>Lk z`!b~27L1J4-mw=*uvavoB??*#P|g=}*8$Y4pizLr4MXUqfZ~i6Yq$i^*$P@0Q22id zjRACqg4PH0Qw6;Y(5VV)19YZ>)&rD2TR`4XkOm08se-X+?Q%rxVbG}e3gnHEV6Q6y zjZ)BtfJP{2BS259qE`W0F2P<`1A0tB8v}Y+L7M;y=Q8WP22gM|g1xQ<6h0|Jn*zE+ zL7M@}BUgZ42k1rxy&llD2s*V50Irl!j(sA2leJgvITFvXw{>E2TiF&|ZCikS(l1Y^ z+50EMKTTwVSc;PMHwDGX`aGEn@2*jCMUlz+r!ogfq$zN$IRpKS5)Z)&EN4ZIHNUXJf=I`j(`29ha13+m=pg0;6Q+wt#gvZV-x`e1gDk@M?2zGW$xq18&*D-#P~3>w>N6N5`ogpmUNS%NaK z>GN1=;&$e_^9YKQc2rhEux%N8=N8}T-Y2Bsol6je0lW7Wluc9Zk%$0UvZfp`oCRec zNNN&ysW>T1;!YJOc}W~ngZW8g5>HZb5}L%@sW_<(h<;P?WyP?WGFU)fRU_!wB5qxz zcThsytI{iu66*IZtU)aXtV6fjs%l87-oo?&ySsd#DUGv{p5cz`c%y0pFpTfjfc!yrDlLwUtUG&0`JvRJtj}ZdD270Ex$| zIN3nrb`>WtNIXu(cUbYJDo(DD^u{Vq){uBZ6(@g4JXXcYC7{olcH$Fbnkg6{PG;JP zQsAlyf*cfw{HhE91wOU2gKNs2*#|QfIynGldB@JK`Cc2aJG-!!GrJhZ>25#}`wuKP z8L&hlk^N=%96Ng|Nb(L!jLWgJqfB_y&MtZjyA3Gw4r&p%5`_~76d^v)@GcsgxH8hW zY3Lqrhp~4Sz?i5I>2-|hUEp=JOJD5W)uZk1NZ+!*R<>W@57A<-_cvu7HIQ-wW#db0X z3ZD1zOrv`ar+ym41D~=9GPPde&oNmQgpTX%8nn}?9d~HUQ?#=wg}ZBYN;qNTdve&y zI6M=W$ECrFzaN_W;!cqVQzQ2kmd7}!Iz9C=ot~(PIFsUzFuI`aT+inZB`PoA2;B-j%G4{|aKFLP zITtD*M&xzG^gNNGoyJBs1`wyG(_Cfe9vypI_C550&W`}x<;fq;0@`t8j3q$#Fn_AH z7q1kRqjnb@vH(D>ZMFp`w~F1Z5W`pzq8)`HSQQ#0h%*s~rNAshmD_lht-A1oJb(_mtOf$HVXv^ti@Z)B-)G2X%?7Q20s?d9ew zVG$FaujegvS|#S;x;=rzVpX}WRtYQN@rFoPwiS1=8pBtyU*R2i!?aVrkJDFs9izsT6Jl+WI@~a=+}s;E60sZVQn2te_67(u>o3VRSAl7Y zk_sJJ2e^&$IxcHj;z;x%zhUP0c^xg&S9y!zg+U=hax>d6-VSukIPOlzEZ&`7h<>Lp z@pgD(S}~|#mACYUX&by9T1@*Md%@MdqVx@>Md9y3i^3vX=S4_4r4>t4iN&_mV&7#g zS8DF2z>XRxhgOt`F^+`S6N80>O_;{f4qM4_c)hZi`yNPN?8w?Jmc%S9pR{XuF@_yd zv20`n;Mx)B{xYxQj`RZhZ;znA73?oY^u)A6-|F;r=(A~EG%YH{wl3vT7gG15qpot* zy;oYE#Ryhomo)7V&hs4emL^WyVAXdT5EypG{j5x@%HWc?$kt_}8t)>TYoqU#mOrD0 z6LezjLqWK^ZkSdE59G9yzS8tHC~b%t$up67lSUH@ZJi5|xLGSy^%UAt3sH{&$0x~d zHT#o3Z5una4s#Nv_5m;3*Y5E37BJ9b-&VCD1aRj=$QW~Hs?dM1&p~EW!9p2C3uS0!5 za4U0?7VMv(T!H-9G9{R=d-`%Tvqxr$S_M7reYYjJLz$=NaL_u42auIThTT&X7~yR?DqKwuJIii zxXgECC|1=`<1dBloCfj&{98_jhnAQy4e#K?yrt|Wqhss6<*aAGG#_KGrf)zloF(Z8L+i7>eg+20W#r0$eAw1y@i!c1;$fR> zabihE3hFIEdAJCln6`;^ZhgKDS$-!-Xc?*k>q|Gk^OfJe>iKKn>c8BPT@Zn|k@q{K+dCU5i4kphij)VLJr7teT8>P0ZcyJ%D+1i20`Cyh|g zaZH2~m|Yl~0*@-(uJHgNX;wS_t}cSl!Lp42$`r)x~Nai;-vn-KaP&(Q;jN48p4?Em6fm_+1yL< zS4>h9FQLt+d?8e4DAgWThex{Eb?AV=f&nc~^=dkmIn49O1CMK?hT@4hXl)z^^gGfQ zHhjVr{#Q|xx}V?Cwjix_|LjtmR#I3|D|<)nNZ3dhBu5RwK40@W3im`gviG!dT)NJ9 z|0W!1%{~w(N~frqoowG6z-;mWYO|T`p&&r*td~Gn<7F*(5z-xPDIA+4;eiDCy zVr~TB4LSpFkQ*%Su>EI@eQ2_F1fV*$2~T0#rAxiw!toD5%(SynQCVesnYY;x{Npm) zE04jeZF4`0zX=7rG?!A01~4p#=BS5W6($roiXGgPL^u{Z8btW(0|Aduf! zG{w?c0}0Ss%j1`Y=&X_g*mwT>iJywC>(UM@Z;J>_ z@r@nrR{|2IK=K{!RfdUsFbYf$X=kqVL5GouHMovkroX6S*bb0#Xvr9sB!?X^bvaXw zb0n^V+}XFBd`7C}4K~*)DP|RjwVErdyrPK{$!rc` z*XFQt4b6u9VN2I4TbHG(p;a~)1fS|uV>9pmb3IV&ZJpO^>s68Uw$$~S$akw?)0!0Q zAA15BB0hQX3xB>I7rcc7=1X3Wx1kJ9H3MA}WVHIhIA_ZWKgQ1#2a^hn6k`6mWS&#_T zg<&h;Pb$N2F?>cbXdBB6G!Xy_;Tqb@;Tm38T}5RjSWYTinx#4EAjXP3u~h>ARc+a%eGB2yAKj@ST$_ngD1#atItvb;12 zIdDwCx9+r$sVkY9T`)|%PU}uDH{DQk0)8&b6J_QPxU2%6D9bw)=Hp8G+-hJrbqhMs zR0U5d|CUvn-ZM$CY6<-)CmydESh_=uU~k%|0>C2+ zVK)L`;WN!(UF$_eh&q%4o0jL%{_vlHt9H0NU)wWL(&d?FpMqbtQGlmyw@Yhhha+t; z+-c0GWxzW|xWMRKgUaxN@$EId|8%AP94_2-q~oFSN^OHfJM1jnAE(i{(F*@%?X%&( zLVr}&P6m=MEp)&MSjsS*JQLBZcEnL=L>2mLp#;HMJ6Vny7a}zRxn7lAIJ2aZF0HUF zcyR{c?7XMmd}M-o@?g@$ukCLjh{S)G8J80Fx`Ms0y=l)u0fJsrpbr?PM*~G>GCWy@ zXE8iUh5yO0M}w+~!!Y&`{w2fHRQM}~={5rVYli=(!ughe6gN`rgukWW-_W7j*f;j+HZ$*t6h!B$ zgm39!jb%>yl#+2Pa{(TKISgNFz(q)3DxD$lA<}_LKL~=g5u^(QK{`l>7^Q-At463`69iAI z*63C(SHWu$Jf?zls~%RtW(fYMf^@4IDtJADyAkB&N^zdXJ3;y*QN0t4+)6v+(y;L6 z2*kGF9U=N;+kzaSLImCv@+?eS4n*Zv0#6!>W;^h&R7<@TV- zH6Q~C4;xT46B0-y36UfU6&xm+NivemB=Z15c^0Xpnya^!d)1%(ezsSCzxH13?F)-m zZ2~jA>Vt=9G(LE0qEbZ-CP>2X`(68-GiO5Z+WW`vuks;t&VH@E_TFo+z4qE`uQTow z$5S~&Hb0UU0jRvqccppp1b^7)8uz)BC*|gCeju$5@v-BL`o19ojYN-Zt$@K*y>$qy zP&4W-nXrVl6lG9@z#-N1xD-J^tCd6}=7}kbFJ_fECW7)54dGNl zjqM14vmp>`Thq78H4ehdQ%}gmCN3^sFFEajk<3$%$*d-zg@VT!0rNAK#EBCO)gO?l z?i$z44&zK$M@-T!&=jn>niW4HbA8+=<38m%5}}m?8V;9^xe&#(Y9jY2OXG|fb~HOZ z`a8TW0xKybJs>QBn6-I4?a*S#$rizs63i=$-bV*PEFr>o$y8^H_sY>5hXge|E4`!i ztTcfH(=UK}*aprUuws0=}V=FLG~$w%g8#NA-Vk%<{`*=8J>nGrY5j3ZMs;xf%R zGB+b`q8UfVX2fNfapY-6T$&k2wx*6%Iacaem5G>UN05XzKOsGgaxe@a8&k*7>?U=p z$}Wh_9tTs=Lp`)EAWMqL0V^9!nf6&Z;N=*#!GPenOMh0*eqox>6LXFB>_H{!;Fq=s zo6sYWBMVzs00{N#{UexW5w|xYi&J)75c`!C zUepe2jYD6UHX594F-$fwT{|v{(L-Ovf8%Kd0xUq9WnNthN)#!NQCB9S$QT%PMIwqs z%&5x~Q5=0nr6!^{u^4q}B8sEVs1b=M4nLz(5>Z0vh|&^KLg$F$0%2e;WR55<6h@R# zIik2=7*Qkwg6G0vM41G@1;mKTFmiDrF{09pC@v^M#Uu@(G?Il-QXO7s`f>`#^&}z= zznTFY3T4?M1PYKsR2av~wpbNSGuZb~aecHNke(HG2_u9dX9_l|cVmPWjRor~kx}OU}m(v;wUXmOejBK}m;_bogT z-?OW~0zbQ$;l22tG5zr!h&{WIBFDEr8xn8d^;rdj_}dk4AM+U^PCyZW0P_H#7c=P1 zMduLQ9dF(Bc||;D*KS;;#s$>YF`qLd0rd}&il8t?yehm~D%-Q`4596ojDQxw?)HU6 zM4}adUN)djS-1z#b`uf~m;j`WH(Xl>p|VVf(Mf-hbt!PRHFx zX-9DO7S87@TH_y3@)METg+h~ZWD>+zJWdHlnL`{OT^PoKbq zl^MI^Cll|F=(q@?h7@h~}o ziB&c|jhp97Kw+!gt++9Is9@H5P+0VE{3knh4~rkUtpgWSZaxq6R!-{S)$G+cGl)O4 z_#G%*rvLIPd`TQ9_^|$k89&cRryoRA{N_7OB?!1H3cyAStSkBxjN20cvcfYY$7 zGcfoq*cJcbgjO7F#c+@xi=SPLamA^AZqw7{TY#$^Z0XS_X;l+tC1*#sG=N0m@a=xK z6WV+p9oZVb45Ey~BVNY!<1+3W3yhdAL0xfKO2={C6TzvUmIA(^~h5zZg zO&oA6rqCg_!!YOY@*jha4&(0xn%oNvc!`%?8T(n&x@kDHR9AW#ihPku^fq|}n>>Z1 z^fbsyI2_D3xzq8ZpOf&Aa<59EWz-uS zap@~uHg-L86MBy%CWnH2dGZ`^gE%1<)v%XA(tgB1kwo(n4CFfmBJrOgUY(sFnwN-F z_E#9KE|~!gZw{&KJQ;K;-8b@suNnE<8Q&Z;3|NwqsMCbQDa7%T)%&jIoi0_OU`ma# zaT1eMiYJ-PH~?SUr4CV8R0^b^z#s^mKz^BBdD#bCj=B5tviIY$!_~a6wJU{ZkT{%d zJ35?4k@+LvFK+J6+gx_3>bm^w{rSk+3T4}o;n1&bo|p18yEG^JWyf3^ny~q*TRKsT zs+_oN`Vhg9J%3{6&9g_CEfh4VzZZNM+HxsEIoUmqxw~_+dmVFMZr+XBT+MqnzUM%l zF5EZE8@W4Y^A9c)SUK7Kj=7%$Zy-GKCn7ga_B|vE2z42YP8q{Yzs-}XW`!8CAiEq?0=3OqIDibl3bmFpxT8CfkUx)EIb8;tHJSBIB1WFId;j4 zqB)MIBG;!l{%}2Byw{KDylxoJn%})iq=jmW1EI*V>G$}x)iuI#*LKK@)c0QpHe;?IytlHWa4Re!?l{&p zhRg%UDr7gKzX90dhM;#HSl2pNYS&sMyEdM<2@2?;;0)sTf%vdBomoImA-4CUGeyn4 zpk;91p%Y@y2zLh~6GqY(eC~cwGkW>`g0`c>h#;3~nielS_00M65WaA3t8yHB20@$N22)$C9{a22GP^ z?SgePgn@-)e!&z71+9FZ>W9Hl{fxu-ne{4ifU~c;7FN>$i>1c9aLJL_@jk7!UBI8f zokaksF#xO^48T6Lj6j+W#!sQX6AQ;?GaE#XQa(@i!%WLJ0|sZlS#P7h)zJ$m8Ml5wPj#8y>2`MgOEtB`nP#wH5f zj{Dx_eWd{hFpf>!;o=a6()$I6Fi4Bop*QREK2zg9B`i0@-PWpPL(!( zn6v4iqwoziTQECd9S$;Dc?v51Y-8VY9P_uZ`SYTdU`kd8Oi|XH1Am&BR@~yl1>qI2 zkM4Xz11Ca4KRO~0KJ^|!7$ZC}t*H4djBn0Dguek3^JB`L1snS>aoqjyfJqaYv=scV zP8+uI$W0sHyD45d0p3p#I|5+@u*M-UGCp%rj1dzSz3OFQ@t8t&8a?RA&naX@u01fBEN0_je zKOGFV^QR4MYfcp&qvIn&;SdXNeAH`2@D}py4L7!tj{}A)J zaKmoSQ=T(#h;t^-z&JbZ`$tao3vL-$^0JK42>hm`xte=gJBMRMci|p-PU}Zl*;~Pk zF-jO3Yy47F9uC~d9w|LUCGSTOEHbSwte616b$d6`^U{WKbX6%p?7AEXCG6k2mc9S! zf8%~b(UjcoI)>kqah^asKl z3Y*U)=?-LruM`V5-9hHxLw8_k6q>h|qDH70s01)H2~ZrsWPzA)uK{%dv+!dhkm8k| z;B=9xLwJ%^6gQuRih&R;`rt18@1Z`x3bqRBgPvVSDyS#mCLLZh#$Yj9^Q~51ex}v{ zPA!;z7B7RT58OJUk3fU46IsAu6s(Vx_Mm4B6>EgGa!f1o!NwObdv<+HmBbOeKn($% z1MyjrgFQRFW3^(tzl(?+iLcz%O2m4wdH6nqV_Fq7D<~js)rwZ*Jpv-gnx&$LAjp|e zD2Vo;6}kx6sY88`W2p~ZGZ#V$xC+^zsi+W5!$s8x|NM90=b}Ei5|=lqKA@2BoiUJt zz+oT^tV+G9xVfDx`EW#1SI`g5^SqWzk0%re&?s~v(o!H$c|aw?;0gpW{NWNs1%k+z ztR)3@Dydgqg3V+KY;T{2z2b%1gV&Vy05^+c$8nz+?A6d7{LH33_yHt1Y7g|=I!x`s z1Bin5;1yH9#`>oH>+|0Q|B3%q`hy*o{s0P&D}QRK4}Jw{Eqx{{hRX$0fgrnH1Wn}u z6$!FF-jBWX0qPB?Gx*j+WBNt|J)6$pX@;RQu+jIb)GPn>PlE3;r7z&#&93hlpf7;b zci3`ZN$I#XY8x9AI?v6#5gQWv}qb-`Q9n?W^i;g1ILy+FZI7i@sK;JBqOKqzuN zRU9#KX;N}LC`NUzO@XDu zyxg>>xS4qTh3W&S4Mb-!J%nQwwA7|E=u|p`=?hf~%xJAaR=enr!JS-B--M2&nt&T~ zxY2^*U_aw6HNi)SSNW6F1k@d=>PIa3ksSH&X zq8kt&K1pSi24RO`>X%fC>VxJsYm556h1n5+Gc*Tw%&0w(?Q354KIjJy;7>GFzfw)0(1d!xQWc1v;H+crYlfa+f0CZSwRvrlp5Xly zAZ_RgP_3ybz{QWbJ+6_j8TBbFI<0QW-@JAtD-JU<>fYB`ZoGzOB9za`+!^NW*L7$`PG!e)cJL z-0xYM1+14tC%l}z+kX+|9h-Iw6iAcUixb-N-$I%L2mrd_N`aQr{J9GO0>VKy4z>IG&O`+nijv_z4CGf+GWeJiN`^Ij4yt6B z%@oKFxAXbmQ8ElQ0DOBe08}!-m!nO|a0tiS6iq(h^RH7fWP@C=DVYNf!GS5d#~|K! zi(Bv^0Z0hz;K<%Zos#B~5Avue9afCI#Iqjp+(AZ$X&d_;Ye(e6Dl>KCUs4fOG)!;a zx3SmZ_@~E^2Rtr+MEUU4k*8goF9q2cy7Cx~Idi}OhZb&Z)!~H(@5f+@c#gZq=>IbG z8-*Ko(IDdjHHWEXXdP6`z+?K0X&GFte;J&BJ@6FvjOH4DcBS_yL-So2YrX>}1kzt@{27n>A}*%g;&q%BXeYhx#U% zu@@e5wVfN0*X&KZV#8UcI{xWN47{Oqz=%`1aIUar$+^Pjw>xkA7~ILyHeA^`3E`M) zZ7}~*svF>cC+PfQByjBuPX8%!hIac;BqK;GxKjT-23UPS3C1aK0t{uui->YOH9G|= zpm`&qXuv{wQ~b^e?T8aa#GQ0nI(u0Bszq;74e^adv|`_d4K39U9pG}D;VWBF1ouYv zz`5{HSe|vrUNGjma{|1z?i?ELi|l6hQ*G}eb#1U{c&4GFz+Jl+;?a(i*Z?1j_r0?# zzV#e7`D-${YchO&v{F^^-VmjhfKmV!b&>={1X@nL1e6KDX3WFK8I-s)41U2Mu}fp! zxO+F|;dUrM4x})6kV+3I34X4T%vO(nMpw^=Dd52X;+?klh9cj}4y64y2XQf1dPjRa zJ@QUG{T*B;Tyu_A4Vei81-K#Exn{--qS`=RYo?k855V&T6cp?xpb2e?C@`QVInZ#Ys4#A(3Zs%LjPDagsxattfsO+W6$Z@|pu^z&q^pE0*8YGCz#))t_5B>k z5ss%W$;a`Cp{zLOaN)clZzPo4e^VOoKy!>C8?G=tdl zl|3|+iXOw-|NNKs5RYPh{TGT1Dhv#TV(VpKkjg(pQOlZNi@LwCxgUB7>KBm0jVYY3 zB7*E_yUrQg8-PvxwxtN~-js)5#9@ovv=Y7**KH|fIc4I&eM52cr?>*hvXCXlOu~)? zOyCpzoyA8}0rgR&6k?_}x2b&$_oLs6A1NOe?lpKr&tz;hM{lJXiqEBZu7LGB_A2lU zzz~agQsV99m)*oNJnO{GM&3|y+C8AEppt5O$@Al&b$JZ*%<%PWq%d(j8TLp?#N z=TgG?9JX9099|}J+`UcZQE*ZT=a9-Ha7rc520NU~3Fkj;aHzs}++A#gbITR+&hlaR zB;ah>j?Qr0{Vf}uMOUJ(%W4vEw&n<&lb0si<=5l;%ZJTQz2>YqguiO*{)5Bqs*hU6JzgX7O6KEF%A zc`{A%996zD6h704&wU9va-SIYB~>2j=UcLg&$0xZEmsPhCL5eZHxQq>2{>D?Q1~zp zj5A7Cax-^N~iFk9$JI2|UsS^KrLo=F^RQM{M~x=FG>fxymitGBd=O_nUg7#>r98v|Kg_ghCHv^-?p4n%`_*&XW;{Q*QjPmY85|s^)dJ?m zo>7jwevE6)_lUCXKgZxN~ik9+|M1S!7XneyZaR@c_F_OMGi;k7Qp zDpw|iE^bZWz(i1P`!?=J_hj_Ia{;(+>XSl)XGcG`$AAp~3ylx$Cd3P_E5ZpYd@d-6 zcrU`t{`LfVV*!InZ4u&x9Z`&c+Cp%SvZLuCqA2$W(TST#oX@C5;+?8bevQ&Vyfgk2B0gFC_Wh7dHrU!goz8!jyb z;BH6BZus7io)(`WnAgplo*+P2yC}_$4FT7TU1;gYXjqq&!4ADe6itlBol82LS(W-6 zXOU5MyM;X5Wk|!=_!rqf1l4178k8$V@J%D`TGa5a#OYnrT3qk?kSqv{XA|eC>BB{J zHT=009Z||EHH14FAKIm^kg|f8l`9O@ICRia42%K}Zt^VK2=qDA!Mh&9z3y*Mh@r=1 z%@E>5Guv6QO#I%p$L&5_cpH%2zgIbLkvevwz+SrUVAm2hxdWTK7a5rd-y(}P33~wH zl7%RO1t=jax+LC0?qFyP%^RnrYSUqlYB;We6t$`*gB;;9^V{%Cad1%!*$f*)FACxk zK@k=5z(`0GftHV7<#0rSQw~SWNkE4qo5-9<@9dElaxs&JUb0`j1wq0^hctc{#^2B= z3Sx%qU-}Jsc*5J@X)WY!81ntbkSnJlQYkQoKfG^GIEYETiENKGLmo;MXCG2Cf3}eW zf{b5Ix|}Y4cmxId;6d`oiIodgQ;YN*S?I=|@A7Icb8hT8f=jvVs9xm2oLRJuTrzgd z_0Y$llYTMr>zT~c<>yjSr{hO|raI?r>NZjfo{A^9ZpM7Wy#56vF^gq^dS=l!^1GNT z8{f%*Cy;GqOiU#^!uh1~IJKkjAVOF$M0f>R^nahdI(02soOXe%}i=#Ox?y=6U%iy)Je1jQ$P^rjRK_XSnkNDq0Aip z&~q{+keVaNq;3=PMbVv5Z^@iy9VB16U+N_$YH3W}CUl3KyO~q1jj7ud3C(z@50Ou1 zuuqP;9{P}IkP>i2{|6mA)^6>{1JWne=lyf3})bkE5fxU>ENIP-m3W}||HeUNK6&%)qzm0yJn0Hme znjZcz(0-PO*5rQXK%d>Kp0bQ%ud!ZI)zW{DTKd(YDW%e}r@(*q?brh?X;tV>2g7J^ugZ9j5y{Kk;(eK6%i=E9Sv?~r;lJep; zu4^rdP```eS&Eddo2{@&(p}%Q!m?%SI)+YE`BnK}Sz%Rvl@(Uy=U8D?{u@?Um46#8 zx7YvgR#@do@7vH%P z757M;kNru`03?9ymz84+^7J~6>^-tGMwiiV{xSUF{H5`stqttH<{xov8Gby1FkhZr zi5Ku@=7!}fa;`>%68birU5^#sG5f&ge`!TIiF_l5 zU+>=m9g%Xs^Zr73+**}-TM8x-_s~js9I@e){A!EQGziaVTAHFi z!mz&Xm**(ik%te(ioA-i{pFcE(L8(t6f~#k0ASR>XP5}Q?o$0^IJ3#0(Uy-_70Ekt8r zU!!m1i}VYJ4P%FnnPz|@=&y)dIiOg*l5OJDPEm_Ve;sb6f}2O*$`|6M$oK|;Z3RSG zC5i131ddWnJ21qkfR3$>4@ttAUxbi8rLQ0ogaoi}J-e_Ahlwws3U+c524UH^ZODm>?klr)s_N*BOv7+`221G*o(=HC=PZGf%JFS_{_u(^_dAv z@=Jk(JA8v@(|jBV8>|V&Zsd_PlT%#s9$|4sEf1~-Ym(0w7;b=obNluYDGrz4E>1>^VQ=FW|dAHBv>eZfEu?ml0KmpMye1N|Zn zXg-Y7k&pHF!Am$iT6bxhc;-3Tv0Rs=zD9h}hj~uoKt~+^e6$1ZcV5E9Q<&tfU00N* z1Lj)%7-rMmjri)41cEoB5YEhy(EZUq_3Sa8M#X&}w81Ss3NRxxbtA)JeB=TNgnkLE zdcfy*>hv2amqrw zfRj9*$sgI5-~6%*{(AB^PrQLAw65mE%pzX)-h(TdJ+KEsE@a(YcY_YEiPyt_Ic`9m z*P}n}5=(F#1ZD9c@~%BJfzHt`^8JYiAU5MD2HtCKbyZ*`bCnl1e}=QlJ{(Sdcm?D( z#~+^KT2<7tjjbtY{-ATmA)KAUpT-CrG2jLzR;%`+mMyJFmHS!;l|By*O!+&7H5^>NjPF)ko|n#%;9*$2S$>hBHc8= zb8H%kkuKcOreOns<4z$5e1>mC0ql!$Zg(6Lh~BFVM^*(J;@nT<&-lo3AH^+oAJ=qm zzH?{S54Qhz&da{s-uKJy3;WLyAKLp4LCriX`zrRn{#KUSS$#jwuv>n79`88H-sfuT z9bukgcV5OXoKWXh(DJX`Q^5f#PF9a>U&rb;?n-ez!(xc)*?t~xIBs2d0*B>@piTQi z^o+QE+KfyLpMj2H%u8>h1U5`ZqkAijRfDfDf z{*U4B6Z~Pzu;#&^OXcVAIndSIZLE3lw>q%l%fmUw%fBxres7i^h1u%q_}2atuoZb7 z&ol8?%DZAamdtoBwxf8)=kb<~6Nv4=^9-J+Vmo{@-iaMsa_zhD#XsXCskEiz6q0dk zwNE>N%WA0YQK`gt?OV9dlK$iOfjiQ0K7F!d>}rHiO0fF(^~B+=8r-nwCI)!7vY^U) z4$37qsej!+2+SkQ8!PW6e!%3s!X|%)G(sWM(!tmhK;{%%rCM>U;@Xc8dxk9`=u_>g zVHF)?KSuXjxa4qOi&jeGShLisQvjBRu_=FIf%KX;EqpZ=Vu#I^_MwB~YuDYOBVCXe zv;@vlW+e8+jo72-V>^hwLKuo7bh(U$>T$tCje$}Bl8(!6V*MNmv%l68J+$yI7Q&Aj z2%l=l3g!Gd3rw%UeFvk*TbT@Gakq$Lzjj?oj)^QWQ9W(os!$@bL`ld(A$i!1df#?O9XI4#I&;wSuRke2AoTbF#=NiR}sx@Fz zwX|9Q2^$eb@DIU+Jh-%B!oTM*p%O2T;>BtWo0lLL60wj>{Bn#I!7XJeMdxT$f`Hgo z43e}g<{Ar<2f8QPG5oVy-!qzo@;_hC^0{L$2S{qJ%Vb>7n3E>aS{Z4p#cK${>Sz;% zc)X^MeZY>ECbg=RYfs7qHW5g_38jh7`F3fq4#tl8@%(!7DK(9a>C2f*VkAAwJVmRe zRnj01grH7Xicn6z3&_%lw`xwxa7fQmPC}l~+7YE@sKz?^U8fPK`Kd=)vpH9mG6`fN zl*QT&&Y~zq=v&Q0;&noL3Il*PlA_6|q@8TposTMFd8=c35fGEg1yy!V<$99NG{(PJ z({18zBow&6Uw>QfV#2)}9Z0$cN-M*uK#%qeM)i@u7(Ow%$Ui%6# zXSO{mTXe?Dgme(hg7dNk;?=2+F@HJhS8_4svk>0=VM@N7f(^tb^5K=lJ0T!i=U<|&z2q!2c?jCs} znr7d<6sq?@4d1jke!Anc`0I_Yz)^I^&iGz{KiYT*2EV~bT5bGw@Y3FOi_S{bV0!3a`xfaH|YEB@R7x_j5D5NvzG!BFr@+{&da3 zcw-0p3IMZJmbS*%M#N{}hNH^os=;0R#tyiof?%wQWyIRXp@ByB8u%O%h~sMZ0qWv3 zIIwB#I4t>*b2Qozb2WD0jKp7qt#}r@rm>?P-fn8p5MYMTpX2PYm}^|k-gs{fl*}FY zsvS%kd+-)lUF)gAb<##i?58_mO~n?)_p)b>GQJRf&Q69$u#R_t1Q?N&-xHVCobK3x z?m>@BhoVHh4gK^wrd4mS4t>tP+Aib8QHta5Rg4JsPwanYSt!stfiA}aWlwh;R@kuU zFOV5-y3EYzM?cXc8q7_boAR^=P3#XNcaP*Y^RcfRQEd}ijDbUawtj>AHFTzlP0Z!5 zImO(EFm&&m<6sSF4?Fpgj6%EAx*4Sp#Z~7vf;f$F#Sn0$Isvx>IdH&$&Z{Nd4zpL` z+{7*yuVmsL7(b+Zo zkpm7~K})rGBLk2LAe{s-U?MDr87`>>$QemnNc=ukbRtQtut4SfnL(KaiWZm?Jz&mk zb{VE?Bd2d}linHsSq-cdn{-ahBFym}O>nFCdic!|$kX>{rr#OXX|A1juHcr&LD57Ze4N59Bq2=^csuwTb*l$AlH2 zlC?l3CFk!+g>87;cAc^sa)|UpLg7q zb{CiGv!myn<2M#)drO`4hF$dK1vQ}KzF*?326mi#cNVm)9Z}GHI;(Z}9GY@tpY~o) z!S3Pmy8B14W|Mz%n8prPhiM=Da%aNga}#_Xf86q0ZtWa}pS1N``@y#_0XP~dV@=l= zq~Q08p}2EZFpS8=`-7D!__;F;*oliVxc|b3q}R-VgYW*}ZwQT6xkyI1N{oA$`w4z8?odLc8hyVm8>KZ@A0Q}oquI!FHNA;FsBzOn&tjj!ga`R^ zRDNA9FC${}QbwR`7e!$cBdJ2r5Cn{h%{m|bFX~)Bpw3paPH80SJYv*&`m5Ke%Rc2x z+Q}`4y`3t*{u6enw388NXYW_9Q+7h=l#BK4`T=#y)(C_16E#|Br%~t8uU@B4x&2G( z)R3OkPL*HBwQvq5Q$b|w@e_gwYz-*Ft1yiXy6RGNH5ffT`d`$)en9=LX8n({{v!;b zlmD85H3B^SPIMOY3Uh=qo>}5@R|j?oWhS> zZG9s)P$`7l5LHmC6*j*@-@Z8o&3}dynSy8NG@JjZcr0p(q?N{w!Y5|Dtqupf_!urc z&XfOLD_5FIaUX7qwG^bGcEBSfqxke^T}5T#;gM7X_;hoE#?i_~Z1y^xyXjfaNDw=oj5-Wu=g-k2in z7}b{}>WWk7L(p3E!A^Wq5<5>7!)`{VJBb8v5v z@`JS4@%n7=!|5F_;G?K7U{|G$J=Kn#PUZBJd3gYtGS3^Utk;J1AToZk8yh0IDgopo zX>Z17b<@WiKDEk%vp!=%yo~uDs5;h`-;J-etmehvEr29ab>~9g_NH@CNI-d?uqdQxZHCBFYuW{ZXQnuGRM|v)9+xd zZN=T6u(B}?g2NhZ*xjtPuN$^5zW&yj%h?SDd;jiudjH$;ZT*N{(~lc`{o-2U>#F-I z9^8{Zqt9{Q7)&X;e9S@9zO@J64}$l)o^QbX7|*lcgk>Y2_%si)EVOJkqWF5sz|TsO zlsrO)<##t~4}4!#BjwI||?7hb9gB{Xq)a z216EnY^SK@PI#inEjs0+ncnDmXkD;)-q%ZW!HDF{1FEe9WOm zD!~QIYMdhlaB;S<`D?g4(7Ydt^n6?+XzS8l%{(*~NA~c^h4TxzzE7t^d)VM{lHv@K zk2dj_p`7FAwWQFeFl7?;U1OAI2{}bN0;ZLZ%b(2$+uk1vtgpa1-7%)B-`GyiRX9u; zd0-^As!ai~D*sjchHwUMSwLne=1hS-1=}w%{y|t;xi|h|KvkT>1>1GwA0oY+^1*hzU6~d?+;}i0{#N6`;jy-Q zZacyYleS{))pyjVl&9gsky9RU{R_9JJBm{xX=%)L8dr>_rxYBx$1l2bfqGtE-jDIpCQlK6fXnCy{BVs>5YdjiM1{1ID*{0A2R$YFDl^^eU(1V z`3}4i$8ytC7N>ckS3xmvtZhs;91=v|f!hMb43_jBkF{Nf$!#zLlpC{~NmCNzhgnX4BN*S z*R1Z2_}Jc);8p0Pw)*}ZF;_7lfOX-Za7q91_}KoV;9)Vw#1s!(^NVL?vSZe(7aYDg z?yJILS^x*r_md5Psr8Vl;j5JwFty=yX-}S$;A`Us;cGnhFe~`rSDfPhC&1uLe+edk zgGUutg{wTT<^Ph!+1F>2!GVL4yJ3BPk5?8={?^K4ujW64x8X|AZ6~lkliOMF<2~a! zWzMEvOjs9@fl9W7pwR&)mbz_l1_>J7+oJ#+NqoM!CTV86uW*>Kc@{EL|bOK5iI z^(ayZJ3|nP>z?OUa>AZnv>M5M!7=A?WJxmGx*E|1%{!WV6~E#4Ilz^gUsbGV!?Bz2 zuk9~#Pkh6>!g=7_R2%tHb6dJ3busBk?D#ELy~O>;e{cymKgGd`gioIzUvw2bM)YI| zL#S(mM~fjmpbpkQ0vUu067C1KGB4cTt7R9|blF=6K>K^UPm^*k`!xbWWA8Dx=XNNy zUEAL!FWJThaDjyg0D%H-Nw8cVWp>oCM+~POa=~wDdOCkD|lc z4MggBP=n#*>P{#SS|Aco0Kf!2oC2w$9|viv7`6D=?swx`41hMl0N@}H^>xF4Uz8JN zO@AvU%Db2-FhjQ{O2zi}{2AvQ_x+kXiuP~BFd<^b>b{p#1ipHE7Vg9p*^eho2EPe2 zDm*_~xQEBYUmvjeUpdGm0pXHrKlmBvN8vBO;{4d~VXI6(n+&iW5rfT=Tu1@Qv&6RQ zqh^EE+86vYSga$UBgKTxWgk5T57|u7CB+O+OH=3Xm?e+NH%IJKZZXy~#+!@$=fAVA z5ifc~#hy*Q1P80>Ep67!`!&bWDs^`BBWVvJrt^;|i}_co=AT^CKAUP(2|s6FZPp!B zv(7%@xQ=78!F(h!(fpiZ{lTA#1T72uy1SHogn1=?#4yE<`G<6Io*^slKgLgYzZgI8 z5l)pv)aAVK!+;NFe?woCpEy6>xo^?Es@d;PfEW(ZK^Vq%Q-WgDw#8&E#T}Fau)skY zv*d6kaXvuHuf4gdhQK@$^xqf6SQ+ zK_>qkR#1`gx#$ZpASSClKw`1A7GY=iYea9&Bb;(iDn0>T;)RtXmtN?TArquv^}*3p zTg5pnRuw7BP)p-$5{Yy!{;U?0FfsG zf^eeCZj+QTjop~z(f)nlF8B^7Sl_eYJMWN1%&K4x0J*G=FW@OV!KTO(P~EdEv?o5c z1De>1b5J0TJ$F)i&n8l!#{akrxW5y*>GAT4du56k8$5$)EjuTB@C1_@usNZBtyQCC zF(>m#EaqRvr(_-f*<+ucH~b60T>uSv2JElDoIfS)vi~o%bK(T8`OnyF^RuDn#y^p^ z9tc_fCjRiOe8z(dHP{079^{oz{wMdwYlD}jp%ua3r?sL4K8NI-4jW#q%lMv_>>W15 zXfA?;v5WW0GyV6lX)Gcq!oS2>1Ol!8Sqk$E-gh%=ik7GSQ~Ypu7ex(hLx?#+$yrAZ<_-I)9w$#c zG)#@Z)lVrG4S-98)hH+%0^sw*XHn^kBCL#6ih=k^YBVtAx>4=DsugJUMw!@cQS#5Y z^s2ApE#&<)#h8EW-eDh{M?a#QKfw2p#~S(tw0##tO38qijhvA(H6P>4vHFys#^hxU zKDF^E-oT4N2N>&KFxmQE+zmD~6Y-PXt?Zt~X{E-DM*nnExritagqA)CO`_LX^NV}a*0bVs1KkZY;Kb$SNXUz0J<=~q2 z`Sh)i?Z8T{?v-+JJ0J@B_4_*)PBtq1)ErhhR{6HksWQ!||_(C3Fp`rw4VIbnG@!4bM)CE0}3lR#| z6#15$=t%9=(Lhzi9}G;+_0J9l!qNI9F!Q64`PId~`e3LjKNLcp8AStIa{c(*bF~^@ zB)2Kz3u_tURR)2Lwp_3Ih(24Dlw>yIdd+V(Cu98gwOUWO#J4h$S6Vl}@=kR7^;&=_ zsA-cYuB7^Ue-N0}(9}T;>ZD2E4wN zTA(!K^ZKhIT40{f*T7(~GOXF!fDyP}s|(inBe{N07)2ZA@uyUaRENK>MVcD?Rh~M8 zeDw{iA{z2(Azy>f6DjotJav&KBUI!GM@qEnkgqZ73sg0ki47rN7-63kW+DG7UrCYX zuL%T0zWiWVtM`Y3;fNGRZ=`8=VjS}l-^_po;Rg`=Z+0ug^hC|Hk< z2$a``d>(ID3(St7>A9W=i_UF`7I~U{Aynk?Go;-<2ki-jgQ2p9I)6k91si;GfO)Pb zjK&#(GBn$Vj#+VQ$WyP?N9&3`kz2Ittn212SKSqM)zxXsgH@i&`GLA7EgJR}*Mrje ztP55xL#B|&<@GdR_~l)o*ZMGX!Ye#A<(}{|AS9GGC+j-CmHWaGZMiR084UX{Ol(lm z1vAbd@awg_{M?GUT4BkY`Pyx+1tnVkf(7#zXe+`p``lH*03bzX&a4I?ccqYSr6=sK za;pq7!>iC)5ua8SjMjPeKro_v>VP?-bRnRymR!Qq(BKPr2g~lOuk?Anob|~i!qG}p zXDb2H_3Aa~(0We@O|^K9*H`U{)f>C*o{mLVW^QJvm_l8alOT{@lF61uTXc=Jkh+2rWH4a})gsJKf7SFW(lq)9c;oUT1oNJH6PQUZ$mI&ZzThWkGE|CX*g*2nKYI9`V=v zwA*TZ0j<2&r@5+0X@%9AzrG;|mR;b}$`FmDCatR0SG7!^H49C28)G|nZgG*@RaTb2 zpq%|TGu_L_DDC$2y66(Tfd}a6UcJf_@cO-=31FNa)`ah4F#Hj>P*zPt#NFV*fQGfn z;im9puWz}($`|H4IL72EOt#5@6h!lzCP!p;y2Jj;I?xKJpZyh{{Jq@CH8u68-*+(p3G^`TkE6H!o-dV=w#_9Bi zJk{z$V@=^jfA3D0Z|!vj32b;Lu5mgF=0%WIs`HH&MHu;^op==r;P<@ zc!b$ZWMiZ3`OGA648O#q;Wfyk79eL>Rv>2tYum)hORhytK`TTYN* zJ6vAy7OiK;_*Tj+cRGy~!x}I)Ap{{P6iy7HV5L|PQn8Su(JTE}yb)-qb8=1a${ax; z7>%HBNQR8D7A*U_Ga{=O`c~F(rw@y`peSUB+2IVJyVzqQSU4+XNNW`cwgIxGH&}0? zj7+-0y=Nj3-2@`8_OEneCA5dtdpKH+G`ySZi1nt((nmRNrf#qg-4m*T%om6#?zT9f zExt-PFL@m~@M^9X41h>{TD7MRQ#t#4*;$!cQ?<&dzs`%bw7%YNlvgnrf=VCiNcWD? zz~bDH>fD}Cy}P>JqpGnYm#@4aV#)$oj&f0bekXTmcw$)qt3Wtn1v%2Xw&-Pq-c|zus70%v!@?-_+#N%fm)r zd3}}9nwh!`#VEB%xV_-&Dmw|K9watX=YV0@un4M@tCRnY(yrDkASLL9oaQS2T z7G~D3)(w%vA{2~db&cC(e{N$%VVrO{l&ZFu%9@mk666>I;Td>ip+K{VCst8gbr|eX znp&eSQc}(AizNC3K#h|Fn*z5n707A_Rs-y0?zuVlAZ(D25~O-_bH!3Y5I={eT7+Xa z#(oe;_2h`mZf{8P_>j#H$T3O_1l?p>1LDn*B_q2?5}1+*s@@B_5A9MzF08ofT9(6ANxlK=TG6M~2ip7NaV#XBF^plNrY1pm`dwC4}Sz(XGx`9dSa)M6Oz2 z*dNwH{+in47%(+o$RA#&HPl7J3KY4vN2_fDgn$O9{-9S|<%5tHS%E)DqG0yHXh^H3 zC=ted3S-R-XaV+H*jMl8+zz1ba2Ud-C!m00cZ&r=z1PU@DP&8<);FAJFcCo8{OEpY zDk@Yn!T=ERIV&NQ+D`ULM zILU*3B2+*~nuI?ivdI@2EZ*&jMuG~If{tATg)Ua)^@lx`A|5jYiI#yo(iTseaP3VQ z<8NQ`gEgzQNw+Vaa7P*+8RHTCgVid4xKT-wqreN7gSUHi_NNZ^=mW7}9(d|Nb@*+l zg)#xEmStKMlr?qi!G>BiZv{3?4bWCav<7O4v?zACA#J7C4{eB6Xuzzh#r~!W^reHq z!{JGZ1X3|J%f31v1&l-jsKgI^h=N%L`|;{Js9~`0G55cw$fK>eR^z^Das=|&cW%$D z$IsNM{LQMz+Z5|9t6m$CUNwN5K^lg@@}1kS3*aZ+dwsfh0j6RDw$`jl(`$Vzb+#a^ zdm_3mg~K9IrktdfBqK^e@OgD?`1N45uEb^V|Cuvq>7d1d>7i&HIJGuWLl*6Zifhv| zr!BluyZsJriLN@>Z3=4%+^!ja%>bMTd;pe;k?FyZV8TQ&0yKEsxMj=TVP9SKB&@Sq zz>S@N*If(U4>!5BYDYRL;0^^Npp6D|&zm(l+!%^v*s_DHxyi?lwgLNXEmR+NLn~G9 z&eS{+@PE!`Ga^#ouuQ{Gqc#t7NxOwV2rk!d<=ebl@L!1vUcS{sLdFzgT(CNV;7YvT z%0D-_LX9MuuhiB={58>F6uiwBrXmD93MkE)lfWp;O3DJes*B2xd!^efFjWuMD%e`9uS8Jdl=p0^@jL{C8LgM$J);K9FzoY=$Ml0v1l!$uF!Z`6U6ftw^_FSqXCoT#S@!pddN>FQwdbC0 z%RSweJKGjN#XZl0GSxi~OMF>9_xffnDy|qCdoYIN$Rg|%d{*4FK?jIQV9CDO4MzxvSN2xVR0VgbBkPMe3n72G?g#6mPz$j>*Wd` z3gN1SpdpKFZqN%$%H74Tg^~u;W(hfI%Y3Snuug*w`2)Hr4j@s5&5l$t*yB~zLd{-9 z?et9j8t&pSr8Fp~rts%Z{$K;M61>x2RU7pLpsYa|s3Agz>b!1}9flQ&)fzK%m54EJ zZmBURtVB$gngBV!6+@sJM-6Pm@{AXEwj)f_z%)ER{>J$GJizN^l%hn1ReTnLSW@XC^q>_Q75KOl)h$C9PdJc0ezi z!nmRyU5;2dm#`CtN?@{wqE)~RV)k(#rsV2Yb8a+LG(o{uL0Ylcuva2huYW7|x z_PerHQ0&IQU|F6t3CB6pSyW+7t#@M3vrRfBNl4j?q}BSVu`|XvxmyMhgV|eLAxCNB z43Qf$MTD9GEDa5jCJg?#0bwGLpeQihfPPJS_!^}ijpE3>ftqG)24p0SRS-Kcs+2^p zWXu{B<5G`YNpU%El#$1ZF6T|+>kpdtcwOm zLR!dO)zGBroW^=aI(xM~Jl>oWI8dx>0@nz6)OnR0?pTaOPH&|X&0UbiZy`pY545t< zVlB5cAH8qz9wlCp0#)Zjp2n`k{D;Ymo@a-W#h9^pCK9AhU3!J-i3Cgu9wwWGkPua% z0&2$)Hd5>fR5C_FI9M=1StZC3t$+3s+$as2Ae$#M#a=>|cknFvXHSrw(_kgAMwrpk zKntsyM$cdg)oP37Yfw!@9h0)4*%i7}N!*t)*`5?|S63&XG0CXM5(`wSl&LnrQDP9< zk~AdMs05i;gN=$xs5Zw7C5!=932LVaV5|kChjoW&n?j%Lvh9PMJHHIv0m1_dcy046 z|6&OhCG!R^QI=mictWWwZ}5boIYzv_az%8)#_IiH5Hn0B>@1iot|n(HI$z1&r0I&u zsGPDYORQ~{C9@S~Q3Xe7bLUpf(QloiXHb0-j*Qnr&`!z<4g8=MLGQ3I#QcGXKwh7y zr%#6r#0=J?mBj_)Vs<-cx#Hl==H!Z-K9$S(v?<`+&TL}{ooc|-r?IkWUfqx@M#;tl z3>?Qg`ifAH3>`HHLds;qWO#(G3du;yj!rf!8r9wgQu1Ox2f_sT#D5&!{I4s8y;Q#qugR6JY}=W2-VHmU#_m>eb9!IVe_{ltu!T zfK{2LUfK33>UFB-l|orsgDM=V%5>fs@ZFxdWbza(9IDE?*fQhAvHC@pC-iBjiY>QxSZG z97qic8&Cz`&93uh8iawq@nvH7P2!oVDuIy3EhDUbGSDHJ6LmBl!)+DGvX{ZRr$uCv zV8D`i>0)AlJW?|rnOdomQUjHZgO1;_L1UK>7VA@aNfpa2Qc(lUIIqN&;7tlM%8W^_ zd%#>s!eBsJ5*|rua>7L|#Z{(AOFnRwrY0_X*dM44I&U;4vaAs|*aV%~^D9cqFJ>1* z+nDsI@UfuS|AndHFgEmhdV^sg^*~T8M8xGbdf}XW+P(&f`$;Njpr1%A(%j)szam=KK+qqHHD}o7n9ojVQc&0m1(1T z!DxhZ7u#UfZfrQiB42nyERrRYOh{Gci3vBM@6Et*Hrg;q0?;%2i@Z$cbJbuOiNT-{ z6apq_Nqz!EG|98vHy{GbV4Q)*w`d z2ziFHG^LBySFhIPEemI1o@(mx1K4ZviA6kPx!gf(3N|$HY$rWDUiyh)^DO|{Ga=fD6-{DEC(#()bE76uonnH-2TZI)aT=5m$M7jzm(iQAPx(X-K zRWGP;mewc|$g)~($^dR`!L#CEFX!e-u%mK1Y!-|P|L+zl1)L_m?Fj*UY zF?U1l#pYMTiZ4sSXepc(P8cMUfDO)9HQuo3aNY>bh#V9uF{~OLifty8@}hT3aCDB0 z$<4^`&4oW*4+u}kx(b2R9-5LAnraULJ~T0*D)4d{K(m8cu}a8N32J1(A_pdzC90tP z2*BX^=II40Cv#t&*a*s=$&5B7Fhl*MD|3=j+AK6=?gCe70a`Q* za*rBEZmuCN;dBFyklilMor16sfJux`^TOZ)dP>oUY1IuH&ig|!2+-&1KcF!nRJmZH zFqak!v+EhfFwM7T=|u|=K_&>cxmv>(9`@3(+s4ll9J1Z8@<#0L?6Cuqn5PDLuDV`_ zo%ihdC1vH*10;a(s4hdJ0))Z~(zG?ED%+AQsv%Z1=!T?;S?MlyK~-I*L6&eD=Q@+T zIQeFn77;w?kqDl8ML?9d%)`m6A_04pvAiataN;^J7Y<$rM&bN*U=+?og}{=>Sq7Bq zBwuJ0HvF)(6ye&~7V!dtY@V;uqS=~1TZ=+S^W!gyMc2=THyEtbV7jD5ubZa%@mGz% z0Mvfk%4?f6F7p{HCk84fDsg=LwX>R>H?GuHI-9hW6Yw_~e|JpLj%|K;CDe~K87s$Y zFa6s}{<)X&cX9y0YoPRIim_X=-f+xRwTubiR*;xbk&eZZ=kQjFX*(drO*;a!SWPGx zZ4g}+lNU}{1e}&@P0qzPD!j)7&&4;wP#*_+s(!T}L}p_>W3089F+gp#NHMl|3mGr$ zyO@bju|nUljPfLf2e0#5EU?%jUUpd&w61e*OX&BF>+qOaaUn1Ks(kYXN>#&{b5JTd2)0 zaut^nom<^mdFnaEcv_ga5mP#Uei3uX6XA-|ve_=US49n!rmqkr)s*b zu!QWjT;oeciM&di@{8PPDTm0tz<4iqnfn~R#XUWM&B0Ob4c^soLoQS}>i|zT?+U^2iB_4grRJ?4C_1_5iW$%V`QNq` z4ajMoY^cXmU16Gjs1jCUR#Kvp$t)2M7ErRWw?!ynkN1+4;kyzs#Bc;?OCyZCNl>iF zhK_Ndba!cCNlAX5HZDU9eYqluV(dm8yZ7YCsSutnh=dvv1+u0fvngxjwGDCPMnV4jj+*wmh{%*w+NY?j~R)$2HpQ$s1!`maPt66A@ECV$-3p4BRLo1-_ znJQ_tvPn)P#*&m&gwUp%=ap{KAyHl~wP(w+YGo&Y8Xp!~d(8K^{Z$cVnQn9p(f%Hp zd~&2B98+17ypa#U#Fq!TxIS456Q=LyE189w8j+EJlo4ZOOpr}paq+Egm^M*}Ho@F7 z&y;!+F_xHRj~W2=mU)(#mB?j@S&1l1%rc{*^YC1C!GQ zk=4nu&;?zPllnY;fT|E}wCM_=rO}d&P^q<4cdV#M;=MqrSoeo@3UyE+LGV`pF1XKX z-5^gZ;;VUW+Pw8XFn?jduKI55N4zs z;o9H|DG7t%x(2B5!n`=E!?;`LMKBHJ{48g?UngZl(E!!b_Gq5-F~2>px^agR7s)Rb zt?>9M;fDYX7jkqlOV>RsJWXga>kot#28xuV`UJcLeX)K$19mw&?QC>c9j-ih)X^d| zS;jx&H{iCP0HnrqMOcRs8;=^*(Hk(LrHxOQ0=OBc(|`;|e*h1?8P)GR_4L7nhkbF) z;%fxoknM_b@_jq=su)(zVGtbg!-86Z%- z(x-=E0S?CO69^lK{`S|2P1w+;H-vuMJ}!bQ&!8X(|=< zhii2OKt>k>VvekE0K+8#W*28D;D`0H{QNu)F)#B$K#8_zg zFBeXdSP<_3T6C4vAGm%kot=y~Fa~b5;IQIW!N9Q+bK4t43XzC5@RGak$2AWAV}B?D zG{6f~-Jk-&(_>I5q&u$xSk0rP`>RGdb!Sgk<{!2m1j|EG73|SzWdID9+U~zDMRnp! zMd4$?)yv8k6k_7wpUS{~H)==>j$&Z8v9?nv+Xr~+0^y+Wj3iv^!)Sj+s23k+qvK_n z8)P!s=)@UN^V_eM&lWWWi zRZrA$%P<+1z<~-?aaj`^U5~(A2l9&#D~$mQglvjr`YL;~1_x{~27#~cJSNq_bICf~ z7J=l>3yg!-V&`K}m=1=%M)*pXXSh)?YJrX^q6aW` zF$j$Yc%&7R5N!1ckVuoN(1NItu^7IrSPBUnC0wL2244c*i%%WX!vkwDz{*uOvI5DV z+5r>>g3cT`%+gP^n-k|fHo!@6tqflsF#E&wIbk1QFciJmaQkBoF1SE~!jj+0ahg1D zqFxfMs`Ev`G|NeUb4Y(&f{F}kDYsJ#wg#}m1WOkm1-L&_O*ZB=`Fk>aGi2+j3kIBw z#l(3cZG)_kK4ns-#ZRpE!pDZyWV4)(6NwP+nATwNh(JO}%o*A=+iC|15Td>Ra7z-h zkHXY~2aP^7osdyQ%V-A}@kB2K2zYgR`TTkLCGNt!jB6)5$LAKh$|$KoCGN*@0d9+5 zn11nbfiO-nQ?0Ib{$;*8e{C=*cLtT2BR%?fL(q{wg02H5aVAGmlV@pGJgC^t6=fD3}9 z`IbPT?i=Z>lQSE)ci_ElA_kL(mDoB}qf@8?Q_g}EYPP9fgUZ-%i7fQapz4x(Bxo^T z*&X4kGgg-Jc~0z~!Q;%TZBP{hNrs!~6@hDklnt*ZWP!PO3kF5r==X#(n8b*xII&#?4KxKM=(}0V z0Kmn4m>zqBaH@hvvBeZZ4d`5Q{g7j&Hv&OKd&1EWCAkET15<#e6prekC}I2Qup&W; zs(!{9?)hwZQYuQUOUPij{Yl`g_QjBK6KO$Etx|UI5&;g?aD7X}6l?!v^rz(-C;?8m zJB)9H1AEHg=MFSQ1%v=KcJ$&rNGZQ)qaah9dq51jSM93dhs*fK_FDBQw?oo&+kSwC z4JLnD0cQ^e4kRV6H(U$snAoNW^l8TSU;349R0j5|tsYBMlzgJ&AbjpK;N!t$ls53@ zW(0z4Qa$4AYCuJU)uZx}<#G!ig|R$Tg*a=$y;Yefmc}HZ#*lX4hAUicC0BrBZQCBo z$N{Eq>_qG|GZ@+ex1QHXZDY+>Up#M{eR4T34B~t_5Z!^ zz1b&ulYMEDne0h3N#-rHb)h?@bfpUvN*ubSEu?8kxq_eSXuPy!Y-scfa@CbI(2ZT;yg5l1+%K zFq`&UOM9`<61g8UpQ6s!j!6t3*mkD5OxR|Cl_4Q8BIXA2IdsDz$k42F=}T7OM6^|G zA%GqqkMoTzkVw=KC6erx*z=uRaMphS%Tq{1;Zi^;s1i3|CJ=qsu2(9MBeU3u8ixTu zQ6!2jH%^=s$3BU<*t~uF(8!eDUhsFDcdY9{#lzknPOQRY$4<+TYtQb}Vty~*Pi^Cf$S!uyiOn92(1FQZe#m6n25U)ts5vy)RJ49$bDRG<1uF%mBqN`ejWx^BP8N8F{|PZUibPh~obw=&wd-leJ}(}gzibtj zAVl2PLY7G^Je`gkfLxU5B!(27mm>jHG_tX0Q%}T*YWZ|w{VgIy?T$UT$QERUN`hz| zIwl6awOJ@;2As=*JkC;-vHKg$!dYy)WhTxp4o<M_BD$M+_6v(>-#%(|ovo zhd9SyFeO_05L5xAa+*2Y+D|oV<0G1G_yU=Q28#n@M2BLK6l%m7eJ4uQ2i&)<-pA}ha*^-TPZqoEv!{}qgKQQb$I5uKC|A6o=-1ac~DDn+dQHKJpX zZbwd?wRjO`l}(VugB`;QoyQll0~lw3RMN9j{}36$-Ykaj=c;t=PbCr*o|aIJs7b+~=&c z3h5hqlUQs+0mBM|!@D*r?IYSp%kqkq1zV8TL0=}cB@V%}cR3xFRY<+9hIWD-KAhEQ zMR&G4t11FtsTv!fv;*n^t0TY3$AqDCPJ)<_N5c<@$|%IGR+9 zA}~T|??x6%=^^k3nG+qK_Y#y=$m4~?Rzx-4E+Y&j6Yo6U4|@t7 zI|gmaEod6G(-dR`$J9XeiA-z+-%Q*V2mvvW_UzdcnL~UpwjV^T=l0S>-o!q5k0@hq zDV`Ba*zJ3eg>e=MV-aB5A|4@6Iehw#5a``yAh*Usx`(s!nDftw)f=#2ccGy6%oyw% z;%BY*Gca#5K}6Q@V5GJw%vfeHB_9EmN#-PP|G~24`_$*n&WUM{zo^@LWsT_{wWHP?6W5VWuq7W>Il9eDx zzQ&iO8|jK>r(L^4J;x6*Q4+$(g#|YDHW=C`21ZD~gaP>B2=WJ2UL0w)Ovq1(h)N*K zqYk$^zL-wiPy)bnWJa06fr&B6AgM)k#JTeExzAO+v-NU>VJzCnq7t?l8SwTKr91|2 zc-us1%o43QCQlDPhN-;Pe$GU>)2M5RAITzxEg`5T3rn$Mx{yY9(u&@e#}kr4_3`2D@n%oOQJam%qOJ+2TOu8iQ`fFti|8GmV5Bk9DPpwh zDHpFXKHkZbX;nCRvNNEaxt`We(6>YR3Zeo3**X$?A93XJVUEwo*tBwZ@iBNS=gqUK z-4gF&^2bCYT8zXZlvy~DU0JO7M7BkK-)9_DgSq@9#^eX>>a+{mQ}BycZRPNjp_3fxuk@cEGu3SE0q(xC*j*%;oikS~)MXXu)C#9W6CrArnJ!*s8p#T}aPrF1$#NwwEvju@0d{ zGd{+K7a3M7V|C6$=Je4en0HgCyX*mz@Xtm~W;W-ZS^MK-f) z8ID+qaG-HCrPvySl(&h(&04f_;t(JzwqPhfXW1)9;xTjU2y`>sl(b0H(o=-|k~VQ8 zlY6^*XV8(L0{IbXw1~}#v9WbD+NxGKUPC6xI>~55N8YVbI5PHr8#N++IA3nr zk=(g4LzP9z!XbZ<{4f>1Wa-MnyQxH1MPS^ZL^}C{<8$h8Rw1qN&&P-<6AgX|IoL;Mr z9G&pIoFD69;13-&gk5uZ*y@{O(zBZENGUqHlC%!Cb0@@E`Q0wN=JRuM2i>c%Bc~oL zWEa?lbQBJ;K0b0xc3weN-QwwSUGTTkqp=@=Ir=h%4NHqt1fvuMVEl2O#KbBYj zTFAG(jV|hmb}sCkQS+{~>U-=i`%#)h#B-RMGb6ijZ=U#Hy>-r6;^Z~K6{>;}?(fPw`>6<>fU1kgk{=5T zvUqbJdc>vs`gRe^bHJJX^~ad!`0mq518Ma<#^If^#M95%8-`$}}| z*FMTFCLmNhiQx*JB2Wt0G9d0avRclj)2z5D$z%QB_=XbP;t~yL?(pX zxjO=Z4M|qS0beYzQDYQt*zQ->p%kl+If}~o0vlr)OLj(qP)M=HbS`qI|51Em%vg50 zsnmiDgIpm`R?87C;n~cGQPM<9HMN3z?WbW*L3-QKzZR?x-IiZ_2!(ZO|Y zra(s)m<9P1RALKloUMgbgdO7CBnhZUr^ZqR8qc{wDC1==5l@mm8x z6p!j6cS}mX9@fAoGwXl#NDLvP?uXYLDG)iHk*og#{(-E&k14K2U7h|f0@9_^huVm@nw{C>6v_qm3W#`I2&TzU zJL<)%E1Kc#avmPvx;5l*0S>{pdY;fFMEt^1c0u$LFmor_SMQNY--g@;+Exl0!x8k({ERd5(+*rWt!ox3!S z`mHFO-CqjJH-=ylrL>V(4wKfTIDSPl&T=7C&n#ZFbk4#^NBa(;f`cP$xH%45)7!Rf z@3hos^5w`kwxzBP=Bt~G3OU?;hjpNtcI7M`Y&84&vnVanXc6XzIz{!giu#4fz56(l z+>_kav5rg@wIHy~%vrX|DPQ}@-uCT#+lM#qZQlvlx))<>Z~KP5kr`{&Oc4{{l)k<$ z>r-4W=zM~sD+pd@JKtP)U z6aAa0A2}=LWA8;yyE?b<2y51qMXR}U&PX4&LUR3JtdUu=fK67uM3}K&AZ4Pyetu6j?qWheZ*#x~&EknLPrM-KbqO46O?ZVv!j* zu#VctcemC#c@VbaEpN;IRNh;&yvghng~oCaLoV;FTi&|uE$nj_cpH|t0sAagD_ADn z?7SaSzK)VHVUX$wIg1@7YtRoFn>W#dR=rXyn;EG{7ySSlgjb8y?P zCMy=ZUykWa8QOgwf`P3qTQgb*$QKM!A05xh+M%6uYADiG00Vj=DG zXBKtOi9cHt#D6cIontG<&8I?2m!DK8nnaO~HA5a+!Cx3Q0?L5a~nWQc--n?Y#TyZ2p)L0%*a5^Ad7CVH) z3uEv^{pAhsuM-Cy#yPG-BiY5c005a76u)sna~BLacz7CwXk95lcO{BahzkY^>P{FeckncE zTaAN<8-?<9JO)o6gGY8gb8RsO4`x9N(xu7fP&`o%%n$Zu11LuU2Vz+e>_8*J5w&hH zYlWAREP(lI@f#PLT9Oe4 z;ptQk4L--4?!6R0XEf3*mah=Ul`7~+ctqnZEB{v5!_B+)l`i(g?9?l*ZLFKPJDkLv zsaqu2+D)eNyKyKBa@E6tu%ti1A6jeJ;op5El$aAQA{vtqAu<#D@FYSLpe3-HMSw&9 z4hac_v+i-|ji5@n9$@^nEy5f%@_i`YSW0ZQ#zc5|O6%YqS`Y875HxS*m;9EPP7rdT zd2FwEh?I&~OCFlXw-2~c<2$QbyJ9F_M=mUOr|i@7w(O-~A1Ws|qAG+KSe)5QjKFdq zuAGBtek>xYBEqI7I_qWgPA0$XMpkIaSrKrqF zx_=Z}L*hw!*#)lRFdlZs4i`USwtJtS(Ml7$@ld_N8G_-=wjn4`tf7vH^>;22#Fg8T zI?9XFA0kj2A8JCeMz-&Pba*<+gJ8{Us(1<`loUVq?u9rE?{s8-82;E)**Gvg$A`b) zcyNJ($dVP$6tHC2L7}YC>lz59VR2vFlxgS2&MoCkBeT~caIO(fZ zQTf{=V5yZxt#papdO6hJ_rn zA11TOc9U%aj9Ok;il4pe_~Yj-Uty0^WD)DsiPi`xC?$d)@W6>29j_6a+azz(h#MLk zXu?{g__5l}M}Gv&O}1@$+_r>mZCalT9#xdA@MLr(GFRC0CoY24F2c-((2gN}2-~ay zZkD&VJM;B;nC>DrjTX4XkKQ7_ar2UWg{93k z+VuhPfyHsqf?~|V-ddl4569#sE(x>mAwY}{2UzHn6Ms-U7PR-o`LysX`2{LD_lf)< zjoc@=<3e9+jg_yD!tm%mR(Y)O)@Lrf^_dT!yMv&Bk)>3}tT)E`i9+V@Ca@(vB*7Vb zUjbz=zt3WCT#_WY;Oc_utvEDeA1K3C0d{U7>#_E<;bUEIFwzrQW$#GRtr4Uel2_uO zdBoE1vyjP`u3Dn~9!kfK!ybiP$ljNAf4F}F z=^i~k+#qvI`LpnjCB9?JA9T7V&Y!O5m8f!Oz9CVen^WcyyeE>Nfkt9Ge>)Ks3{YH5 zvOFPVk+^V05C-cy7BTkh@s}vbhhV?{-8sO$D>Uv6XWXOEnX{3o9#5d)AS_x;amh7p9XBpuP~x2cEAFqP{S>y{mj3VZIX`?LAI- z@q*cl?uI+cq?bAEX!&@LWPMCN(8vFe|`Vn5t;lqbwI)n*_Vp;uCPZm&GCx~F(6PdH}k&0eS{KUlg z@dA7s{fPKx0lu?vIa2(_yTsQIkFOP!H@_aClA;li{$c#V(I3$tob?g?!Qmd!ADm{+ zUyF-dBdzA5W?Qx}k;&kGwtiaTt;kq41xcc~_FdlMavI#Pbj0W*skfY@4a#T&h42U+xt@sb}ibfX_^U` zx2VvQ_VuyCcG{iItUI2u3uiEP>&&O0dTKh{FU(rM3kZkXi1ZZi9Dniuz~^55>EdPcrVOREC+VmH9HZ76aK#A?)h$ea$D(#r;uL1WaBVaI)n0v|7<3Jo)Pcq|c1 z#vn}8VrUIrGteq=Eukf~l$OS!15MX;LpSxfp3sweN>3XxLo;;4FiazEB#fkyGSX(u z)J)wpOw){;2{UP?%yc{!*W!BIh@0_vJP}XEQ}J{nme3Msxj|A{dK=1Sm;+^_YF+c@S z-|_)Spi6imKnb7}PzERmQ~)XgRe)+h4WJe<2~Y>92Q&b}04Hs{iXZi<{{H?MyB@t@ z#;&Kjbjo|x*Pcz0oA;$@6l_eHBO+A6pP2>k1+U!xN%l{+e~SHc**~}a^VmPH{qxyB zzx@l?zo7jqvVX<)PqlyN{`vLn<1f9QJ)B}+zn*OYm>+&UTaNEP;rRgIb+}y#AiM_vf4Tr= z`P>`XnV)|nyAQA*5c|R#*&)EPd*8@Dj_0NDe*sUzTXxSI*}vfV+xy?hZhzp7>;r(` z0-|4gBm2Zx-^d0Zd?R}&o_E6kDZCTjUic}%DQLp!Vlml2;Vwg zy5ZOoDTrXjb{#^te0Vxh0gIdiIG(X!$qMLjVxN!hW-~LegGDaMjL13&mauh|!TDgE z`CdT#8}nAIU9fZB(Mnj5I9?0WKuygW+_RX@TW=gba#|!^cA#L=8XGr#z3=$3JCdIi zKj8Q=1(THg-x~kFEB{vB|9$y);{SK%|KC~v6t@M(-oAPUT9d=?Y5*KD^6~xuUB`cv z%70(+A4BE8@A%(k{^Ob1Fwu9`#_bn+Dyw3zY3XX0TSVnMq7hC|XVfeEdzs6Fn&o z`Z-T33;ig(^P_hPPx&Q0N}uow%Q+E$3pDX_(jT7=HT;pl;bSLyzK}igKgMP*JQC1y z<%qztNBkE$%Fp5RCwih{$NZDzvHuj;*ne)%*neK%*nj@O*nh#IvHyzIvH!-Ve(2ZO z+#LEfHg|`9jm_<$Ut@EB=-1fN9Qrl3bccS8E$yLSWVql+znYbAW^ZM$9ReY^J8(Gv zcjGo|TpCO5?>;=wD)74m?^~tUvd?UIGkYmu2=Ms&H?zwCui%}X^JaF@?l-g7+Cc9Q z?6TaPcltgW5bk)OINwbiM@!>q{^QekzK<5}gYqw=TSU8#6^OnOICBMScq{vt`nR&r z03HI|3aEw~!KHW~0;~qi1atsGfc+t{dnzypcPCpc`IPFlkLcHv$NA|zrFmV=!AOC(O@E5=HR`#|7Z)Kkb z?7{o21+V4cUvRq%Zq0y&cz^bY|E$jXUhQ!;B~nD3Gf`?3BUsYr{6fw$zZS&){#Ffe^-zJ zzzm6evHZ=XGO$_<`-Q^`R&0-N-vM3u1t*@iNKad~mK=p5OXWRhWoenF38h5Kc{yUo zUH}XuE=b~P3OY`>pr6+1E0URc&_0f57Ocq7C%(3BnYU^nZ3V`8sAZe67cnoh0{@TC zteBtKN-O+BmK*Oq|3Y$_v8_<$4Z1B~h#JWY8DI%$%lZtg(Ltqt!FrOWkk#G1)B$-X z(Zh;anPm(0q*XKHVz!RvqHH_op_KGDNT zung~~0XEofgLv)+TnxA#a3z2u)KXTSH;^p^(xZjRgu*oSc!9sApg#spHwyg8=E)de zaLA{&MG!6bB$&R zoNs!L|91Rt-8h)kb)jqD!H#`d87&%yh-quIXzyyuN(Pk{fefWFH| zvp@dPX!Zuc5K3|32WmquI^h#`Ce!?CM8GvzI#b+%hPE4r{E7b9uNXFy#W8;k7mCB*bSgG3t`KjP=3JAzKL*v*yl&HoBne& z`}Mm@!~*&HnOM^bx>)*NtX( ze0((f&}UH2YeutoU5$JK`mVwg@SQ7>4?r{E`71`V*8olhR0IBuyghgNfo$SK2eQwv zJ&?T+aPW)+*@pm&0heSBWRC~90e=Bb4ctBj{0DYfa0cAyd-|RO+0}p%K=$kd*^Rpq z7vM6ye-3UtM-F70hOKn&-3~W=e-9AdcpzH@oWBnp$o>g&ei~t}#(OWI1aLLNcEG=3 z-GQtJ?@s~e_jo=Cyk`M_1M~t;1YCu<%JDn^oQL}?*p7Ds`gYzYdj4zhK=uj5-2_;M zGK~V(Zat9wEa26F1KBSC48YgVI*{!HJP7=20quZV;NH5^0=NC$iM-4OWB`%%2eKz2 z9|M4|VSDgA zam#`1Yw&vrI6s2h?Rb9#@H}7=AOZN#O$We-pzVP3JklXJ1MdWd?~dE}=S2vAAL1?s zoQit6=QN~kKVQZ3j{pw%Ip8k9C4lRJTfXK%cF=zQ0B+v|Ovm@Vc%BEK_Ivn}1KE{; zAmE;lSTOR@1KC9%Lt6o&cz4|CNq&DC=jQnDg}Vbc;hk_#zx+V<($^1U?*=>x*bmrk zL&qDa1HcUca(f0(@0$m*DZmimZa`i3=&)rR&Vc8g>;||U36>p%|9Cun|BYJ^mEOq` z+=Fii$Zr5{Pa*6|_D&8CxZlYtmG5L*0Dr1@C;J58PQaCb0l*?a6!3caJK5&|4+A~| zcmVi?`~vMc3pNi24!3Q^)pU82X#!2KcQ}DQv^le3$JQZI#4ZeOooBNA!G_{elQF*b zxp&JScE2a^hxM(DWhlyukG>r?6})X>lp;U4i@v~qNujqDUfhCY$0)3*f730XZ-QU}(6{67Jjwqp zg!u*F85`)E!1<=<_;1H=-8=7OPX{bI_)eDI9Y~D(cHEEjj3A7^Alz+se6QQj7xARD z9so`u6vioKtvoznhxw`f{Eq!B#69MBq<78%^mV`>;-Pm3R*(C3+>i8}jWE%IaNn`x ztF+x@JSnZ;;#mlVakkib`l%iE75n+3{Vc>i)^`(eeth(u>`j165D&dOFf{JlaX-@Y zG=!O35big2d_A_?Bs?jt*YPZb!Z@d)4(R*8?XX@u?7!^qLfm70UxYY6|MtHR>X65O zXZ*(+_XSkHbq57Jhv&+$^-gZjH6F}HTMlOLY_r^2I`Q6hFx%3DXADo{V77G4!R+pZ z2eZ|S4rXsyY<-hk^-_E^V-Xc5sQo?m4QnG?GjV)D>y9q4vJ46)%wG12wrOA+EG0&I#QYL5BR%U1ZUKibiw|FVKR*n+~I3 zaUXj{HW5UR!99f_2A+Bqi%hR!`~ys6_K7D3A2ewC7B4Dk%>hovx=}bnN?QllUc8UKfbVm&)2-B zztexNzX!S)ksjC}h0&9tY5H+fOW8-s$XsjxG_!<-)|Ift@U&D3yD(u!T8B4G)8cHl z-#@TnH*4zIQO%a3L~G7x-s!QvsRj${1`C8Wm_Z5~c&ouD|29)~7HojkAoY_hIAZoq z^>5v_vzy(G3TuUhn+-j?E7@MuN9+3SYpdAY1m2?T?6n(k%X802HEY(QCo-O9Ul~qJ z_2Z21P!DX%Gjm9bwzAhk##H~z)*+29NQ<;A%4BBGj%9RI6qFX%_H5raAS*qbuVD9Y z(2(qofgW7{wu~9W8{#Lii_NKi)MC#_FJrebCC=8zr}~FCZjG^uQqft=e->*?N8_v{bupKhGU-x@EtXgtYv`NAO7%&sDbcr#NfoTgh}N2wS*UL{n}_`S&*s-pLBiYddfqIhQH#eUw6{t9 z{2ew<1$3FBYOJ_8qo`>%DXgVgYtec1UJ*9dDgK+*!9I8E@W{0IcBKvwPHa~uskg8S z^}~v!&Stgh$L;5B3R6GKCUqEnCn;g$d_@YI=PPnJe!k+XG(N1T=PRCi{d^^?ov(C; z@#1sumrHk~CC|TP#MKzqKCHC=!S6daf{N}L9_)eAVub0#Bic4)<#|vf^EI&;x=}Ne zuTo|VkLY3M;@f!H$Z^d5q*7r%i9~n7shO3UX{P?SVz4u~`@fa=@QC?8NcDddX=xJe z74-#+nppAEiaMDEMK>;v`ta_eKFrmqZ*%ea43FYsqu^0gjLsJI*^i6EderwaJByq$ zVSSb&tw?R!IItrobua5bP6>or@l-`^XFhLA!2oGz?y&x%%<9Y+<*1?mLGICFf0P>l zuKQ&5JSK-@_sU$2F|Yr3vS+uf{+21e9kSZ&9h_lg;ydJ^)G4#glDv(TY*@(DE9F+T zQC9qJxhaW$aW|^vcyo@a>$4hIWvYRFYpwxJN(~*Mf9u*SJiL*Wr5hRVVr(vpq+*d@aeZL>jw+@P>F85z5nHRJ@td`P*XRrQU5E<9p$Au~m$3?c zK%Q@8j42neRxR}xxm5onm#bMQy^&oydu}{o%$YT>mNn|J3)s1HQnBM>Dg9N%SRyqu zWew}p($iUqKAr8I7lS6KsZD3n8>|wK8vR-p(aq`X%GvW~&6<^-Hy3;1Z*X}Ili>;X zP+~eOL+*pqS!*&XoF^rkp+#Bh>SS^+5BBpavmY7m=M}Ms`0GA1W~64#GGVGFFy6gB!5@Udoi$+^?~2T_e?4XuqbW`nL@?u$FYRnN=m`GwFWbKAgUex0_Q= z;f9_9JyLI!73EPG>Yw$oFpC>8xb^C(?|K3(&097P6uJ51p85^H4hFvEDNcDx(@9TN z>{%9$r#!rOWJ}897k^6&{+1Wj1gi8lk6IgWg;O;FZ}GWIO?X@ldW@bSpe8)mgv~Gb zy566=$;T9VlDBN_bk%*cr#cRz{+v5z&Ng+Xoae6D zdWWkfb+xB!!-nf!n4nAM%w!$O50-_*Q*ZJQ>4>yPUUZ z=6SAQ+*KAkMRCPl(5J1|JDGI0t9Lj#=ysJR|H~CTkF}+u^{h4#aV2qCM<-L7U6}k; z+2txvJnHjomD*@fh0VVyyd~K;-CN=RZ%J(lvI9kjQ|5P+?f<2yQRXXlyHpbsqxLsN zd8E8sPqzjuwcjez-<57X_7A03*Z-g5Rv%+!>H&qT)1mz9bEyjypL%z(yTaV8_^Ms1 zM>lm;(q&s&zRV3BTP zexP~Bx+sQaY%Z%#&ybs;SMRMhPGkI6GB=t37RG-q^9I(Tr*32X9$DVNYPAztGp0(6 zFpae(P&4(~AA-D^HJIOVl_gAfZ^}GH22JggeYI3|5$1a*xNLBJ&yLhrrPBC|u2`x| zlZ!kxygWI;if(3nJ@3?#J*+G>pV#9lS8^rB)!q=VOW(+(l}x&k%}#cuVw)N zE`gz(C|SpOO({ROjFq2PU)-{7=M8d1i)yTQ>UjedQnfZvp>AXynh}k3Gqs<|e3{fb zVtlH?*T|)YHB)P+bu(7O%F|G;e%qx?t86m# zIaQ7QMguEN?~q)Nc;uH|HO2xaeT}oJQW$TnDIRTM-V<3x;?JJ4_%c~WJ!#SV(J@Yh zXVUgeHF`>uFUXz|mG`sa`y}ON*}sMuEO(l86wB>EY9kSPO<{NzV@*!V4%m7lYkIEJ@U{l#)*e3Z)- zsZl=J?AyaZvyj_S-m1rtTlh#Dd8Zybo>u~+CV4Gy(X~-tYa+Kg<#v=y(rxH?dOr*P zqr?kmBlrq8jA@_RTZp2@1ABn zS=FZLtxUQj(2!go;ZFv_{(i!}BcO&24C)T8Z%Lq5TM}?MH>OlJ_iwBKIfS-<%I)n& zTT}zyR{ZA#yoo?dGI~0zPDC+gHUvW2AgkW8Cr}pe56ne>*LS*@|mE*&t#n&^c1hwZw`8HWMw*d&hFI1ex*m(FAub6 znm<^lo$77VqZhMYP5Xt9Bi3FmcCR9}YUz8GrCQAF3%RAz^tFnL6;qq89mg<7_I-^P zz3d7wH`*-1lywzS4NDpH-VnQnS0%5(xSJ9!_WQ5lVK~T$`x@?X^%kksMG|u|2&TE0d7w+5QpL-RDz4rg462_E`aHjJd&`0gz{MN= zyuti5bDz{OBas1bAUA+H2<`}|`y~plhIk-s>|m1eJ(>T*=lwmCrWe(xKZA*c`s|fV zmLtrwhlP_vvWq39;MsDAZk#O_J)?kTwlF+-pRBB4#aCe@C)#}c|FM~gE-lv2)iYIB zrG9fuOV5t`yk*0SeC5Wfi1ZbrwUZcsy2SI6mq!@?p*J|{{8u%@Ge13?7 zw*I773A5^y&J2?VeP9ExN!-rVcu zCb|a}YE1em?iY49Z9Mx~ZVZ{xCa`=Ts+X}kf7BI;My5&~L*~6cuujp}&@3^TNhcx2 zm<*Z_mupPWx{#z?A+ZQoH!HHVDH!-moittMbD6(d;+ul5I8(O-Wy6T|wUw$L=e#m$ zO5H}^bwttT6uH-NBOXJU0;Uv?Q!nsg)fCYsbcZTQDNj{N-Cf#87~7|VsQZ>qLqt>mST zvWDb7-kPQg*vE}z3@<9sD|DoNr;OEwoi@H}k~cG)|Dxg}0dy}b@uZ2w5ebfbA@N@N z#MJNWNyg__R2cIs)K6g60da9xs5K?!VY8;Bn*K!Sk6LN`Atcw7bSJcj>nf9=wKXL@ zTKeI-uu)SYvEO;rXTd|&l%QHcZ+o@APq|&L=Zo9{Us$`Oj+Z5heg2mx@#9!s;ya;o#FV5N&fQ04aIyjQ)iU2koMKI`dEollTKp_ zi_YNPT5P0rS~8>my{IZVQW{FWQ>@=yQ1c@7@fGo8NXLNvMb_N zB1(~hzr|lIl769fYVm8_{D+L+2 z$?1_q%oGdbCQYkhT?5;uL>jaodD^wqQ=VQed1|Rw9hMa3pH-#lCz?G?Tq+9jCKjxf zT1^94g|MVd0}FFkeVb+$2da(Pb<)?v&6;^)NbLzJ<*`evygi|E?T)G%{cR>yxfK(O zKy7b;m+5-~HIVK|3xfOrc++1I%LASeFYJ6SzX4V}@oS5159^mO*>yofua>%<%a!rl z`J^OXt_EGWokKt+y4dw$Pmh_rK3rj37j`|#_+}1HDQte9DXnJT1!2!pj_LPvOkE1T z?J-ZMnYskzXDK*8{bLMs2O4TAcbk|dW`_xo=CsmoA;tK6OO#K%}= zd>Js!OKJUs5-j8HQuD6zUL*0US{{zSs#epV2>nq#PpRsws=HnvnAL5hUR5F8c~z|= zFVKTm)k$GgJ{HxXPgv>teICAxDRtoV(hFII zc|llR9CQW#>E(NwYXv6w60d}*9~^wCw_0oWh0X8Ox!5X*Hctwp;(bP~?YHBD9K&Yu9gqj*cr~)U1ni|?6 zZRhIL&>TXPu+a41S%%s0zg@lk@n4jAe7!|j4nE*2{zaL3OUNHKZV5%o&09k1MG~*n zepBJ;=E37bo-4i5XT0hup@93~B+%ZKA@zL5<-f|si8?HI?pNJUxur|Nn5ITu>?6$k zY$p#h|BPm7Kmn0am(~#rP_(qJR9{rb7q}q|>XHICw@B+^#Y^iNj9XhU$eT;mStagp zYIl%VX#W#Zr*d8$|8AL@3AK5KQCFvj)NM%fhwc(%8w*Uq@I+_Y%A_c-N_~R+Zf#^4 zg=oIi?278?PtXeH6I_0%37k2Y>@bs_Z7u!;FG)1A25q#YHxYfi#E%JAZtXJPED5c5 zafpL`TDC?dl|>j`DDoR2$zo!$^TPY8~-(D*Q#<0OX_iR z6?o&sDNX2Lfs=WaaWb-fGRHI!X6$OFp3HegdQY1R&--Qhvx<6IDd?ZRn#-=AX#Oio zqjB?!QV*82&x5G^XNdQjsSYfH6JRFP4$fpq9}*p)>K$NPI=E|IJ4FhQ7F}P^u1-cz z)jG@6%R{B%#O0xC`V*l)9`$0)>*){4TO!4~L!gYiLlXOnC1}|lLazjqpzaQNFoA99 zQp1oQd|C3hPWL^gx~t%OO$eMQtE1;CR%f(MFN=d?SVJ6x@^Hv^VrN;hf^~Kqmxd}* zb69=y=}1}P4-o~dv=&=f?7xX&X%!6lyGtZ*h_8i+Q#*knDI&u$)@nlj;43eYzEiCJ zIV6?Gzg--Bxh|aeK^Io2f371@W-aU95XS;M*y`5Ur1T^6Jl_w=oh8yaez(q~MlPo$ z5Ww$;u%dgB&Cs=2qJ%e@(KZ&m(c_xlD<9Ot`p3Hc_1dIRS#mO0L#3?T{9e8HYGSR+ zdGPvrX(v~{j9GST$Q9NHLXr$Fc(_B6e~+DqW_R&w7ETYAVi_Jgm8nzP73oyAL63D| zhv`(d61D?IQm3o{2QUeYja&LiPsfP)GZzZj&wKl^lOf6X_=5LLDo=z{!O!{1lQqos z8_7FMlhd-hmsO-^Xue+srG1jTm?>q=Md!p^t9yJeVKIDB%=>3n5x*#?-d6>FM|-lX zXrIOhdDQG17vq+ANeTlQ;NDr^eAsn zM3Zc?9*^>h6bzN73`XPu7pRmq`~E>K{?GZg&Ev)XNhWn`%Zkq2zD3AcY$}r zXS0#2E(#~F_hSt{=wr1f58(oi3^c4ib$sZo?Y^Fc{qfaml2sPp<5y=e?6AyWT}9hh z;~m^A-qo8|bMK8S)$Am9Leq^l>^}t>;;(k~8u3d5vV2)U{VboPUK;@KsV`uWu(p6f zxP&+C2{0uZQ0KFT24g-8r{=RrhuPN@EKl!TQoW~=B#_I3{%WSYP#4~_dkL5Bb@5*X zAdY;yxNg&#HT>`X;LrL>V%sV`j|bpUpY#S@zYH|%=5EFFe4sS>yMWglY}TUOdc*L4Pj9kCMbS{hVhv<__o z&tzWP)@JDY%9N*02wob*x&}0F@I>h$=6Wd*PF@ml`6m}icQV&>R-3M8?OOCql7Q7S z>B3TwN3a^TtlCJjGVL9Ad%|1`QHUp4!9la73O*Hbricu(b{^K9i6>d$MW&okslKVY zu;Tt*9hZLXb^WTX%=jmlzQm;8dx_pAAOw$|o%Y{XEd9YFot3PNdukV<*oL>(#j8rz zq`A6kVWe3{y3%a7dh$YlL-OQ>5SBKprz{Lqr%qYujdS^iRM<#%%C5%|BFYwYb(?)l zWwG+Ug^YWcam|R&W*A7bS-9`-m8h#3%soYE(bFGd)n)>6yV&0=Rjg)P3~d$jCm?qK zf%7C-;L6JKxLU=NEU>j0ONUV(AMo?zgX!Us#Dzo;Yq26qtb?SXvC_AWm8Z59tLvB~ zUFhx}NiAejJ;aX-nf%S-aC#B;@h0(#ku!qQeGHS!6t-lIeE6EXz1E98?{c;qAwL8TO!rBxikscc@#nQx-8S1aPJdj*o4DuJ|>c!X#Ha4rC`zkA9 zB`$n2J{5Cl44JPmr>nm6UD9(t<#E?cL+|RoOD+Cd7i)qLE##I<8y6X7SNFBu@<}Q- z?4}fd5-~1Qv40MM?I)RZXL<0+F8)szR7)`XZ)g7LrP3a72~53;aVhBz{HMyl#XvdP zb+Yfzr$ExEG;#jDsQN>OwVLrm=KC(=r@44NW9Pd3-vwj(U5Iq>jQ_q-{Vt}6Fbn?2 zYW_JzIh*loL1FYSppKF|cyK%CpO&#j+11+runX6(e+jhhdd8d5nBM|;`H6&ywmj{N zs@F5tZfXIkHhnzjD;q)l)itH=b|ZO*6u4cgNI%vjnEH=4Mve40Xf<*!%UWqGzZKyM^r{%_K#=put;`$#?=Qp+UHs%eho{zJt)cs0bs*hEsH@WzaJ<Wrj1AMqkE!B%;tStRk# z(T9PL_(hyw;7;{JABFShW>IpzT%9emjzscixBt(aubM@*db8WrZpKID-bCL+%`Wv8 ziAxX7D*i^Z^hr>l7%-zUzlku5Zg#htsqHNAYgE)3jiRsodRFI%`Nv9R1X~WlJ2`uF zmaB=EAkSfR6WM)-68JtfLzora>TZq4zR&!x$?|hh6u3=MT9e6-H2d!b@r|C%N|J7- z-loWv$=ej{&K5~VDn_k$tD7%ZKo-^4WL}o~Dhtlxp;VH|sLK`x@x*0{+@1n@Z7S)3 z=^)T@^;WmLJU#=Wg1+s|yf|5Yz3$0c>PdDsjsk$S9x_Zkpy z5K;6nQ;(T-kUCZ2L^d>GE?v%D*{Z;_<*cH@+f>nNPPw>Tp1lO;-M!~kbID($l`{SX z=7XuEo0su^_Y?gCJtKRt?YORgV9&{r+U))Q;#Mu1Tq57TxXqk;A#3W_K2+Li#!uyZ zMydN$Y$Z+o3X^^Z&dsR+r`(*{`%WjH$~YF|S236L0IN-bz70vrwX9kLuYK-f zEM~n|!BUGSY+l6_Bd+aTM3z>1!}sS7Zbg7ZUYDIB+1Kiy{mpXrl6U9T)x0-vmB*ie}Qu_$=HA2M}H zL`rJ$#N@Cm%GjAc-$%jHwSfbB=>Q}S4ZR#=DQ{`Ic?4i1+NC9 zdUeFdmok2Z%l$lS*UhyN_gBE+#oy_6?TYZXE96Nms+;dL@MoCoKtr#d_-2<&`ACiO z+a_shbbdT;U{%B4aZO6;yjf34P1V{QVrj3ft&KkcU7B8qS$bKO)>H581!EKIWxfcO z#rny$DcwxffJM^4i%n?+k8^tcR1A-)jhOJJHu|w!(!zp^*GO+l@*2k7je!i8vr=s$ z!T1)YOvh3}gJi|HrV#=)Fp{6B07dII(~Fu~bkijje>NiDfx%;@PsIu%{=G)2CV4pv zd?A9Zix$Ri^cCL=Nm=5ZMhSJ^f_XMr^uxyT^j$D_(5RZSELBLo8?-yTKJ3r$Yg8@@ zGA#GL8kEXnw*~$6UV#7xUIVQR}IaEaZ9VZ z3Os|ciil}PTxl>$;2dAcxW?SKPYRpeVcO%WWs8ke9E;lW#GD3x60Ol%Aa6w{YL6&O zVKy%D43n$Ut-LwbH^|)2GS|;~iuToqldas_ro~QX>N%W&2WVx*Pu59b%u=f&kgMU3 zIvGanmK5=Wb)GIRT~Gve%8v!vK{qigy%ZV(&*oI$2y^|KNtYM%?}k0UW|jI~#WiS} zN~2a%W-6XX!G_)xRNo4_ieF={?}pio8qaIY^WCt2N}UuEjL&NfJEi(-n5z&M)ONz= z{Sb1TT%kaq_ZkT2pE-iI>c-uw`ZP92Uc=&6-=)F};*2^Lz>@^Y#ee3(zZwn3OGeR! zt*zUJ(d=8p@(x+Ko4Gr%Y8(o?n>;OMsyo!2F#e{vUsEC34|i8gk)$L`LO<(#A|T(B z>hueljOxX6c5f@h9!&udLL=JFiXZ9gjvHXR<5)ux zp7bmvuJMbYLJ@tD*P9nX^m2?Z`9J{5QuF{M;1E|Y&N`8P#MQaypd`RMLv zM!fyZ{mDM8B$QJ9<~~1Ia3lH(FY0GfsE>a+;^}AQdYAAoH}2^x9*lq*!PsD#adyPl z&s_f{yf86_>kUVGUmHhbWZvR$n-dxXa^j^{E$BG1tSchUCwi_@E2S1^+KY{df&4 zGmc|DX6)xp%0FkjU#>2${g8SxQ`)Oabao-dvQzt!&ohWSpDh;WbA5sS(2Tu?1qR%%slZ2YzQSX7& z(BMt3Eo+zs-Z#l@8zJXbUGSMuJJ@q={=zgEPVGAfbtQ$1ZNvy%Hi z)}{nkxbLZyE^q5Kw8f3Z?S}DrIk2FWyWMCJX=YgcmV)UiUgh#HXl*r<>%&DuQg14L zVx!!$BlTLuRp~0KaPg-bg6?_zz$C1w0{A?>L8@>?Q^_xKsfyL7zKBx2j2wKbL4E`S z8%((T_CbA<6BNy{O9`wMB;{sU>e(=K~I(GgBBfEtOZEr1}&9Budb zw|cQ7aRT?32c>_|mQwKvyfj`1>V5*ROjNt@35tz&z-RIVUXwn7+6OI>#ut+wa`mQD zXLt0}C(GM?XLkhJ8Y_%mUR3Sk(;~!1RAS*2k!xJVRb1L7VK?w%FFz@w)IzH#h8?^4 z5$JRBS&`y;UYe|9!Bhm&&=)$mJL2Le%W|7bUDV;Kj>Y``O>KNJ$-2~--_;&BYg~a% zZSs}D-ncm|F{!c<-CaEeP*8WZz&EZ_5~o>i=asU<(xgv%7>Rp#mh-K z3gXV?+;e>ZOM&Is+9o!-sj+A|m%hXJ_aeR&hhDgRz*>RDlPR=x0=h84%>SqBJ;39r zt~TIXrqAw<%1YW@?P}Fl(n_nKU>DZ>3-V6a^dME}$ z3oQW>N+8rwLNEbBj|t#VLJ8RaJF-dg{r~g(c|2`rN3(P1+0tlFP!I%W8zNwr9f}dRaC-;i?*Ub< z$w{NcmSPbgS<&sGc;-)WUC7cmB0>Ai(xm31JzCU8i1Z5N_(|jh#!sohsnd|UJyp&7 zbGiePXSP_pl+v5SEJZ@yVvFT;gB@Yt88ldi=r6ID^%6_CcLu-m3AoZ0HferN(ZebQ;xqM0!ea&G3D&w;SMzsM9FD zQ4xAXV;U}63IgRX`-^S7b>*D2vMcAtUU^D_AgsYh(_?9uJv&o7}f z!!1inU$_7DlN8U}UM&$0P1Ti*c0Rv>9@&txoY`4FcUl9v zq*494C1yt36Zr3#w*MxPIvR(WPNAwDOS8ItBt&d$+LeXislr45R-%gu8%y}yKtw8L z{k@f)91sQUYmm>(okd$cly`ts2X2>oPPWXfe#CJwaLxf2Ich1&M6qCNBUDsr)G+(_#>=k$z2%uqleL7uCM zyft7P2q}bYYk(>nv36qA(}t`w=TjkFAnhRVceV30nnjBheo&2?cDc^4Zm+ef+gYoT z^s3tVVUeU=)!t;fD86VS;b?n>`K2U1MdWC^G#gm(_kwy}TT9WZCdR8-(pj`#$>I)P z&4$XYSF`dfU@$BsZFWyJ=-T-2bT%SAdt67_Z5tr`dqs?C>~Mv?4hPCFKMQc*I-);( zCOb-I9_FzmQS%fk9EB0yUfdD0PNoPt&X(d{BFMnhlf3EmwTlm*1`cP7RXUo6w`GBc z!r>UPMtf=??QP3yQRlGs@P;+?Iub+%sW#(1iL;w2vb@8IFs-ewxKE0$&vu|8<5qVN zQP<(BRt)gNg;}7U7i7D4Dc>eMiU8pPDBf!v2p+a3e(0bAY`0;G8>+h{>l*u z-8?|#G>O{y-x;uA76NT{77}e<;H{>JF%SDlqbu_eLSwu#E9pF3*zz9FVst(wBQG$h zMS17=TCl`93QeTYx)0ip;mW72a-<7+ZnfSbDp$ zlF=5kbRisMB}>6#a+ z>eFR(CZ!p|`ib(WYLhNos6R@t!Lub zEWDuI_-G>Izof=ZRlwE@SCPN?*Rd$iG zu}#`l0V>{1*f^r#n^!jTSu|M~gP^3EHTbzaG4?cZkS;dyi2qCa0niJ?mt6m`QTn_| zxt7R%@EHB?m@!76>`ak%b{Nf+wA$vkjH>h1s|Y<;#LpA1Xwv@{73SheoDiVAx%Lj@ zgn(T1XO=3Q030%Re^bIcfmE6IGkm}*iYE}`z5zj+&cjnVT@b~PDEy%j>DY7!Gv-ee z*lm@xvBTI1gK-KQ3ENt$9#81sDlxS1aR5RWOBb>h$Ev2`V2$yx!k^Y)9M!;DY_wL+ z8Nx6F>Z-M>9>4XDOq1ir0!lOQH^J!sD5}55S%~SEOr~IcV7S~QF!o9%-O*tTAiwVY zmW7|9?4{Zk$Mb@Se6NY029P)H-ekha0Bl?+i0sQs8k!K~8(LiRPBP3c6~Vjus!l$y zAz{y>QGclUI`G5*nYz7ZM zK9=fb97%u~T;E(*ZGX@N+TVB@#i^Z^GoHeo=yJ>gM$Jf?PRtqDYAd?Kc=!a7{V5JM zpq6uBiJx8kVh6%=2hvFj|wWm1YOOUEA zSUK#I){;3+2_-aoTMG47!ufRwEiZz1q;TUR33l|UJyyR-735v6yU&xejjjuF*i|LALQiEN2h>liCS64C?BN7Wy-3& zBRk|zfy!6ccX-}fLVuIM&zCeRK30objErxJby**U21tp8%Dp8hej3;A+ovTYkI~^( zqD->By|IjK)2NJ+1P?w6Yu2$Hiq%yWZ>}<0#{qMZ8&&T8{nCtT2s0rK z3_$b)20%3JwT@G({MK<%cSVWKB*Z7x06^L2DLSJh4Wn&7JkuIDC2VTRTjINC1&NEa zcP4DuwVK8?yM?(W1AEcpypnt-kuMu)^^18#fhB*5Upj-ZU$q)%;Qesx#?kH}tn>_= z>@6vUiW5K=Q*i4168qPHbOs??BREwgcE5O13C>0EJ$_iO&Bb5ir%zz#6MD)75rrjd z-8B=WZG>E)q|I$0lNHU_I1C#2#x~%v|7LaAXYgIl${De7a2>Iiw)UnJwxEpGE(~p` zLEX!@@wD^lNQ#_zmsQ%EqB+akn+ncK*0{7bq~43HWM$-s6sYTf07sDa$oIi^+*tJl zlP^vQ^3uBEgDLszBl)WbAvyT!L3Q@42Sv6WWGtqYU2}TQJ}4a-hr){#PXo(LBM2m7 zAq8(FMIK1WZzRF18Ha$oHnw(F3K&h)YUi>B!d~IQ)5HNHgi51WDu9bMs*XDdE~iEE zR^gdib^-{Gpp48tC}!ROO3|!Tlk3ES2nfE%&nSJZL;AKBWS&<#Fj&W|2}IpP(NyZ} zWTl-=O3Pte)$B!r3?DkZi<8Feq@H$XCt(Hceb~vflOodWWaw`JtnoK=h+D&HBD~1- zb@=I2xW2Z{aRh@9kr)1&sSy%S&Nk zFx&OC_emeCa*igTnY9KaXF$rI_W|{yD)6GrG&+NV5x_7)m&eoLL8>G?f%b@9@xDUihK41VwR0JAXC_tceD6ptj@r$l@{ zRX*!Iii}CP9_hw@#7>v5>-#=Uyi~1 z`gBrc=Me?euRD@y?+0l%grW3&95SQ;i_P3H zTmbQVhh+_vg42{vOW8npUovHFKn8Uy-upLd;nPegr);B;UUy`fI0TJq%YxWxCYZlv zxV^&pwPYt(cO-=EG~qrZaSKSuR@j$Zu)79Q|Je3bjVnE0ocMQ_xcur ze^4DYUrQK|^$N!BY5~A+KON^d-kf-)^h}zqP8px3DX@@Rkr6spo>+#9A>$d><@r&5 zIwemCh(suBt)ah5$bP_Ks|9rnbvg7sjM!H&F5XfBjH0GEl`0>vRbQw`J5w>VZVQG zRKls92x^sB#~!#{##?tcXVppa9FMMB6%h2U9h+b0tfp!Acs!;ZmHguI#%cuRPgP>Y zg>FUvPGF)yPnL}chPBd}wbUiti3;se9S05-=(j>7LZxr|@Hyc}f+!QAHGYKhU+e@u zAQ@$C;J11aik{)V@xeJLN;r|}la|r9100@=A;$DZMh6sL-_&NC$1^I!=SHy>6WBQd zji|;-Bqg?`LVxdLPu5fxQ!R1~QOvj9@XGqevJ|Mmpv+9B{1e0u)<+<7r0C`eVEM8J z*;p`4$k;Bn?`V!x)#4!q(0lQ333XSH62kiebl&@tgdY{y9-6|IGMe$T!}3kzX=`oQ z+MF%PD)MPq6&0bB(H39gBXH|f!R44?9>{y-)w%U;X#S0&0(u79Od}RW>NIZ37 zY*BcdYd?cJd`YQq?sBa$&2ZK}Z;rd)F?yTKU(~u>_m6e(ii4&mneUceCezKQ6KhJzLELrL|bt1(U^D^l}*vcVu)%NN1|OOvXrOP$`+t zs9y~b3pCqd6GY)PLn|9dmlmpo-px>qZUkG7#4<$7u{Pg=nS+4$e0}i#o`-Rj0ylGx zoe-FwRISuHSq6CScrEe`XdJ^&<@HSB=_SAV7-YsBpB8Py&K+qDxGr~1@Z46 z6Hovq2<)!_&I?rCz?CaPJW)@@dSlo`&dx(2Nxfm=ftM_cvKcw0gE4oY%W>Z%g#9BO zb_ZCpK3$q22ty;1_BNqyYin&DvUl`MS$Kqn zK2hoG!JE(8w5*2`{~G5b68d;7z4bo_Q7#FC$>U=eVbiZf_LrJSZ#CRQxc84%v5Z&x z*?74LIPK{jU0!K$fRdx(|01P6D7`c&cERw_?vH;a|1qH0ya zzVMG9)+byxrK+@eN+tv8vzi54T40<0sc`W9Q>c1+3wv;~entzubh2@It60P&I94Ah zsuXzRg+%1*C3?eT3E|hijB$PoC?AtT7qrlSOiDYK5UJWN_Q}b~2HnTW;5-3=LaPK7WQurJexBr=ypPz)utJ2_F z0>w7-eH`IxoNB_fiN;;6a9!S6r{C3E>Fh?Hs|kg<9w!g%K(Bx@;HT@2HT9gmTuxtm zF$AN#vm6NLwMpZiez>|j`ijm5;2^+g-1IRdOv z`DYtOb1|T*rtN>W(H7SlJJz@#mv!&&MUl$z(EYt>=l)(X=Imx7uawDm+dr57s2D# z8WfQ51gg$z1GrO5^0wRE29o4(MlZffRocjc8sRz?@nr%6FSr@cUqxjapp)xm<5C&u z1PeXb%UY=jTYagOm7CRe+Eal>7GA(F-vG#a2BW*WS}Ny?cH;^)Y#!&v#(FE^%RQnexuTi7rC_BU|k9vFB_{mQm2F%5t6D{LAgJ(?78D{*w4aKU5rQ~B!rHi1zJO;sVK90!s1k^Kd zHI%I|9mxo1QK$NP8P~FM`wIN%u$B!kI0^)bYnth-UB9cS+6|aioG26EO#QY|n?l(sf>@8z zoGGaF$fg~XHX#F!$gG0W`vLh-@?=i^q?|rPgfr_J+*}uUQD|$+I)|!fAVUQtnvi>W zWM5OX^oKh56fD|K-UUa!yd7j-{W`viPna7zt^E@v7xj*#f&p^cZgP>)cffSAj+N2Lw);e0je zfcz5$sfYhENb%8RpY*yxk0J0Xm18vH`x;>P_ApUvyk2bkc;So*kb#$s1d3MZX<|rWZut6`Ya@)A>@Eh>BvUt z2516G9g9P4Geiv0(N@93OQ2Eq<4;rYJI@8H0By4siaNBzDJZ&QCdS0M}#D?+WC;dT^L=@lI~I_pPbgvq>3)#`MHG{%uvn~s&6OJao@hk7F1+K^f|vd$P( zI6|59*&G>RVP6AXR@>&3P)&9ih0_woJ&MF1 zK=K~7n1Cxu@TgIKkir&_(phj~A6lf*S+u+0!$|mr2;*jv#&?;F#w z4kVWyG{px@*;B9K*4rsRn%66SC^PWF?xl1p1FeWYoYwDZgij-h=@J^Gt>oguwK9mt`x^v!YXY@LL3@CeDC##T zd~s{qy8-Rt1=1rydwBQ`31!h9?C@6b^S8@FYS{52Y%cT8}xzy-cXpd3_x`Z4o!?PH#@jkDo=Yl=n7?=j`Sczz7)1inc zM3E~lZ9{_~QS=>6+RIqR_bsZ$kvB>U4e;W;1Z5zgASO)$iuX`RBntfQMtU219YPBO z2B%2A7C4f&1%V2uHbz9;t|ic{Zwizjm8R>MCL)_q#|~v7iK2`d*lm+bb!E7H}j%lRcyw)u`rsjZL=o zZ8hIpZNvwVnurg;eTWYLG8#a)cvD)wHc{dH5R)qie}AeBtf_crqta}b;sbO((cbrC z#WCOo7Vq$6)aaFZsCq$vm0i;;p9Sox2ku)|;F+MOm}+z4z}r%h}{M282I52q~vxlP66f9@XO*J796 zM6}N2PxjCv!1ajs|(sz`W5LzVY9 z-ttrHnNWB>w4{EdJFjGNDQXsels1DAP`Hakb~PAZU?4m`0D{%8(orY?3STxPtzTo< z{xzIEuc6&`9}5&y*p=0F?r6Cj|1}rc&XMU#cWl}aX&~d2Ut~K1UU*bsIe+{Oe4m;Z zjrEvs_Lqbmy;pLCa(7X?at)Do1THnPq4b7CuubXG8tEai+PuS%PNGRyRgky6s6Ab} zuw9LMcw6U@pg8!N@nDI*Ek@0?N0wF`v0+O}*ojIT=t;7b4P8s@RkB!ReIv8W8jNF! z616us%I~5WAQu5J0UbUh$fq4E5n#5~NeV)YZ)E-tbev}dk;ksanhpONH$za zjC}zE@Lic^39g02XRJxyhZ{{Xk*fH6i6(kYH;%Ahl?~-3yuZr-%}en1CS@PtHz%XT zo0B5W?rGvD%)@mcbh#Jx=Zl)KEwf8$9J}Ci)~BE`bSxwdbXuO0_QBh;mZ`F1+sEg- zgVz!2Qb>(d*qu7ifuIvbD&NLs(<*8m;nRY6evA*dVgm_PxWCY0+vt&`pokq8JsWEW zHFBjlgG+kHKkMO=e0DExn<4ts2qSqSNKoK76THe@KjPL{8SrEIQ(a$AijX7wTR7_6 zky=n#;#hsX6_PO9sa|rIhuT|pMQg3uB#{Sm>Kq_RDjz4P%SC!|g35L1edxg<#JTkBY@1T5L6`30;|91W0K`!U3VQ2 zf;9Nx;2a6DTE)YJ`+y7))L1Uc~!iZ*Tqo6m(tFumW< z8`gWjkSon2|42Wap`Y6xb-oD23Xda6VM$#;6!7~{6QDx_w(#X65klZ<3-_E4aOT4JqX0KI;>o6 zm)@jF#~ON{Cp;dBnOh?O*~c8J)A8TaWePtL=;gdH_$@$4cqC_8_XMy<1G9(f~+IAmF5(od&qVGpfQnjXHCu5q_hyt2E~?oe_B(_z~Mkor~e&;IQVG zf#5V6sSUr3ReOhju6`7w4>P(Aqfwr&3}ZxSahyePRyM|1tK%%D341Y>Kavy0O|fRo zutTIzgEZipGDz)hjHL@3V`|h~Q?|bgLu!ui2>thP4veS!Xfk=C!nj)~1 zNx;T3&Gj+J$({6S%(;piw=6)0+eN$HxA^kq6cZ90#HTc*`gpP$n8*+mM6V}{-6Zg6F&hMp%pf48Mx9?%& zJ6$rs4+tef!8xmkPCVFKyK42~pUY&sJbcNLWmo+8v}Oe0%VroOWlB8s1X#Pib(~!Xy4a!p&9W0?bCedezaUH)}z++^Kg=n_`fT z2|btSDd#kZ{S_5pQLE(fnX)DQWW1yL+EC$+nZ<82{CX*hNInVY z3P0+R_tLPOJ=e*1OSr8BX>$r!O>J^4;5FZMOU0I`9qE=TAw`+#k$zCCmdw|YU?&%c zgiok+Ul1Fo!F(Q_29fBH$jBbV7wxMdk4PVDHOH7^x{2~#i06nTDb22ZRF8Zj75}yH z0xFX`u7SX$XM5h#25DzK9A_9EedJhi1>pzx)Vhz3l@93YcaSY4yLP40jcVeUZ=gEBH0W`oU8}b=b~L=lIec)GHO97jk0z|$hodfhK(a;j z1N42i%^u@Jt+j-nfSJ&p+Ap%penXER+gC*0WZ!>fc9X@=h`jx9Z6j+a`iGNEeWQnT zbq^=VTI{4G3;%1l2sO)u$96E(TnvYp#&8rYnDae`BuzjsxQaBCoU6$3P-}I2ZFD@< z?tE~FozuL~T#tNDM#JSP%;KRjxMnU(qJ4Ku&cHZ}80z>2ae*^?7dZSUk)%e3NhX zjT!Cr-UxcFeZCtlj4H~*317np&9T1cq7!X#Axs=C-0ki^KD%hUrO`E@c~;EYV2AHzk+-bdK=WI+)W_XHy{@4%4e0;OI~<-4Q$#TWm%^_tB(SegNma-Rrv5}bu^;6 z803#fmBv`MGbSRHoAbFi8s1PL^o(5MQF}Y#XEWhd%6js60ypC^md5ltC9iOL1?XZA z!zFXpMx?Fb%0fk@^k!I`a)UO3l2rn|i_mUVS3FZw@6DSe>J^+m8sj^NdJOBZkZ(?x zj%8pAO=8(n_aX3)R6)I07H%PI7DY|Ln3xoZ8&wW|gP8)w9UXEYCzKSbGv(OpL@ z8ikU<-)rnWV&lqxCK8G_+6cWqUvc!cl}-8ebyYUdbx6tmiP5_vKt_hRGB$E;>NAKO zDT26+)dnyJm&#b7bIOfB+|?!rXtCD5G59$8U$zXYi;xj@ zwrs~8WlP!)(;o;Zvi(#YX;hl46jaJ?(D@3PO(O6?{MDBC0gK^3Km;bSl({M34mFZQ zVR2BYvYbeB^>WBbhklTevbcn_yWZ~YYt?K@+^;jn)v=#zA^T2hxmX1waC(W6Ee z3#FeK^rJgZ#wcGJGkVmR&5HIHm0lOd-xDtlk|;IQw+h|wL+idYg{&P@@Gwv~O~xV% z^7W%f?B4uK44dE?{ofjS5-cXd z7Q)BEyZ&!2OfKa(42sUbQF!=cdHJkm#P|Ui_MaINiUJZ@i%@*?1mURm*sDQ>CNTJW z6?#+bCxb7-;9~%r*=&wONpn#UuYvEhS3@E+xbR+0jeA=tIiw=y>{jU*fyD@Uj%u9* zL~vH90H>1YiT($bea&eb0@L^UX`=}uSomp`j=U#2>x+3|y;r7Waf@;q* zq1;FKTU^KXK1tbwP(f$wD;O+^XQb~LYpn!uMIw-qpAuO4YXn%N@)?SuP?FwNfbu!g zwkw1<88e953TnXs#9%1rA*+aLlcw9$)%eksXQ29+jVcy~D&J*W=^ za%%6wr@u*KpH@gS2^mGIR+BpEaX=}@5H+i_feLuFfD^$(F`e% zp%5T9o|0o_`8ZI)9z;-~+B${|!2Uo#b^bm2MmvEp{@@2?PiF!ZFF)Pzbkrtn9mIhl z9v${8(F2z)Y3$IS4TwlHsOIbR*MxXPyHe%%$PB+FL%h|t2VRj~SlYqolL}jDly4ED z{%fr%6MS<2lh$|v6#~mc>{KLb^bXrUTtTgCJL>!@<%<=f)aX<6T6>C~w9iq~{uEsz zXGM)Ex(t7U4_Rr}_VZu@P0MD^cN6zUIQPp$t;9VF|ot^ir_0jx|q&psQ;Tz z681MhY;b;yQ$)lMJ9HqA!QQNc9WtA!Q*?gJ!z6>E>YXm?*TIi9V8+{;yQwPRP(dEa~1f{{FAU zTOh%P6sKzFr%L{;}RR=wn`lXbnBr-1}{Yy{|N(Z^y`w3f- zk;)OKZiWA)JS)-TkOd;Q!SVD9zFTk#S9e9N%`MqZ^KeF@RgeZ4$8lQ#Kt@wzn z{akJ?mKq4}B&F3B&~bi6ExmF}xCQk*g;wCx@Oe!~rpiY=xIy<|#C(qs;n6_Ga{yTD ziR4k_c^-v~;wU3?u?=~6f7h9?MYb&^j-H#C)q(oM)se}U@2D`iObK^6Z)kw5z} z$UDN!N6HpzN^Hdq4a`x+RjKNgPm+$HDz$BJ^<#uMR0LmdH5s|u^lzb}9LYDB_TBCC zRxVz(VO}(^8CfDl5_wFZQyH$$M@(Y0Dd#uoZj~PP+?;VvNYQr~MK6gQUT$ zuq}f?HzFU2`Cg}rH70`?o3BQ@hmCZ53Ro}Lzq>Tw zkT#d*g|xLa&(rqOyhzR!g$4PjIoFo&4OgP%Nazn4OY@}D_RkZQSz>5uKIJdX12(`H ziosV)SkS{XjG^MHymG72e&2uoO|J0|DmS*}Yt#O=yr1{y8Rao- z1$))OViYRi^3e9gcVzJ$RDUNUIb_ki)rs)NrnEnpN9Fcl9`)CQ_|9P7BPI{jF$1So z#UW=fk2y*T3TI)4Jl#W#psz~Y=Rt*(I;&V<}ry6mK;7N4p)=4@GBECod(r4Ov<#j zG>D&pg$FEYFps&g2J;d{5@Bfr?tqdLI94Dm4(5|_`|n`eJ{cTGJrz<(a15cxn6F3| z2JImDP~$7l6E(Sae*+cvE~S@)Cqrb$lr?=XLb(V7Xb--LK9sb z!eyNjUHT%8%6VgS_FR3KO|JSIY+c>a1y50 zBns~ka$V3M=>oijI{)7q{$4|uTlin+z+U8<|HnP>54Z=DYv2oL&nx`Jp^99%2Q(Q3 z1mV5fkavJ<(Jp`9U|wrN5|Lt8jG=vk7bOuax}k?Um{)=}lcI&85ueyJ;6mby!S7AS z3K-+%V2sBhIa(YV+=sqZ86F9!7#HbJmoSQVm2f2#F$4=U2R|9PA_xT7XivzxVBnrw zjw`e#i}gDDYq05q^l@NJekXNcOvd5O<)!0-8{OA9)MTX`ib2d<1bDo4C~*kJ!UegZ zvG6MKf5t+tX&g84T#bam@Z;cx*MeL5sTI!+-n>L`WT+Lh>_|m^P{P22W|8j@DN5!W zn-MeIE<)WePMR`n@6v?z&Fr!e=&^MO*uic-c7%RrfIyrNIL_?WjIZ-v+WHbEYk!#s zB#*YGhttRfdEvZ#aL86pBJA9;!dBP~w(8tSSDhc}O5^{+U;&hB|K2`{?@3B1FN<_7 zzziT*m6WN$>Ym{Ia%*l!|B-_$=FRB{w=Wy&Wg}fdFB=(Jg$}HSdfA`0(aWaN&=-V= z%*d`v6u6G;s!tV1b`7%}b0kU}oP)dgsk%SRA2Ex}!?bfgJ`1;jLX`&!d-mq^EOf$o z%sCgdUJt1-Ms@+g!th^FXI+p7+Z|g&$K0XL*|{AFoYGInis+a@_dgn8C`xsZ>bO=B z;bmS&je3HIn_IM1exM71Ux~#ECsshovLu+-2Wj+#1g&M- zm@n;AQOR;p$G9+w@L@SMos0Tkzagzv=@*<1L7^0cF}#LT3FZ{)Eax3L z`Wlct%Yf2}gP#R?lGpPJ9UpY|;;Fe{Cb4uWIMUCAwK+B%;!S7;KR7Zv&Bp|@jn(>} z!Rt)(EXkL=p5UhlExx@IloxA5Ub>soNol@=b@_Hrjw!=YK<_|ZuQ;j`ROh&R)&9$q z5jk-_g7LYz_Vt6Ka%mHPfPIlbsKZZ(H!_eDs?C+i8|Jj0EJJZVaOC&Sm8(O|1-qW= z4hcWrp}0uLb({;~PY6L=O6a8>>Tb#oj)^mfHl0*}*A(jFtTHA#0HjHzA&WYylY`B) zzb8+HFGBIc+nhfd5_SYBy>~g!83KSk(~=mC$BgeF8~9SS@qJ!m@7BN>mlqNBGEQ4# z#y%W+rAC70mtBoISJM}|6n1xTpb7_Mun5kmHqY2$%7tkUuCBjmUU%3{|Rc8cOmj&(pj>)tgOK=ToW@Yx>ULxG#i2~f!^Fe zD}O6}##ymSdYq_lB`{qWy%)i@{isauURiU1QThQ!>Frh6wkZD>Q=_1+ zjczb1yFxU{!;k<`RQ=forM)~7?E-oUNb+7nqFvhf>dN8;s5t2PF^?IA3Q@)QF<;qg zL04J-F(0$zCLqAsvNb=B=URahHVXDv=|Y98G%G`hE*0Z^?B)%u$W69nk|-VN?ff#`H_C*HTPJ zxQAzgi8e&tQ_keFTr&N2Ko|J*&2G&#iZjgU~^h%+I9-;*R zLwe5qOdx@SO5+a!E_%hk5WGsTWw>YaG6b28z>T<{(WL=T9}R_b1CRlv+ru$|1_rJ< zpnc&n&&#ND3bgzHuIL1~;#3IHSo51=&Jx6LBA^ESk8|lBO`DrR_|j|^fI7@d0sL+y z+INI}7~}nw;9=06RJwzZw-DvsOsQ~v=m4^4yf7Cyd0}CJvQWEieGa@49c(VMc2^Vb z>E{8y5Vyy1`ijn89Re6Wf$k9i1{!%J+y|D)pXWl>OOiJ=>TO6ug}?%VqQQ#hAdiSb z^O*NE(QYHcTZI3NXr~G4+5$VQ*?4=d!Wu(tX@DM_O4!I|fT`-N46T>Mnax1epkZs{ z+0_OizB8F zkcHj4@)NR<_RlIv>|0$L4=4UOFlNk)sD{7!nhd5dEt1fvOa*4BOcj8y{JP#ZZ7aAT z1^6ZCn3eV_%yp@TE-D~~zo?L|BsDHBs4(P<3!s>d%^=<0XkbN$paTKj?Ntp@ z4Gje!+ZPvV*>?@XGBB@`jfzLfj}16?2r~dZc6uY=yOg^wt=vC^-N98rC*0|ll89k* zsF?H?UoPJ(!8dJT#wDN=!b&eKU>?ZAr3G|9vuccUk?N6&(AJc7OSjVCLzvQ~fmK~P zWK}o-tGYC>Dr~+TH%wg)03=gyE7~_IbVe9Q_G5Min@2TEXV)tRp9da^?I0U$mr6u& zb-;xJ4!g0W9m0-gnfO#Grk=J)(UDMdmQt(P?{<;gn4)c{MY6p zQIvAJbwul!JSsrxzE;_di2I?JGmJq!03hAJR10E(w*fEj(J|*CA_-w$5f5&A0g2&{ zsr=9VHq((=d#%bwu?lMkR8Pue7>HkO2fCI!f6PU1D*3{M0FK?dx75H23XO^p$KbZ7Sk8PZcYR0ZFW(0xK6K> z!NQ-=`W zAj5Tr$yg7V&1#OO6!CIzhtWI;QIUe2bG_gq)~j9e4pq4CfYoGI+fZ&mtH5f4s6#xV z5X2nfNu3G6Z!jUCZ_{;PXS0l06;ZTU(Ob%|GR8RCQrZuGr_2SD=wdDn zVc)m`xak?F0^m79zHK|^+6`U<%qukwXqywDZO#zd*6DO#A+bIoXV4a z9=aZEbOiDw_>v%9akz%d?Wzy@9@$BN+?dAoL!eOLHjs|k9jR$7db@=#Klrm81o5F< zLB*n%dSh#cx}UU-3j$vZI-m;#`VC@rqJ16)9#G@g6s7%O!0reNFffcC_%*?Gl_uXh z7?SQZv^&CoA8IW6qi3t=gzym++Yh7)UXo~;#@dMXZ$cY2;reh_(R>c~aj7)27$gPJ zou>#cfRbB42f=T56SMg{!87c4kVe}>I3{&G&@qt#q5w*$Q}(9|v=I>$KeGRHOo4(e zy6yyv^7m&nvFRv1ESE-*si}A zX)L>lXN#4H6xuo^lp2tfcPX_y&D#*et1FDKf|kq*c2RWc5ys7I%z>1wL@ zGT!arKcW>MI})@UUygtW@l%)O7i+-fM^bO3>3c6nR9pd57MQ8d{e4&5L&m^rp~lM* z83kqK)|V~lzA!3y;9Yz}%B+`K@R3xs3gC(ciGx6Wn`{seAwvi#ZoVAJ`0xUf778+> z6>Or0Dvw(C6+Fe_6Lh3iz@~;-9xg%PcQ27|MXgIWdize-!SdpWfn_a*7fMNbiWpj0O`os0slJ$++Su($Yci@=t4odi0&5i}T#Lp_0V3+vf z<_gSy5Ev%z^`mkXcKMwAf9(?U+IC=WT=?1Q1sc0v_>W;iQai}wxkGupi+=V~9&fmA zBS`%Jvr7x#(S8)*HK2&Y-|sTGn5}17-~?a;R*9!wVZGS`vxNBO|J&0Zj=1gLEkX~0 zUr}M5+A`b3$x_?QTbAZ zT&wES@iqki&%+eSh3UFTZ{Kaq-ckDuVn!tnv41GR_JUMf zoQC`J9tRLSO;TR zUP5(g6=GN@Wix(edCEGXqSeD>DJYFkX#C%SR!>H5^XGgMWB(AuN~8cVsPi+G4i7oM zn0-wMMV!~g*{f8XhhJvj0XD#KiLR3OeVkgJ1-BysZJf9ZujBV&OaLNXOn58o78Gy$ zL;_gxL;wahPScW@E93Y9gc8ROhzK+=CCTvvpa^XXV_k!`KYjpc#!n~2tV2X~N>7Vj ze7;CxHPYHJeM1k_BU5vN@0G<1_siNH|B7rHV3&pw)f$@y1O}~6$TgO5>~E0PfSxzi zFB9%lcL`8cf8@r{rU4a+=S>6pKdJP+O!v%1d8a&9 zVp4~g3{Ff#FcraKgX)6~nov}zdx&22lu~&>Aahw)EPI{_eh#!|K&Hb#?DL&Po_TIRQkyj$d z*+Zp2E`U~-gyW`5zza;HrZHTH(vEa7*Z>tbT?#gw$^DoD59g&_7jUqTEwJ}@B9-;& zIOI(JF)o<5>mTD(P*J9kk!#JuS>xn7ch$IhbKY-71)kQU!-ggx+cQk4vD3qq%LsvB z&O{>g-WId}Fl;Cg5AV36%DP*Pl}15GxmF2_dfl()Smr#_JX5GKpT7fdt&-NDLcg3C zuiXeimiR0Q8WXomT}vP)5vG5G;L^A1Rb!*xy0Ox7m8l~ra%cCyEPvS3Sit+MR-vM2 zc+#8tGjwuY zPNDu=X9xLkSlUfYTLZ`uBht1C{iNQ|pLO<`hcZIpa8m1*mx)d<`;0`6={0V`9lzii zzr>y3Z3Kb&f?mj9?(A3CTOQC$Aax+OVD=;DE*yF>I0Qg5=>WIf7ZURLL-qo+|AYAO zHBWq*^1H_B7aqhXw)0&KwFqN_{J~g^DPOzvBrbx>-x`FBI|KOXnSO;|qoK^XkW+pry1HXAjqvh*c5DP4c-%gC6T8x8MG7#Oy+0Zl zb=LMk=zeB2!m=VEA6H3N5NIRm$jP9FT@@yln~zpu{0n_V=snFqh{cVg!6mJ6=Zy}S z5w56aLQv6L3ZA<_4`~p0Am3X|3&K}EUj)><=XaxwKld}5Z^lYuSEKMUz=sn)o{RP8 zewF3k2%pN}C4wgOmwtiOM-df&$J>h5VSZcD z{Go2xll*6t9P+iGwrqygxCT86So(rG}pwxWndw}sL*M@(Jx~@`FbAi zpB8%vyeD1$|6pEyP-F zxrgfN4(KP(vp&E}vPM!KfmZ|09{!tu?{6~gKMA2J=ofY@$Ba(?6cYYW|9{B(?l>vR ztm`LK?od4)W_n_En4TQEx~kKl`#NHIkp;`Xo&kRmr{ zi|jfEe4n~aTtR)rf(Tz0uzVdy09M7C=ukRr^4u|-osQhzq7$Q)R$2k>)ltofs`llvOcL9*{E zwD6B4NR7DM3fMYO*-4vszKO~XJFGYm_B7z@WhfM(YaW%I^xA4vc2vlRrZfL`Db?vL z3OkugudH4$YvCC7E2wi^5<7g#)vmN#4fT@KHFdiANuj zf#B_gMI1EBjrDZHwWK~{zehnUjv;txC@rs~J68j|TmI?WvM#1amQOtD zqP?nWr(~Yy=t1XztY?#0V-#C;F zB(A^Lht16ZtP*{sO9Pt_?NxN-;327&_!>HAA;uTY-AB%ZT@G zNa1v;&DuG%#_x!b58UoAE2^yIn;zvEkg+54ai@n$zj)|mm7Pn>ODxmJ%B;b~-YboB z;N#POCZ2mD0c&bd`;kdQCH6{&uk(NjL=@QA2iU*5I87?W8f=8VCn5uqv)$vWok^n# zYIM#+TkmEw^G>XGZ$zlH?M{>x-PcWeL|{=yH)TDwj`gXf-g_g3$udFz8x_ex>JbI$ zu#>3;1}t`oc^IdDnCf49sazC4+icC>LMrl0Bl02CL(`8S$LbZ`lwE!feZ5sWfB?|z z7?Bwv)+ z-1UUV0eac5`=~rCMrV200N7#+l%U|rlEhi)QjdOI1guFL7Z(bt>_F$+r;l=(ej=qUcT8Iue;H@` zStO``hqPfANZkI*iPE}Y!|zzIu>eudV=+*G#8KT7<7g!n;zG!L1+w+s3iZlavisI} zL27?YYpOKnH&lk%-K1>MMj|zXK$kSPW|nT>7<6hg#}dm;2(j$+Mf< zdsjN3W$O!QcOgMlXn*P9X+=C6st@)_xyDQvDD+>r6=r$Yx`p*c9;;Cbx}`)xz*>mz zbx{}GUF9S=;aXGFjUwTiRQud1^D!Xd+q@6Adn<{zLUclTZ;|tc_-vPef=OmW4dlsp z-eFj8{#}%wXm1LSVk~g9SL6C z9zNXz9O|;S3$5NB@({_-nLB^E2TB(|bKdR=TFoReX*%$`7?NTriov?CEtMi}dNhvo zr#D$11U$-smaL~F)dyTJeW<#d${_O307=u_X8rp*vBAz%itKqJ|NA;O(s!WG$$}VZ zBhe3z_e!(M3Pw#P#bf3V0G$V@BM<{TNBC0&i%1bVTeK_zKEDBQ%Usy%pswX_lb4C| zE~ph+p1v7WT$E4iq5p#sR|;v96x@8KzKSL6Eau1LIaIx<9 zKX?YNCPFCn&Yx??FZ#R!G_UHsFgxCz9;g5VvOn`Y@9g=_q{jZtN_x=7Qmk^n4VW_o z<4OL-z^)8r%yq;yLva;Vk+<_&PhMhH$>0whs(>l`Zg=(Eg@nk3E!{vd14gg%!2?#(q;?qb4r)$zx2nt9rY@|M$WF*H^PraF%K*_9P{e9egH=VhGX^qG8o)pYapQF7ev7jtJ zz7)4`VSbpbWbvZ{ayZ{##FTiu62LU2V~hm(E?vWScS}sk9gh<6>;z&$e>xaj(z9ni zm+#%>cri$p1P}@yj&>4imSiVJ-ET#E+Gxp`M|=~H{9G`8Y?=06RQ1H7X(-Sa^n5)c zTsKT;v01;Ulh0bji_`5zq4eyinVizA7ow!TKL*(AQT?T;fO5x-SS`xCXnNZf9f(Fb zggkQ8K~0~C@*Ef4U8R%d3|)IA2+)y8U?-zgxV7u#MX4Q?G$qle?w0;tu6!1)NoPHj zR&Y>!H>dMMb!yvLlnNvd7oaWe<@&b>>H#gtzuEcj8sccO$i(}F2DXgj+@rvXb2Y}x z%ztV?J6|NQZ!{Dvq5kQ*mD3%Cp6{I<(TVXwL=OupvlV}KX+IhIM>}QZ$K~!rAS_BA z0vyvk#OXR2BkDTjP>CPnB6K$nafMzaV-$ndjd2-4T^id7An%6|^Hj_1fjDlL%i~y; z==GAgKd#@u3{8xEoh_XC%ImY>NT*Lr0$z{Bo3iFg=RZPK77;RiP7-_VV))v%-JvX+ z$HLZFye;=o6uNz^Elzu1fqfaBEYbSQBrH`3n6DJ40cXt}L02>+a)pkq?5a4T&Qp~8 z;xJz759m%Aj2S2*&8HkzA8V75#$He&X+fVdQhh6h7aamKJle2wUyF3COUy968St`v zs+kq1o0)P>sk<43AEgeYw3%VDY}Ds%>`~Bz<7BbGm$ev~W+qAtTbxtPJE!{nWkMmK zEkMa#-6AI$g!58(6Khv$C|h=Gq2H{~O^B0CX+ceov9}f>unC*L!kp!WvzfRmFT4m_ zj-Xr5F`>?xtde0weQBl3VDvpA0C|7~8g8KxkQ76NqPE3IgQ8a)iZiKX9-%T{pUhS< zac~Rmo!4tHpp7kh9mLQ=E!ypbUhhVVfHpDu<1$wj5{*^RwZTeW#yK@#R+G%9&}9ei zF8CFOJ9xt~9TZLURn(R9Qi_p6Rk^-Jg}WUq@jUBhnwg*45tCRy8Uzg96Fak~Paw?4L zB0tgxQ$c+h5##v|;QFxJi2{XP)K1^+ke3nqXe}W!^fg2$Un`&_N!=$G>8}?! zL=JBh2yB6XZ=xut3CYE*2O-VG^>zV0K!ir3^(|pH2xM7E-NSiTPm^gqQ@|D!3Nc57 zJD6^+(w-||eh&^bs00*#aGC52kM`?4zcsT%?g|9TN^fLXe@m`?|n$C~RCZmaVY1cr;)m0xL(mc4eTh1` z54_Ml%NtE|S_!?YNO;c)x3++&`h7Q)nYO?bV9m&H!Bp2A^F%j2h3OUI?*#xvSmw{S zaC+D!EFk2~ZrFr!m508*NQr|@B)|y#82^PCxh96zYAWm_I=C+RXN}#^RXV9V=n zM~vzNs=fNT)unm|5%uoX474*yutF&IFCZrdGA%Wc$WyCzACJ!!qEHzDv+!*sKdW(0W4R8oD9?upyt(v`&|ug$s3Di`#T&E9-eBa+90%6v zQ{n}uO&-x}p7_vv%h63i1pSLdg;eG!*`LeR7XSvd20)_>sdCLb5Y5#J9YR<^R?MMT zl3T^~$s8>Xpe#sL71lwbqYUnzUlH`)1S;fnn- z_$?9?e5~C>Sr6`s=SO=FJ6#8^Jt#C(->Z?16b2z#JYXu?E7DV9Ig_v)#^-FLk2Wt*{oCBK-rlQ`{Q4>MFE2 zS6A_Am`;E#EST@pfGC@m>s&;4Wge0A;s(%s>hEWCINyk$xxS2Tv!5UC741Y9rEyR};x^ooGO`-O26+?)Ix;m5by0A|i$|Vij<> zSX2@Iswm1;#{o`*s`Mh9VLBdKFsn{4supcK-|>AVIItGiVWPl-*-KuQJ414rs#il( zzLw5$j>mjy%8JZ_IxH)}eAkzyMFet6?2fqit=bx-geX}D;RDb_BMK?9_tomxKvLOP z*|jZg3zZOsT^M&5&DOp|QsvHIXeHq)Na$h4(G+$aD3^}r9xGu*Iy~2PV(u*H&fYO=^nkhXl?ED z+UB2Mg0jTO0tB#5|F3EPpn+`SAyqk9AbnO>ocd8ishk3ipEe2IOd8tK0}Ew31HC?# zX7-&TcD`C~X18O)7E+s_pswkUA@Pcg?MA;RqXO755PnLf|CXf|W!;;sX6-nuIHFc%bgHGmF>AyQ_AHrj4=R+QG6eoX=DtLY2Sgt*PK zf)!?Pr61LBJy4+lumZ#rxkZ>I<9;I8=S~A#)Q2BwTri=b%H0ln6SEzSCCPRu?2M_Z za?f$7+dm`jPl-@brMCg*W49rTgH?pv$m5nW{Mz(GF1467S@tU~aXVsMuD#-7?-e2s z8%>#|P!36!a&;~kzwEYv`+Nj6_WXb!RLtIm0d&o9eNmvqX--@c;N{lig(&acv70Ro zG?~dC-l5@l$7yO)`?T=`2p@BgKR4zcW8_*QujrF*Z*5;Nd(=kmSs5Vr3KgSXL=GZQ z>Fq-FCj!voL(2cPU23YHL8_XGf6s-QlOjmF}Z{U~JqE zDP@@*fdG1RloOS(@Syks519gj8bAQ%X%gyM32XMn)GdmkhEt^fyr z=iMOFrAUT&_XN6ST5Y!Ph01gA<=Mq6Xl=LuVHxdG)uW|iF;uu6Ax$>Eequd4)dMp4e zTJBhY)n-~xIjhnju&Siq39v_)`ZBGzk}sp*EdLUf4C^H-2ko&1uBT7~0O=iQtFDtM z0Bi-h)g2Hc*MAF8u0%sq@!KQp(QO$yMl$*Yuz0S>`y-y&^HExn83l-N`+Y$PQsyR%yxb> z;7mC)@SGEuV{h=YpZR(O=*a9KTkY~@@o70|ZVce#yfB52n~R7GP5@}n|9myf_51!# zbA9HkU#NG!TKuq9x*A2{^u~Z=tQY?SxU9~D{O25;<1fh;WnK@2?FtPEl=rl9>s;_G z5EN&OAP4E}A$Ca~vUF&B} z+C~CPSA=>@NoST_F4HToa%Z~2tpu1*kX_56p3zk=l;l8q(b-A>vSn1bf~adbbYfBc zf=!cNZ9L;570ATaX2FT+PmM(iCv|bNtj$>1 zC9^Q->=Mcz`r|liF#XCoGlPHYAzlCzA{Md)uxn#%f4JcFn1lpU-`$_FMMZj>9 zs6UCUBHNsCPNy=}u^!S8xLUa5mS!B?B=l`!pW&=BXASPWo;aOn>YbDRL{!)!ut4KG z(9e7lb#7Bk!xlTo$#zVGhNg4VAgoC{-gRc6GMk(kz+xzO)k8QTMuwHrfS2J&uZs$Q zHm?pV<&Wp-NhFnU$jW^3sPlcym&bn3x}E)C`h(d+_q(MQa9thAmrcC5B$VCf(k?D3 z$_{TSg~Q?B=Nv#OiFlP4^T^WGnAy|8s$8leU!2=Yq$l$F#U-9#?h3?koTc zaTlL*pk8|2Do$-Jpc}J|ZRWNDIx`1KSh5cS7&7ga#j;`TxJz&E3aLAX?}O*>@Q^|8)fc^wNEr zXUNhb@Meun?guXo4R|9xGY2ln%pTzIQ!gpVad~em=*(@&w-u-$8?&INt$gK}UGISc zguq`@G}lq}3txk2A$08St7$X;1}etnyKvDaQUWFm8+j8PE*+#i|49nHBDYtuT?O7Z zvb>XvM%EA(+7lUx1fd=&_!RejqhTWbnp-6xfRip}2fOV3>W^0UFbjl#l zbe2H^DPF8R<<&oLx(L9~KBW#QoQf4v_mVn0KexoaRxQgmmip5GF24Ytd`!boW4KyH zzT%ChFngdte*=_#5g4w&q9U$9jOs4p4wM?%Cz@a&a@VOa0?(CdV`O22EEZ;FGSZ!Gl|0GhCvx?e5{ zXJ0NcvfGlG9moFCB}zS7K;V69ImwNjUkcv<_!sQnj# zZkl&((!S$lt=q`;Dbb7414>W=pcQtX68a&7q9ViydzWYfqkhZitR;ARJ3B}fncgLI zzbNm#7>kdrY*C~X#}_Q>EjSy#{KX@&%SJ(r0qO#NuwNQ zrBrL$-5xfUj;3J?0y-+zI7#%O;;k=M-id-g`#``B&cV>iabLN z^BGzY%=RzCGCRR>hkKgq!}dQgzuX@0{C@cjqBlYK(8|69b<+=J`88+^y+(CW=X_$l z@UY>jgIeDh!rEnN3`l5`W01TbLqs812a%sKkS;MWM*h74R-W^()V|`AD*`3Jxc;9)3HQtBr&hb9MNRRhv zMfOymx&z)6n>Bw9gj1>QdUGZ@-sdXIjfYYqY=QypwN9IWz?}_}JYN*E^CZu@dirsR zzOG*Bv<#0Ew0xr7JHMT{Cjbn&pdROGP4G$HcfCd)@6wfL(k>HxA%0ZxPVm7T2=9AA zd0U(rP1ynz)vbDIH(&;fioxhOp6Zi*0`H*i$-dfL>jy-)>dV+@rml5j@3p|Z}rm?Q_lX>D%gnH00X0I=YYv&6vF*0TRyqs-vQ3Was#l5I%v&0>LjtQv7MR505Wy z|LefX1w!<2{#PA|8oyoDX$xrIt}=d(XCH-te znPkTn9mLmy3&A|9S~sFU-w$e;B$6le+iF_ugoa2lbsWX5X@;=d)-#bM;t>diKutSi zf9`Ykk@|OYf<94D*bN9Q5!$hzSViX1W^@Q#t#=+J*U`Hkxr3j$i~R+HW|+6L`}HO( z_XzgMZ*%rxzU+?zJtRB9+$UUN{|?q>5p04l9hBO5@&{w`WLw`z>fj*Tr$Y(@P)(=m zkC}s+91>)~e5l#`7r_29TU?ddRJ$fsbM_L$;w?l%qr(HBy1Ly(pR7W_ralWOW>s@r z_A2104=NP))aVMEwFc?9N2=*OMPJ}j&KT4$R1DWe!HALTnJ9!=zbFVePl&GrRrWOV&;GKHC{D5&0@K3a9os36ne$_V`nO)x5C;VAV0Fox2@I z^azf0#4(~(4Opg+A@xkyW|w!5KV)_bdhhi+R$P9I=^r6nbkncg00jq9o0;1!7N+B7sL$X*JqEUBa+vUE zCy%JPuyyLx*|XyJpJ<)9pfv?P*2(Gd857x_)2?}TYqHM;0~Su7J~%UF*4**)kwfpZ za7e24f~&e=DmcYk64I|H?cVv$+bknBahP`51Tzy!w6#BRSz!(ZnH`~u)ME*hXdX*2 zJ}#t}u-VX=xD~(sR??;iP-ogq+G|o{UIE|p8zCOFS)p2p*z^97G%f8%!lcgZGEEMd z*9{L_lkU_$4e1+)i$;Fq@B&HrDv%xM_{fw7wt!MZZQ1=|2mrTmE~$a_YSZ#OX7jsm z44LR9Hj`t~uAZ`%WB+juM*~Rn&~CaNi}qecJwOmgEy0*i86gtzdgrE%2#{wUhE*#x zXN{PssY@dh7rsA*R1mgk`Q`0qmt`7sAxnwfo}XwWDaVbd@Sn6@A~#yk@JmM1j++9nE>RnwkRECzGWjnrRk=Vkf18oPi1 z1YqRfQz(?t$B>_Nln`R|nIURnc9vq~-@P2#=fe30fDsFvmu3HbNqG`Yh1odaGtoyd zQ(5Z#W3}^grSozhe8EfwgjO>Z#&(Jz?NJIbe?XTC1dh*E+~83Jh~;dhbivt*Yc7~_ z!$=KC@^B@TIa^V&A&WZJC5l9BFeqN46bUO;c`g8LoXk>I&zgH_!?fvBr`;0_E)9^t zvKvrQBjQ6!692eaF~E@M)+gg4qRs#VJ_Rk3x6>V4ltRBgCWT-f>x4&3(VxVniFIN7QdCIOm)D8=R5?^fQlR}yjmI2eJbW;s9EsPl zuM{0DLcvTBv^isD5O%IJRjvSgfDQSmV6K=nnCU(mn^qZaU-2S+J1#I(D*fQL{0vbg zTHe`P3?aq}Adn^ycD%f%9sNo;r4pxfdAH`wVb=#l;e++$X0ERf6dJkpfe`yEILDHI zruyw#G+?cm7GUh zWTmFgQkkHU5B?b1{CHR-#1DLn=Fgu?^hu#q5QL5K9LAPE$>I+0iTgqqB90Q`9qi)Y zYE7p3on~ae({za4(Eh~V4qf8a#5>gGw~$lV{~Cj;Wdy@%O~&nG|5~rV5K6P#8)4TL zQoYU<^ZZzcO~^OiM)e`GYM4Xhq>+0e6ojpw?yYlm+Um}?S^8rYm2#0w$ljsXx{6_z zFTp$29iv?9a*Xmtc)#DUo)29l^>RG>`5_Pa;XQqq7S_)Xl_Nd?;5q5iFDit(_Fu7s zIa&cT-@8?f7qy$2ruI!CwlAdYl+{Nxy*;FyovpVnL{Y3g?lrcb7*)UL|99fI9uSWu({bD^NK8zujOuSlhRX7654a~(pne0i?BXKdH;q&dpl8I4MF7NQgFbuxGGaQpI`L`5VV$&fH}v{n+lQ2 zfHuTYQn+AWU(yexIxYG!B1=(9zj@hvyl>R9YYr-pI~*W45IW$+kXB37r5~}mehNU@ zvfZdX7nXAa`36xvsyV)ClxHRoTH$UbNn#cSy_$86Q0T3RD@_&grVkkd#qgS{kcx%s0MarO}2HEvY@BjuD_Ap>g6|x^=5J^Y>uL&%NUlcRDiR-aRBL+`wamt?|3{8Jy-w_Lcmk9$3r=J(OobJn#FXkKg6 zCb-L-t{X6`SElXGVZ>#uaE3FOLDlEhxzMvltxAc82pPo}pd{kFf*Vn1JtYR@nE8dfejmo(>WhF|{guE?v4m*j(Q~TxZAxXo?Za?)X04kr%Sivw$Mq|(&f+d9 zPGd|z?}d!%WC;B=aCD6jasN3L_O=~x!_(Z*ZA|2^41?b=WLvPtW#bPM)wuQGLQ*{v4QzBzHQEpxtoX> z%uHJhgPC>C{+XF{eoUT>CeHPjJ3F$Z3tG?kWX(1se``iTU|&Pjr#P7bidFj*#_~Fi zK@0S_^OUm#{S9Xu`k7k5aAN+8^7Kv=`_8AHk0=PZ%FWZfH2<%2^uKaU!mRi((MsD+ z#^V^~vCbe0r_r-|8mF;I!XTph3U_b$tztPoH@r(8O;Oni7Fh3tPwt4&N$BuX3)>X+$#E z#~!|$MTxdbV8eEadq_>vj&UB^4psrz)#wmeF6GdgHx~+OtSoz-Alz^l=GV2!+!KVY z1hWX5>_FZHMl|YroA5|E@{d@62B3}ZOV~NIXFPY8eySWlA^GB6uG0ehzJQ+wu0MHN z;6?c-2YIpSOHXrq9`7*=&ybOPYyb3NHYs9KndMA6TMX5d^3TcGos`R1@~?RvSmM(@PzS=vGL;Hw>b+nJ$hX;r0&UdZHhh zq1a|B`_>2{wHx&SMA^l;y2lHr9O&SiNOdOHOag6XJL@ul(J?@H0ilC{!iOVJ)MCvJ zqE18ufw+GMlq2aEUgskYRV4rYF7apwLUu&Nb4JQ()3Q#C;Ad}VAM8MYCbBY2^gA=c z4L9Qh&;tmxE#Fa>#U^rGz#dW})1i*!-vFkTzMd$^sFr7zjl|K*>@;UvCDGR=!k}y=xjj5UWTZhyl2GAjU|qA}5XlPHuc00Tbe=@$p&CM>qWU zC23@~#8w#TEwM&d!%p`WwC8MzwNcBjZ;6%a!Y+wT`qsN8R)($Y-vNrqMfp|-f=&Eu zWk~B!z;5(QlrA8yj9>aC>Uz77z2qskUaF9Oj%tev!GQtw_n)J(T31M4D}pt1d~Etu z1aC!|U2qan%wk~3F7Q{|fB4y8{zSzYM+?c|&NRSYB0X(Xm|*6*0&_C|prYI>x{+Pc zf`=rzRyT4hTgqWuO9#JH^VM~bXQ%SA9x&>Gp`?69+JQ0y2ls(|#)tD5m@N?c# zN+Zp*T$E7-+sJe6W>#m?*-?GDp8>%FPj{(-&;b4dZ~^waPMQnV#sbL0)^M(k4M>I&@zr2r*tR2m}i=I=2~QO2B#sQ@bhJ>!_Q-m%Fq`J=)g@+jVhHCA%$3v5=n=^ z`RP)yD|HBj9ra@@bA?Pg6xH#MVE*!HD6JqMaE20$W%)4K=vS9Hy)t(ibT~O{ikU$V zXDW{3PcjZ=VJdfxg)$N9nZR&oAa((vQ?3Kl;7`Y0U=w^guJS7?bzd0+s1MfX>3D>6 zsH{V9JspRaa4i$~^SD>b1nKvfRwiV!xdsg0?-;ygLS+u6R)i%|Qw*;tX=CJa=2XU3 zMJsYI8r3;mZ}ml^GME1Jk8#U5QArNO7UJQE{vr~NpM~K`@g*!-BrF5XGQLiD(J+$B zFmQHZ=LRjD4VF5ChKqlh;DU>+BKmST=9KwWRH>r$T`DvJcx*1mxcyk_2$JIY&n-Y! zJj_Ih!!D{+)ypD$T+GNVs&tc+&uEu(2y#z?_yM88E5Uq#2IM%V{AY&iaEu=T`d|{H zo0X=v{J@AK?z>#T%;zkD#clH}>dAx0)a}^qr(x7G>ndFp_HserP>DQuYE8Tm+bMIhG$>wXRS43mxQ4cfRdK^w6?atIg1IvfZhpBla>6Y!gbKy^X^bl|&^@?T2z+vc zfd<@6&LG0TNFce2D6^1;1;&rAzg~Kb2ZoTP3*`sLw9Nt-D1^PY6 z!~bV0PLR?A0YDxI=1XHTVv-P^)&ImKU7VPN-KoI!2#EwFq5cz+bP|)|tMFK3&|UY4 z4u<_6xP9{;5secjFzcy3VmaIKqSOa9Zg6v}XH?!q@dn&z&p_Ky@r2PqrzfZOOI2$Ks*^8Lv6FZFdZi{c!eLA#E%#+uL8F++Z5viIXe4q0I>c~#CrsK>kZ9_ zq|#U83nRX>tjw54oQfK*)@MW?7eK6%#Kk&-`WnJ<6|A2KR?-MoTx|)63*7bJXr;N) zT${io1262$C!~i&b!`Hc3E|3TVW_?i7hKQ9U27BMGiEdnh|AL21REy{@5TWOc_uER zkhN;7D80zejnk6>VGu1c5m0Q3Q}0#<@ygnST4>?Oug6)v6OIV%DYQssHvnQewp#tm zR@$e5wO1pr^+&W)Xs=CFTRGO?>>EgLt5(qu@T5a!s6MoneO)a+S%o;oz+P$*UT9bJ zz<@mjqPFikQ}^qkJcO?Fm$&9j+kUFbiI}jbJn|s>-yOT6?7ub<%G6Zje_`i$Yr*Ws z?w&e1kULW5+9c4w5FrP%k;5-7%dZ8Zd~IT??wcTC|IUcSyEgIP6wjIEg=az%e89W# zLNJgxA6j%F@)B!N%*me9f0mIxr~iikz9gLF&NAn4xUbKoa(es3p!u-u=)49~6MgcX zijm%(KzN$joxtQeyE~yum1EFQuJ2CBXpF}Hp1Duol?ag>gYp_M#@4Qci&>9hTQO)a z{-Gd$eAZ~Oz%8uzNh3#NGhsKzrRThXjFqT2yR7y*ow7#q4PZ#t;Kt2vPq6Y#@BZio zrMF!a(m-~6Wr7bbXtc6N{iM<-V4fQcOE*<(TMCf4eV|(Va{+r&m!GbN;;eYf=s#>G zo}!ya6HhRV4tqG8RDJtX0X8@uQ8`CEANE!&vj1$Q z|0r?)vsF@S;5fWvTG`JYh9s%AX9l5NO9A{L6AGlPz{+Y6zl7~cOe(Fx2$$A?=VeSQ z?OP0s!~6eUgW}s{(6Xj$ ztCcdHuE+GA=$Fml^d&H7a`EyQZ^3!o9&?f$MQ99CyHt<|MRC5Mchd>`motA{bZ(40 za7pBLI_u^~os9^$jMSoYRit}hp+5pXqyb@_DQf!ztZxYCtX4^Me9*~gJS|cy=uE`1 zaB~nLmopI;r&X(u#psIQnW#&eTn+yR9AhU1KL3fird7MDF#q{u4lYiw)*g#hW-tYp zrd5}=Ppj6efao2>D58dHi7ZgW8prnGT*EkFy-vb>(diByJ^8rN3I$+-@G0z`bp^5KkIRA5|^wro9Q%N~9t|S(=e3 z-4PN%Tf1>G;N9tuD{C^@j3hmo2;1|S^hBZwS0T~hY^%yTdGM^02Y)hQsvMWtmo5~6J-1E{WlM>-yTk@p(Qu>qp2!DPQ4fl^=6fRa zcaYR~h*~nd77znZPl@f1qhV2+;&eFFVlQiobEz+>QWS|_*P!>5Bziz&W4Sn?L0!?g zUY&9-GCt|6Mpw&2RDW_H59H2ccrP=OPYyhTjSzE<_%J3~sV4_2^mJ#I0N1!wy&e5%+{ilWC-$?+xwhPYlN1e@@~a9ZN>$BdivA-3w}T7bq_l)VMyC$emTla%rVa z(hpVIDv2Mf62Gs)6U{EID$7Hc!NKL>2H+DC;7|joW*2;n^=Izdm%xXs^Z!X|J&^c6 zVRs&3w=})Kj-v;2E!FN%B_luaJY)v*lg`sBEo(`Q_k^U?S3*sFXkqSR^m|l-I|1DY zT}TDE6M&Ngsgx;+=_={QD(IGgCkWYT&sP$^4L1Uq+Jq2xs{li6%;6Y!{fS8XtN1wL z{Z67^RLTvYQu$F*&PlMf)zV2x3HJ-zYnb>#Wm)c5iC4xO^7(&DbV5`DB*9ExK;)u+ zjb?^GLM{1cB45I2%B7Dz-xEvOBcN<;qP3+_!ad+7IFAf&0wVMK{zqJTMdC-BbWN6=tjt-> zn)9Ih9C`E32VDzD>~#se9#2sBAc5GNR};-G(-+)=TSn~syaW(g^7Zro0LuW-J_xO& zHqx288;ATv=btz!?;Vm_`y%U}px~GKED$sEmx^+LKx5|@h)i<0U6T^XdasJWo)cb0Kx$);i>X+Xcql;@@Ct~_%F&Dd86pzOYxO$l#D8NQ! z(l>!6$b462?}$d~rrXhQ64tjxILkSyhQ*Dd_qJwsX(Py{7BzaeMH*6>PnOcVp3}ER zCK=||$a3ce$%X&#B@5TLH6oYw`H0T^-{8G!|4 z82)&%^i`3|jqIvOgRAmB_o|4qc!%o^;&@uyS`}gC*}A@HZ(S8}8m5D(7u68(P)ICv zkDzGn-WtJ=g1@~bKv#rdsST@Vq&S%E8Nq`o^^9OUaD$!CC7!0L2ola+BVfns8j)_K zQrC#%jB&Q{nu1cJe5Ko zxu$PHMXIJR=5=u_y8~8HRPPZ4)ZwX!M4NrI#BhqnD8wC($arL9DC`83J0pgj3!+or zTzicMq6+J=(t?WYgO}4$y64eS>C*@sMZ9K^g6kT_x+zFlR~>XT#a2U5`Z*G|i+QD; z|JkT9GoLZCNno!rtvXnhHes^UNm!*Gk(g7!GvQV;%gT6! zxXXhHGmYo8JO~_Xtc!GiAdM`m0??v$Z-B6GrFa@*X4-9~($BVx()~)JtO)X*2CJlc zFi7cqnI8K}{lpKBA0=9Vt_>)^srAty0(1FAikuw7Aed2!moVve%CbJ5hlfj=(OQbx zW*Q6KgSkVZ%Z!RIM_dm|{FO*qeu$*M5^)FfuS8JN5?_g^4@xL?0P}2_MU#CG1G&l!;>`Hmrg}OecLjDhn5O#dYpp>Ude~aki1eENqI?#8?Z|D|T?- z+Jla9v7MZu%jEDs|L=tA6-NQK0K{D8K3qJ5$=e_)QclPC7-le?`OK-3Pf0UE*=?i?X{k|auF!S zUEthlmo>IWZ)#7?mysJV^aZku5g)wZLK)5=|3*~xXTYZN4<{x_Vhw6*aGp;{$|X^F zM183YwNBuRJWFMMb);Ln1s}^paG{;g@z>{)f z%6ePOo3O05nCk|ab;Weq8tO&B<~*4<$b3h6w%tlM%AyeA#Z-T!8T8v$Qv}|W&vKYK z;6QJd=`|6|=T*=Lrj|tv^Zl4ib{D9BkuY4spKAE18hy@%9J6>7p7CscMA=?N>?a!O z6+uZ{8FZf%FzvrLqMa1jRz+w*crA+{1}{%7mFaFLbtrrZxU|=y83G+2P;%pAxX;45 z(Xuu*hQ@h#&gYS_PbVaJOny^?t8WyO<$h5OBoD7dg+b9!dSV~UfZ6D{r(YDpFt0dy zs%9egig+V!W!(efR6j#2!i1i zjoj22ko!|(YABuQ;w~0gA@vjqXxqU2HkFwgLs4gH%-Nwtzi|Cved?KvyLW2rf9JQI z%YV#oH%+Vd4!O3`bUtLSyip*MTW{~owciCVau>Ye^cc*t;})mKI#CMCoCVyOXC}F? zx|}A6zcBqfmn627NZS;cziVO);p{ar+`!f~F_nF;;*M?Vu3r-qnylnC$O%3+t&ELQ z(XAJn(lAiJHl~*5-nj_L(0)W46~jEI98X(})oWy~S1Z(mnU08l^)xgCq_3XlzMDwj z5&EpIx5gmX)EW~{>VfoIYN@%B1~ab$6-m{7AwJ0$=&YrXKypvaRZRGe8u^&iHJYmf zuo-ZX*7g$7dvDggt;9R%=09%Ke zz=AURtGltyUQoswJ;1@CK^l`w>sLdaL*ur68}TkB;*f|7uje?g@cI`ZcFQbdQjdtM zDpYOf!8?|_of7Gli1zPWSXn_cq>YOO_4Zyqb6db03$jlE#4>vgWejp=cK+!+GV;MN zSNrvXnScEj63EOe^RBoBZr5lZ;$ZcLpq?-U+1Jr!`ViRlX_u3WDSM66xqi?nx<-Em zI^q(1=a)W4diYu01>Nf#)8+?6{mQ4!FaixfUZD2}y_$tGNHW)-kRK`XF_kIn^^fTq zO8-phDj%PX=>cOCVyFgc`2gmDL+-3%DHTpdm; z4-g69kO%1^JHLn2goI;$o8fAL{&o@rk!N9%{1q1iX@TZc0}G>y%A~ux>xc53UBmTq zbPDaEBE-m0*%g>RB;+a2$JgLEA@iYx=RL*_>GYO_zAyobOw&Y}_y>_LN_d9>b~g&N zM_e6W23nb-90nls6~f5;SByP>T>Xk^@0JSZU58)ppga4+cybEuLjLZ;jCr za;`CBKf>5uF?0ny!lbP+4QtzCxa>k(uhRDIs8QV&gYJnNy4alspr!bs`^ufm?r;+W z`kdl?TdX{v;%HE|&>5FZfvcyG><6I>r;7z41wWO-PRgZM=_!ty;NBW{3Xr@F70Lp_ zUP3Fd_3CONnA=hXB_JaW1WM=pNPiy{n%9H4O@?9Slpcmjmh+2GRpE#8cHrVmI4cW- zEsvdkqjtfpKp3r>hJ90!=CiI5^qY!kQTk6s2&{`Vzx7_J+6Nq6s&HLVFn?o_bTdQi zbOYA{TuR6Bnn2GantayD1ChkM4~4ZmgChMVrf&;!eZo}&xs*!Bt}?RA7!PNTT_sIc75^H&E z2C}F=;n@xb92fN@^#7^ErNwrj+9mo`C4OPdp>exEiqhpm8diC8g!Y1p|Zf{l2yvHm5 zg@D#yfV@@CdhE_)CDkS?!sa>i=x1>zBOw&4xz;W?&3|8%w zawyernB--Ds{(<`>mKQFm3Er5R27nV>Oq<3tBmx!pxPT-fE=(3OIJ$#T@)OK%L3Y} zK7GSG0^;pnaoR-beJJZxQ4nu`=rm^;D9~lgswl3;vMOnag0{+{D%TLDI&a#T|0kOS z=L0?&4SQSHP<|Q~-d>GzeJVA6jrSdyg%mouw|BJ=${(xNhhf%>UL0&sq|$q;J;RXI z^N>Ap`LIAIde}4Tca)Th|hwt$gghNucc>KF&#Mb@wVDSLlnzZ-J{n zPt=w(4pK4uP60{9SDnsA_Y=sw;cB1+Uy@nm*FzH#=4L_@8Tb6=uAnTriopg6R#dBmV5vNnoom za;FR#ecCe(^m)@WEgqrVyz071lcJLu8WeMA65C!)znp}2WI6&q@){zfK?N|ys7@xY zis|dXv6qRWrw3wFASSyJ6?>=r{!z7`-D(nmfNQA(M;g%Uu!|3>ZVk=UUCd1E$X^9&5D@v08aV-%3_^0}*iftTW8r z~rWC$A}L z{s9YZJWZL)@(#tNul@J6mo1-Dcg@npMNGRF%KBUXNfJ(%gFX9w+9y|mQ@f%#*r_Nn zCJ)Cx$t9ThN(QwPE@SiauyHWpL$OI3CC7k>YpnGzZ#bVda&rK z&`ic2td(N4C}T~)lX)O-C0nSoI$%tcVmTw!HS)x%Sh*3U5>S# zt0&vKlGRwCuCG=?XCI5xWzIMjCDwjyS$zRx%4EGE-v@JRwl4pkx$z{)t9=jmaR*nwbj^#mYoWt7bt?ZaK^zVVs zGImBmyy>%e?f-&zO4~j^DqjCty!_qJ@X#pjHpWhtl(nn|TV$F1@~E~24T&|7^mJXr zmxM0XG0k<(DC`|p3meytLXBkKQBWI7@x@A?$p z`ZRq^yy4e@L>vMe1x3FFftI2h^lgTsPt&E5$&>WThLiNF#NW=3H-CPD5~<49FP8r$ z@_c?g@k6#Y^jv7NwKnF(o9}+24Ch^RHC}y!(t4~PFKx8` zA}C*dvp))}=jXvdV?+H7_vWjQKB3%oe83-+uX`NtkKC)_XsH;}9}6nd0j+jH<85g3 z5|0J7#)iflrshj+Oj-U!1h2VHmhhs&8itP|-oXOr1hCU|?1JW-aQI{uj!MIh%Nwqa z!zM#}b`vJ4TfV3VZlW(9;jsUfo3QS3c57&#u4`p@3m5M_zlY5yh*X%oi^JLgi@^g{ z<9~**R|R&}=Ah>P;w6|&eO#vmv75eUn*V0nCAJz{TV(xPx*GfmUdi9A%Rk1V%>h~8 ziVVc$x_J$c;>+DX3gV!@@jK3s{2*A-^e{e4$@DEj7!o%YCgRP9W5@DB*b+O@Lc>2}XpG+shIf}08LLRav)BmO82auql^W#TW%0({Wf(Q>E|Y%vdT3d`nh5#6 z$JCSZgV^-Fyi9))Z+kS~Syt8fVp(PLi)Hba7t8e8MAJXf?7}HmGJ@NDy9Qs2N9l74k!Z;$bu^I=O{RQe@t}829LF0R8#qp{$-e7L{ zWn)oGLV}(>Q?BSGpTP0wjn9-<;8)UItZMj}Sg>GZW2k^h?bL$nc?Ch~ud_>ATP`kb zJ-0mM)1?Y2^!jY6JT_rL!-xXEwB{_|xn=TQFk6cX0(h75*X3iH8g`W7o0xK8)2n5{ zI~fjp$47X|aOg`>)465XV5(OTvgP@5m_o`^Wq6@gE^c8LO&zBdqo>fJScP#nDCxh&hMXj%2MCY~CR!OhE0*fi$Jg$H~N%VZVJhuv+ z6Sd-r*%#$KUtZYu=0*DR<=Cb5JTe>)gyf5+O+tr?N$hxQRRIp7h~s-sRAL2Ku}O}? z4#D4)7uVw~w-ucwE&GC}B)ZPNwNu|0teOPsxPnpo{rL1nO@aPhc2~UNyX@Y`@kFn| zN-?`vpHNUVzNu*fL^z?KDp`k@!s`lTcIG+yGI?#JK*!sekFq=U9oQk4XaE)ZCA<>9 zM1PuS{H3l)%ft9WN#Of#fw(|zn*YH!&04%WG6J7bWu%S=~(5Y z3-RWu?w5~$M*D7MyzNw7u4p>tGVBWcn;vUiiUqtpwJGfTZZNO<>K%0DkIX!|Ty!?2xidTHzUvDzmY4rGcq-5Zgy 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

    VK9_QY&u1cvQbXhZOhtft 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

    eGDM>~iI7SpCdppFFPMCzAQUZr5)|h;M zuxXaQ8b0HuAop30N=a0*? zm>zvcQGW_=L}6q|qV>PK&`ANLzi`C=oZ-4aIAT z{tC@PamFC?()NcMYE_Vk1&lH%BRF0{R2Y#Qru{=Qwn1+%`68o$s)<1yoO_{;XV zK@FE12K$`yh=KKo5U2M)g!r`X5F%0I6GL4<8kNS3&s_F`H`ihw#~Lt8_KS$RDG(Y} zjc=0P(d7vS;u!5(+APz4GC#T+Q`Yp993Xg*6+Ahr4C)8?0Dt7MB13&&pF2vjV@H)X z2U#EYjmH~O_~?z5K2&R{e;Efbt9$K;2BS549s7*wGp_$>w6=&hyRE-ie}rMB%@@`u zf^%UMXJpsOVq?y!`1r0$+nA`C#ClA}os3*>*+5TaX5Fbh09}4_@Equ?GHJjVlM~j# zLUOQ!&tSx=`>7M|US=XP&+g6Rq2h7}-`&qLn{j$Dl~)gPX0}|-N5QM3djX4lDTNji zPeO{je`qI#Km&X*?rle$az)?JoPkS3Y}zU~zFfa}sIM{W+h}an{YA!=9b!x-@UBc4 z=Lo>YYj{HY5u1g~y{y?Xp8#6t;s=Y2b55Ul*uZn0Cs6GZOyS=c>f@=v)1aP4Yzo_u z3GHcCY^*$+z03Q!&k&HRA7f`Rz8@c5OGP}9J|4v`lYAiJBmpuiBr zlERMx7qIe%LMUpm`R5T1iS-p{8Vo%WLagNlw;*i&Er{tihAXFt8eCSSZ$WvtaG;}& zsi-GCbIuUdqkDHO)B|Vbl`g8eTmpG_3#vheA!h0pjvbU&i$DP&BY^d- za`$!Wy?1_oHFadl%tm|KWgi5hZOtnGafMJwPi@lFi#L*uKcG(R^Roi~+RC5XT4VoftC&~{ zGk<`I7Y7I6qy!3828cc!x5G)4eNib)h1G2oFX4S$TDT;?*6KDz0-UdIOCS-*J#||Z z{)vB9=TP}%<4>r3$19HFpO?5#JW_4{p;R{ZLGIAN%&;rpX4R+2Cb)hCZm^H2gi1Gc z7$OGztxVes-HiF_0~O}%iTxd*iW7j=Nwz+$U5YV6*nE7ICmeHIa4-%hu~jj*9R_89 zxvgNZ1CKDexlIv=!4(4@sKk#r11@~8XJTm${P4mrIsk@O@md!NzpN>?Pk6R;J}z&s zfwety3W!=UPp}8;wNoD&14%J`@-`-JOTe-}^dCUr&B@!&5rg4Z)JXASs~QL} zob#O33ZtF^lZ*Qs;E?p9ZNcV@ZNdX6a>I!kg4~hT74Q@U#0gbtC7D;?LLlA6)C;%5 zt1*-3BES`k?O>uG=krUjag#;G3~$uUnDVP4%)hHT#lVdD$1eegFG((jH~G|F7&x6G z;ZNX6V5V(orejaBI6`qpS8%m`i+&-;((~uRHOY&4g|!dpfASH#k^}p`56%&JB6%5C zl(~re%@GO>uY5UI{>bzzxDpt=C42=8E%pJOiOP&CAa9fVP+0|#p!=YMzXEvfE4UiB z60G0~9G+CdV~dVLkx+w#3VR#+Jvs*l?i;aA)N6eO%Nc9V086qBcX1~+v0mH^c7 zAd^3&1S}ce3GtV2h9WccO;8zRH(BZLH9qG?UF|*%$BdUld3-+{-#x`6&nwDfiA3g) zT#D*i1#I{u9Dv<_UjQz5vVFMC!ha+u6P5H=JX;C;W&{`GD>woxK(&u*NrF-0;2K#+ ziSqkuC~vC}HWENfBu#@R>m*wA7IcXnRU#g3!chT6K=PS8E8KJ7n8~PALTAIMrV2hm zvQn<9grm6{^S6J~=asG;c;h z4oJzuA(gX=aC2r9<(X^NJ-?faXe?7j=hgQx&@-mvqc?|b?dKn2Vqry5R1rb-MSpy z2~F)CU0gYcIew51_PpG(3u~Uzr6=tEyTkF+1v~YDyF)`#nXl-}aW@>5&pi6Uz@2Qc zo&1^wp3p*ryN1vu;9p;ZSq7p4Qn*(AYaCe`#;Z7qvi9i9P=am!1E(y@b{7?=zG2~; zFpcrI#`*>hD7zxv3TE{;XxLx3b8HS0_HTAaYVF-h^o8BEb{6haUf5kETXy2S_;fTF z`H&Y=pq@p(fj{ZwH%!;MLJ7N1Hj+p`sRZD*3nxEMDTz#Nwx}2dN7lm-`x`h({054z zaLe5E(+U{+4Td;62_llJT#${_rk_!w3$r!pXB8Z^F3cA3e>CBwEW944xZ48Zd0Fvh z7>tIeM)+{~lGQpzyfRaS-QxUg7>+LHXZzEo5Wfwp+X0*0&Tuf(GS}Gz#UtXIVT{pp zj)~{Ql*Z`%th}K*vM7Y*VUTCaPzz1}rl7AU%R5Xxc=T?Mi>Li;5xfTMi6Xz>!3VIEv&El9d;>~y$ zK>u-=tM7Rq<~y~JGr3GSZeA@AwU7>n=v-Ey2k<$fsasa?DeK9A00+LcICE7-i&|Wk z<50QL?Ku#qEY}6$QY)9`$EoHhLmd>b@)xsqZOcm%@8J~lPoQ8Xc z&E8=+@~C6!rO-Ctc!Po|^|lXDA&%|o3Ob_3b6)eFyA8R@+%H%1H&tDAlpz^Z*f#l=Zb#yr|gubu_XPmJwv{;K1(yv>LE?uuRxHki|}T9d_8p*2-1@c@SmU zY#v?OXr!JhQJz>lBn?4dX7{fdiIeW{vE_qrd7QM(TrT42tAa3h(4Sr;201XksD!bD zcupZG`V)&nV#gf{;HBe##ZCh*ZR`;VsDC z0hsy->=-J+$k$l`T8SdouV#BF6<<(&fn^t;-!OEMIp|?&!`{U=cMuyi-(Ujav&d8d zW(*rtY6n?N6cQ|7e0?1ia&>1Ic>1{c%PM(wXY6$ZxO$!99KXSoS3iO$e!`-`!OwxWkMl7sC!nDG4YG~x8ahL-hem=5wMcnzYKwMB2U8M?q%3%L7w<_*D zP=FI=SS>U-&MFm8n;q z&wN}P= z=nJxQS{$cdEl+-Ny`04KOMz4P+YF^3B3f)RIUo?%CAfFY(OM3b7g!q6FTzZDW(paG zU5K>4lk#bVvs{5YUtdCL3$nn2xi^M|K9j5s_?cV*vGfEQodiQmm*PnN7@v}CxT=Ew z*Ytd9YHdgqA4$~4uCM^HVlu7@WUY7jn=b-XkCg%c{Uri)U<5ozJW3#S%YIbGK0Mlc z<-Z;sktd(P4?hCUx>RgAMe%G0qTV_e$N^1!z`t!Xdo*(xW2swG(-gI{Q-KwZACRPemVfPNhC7 znkD%Aopg1|3ivj2$(&j^(A!2hym(DtyR-ibp4fEY4A#n%L`~+=Hb>pM4k`#kf&b9Y5>z?Oy;rGIbiJ}pj;ZU zIM?i8u^}vgj$JH(B7m7g0&|Ue7Tt`OiQ)yJW8c_SgbN(D;m%6Uwk=sC)0|{MhOo}pE(X?_tQ7PI zm*-``{mTW0E`}KR0}{B0)Rmkf)Ftrk4=0-Js5FfmTZ%ZBlhR|m%q)AqE>f=2*f^pV;05dvt* zc?(r6y-?=dR<6q7;ii!?egaNM^z3k1==9g(GjPzjXSj@8KaHt!ZbuaA415>pPqs68 z!U-OtTONDDpt;7p`5|b?Es9ON3(ht(298;+T};*XxAR*c3GRhncrUOO$o5NQyQ>X; zwoXv@0`iMo1o_qX;=}qWjSZzMO??q~?t7^+s9^OMk?ULJ+Jszty<84*k?RXD*G~oc zT(7nB4<4nu(#Z81a*dyXAWz7J$dP+tSDhp!em>iX(tNf9fLUi8WOI@2Ks!@r&Vb49 zUf7)O;?zb9*+}_IwJBThVQNzo-)ZL$KL$O#>n7oOMt=v@y)XlN{VvJGEm7o)BAe@H zlduvq_F@gBjDKlw^{7yn)c=B9|H|i@AEeqc$Y$hg>q58*WCZA;o&WoBeJsq9A*OJ; zaYr`N<|b3Ow+G|yUo>q^d+d&^YGk%u3ocP0G7SAU758QU&#e< z^&4!}l8ahw=!MHtJMxHZ_*jqJkrhh{0Z45!0mH6$Fglt{1AuIL1vuuxCh6v*cyL&B zc9g%c)k9?OYiEyc)t_z`eEe2K$g&5ZSItAniON`#B)8alqV< z>E-`w)Mfr2}fVeA* zRW^n2)Li_5fXqZ+*hE<9z%2?@{!cIapK~39`*Vt^?lnqSx*nW*DZYq}(k|*)g{}#W zU77i_S9hz|a@;6~vwZ?%zgA6|fun{m1*(0Ss^5VohsM?$`jt72v9c_>u z_$GK42#oA>e5v&5P~^nxyz<948jg&>%JQtRY}yVf>BCdc z%0Z)J@Cd%UOMDcPpLVvnuHB6u0P#tu-i@#1Q$oOdc6Y^b(Lfi`$5cC$N}dwZTL6Z} z6~NHf_;}iN*?3zfX{^g$?q-tCq#%K0X$tL}J_Xj-6@L{nYH8NuWKN{HG zB@fFbW~db&;kBZhaJIcyYIhgVvCRp4Gj?>SmXFp%^?^>w}Af9#~I zR>C2>hzg3w2+HGM;DZ%uBRYgwur)B>!}-Wi7t`ATQVZ@<*THEG*IxqEE@iLN#Kl@0 zV9vnuR%Y@PfqCWKC5lI*GXUoe?&w00l6O1X0DJBNer}!rA?)B<;;{uDK9-2}npn=& zuC9W45p2iZ4Vpg1$JIR`W19zhxY2vF#e>tCw-T0C;b`_AP5(Xo6uivTdo=m` z9O9c@r3Z2(;fX69kAQasbZKXo;wQPzRy&KS6sC~Iq1nY>pk*xIF^B8DU~TSNxm z;}2$w#K;}`L)n$Upr#&H_1PVYc&3wZQ#A+#xw8`(DSb0`z_x>1o3l{p6FwLhgVS~| zbeJBgcYuY{7j!6UaF=|{!=C<028q~0&{F|i+O_3^=xv&q>OoPrNlEk$4F{r>u9pjK zYnSNO)aN>fCe3anZ|#zMG_i!E`9RYxMZn;Qs6&?C|zyFUMIkfM~nC{#4O3 z`?Ct)(vNUx$vm2He^%wA&!#TkpB4P3V<|BY=*2C`_e?;dXjWsl0Z;{m*wF($G^h*s zmAq;|4)~`m)kLF|SdGwyz?2mO+X{@?OzPqoB9`Md@c1M1C>f0=l&9aHxWbY0)~*t| z)eHPQcN`%H|K0=qywOJv?#~tr_X;%YQn|SSfIC8RDw{6Hvw-p?j8Xz9mewPIkbTcx z{xf8sT@M#CTe|}Jhikpw^(nL|_OmM*qRT`zYI0*!sB6kx!^%7;aJ8)5MV}Up%8gMR zCFBr&rK6M*WhQ_a#GJ?LBapX@Hl_$VxdYyR z0W0+rK=D175mu2v!d}|25(R@3E$yEH+%$nH77?R_?CDBrbl_EVJRqNFQ?_;$pi@t5 z1BrIm@tvpRPuhQ<@=sW<7xCLyom==s+~m(7t;JTX zfX~?x_y(amY#(@t$4)OY&xxQ8LO{YW9+kl}FD3!nB0lU!0s)KB61;p4)d~WfLoeo1 zT1^5@qCus8Z^PjiO?!_iIq+k`2GCdsSXJGht#pnr6qe{|z-jds$$+QO)7O1YGWC97 zQ8#tbH1ENpk_=e&cN(R6$S_U(?yZ3Zxit#o70*Zyo-OX<5CEYZaZPvbZE{Tbc1OM| z{RfnmPx-7$8pI?#ph+hgOD{jH5HAlQz-b)kpwqkulS+_eu{zXuk+C=mC^6&1YV)J` zv|6+!jrB_C1SH;{<=2O)(@V5ov}YcbDn1(pxFMczQUEBLrI6%Rf5!+ikFj|``I&(D zCrK`^nUvVD+e@^3lxe~OTll#7{^<88F>0sJJ{BeUm+|$zK$`M_QagtY1DS@0 z&UZEeX$oNL0)S#OC{n0En%Y#!k=+u-uYI5oV2f7~# zZ0cUX0-hk$XJ5unXZ#6P?Ey@`*ct=qAP+8eEtv>C4cyB6IDUUFtH=++BN5#6xh#4a z)=4l@K~ zOi>kU0JFgj;1W4LiwTcu&Rj*1(%6gW&=<3CIEHkBloA{gh$vtsOHdA6kReeHio0quhNiTs6Ox4f=pgq_Ef;*bxJd3HT*W4yaoEgU`HN9f)PMhQm<>a4p`Oq-ItT zvNT^uxp~3UgHvgA7m7k9sIeKbF6eyaCGco~XMpF|f)nFAc|i{KiAT5+f=^rg^yKRqt3z3cz!(we=Ly{TpX z>}BVicjnx>{#8GzMsuAJZh^nyb51#L_PM7nT0FnbJeWl^$|7fYD)oF;c_#~JyzgXz z4|*p%tDiBc-~p~OebEEagt6#>0rkfCMGp*3j#>0TeZqJrJDmJSAEm#O4YnA@7h3EV ziR%bfN5E6V?_~Ln64t!HpXzI~Q0sW;R6CDOZAj1j>Jj$FaPd3~fBA?QQORlnzR4o? zAUrZsXxehjEZ}W+?-t4_EV_Gl!rHwX&WLyKuA+;l(*pRQEsX66!hLLH3tZ&-(A6z~ z;n`OP;jF0?$H%p0vNZKbap@G1b z(zVx^@<~`6Q54+BmxlgrGGm*n5SuVMnRd7RSa>qY%GJmB%yf-Rnz!a}tY^BsRMxBLVf36?p9skiRMIz|G}zwbZGuS6g&6z(N1Pu>1bZ$d;nwN4`c|M zyodXV6f}g!O+e@112*)6`(plFSnTqeWGNvq2eaH8~-B|511n zL&SiG0>_AcX7fxz&WnK_hL0`!vFYc3xiL0++!%Wnl^P~O?a8&p-ie4jS&cLhB2E~b}7IDb?m@SJ2?(c3RB13he67x z+^>Ie7lZhTZeZ$sg>PUHM3cM|Hc8G@CNHd##{skn8>P&NN@%eXIBl=K{b?qgN^$Dm z(A4`837jva&#RGTT=s$L)OxlAp?Y!0oK!5tsm1ykP?OaTlh>CtrDh%zlr!hDBv7;i z8d8~`n7m>xhtjK`fSYdpKgw~@zdeaoUrF)16V|Yk5x_3F)+V@NCitd)bx#1`;6T5IR0(7FPCI z^yXag(jdi4gozo}5))~o;Qb2E!SO5OpNU**F;Ws1QZ4v9{wtPU^ADX8O^OKKj0#hf z0w>3RdBF}^5kU`y1xmX=TT)))LP9bJMTsgZs5koJzt5cNP zyE^qC7jZjCOH`2a;>_|bgAMy#Sz^2^L!}Y5W@J1SV6j!2e5wKQQ6BCT&`5*PAHcbR z4&XQn!aeZ;Ha_sVpvYHXi~tpIvHQzM5oGK|NTp09Ff4$vE-ywQKaXi_m#RNr`qPN;t>lmPbS~FC9owadzE$jN9v%kd%T}RZK98}BLO_W| zE)m#ET_VCaXyV^RbZ~Ns(BzjIfR|?|g~sZtlH^SYk&)?!T%HH#mH?YysZ+iT^eq;g zfZ8Trh-M)oviGNGp@~#C3#hI0d0j`a8~)C5CyiVfis&ON{m^zy)`zz1fUU#H*Dtr@ zuTazTVb5os!sG}zt?Op`pZYNIVH}R4znVYTM&0_g+u@P`7ZG_g9pzFD=KNN}LVLVqziXxJN=wgvK8h z6eko@2cTi{9{5d0xdF9tKCc=b=q4}C-GI~r4W4s+vzt}AyYXqVeLI2);3^Ck&7d>8 zk*R(@KYV|1H(=Mz-=WKE`;Zq z@Ki!&!g3tpk*^JKxZ#_ALBad2ar;(y4f|TxZWnC`_&R@);M>LvfDq>`lKkHBJs?CI z2)joo%7JM*W;t^a=ZnTGhhPv-$DN{az##T)D``R@ugkrZywi97xKs} z8y#CYD`3e0RG*8sifs`>{Ea*-Bqm%3fNQ%38EgU_!p8;jUj-77MC?<1$f4}01^nK_ zEZRQeaDj#feLNo_-3bei5`LVdpEybtFVs^0?KpD`&r2VlgF~qnIo0ullwT?iR!335hcA}#tyJ}Dk{Q> zS`lDvMkZa?4Fkr^+`h6;H{KvJLueJ@? zOMPT_fgCQ7Pw7VtUnTbk^?n4;KGAu z&GKAD>SX^+no~)gvI$trB6XQw6-xDQnXEs+A)hGu2m(4WCR*2o0O8 zXVsR39nvz1bO=$1oaP{>CEs4Sp7*n`WYKNGKN7JcZc-Pl$7Zsgv1u$6(s+|p0*wEC zZxn`;O_P=TqN1_|*hsCZK!13#;v!%(lp_zp5eA=3UeltSIdp*u9;6G{RCSOr8%jF?u2F&yP)_orYp^u9J1~gTA z1ZFL@+rG$4d9gr|g$txdz~F-3!L@!0PzjD-f=4J{9|G(oqrIp8*=%=Pdm0cUtt zM#A%UMygmyeFj_W?&8=+fx);fM45nV-wZZzQs!G8-W-550gIn}HVS3&OOq9&MBj6s zpX@3-Q(y^q-~o(fS0cGxND^i-fSdN_ zfc$2PK2_1gw2<5!$U$BKZ|i6tSR9p8rqNq~s}rZG zazdUse3~lcRAn== zA^4If<`yeLyu)Es3Fh|uIdd)akevNWq)rGs1NIPi#hFoDfxG;{Js6{0oF1h2y^=TAM$S;UvM!f+%OtNPIMVkYu6rGfPWp^)2!Y?2 z%CW;~kP&-(9jy-dPn}Tm*GB-GAA+Z~tG(Dcsj79hO?8^~o7|n9xb5o<%L!j@FnNogH2c&Wa1<)kF z1@2jGkHw&rTZ&0sx1?=MVz4#GWW-RG8U3cX%Iib0*T;ffi93kn(DoL;^Y<~#76Q#BGa&!k-W?ZdHlGfBPglQe3N+fbyi>9Dn_FlA8nJfi5_% z|L*(*KWpT#Cp;-3m&%X1t7q|_R6exvXC}wN=|E#wR^j4vHMSl|8 zDKw8(W^4_5q;cFnR5t(rDD)@tgQNIZ#M<28pb)U$U&AZ>agb-WWBr`jcAnWMSAyB{ z;G4mWtaM`sFaU)3monT2{#Wv?mfC%T)URu_TrA8MT0YWD0Yq)5O#@ST_%a1fpJ@WO zE`zsdPavNbfW4HJpTM**r4Ds`48aW+ijc$4>63N?Y(FRlgzPL zuY(s9OhKB==%}3hO=Hr=@#72J#Q!9p%86qy6_#keAV{R01bRG$g7ULE{ok|NHGa-$ z+J$+u`T|aju6c_Xoo;=rXA73{w_wWiSIfv%%FW{=bEn6lA<=8o&~IAcav|`>Uw6~e z%xeYzyLS}@-uT__L$_Z+JT>l1dP-XkzpsXaD`h#%vP|NzTmad7tv{w z*!ZE&7?4f;ze!>>u*MfFiodY;bBtS|M9A+^z-amI6W%)Kji*C)UoNV3VbVe@K4CYp zc;2467PEKr<;m)&R4~{RdW&Jun+*Ta+k469W6iFGZT6v)82rxkPT~gI9eCn8FM7dW z#Ei;`UShWMvl;DEn5YR{DFy9&5tdyCW25bR1@wxL)e&6HkR^^MsCzbDnf#_J<88V! zwCUp8iojKj%P_c_I_(eMo=ZN@3vP<@F|?tOflK+{J_XNlGKPSzrk#GmVM+%%0MdWh zqxQ=fSI>(6u&2oSVGn=+|A)2r4v?ZsyN7S6(77gOrbz>nV7jZTyQ@iq0-{I|7?hlo z5>y5ZAS;4d!Mtl0*9a;GR8Rp010rdLAOolBZiA8lAp5U60GOd=kRMwI(5oZJ!?DG<4!q*XI#vWkaRqr(G}d7Qx@&gL zWc&4D3PXSmLplrT;z-AaF}XreY3p!fl-5K#(kO7!of|;9b#6K_tT_34ua2oCl8IrA zf9uCe56OxW_=_VI$q_iI)>I+Y1~-*LrP(Mgg=7j!n}Q8ICmBu@+NBJub^=hWW0LRK zNT$Leo|mn&ssY2pN8{BSRixC0!AF+_I^!6KQGH$Y3Lm;pEYcete2pj}*RP{D+MMvKCerJHul{H>vCmPwp6P zgCT}$^6`r_Hnc3!<-izhD1)7KoyYr^mKmM*m8WZ8ZM83s4@hmX%{xFpD{3WDz+Gea zEMcDq=?lO9`X=#HX65AQMhML%mJhwCCK0~@8;#yTk*`b-yjFj=*PzFX0WVMZ=_mmE% z)ePSTVB0v}5%BGpc^Z71uCXG(Rv)PWdfS51jK2s)w^3hL*$`noxsdDS%nNDc;R}^( zH1-?!zQ)DHHVhv&f5)UB)~FWinb@>bY#=S}^Mn|b13?($%YINZyQ~#lm-=_E2dN!5 zqyKSk@YS4byCeh3#=IZB!x;7>BGVogSMfcquYjCyjn(zZd?wz$37~D>TM%HHuFmHE z+5^S&1DI{jsws;(4rV(+dA!k)^0>Mg^({X4A`f_QBk*`Bw9lP-VChKU@vd}FIN^tS z7jiMMX@$Xy|JLE zgmq(q<9R&*=<1b^FP!DZmu-FRYMfgvej;7CP^4>;W_H z=WXSgck^FiC~O`ln6e7fKwIx$`Rb>4K#9uPtufvhsu#x&>T<=u)w)0sh>uYWO^QAD zAp)MVZ;&%&@QR`OvK?V_mee|!cun@tlFAu*Ve|NTflPaG2`pp;w2&|hfU8#m8k<*Q z3{;>&WdYm0_&qtti^<6#*f-wQ{GT)Vsa^@MnTqi;M0UtBilMO|3mxQlQ6V9}5#D+M zA-@X}hgop(du(<{K^6r4#)F;E+g2`_w%0I7Xlu_m zp?#R@&>@-Hb2p`j_6#Lo;ULEW{uXu~Q3G-`HbT<%s1K6oXw~pTsL6ghe^L5#G$;e- zXyMo<$@!$7PMhRtrEs|uP(v5ALVHw%9w{@PRx84>UjP_?q)f?-9h1UK5A-6ODootD zEo}Xw3h|2Ul(c^#nZuS9%)eS8gg4umY5$93R<|Aq7*7u+nPP}*8+Dr{zHFaO2k5y+#|v$x545uQ6~0t? zBC$mVx@p|MiJ78pEOp~jY%I>f8dcjAxRiyGw6G~RR+F6oa(ez@e#;R31~`WU>28~N zYisBRMb?YzsD*Q@Ma!lW_0){m=Xs&_BGb$j%Bx;unj{tH1jw$_BvhPD5@3dBGYW=N z<3o@JhVwKxG8S>}cBRLO`zVMw%UtPErU8&)Q&gh86R@02;t?mrUaB${>d{d9AdNck zn}JyURdm9OUvF$YCC%P=2bx)M%(wbI5;h0f0*+y!?b7?d_MNu6dyBR3 zKD$%Hck;y69AooP!OE6iZq8(W7etn_VfGdMG9o`xd4>3s#fTTC)I!0_tF z7=~WC#KUx#jz`)I#gC79yRb9ZBE_88t&9HY5SD0>J-Rr*IWpU-A#BC?=5T@ip)M|R z6rUf)d+rmhm3_LH+Y*~-(#78>6z+N>TKg6q==Ios9r$Q#zwQ+$HYo>mqiRc=&St8f zh3@yzxCkfi#l~W?x`tPmO)Y!|E{3M<44bP`Liv}s+D0VbcG|wvM>=+qu{@2fN`=aS z^0z+HjZ0;)JY|2RtCvdSYoDWZZGNJwbMVl&N!&T{sjk$6q80hxiHt@**Ohq`{?SLO z$04qMsVkSuG>p2y{zg}>Oow1g^E+KxK*4a=S)!G(T!;MOF};iTA3kFcD>8g=4R{OP zNI4cz{ONIpW27)+(8Z zBSV+{@_?EXxjD~xKo%G;>*OX~cv9fL2#-(Mdm|Qe#zh~rMsD@kWPICc zYhwy@NFT#B(Xl(2GV?95xgl&SU4;4;R0ZvopbS+z<`KqnkMuapc`^L4&|-XeN+=#< zvCODUMl_GISQdPH?@ddz@gY6YR~?!Pb7dA3NbhqK1x^X~ey>XAZ@s zEGMM&$}#Fif$=)sPTb>3VV2w|j0{;5PL7pbjBeQ~>sulHJh*Z@q^;^3Yfal8D>S4IH!iG`tn^(S%`~G9V4=a|>CJXl9kheH zk0CO^pC3p-i`)ZH>k#?p2LNGX3_DQ?8wZ!yLBjdLWva)+(Zts)Uge{u3Ic8mR|lk= z_!C9CZH%z8&!YI2MlQ4w!rG^R8EX_J6*WzS=Q+(<+a7|_b8n!_-F6)7I#paE8))lWQx^rK9BiUDx%BQ zwkd468~@A^@*%x88jIxYM`dX+h_O!_57((ibU#E|+stJ5;RE|(nNwk*YATw#+^>p# zlTnN2z|IM$1(uFEEpXjPH&6rbh0wlEq;r^;qns0sCeZ%KLb?1@8>dkD6!1uBV;amE zkhFP%g@ z1+NdryLFHmzHu_O?q+J;F5{cY2>N}PyeYP6I5l{uZS>^E0a%0O#Az@Z>H3KSDROrm zjK5(Z?nmsMPAy%LMAM1wQ_{lS;NBs4%LF%w7YKxwI7;D!jQ&8SglCLwjz#wtsS7A{ zackt;_cDt96%u!N+XMnzsB`GV4});Usa8&UJYB*l)W`pGHtQ!C8v286ZLmsiZs(4C zT!Vqem9v4Sp_cZpRQM=O{N+r0IF?;?zNFrdk!`snnbRuK!VCG+qaU$Kp%nyxpLg{=S zIv-uPhQGB5^9knb4&E*9430(*J>gDIv$Ivvr=8gPHbbW!OM3MOXtUIqoh_8{qEie* z9dCaVS=$8Ooc((`Iy01U*?%N(%L-b)%`g&}&Y+eb9F}}$fEselc3F|4VLfKM;Hwlw zo>C4+Tq+i!flZNjen2V5Y*#BS+#dA4u2%wZ#_sW)Hi6^TS|)Hz=Lj_qZMVDA*pAZJ zRx7B#6WZSy>MDF^I|G|ye_;qxmk4h=t-%2g-yFJLA=`wJ)W@HHH{I$dwzuYkJ~%bJ zjn~2Bc&5GR{eJLRBR;pF!O2Xo=Lls#y%(e9m*uOlQ!)xW{o2vpZ;a)XQG;U>!EJCj zAak138Q?!>q~~fH?e7Lp3-tH4pA)U&&4WLzp_fo#b!!#82)E0GV>jfe>d7tA$uI{Y zv^CgnG`gb^XLJ{1bOUJ+9V=778;r$X{H5)nSWMFsTG~3TrT+rnErOO#P)jEPun1cV zhUvAjWCBxphdBNl3$cCi4Dr!(eqFt|P9g(L+wWzrDEv@O1iQuv%;bNKI_C|u%W;BF-70gUE@+-rt2 zjf;{FFc_r3oFKXnEG(m~cykej{RTa> zx#j+ofm>(}Yzv+i80tN(y*p^kgZ-Gr_=FF*s?*0Y?(qsqPi^Wu2r20XrWuOHF+HGD z)UqZTP7#+=%Z4u6#TS7n?94@YMyo)?&(7wnIMv#Yq1NT)&P3D&N=m<^B#5*g=o;+A zmZNz^zrgyPQ0?03lNb1LI&81sNeKIpdlox7>vtC6FWBy7PcdG`yhYLfKTxyUM+}1I z#u@L>%hb=WhdpEa0lxXjYmk)nUx^J7-;F!5w{AW0npQ9548T*sVh2V#KItV0kvdT4 zzzjGCpTWHAcghpFhz}>%?-a_Ntg{_mzcVX#=cZ6#eK-LXbNRauECh7gKCGDCyxqHW zV4?XIT;rL4f^~8BLPZ5bB7V~dm5(dnyYK=sh*9HSp z6`vmAKY)}`+R#jQC~aURvB>-UhprH@Cbee0Sy0Iv)NBL_V<@4RZlV|^;DmQJ-iN6KlvbUCf1!gaKje3n#u39pcN6c#y#dM% zFRL!=gt8~Obeu$~(ILRrB3NLefI_;3LKJ`#C;(EbxJg`Bja`4hnj3UEF00nE69rE8 zK=ZqD?~qdu!$#a8gi!W$0)GriR5=jx%TZ*WPqoiS=7=f8r#K^zngAJBi^&QCKH*pg zM^txE0-U--$qJc~);k{@1O>`>L@$KRu*9J1TTb;6E{F_-!BAZwI?u$4*)>oO83@He zjUBfS5pzh&r$x+-oCXG|dZ5+4Rl?!TFrFGoMZD0~Zq!;7*18~A;;6!%t>BdlQ1946eg8p)DgDYl^b57v@_%{LgMr4&? z<$y4_gT%~p8%WIDKV}Z{(8G}*HTVn2Z72*!K@=&C_Rmg}Lt-F@7$2|_N5kCMf`d5G zMNCjgKo=RalXuJILGF8Mr{JVn?qeRF%;hfcBQ04Tjt_5;5`>ZA4H#q%kUkyWP=r6R zJc~Jm5s{fiNr@)nik;^}om@Phk!5|lQ7g`arC-aFqMw0_y#4YzSn<_)V2y+mcj4@d z0r^maHT&YZ`EX)4^d>NIv3XhqWthkqQsaChPvcx1@v;)o8}6%XABWCxVJsh94(JUp zd`2v7#rA;XG8*$-AErJAl0+*YZ40d;f_27tVSFNF(kH_65@p*8vMkXeCJwa{t#Qp1 z;)*l`eSb8FA6p5VRVAX@>U^`TA39L3%)MDJ4E zOXpbR$DM5wF^v@_OxBJNsouZm^NTv72Eb|;0l2$&C!1BHJrf|)QRtir12&WkYP4%7&yle<019NmEv^O5w4cN!wT^tXILTeDPvv@8P zf;*$mYQRRC`)u$JfZ%kRIHPxL2!iecwhLGnof$LEZDF9WE)9D*YS{x6N zBnUMj{E{Ybq4k$!cNG^#f~A4cVdIBl$Rm}CDUC)OY|lbD70%R8cGcGM*3tNtI(v(I za=j(7sWbUVjyJ+{JVlf4{(yrDa%hJ!xKXevAcKI#Y(*P^D=dw_bU8kB`vx}x|6X7> zsC@Shf$fb()wfpgXSsr}Jkg6AmB7tAj7u85GMp34^74J#N!Wc(qn;ndUhkYnI1-!F zm~GrXo2kAX#)w8y7KQM}AxP;VjcV7{`s6=t%xXqEVl<24Ikzkb8C@*DR( zAjBVq1fKtmt8LB5Z}eFB4Q?*X=uSE(lA7ix~(BIo5m< zy2rR2>4A=45DL0j#tn^JF5uO%C@wh;=oRxX;N>xE0fg$CMVpNUToZ?4 zHIrk&rix!UN3lqso9egCw*X!+BMZR8T)^=GDsL|D{jCS3A~$p+WZ99srHV(P3eQ3d zcow?6zdiRJ$0`cda&L42ZWNi=w>4r`KQ8?3W7chrD1(U&>Cyz4ui}Z2rzf=L7r+2? zM>4geGG?JPdja=d8{iXO)SNpMKTuh?Rk1LG=e`*7?SfpeZ&wHO21l;jQKB}E3l*$_ z1sn%>!kW%K!Bq*Fpx7)b@t_ndhPzURZ>_YVC5h8faYjdeh`rZLj-xC%k97?w#3U*VCd5pI(&ChNX1wX& zZp-DGunO)>lxC$HZgmYL3}JYACzv5tdpw=daFkRGWSuE*cz{5=#ar5qZZVE((=Cc) zndx?OB*@XqlzAA&6lM6(_BOQ|>WQ(5Gi%aCihpOht(Kkm=X#@mBUhX|6z@~T@rwOT zLm65L3rzEy2H$b?=Ir#X$!DTji32{pCx?gt?k$0e@$AH_2O(Pg1-TP^C(~EbC_3}d zNJE^T9ZnnW-0bBHyR7h)MX#^_R)H53PHh+!!idr*Pn ziwCiiiGVkhSPg*NVkXu~ST=CAC`??99jL=g@cxV=zswAVlLPj_TkE_}v(1}jrAOI$mol57CQid*I6MLJz?u3N`fPQHm)WXlCG{_(j^Mn zActmzcd`FP=Q&78KNfL zN_?#c!5$(dcR!d#^U$##f=86aZ?T8Kr5khZ&0_gm%0s1LbM!JM7O%$&!V93-q4h>x zdo*B{aA;rDfN^~D#B_Wtv(}76H(m$7Y>)ZI6#Cw7;ya!&`sR-&!jSy}zT@i^{$xCs z97~KL1B9V7^=WO$XES&RZ#Mx)<`9Oo&u+^}y}+T(2fC2#cUyJRuF2+4FH;V3?zpMQ zi(Srez4(|EwdvqW4SpZeTp{ZGVe`#f;SE9ptzoRZn(?ZkeAmt8sWJBo{?v!AUO70v zM(%Zz7Y$8Qh44~qg5A=4xZwX8f^)_feL4Sn2*^SPc4W(9c=lqCqz!~yv3LV_}qF03nt-O63<`CE|7jsDdJ^3vs|urzux?MeFy7%Q1IYMzWe4 zoq995WEhb-E*Zun?}b8rA)J@m%_^(F{1K~4U=|_`l|>^i?I&J>wPZ7_{e&2s0sXA&!aRJ7#Lit-qFzFhVOCBX*@ zROI~g`Qo(*LhKm-W=PM2RC(YPh(83|flnlM6;T$%A6i;MS?oApu6-HkFY?!cEIv4& zKl`HR^S@=;-{taE(s#2IYw;M$?g1anH$qwdqs&p2jI)UG~RAac@Tow$0ZI)r&BRyfUwb- z!YT+tE0EybLKL-AN7?8a&?(PN-G3dW7c+`cG#El`ORuDeW^&7B@{Ek5{lg;8Lxhj zTEgh4wZaw(C_;~)hxh3`R5JyR5D)#WIXJE=X@V0J%t2IV{@?&PBOsqk1luv_Pqf3> zyiV{>hXRghoP_J0U3BDfe+q)epVvzMsuTAI;+}Tm01pv_KV8v8y1!uiyiL>}y`yb` z1{5B~3ob`r68ScmKE=cM19Kc)Vah}>e;B{$Vka^Ircd@T{{2PN?c~!VB*MlpzHXWm zYk}(HAI57ZIUyS%eHagoH!hULApeL^{b2e6@0~N4$Uk>pLgb%ltxNtfCIjF#v;!bJ zxTL+y{*h-l32!;-Th4RG;O9*K%rMnq^#u6*Avgk@kgp(|KV;H>_fY7HA#TxbsN{Bp zc*mHz(21QZ}Ru3)PZV4FE$vZW}|QKt141^=7c!(YaNi6gp# zueyrrg{R^DImY2@1(?lXU*QzKokB*@_~cr_*EqBegaqM&4_vG80S@J(32_A$2s>d& z13L|~=UOaxF9U!Vk1HVjAs!6q?ov4ZCb@ciuLL5Szvu;*V{QQCjRc4n;*Yo+tKWRlnQQPDp+{lB)YawHvzd0t&rX;f7|{QRw&bT5KHxtzAHk;%|+RMGY9IMgh{^ z+MkPCD?<4+0|S{yNPEK3;!JD2X{7rd(PwZb&O19isLw+#Bn7A1cBH=GVCbnAq|KbP z5-2Yn;LFFHB1p(Cf6^VK+iAoa8%SNEvr(TfKn4^81TMd3h?~a6&%=GdvwG@(v0=~) zI@x$jtg)(BG)16%ZlMKw!h-*74+&JG$F)GWTQom)yB1sniv+N{U=I4~%$E5HrvK_H z@LS^KV*rf+^au`23?C~+UEXa3sHNj3#d$pjn9?2{;41Jzeg^#c(;p0~v%PnpfNg@j$5@$IUzir^4y>pc*@qic3PF zyCDk?a^&49M4608Hy%2M9THAE zB&cr?8XXGtC<@&TreVTT!J!e8VAn2L&JcWKPmVxz!~_}NY71x8R1OL zRU8a5BP&XpB7m)=Jf!jP4awe8^oLt#Ra}ek~bY)AZHj#F! z@n5E=c9})(0(fhh9O4Xmmm1=X1LOQ9;aa#PProiY4*>Ao@i6Fv50S3f@gdSN5KZ>V zCA*2%;LbHRSnDkTw=U_JQvr|wl$DLb9Wj`N+yE|1Qvv>mxl3R@XWGPXf09k7UXR%U zCa;FcG2UF0cZ@gB`OfU(Of%F7Wcwubbb3fPKOo>Z08yn&gn#NDm#m?>NARHHS57;G zZ%gXgr^r@GlWaJM%f5Tk?-~fAtHaMNjp_nesBO{;G2=4^4h@;OugV#_3ov zx9~JTwgSZk)oP6w%jQRbbC1wgZR(u_YcM_8q~{H?HtrWC{I7Y#jXM3=fWGKnmvA0M zG?b|&U~lO9y5pjG*2fdqnQQ*58Us4vnE{p+##maC(|w&A^?#nXP&#ki#T3lRQ2;@M?W|Qe73h!zd_NsX1ZUJxnp&Vau3?q=-J`z}69{KjQZ?Dl8E8|d#|{$N1#VzU3m!Pf@L zUaT~Az7TJR)Heo_Dmpj}9WWlug98PRZOR%I1tXx3cBhhUKg`%O_-cTc|N0Ur|rsp{FXDq@C-;n0zs>}kR%!uNLZFJcie zZEIZ$?8S{toc$imy|qpShN}$trGQrDs;FJT{A5Lz>PQuO`sGb>$P$T<^`%VR6q1u; z;w7J`W}$aN^5iwZ(~o6(Hzm{BYskZ#XFzM7SQLL_zP~l`&pyY?l6Txtt>>4ZB6NwH ziSwEGN=4KA?_i=KOMLI}D7@fN%yW4ZQ^BJ+V&n54R4>4ySl9$;BlPXrD%IG$OCzC@ z4~Rx#r?6>IS-_J3A@`!o@Q$0rskIIDLfAAGm$ z08FLkU&r&3FB}N0BU!w14YfA5?&18lnAnKs8Z$&FL;k^$-Fna@dLF_(6hZS|lsc4y zjs1X&$JPo+2iT73DvWhG&{cYCf&_`8pWuA}16!ESn0|)}4n<#wLqUF89qt0~{ee&E zD-mX9qAsL}y0D*^7hx#e17%a7fx7Tz3yI>s5C{;(5WW`$Ei4Mc`Qt=IDS`AsqhPlc zXvk%rOfxaWgW~}6=Zhulj8Sw5RE({~$fc5K6moC(W*P;s{yxwsI#i=!P!~uz4kk86 zmcrksFy3DP*3U{!$mn9H;u8mCN1sWEL(;!S;^vF9p;>6W0`z9Y29@Ie5@TClAp?zK zyF;TWa%mLn+xqzCtsGK(aZsX4_=c^Y%yp!dqC-m|1PEA_FXjUUh;r~Xa`SQ0V- zA(Y5KMX9ju&zXNwle!$7P8{laBv1c2wC}9)Pr;e+iMbgH5QK)7kqT!x3bT6Uc*3j4q%& zJq>zb_E2r!{n(E^j5-j<19?A!-Ko@WJ%A1zJ#xRy!SxU1Q3hgSXS82diq701eNc*h zqfEF=iBvoXw`OgUTt1Np5K_~}rLa1zX9IdBLYKAhBs${U*xFPqzNo1;SauHwjH`+D zV3SHdZl}T#dxu?Jv3DG}V(&|aigVzhJqjozgpEn<-4%@Xt^q23sLV>mDwVMT9^)*= zj3F8{b_*rKJsjC~QhR?TC=dGi*)1f7I6_05&`WJaMryxD8}8?$i4YMcb$FH~^)-Gz z)k$B2p86G2di(h$X;{3Jj|G*upX2)+0pk}zkRjp=UEhS8?PT0m<`d(0$g6$EeM4J| z3w9VcqHhgE;cx)M}54G^uzEo?fs`3={Nhgj0l%Pe$SULNd@qy56drp;$AK;duuX z8~RIxZl}r?8Fw^|WzTZs&Zb_-BOd!K$9QolW#@>*-_?{BiN}E>5^vmvCL#%GIw*Hk z;^`VkL7J|yp*KzBgc|I!-KD6X>$I&9$HucY9x(c0LHUIa{dhtzZj`Fr6_8)+!i6>O z2~eqK@~930dAb13)}X}qfT|qR!Rr)&(A5P5f#2gl>9WeGjl`lrl8GTq1vI{s;Ud}< z*~P2=qRSm>Mr4W&Xk1C?X+889-75AAj_W|iC64RHV@++y+guY+>-ayGHShqiZ{s!N z@unKO_vmjr0n?@5FHh(iFmFLWY4U~q@=qt2;RG}Nl6fdL%TE~pL{d7T90!=51lEuL zlM~dB0B>;z(vFs=0Kj>Kck5O_xb)EL&f=HaVntIIRESoY_HnwzAYBYf zLzC4)WG8}YV6p-@5Q3_MOm5EX?IEy)gFoxK6j zAH+UPA0>VpMFUFA&sgRH3d2#rN#(|+r~$0VJ@~)JD!^dj>>{Ey zh#hdFc0IhtCs1MW*z|Pgajg45Ge%riQ(K4;Eg*4ftHCWTfjbw*$Y$~I3Y&7$TbhE} z>D~X`6jgXCQClocw?%8d;5^)tqYfU%l6n9nlYsXo@GM@C5Yw(Qg<`2$DpDws>`9F> zbtW36IWYD@w}rwcMU_lBJ(M%CIdrfMd=2ax(;NikSAH6ZD_n~r*o^7bo<~r1D_W_ zX42CIO|`oY0L=mCqbB0}LPGOO{}7;C<*w|oSshTN9E1?>o8`8Vf>yz$e20VWr7=ze z>``Aj7H+;hp0)txGUJ}sxZjI=QsUp?P|2Ac(q0~x(!5s_Zy{tLi!@Y!;0||;wB~(i zJDA#q@#*sjrVsIKoQXp2Xrk2)m0>kr83mnQkE$~vv z4PY_k5Ng~U+*zRrO%8_%9!%$5Ux!+c(+Y(sJ>`%r&<(BXr7t!985iJ(>PBZj3vi$LGu_vZg>o((xWUUXr$cfv5}G`Tp-*D^j#8XwzLO24|bl+RUCgD-a)=9XM3 z2X>%v!-t4(rcf~VzN-jM52g%(qG|FetxQwsp%el{ey$=?I44KXWn0D~h?BFO^`y;(IsNdS1qa7fW`fbVQvB=|L3 z+y(=Sjpm$fB@F%fdXN&5m;z`^22brxc&s}U)G4-7cFaBDavIP|%_ravIBQSKpI6If-SPqcA7=_vxsKUjvw@L?r*urj7f2dXg+m3Ucc<3zhTR;yG zAosBGgvZ5-Ca-+*V)!kf(}0ViW$7gFH0}Z17T}2Ue_v|!db^e9%f4WN{?hMr|5m_G|^gTyCF<5 zh+xkB0pd6`2s;Hmu#~r+Ym#}92U*}<5Tc*Md&-YPe9twpYJAZZm~*W&0Re9ZSa}~RC8dwp5THOM;80qx;ZV|wvGo8pMs~n|P`9d{d~`0dHT0LdYm~4*{|7p-2slZaQbeNbJu~>^m5^ zhvy@cFfwGkvIjw>Z`fOeVgMn;DdUAEH5;MA7;=B1iIrL}G=+K}@LnPj;(Wn;;~o&2 zQupxCCwNWt!?_lJVtx?U+(RDgAK-q}&+sWI05u?hH1bE)QCirfs>h;zP<0cTzerVo zu_@GtG7rZpiC=dQAlT6;>S9G+Y_?1M#U_T_MF^5J_{m2$20sLa7N_oqJjFOmcLxzY zR2_lBC~|*^`ae#ThkRrfWMYUzT;^qVibucE zi(w`g(;e-LI!BP}YO3?Ksq3Zmx53HC(6P1JrnYN;a_j{{VJB z`40y*exCz>2WtF2UYr7E{QG9ixa@zRB9eli0@O%0GNb{Ti=P7L`2Y4(@M2TV0^hPGEn{L~&VV`f-C~b6B}_ZofhmtRb+(d^HeoUKXw#6q z$mUUJqJaJrN0D2C&7*w0l;fwhYD1D@6g(4b9#uv)c(f_)o8ZwVPqk@&qJ^%N#-mL^ zsHOvQPPlWl0*;Iuv+?o~As+=_K)%&V;>ZP^!}mflka~^TnmS>-(Hc7l02&ood3(y@ z(RW6B^Y#GV{rc!~Gg;$lk6k>#xLELTQ&l{+Ydkocdvhgr9g3}nTx_{GWh4{;c-hE;6B2F^9(>R34 zi-1R;3554Brk-HfE9J$kRYJW4a`HeKM+j5BnS1A8cM4kLs6q)dCSAg^;_3n@`DdqI zW8TLZ>A#dP<#6ZXdfrr7HYdi!a9#p7Jm1nzNwO02^3~c+`=Cr%o``js$osWdmSSE{ z;MI9u+boEyYyTu9pl@;)W3Tp;=O_m#d@^U(aR1}7T{3x|FiyhddFFoqz1U}*F4Xr0 zf1nM2Ul{#%W9L?Q-xuwYsgNv*P7>LXJD9ve7Qm+hA6p81qPHjb5N5CGW{3-;*L0;| z=2$Lrv)kIHe8E4Ci%2+}7|)@@2tsv zXiaqC@xI7x~r^PITA548^EHD%p`k}1Sq%-jNL-7EG zxe+!ZV&+h|Rshl}gqTu1N{6CLMk7P9vcx|*KOYFmp-jk<9K3rC1?K5txG6$HP)Xf1 zm!bpE`9}chMeZHQ?E~_HrwgZ$?8HbNHr%C%H96o66qp{Ry$O|uz+{#kFGSCbM_4XI zK)j}kQC0v!cn>5B3t3@w`pkAw`z1wofE4%TTKrAV=KbF8s+gCr^pO?OR2<(IxVnpZ z59PLxVrLgy^uK9k0R-m%;&n$@C*Pai(&G@=Z%9n2IV#Y9J{@>mqtQPMOVKWb~ zi5Bk=RvbacPlT1kk?$jxKd)^o_BZZ!aQgS<^F`X9shd%akf+Xl+M1><7T zs>GPK5DQPV1%z)*O(igZYx`y`08OSND_S_8<;MPw4=KZOMe_cS!sdM7_-wozS@T&I z0{k3q*4qp3_QvML%$ZWWb{qIK+K>$K;%%Zk_Q;vs?jR%szjZumt^sGe9or@Fp+ZuPwC%c?K$+WHUPW6RQU?t7~iD58u|$ ztDcC1D{f|U>v7?PuC4E5i|15NsE%9#z%$bt+2Xm#C~`$|s$he=`s(LRyoFsb2RY9j z#74};?}S+_Uf;F#Su9mwT|buPUU3;KoKwy+<{o4??Ym^othp(+0vRHci4#)xdRAEf zccx zEWB{zVT=lVUup+RG6vGsOw9rMGcO{lOR7 zQB4jU#M?=qkZ|4!(;M?J(_S%1JRrRDbY=TH)zM^kDLNYqhZ?s)xP+p-|#v&&mCnS`sb>oDlv2krU+?1ct0O4xG0w=U~rhP(dOK!=+ z3-iChOKN-(^DBQh!pTKURqiob;WsGdaxe9p@JxWXT~;hI%(d8MO-Z z#L{hdQQBez*fhb5Z;|xVZq|j7k>9kMtUl(uqJVgo`TV>glWwO!SqMSLPuST zHx#xqUoX_UF#UV7D!U<Jb(SDi3dtBy?BL`U+tmZiL|2aX!P+SOziLg1D_M! zrM!J4868s#j83-w>;iOF;@=#)KpT$9P{{2g#aF_EUOIg*vI%vS;^#VT6!ZR7hy!$S zq{@o@>A=&;>M62%6w^v+IOTM58%8g-`0w7E|3uF~AD74A9?hgl1=w~!=9>pDNZTCu zC%^qO3`6@Ji^s^~wrg=5I|G3#Idmw^=eYQ*F{dm}FAQYy!$#WTkCVmy?)w6aDn0u; z$D(t}#DZm*R4U8}CiB@vG?^oA!q{emZ!MzP+{8?ti&q4sQ|In8=9H=8>1-ADhN)YD z=v#)-i~m0M?M>N{1v-n4(SOp!aLLNmk$abu2@Rl+&i{RzC0e) za-O6ydXg^C#X+Z|V+5QmppO1E$Rl`^QcT;Nnpljox&3M~`N=}XI8YKrCX>felXgu% zN>LJ?q+?MjtpB>=1LsvbSZ;r4ysc1{=*Ax!JSTyMIjKx-PiX$YA6h#r@`vV38vd(v zKGeAk#s;r(97Me7I(m*SVsdhs7$+<1W0T92V;^A*;A-)AMpmy?)P7O~KkgK>u2jT6 zMpnm^{acXwIlvrqoPK_lE;c*;yjB6N@8*wvQ~lx+vbqm3@2C4RSOz*c1lYBApP{Ie z*iwY23u?lqXKR>Q;?^1H==K?y%~3ypZ@ehjSLubxpS7}h+%@`=JTm%}G9mw(4DnYK zpmY?0DP=Na3R#?JF^R{KDXKGh(eLIfP568 zyZfg3(IBqbAqDNu+Dz=E*~NQTsrY;xUW&==TVZw^HI}a^G@;uj%#OOz!)j`opWXfx z`WE}Sj}E)rG1u{*viqk z5@SFn;qm~EUK6XaHt08PUV^$_fmaaw>4n2}p-HCbDGLb!9 zUCT<7IJzo;*JJ-$fSk;=Sw%4LOi^{`^ z_*&+J90wp5=`{2FP}ik2!`JX%M^hSHVmvyMiAyw;L}`$L&ptz(jW6|XInNG}5>?MnfrJC`=tQ^r5D-0&?8le@;348a#VN!HW z2-{0ac4`k?p?|YR2fw6epN>|Sls_wVjYm|%vE<9j-ls(otEg^0iD#wu7h!j-f_c95 zWuM>CzZ^GLd>ofQo0R_r8%p{pSCQUfuH@Ht2<^W$|+-Y8i51SYP5*qMP614&jP>QyHZ zg|%z(%>WV(RD%kZRrWbm!MF|%kyG$lYFrPwrsoCa2Bg9yQg;wX`tjD&kaKpdYZXw1 z3R=<{1F_Wt8cku^*9e>U)ic@V?-^E}^xj)9FE|(OJF!5@Wxn<@%lwBv(p#UC2M2Yqw*cF?O6Q;-NgSf9K20@>J?PQZPV;7_Va5La-|E zgyT?_jUnO$BG!Z`Vi6b?cfw1tBOZw!hb8Q zVa$|zw!QcJ;7nN_sfHD7SRr&$@LMlbhC}sqJe+*xgSCf(+hKukf;!+ZHn2-!{J2Wt zBiSI}stQ?=<=Jx>_sc(jvBME{`J&6uFR}%#|xOej1bGCe3AX7$=3yNg;H>bgz`W z3)3!!|27RFG~kq(#%jdWIC)FXz)^yzxtL#^s|C)WX#RyTSYm_#U_tu3;cU;Q;aQKDua#& zws8JqK>O|_7BJ}C`ydvdOk5u@K6^&+%&*A6^YEQccaA>Bxj(-ocG;aLIsX?Og_~KG zcb)`=CPKsl9C70d_bMST|4!MaV8i`00S-rEnnBiOQI>_Ed)M2P7OP89?2+4)wu#7Rr1?(QS;$G`JmcA> zKxjur>6V55jQO>m1-B_c`t}AS61=;Qj29RlA27vHyrLb^P*GS9Py%pXz?5@B22R^? z8~Gy24Wv-*QvoDT2eRTvG}Ht}rt4q~VNg5qYc;xs?aCop-L z71<|^C!SXLEl0@YsT=XR{|K4zr9U{o+&T9MeBRGGLJrOzdYbb|6zdotOg@+P3ewC= ze<<>&Z%_%MEPW<);y|H(>%OQ3FUsl8PAHr>pf_LWGRQ^>1*FlIB;=_vFURl{xW#LDtYqkAF-)8L`pe4pUC!rb{V2Fx9Vxm{b~ z{gNt%(pn5h{o+&rxtt0hbvj@ts8ckzLxNf!fhs!5w=t>*`Zvf8!3lmjCM2C&)J!#R z%j10O5v50-ap4mZzNm>LGwlhV$f-X4%22lEctFa zV~lx%^DWNNs3*|plVpRRzksIT|xG1>D+PZ+*ygSAXI;&wDhV@WNmqj3Z>rd9>G9h3^`MU(=U$V zYcqA#WRyxg6`~SbLQc0h6>{yIPUp1$QQj>{y`{O2iwjvNif{%RrZ{o+&%u4zTC(@a zaJ-eGfJXEe90)vTR1U$)| zaSIw2O)D|fSNzf%&Oe=zYr!^RcOaZZC$~WgJr$B)9HD-kj{ARvYC)l*3BZ|ib_Wn7 zb5JKA|0s3xGd#_m{LS{=F-~x!vF5ov|FPf;5a4ia4&86Zj+m8bMsrQaf_hcDkGo;iIZcCf!;}@+VVL!>S&_748)C!V@d`U#45f`3)~Z~ySAi9A7l zUCacn3Ktfd_DM|Yx#Z3jPf+S|G_!Q1d53zsoqq1MOd04~D6e@kft*)MKz2Rs&PHTv z`Q@jl1#Um&2C8Y`HFxoBd+i~5lvr-V3+oT+;i&|S{>lRi+Ksxi`4cfth>nLNyogbM zHh;n^S@d+CqjQy+z8Cf_@N`cHXQ2~a1qbPK zPqvN15P%#FR_4=i7@Ol|;!~T5b$E#Mqe}>|m8P9bAe8d}}19Gq^RxS7C4<)|p(q=I@+}e^vu}#5LsFr+GR0 zS|^E5x`}&a&1AcxMiKAdh&8$o>+$4jO2_0(r8FMr5R_kycljDI-FBDfsu-t1KPZmX zxwg*il8R%QNvl{VO;eyW{!vZ2{ol(`rCoy7u+DmPomrVm^aM#9OIRn#TOCUiNRq-8 zK0P7Us_7**D5SOUb5CnnDu&kjw3eqdA{gqNLZXf-oTyBhxFsvS!iItyQeh39PK6`S zT@s17I8#HSyTEn9THiM)!Nzvh(3xqmj8%CGHBKi%G%cr{g7#3Fdyxh=NShSO^T$Am zcnupk_sLqYB;d7N-9WX2EA#>gDH$6~rtGZglz@hjoV7r%V_l;WI2tOCfsbWuz-NtQ zWCQkFHXz+QW^F2oNldnjV*~*&|I0VV9J45viksk|%`r9aqeeaI9rM-J$C7hRKVIeL znjZP%AZ?CWmFRLbDsKNfsQ}+}v zU=-PRnG9S1aGCU;qC7{+gT4_!B1G?I-m6V<|3Mhuca7=WaF79%+tqjGLEb49TZOe- z;(F8Qbx>xcj(Es#N#PiXUcOizhW8)tkk@WDC0F(WF&D;0pva43cYk@l;NR}SDdVjm z*wL|Gh--`a_-Qx^$34BfNA1I^>@ht^EA2yGWx}yio_)8;)(~_I&3iC5=%!b1XE6X=~ zpD`FOc!|LfO)`ag$3F4&lfFClg|I7OMFunewJ=`Bl~-l?UUsh3@8bNpF!tfx@+{vz z_Z(D5g)~m!+&ft!F4YtJf|Cs>Mh^yZ;POmJ{i&0<|J)khP2j@>EvMsaAev+MZZg)G z0?)wCcJ&(Y#U2)GP4S=_YI;cRz`Spm+A|MgdoOHW^&poGv;-avyC45fnaYigrmDsE zhvSdPY)G~ZgYuavwBh@~ky9U&$_4vF!+-#Z;QUrNRf$G?83Hj+OHt5d48yD8tHNk7 zRdx4=^7v6W#bPrVPAi^)im}&J)L%cu7gO~GsT}_h`RHe;#sO1Pi}%slm!(p)4;SMb z8aED^Qmu7Pua!!VeN?DTg&u(=C+(BtzfsmnWzxRT!&p}i1DpYGqdgf+U_1=(Kz4N5 zKK~=KV+7wkupeT4Yf7z1oq3Vy88NFC?|ExmYRRRct+P=-)s2yhs3RPn)JKBG7$qZL+ttwK zeL-M}zhUYM6{1RT5o(;+qs!|kfSr>Qd;D?&9ph|J?XF@$R+Wm@=kaHmTB;h~awRXJ z?KQf!l-DgL#fe7sg@Dl`Ms6l-0?~gE7UFOt!L;K9)7Jl^7~w;za$U6o+l3DaKEIM8 z9Sw8BaMP(@+7gC4d`Q6rS*nT;3yn|qCAdO$v+6jEr6UxaAZfi^z}WIj^E0)*Y|`<;lHU=4bF`5ewkV+pq*sU z)Hi#KSuHm>3kI#-izG0pQ4x!ml1+H3k5RkVM`vrn%KWdN&PlU&FG_{)qf%83iqiNm z%sXe7;smPVILUibVKAo1Np;7r>9UxTZoOr&=A4~Mv0~gFQ^eGrWF?!x?}dbdclcDW zW&9(RZ@A`kK2`i9$>(3)+-Zr>gKOkJI>2~%9A(M?s28aCXG@IVcZX0D`A<4B=%~8+ z2*$&?EHcjAmZL@7^ZRae82OIC#aIZ>-DQ-jnCVTJZ9|Md=y8gmj@ZtszJeKVw%iMj zv^8|wFdUI_aIj{VV=MOuX2b~tdIkBG3-LJaDjC1#c6hK4v-2Jj5nRE}zZK4-YlnuK&Q8d7fA7k)$ z(&Jh(%SBhB|G|?_Bkqs&=ECiN@GYpy=YvLlV+iM!wmXdR9`wP^dP|^-X~EL}>l(Gb z5xJH_^u7_DPVeRmW?1~HLh1%XJlKN$XQPp6HILy;OJU^=UdM7qWdeN{c7c<6hrQ#P zYqYM)=#@xL7NfvJSDY4Dds;xPX`nW!X~2GHq^5yu-*WE12^EGdxpEEEw&oe8#bHe% zP@y3+qko%4J24esk~_>^#5Q;Dd)nf^4N@Yu#|#I{|k+yJDg4%q$8)( z{$qOjh{o~J9RXzdubWXwV4@{1@!|k-iSFcBw9}Z>a(9y~MZIJvnFC!?{x+Mkhy573@@Yl8j9M!`ojL6O$+*Wq#Q$amajqIdhJeqqVJ27}Gl2L@Fb7lMX8lQL4 zHXWB@j1w!SUJ^+L!A0Ddv@H`6(5w9gQ!}*-x@q8LOZ<6POEq(>MgkUSDquoo2cEG43_u<=0?g5@~k~E>dq9;jLbGLg;GI zS-5L)I;zNzR&6ytY$^IfOG1P{9)n4nEMg8h^sJ@-A8GF$SVfhFjn6q}=JwnP>6Hr! zgoK3T-aB_12tg1q6hT20ks_ezs#s7_nt~LiSwZX+3u3_rDi(St5JEx`vTND3t*c^N zbyxkKcjl((x8Fa%-yg}HQ)bRN@B5xJGiToCed>~+U>vxh;H7m*P%sW$P%zbTK*3ap zK*1`C#B&EpB#wppQ`Q|64`!+B4rU|B^}2%vG?$TR{ZZB(gisOX*O}+6-vKg{Ja^Uu z=0mrdk{H&MgY2zSSQVXiYOwsxD*jo6486q zDp|2N_OW=GcL%QC{h5PI)d1t!fq0X3GltXlO}?ui(qaJlIMsBQ)f z&yAdYEQ<$uc_Io7j}}MN{@4;=c*wgixCBHHO8`Z=78oA1#IL+otn1?KMwg1{XHnDX z`}u}kFM^}=tVQ$Y8Nfdh_!l$2WxP%RSAu6}aEt_c))wd^cCm>b;qV4z>noT#!Q|dO zyMilNuCW3boE3}#%rhJx;*2pJI-wQS$-zsL>_r`G06uBfLUq;(G=kdriq{K$a+=_{ zKwRLjp%o)*ykN zzVhNj96A%jKXeKG=ZG0LM#`cF&PD@gqXDWx4fH_+xHc5Mf`J|aT_t)5rM$5!jzj<- zfPcuxhe|L(WZ@sNLp*{(#PEeNh=V*yc?857k6;+MDA?!6%uJ(Ja8&?(;1c6~g!!Kj zt9@&M+wNQ2p8l0M|A6#SkPTjl=A1tsT~KM;eQPnb`_|Th6ryh}kwWyXU80&PG9Bas zZ{dP-V5w0Y=Em^>p@F`I5-bOHhPQJ%!aux%(h>gQ_Jt!rb;`DQluzCvs1E-e$b#t9 zg?wjjp?=#z-jE9h1b_&p`aq)KB5RU#5jpz&Ong&aQ0v1tjL&hXou7rk@?c+37hsXv zB83*zMvMiu*j`>xn}mm-|JeQ&@WoHOoNoEC+Bfq!?Z- zxD5OaCEkfkeP?^-?uRqjZcZ3MXJ)o5hJwagxp;6LjZFaoRpBAo!9{| zgq9E9fCT`-M0d0{MsxvGRa_&bEWji)(M>eX7qCLq&4DXMU;*PVWoGH`9mt&;-A}E^ zd}A8!>o_YjaqSM2i%@2SlKi6#2p#PiXfICfApvkroA%tn;gnuZd+|2yp>B@3Lkdn| zd@>fU_3)({)seyvt(T;9@tpRLUuUr3xrK|0$T;x-x$R8y5LYmjb7-h$nLCmk-N{Aq8^Y zhr4l}44Nsvq>LBBFYXC)I)eA}ZCrXfRb86#dr#j3Ok~6FJ2A3-U<1q0e*^hX7KfKl zL<(o)K>z@zfEXoy=$meai+q4ISuV6mJc)-JK%O#yl>&VPP*M+-fVYSpqgfqkYkMest z_V2_Q#`iP6EQxvAUe5zPmj$*Qh-mwd3SPs>AMn8ye1l)^gFCrixRYlX@7AlY9Q8-c zSB{4Hhl}O+#)z}_1YS9+t~~1JH$Un8Y#i;o49ow@qe1c4b4n*!H~Zx$_aG*FUi{a` zm9=}Mei;a1^rXZVZ^JV%MPbjhpWl`f`{5C`Y^%3}pqu`FqDO{dYyo?;e$Tem2~X{X1p0VIMkG zQed9@WOY0qO?mA11Xk6RM^$M~w#V}F?-g!|KsJV(LT;0Np5&Z+#LL`|BaerW4HpPL zECo}?@%l!zf%TjZPpOP2Hg4oO9yomymM394Se{JlZ#xOf!$+nl@X7ov)LDnGJuW4- z_NS`@%Y)r%IDG3dfO$fFo>T$nvA{-r6kHF+GdqFKDMHxuk%AS`hEvdxhz~6*T38-Uax_x zJT1!u4V)kN;;c%yIqhmm`)*e7eS># z2Pa7|6+qVQM2l_Ah$FMGe&ny}VOH zN<~6{$y;efJ2j}@2EUlONxd8nfpGE(ZotK2{)Pbmv6w`@!7Ivyv`$iSz&|KPpvzZf zexjHJ4hh{-M2m5WEYIIn7~kOKvx*?r5Zv*H7LogLU67wuMDE8Z>PbcFZIF1+B9ge> z?DY+aukT1@(}Ce3bOSywPA7Q7bP{;xE;QPsCmdDPzWsCBEX+zEb$`1HMgz)v5ck@%;{Y1$o~l5*d?t020; ztGu?WJt2L1Il!r-LFFwcTbvn@lsVoe&g}A6cU9hT3gowTNpp5V;GD1X%8)oHkYM9B z{==y3fxG<0+L%M1`yq2|Hah~pA+Jyyok#ec&q%7i#d}EB8^{6OarFL#lad$1ojX2w zlLWQ^!Zg6RHFESu$qOja21CksD&*(AAy2+!S7B`MCjOG+Tu(A~;DJB}CgFkVIlKHB z+6FI}$}jff-nzl-ttj%RZvyrE1}}n)ZvfgMRw#KkY=muki{h~^-l4iyZY*mERp>ac zQp2HoLxVp}A6ctTZSZ5R!nidPhw|NfD>ZY2*RynQ#DM&GX-+pygJqwaleFw$J3KMu zX(e)Jc(&54;D1krFv+$(?Z~!|21^ozl|sobe^Si+X+L?^PmhSNFCnZH7V;61XfLL!sFjr zMtIL=N$a*N>E(_$w3bfBo3GAUc=8UJ;iAvwy5v(BvM8yJ&?g!7< zX)yl825>G!*E|OL`$d|BeRr znFfD*ePu~#9Woy-VPp2H>l%D~N};=i$XoYDa6ORD=7YluVtyh&Ddt)ENki_iyAX;% z0rWDrBu!hDk0raSnY>xjh@Z@Fmhw~iNpzH%yjwD~HKag>7mjFGmlRgVW3Xu~h*y{R*};n`gakl6(JoO( zd!e#MHPq-zJlt4-(rUzU3OD-2`PeWymii~V<~)^fe;d3~ zuT&EI)g@_(fBCR}`0-fz;P&Lbaf`3jwCUccwcZ=0FBu6PeG*G1(^9R`&9Ti0*+0g% zyRmdO-5oCw?m8kZ6=dNM7h>DEw?}s&@k3s7uOX=uEQVy2)$YMnOI=+tc$&1s_Ge#8~Nc(yft-;83(+0 zMROLFg+xAvo2b$lNHtzMpel_WD8c!OOl6}~U~ZInA`6c)!Hq<(yAc}+F;vB?0ikg| z_MpC3y!&V%cYwI^dKMk-y{(#nIOI}~xxcy2(>~GnaegRE-CS3SwRdw}FfIP?a(2@m z?`y<$3A~NAvCf01*o}478Tx9b-nUvwiz^QhvL@hq)kG4g(M^XtO}Q1_SQoBaizmT1 z$;}0PT#gS;%^FsJLlPU)9%vNq&B9wFpeNZl3D0GXYZ*R8(u__$Pe#mv`HRA z9;IfDouH)SP}CkSMtpR3CHCNiAuK5Re zP$WT3*#s0KAPqSTd6cu)JPfS+*6M(J$TpNzO9? zj?n>*$+IuJ1YWZSurUkPh^8kngZlWz#U*2pz*ZTT#rRe}H_*dW!Oz;W5)t>zTD};V}*K zeQ~fG|K~Bx+X5*~E3d!~n7=L~%^ohZY6*~;Y@^q(?l$xxWtv+aqv+fA{llwm+uSKh z#RmTKS`l1$tN8C>EG^<6j5V;pz0>(1iT(FQ{CD6noOcewu;3S|{(M+Xv%iX|KORQ3 zT|W>PE+j@Bw?-Cs93r5~r7nmDNELvK0Aaaw4Hv7O63{wNlz^NOnL0v%BHqpRLyCCw zgm~*2vHcLD+W`y18oBy0a!;HPi=Gi59|A{dNdn-R@B-$M57Xt_2}M3!dd;L)6lpzX z3~(@3@kGMGTq6}3V_t2+!Kj|b6e&vt_s%S};JM_$UwoYqKrQMmU}ZxqY!h6tc(j-N zFJ$zG*I0bnlm6+r_8Rf^@LovH61tr*$1^qD=;3!3;Kg7rFfcknSI)(VRz5>ml=(13 zg06TTLol8-inwkqa+SM8%I$SoH)|UdRPMD#h)5k}FB0sAIygIFS^&8c!7@l_AQUVS zqEB6TnA8G*@%;FLvP_7}>r#ec@j;W}dztsHI^Ho=+$+Rg$+~J+TzdVrbm{wrc)l)t zli=Gt(u+KJGl5@VL26@&ovcH$4faI>-SsB{HUVU-stU}D=NT{RDOls+6{2gwA_MFq#h|7`>sQSb(;VQ-4?^u*pTdh|{A6%&YWJ;osGs6lUh%g> z?Acq?{h*%y!GoW4(cu2P=KkF8Dbno^C24c23ItY$4YW-0^?bo(2UlzB-jI4^HBq(D7!Nx~cr{gPSA)>y5AMzTR?BQb zEx9o70rA|-T7pfG{Pd&)dEa^kZoRHov(Ir~ZE@S@!M^ofG^1}lTy5dahFY#`?fyDH zc>@3KP*v1$j~#iTd?Le9n6Bs0xTxg1Oc)fjSjzrW7X$*ufPgYwP=(`;Kja9i!_yTK z3b{ujDIwR9RzpBLYOalh+yp-;2lm(D%Ej2PfCn;7AKVBLqQmh(Cb#d~R|9-vlU!y& zE@qV6zL9cp4Yxrq_d3#;wwgggr(hZ-g4wf5_w%rAgFK#IWM2Ic~|ci;LP;0jQHz9|GUXc3KzI3UsB2oh5Xd$YgpeaJNo2)HZ>hq`Q;O(N0eD zoO68J)y6sz1Ng1!S$Qj1Yx^0~TCda}37hjd(p#(*Epgch4> zo@pAXx>YhE9HQo*ry8w)N$?6wE=O)9SW$9CYCGS^ppH7=CbiL*v?;RQjLud9Gw$wH zvT0caB_d0*$$$WAf!{O^?u1P4ZIP2Jo#y3w)+&w}N2}BfM?TOScvF%yE}H2q*N#!4 zyUlo%)(MvsLh^?!%bk8;e8ngZf(6)JgUY%QAfPJ#huP*#K+D2x`+pk?Gm;Tr zvqc`sY1cg2Fy#p<96)FEH_X5KZH9bIrUnTj$VnRIH>OT03AMxP% zIrw!IobUJ6Rdk3&_juAqSHWqun@H2%7=Tah;4CJdV|Xu1o|osSd+YiRh39>AUtOp~ z(@(^uDp2D}V(eadhoqhYx?%4eP!CHZ9eU*;Wi+-&h-c?gYZ_Y9ldZ}7 z!Lg%LA7#z$Bj3888uMzBY}{EDjU5)iF*BSO!fBR!ngZ909eBW^^He$yLg5{Iqmr7Y zN#eXasgH*Rf1w?Co`1yokTr5&$^S{5FIlYsoA7CzFJC1-i%VdP`n5s~D#e%5phZsg zU&i^#CrIt_iWkAKyvB!*8Q%vu;0Y(A#$62@t5Lav>i;EEfIoK{nnYruUXSO)T&oTK=XC-}}&u0aa(V}@^JWG#UDC^P=Jzr7nd{Z z)Dgtn*sX=p!W|riWzY&ux_XEUN2!2L<*>xI=B_>Ycd4GfwV%fahzd zj%|O`o`>3po&2rHH&NUF5**Srp*&D0zr0G>jtBc#GIv3v!f$u#?nEv%38w^HVlW~;FE($8gz3L=#V*X+&d49W? zgpNMC6q}sU;vssJaulY=D5u%`c44EC&np#h6+jtJ>#2O<759eZgq*T5J!L^X9@W(a z^||6N{pAJq>VNAz%AEj`WQytaGPcJ3-YaRS+bM%PfwBkRa zZqzsq+m%}S*c9~*4gSWT-AHb=eLLXrsag`BgFW!qrl6i+KTmAyL`ylx--8D|$~X%+ zOeDw?!@GGR3fM%#X+m9C55ku|_{jkQ!$J}hee;YcVAz;Zul`mS5D`U8xEx2RIN}p_ zkeGgh%y5M{3`fA^z$Y#CTU|H;m;t(ecO#f9?YkSx*g1+9X>vjy<5eOwa@fJ0M}qFL zicHZo1zjP*At7IM5ZA&bvs!jQfg`Ff!O>_cGZxAP zvKk=g;|u1IXk1JIyy3~Mm;iK;+}(}vp4F+4pfKcWj2zc@{%*WHJ5IBA!?b$8i$=tC zcc~yEO1Z0E)P&T#>a+QHRlduyrCbbEfbn=Hr8qWt(6Q~E)ZZO>NH;SarQvPn_qu!< z?YD>EDG2dlbwSq`K{hkG;s?nDi421*({Tmzj7^yHjs!7YI!=1YItfQYzt^>qU8ni2 zvJ>~tYm<0BnW!*vQOBMZH3AH$k50&FHI>c2O?fX{9YY@5|Gkxf1dA~BzPOcS7A3KG zf1!E`d;S)f6OK5OZ=u3?v&5O6WEJ_09f!Z0jVoja^Z}{!EV@Tq*X~|@hlYHVPRXU-hzANztM*zJZNd+U5O z^#y;Jk5?g1N%MRZ-P$B%b|fihnzqNTMgjtJjFKHee~_rK(ZOt5y_Pfv+0Ls~rZ)pF zm=3``d>IK&=n&ku4me;(I+!mK1WCb7gjG8*fhBnEcih~UU|JgRTyI(Wk>P?}a3C_M z1EPKcO;2&hUnpTtP#4$dKz5M?+0{78B%{0CnW1n}L((O(n&1<{H<^lWcGh{M6;6Y| z$tnlv#W@l@Idh)pVvVZA>Gg3CH$Sh|wLny6_16Mwu+xw6PR7;1T%P?J5gLeCxkSTqAXvzwFo)qy@%Hp!m=U0b&j^ zs->8kp`C5le3Y@7hiJ`58UM7_vvYnN0S!19YJeSY5bmLhf=ZJJe_Y^#R``3q-HAW27k_$w(ZPp=4 zhyXVe&bICW7(Z}?FWrN;cJO^uiSIQ%w}?(LeNxst#1fd=+@I)z^7@% z+Pw!jfQ+SQid1gIh+6ZB_XrJ;AT)px$Mpyepf79eV2lfv0|@{)|F#040V3CkQZ8&w{#k+-I)H#> zjrhc5x{!d(#8XnCmIMSylO?tVFJoKqV7lQz7)uA35-`ETYGnCA?!V^>8nPaT(OZNGprF9O1hCtLvV^PuIgWcU`i3o( zTys4`Q*PRiv<+u{YTAwxBEUFJ4@tt(qGo}ysut0&aN!l8v4Hcv`jE-wTz{JJ zeor5q>EU2b4*kuDfcTis{~HnDG(zs~-d&$}e38aZ8acST*ajT* z7YZ8Qe8TOw5!c2%=70iR^MJ=Y+~mpQ9om4q47u!^I3K708S%$khC)vJv82IGa5q?;`zV5lcwYi^z-o+`RwKSETa9`6<460t&;g}GBXN9KEx>^cyRI=`Ujq0+)M^apM2Xzv zS|axV)o{NZIq@z1iw%$uq-($47JQ;X+Lz@S0nS#8kY^;;9>X)-f(BsGu%*X$1cNmL z#FJ@wQ#+WhPnBeXAN)&QGByqCh^Zy z0uvaqJcK#Nr!xOljfi_!U|iLRxSqfga3P-R<6rG8G4*RD2?5!rAM~7e zKhFuJnG%JHZ4$mynGOY{`|OK;k;u<;0Oaf_Hd(PxoLld z1vBG4?{fI1Jt@1WowoSU-3>aL3Al2UsTyoEkatnG(OQEB0+c zko$a3xYYQ&_wNLUput4j0mhC?N+(_WlEn9B7g?6?QvY7K1E(^7DPvP@=~54YrT}=k z8IdERVCQ(ARobz>#|0u{-vG`I4V)b}F!qum3Z=je;1Vf@|3=_>N!fYKKM3$LkapzS zZ|~=?mh%Rs+|(}Myi*Z}3%dTU!lz|BtR2Ln;@^6RFE1{)EwFYhz0hIp2#;?R-;D&3 z$NLw^KLZDm%EjoB0&eAL{N74&j+yGJ~Tw!xo zL83|lQ}5(JU=X|_o;n2P^h{}pd1ai-71bkG(48#M&`(8DI)g;UdDxj`=*r>(#MW8GS}{wX6kFQM_WQ z6aYU5(QZV*YlDXq`e)ETlm1!s&(4wv8%2jP{Bu}2VswgoM5lnCgMY|6#Ej3grO%mf zT{v8Sh(GN(tUt{Hxw#R&{t!lx9Wk=+llaxS_#&5Or3p{vr*MbQi`!st7$aV6<>$yl z7+KHE!+BON7zf~ipBQ(M=om9o%8MpxKU|tRac7F>nUS4h))dKepDItS5xaoZv_>I} zN<4}U!^VZ4K|)?z18VUbmMdQi`3_lJ8}W80EJ6oJ=H>@wqa&I1T)*;BO@X~`rEl6P zDYKXV0(}0i7=;_+MW=w`L%v*_3)=7-morg5jvVpE`Qhb>Ko&%#;wzLR5v`?hrQBF3}KL$Om#^UY%bE+*;( z$L9uoZR|Wr@FdU?U85W_E$NVJmNytIM!+%cgMn&R-ZiPtm9%%|hREKyU zIy~W!KOz`GzQo6+IX>dRmyn2%^OtrQ6WYP55hNMm9P$#!Is7#4#5Q`s_qKx*Tm*+Q zF*~5{`VJVf4Hu^vJbyl zViRA({f%v_#$K}@rMFh2G>o3UQ4Nz4)f+sHuuvpKFYJ!sJn`F*W?=!;$_Co%XZ4UB zPDVsmM_5GEfbN~T&x6zM>OnSDC%k|H)rr8BL2=r~R|5=)!8!5@r`4?nTBSCAG0<1) zM@Z)&Btgyqy^<=Y#rucIbr6?*^$7+3nkZU6#JLWfA5MDVdW^on@)5zFYTp{ddjoa$ zu9< zlOX~weIeJh#D(v-r;C1# zE}|L$fg~rA+(@TDTHsGwmUJ`#F`)z`9<#&kTb}=3J8fp>e}PMLi9#mbG*v=U41+xULNLKeO!GO zz#dF3!#rJ2&+|AB9(c*AMYjBAColS(I7WsPq{&tm$LPJ)$I!aqKZe*9SoZrKQzEgm zk8vo6ep!1|_VzhOX8o^_T73+z!^r4O=SUcCpw}_)g&@jkGh9rR=HcQ{mdwk#M8}+U zR2d-ng&}qyQx_lgs7C}Qrs2oVD~SQPk0Zi+&rt+m4q(uucnY!yW6;Q!_&Tx(>B;uq z3z=AYw9r7=Qz)}>4Sr{cjKU_P7{=*hx4R_@zdYm^#X2zl)Kj3bo3P#_;`I=UUU5>W z^;mE0dJ#xV7l8|C`qX3kXi+D}S5faT<&kUR^>{bs;`|FLs31*SK?V_=RG*2ZCO{eA zhbpN=si=pqv%g*-lqnV)9Ej*)e4#^QsahkM1Z54lpj#X*D(4+WTe7&}0y2mgGVqNm zJ)QRWam9;BLIFI(y%56t8w%64*FuFjO*EhvPL-FOUN~Y3p~9_)!zfJ|PBQxY4Ukdi zcpM82@`{FImk@nW*4J_fDeejhCBCO?)pfXWO>PkpuNQ2{@bHm(M7bpqnXZU{v%>`f z8R_Di;jWB)8Je4sG6IN;dd!($LfxEJ=ocA$r88^LeBPn<)cTJY2=XO<#+fzsi1w1jTd<8G;)i`Y5bZ6|^kT$Fi$ zlYkka{$<=*j4wYxwo3~O%m~@T&_3!(kf?9m0kWYL`wFRJ>rkMhpM0TXLweGNP;#eR zqVTI)1VlEZn^zrU+?J~*8CM?j71$jkyf=eOWe^8{m*kESyzL(paJ~!3?ey8IYJVhG zYr6H9!%RE~&*bQG$#d=D&~j|NEXM;N__NaO<&vcN)W|7?U2vhNOOdGE&(?MGKGDH{ zV1K$1DGcWpBeq(5X+K-)`Ux=P#?&2u1aS!=xM5-#@FnW;91BEWs=FNvS=2b}6WT z#Ju@+yz$}4kJmM%k?&D{n`vv5aw7Pr1EuDJfukwl-@GpR##5X_E!HnY2C!atfw1|snRPBnGF>m^PVV*piY zqAD12mU;c1?6`tbfomaRe|bzB@VW|D;|wc4ONB=-+cuMTJE(4(DT_-V513s7%Qo;a z_Z$omQmQ@-?_Yn-74$B#T_96xDw8q_$ zXcQP-9ljIK%@pk0(YP78KE^iQ{ngLLadyPXgO4#BkIUt=QH;QK-n9?}em!fY;NvsX z?57ldS2)i;J4;@_u)?q>gHkqLtg&SaQyLIdJ$fV5dx;P$$B+{-g6_>_fnFmxoQMxE z#s8!e@q!F;B7T`+Ax9*A5OKua82jX{ih|Qb?-}%Xgwi+R zHO!*RWH+k5$kshAoy`5c-R(&-r-=dHh_FK{xdfZ zLDvzIG4ZY>ew~YWKtm8Lb-v2ri7_j1F_YxNcdBh8`j%9{s@@4t+!V%#z#&pePW&xN zn(gHSDrNne&T;#dO?VeTGd}_}@uG+0tIn3O{^&^lK(S}VHEFsRHvZSZu1fBey2osz zjEio$$`MaW893OYaG}0omLjUhVL$K-Ih8`Y!m${CBm}qx|4SC5$HB4KvkBk(QE}Ed zau)tZ7SqSUv$zWdS5(K%65=r@|65r+?9}e9sH0H(Z7278S-k1gCddXJ9O&XYUHnHm z<@h++@mf}g;379U)qj%No^fz;W^iU!2O#?a%J%#s12OZ9jN62~mIqGw`K4ZR9r;Br zwW9c}_5C!&bhx+O=&lIEAs6(*mizajy>_+?fpy6N5083}Tp7_%%XY*#Eh|u$&#@JK z#5Jr)OTcQ7jUWi;?GB!n#e~1emq~p1HB#UM-)WhF9nUK_En8s7hOcS@Io_QC^{3f_-9CnV4zI%3tr$E`95+_q1_YL#EySh? z;z>YVnX*xFym^r;00Nh zgj&ItP6$qw*>kdhu;AUx|Kc0!2e`p2N&h^pj>au!(aT9yLLl8HfGrV4srtqOb)2^f z_^KDY7F^|?;OdvWGNReSjwEb6mxBkCG>rhP1i3yTsiR+3L_;OJYhuu*-~dkFB|I^_ z-~|beR|2Hadc%XL7qR|n>e4x!U3@9|KJL1Pv!SEt=x*foA4xvRs9B^k=dZ} zRCeba1b)6uxk`$VRgj`@pCiPFlYnjJ*_Wy3%O250i55MB@eLhs^)1cO0i|xybB>Mk zb_elk2*MGi2@T0UVI)a7IVMt(FdK0%w9fdaJ{jpHN~)e>yAr{rEI0zb;0<)P6Da$6 zj!HTXUQ9Z^$_E{nMy#or40c6V5>c)RZO-Y;e{n*VT7$0fvY+k?AnyoMx=j%SuaTcv z8Thgq>j+yqS?$23Y;+HLPT?;GFea#1eK8=57310@9=a60A{A1}%290+cRij=Y`$6+ zBQAFn@X1Jy4Cn9xSr|xV1g%)0VQ@6t4ekcEu;5T)<4vcFpZnl>F9o361awQQKMFX1 zhjl|7c5LncLA?gl%X;gfH$1wbX>WMcym@d!*GwobXC67{)8r*bb5d#sl{pS$gResw z`HQtUp@-)&#PW~fywE(E4Y^c-3gKscz6>vY^fsy8wLv1AfX-Ugn+=^Mr!h*?j4Ko} z2J8r7UOO3=aLQ;6vX85!8qM4t0v~Wt>iF+RdW`c%v7b&l)}dYC7vI9Ee8D^*`E&7z zbUk8^xJp(Jq|5xIB@cOnODZ*=w}zmpg)|9q&HX1&a#G7vyOp?f6 zMT&kL^bHzjKAXt@V5SL-p*pU`v0`^N%{M#|{Z|jfO;a;|H}q@in6`93&L-vm*q-Pa zNSRl7;rULw-#L$&R+Q>fp%q1a2{4>20dyiFQ<&!YGALmnoOJ7Trams@QnGCRLt4aK z8w7I$nRc5LM#WF(H<#fGNP(PzmhUbG8Nr|RY=IHR)pLcj(BUP7Ci98+Xfm(5+gY(2 z-fPuzBtBJ^*){+VorMo-P9$eD3b=TMr5s3S&v{%S@o%R1a9fK(NZh_LWwa2(vLbXt zE;U`v(XtF7p<~cZGJ)Z>B*-*d6Rz%6GXj0mI!E)HlxvakAmL8pa)fpv-I|Hyy;#S+ z*wO6k?c|p>vGm7%Sgx()a&2I_PQ#b%l>5?{KdDrhHk54pXR!iurY_XEk;W^ z&D<@Ep(&lTcZHW(7Vgxpj%nF`Yq5+Rnz`pMM48#VY}38?wZ%Y)kUhII*oy>))MmA| zVi*-BF;PE2)$VfZ-i>K7x8gMWTUTq#L-)PpOg1At&DyHqKE@97svE6E8Q{@*ogstgfIDq)kDCxGuQSkAtEeh@epFh&@FPR?pV&Fh}mqa}K#p)PkGI3j=n`Yyn z<&o>-TS!n*5>)j=BHc==w@Y%tC5=L67-aKOZ0Sk8IVEI~EhV(HA%PF2Fjfw|I;zKZ zAKj60i6YbV;+@L5?^qC`1@@sfPg{)UmGMPx$89DV=XtsWu}0Z-3mpvwqM{L40$=X@S%aN$&GUzhM4BUylCNGpwk8YAdK>KO7>Ty%e_hwj*g-?yi=P=uO4ug(xbM^)P z_#CG8d|DBUNA?8#^^Xr>NX5{7E3O+`Oy28kqQm&tS?avq5-X6T;e$f+b{ClQc2|Sg zDWh*lym$@vJm9)`db{wL+kL0{c;D>9PWt5AuJIg_#CK=#C792VeC+`9xAvJ@m zvB_l(#E_fBHXt$fr$o%$ z-6>U3Z3o6OzlQsEtEiTxf47$xW~q9O48VwL)cDf$e|bEKn()7OiCv$RPD-o*fAw-O zWBG^HC}%C_K$r}x5g#q*=hw809jWq6ujbV&WPF0Rq%`w`TuS)}h7FYwi-C)>;__zcC6B43`B_5=THh_2r)gUv^Li#3Rb( zUuy|M;u*x$O+U%}(gVo$p1+D6IEZWpWc>(`q5LGk7BM%-amE8&e)s^L0T7A0{U>~# zk3L&0P_UE8j8GtZ*TOvrh!jK>szCk^9F6BiSDe!+W<&wfkn`f#%jw1{4|ebZ-*S0N zEFCN#{KiXy&r3xK?Rlx4asLl059jic`vM}|E3TWv!T|G^s^8@X`o^NBc_ob1d{-*$ zh2!g_@H*8geXpCsH(tui8M|33?Gb3R5Aj|%cz@g}q}w_Iu*)}JDo-FUVhMtHvc{XQ zHF?sEjTz!T!Qx&u0m95vSmA3F#JIf08%dNa8SrNxiCxVaj@ePh8M3cz8J(^#l*2*H>knbcL^W}CLh*5&>PDs9joAdk5 zD_|mDK^!37&5Y(NxH~t?FVHmuDLh(haqCA!)lD=iTLbC`HE@t#G@abT9XyP8Xi)uN zucs_-!GHIIy|QmaQ2mVRTrh~deF2Bz@ON;_2*mKgUWIMy;3*Hv*B%p+2QIXd=oOaz zLA)uEmo7!yHa-o=pUkX|T5)o?J(D8u48Y@;#qhRD#fjAcIQ$}9dL&9oYjyzc(UeTU zXI~ViDx(9;b@_EJW(8c7Or*!7qEMac$43Euo8QKJ$LAvD8--2jCARt1w1FL@-cop~ z6rLM!Siwwg9{TA31n{DxH=T>6{&(gWQ@gw_x4Jqou;*i z?lFCQ+bem;E4ib4HCDhfwV_I3d@OC0G^<|iKG4e+T^UxqAh(OAt7i=aiYKj*lx`#l zcJZ)R-FHA?k6%E@fqe&LH^WN`MyfOh-~d%{)1JJj&j*al0vYk~6FwjIwvw98vyeJJ znUY!GfXC^3v3O4yi$|{yJG+|oj}`1LKQv4G zv+b)8$OV2_FR&EoHqolv6$8E1S|WjHv-nt~c-55yfpa*MO3HO{NSMhk4v7e1)K?E7 zCIVnd>MAmVn;B{R)kC7pN}w7U1JRqjdI&2(+~;F9U~TZ>9oZYhOwQ~Ttj86+DQrqt zCKRjR55%%OE0thWj~+p&Ibfu4AeSYeNgUwYH?83~Kxo2bk!~c53|hkZAn>t7NtOKT z4AOHM{4{-hdpnwdq}C^AQyBudwwb^Mf#%Zvv#4~f(wyGzq;KKPwQ()+InY+x;!K6x z9UvPq^hT*hau;r_a1opIOcO1@?!1NOa><}S&E@!d_-!si3~*}a}& zmu>1unr^eyl@0Q;Z>G~!#`23x&J|(t0QHO}=JFh8CZcDQx-!$5revPYW-#2}Y6b!b zFQ)_#3bcG-%|SIh9Z&+7K%%Xt$x>|u6KU0S_-SWBB3+9_XS|JirNESQaDlj*j*y1M zcn;hK^#2lTU60Ni1Xa^ymRO-AV@?knL@XRp+AR@X) zCl~6cX<>J7($2zN;i2>#r~C&=VZU=qFQuD!RW!MD!|t)-MIg6;ff#V4nLjGK3wvOp zN-Ok^POiHBSfwvkp>A6Ka4eq$8Ds+5ZnOB!hqnE9gv&X9uebCtgSIo^X^GaM-$;Vi z?osEoP3_BRlfs6BYY9$GJ3%X+bKYwm05yt3R!$028_+9A3#p7m%iNaO6N|&R4Ima( zn{~X6&iS-r{@fDjW+^b1c23+IG|lec7-(w83OJ)rpm^SySKL2WT|bDif6u`ky2Lb~ z@D~Qj{DV5I;p*gwU=4M&N?&^%t28aUsnOMAO!NZ&7J>dm12_=HU06TLX&FjDZQPpL%fb$)lm@}LqVN5K;TWNbL9I3W^fM>AjmC3 zD5GQ@lT?m6?eujFeNNt`0nNkUTJO?GLqM%}X?#B?8O48#=r97LASC7TBUtH?Ap2HQ z4v}2C>l&^DZiZAz#cX!0sMs`8=`jpXE?CfM*`~IFAOM7RyAS^3s-4s>53D5PZ+!rx zHM`if-()G9GuUh|WK(3?_-1AG9E`hjMQ3NxCey?;1}>R;5FFV>yM!0^z=0= zkbL^Waj~U6=xFu%0QKC$Y95JC80_t?S&6~j*;~cJhaKA{8M|Kifd_MSlV9XaDUBJQ z9S~B<4D1Lt)T=xI}`}ccJOT-q?ZUPJ%1Q?9k)lFO; zBUNfK8o-|S1^CzFE`88|hs9s+0bno(oUcVOV_$%8#pa$ld|)$wP-0+CqWlQxgK&)! z%>Y_(;1Lo6=!4(_bPM-`J_sVg6}4stA*(HeP+P#@7Cdlu=+5IJ@RS_E<`ev2n?Zw5 z-U84dNgsohKqFM$u9dJM>5MTX|!2C3yv4pa?A1?KsUY*ZAB07!VU zfn@sw+OCC2C<1az?5(U|IfOm8&@|G!LVhN2rNm6u=}_WFUu#gg~3yGK#i&&2-uj2whVzJNDU;JiX7e^2TR$ONJv#%RDsiT zV}BR}atJX9DODo^A8?Os(I5y08A_`rs0rdKBG4eGX1D@6f9L%6`Zc!35sJCJU{|A>4&P)ejFxLiX z5aTBZT>Y|A9!Ty6OK-BxDlkPwNZPApA=b2_;&9fVv9=eDyG*71cUKLdU$)yM>-FU*X^9 zNkdqv78^f?%lR&w(0H&3!IO}JEVr-;-3Sa{Y;F_Sgkr~tSO|v_xP;~cXbnK%+@^>% z7fT@i<>8NS%?BVbkiyuiGS*%qOrX(%2`n~&1IpJAXNvFgalU_|)gv(Fx|{w3OrY&B z3c(Ygf*6G~Viam}8HHlQ>T}}L#^UxxOX`LuA^8S*=Fr9gu!11bETBDIWP@6$KU^TC zP@i>pMB32Qo2_n-EolT_r!sUx-OwcSKqO*rX!7CP>KchZQIfAOlh~1b#Pr2>UmkGP zWn=vtnt0~|X}lc3!J!gj9Kr#-_4!<$i*wo0vjh+$BU|H}Bp3FUV5R{)pe z`nvR>0GJK|xUMQgtOn2r@$`v^WcW)HNQHEe3Kjmr=+8ii>A*oRD70rWUX?EkYIf z^EvE)atc*uXX$UALZ~f19&0eM3fTZ1;Q*9;{fB_WNc@=La2oN0t*k8e@sxm;-Vrgw#=avvMvOrko@#0DZysxD4)3jGAHzpcD0h!0ps zB1tMltW?dULR}3L@K4Yfbd7=62i|+YJvoFx4m2|ZBtY^5{=%D=omAiDOzeakI3jOh z5dzx~;XfHjHr+D_N=lqU$aFb{2vkUyYUUIIq?0&>;N0luH$zF$tjj3`vLPIcZ2S1h z0BDP}=wqq=Wimdpyp{?KtV1IN8cg_6GnS>@s_-rV3;~xLiKi1yPzGp%M#|DKmK%+9 zRd;>tMRYUGoF)0^q)>1(s}3ZzlJ7N1x_eS4CQe|gQWi~26L?bkp#1k9-d-NDX9Yq6 zf143L_%XkSK$>dN$4bh zV?S0Ox`}l(?AJ5^GW%>xowy<0Q*#sI1Dqv!-|@-kG-cZ7G^wKy@yv{mlG>Tx8@wHa zl%D~usbB5ozVn-iL?Mgz(6)n57OF~C(y8N&#UX#zn6x%{CPT1J^){Sw%2#!G$Aj=qBK0pMl7_5Z=b)M0yEHF zU>#o$5h$Y&n`hBNIWQ8mav?kksfDs&{~ptBbO|91f|sw{h1)>zhC3O(_u znEDDnAj+~L&K_Gq2Ykd!1e?RY)dgeG+29*ZVs=vslDCZoKmp~0*MoJ5%I_W9jWWdA z^*|w@K)g8?Aj43TD=QQn8tW7wc^_Rjho-VFWPiIG2uNN%DWUCd0909# zL6@S);;h^8Fd<%SiXaiB9KK?@7k8?|I0q>Y&+!98hwL=>*So1n{n9nGAaW-uPBkpz z3SsDwQ?02IetQ~6cOYmu` z*}|xxr(2-#>QoXIax&ryq7BP{r2{i)qAS0M(tl z$L;$Vq#^(yviA=F=tt}oOR?8?etRk^O{u9^YNXh!1+Ym>TKzYNz4jd_qWry(AEAKA zpS5aHyGHr!2vscbfxSY>!>~RG9x|*KBu%{{WWuoqemqpVaZ?rV#f*LGhPhIZ1+0aC z-|QvsTF?~2i?5>z?(*kni9VAZ(n;~FQWZm#_`&&gEotHtnRj^GbesUFI^yBvf?Qxx zo4WIAJI6T0U~Wj}P>VqKsg+BF&>uvp!lqYjYKrWXr=KsqQQp| zA_lb1NpcQAHMRhhh{?)C-vB{9Kd*9u#}cV!jA(~Q*a0|;%P3co69FZH)~U&+yVS#< z1^;sZELMmnxPBux$paCgS@_@qNZ|44$pT@CMz;@jXyi@>$dg0ioQM{%PXkr-(DrMy z7gf0>P;EzijH;1$&oFGF(VU#!-kFo)w-RtaO-tDxRO4^-#>^Dn_Au{2b1={zv9vs7x7XTM zG>QmO1Wis+)?RZaXC~;&BfWzahr~A?pVlItQ*ow-!vlb`HRlQkf<{8JteX4pNE|l(L;*?rlpV*v+Tj2Z1?F_J>S&=o(I${VDni+vz z0Fz}$nd#coo}A8*Cl#Db-fUK@jmXmb#WYQSv$+fZtOI^L8By3tOb){NGtVTiGwYfO z1F5fT?#ah@#E&NujaJO+(Te#bw=jm2hOmvv@Ve$;hle1p2COmzkj#|lnFm(!yX(nS z3$U5wd4}~@NwKZ-N+`?2!Ar7DvF$Ym+g*Cf`OJz{5VoMCu2G;g{}=Bwr4KHcQl|P{@$Md-2qJ}%7a$epijsB%)P6+8&RM+Jr79R`AmCvwGn-Q+*bVG zzGrS*#nYxxJzwvodQjjWP^{1)Lp}fHedY$L2Q~hh4pU(I*ClMBf~iW4^$=yH;uHgR(N=xfqwtKiyLi#To;{ zML6Pq2&*XJL`8KZ$?DRKo&nM|@~j-i&p$-kH#|E55#RPzGHw`=4j6OjdgYkdEN+@5 z5M&_;>R-HziK`=9fzAy-j32M!2}np`T6xQ=jBvgtMtRF4;U9CaQV%p$M zScE^_6hs&lA_LMHZ8hR1}O*dH9uTsL#5rRZb#tFqg-e49|m?srYOKO;QH zr97;7>vGk*S5uF+2+!a+zhHH64O0(8?#A>dpUDF>xqC|z=oVNYzq7_a5nqK<_P^Jy3!7F#93LGq_f)rkAeJD7%lz$x-o(7N`;c((V>|?-ot0 z)nSR?w33cXsS&t&ZjoZR4uj7cgMwLN1hkBjVT7N9@YjMAE>)}!BcR7I0`@RhDN5gi zP<~Yr2*+j81>YzAP-r+nNnHqqk3JG6BJP7L^-Z|)`dm{yDill+;<=CO=e8)~sE<-`trL@9AxOlr8lEGbs z5t-^0J3YZpShXM|Ho~2t+4wK7e#I&UA|kl+)kn9$)k*?!Wb~WElGh+`EK+$$9e9=C z@9&{K{_<5)4m~8dc_DyQcc}W%LjmEVpDb}yv41uxeP9EZa6Q%_FNa0BZx0e859oo; zUTN$@qyvXhyov#1C9yl2Jn}1#|BfcT*i#vNa0&tOJP%CqzpL{4sdAc!zc>nT%qv)a zZ!=+B!GdM2a7@6#`H`@MBIK3Ky+Gm7s6MVGlV>&Kr=LttmsK8pybN?PVjhn&Uh1Qp z{i4N~(#K|H#%B|nol&OT>N{!^pGxW=B zfaPm03joW^c1X|9TD!+cv3?hKoY%M*uXz1Lj&&nrV@V-I67F9n-i zV8bRWxIU!?Znc}e7>$BFymXU~U5er`41PJF5l<51FsV5p{_9CaSQX1n*ulK1$!3@s zHF`WGW>IH|oIIhLjY$0ugBs1tB7P$}ak4Ew%jp2K@BvoHXCm z^j#~JB(PJ&!7Z@v3x*HHX$pYU+YyxrM-bJ30XemYhJoU|VEj*3a^AFuhGFYUMNU41 zs)1w}4-k}z)`_1&`s71dyfUZT?D%@0;+uSkH>PWo5BaNrn2mwT7ZH`o_s*Io>iw{N zed6)h8k^{N(bqKjiQ0+C8lrZAKHFXfAx9x%Cn8CZ?wOS#EJ|0fR$}WXG8LK8B3>+J zKzc5q)6g$WpVJb+DmABNfL!klCB_5NgxwxZwPrNK5_uR@Uk@b2jAqmZ)5bGwYJ+FM z^C4@wl*-dh7!sNqmi2U#H#Iy@w~_jpvq+t*&qFIu3K1OHib$N-GPDa4ve^f|hU;Eu zMlWjV&`RtsrbA2pS}ZX(9nX3K;gi4(z6PJAv41zAWiK~r*fl`wMC9crT&2ZdZpu|{ zmR4TK1WQ*|$IV9tm^w$lp~V8FxkKr$`g6bo4oY{{c*J$aR&zs3|9CQLfzT!v79f3M zAYyc-u#&L^h!ImV#+lzYDO2Pk4e6Lr6*z;4w4vtrJJoBWz zQp`V;PV}A+vV-39iQY6{9S+ym`=B>%vv~c!P;yF0ao%`?o%eaD7TU3V26w$ftX>(M z=c8o>_&#FwWE{lTZ)qv1jz?RGo`d&Ver_{<`YB7BL04KvoF`gFmbNV;ZBOdbW}0~h zW*)8PF|6hrS{d6Q92byaC}sl|bEK$|DSAV|MT>dDNG;|j7IXdfmh&o2Jn=#e&((1& z9KkYj_(3IUg^7p1dQbrULQFi%#o>XFRum((q8xls;aPiImvh=c4?GC%$-T7H-`|4i zfcko)KoEG@AvHzdWrxyuUz=RCchVBwx_)CPwFxato9%@WUj!~WD@EszZK}`Or+;j( zB?wnPK8wP@v=f1?7?u?M^#?<}@zhFT0@tl*8P?5;tY{eksCJ6NcN48aKmBf-n~BzU zx6)e069%5Pp7D|g4}zVyHfhd!5wbAu%2pyc<=NV{dVE5wMbf3Spa_*`Fub1JN#=ufwt zhp+pmu^PXF)p!B{OwG5jSxfyLECyD>YI~7C?pNAg_{Kw8+l#X9khEWLaH_xi4!N zhG*WvivKv&|3XVq5-%Hl`WyW{d~Q#rocZ7C&wJ!4Z};aFJ>56-ch~h7C-%sy8Lm&^ zxoE0O!Kckl%u|9r4qs<_9{BXpgapuO_z~mfK#4HZ!-H93o!*(t}(HE}+WVd>2t=L-SiJt81++hHR72vqu+n3!8f+6F=(6*5MM76bfE=uK#>Q26Es5%{e%7ndn+_nCK!-1J7AL7nP zba!c8hv>hw;KSN_aIovJ#%HgB<05arA#y=j;Ea1vIn)sh)7T*@Q+OJ-H zklWBQWz1py9G&ssx;x0Sxd-7~&%l2`r9#Qs^hW>jhELF02Q$UGpfc+qAYY8oV*`f} z;_3Bvgaw-@l-Cc~_^~AHnc;hR_I|HCofP*78-zn3F?^-375aVnj=ogk@1?L~bRr)~ z93-^Y_RGG<_z(2p8Zsa~J}XWARPl`+k`+H+DKIUBxgy3>D!(&&A zCi@5BJ;)tJDB-udMhL$}srLsE?lM%l=Ab?rQg(RDL2~6QKMHZhRqlQq!Gb&%T{}do zU7O^d?rKuyodXEwaQ848!;EV3lY>_&-Bo#B6O}^AQFwZ!lLQXT)l-$Tn>;;L=!qzw z3-8h)>G1}bH)Q^vYJt^L)%zDfkK(>(&=7qQfM8em&`-C-u^x)N=psemrWD~lN$+}+ za80k$dzk0kjGz8+Xt&X;-%RL$Kv#l+IKZwEKK)jLhCEV2%EU9#<0KS`@u3V=aRT;C z?gY0Dd(KiJ<_(?nb%$I^l@AK08YgTQ&o_K$BfFB{dZAy6R0ZX@6Fd}*K#}DMLUREa zf*1F(CS@_9xds=|bhirvj!dFpOaGX4ib31ISoxxKfyqp_JX!Pl88k}ks7pB{(Y^IQimrr+vygSpGYJ3B&S;h zpW<)ja{@_F$TJGzXd*)ub=@Jf$5E;F@;$bGwF7WlcPLZoya2?{5$EJOAQwf#H6lnq zDx($j0wRk2ZGagXmcM$@xpYvyB8JY|tbT^(P{{ViVXD$5dI@A!bMTF9-ZJT z_~{R?L(pXgor8FC6q!NiAZk`@il?4bgwYJNgZYsHLbphJV33Uel8ttFQhAOwrSkAm zK`6S1P>a2s{4YobP@MPi0mHzr^&(lgGj0=I`n5x`lpMc?hz8O+XawS48;w8&z4vM& zG1%G$lr0)6oy7&I1uq&zOArQ0E?*4wZJ4kJWMJJPcp)OD1~36Hx%k0Y1R~6#u{?bZ zl)s>>F2Au+N&bOE@)SSAA=t5|45G0SacGQAiQqqcV4?BN>^)^+56b_3l-WG_#GsA%2V=1ed=5gqF0%G%~LFY-TxF~S50 zS!EI^eOSY0>}5@-CY782o0G7uMr zv0o5=iwy;8T{vu%KpPV16B`MXz%tW{1kyhpN~=08MQscHj-m2wCieu^9fCoo|0X;* ziFD?14?U7@B91k=&_6kKUmt_m*pCDKv8F=!46w=V09I{sml4DVzyM&o(CGHnNvoB} zUHI&~2;hTY6O2u`trU_6AsrO}FD;<*9ESbBR+6|4AqMf!jKZ;|)C-^siv0p!$accc z;IkM%aZeD?tn*nGYO|M=GjyH+*Tc2g2`W#wMBqw>;28xrJcDS4BDhHkpMfR(4}6}QxX#u|;5&2$b5)(Xk02Qiv;+Oh zB_21;HXdjE^oroOHVDbV+uSn?T#lpD>6Q*q!%Z#WXxw?AI4#`AHN1qgOo!T84)Eg- ztH_y^1?ve-zt*L_ICl2RZAAayD|gpc*o*^QCWwr)X`0wHL-Ers(KuvVp!8)#>3G=L z03{!{56r4xK1_(sU(gCd4j5Y(@O3+gkqP-k;Ii^Bm#q{DU!VA+-NWS8v&BN*Y(HgZL^Dqy>!3IkaZDfyI;B{AC- z6&TcZMP*P8OAbR0zJCY#q3X2~_Y?rK&S&1g4bMoyN(^H(J|FvOnel(D))GU+b(-?+ z9vF&88BlEnvc$cY8VEmB9}o4S-7umsOW^pD!j%~2|KW$qft3WDPGS{Ew1P^?ud+Q+ zff_ib6RHH~)2oFRN~Szfy_Cj)DmnK;(Y+j~l6LWrSdKxElEhhlsNj|NR_GW`7dEw( zx%jQ$!7Msk_Yy$}-H5(OMgeL*S1b!9J4d~U9VR@V0qru#!7>4Xu+b!EdVqssYYn!OD`W?jgx}zU#39uKz$C=D>~02?+?o7S zrJP*FQ`vgdwF>mMq7%8W!ekD zCQ3E`zuiySpdLU;Py{^jpd9z869iU4hwuqXqd%^_kGjLl3psvD z)Fe|DQh**x-nc_hBZ5a9&s3rM;1O89N*>S%F&jJ*fW{g*rwSecuqm8!PQ`6|>4Zdy zecZy)qm*x|6eQ&}cox6el^0(AH<4Arjxiun(rUy9#SRiB*oH*WpKZA{WIc;@3;*b0 zL00rx3?(2UwK=Z4Sf;gWS5d6b*DyZgIcFbiiB|)?*0olgA7H?SL~)Ji()YJW?Gct~ zKEgbIg?4o8*)Q{AufWK-v5cue+CJkIaEhHUs-R63ui}tQSM#jMOM858Gtrolm6*!l z2ENA;X)vok8hsJ|r7CY``O%kHRuW!lULW(KhJXG|7t0YlpaxEJ)-5YEJNr1(MP(Om7|ZyoOt&m z?C-gr1x-MJb$~W}VkmcwK9ZA|&e*jgIQmFdviC%IEa+xc9(VoT+jE@fR(3w(dtP?5 z!v6+W9^e`Ai{}C>-N}lSDMhgj`^8+V!ipS1j#x}ym}$ji@fD+vwzpy$TDWbG_^e8F zmla7fp9_uLK9$82UxQqXdoGotcX!~(LPo(6&6SDHRG#Pmy|?=gF8b!f?cw-Yo@aQL z^>1KR0>U%?XfP;XGp-Z9T3|wY_~mQ_DgIw*`*DJMCK&!tsqw=SlI`~iI`57fr(#qA zeSg~_6lwnB8rP11KEI>*PcEUz^Alj!PL3-uagalOi2Jr45O+u@N5dbKjR){Szn|Pe z*^2+#6-V_)uuioC0%D^*p80NNXDw{HU+0#crop8#tg;j<%FCC*31fcL0ABLAOZ)3( zayXMG(JmOemajo;3tD(1uzeQ7`e!au;uHr>73lRqr6voymnBD)ks5D2>N*d#W8gSk zN%hoXP`&EG<##P0{?bE)@@QwA+Aib8>1NR>Ez0D&Lh&sy$1qb4M@iV2iU)Yl2l1cs z7RU0lp=*Sz$C$Aqpms=BejfycOUY(pq7d}l}g*}15v_sy_iVERE^cc&mdUHW&6wYxu`Voh-8a)+<Rxo}!?=~l~f(ceNAv3<3dArRNixuSw zTQ@5+xq#_04o@F&@wA!&;Juph=a9i#&EN(p61jSIIfaQ?IA%vz!y7>)d>trW)1DOa z+OxpJxVd|nF)YYs5biLU7V8<6Md#^zfOLJ7c|~p%Z89EZYE}%XA7z=*N6E*Rlem)+ z?Kc;m%pPUhC0`-ATV_b;ky2`?VNvQBQX8q%Fb9&{HXACm&0mqWDN0xJaiT=(?8Mh! z`H>p+h<3P)FNAj@Kx_+9m@)aV-4LY+24E?vRdJY-BD)A7X^B*fM9eCYA+slx6R%hG zp3QFG9!Mm^bt=9rNO!NenLn6k%`cgpQ7yIyI?RcrS8K1bjK)_Pt^;F@R-!pW+c+CO zBfDx6*px)&6B_^KMVPe5ICo;zk?=EaK6o_jdO?$Q>;W#i@Ny#pKnv+C78(l2xtd zBT)B+LLniO^(-%3_H}`VBkEhSm+Lp}P1AvK%Z{D9mwvUzYv85}X`voij6X57Bho@+ zk3_BTbRHi01-5JQAyHr^zCaG9jYSSvK(+0g^*A1Qj8Q&{%fU zc#Xf??D|nVs3Qu@!K0mV{L{4PHBgmrQ*-2>`ax#j1CsB8$_dg$OSeH^7oGJM#N6BL zzLX*d0Iv373#u#qczFvwU$=l0prN;Bj+ zt}(upb(<4Ct^uuh9H-;G*T6F2B7tfZ_Kq_9AG1fF_?P|nRB5X7eQ#qz?0_~8AQT^h)a$%g~#~K zFouXv$Sde9ITs>{yQV2lV)Ff97vm%mU89Hx?;v+RN)6#nh#5sx44UH{R2$`@Zy! z7TnPFja5{c4~_C;*I1nk!Bq#dW)@VkX(I_S2Kn;MaMAKiF6&q0S#BvKG9VulK~|lJ z{)6#~g-SL~uqOfbPE?iySEd9pxuFr6L7r{e@p7j9O5Z`)&0G)R+>a>g3W7g}ZcT)O zuM+xY^A#~DpAx@_P`EdOmn2fed{hWI>vamhnKW@I^({CBw>s2NCrf_GcesZk-zJdi zEayTQ`8T0@WKTF_2`}fcl>)CF`cS*h&e**qANF0f*Kl6RHDGU*wgZq)-h_9 zaNQ-~=wz-75pQx>Voz+incLVluOu15(3lQU&;=fQWjaws+ksd}@s64?s5tz*p z(8HV*Yywjh`1qd$@7eHeuJ`i3;>V)Q#@&kk5kRzCbNEY_`aV;zT%QY_NSbTG&lJA3 zukx^v6RrsU4QH+x+&BN;7yi{%p0kJud{V&RO#-2V7oAPun-mfwB6#7o-DXD%+;B!S z7XyX42Fm4{h$x+hh(biP%%*be3>L!k<{-Qn;kVA9ksa@mxYtn;@y-lHlptc!G-LYLHBXNA09>-#!e9h-=L}RYf3FyHOqzGe8CX~;kjRm4zbEB zSpfYFxAj*C>8W+Clt+W)dxFm%L^Oq#C|(~Gyzc;_BUKLK^M4+(BV(uot`T8|(a{LR zn<4m96bXywpD9Wj4n8m-4h-&d~F9<76UKB-8y(UM9RQ< zMB;M-&I-x-$OC*ZOWnx}Nc{ri6F5g3me)OxEm@*~y2$_W8gYXL<>e z=UKZI&ruP4AHvJnZg8jh^w&hUyac^icN``PceNrYbG~TRIYE?_=tohY?`}nj!6d~R z;9e>RD|plKN$%+KBGU;jw)OPvR?@A79H{n>xLdTBd{TekN1Xi?pMI^}j>Zq!A)qS$ z05qaT4OX@(@~RyYU))2PhPl}7HX()#R<ki&aGZfK41>)bTr@L;6pBG2(JmA4de zn?GcDbm;8IErh2d2g27Y{GU=k{-p}H4KW1!ZWBoZr#GN){DI?N%GZ>R(a8C*iM$rx zgS)D06QY|&xqRl@vY5PgOMNfW&$(4ds(3RaDdcl613Le?^6lr@3LVf=E zppt-38KgbV`J$cPt!FdwZ52Hc_Yvo>s@hHaJA|=S>RT0DXvBVV>0L6Ve0Qg^Rl(~C z9=rf5k)X^80k;UTt%?|(CBNPoxPU>C4Z&k_Mbb192>1D=YZp?x|L)d*&V?1MT_{3S z`|*I#Je*PVm3cs7*uhw9&f7(WSfHZbBOgZuJN!yN9;gryeSbduLfN4!{CM!=D|*mM zIJDI7+fM7t*4Dv5EpYF&F`I3>@JJQf_9LP1~(oxOuXtpq|b6v}Z9Py!nB zR#jFbh87!Qwt4*yAINuR&IA#E;vuXr34=!5OHDjGK)M2|vr*^!GL$;Joy zz1xY6a)}$C?jYq~#-kFj7eg|P0~TULOz$YmL3`LT;pZSYR0aqO_e;|Tu`!tcHazPj|QZ@_&&^-}Ee;{mPL9`FP< z6!Oaiaj$j|1W%5#`)GoD<+i<97DJYZ-JuBc5zB(2yezuQQXH2iv zWNrj`3yo>DxNPdciX)qAL)K-rENRun+n0MTtJQC@ejg0OT1D|OBlH1d$tJz-T3dmS zi3NkCeBx7F+ZDv47}WiE{hnUEQ5{B_@O?cl_|GwVpW%U=ny?9d`!0rg4S4}y%am&_7T=E3pN9HP5k8gS z3-ZHiaYuXk4s@RqgX?5Alm`5R>d+ml@Iu&hZ4QeiW!hL#Y>ma<7Rliu?I(OQ<5~b0 z7U^}eL%gz)1>0Q|veN3*oXCh;KB|kh0UybAEcnpH!2+pYG1BdNZ%ineSqBUxQy#cD zl(n2&X9T}uM^BhHTtd-d6DZNCxRD2*erOG z!$CmJx23KsR^0t4*Ke+cjjPB}ND*L23pdEP{>EOA6-Cs5S{Nh46@W5oG+db<;|#|R zG0%gtZ|6KWc01Rf8_z@qoJ7GkKj+so<#rq>Zs$V(yHq+yYaZ`_N_50vFN5<)*X`V6 zD)=UY`iOZu>M(BSRZ;x2v5|bvT88W>)hpJSkWC<;tDmYrIiAad622|){%4j|f6H%9 ziN;WLBvvy%~Anv%LaSN{$?t^UNUXDiRCeVx3 z=*1RAzYL}~-tDL&MTGi*I~v?+B??>n5NquN%E!$OF5IYmkRn)BE8C|zA0>%KQKCuA?txkJb6#r?E~~}(cc~S_O_;etFEKxE=jHIX zfI3QRaWC7EMc|ztpoJ((@Ri1#KHzMLO2+kKVvJTDPrmQsaJhk6KntfA@tQZXTYF)g z)e8f?&_D2(xI6MJ6j)_~GPtkph zTp8umk}<8ES~8}UQ+o>pWuIwMzfr0zkRLb~Hwq9{gn)F!n6?TncHzQp87p)wYN4+w zi(1h(@dcogiaxfsG(RqCgdPYEtARM6n6-{l2BO zuKXGV!T4(=3`j;L;l0W;9STPU3fFhr;NwS}`UhlUQY}py>GuHsQXIhwFNs0xR+6?lGm|IILo2)-lnqH{l#% z$~c)*H(h+un?1qYxE!nKl`;F!b*`T9q?-q1Zm>5ObMv819Ow#f?xsH8wJFZYe%mVOUFiQVGRhJY+z_8q!dB0kU7ktkNoa$ct`d-s_MP z&)6u>sw^XpN|CX1B>es`?iuL^rA8)~!&$bXXOcV2Fo&k1(fz8x;B0kA7TmXBJT{1?Jm-v&iK8T=U$F|40g#9BUzS( z8^2_p5W@-;bSq!jmc7an=7qQn*!e+#QxB^|Cw>od=gT;bbqmmIjAjRS&((|2pkr7V|L6D*4n9bwW4+*I}p#JyCFe09xsLs*{)Z<>6 zsn?AStezYgP%kRIFqaUDJwC~u6R%VPrIUO|YQ^UsN3MOxg@R(x)QS=8gPyk~TG2?U{mE(O!5evKu)mh%?D>gSM{>sK8^Id!y#VQ-q#KF#@ z<5<@{Kv$!Eg=l~{ib~_}L5mq>K?(sE!FG!mHTpvF%?g}6!0DGCl^fSLqH%B0Q^1n*M*H<*y~-`*d6$!g^f&%E|B}(-6Kg*5sV64cO>ykgiKZV z-&*L@6zdB>9CGO- z%QPrPybj^c(Z05+40wWq2d5C6JUOx*KQh6|lMi)~;LFbQ9k@P8d3N_|&4VIBU2MZD|Q5sfCnT*n$p88woJjC^9VTAT4{_Q&1(wfN1Lg)<9KJ{(Jmt?$;;Yf= zWsSw4;IhVxMHgSY7(_&o8xBE4lo72Q>xKAeAjC%ryc)_lycV0KY5KB8NK3;>4iAix zWsT4;NGxj<{K+jm&eFmoCqvfl_TAY#Bl>2s>@ZP&v4uzO*FQc7-^&SziYV!d4@mlg zr;O+id1u5g24pL+7hp$mzV8DKPow(DjOa@LAH+P679lfqJs|^fN-6dIApwbhoD?Y1 zN%2bV*(pd;;KXz_A>pC48PTSkvy(^?6;Um5$b8s8hjAu3O7{9UAk zLrF++5G3TDk5j^-7%XcDxGPJA|7eFpIz(b5TRMaSWcF4^I)p2D$XUMZr`oBdDA7{V zAtUKXhwSQNX%Lueli^?inhg@BIPB0{bqa-O$c$s(=@g->OcD(l*lsk)#^Yhghv5Bb zC|2BMjir@w2#A0RLEdzJ#aab2_jd-X8PRD$ndQR$G(J~jWIYE>6e!$m!NY~$VD^9gq(Vm)o`2)UkGeXHt1!{d@vJ|ft$~=@4yAKE3Xi5%* z3}sbTJSF&nN(YAjCEx<{*Q;mbKE`V*Ngs08+jrc_`&AM?9C?*4!@ESHw&;gn`Zqf= zexVBC15f_djs&WPgg^X^zu1vR8r+Kue)AgpEeY4}CpdrRYqX&g|L7njKHXxK%Nnyf z+b&)wT%^j8TOdB@5|4k!11G`O)Dd9n<&_jH$};7VeGoyoZURCWUXky$LvPIBd%m=V z0Zy>!vx8(X9WvzN-GLEw(znMzh$CAmJekht>^O^f@MVI~NSZA8gi>2nB}vfCxE;&` zTh2->I=j&j<_s|6WoA1LAqtT+9!77%=uNh`)s2r>+}eKtDC02~GJuuNeFr=%D@YRXxPs2lEh0IUhE<)D&hn?^+%akjUkl1vwsOWZ^q%E>>ous+1$|pW>geNJPN{WnP$aB=hahv)WVVl{E6v6QQ zM-|WCB;I_C_^Orc^20O5ch%UY=IQX-HI3D83+erQ6%0ZkeEo98;7Lj5mJ~T{JIgw z8{{)FB3&*@RW2q&?DT>HAfEx8meQFhgXA+tTM;L4FNnZ=h;eZ7D#TLJ%P`{*&K#y5 zWpuKPhe##^DOGqI<{2)QQWBY^5@0K13(QyM_A%n&^I&3Y*aiuSOee@6afJc8Z9s%^ zo+FRhq|n;13GU4|gbW>`6*EGzYEY+3BHkv8!7`=IgsO*ztKaZjtr8jvy@~6OVgg^h zS*|DDj3pc^1qz8`WwQ%OCLzhd=Xy3yLXgPVk{DX2J69!>$G|znm$FtbPD1GN6t1qV zIK(H<;WiKS6X_;gIj&WdTk-Bt5Rua$0(g}~0O2IwhP1v#qIfHF-ZIQg668P(!>_7L zO@F)|<&ZPPQFkvh8a^X_A))SC#Wc;NBYuIv1Wm=ow0eREj)1~ZTpZJ$u>W01U^^f8K%fz-c{ZPz5RWlq=e53Xv{eo;O`eC6mfsZq#Ni*-ck`xau{o)vJt{q zgyW6B{T5yQQw3u-D(~S$ig3EgKF}6^)kfugMLdG=AA>SsCUL1w6=Q|?P!StZuYoD& z%`jJtfG~vJ#po*gZG4*y6TRSfLrNsh?PA7l@k{V+DK@+45*h*m)0xt^hhB-P?@Vb& zNB|)VoD@g#GO}$^zzc4%?U-a3FSx~aUJSh8BAWv9ahYv1?7zJ|;rjR^+6QuY&RfbP z7oOBE$t2PadJF4>|AfenuNEOpF&8$9HlYVmFy>GYLQypOEP)jSFf?xgr)UfQN09SV zOIs;e_YQiN%5W;klW~Iv4^kNA`$@u%u{jZgM{*dH)fP@NvAW^hP4AN>Es6+oE?bK6o2ybEpI`{!v8wSAuX*P zZIo>zAFUmBsQjW1vK`ocqYB?F70PX6Km%y6zdep5jkvEwg&2Kj+(_bsd6-&Rt0)xu zy{#)jN{D513V5`2bFqnt&4uifuy9s_%AUFiCsv@;)q+waW#osO#HHg zL(oCi0jmh}Eo;PFTGr?hB_wYF77pjE4lKB=5%-$d8tI>%;P+bl2j9uD^Yi$K(p5EqcBB?3_kJ{hr! zz>;GTmID-BTrW_x)t|S+1#)*1wP3}#hAE>XqJ}AxGxeP{aK)xpB_f^Q5!-$8y9=R+ zixNsrAdr1KFXbFoqx?lEK>yF}6Vj@PmG zK)?c0Aa$fbhTN}12l_K;MbY}!o<$J45no-GiZr+?O-Wgv(AWUx2_#s7rrspHw`g!y z3ptBvlAOgL+ojhDewZoOiD0CL&Ea~a#^)Utrdn7I!UJe88M+sX3 z!s8yaHv*S6;v6)5g6pZZBssv1Jc%l3=p6aVxeDFt<5HfQu60g2@|8epoS^B4*4tx+ zk1+#cm5MA#0I&(PRe&dwD&WiAk$oTy2{Gu~*s0+sTW)|#DI4S~MOLbC-28(dv=H9U zRDqUMWZ@s=E8-E&=>xtUsS4qDQOP_PWswlWxzg}LAaU641l5X8s91X(2@86`{5}|c z{y5-ntrNXK_KGYd#&N{yMbr+nMJ%}bbGm`@^+gG~B(!^x2Wbe^NfH+AV~?=qD^xyo ztK-@q%SX`_*(9Q&9nu~IFlP|WyfFjHS!iVE7=$nAJaxe~PTmH}i65w=#Z-KLfD;Q~v6e`I~<70#>2~mp7h)mDtb! zJFJAtiA9z-7FvI9j3*MYQb^@xZBLx2jOC4?`0~bq6W}_0z_3f}FT$nw;fwmAieU>c z!U_EFMFAe-`r(U804>o+zLpz`9==FW6K-kjsn6oSkJfK%^aLIY>dPeV#`1$Z8g+3G{%Y-(0A@H3=%~m0s?vY3LY% zfTkcCc4tL#NbAG`mo>5wE7LFHTNt#Mi>KMmPT!nib(Jh+=x? zXh5f!gGLn_p@z)(-IKN6ykjy_4R;-ZM#84V!@U|6Zx}k@15wMvEHnNv;ZtPaLjDNT zUWN{s*%zviT+|gp9s_$rS1`4tu_7KDJi0WQgtLautSB~=7n^kr5WK*lL*!DX{i}g@ zDjheev7vhI_YJZaS6^k~qe5U(@?!;LM7D%^9==%nu^}(o51*yx!b#EKLQP*dNp`KD z{sJLeZXoyEp6Ah;O~9gU;&LPR{4HC2k_I_@fz^jAP<0x&C-{sI3qZn~A)%be)Ep*n z@Uv$HL=l4+1kxQzW}X=t3{y7?r99AAn9Th?6So)P);nY-CM$*En}sOqgFRAzs+NmM z#T@=HzUTbup85}bOt&j8pM$$&1K;5e^m#q7voE^~XyBCfBgm->74ikO!JJQ{A| zJkQowg%k6*cq5$$6RvB5&`B?3y!&)7YRLJtaJm(${gx-P;1mg1VzEvu?{#kBnR8l_Xz+N0?2PG=JSFrwBlCi-Nu ztG#7ak)5@1$Y(BR{G&I$Iaow+eUhK3nIUpyVfKYN5`hjT+X>IWMwsFm|Gt!OmgHLykHlf!eA7VpblkB|C*;lyj4RF+GvMbr z4_E0k;2;A3_~uw(K_j1mHW_&1r7A3}&tOkR!O2m;8_P%G(L1G47&I0g& z@_taTCsIN92fMNt1(c5)tD?zalf{dTFya)PiE;T`qZdPE%!FWepnE3pH8Yua>SXau zg_8iH5lHEfB90W3Vn~qlu>uD7qeDrx>?J@RV!(#w0J4$8Jd@pGxmsu# z9&x=2=SiM7MWia8@MF8q(AYZ3Hhc17Ux|*Nl$}oT>asMhwF5ih|Bh8U_BOiF6LPQ-LXWA ztHKE9aiCQ~+>5=?BuG)5{sDDF5>xyGkcf#HRY61(km&!7JtCOV9MRqkA7H%sQY|ej zcwVFURE294`4sOGH>TG?+*}F3k8qidGmuL=-Sw%Q=u51tx0s0D=wxR(i zp)O-&`*?VKm_7YI|Gtl&)(Dfj;V(dySmMHodJQzTmzcxrW62t}#Sghgexuaum`{v} zBG9VY^brE1O%3P;LNj7@j1TFl-|!J67%{jtf{03K%m^-RfTh+KxjWl9-4J|{`>*|| zUA&HIFzfjv^JJQnpi5q3QAwr`c?=Up0oKj*x0#~-^dW>H=Q*`zChCAHs9Er-#W-)Z0^o{O|#vVSXsZ*BIDZuAbBp-h<}Ax$w~+pNK&#>-5uZU{wQ+YC=; z2W$NL>zlO<AA`lu&04OpV^Vnn zB8fbRF!cWQjDHseriCOPB))iE5zn<#J37J@*z<{#@PZe2=QWCVRgkZ_OeHCfEs`PW z1#X@0Y2aG7`&{7fho#HTsB|FN3Un?=Sc2N<&HaF^j-nZ&02D~VPP98i!z@q0(;__{n7=K7&iVeNZjr6p?+36u9NubS|Hu@v~zA1M1AHuEU z)y1G~DE2^ufS|>DP!n^~T02BJAZ*dJi$5w)qG!(B>&~nM(LT6i8Yuc-pg|{qd^>Bps51HBAh~&M|;eL-yPbkH@44=EUJ+! zf@#sa>fN_6vD!`3{?)Y1$c67H1?iPhGenAR|6tzz2%Gf|V%tS67$d*CkZ)=4zqD7! zNHm+A8hL(5ltiKfpph1=siKM2A+_C91sytUUFkx5BV)3$)OfSiiai2up{495Lp?CHUOgwQM!&@ z8Z<>@19DDR1UBC|;t2eSATEmRoD})03wItB(J*qH`r{q==+PP#%L|Nv?8}rMS5`^ckBv01djf)4)hHX}Xn) z2%I*7<<>C^@3-)bWHwV?7u}Qbny#u)T=?krtyRU;PEa5l1&?|&X9I;it&_V0^LA(A z!cHI*e3teAig93?yCd`Ufb!34s;?9D>WvXuyk}kDO3~4Zd?Z*5A`)liEhE?vTOAuTobXS%4C42Y@eIc+`<(HR5jB3U{bm`Y& zyGg(`7Q0-+YC9CmD=&gy3dy!-BTD33_*c!+q75Z>%A|Q6;|o<>!^me`@^V$~!Y4u4 zT*zcuB(abw)r^;McY*9|nP9t!`F0jGH*hbtfVOWapyl9SMMb1o^7C^bruG#}F)tgm z@D$?;aw5p!>5hZX7jV`QMo6}b6(abxNJOpJbk4TRU>}@ti{zCW?$h+6!krn-ERu_u z?1mOj)q@b2z`*|^rgs@7Go$ya@^(#bL)5?^dJXT1v4u>n#_EXXy6Q<9yAZp~;cR6M zl}D%B21&R@gn~9<9JE0X>XyE26s*;Il?|Fa_Fh`_PYVzO(x8}X2BSyc2)SsoSS~8j z-!Af{_mu@qtA@NR)AJrnk6fN6{vq@S{q00gR@uY5$e(RI?1ysh`B*KWDrPVavg4RB zVqjMEiBM+v#Xx3bE}b%OWpFtFHT53YrLQITDc$L-^lFBq?nu~Wn>z_7)(RD_U3h=t zKR$>*@d-a4rUIvWS_aCO^09WPxM?5sr@(!j_ia!rJ#z8ou4+$a>`ij*qgQ*lxWY{n z^B#|zuWWEl!K|Ia0Afevl-7AUg?aN3S{aKXiav=E#l=-SL@U!HB?0Eoj16`{FUig5l z%~CfOkQby$n1Al+vD~vwDV#2eRsPDZrh+mb8@>67@XCL z^0ODpIyh;SC1c}hk`9oS@3T!=%r4{nbxZbcI@+ zm>}c;A2jatM}P-@Kj2If?*|H;81R?ph)V_QkgbpK7Vul=_(yn)uIxM=%e%KMHwm+EgL3(?%l+FpzkMtFgm;WuO-0o`yp6z{M(#_O8@KAuNKI*Q z$-*=r*3-2C{_0lO4Y&%K0MneR_CUIFY^(lKP*J|r%4snTnTxTkycE=LnxHCuRkmIUBtA4o&b|4a) zR9x3N19w`5$DDI_VwvYxxrDu#c}}YwKH4yFpIsYRoz}sK?%};LKC9EP2->SyMq;l^ zza0RRzxeb=)gUlt_jxg$^gQz~KIMG!jB(FS59SiOs1NZd^4^_Dsg%RGsCnN`4_Gr~ zZQALDk4tVu6H6ZuzP(Jd2xUyoW z{-zxaP?PlS1c#T!BIEIO6Fa^`U*N>Rvj4|B^zn9~7(e*jsAgKzc9bRODe{&b`aye! zWLtGRf=@y=it5yNz3j>|eY8@bU*u(c*i!v5Z=4$i`jhYgvWa=MY<|>};`S%u*J!hg z@7_V&9#3&Q%1MCRD~$LOh)TPuOOy@?V)vdsvK#|Ah!+^HbRx=-}!(gh8j5)ZNYLKlDb6Af%$hKuTd+bIry5;7LL75U>% z6-xhq;G(hkv@6_&VjLz4fi>X2*Wn^(J}h+O=2A@>iG-5~Omw%R*i4jZt=*+hSAnYL z;B$0ez>i4cai;HU1X?a>+8Kz^yC$vnG!$tDbK86#H^JxrDM)3-+KN4`zyKl`oLUIp zh0GJ}&^LXebPY$)&-b?WL286sILx-OIW&0|1xQ_ryZB2|Sa zHWTf^UE^5M8#W{!^I}A8E^nU*=lJy-cS+C_Y#xwHb}6@dY(59^=#Zi}aF=|_ zC2zAC{+~PbMLSh084SOj7+x9QwE!zz(8FCl>@48-TkV;Uz)YYj{dtO9zXN%cd5Zn= z#tzIc#9-e7_u>SYqM-StLKGCiLm@2hWg)!#I+_Lu7{5$8L%=8D;w%2*PVhV1&K>%} z?>y#dEvqs?jr=6oo%C^hQ@t69hdXtvECK&utAiEa$Gim?OTD0k#p7n;S54oFjp{Ec zE(Nm_KeaJ?bQ-PczfBWzr%lYpX*eE&*>~+qG5Z--s=hqMN&}rVxaK)~StU-=YcH2w z!>C<$o)&^_HpPm!aT0O*w^b=l=j$$WfzuPalsp>Swf<-~vC~D+V#N9+fe+u0)pW{Plj( zEjmXCZ&9G5_90JcK_?UCo17y&&Gbi=^xkUV!WD|k~Yq>nA++#flItz=yyd7N&{ zc~vhWo#t+`Ze03m1O(bFbm3n1YEsQnGZI_8O47H8Ia&cLwiD(6^L#m$e*qdwfH{J> zRfPF#ThRzYJ%y4c7sj{-};NvhKgV5G!S^oDi9tP5T5lvV$w(O{*m-j$KBY#ILf}&;xJo*IzdXPi_}LoYT`bsDQV2ZZzPd4 z_*|z)ri+TgFrIve>aVDIBY^t^@Vp0r7XWZSkmsn)u03)f7wrk0B+%Twt75 z@98n=djw{qAtB`TM+eOqWc9gHE5b+#RV5gWopHfW?v4bV0c_}uuU`Nds<%To=AM)S zlIR{1JOk&0EUA6B47j85kwkZG1$6%H0wvHbA2?r6P63!f8eyQfH0OcvwEyenfHMrW zq&5{yRRX5x(zs^09M}gjG(*?{-3Mtfh2D3AQf`Xx1_)>M!pHctg+QQ#na!^}{$bei0P^o+y&xBd`K^UQ0RpMA56)3v5;&(Tv2=l8p3ej3R2mwaFZs<0B|mZm z%LgbQ#bAO_0-ZD%00}q;hARuHcx?_(A&R+H&}&w|dtMI8{w~Oir~}Aq8v+k423s{6L&z{;~>ddtf!0cm~&@5Q=6G8)J3J9}6%mWJ6I zQNVJ`K#9Rp;;)<QxgPSzOcFEqo*pK@9(?_1_iC{=T6R6|)BoEadV z5LJ}vzHj*o@jzb@PXXd#hA~$uJ)98lD?kD99z1M%00k`jUOtepv@ksQ>;X{Pa7=F> zL_vvZDijd~(a!%J(bZExO&8Y&+)h=0{cNX%1ZnVvfdmj+2FG$+*4i=Sls zfo(*xod_Z$-LUj9uO+Y19n zQ}l0u`mq&2J=}nCB~oKN-}FP&D-=%Fvp!(o>RT|Glk_3nD-=SJp(A)O0Sb)|5C(5! za-g(_M|w~Q+)I>lz`+=v5Tu5JJ(9cyu=gFC#5E>^Q11ivcr3x&!2r-bRAdQY@8esm zpAQ$r7l>_oCPuFms4=u4{6cX-kQPHy4R-}Ia;U`^d$>M-bYJM~iF6?l@TV1Dj8I|3 zX(ZqIB@@CIBlE~8&SFL)Ar8O+_l|_fBh3*rE{KVV z_`yG$TC!`9$N{SHr(B!IjC)jD&%K2i-f)T97WbFx_tAMqUc~Tqywvk?-DG2NdX7`V zsB_?wCFlZ{`3Gt!eg`8Pa-03Wx*kO^vj`Uue0X;h%{B=E*6X&Y_P82Ih8d3u8l;Ur zA|?X#gyaofl#1%kMv0bxifY>ujixz3jLlg-`hNPy~7OQ5VU{z2nq&NGD<6UOs;3is)nkH(SqxIE*&n$S+w@xIwNuEBMF zzj$2^cQGN3Jj}Vg{Z>MoNeA2F8Xil&a5U3!^n0NrRnU8hNI^HI#5FvI0=O$oXtuBb z;V}pdV#Y@aWdF^*6P15Y82jpFat4#H1#^yA4W?%b|4c+a)1diK!G#U6XwdVtYAQwY zozTBdRGHflWQ5t*YkbwYaYQwe>YcPqexHckfE*0eOiWNyNtWb* z+Bq_=uU{sY$CD;YJrYH-3j$eG(<+uBUxwZ|)j-J!ZS`?2rc*@N!~!8~6?Q_)kJBSb zab}@mnfa?_K%#&xMd2&!0zw(!$XGdCR+`x*S}fUU<)EKXZ_5`0cmcN7;Xxp95gKGt z^6yHcw_-Uaq-HGE;%azfMFPp>mdEit`QKhMOpcII^ldx|yNhebllm!#fPkbmP@Pe0 z0M~>HPd9M^-T>w!mq+4BvG0CtF`c6~=g}4jQ0EiE>4W4kTy3!BV0hG~fU^lDt{VY? zfWe^);$C-i-+D4?O-_UD`fqI15nkM&L`< z!NwqhBc8PEoTp%4zy-|!_E3ajz!h?K9HU5X(8+cSi{%Fde3VXZ!A-8x4HOE|kDR1X zkB?%nsTh=gr21XFymusk9vwNlKt}+1`to&4Od%HKweYeXm&PK-OlxBOAiAf0^^|Zk zkq-#)qjH4dwEv-2llu$_2%a3MRhXLv08i7E;d+yWF>Bj!Xj3%~?bQ~pg~#dJJ#FYu zy8#EcR%>bVr+qOXJThcCA^fft5|EE4*&CIp3sQ@D6vn4+>nO`5#6x(*uQ$Y<(?a2a zHKLs_nr$C1N2^6mBGMc2aS7m^SN$OwPa?6cQhU0VL|#mY)w3u8xK*`QAcyM!uWD_% zS+zFu*U4@0D>qN*j9qg~tRpG5m$lgL+D@%?Je(InS|kS&;RK`ljh#$(R*tm&-_Apg zv=8QH%^#jd=!5lJ7*1~=U)~Ob+1hzB?VQrZj~R~;H{Z#DR5fnFX=SOAPVUM1!#oOx zbJS`0l;DL496x|G)%y*KyIl+)XUu3gcd!F_O-35piK|g7D1g+u_uNk0s*y+#IxaRj~-;b%OKD{YjN zpx_CdvyINNpTI0U!Hj1*nYQOyxX{B=UQ+>ECm;T4d;qo}c!?WZao%P+&%vk2E1i66 zn{fd4>vugY&giThKCRyPMQ08F-NVtdI;(7CcRUND{tbMW?6W$PV^L}3tj-vlyE3+_ zGm~G{nYJ+&4(nha_CysS!p>F()J)$azRji zI$o7dTN56TRcVIX1S@BPA+EFUU}6Q;3nqrR+F8|!gJ7wyHZ03Q4iS*VnOUoNxi#y+ z_^Qqc_$^<{@d;Okr$P@)e072bH|)r0x%J=!67=vFg6LsCV1Nbrk@<5`i`>u6Wp&_& z#U&Bkf+B~{ET>cVn2l3kc|a?&!<2bgF~GCc;YK>#{GcB4!xU`YhaYaBqe~xzCelI# zF(|CyF!94a@x#6c3Rw+$SjZ3uL&C4T^da<`1Ven+0Yo1E8yPP?rRd*(^XO8zNK9*}b=ktNC85tHGrdPOw%ZO;YSC^TMc)+ne zj~ryVZDk?VM3i}a&m+^;DP~9#`-&u%KURxdj=*qI%f-HU&3T`K{2VeX^@Sn%<5~l- z@0^Et&Kdn6keMhg*Z#mtOjdeImHrs~7c4z)AbuX61AFTN#nqtmoyGK8?<^$%tsGQD z{;tr@V(cV|hVT$**XB@5K8+cZD>Ql0WBOU7lVx!V(#}}WB9HfE+PwcUB(hDLp9s<# z&j$PKIA@bEuFY4@YOvhjRLM65yH3QHrz@?qCu*z7XQlwI7=My0I?~pI6UlGLm*VCj zM7rU_&Wb)Wfgj|eLopG?PQef8{KIr|RP8dozX53Bf79_Nvw`fn?tH zEPU+VC}X!rjOR;gK^2$$u9E-dsMKebFd+@e=0B@UiZ2`44i>+sk|&FMjL#~$wq8eZ z^3jZ6HYHH0;`njoU>)kIn|mD50j||Q&IUiefSvWOtBo{03O8BQ?EA(~$Ks1Zr^sfUf7x7Fb_3q*1 zAAxmIUqV4w$MMk!uJ|A(Pc=9=;16Qruqm`yXDmot^;3aRVq3RGL3rbsd|kOanNgwr zqFg+p8BZk3#Qx=E4~BN6U0Bv^x=WI(Aevt51j_YC)BF#94LPr|>Gmj?F?&;>N!(&78W=0t8No)fK0b^s`ytxweaNb@iO52n2 z$~f5JI%f4ujyw7;cb`Jpw`iI@lY zp52FRak~Du1j5*8M0NRKU-2Q=#g4dkkq(-R?<_%68QxSjPXqT_&eQd46Z~Y-4MnqK zsT=O^oGAJs;fH~3l~$ROYH1|?MJkfx6wFnEnNg_gbtCaPF`)25zz};cfFZ7kz`yR- z2{yX8-FP9vwI6t*agli9uyEV<^0xY<;oBYqgH_fO-8 zsZxjfkA^$Z@Cnu3&m>CT<2v&2eox(TLzfj#qYEWTX6*t0mzg?ZDLyIJwpgk=nYOP=VhSSINmG4u0@A!i*y)d|4J-XgOh`y>7_oH-$N4S3)rk9-otsH!-8|(B1A(@ zp*Q(?i%{%x%HvTyHDF$z@thuPwrd=0Vpr+>sK=G$4G>8CXgK<#Cjxx|-$obmp}Z#0 z7cjn57Lac>-XB=fSRevz zek;GVXqp4kwc$LmUy`pY+T{RrA3z^Lqpb1n4+*pvVO@1LE=mD0Z?%v=L_FE#VZ_LC zvmFc?XaqNE{9%#aW_l*B86Z85S8Bd!OKMX1c_fMlZ()+qg5a|~CPAeD;yv*36?~qg z72#REE8;qmH9#P##>Ex!oVuQkVT4HkgQku4deKAXq(U(5U@FW!aQ@mNSVFyYdAJ&3 zP?D=NngV(#+=tOJmB{FY1)GIY#iT#2#{TssGE&Cxsg45S6N=A^#QI0ERPKp z$%nx_KpY_-{>wNLn3G2PJ%}TGlWB~sNtkF%2U(Nw$@w5oA{{LW;g|r3^sIkwgAV2* zP*(zD5(Z1gB>(ej9I>H-(RRQJ-UB#vL(ie`JzygN12$IzLX4&j64#_ZK4N=dL;`vC z3QItuNBc^2BvwiqI=nx7j7Y7BVZt5z4P8=GHl$=j7X-R*Hgo~#qDdnK7eMzhtyv#9 zpMZ2Dc>sM-mwtfhBf2F?_W5&UVwmGCk7FBH@<^0b{hO2+m{n209Irxxh!LEFb`!fK zhU$km6bR~OKUffi^d=gOaY&ayZX;zu4euNBeIk-D1xq5EC$Q7oAHzc0RFdbmdKHtX zPs&xO6Y0AEJc{o0i1bDjZQ_aj>-mu(-V<&FI|w{E>VP%+`S+1Q^r1P#t|{igI09qE zlOh;GqSHs<5P&bw5CT`Brd$r@RRnE)93ed>OX4>}5IizG)L?-u2`!pvi5_fR3d&4y zCT_^?0U}|alnZ*9B2aEgL)PC{ufQozUYSzIqAesk>Ytzo$agC@se!Kjc{PE7;EyCq zI0WK=e$>!;K3p2mXolr!T+nEW#|q)%$U}GG+Br}{XeRLoGf8hoU5nW557>b!y? zG#ho~sNxaQY!na+y14T_>I&)S0wJBZumCia_5lRrayDH}={5x~)NPc;PI?HG8w1c! zTk|%COAFZNpQiEHNxK2`E37?l3n>Ot=6x&+(r(m|IhSCR>g7+k?+@RScoK;W0D03G zQNYYW?IDej$b+NS^pXd1j8SJnk-xJod|Bdj_>2?mP4lZB!T(iP+8Ts(xws2~+NK(D zWuO-DD#k_f5dA!QBEkNvE68EeSc>47+Xz&*c9~{UGNdCj8wB~cWk!NYNkMCbEPMRD%I>>!Rp7Ge^(s&Z) zL3rQg3O@qxZ|*~QR~J8TH7*XZZ=gP5h;{|OK+O?9A0JR)YVYb}8H8$%ym)b+t*b&_ zpykMS=ISBvK$>YYV%Ut3nj`j@OBW*2Y<34oGtBK+8%#XyTygj_jW3^zg(Ab9D?qG^ zHW#Nr(DPr-phHDFPpQzv)mb`pgU0u~N1avNIgpyOW*USVCLfeGiFrr8FdfMMfGztz zC*Ggh3wS=Ufat+mXIH)q`K<}^mW4?Qb)6rf>*P)R09{Ahpd*kSs*Z`lXU$h9Bksro z+<)vs>bZOMLCdT`Tn4HRirOl?lb~z$j>RSWhT@w*MB7(%mA3x5 z2KS+_oep&Ca<4JLnov+*IGwt>twmN^KlntzIyMMcs5#(`0+SBR!vuBG9_U@mFPcsg zUO{-=+2~f=I$cS4rO)GW@PD1JkWTQVW|h`wO{!xT9g{k*l0W1158y({3DyIEK5q}| z?2T!BezRH);XYg`IeB_ppsxz++*;gkudC+25bmRth;p!L zP0H_6tw=Nk;qLa*#N}jrF0GH@nH744JJ}ofRks4`gDn4jJ{EQvfIWyw!XU8Ha{Vv} z(s8s@g|^GCHS0jMBd17@5~GV%Q5HkoH-tMK(|?V+Jn%*!zX%v{aK{B5g0Tnj4V z+jbAwQ$Kd?VYb9r>5pCgKz}xv`JcLK?Vq~p@o(1psVfp2pA_FE1xqp{`T?4U zySRMhp9tbCJ$?anyu0StxgaJBbm*@6a&Ied*{KM_9R9s4LHyNbFq)g;4)i+Hp3A}p zwPXS3ztZ&0$Q3<+iIxZ~=f-9h5now!(q~-;8^w}ak;8N=Gk*Iz(oTPdYbA4C^3;La zRyG{|HwcpmX;5)Pe>!PLmoePRUwXK#YtwPo2As9xWSmt}@~W5>#ZPq(99_pEU)oks z!iUD_oPVneCAK2$H@B4t;jM7MDYW3W@Ii7qseqIAL&(WimPGCqbbQLGoRF$jTGFCg5vz-W9{4&zf31#(t<0W}0x;Viv7I4k}t5yEsSJG|6bMwha25@jq1;4N*4hWtRXXRv^#CBNg2`Z3>(Md z(eB957``xhd}7q`ZnQheFM9yrBl6%sMq=F=FV|!coy49+JV_uM5S2LLO~*@U)bvO|8M~m2QMJQ43wZ{79GE&CihIbNPNkMpr$+)J*mFB@ zTR&8YHw73beN{SbcW%%@1Q#44g7GJL#~idU(*P1N!FSh&Oz@W4kZ1dtBjJHB`Ikl_ zWP*_r6HG8xO4`~vy_X5b+Z99Jg$Q=R_8N;Vts+0Gfrw!1b%>h$!_9hY-m}yQ6^9!= zM;cw!>db~+NZ{dqz!t**1=biDS>pie ze>*uOfoDu)mG2|6bo$pbY)WhwTejK&6T{ef2cV9PzjfX z5&Y;9@Fn~aJ=`nc*B|SZ>DYX}2Bu?s3NOpm>&fS95O1Jt4ZIz!wlLJ^Erx@XUL5&DWTb`ELyhLK6L1yk;(lxM*G0wMaaz7$f(sUy z;DVWD{p?tG$}5paQyWOTLlFQ;%e`bJQeJ=rE`S6sgd}id!8?wZ6^?3(eGt=5HBe@n zSl~k&2%PvZzagYlEuvJ>ZUaKKV=z=rJMfaQf{@JodTvXOEA8}JwymoD6^_^d*ZGPaQ=TYz&h4aKmZqr0ScU9vOFYpPL=UAPkSk0Jq#r(qUeTyt@DmX>r*Y{jfzp>uS zEk*p2Vht?e)bD+76ZISGhJ7N}4(b=@sEzX#?YmOHG#u)>%|ca~J;4x9 z%X**Z^j6QrMn}O3<3Lttw3;*z#!&CW7|37k6EwSjD4JQp?a*#wm`}TjShqx9R(@Q$ zmYR;*!$U#k*fqh}V)} z@X6P@4+SRDhhqZ>;i{E`AOHn6(s%msz8FN>dU>WE@V?S(*A?$uRs$xO3`HJjU->1O zgUB>NU!I}HFqj(nkhY$g8E!O`rHCkD?4CE!kqw~@DImdUGa=`1OihO_rFdU#(=A2& z${S|}>lFkptfYD6j6qp}=z?kj(`v|ZTCOEq5rGM=)l#$vwjyGFL4yTPKW%Ab zsX?2fu}C9~?usP^=BBV6Ee)VPZ8a4e7B|^gV+8S_JF@17m=Ct5BQ0y4u6;HSaKa8+ zwAr~Fabl|PTs!v0AyY8S2AhF-4~PPeb_8x}*I@bYN%T&}ee^z5N8E>l#YTe#m=PmI zH?__~&7QwRgAVDY(k7y9++cwK`J&u@Lm5hG5s<}^x>FP}e8GbCF#vmIx#ck!KG2I? zQBt&$ro^=*ugDua+2|w2Ebc52mtWoo{dP1&fAJ~Cu_jJV(OaB&9E2Kx9>a4ovDU-A zbP@eU!x1*Oz+zu|tQY%aF$Ls%4M)!uR|Opb zK00mRI1}4;nrS%oLAWb^;xjD}^+W>KV;O)VkO$xqz%)rDft~v|K_8c>EyP~Plkt~#G5sq@%^HV^Yod18pI#@)WJKTlt`icPL4T8r{Q*<70Bj}n38M~K zkV2+X^7cE)f<*AQA@lKUF1-^nKh|R`l~=TZZ6dJ_3Yb5+b$8o;fy8wa;hSWB z+MexGXP*>J{~Xm8)e<40Ka>EDYij6??2i(%P}xZ}erP;sMl2bV_oc8*$>8EFsE6>9 zWHBXLI4OU%7W6>u2VE?`Fu;9~-zE*3jLfCKyRg?>N;DatvzGXQJufV8pNx!axU}fF zknE*^eS>W-i(s&1Fva_<4^4(BgMb8>+!`oDJuDenOiAe58@%v+K*)cofM-LsdIffPpVIT4yeind!Ao$_$O*SZ4k<4=&Gz?3oLMDJng5eSqL53ug z2r}DrdkHd>08+>=9?FNj1ZCMLo`Co%UV^zozB=-uQyTMqFUj9a68}wFi)WVnyVAb>CER}2+#cinwjKJV zR`7&PB2C2mJ4pD$HDo#Q1cd#2zJN)SC}OEZzxeozqWNEmetPAR`Tvs-dzOe2{WALz z=u$GB_8^~xF8rZ-k&o%^^Csy5KFG0Nnv$RTCt?Xm?1jL;=TFLX3S~zL{s8!}pa=a{ z*tfrr2han2Wat9o8@(0(-y%pWeFsuQaRm;RUs2t$mCUCjr0ysH7J;wS9Xvk_ zn}mMI%V<5gM@nnZ5`AD#PDw>(%zpLtP>rGp8*+Cl5@YtqFNMp2h%s^$3yHC`{oGT< z^+|v~2cZD~BK|i~QX7s^DyW8XYxq}d@O=nab+nXiDgMDW+U;h>g}Yt+ihOOL2~cht z*a+}ma=NVHHKbLs1P}JkGiO0@WyjUMy2SLIilG2d% zyC8J5O;8dL%{C$4Jb5?7&p#Qob`Ro<3&UIv!5`pPDLZ2R@=?nmylZ@&5xC<) z)1-w-u*NW9W_;orYFL!@#f1UyauW4-X{6voP8~pM>L|qoy9EOLmyB=wB}9GSn6e@* zcH6pMIZrOR{K$2{d)itc#$cC0FUkP!!8}2^55&9zAe0T#yaA(t7X#KqiB zON)`xucSM6JKr*$A1i}Z(8r|{v-Y@Dvqmhii_my`+4M{NW>{lLgv?L@1#@r@Ig5tLu7@K5_=eB_66%g5B;V#Ez&A z@mpa(@8OAyi>n)!**DK1B8dQmz|kJ>H7uD5d*4R1(mG0^&*R&oOs_X5Z;JNx^-wAG z)e$X{YwrmhQc?z#7?V4Ah;mdWA!p8B!5-{lLmxMsFcu^XIWQAE37Bbn^LX4z_{Kn= z&4oZq51fzGt{f^&gLWVAI1YfH3rwBPX_M zfnX=PDF-@_1bZIa*rcRF0RJGI_aVjL#ih2fyHjFm_prmT;~HcWC+1n$h-qT#y`e%= zX*UnUo0vE;v1urHSs)6#*dCyZG5rA{j4A6v#KS=yjUm?g^g(^0_q_nao~A<}#dNs8 z_VK(Yv0n7$6oX^9VMPL89SccdRG9(7$+eEO8J9RQ7n~R=@Our5i^P+VpZQrt<8ifRK&9z}8U`}zwSQ3r4J68qZ=82{S|Jw&dq{9^b zIYataVR*?!G;zDrzkj||(Z2-f0P1(HqGo@ZCLjD&3b6CgMOeLZcTIS&^mc*~}_p`$XWN!%B- zmOLO`i9dD3>yifZ+dJuw$vYq4T2WmlFsIO=6V)Md&&RjXdAI01OzXE0?2U|YKw84GhDe9!Jf_-awv?0J|pr z%oZeJfv$GySveZi;{SSVg0iqsm!<8ef8tLhdBFLqh*LaW2{%B`S+RhL?n?dc`E@8i zj3`zxkay3Q<@T(fE7~!=vF;+}n+N5K?ScH7&RUAIYEme7J>0f%n(C4$-;ak96N}w) zNU4HprIWP5rCDdcE+*DRh#T#pm%)vSH5K70&9>LLHEjosFJ0;2INYx3tbOS$MJ_*} zMHEGnIh>FaLY~PMpz_#9Z2lr zDaC29aS=M>?FbFc-Gx{NN9qc@CuXFbt{&3Y&x6cHerVCu56lC+ zz;mL~IrgVPc1w!Y=8z%!A(a^Zey!4Z_l8E-9fW9K1OU6m0O0rf!4g=4_+KyHjXblj zH|kfxD>n%K{RKbJK^`3%#U}ylTRuDOeEbtgUtY#ws^udT>3brAaGmpSq~PDLRPb-e z>T>>goYF1EP z4JlvZlAS-SNAPcu9eQ%#?9dKH{~~iJojS+TN7UN54MpvL10!U%S^~!H= zl&9)(HIAiaA=i7t>~d$5;(FcBj!HYv>;%_K`JqoQ!*h($Phaf}C?px>^?CZ?nB&exQFY_fx)$N)1%;cp(Yg+E$o68HpcpzoJLe{ z+WrJ}bG(Pkb$kcY3ndPDZSoxrj{ia#Vt%y`Q~K&OzTI1fjFV8WiR;CmM+50?Lz%R;h_x`KK9hEgi_TEv+ z4}3NCV?g#+U6qvA+(l&XW0m~5s_@w&M8pO%+AqTQ7j@^_?l4 zUn4Mn)Gg_c_b)$mKB(S2vKb-fmvH=0k?Iwx{NJ2=4*osu0@0$hc}}!0v{8 z%oOoUC+^PjQW9v-RHvn#+xs%S-t}FH1019j0~|94e3v`b3(-Al!FOW8gR;PHM!&App3_?;G&zg>H0#KO*q1b#O;J49tKVXShn)&{b zaAkn;)vn_7Q(GjoE`abQr4-@Ocy%J+S0z-8T^LEbhaaIhUygbv{se#{{z`M&U2?== z6Yoajm1d}0ZFeE+cTnE-2f#$#B~S*``njCA0L1;m2YP84xB#f)LF@wPk7^yzDTE2BBR2@*hX-5&j06?(4-kCxxJ?()0{Ux<3 zcb?Fd&vNM0KfrvYxzWv?P>qc<*k5@oRVc;I8C@TMj4n>A8YQ@Zv~y*!dJ;HxcVgxa~*al*6osjOmAt#W!J9v}< zCm?UdPLQ@3p?72qIfIU-CClR^OtT`K?C`C4;Q8;_m!FY^JUm%l%^fOT~kzW zc_y!@V9fWLIOhASBJHKVJv&q1T1Lb`_$^fY)wi2w>YK}m83?}xYf+J6K-RHLs6b#Q zA2YPK%d`sJIGH2yl#@-+q_0=3a0X;CCEilu`+V#$bfI3XSR)z44@W?Y?GnAu@BfK5 z*BQhRW6Ob1k3OpjJ2vb&bT9)>Q<9xEq?m&!_4~jR;`i``xWl9X3>Zwq0s;ouf%JdJ zk3CI$YChuTI4Cj9pd!W~`XS2xTn~kUV#qcQB3*|prr;hC(MH>9Y?Kiej1$=CX%s+n z#$DJ|N2M&1!!VUEz6+=ifWEL9dpLRHT`+->9rV{tfCb$=?OI_uQ_X;~kxkT$)`MzR zKCJJuA=C%G%^A8&vp)?9n}HbXV@KjoDP~Ne+*Hii&x#pC;CsLiTuH>30zA46mIAI` zTnatrO%)+9i~t{89ZLbtKAna^R+`#GBykVy{%Uir{Iu1IiK=GCbTso#t4RIW00Dddn4_&i_4&wA_%y#GKxDX8cn~NSqu#bEk4Cyf@f)QKyQ)H22KrR^1%YY zN=Q35g$oBb#9kZkf@5*Dq%OzyFk|bB%$Nc{T!3LHgDq(+NE3P~gn2E9BCs(SqQxwt zgi*-44=v`90Sf-r;UPDq#VBlmaxf}t5&n6UbdF~5{ej92=>367Idgpo{$jd$fM0In z2pYmZ<-?-3gl@LdwtFuWq=fkttS|-DcOxbDfV7AQtgy<%7*96S4H%V|sTTrSl$2<` zhVD1OeoWztVrcL#P;n#(6PCIH9swV#M#on`mEMNL6P$4it&iCtg`H+KDN%ovlSM}-#DUgS4AR=OM}z}-!#cn=UMtRevvO7I#` zt$5%NF&bVKfz^`&2aw5~H~_%9&9RAn?|BiZMFNZdc^cm!{7&I6ck^&Y^`f@BbcN4y2_I!HTe5zrBk zWI;N+|6T(Qv1CXJ_5ZmBRJZ^PPBz%#wA1o=sL&BP{H1{DD6~0=<_~a$E~>IY&{|ai zWV*cP?IK-43xJ$4a26}rq4-Bi02NkKps*S$xL`ZG@nx?_zU>|2%W|<^zAQz28J~L# z9vtz*aEwUYJQRAQjlDjJe-%O;-?^m?KfxYIBp2ro96|&!9(CGLi$MJI5XB?-mNKhC zPhk`=qgIJp1bqlyy&XsZYSb!-UxF``AyKMDAje(;-zKaTByuD0L;f_k(~=6I1v#x2 z0lFisPJw3xekiUMGOqT7k^OWA5yT1tf&915R0Q#rMS}Q$DMNkU02;rH9P-pl8UUtD zD8vstGZhWiqYL%P^gv4mm3`@=qQZG~6`qbneh|el_qD$L?FMyULcC1|CRN-ihgBg_1gn8E0|lNsRGIlhwa1Kb=zcd6r3@z+c}7@N7yvhU^e0OS$w*hl9%cPOD*$?8D#ZyJhZo`L8ObsiFiJxfDjUduNcO6)H_qR+x; z%+Tur@U3u$s`$zyGDQaq1$ewhFb#zGo@lZi6~qrK@O?p{Y+6&A5D#|0kH#~MGEh*z zZH}v=_D@bxzZeyfd)S!uiP?w9uW-f`qr?L5Hhyd$PoO3gH4d+Muhtjt+He(juM9$j zca^#Z!s_HHMRBhf;sWrWY;-^X5wXyd>Hr%4|HYgknGS>ylP8S%zeGI{Z-C|aZ`y3R z9UzHl1?`*>crO-poorJmi$R)+dnrtOS20h3rvxZU=^#x<95w)rln>ChOy~m?;yobE z_@F1Cy(8ym=-~z=i@y*9N~#XX23^#|gKK7Oh)iD4dm# zWt7_G`y6F#6^dOT)&T`G;60cCO&r%kSwS@Mb5Z`FMl^AsaI$3vFpp$IHXeMBl8;UA z00ylenAcxsB_pnehx9HtULC`lX$`HyZ6oAoFp%}Eyfni9S*U|WQqqkSm?p(A|!W_`bWwQ$uz7MWc3RLeE@oVOE%_Bfd2a&f2EjU z11B`*DZvIjKL1lpne?iL>^lO2{yS1bLd|Bl?~uo5sN47T`0Sp@d8y)xmCo{3U#^${ z6#zcSBchNzk*H$r>goKGyOn3e_E>wPGCQYa14EBci2Ip5toO)R=QkEtsvkH zK1+o8q*YccyjgIzN&|sN2*1xp7RJS*J_DTZzN-#Z_;YCikXC!{?IrNcCnpTRoSBKD z2`9ig5?2?mk;3ur zel8+~;c?Mji^KfZR^y8!UpS1+#O<=0K;s!4v6{X5apQsUj_(n_T+;tBQ2wFD$x@542kS=(MGCmd)v| zjhDNR?f+#(d&f-E>R!>+(LHB*$8lE2fo+qH&W#_x^56qkPBS|WK6W8zY-20oTE&NUJCn{5iATiG&ypBE7ltA9W zQ&_TT0#6&-W6UU9BrwfQAe6uAWVOtmOLSDp4oWdy%gg;8V6}IkSb)yhBKdZwJg9T( zT+^M^a)O92MQrm@0ef^V%d=6&^&6?O=4PtJ-oW^qZ3m9qW2wIx$+R~!t!(%|2kX~Q zjc&nLB$m#a;F;rFcqQHl^`M?LJ&RK4X3jUCLSl~G$)bFeZ?&V>Qz^ad1Qwqk5f7Ef zD@4gfqF=!gu$o_lT&i)taJ9mg$(+Bp46&wFg^)}p7SKea|IuclGs=95f(l|a~zDK zDhDx~p1*=8!TGJ_C09TdL+@D&SI~}U{qecR3tE8B$xXw(c(W=;2baJvbSqI@<9O6z zY{4}!kd{iEocfzCuG~jgw}IcX7{n1X!@vw78a+T*ZfY zxvMzXXJZY=COF22!!*5yXRI|a@#ogye%##Qlxca^q$;|Y`bFK&8XmthwNrDg*2J=T z%SR^?rzJ+tTfBVPNdqtEtlqqw4;q$uj&}?kxdJ&gkxliFd{nLl)Nj^oWkag1RCfrH;W^9abu3@l zHShQ=XTun4;NNKnFFg3*LPy7fIbFwE)0__cH-1kx%k5e+XRgQCQH&qO#TX`#wok{w2TpT4 zrtK%$&@0}fX?u4}+j~17INraUE$=v~GQ zQ`eB6^{dQ&b4D&-a#&Oz#>JPXqgM1lri*_@nVE`A=oXj6*g+6G=E05P#26bu9xf|m zgAuRB*kBf$$QsR-EQs6ltDtS~sFICV3+gFO~C|8t)hVS3i^_805CpGI^V8 z1I;z8VJ_-&WZXquep}D~QxiF82^&y}k`E*Dxe1KByw=a52=)Y)F|TFm{Ix9p7tTMf zsa&@2-?aPiu5kBe(SI|x50e(WlicHik@4q^!3!5#C`sNjfYs$L;NofWn;2mJii>a9 z06)+9+wcsq*Dx_lf zmo?|CDa1dZPWOFMUhu6P$e<6Pr~;K5sLgGp)Gw$=U_H(Gj~k5#qXUeU(VA&i2mX5{ za=?ilbGz@OCcl7j5H<4dK}omCB4ZuG)80WM{(e7s!5q|b^r))!(Z|kvkI6`OP|LuM zF(t5jE##n|R|{?X9D&VnHR9t(OQidmh_Zr2WLtQjx1p@sb|JTYlg)2O^^xX>G)0UyL&S{$l2^r zI6UcCCif0Ytceabt%2C%<=qq?o=2H(+3;az(BqnCG462wC%@1nNyW5|o~ zE^J!wviKKegH8KUydj)-8PaxO6>UO|s>@I#2p@EDD@X?mr!3&IKQrD#QvTPV4%nL^ z*#>I;@o&a@4^05mN_>H7{XGV~F&i|!4)3|mT$f!ev6*A0gDx=zz-uW1A|&N%O(4lqWcJ%$vw zUY|h(bAe|*fG5wrUM^w2wo$JH3zU<@wC;N~#~8)Lv1P3-Tf4?3o@mPX(dNATIe zu*K;EMo`lXPHT3ZZE!e4vVBC&lP6#bUoT^cIZ<&4-Td&m_6Al}n2Jn8+u}o9uLi}> z6JlXCZ-7lb_ZF+lp#WQy)%XP_uC7P^^kf-TnZ#l+o&HoGVlZPL*G3 zK9wbYAAq4Ge}raYVI(P*EReAWSHiLT>riC_$HdDi4Zo~8OWt!V4PqJu z<7vowm!C>YaGOz+|180dL5=3*2+PYR<%>AxO@d@-Ii-Bi2y+{kpD}Sw89=e8S@56c zK<5yswuRR~-zDOwjx9Ggm0_+D$7uZ4GSR>iOtLFmjJ^Bq92@%$m**xcyo~}r_IL9t z)F-d?>I4jx16fI(kbg@K_S`xVT?#O2g0G$fzsIUPoY&0!Vg~Q%23ES59wAug#jMg@ z%=m(vVvAXow-`BXoW)GOfiyph8SQ+6CWXZeS*Y=x#D zKVH`_v4mB@tpo{{mmrxCu2r&xA#D;YzBsanZ7yNF?$Ov1*3VhO62pWzu|h{TO9<5H z1}EESals_CsLG=o7k`2wqlp?a4!CHtq!3-Ji2)T=`6DAD84-g@>Ye*_p{1q65)ZKo z>!AuL?(xIZ71qNQ+8{Q(;9nmXSHN$H$&_R-3j63|7j9s(v{TMP5!Uhw>(7zMcAWQl z1+=U9u{v+B1@qR3A_G9s9s|Gt(3yY(O zT1#@cV{HbuxrCy#&QRW?$wFUOt;wc>!10VuSSW12&$BXeY$8UVR- zVNImMyQn7PJtWxukxcHMQ7LZ9W4Rcg5Vw@Fo6{{G7PvT~lr5|<>KSWvTQ-!_2b}*w zS*kx1i4s1r%;=9_oR(RJ`cP$%Kf!-G3&!5cw{pZMUpjwzx(gSqv7nOs~h{#=Fy1UK0JY?z6~Wx&VV z#CGSVR(q~%wp>+m;98z(hGv#Hl4b0ZkaenDTqdA}8z(U;!FCe#o0AwyN$r0v-@G(7 z3puh*X0rVEBq=**F0X`7n`uMlkduS?&Fs-CQjjVq&$9H2wRUrh1;ItYb|WeXpo2g~}9 z83Ryvad`_pp8Hs}eIM;-?^B4w9{oOOUH7pBN;GE6P}{<|4_E)Q9OdQlL40^Fe^(|B zHxPiPs$gxzSyT$6WFsUfiebTh;6Qa2s$t3NaF)LjF6Zf+_>7e?G%0L^``|_<&M4!^ z^|BG}gXTtPNjZ#=ssb8x)@q4OI-M1}32~q3G=n~}_?O8^VgNp899(EnL>w1hNNcpA zU1c$z2>*5=@24jw^ebSKv5~ZF8Xy(^q5s^ADY5qg(2d@6c{&!14%o+=+St7Rx$I&X@K(W%77l8ocs zlr~R%384TuS57c3-^B~=_>6pO1vFh%1Z&syXW7X9Xylg~e8vmW3z)1~36G|D`;4^t z6;i%cP_{0(!P{_yZ?gS65WYvp6W8@GxA#uz*Z1ceR+Rjyt>B_s6q0Zn`R3Zl3TWdBX22qjT}nFD0nYMUtWqRGqB#>(Suo zmH&78v+Ww+J^h*du!{PIx4KxW!56+hKd-mYRp<(T%}r4Z7RK=ZN`JPZA34YNq(Ad+ z8f4mkN4<3VjcXZ^rTk|SWjxWpI(SuhFmSm=0<_ptDbBAIb(ydj7G*?YSJ%W)18YVt zR9<92tFe*;V9uIB5WBJkF7a6A^5q%{pLoYaaKcS7@+ZTGcudP+|6rS?TrNLBo~Flr z8qhgW{UOGOoRGZfs&aGv3H$>i z0g`Qy@HwUuL$C7@wlhG=I}P|8r(nJuc#7W5**THaSm=crZAC;*Jw)4ixzl0I@hmmItb;GnxyXo!4?;dXP~IHj7F8ZJ z=1C0_4!>ezsI@@uv(v!~-z21$&>oM-vrfrcQ>JM8UlXW6jam88NPH~BZPnsD(PFyO zhsnoJ)lOv*_*SnyU2KIt`lK>MkBqWseKVP|pP>-lnI);09wVwh>wYsiA;+G}zGmVx znLf6fq_YYe4BSPv@4v-d0D7vHdThsJaq77UXM^~EY8w3C%fv@9_Pv&TY8n)ZAk{j* zNlY+p*B%isCcw&;f2CeF>QiTU-Im)z2D)-s1lBF_L zuFb-nvy_}#ChyhcUP)umb9C(i1G+CNpBqk0qROVc8MG7CM6^)TxyA`9l;`moD%&-h z{2_ri+n#X=iDIc^_0G815YHCE7?xy0uLZ=$+MbPShRA)^AxeiOxQNB1CnMfJXp6C39KlA7KAjke^ z|B<5;$3jEQU4e9ve=%;6(P0Ire;J9*`%3xtKSx(Xm01nXW$)^8?LU7u?n!Cd8$Y;2AZMpo* znfx-{!0{Rn9gKt(tG1)Tv}cr})OyM4a=E2BHm1UOU_(?cr`vRxF__%mFRGD87{>13yN0Y!_L~G&kdbk2P0Go-@%A~<8V?`^)F#3` zKmei3TX7%If(Xj-ax-I@0w@BwSahtPbt{C{)T$(pw?py-l^%Qz&Eb zbey2?nDvw1$$M^;r`htqH_X;Lu9Sc7{XYipY9Y zTHT}4>Ife3QObQ3KhH7NCGz|s2bI<1azY(XMq`~C_=gbQI75z?R9n5IJeaq{jbv7v zjo8rq*_tfN>1R`!tE&9-gS7<-ejS%D_b)-k_tuL^n5|2o(vG<cVS#$bi=7Vb*?rLt_ZAjHS8bOYG#}c&))6lP>VBGj9TWN9@FHAbM;lb zL1-4>d;I%oCI277-ULjF>Utl(OI0t`J=4?Evk%b23^2?vFkMS8#eje;3MwL~Q4vQr z*=7{kL~%iIiK0f0ao>zI&^p4 zs=8J6-dpFM_nh|}xtd#h70`SXdE?;BNaD!Ny1b0qaEJ9DxPS5L!3c$JG_p4zze6tXb|BhOHvKk4> zYBc1$(a_KNK`(a>bqFt2fem*n!y`}tLOF|#}5Wo0I#!m>C6fq8?c?q?l{_5 zS zArJBNW!Vb!S!?yST(bzUrm=u6^5b)H5G~|wseZs43h4p?-U0m3bt%K=(G|U^CFb&w zsJ}o-|UA#Lu>#D>wV<;rP45;30gkX4W2!XI!K>p333JR9BM2? z@J=!E?E&)zV18&8gQm7{t_Cl9C5r*?*gU8K*Fzj8@=(_sb?ACxQeTvU(6#SF6kH&; zC?t32z%a5?}NPuO8?v>3#fjFEBy2<{^(`B zq2$e~G&d$b-6Uj758N+3U$yhWlyf>^26Mv;D zyi4b?ls`WK=yHCf)y3C>tw6f zI6l+~cawEdvl!@NT4}T{+Z%VSy2zhQTZ*_Nu&-6P!}OlVH#cwjwh3zcAb|HRiI)`N zy^y!j8O-k`_>}X&j`FwrhJsPpaxJ#VYHZ1RMpxo9Y{}xD z5Z1jdIsdJYwP?QX1LqO0d+Zq8ymplSz|DKFHZJQ2@vT2#a>sD@-iiRa*uh(Kcq`&f zSp>REK+j>f+B|^n0_etkL(I#HGqh67k_h0$;&Q#wVrJJHY4Z%kF}D9h|92*F4W8?0 z0K>z2Uzt2;~J_ILw#?KrSEp8;(iS1%bSP=LI81 zZ5ZfpNIL}av!I>=^x=QpH(VR;o4paDPC3#r!(@I*@FJwiyf9cz=Jy1K9}e&jj+-_# z@2)p$V8y@`;CoMr0Of^JzNHlx0k&#C^0ffw^Z?UVi%yWWrE?oDH?_iWs7K z-}o3dI=w_`FznnDLbHCDct81waQ^9@v`d!Is6A*z#&n?@ljZt|Z@nbV5BG#OutYUZ zzIKmxiy^XzDZ+$)Rkdu2Y8fWa-V+~$D!VVe5;_O2gCSCG+M{ivX6*x)Y}^C)@Sf0G zrnTcmi+`fGi$odD{rf%I7Qf9CXtV#G@LDF?$vv}{jP~4GmY8ybkniu&wo)^GElXhU zx&pSM6~q)nOytTb?|PfTrhSpfB;IuhwijNA=+VdQS@ZbSbQX_sY4yX<%-G88XXU5&!7#wFT)hIXrl?{)P3qCmp$ z2aW=$JD$@XGPLt(YeTihGPa?Dd(*l5gOaq58K{!+m|-R+WL%ogJA;=7DGcbAc9 z7|r>?hiaAK#3vhdlu7=*e8NDoapGJOWpySfQP%6je9ipu`3y}^qh7W-LWfD2&)=avui6}mdx*eRD7PRu7x(RUCzAFZ-Jz`70+;Q2Lx9xO07eslQ=pC5u(s(aY7^&y;B5l--nfs?^I=Cm;Pe z++u!u6b{K>Eyp>7(0ODm;$kv4;9@>sqrYd!<`ez!b^dL{Yp3GUm44YL8*$R+OZAWF za7d5xu4f+sGr2TDk?EhpRg(D>PwY%QG0u^W9hEOchC4QD(Xw7?7+m}q@uY}hoCKLi zczIDSefBe$=`JZ#!YA>W0Z}^7dQrU?`l|N1L75oxny~2gg*G35b6U5+Zx9{I- zLEwp>cPeE`3^uKA4dh}du~w~mr6078WDKdFqA?2A>?T?zQrfoc^adj?jJ7y_u z+n~uWU!iTqcz8tMf@bms;FOFRC61zgwUT3{$>Q#IUY_+Q3*;+l@@IVa(ohG&c(!Dj zx`8A`+=qnBM?&TSTEtK?!<5RG3`7Q!cudHvry|~8*046mK4L-2oHrbC$exy&cJDD9 znWsSQMAM{1E_v)2%0TL^Wws+nSwnaP6=nrp!~n~I1R0fL{%=t{g}&RC;P~>-2;rcd zYprRCpQRimWT>Hb_+oXa{~tB81Dh!Q2uCe94^)-3&TInmqjHNxaas%&=^kM(U|VlLl}!qEL&eB@K+pQmPqD=9Z$requORtoK|rFO?u^dR5UGgF6qEZVrl z{6!Qsz92}H#<=-EHO){w8@CV74T`LWw(D2`zp$@BC8c91U9(&f_Ns2%es%^4KK!AB zNOPbcJ`ON@!+zIc6g5u8tbTC-fC%uE16Wv`3kyDnWpcch@rW$!aE}hR#V#Dw=qOr;bfk=SygU0CVV8BB3J~8>d3geE)d_q z2+@BNA_?NldNS_B#|;vR7_S}*5rG<8g{bqg#UyTa*9=6W_pv_NSY<)ltnlNy=&Gw5 ztj;S$sPxcOcHlYs-3ud6&5m@aG}w(#=83iE{V2$liq5JO}dQHqJbEo9o_3lJ*v z{9MkPq+T&Mj-WkNZt3~C(lQ-quqtr%!dzLNz32qiiYO=SYCb}oz#}Ns3&i_X)p9Fq_@ys2}q%_fd^}Ux=F6>lXzvJQbOCkFqFGLv3ntt zcg|~HYVTf14u5C&!Z2$^ivCLrYjQ6wY_zgM64~+6LR1iVYJxz}p|k!-{2Z2`9TWqM z@P4lV7Okp{mlmQruO(6v2?E)5p4fY|BXt0NbP*B^Or)6@8PUE#Q~?-Zq19m-S#Pgqc1kA4(WzeD>{!H0 z+w1u7oHYZi??Gi?ePj0`hlw+=zP~uO-1^t2QBP)x0yCn&I5uTHWBPTk3X1b>&S!9b zsG%(vV@)TQ{|KQW$5bO({9Yy-^(NCn)vGsO)?sTpNx$sXEtR21WqJM*14?L2e0{vO zzbc^Lc`Vqnv?m4_6RUC&q3l~ zLE=Q$CABrMH$M~%q!~oez&Ueo`fnr?b$r(py5yK zkDV#YI0*Pa$t(Ul6LDh(YF`aXMS5-mwy^J|U-F7S_CCp=Z6FymTE|}=LbWZZpdrWR zlqwwyAQ(dz^TfA^$j|4`MFDLK9n9`mt?dY<%vYG#LA}mBmki-i$mzp}=0X-Ne_V*# z^Vv5O+6#0@(m10lF>w&ekR&BEx~hb}2nOo{L;JFKD+>oetG;=pco*6rgSP1Sax405 zXblTtE|~W%tFTb>Y8z@^RaB~)SHG{|`!6f4s048`DDmQNWAermNd|3C1^+lGc!I@Q zg)@lPW+7^DX0Wipk1J?l0o(iosGw!7Ly>slmMlV1;aM7TCrcKgM$gzowYkxfl11g# zZ=RIRI6nyA+ZExvepxtaU3X|01S@Tx^n0}#j@}a@>B99ZjHLDUp;YXuWKqicsSMhU zE5Z}O{pb9B6AuOZqSRI4X4-e{6zq${5RkL3N6w-W6TQbsLCwX_I4LGFu&vZ7jCZTq zr*&IgFuK@^y39W3i|D<@i8P=PhuDzn5%!!{-1A?Rv?s*P!1?0+NGfMa3oS~=_~$2Kh78DNZx(qgT>7H;#Hqs^nE|b_J9AZnQF1umZ{yyYaSM22lwPvA%ud(n2-d zB|MqCWNi4Ih&*O0Myc^mq&#<14d&p;9rIJx;;BADRjd&j?UsnlNLWxqJ2xpG))Kp7 z2{|!IE&^0Ghwt}(Omvj01nSrA*$pEGt)JamnoaARe1zJTYH#*xxP)8wz?+DV=I zyGFuj(DjLN$^}ili@@x!qmY0NVTGK>FPI!~O*B$a`byg`EH2bTH(`^yB-gv7p#^&- zGPTg>=L|XFHS`&y17c|K0y$YLbGAslw!AN5B1+d7rO!RCIK}54kIC1UVQ3h?GT6(3 zZ|OOMiz{WTnLTBZsPFc5Bc3xb9ni?gja(%4yWx`~2kOP4L8d!$QOS<#RPM>@ww!tW z@du(ZsJWw>zx1>Cv+&Byd6GTL*`gBe%b+2j>&K+H_DQIqMYLx z1w~Ak_0ep!eB$lUsG#NVg^mDGEF~uHEdBLXxQSzwY^}|TAZ@Pxe`IcTTG^r+!ldH&5f%3{${eC=2ad|sFJ985HpYh7%C{24|M z4Ij(v4poHkbT9Ol7@N}{stChKx`~!_5Whi+I20x7s3_1|0d0m=w~~~IVrf#Z`J(|D zxKs#kNG^{>_@+h3o*h$kajVrb)G5hfLq6a)8;$~&3R6lUXRSKg5u=G>fdE^tRz9GB|M+@6P`s8nJ*~qZU4%DvzE3$V z?_b-agb{MtWziz~A)t@GB>tdIPifa^<-3-cQ6KR}Ah4{2Z=O-tlE=09Lj=GdQt+;& zJ&zHJ(m^ypAdw(=1gGq2)>`nc1u0ojM$o$B(qBmi$~Ox2Es5$kp)0k<7e1TW*aQ2f zyouEQiGBF5qrQdZ$qzYs{k*+g}( zC5_`2i!T^(KeY5MPxkDshPYgey44m17Wf4sTdDm57>feQtL6Xxxn$k3X))mo2 z(l@^HoOIn>7MO480_F>;qz6D?-me)q6GW`fCJW#Z?VGy{dEgjIs_2y-o@4ulM2IPaHO{jerV36kf zpeRt%?O)?Nq3{fB5BF$FxX1kf?$hqi`(y9CXWgj!5tzt|QVH1NnQNYbMDkId8wzqE z9d5zvP8uaqikew`%|L~FrTjD)P7W%U0%nc05)#4vBjB$=`cWQI32u+de!)<8&t2Z- zi|ogicTJ$O$jiHmQfCBwDzca++$XJ}Z|Rp?i4|SifhKMzh8-9ODg)={RT;SWLs%@# z`710IDwTMkl_6B24H-R8M#KOMQaVZ)qz6@Nx&*ZYs?d(c$jwqtvNArbilgL$E>vgE z{9MZ3$2-W%^xz6=IC5qPRu5(%QEvU=RUKpCGC%-z^-5`mKvyA%gQI*Zq!I}!%P5r) z#^-LKch6O-C$@K09F`B{dna0udGln?fNg}z(SW(JOQOq8&!u4`w>sW<0ooX$J4F%(>fhJuS!I!HrV+qyJSdI?!R+q&Qy+Wj?6$`}dd)`cH> z3OUId!sXdI%&g-e0&BIs?b8kFoB4O_5K=N|*fxa(_h96Mv(RuCzlq>kgkS*SYq?eT zv8P#!JA&dK$iaE22M#D627dK;Cj!HP-18mR8;llBl*$MA{l|i zFcjAt7Zal|^4_DwMC^YNmSY6-!(bs*J%U$@ zg4ajX?w8L}yH`&P+R0~OMFsQmU_yQ3i!Pb8emDeLSmIYlGmIQX#ChPNRRAi3eing! zfu2i#&@?iGzM(^Z@iY!C&z|O4L8f9O_~V~ZZI!_U_QZExsK0wb4tF|b^%MN9r(w$D zRs*|W_;NInw-DNCVsFV~xX7o9QpmL4K`+%N!g)ec#qYPD@{ctNCLj*OxBIGTY1G7m zK2*6s2B>(J5&%rJj2w>8Zqh-1=NBYi+M|8x#kHp#uQcLG7x>02d@&uIjZOp#SblA(d^pY>k`0HSXM$!&rDYcOR8nrJ`w^Rp1jfd%xJTgTq)FF2F}EV@Hhkfq>% z;+23u-B41$B&|1CLHzq`=_tKc{RDoWi4z-7CGacZ92>$paV)s0EaI>Wi_k}1^x^#S z%V_EJGwBiFiTwT|HiFMoYs;{(urorrz zF+|n_8qiqqz)yA0NEkB)+0x;;>`%!!n6M_j$$vt|@lV&nT!qC)$j|1Qfc$qPAz$_3 z?`=3mfc(5deggWjxKP+ZHcT3ERJ>=|%U5%{2O#4T4=JpX_laQG+Y;jEJ@^wG68r-` zPTnyJcSpg$+x6f-%FfcdwIxSJ);~}%Yc%$kJ&Rwgw$UM91yg&n)z`-a^!0=L*ICd; z+sAE0>t1rjdAE;$K?{I3C`{AalT?vO^%XkA*J!eLDJ}U*3IFv#5{>FrH*SGO6aVvD zaIb=@piSK{g>o1Sq=8vI0*T0E3Q^Y)sYrr=o<5p_{)oGAsW9=$6oQMU2>m&#mKN@R zh4nmHa!pPS{42t+jL(#sFVm&O;WqoI;v zg|$8`>@cWZ&#sc9iYm)_;K#HtAN0*2$$xP;P5U@>g*8IbtMiG&fqq?1IMdTf!%7^k zAHH4*o2h0aSD_gy51^wYl-8FhaC$#sbg9KJt|n!jaU!~@@0kWiGJXb~fxmyGSzq!^ z!J$&t6Qoe4|8-hBy;X{96)JP?yDRWYy>LXZ0#H+y1Hr&pljTcbZVcjOppur#VciSS z*D1cYhXlXLT`|hBFfBsB1XU7q^mvLKwCd@9tE55pmGB4HJAggOq*19WcONzlMM7IRoMD=B+hcU5s7i=gIb5etZ|>ho!*X#x6Ti>}P~<8rtW$)V}+GkyWP|nD9=+ z51`Y4Z%5x$^{>Ynl2wQ(cD%lUB_3QLmKZvNyk4=y&r1HiMl5j_J5jK?;(MP(b*+5Q z^$)O)9-(RV9bM!6LOd62T$vLZiDRl6l!*v$Ehvdd5LPmE@ z!RT(Z^XE$00;V1BS$oqhAO)h29+k2e6-#U70y>$}Zw#Y5WxsO^mIR=a^PrPS8zb77 zYOwS3nchfzG9?sSNGMiKCmaYCC3=oLz|Lp0232W7M&ss$g|Ek}lwzYhX)oUtrNe#@ z6xTwZmev&+W!@H4*BXz#TrkR?3*;0FS%toWHs;#t5J=nHWhCufvACAX-A5yjV48!R z;a~RD)^Y+uc}N7)Rqa!;r2Wi9-Onfv_+p<Jr_x$^Q*FZK>`eGnv+9qZO#DYfdx#G~Xaf;T;F^r?BkX*hh6D&@aaDAH znQLV6qoDqQ8~2PBgTRW5v!fl32x=HNcIV3#_IDe^^T*@HB8Rgqe=mG-n%4p)wmeoD zCAMso*jmT=wo1w+E)4frWz^Vev-8*d2}irMtQTDsU4C4nox98c`GewSqPs>YV!6q+ zatEZ^JZ9O-72JZEQ4n*_FrXl4AN@>+KO|1Pg3kA)Tis%x1+b*(&z zs^wgb5sMw66g%GwZ{xMaL2EYQS)pM8jqmhf?u z=iQjcDMObjO>}ZCjzMn}wL`N>DC7jV&oydA_zGAeT+AUn$!om(|v)zW&z1X3jsfS7}RaJ(W_5Lr5b&z>rnj zgwb6BhWU}HI!2_?-DDTODjixdcg2uoU>4#X1q_sqRNn7NXd3{J%{Bq*)qxA~wGvD?|G$SN3St{<-LPKB#E1I_8 zIWpVw_E8bBsSb6kKrU-99)XAr{)cTPE1(JLc--F_Ruy^7Q_yu3s+sH;hnrwKFU zg}Q!|!B>&<7oua{TBdIn%(7b}63-!npt2M_?xB|Rj&-(R>nc%-p>98X0lWN^S4`+B z6cf7XS)X0*2pp^k-UFX@3dh{YcKd-B2H0gXP$BkbbQ8M_HjS`))Y0F~vZ ziYYEGdNIpXV#~6zy67CONo%^^LF_IT7Y2ys3cDAxEV0h?4n7fUZFgi+`~9?Z;qwfb zoE%ovG>Zp|3-q+nD!d!fM4^| zx9`(%DiNhzexFY%^I^28CQ>=kb|WGn2K)5d)iu7YjCDy^8N?Cr{Q;Z$=Izwc$$0^IF1CNu( z@1i0XQ4FA=iCOu{GDAN60P4-x<`tt{DmNdarw!Z~3Q$sz2RRI84b%(1`JT~46P1BJ z+GCVQL5KsJf>EPfN~XsslkNz13P_FOBBLcHPQKk+SF0Fdhe}k-ZzVr09NCvy(?UF! z(AoY0`h8xly#Pyvl$cd=T3rVO$MJ)5rjnUxJlF_6kE#j%@C8Sjmwjd}!8K*wcnsD? z!Ag_bVT7XHK?t44K@fh7;}feq2k%hDDL};4FR0R{>S?7>w>n17@LCiT;*)z; z*POiJt)_|T>-ivV48VUu(QCx>fKvdywx4=bMP8X6l>H(-C?XY7_VDRmly|a*NM4W% zwjvemFN4Z*L@L-%(++Sg1zVpE#s+*#gUNe?5fE(KLVK!PMN4hJst`^(TAdWJ-YI+Y zF*qrjU^rkDaK&f*Lu04Wn9#KITIvC8@XI*yprh%;s4Qn^sJa$n*FCPS*VYgszOfB= zG~bJB(~d;OHtzTr|3xuhIsoWJT_M(+YSV_0_P+eHQSR)IDui&tCbK_M9nzsL09y@? z87U61YAWpePE6*{f-t#HGQ)FCG$F!~h+~HA4P2{)V*5sNtp@(30;o3MwL0rgavTv7 z?GX7k<<)oM;@~Ty@4fkg0Awk9Nbh!7s|L+_j~aW*zKy0($q9j5JY_nCRupRrovUif zsncWr$LSxWnsQ;SA>*ewT&)Ug5!}&9Jhqe9Q>)(xY=O3>h9v6Au?v}1^qt8#mhJ#It|LN8s24?Gm*1Pjr@{| zEd?+b6jGG;-W}K*d>YDWO|nhb_t#Q6tq5}Wd^eL;ZkPVU8&dFQtCt2g!Lf>I(R*j$ zeKHE{D?F?6dg0MB$=n*^nA^w|0oQ6)rS~AC4YWcs+tgfiG$~4r+)P1iMHH`*pAoCT zKmP;(2t2D~1Q{>Db%>`YTeP-9Zq|QNws-+o2CZ6@(;E5&k<7TwKJw-4C-53TwyR%T zsPv(5vjWvaVO=WVi`kC^L|GB|3ROScTO1)C^6g)PS%n7{$oCzaGz+)T1nLbWg?&F< z1LjW(gTWt3*?r0jHLW9F0kB3vf#y=&VR7_2pg+nFl_5o`NrissC3{CMx3|2HRz>s| z{h?WUAq^&sC*D9sE&G!T{gW_^4MQZl!Ses z2!+mSz$s_d+Z)mOAQk?p!SKrUFlu;baQVfs;Z`1jF}*U|JVNb=0~D)(%(hX5oI}{Z z|G*;lUnDpNtiu1`(-iip^W5LNP!pR^NH6^{4> zGJFtP5ls0=@TZpsm69Vi&EEg)UThkHjMy|AUQ}`UB5zANVE4$ssM;sKOTD66#5Tm0ct_zUb>z;7x{y-?n>MOfDaD5@;C@ur!h$#mt{~he*T^$a zYdR*@<;hnw>>BupsHzr(8HiIbjv_j(XU>0?rIGiN?odl-9CuUEUk`#qptr|Mg)HKYC<2#4 zif$WGobI{2(5QDX-SdtjtH75@1$!Hwjoz@I@;>iNFEC$u#Sb8zI|>;uuu&D_E9{Jg zUV&Fe0BK91heSL5wjz+X48=W{J8n}^c)D27+>1oJdkawQ0q&_r0@C|iyk?$_6AX)& zRj3buRAH~|i}PWoC$k)@0j;bSZv+J-n&^EVQ}TX(T`iiLDY{D@PKC9?fO!QvNz;%w z(GyNRgkDCk19@stS}QPffMCU-sX=i=gxcH?6wHDr&>IvM28H0K-RWP`Suut4E3F*;08pb2geq@-tpAg!!z0mH{X#e!xctsiwiCILW zp?Knc5cB|z7GyA^yG?c$rn_(D-02tBO0-Y_F7asCsLQdx^^i+bJs%&?#}9bbwY+tu zf;$D*0`B|}Dy{``zh{xl-;@PQT(JIZ&J^Z=eu%7aL&qqk(QVsihX zT21_(d+_XgESv#$;W5EOWZUxvd7nI{;7#Zv&_rLVifgHf{;xg7wW9LMd%UP2m^g!d zKw+*qh^lMp*LoGPe!n%aM}Vhbp=)oY(puu{0?mpPKuUN5C7V`o`gSD2X=|G%ORuA5 znf>}Nu^TqSaF9KCBG3mBq&{z~=J=B@!7iHOjl;nl&tJcc!i7)++rxay-mc1Py@Eo} z_(=;OPqr1rsr{4dsc`gM@JGNt zp`xYVWH3cED7rWY9yums0bN`d?m@XWyr$Kr_!55=L{>b6FX@Gth5hGG>!n6_l?lPY z`7yY+t08fo#I`#8-v{oUG^YQul%4*8->sv5XbfzYO0fl=cnv37^_2PiLl(McUQZhB zJ@aJJzUK#V&%AWb=r-Ey!t}U&p;A7gCRKS&8JwU?=5t=fbr8jQ@T%lLQbh3=7BRT+ zDq$zHNj|HC6{XQA7euksgf1oyOcGI=E7H=$`)=slvsZYyTpJ4Z(%@aDz4+P)k;Rvv z$WMrPsl}S(W{CI&U=l-Y_w^~{%k$2~f2PrOP3YnUB7XN_rT;RO&V+O7AnjDzbQDxD zxosg(2P2H6zw#}4>oFCBTUz;;SU zuFl7ZKIVNyc$DB(Ow3gLajg3w2PSz8m+_&;AD17Oax4@xVo1i0!crfq=;Kq53n!h6 zHj*Uu7b+pyXNbAzr*Z{v?ZWnakw134bY;%_8N@Md1`F)Cg>0Zn?UTely$qIDY)A?G zL*0n{xNkx-_DwnuZPMl<0UZpoc>I8XCq_oHOBAw8JTdL6?F}|TklG~**`+jR+H_2D z6H=00q$DqvsDp!BGE<`=NA)07yXQ9Ieo;cQ>;8pU;Yb=q-EZDok@W~GUXee0>(E%#4xM^XiO0^?1EPI zQj@8Qrs9yj%w#Mtyml72W}b9@Ewpo3Vl;Tu!w=Wj=<-A8ExQjTb$r#%WnoarZoU&2 z^*vF@?7Q0N+7t@Lj?RHYrbvstguXUNbg=ty zD?*Ey84OXKL1CjRp> z`4`YTlwG$R(8q+$2d0Q-@VZgPdAWws_vdIB^?9uvSX_n7erdHmi0;78p>#-t(n4NxGTs|se_N4 zd^nT93(rUh)V!Vy`B8^K^ z&by>aiLS{-iWI=mze3mEH9S_J$c^=D)>4k*jkU*uZ2>v23oZ!rGYvoI~CO`@De5J*li;)9(}Zkb=NyPsxirICGt4>5(E}9xtCgj ziv(C>e#mzIEKivo{ov8=Lb0zm!g@osT)Ukzlf|`RJ;+SvOSXq$m1B@49T3Q4tL2vM zh&cvloN~&;y%!iimZB9(rOem$6RPFk?nEmP#wlm2!~x*OA^Mn4zQ{jX%2D*OJm(^` z6V&c7pGWJ5ULvgY{W56hlzfyV_ShjF?fB8S(KgY?asW9{BVJxIt*fsg`T(m;ucImF zoqP3>N%;q?F*09dv`LT&4V<3n2|~`%4l4+u=woU1N3;8zf&a{trRW_26&2ygS&3@thQ6=DP)rpw=h^}HW61N0=n!s2ftG!0KIV32Wp(V3Ty@d;$v zFB*BaqkKr&l_We)aIJQGT*~hMLl<;~8)W&NIE}GZ5{HKu+97TW<5cOlsMI z`QQX5{G4Q@5i3XPt;8VHoxW8K6JnOJ@Zjy2tEKrqssfb9jFrbIv$v=~VsAU1@OJ}= zUPf9n7%Pl@e*~$e2T+Wg*b-yegQ%o$+J%dv^d2vg;vPg&-2V|Jcfg+-ltV@mj`mw3 zl6&W=ecOjt*zvcc5KB6G7`SBcXRR*A6??6ZhM5p6+6NnHl0<+uCBcHSr8V{;+bJ~} zZxr05fiPfb7?3kH-$S4+*-i^%JODOsKol)#5Rmeh3#dgAn6$;onw7>|Hn*dO8+5JrKuj|!tuqLA>Y!mpO7?~ir(A=`;WP)NLquGPbRSn56W z8K^_xo^o=+3V4Kj#SIj3uebpPDK$X{xDSx$BZ@*81mB`)Xa%Vr=&QrwtB)ukKVP6! z4RY`OAIOg&3BMQc2P>5c0Hoac<7V=f2EZ>;1C)0FT~oT2Ly?f<1i%k^=}Q7A57S>2 zaeOFW);{ide1bPb6z{Bb_<5LI?c~I_+wy>Q<`dKYw9W%1y!B@^kep)IlZ(aTjp1X5nP5K#omuuFra` z8IK+Ta0e8gO25n!bAj~Bos$&oa{+UKSP2wXz{`^E9k?=os`qH)#Cvt|l#N6*7l~*b z#VI}KG!U*$6mWrK&ghkgb}XTuGPeN{Z>~39omi1AUn5kQ5MM@ALbUywR93OZ#?rjZ zhWRVZpYY3_f0qG=P@RyaJRL$Df{*)0Uo8UKoACerD)bXQLkC;Pj7QWEWFr6v4=M`x z6b9k(2?3S!AOB(R1c<*2R%o*zOzA=^9S zRTVgvxH91lqTz>KHKo-mlo?PKBq_KH4JAlwJ` zYCsU`ee$MfwkKJmUXwkvi104(*|UE>?AuMmo_R)$mxv}e-cw}HbkP>YJtiGgYPQDb zkWsi26Fp68bmw+Ni>AGz7DyvC)|4d;56tt2$R5N)dk*FeCVJHMR(uSog&Ly{Ds_!vzNO$NA#T%=6 z&%^vZw;}y%ALAYqV~^GD&-7dTMs2>;t`Pr*I1;=;2+bVS3Fv(fc*XP-_cY*L?!N03@Ju}0%(03hcCV#Jezty5a|7wP+h(nuxawU`@HZVREr4c zv;g&w5@(FrE?pozt6hjrQ{V3DO{d*OtTC-=p?&nzH7%)o(K9&VSBV$38fDjez;^(A zvJSt=@VX#%1|vnjU&04%qm1KTj9RRe?3=Qe=yv%t{dTy|&;Jr09^B28xi{ZtW@x6b z7=g(H6-X&4lqVE#tZe(&dU#_4K_tOkkMsf0DuIQ0F!9DTiJ#~xz9T{!OBzqoM+ys24&l#&jF6qS?BePx^H~eoN zXRM?nRI9rK&NxQ{ai2W@!M@iA7ZD0rV}@kp$SG0$WcHGd*fLJIyu>p9Ns4AtxS;% zEJYIUCIw&@^NiKYXf1KZFy>3))8%u*9?}uLhF-z2fz=M)xDFm1B_D+0i`HbyIHYm{~b zppM^k`9GoVZMx7O1uD#wp~$o61Yo;n{A89#SaYl?Z+WwPV=rqSN{+2r7k4mN3%y9C z$pLmj&KM5&4a6I9kKy=SSEUc0i|M`!rL7T08S8GzHlWESPTD4-tQ&IJ;pvR0S$=U2 zFb{vm?92%n&ctqRq~bV!70d-tg6SOn z$6p*}si1e;L{95r6)4;n)WnEvd$OXxKgUcwu!;cj@^;+ackcGp2P_IC$- zUOv6^7}M%r-qqPXb6MxfR_8$z51wU?AHQPCK`W-2ol{O&z*(}hz=n5bXEe{}FAhF+ z_Oh7^<_tS^#x&V_Ae`{^xh$)6vaEh(7G>5c5enrv+D4Txo6kbG3$Zg6I*~-Qa|p=E zvD%e6(x^TO{uBFck(xJsVPSE;Z3au`-w}2ApRYTz^e`x@9>(k0_DGb6QL%g#Ga5R| z%`az(-yw6xDPKg@BU(_U`m2Tf;f}FO=2&p}$G<}6a$6lw7QTXp_E(I*86L27*&7Sx zp$q%ZvCiufmmV8ljC->TAI>ts0X$P>0wlH<1_)?aC15ieY(_MjIjwU zIxoaeiD_4g`rK2jD(47fZeJpZC~sl0OHdu5?Gil1lLSO;Gut8AYtH!gknm8J9{v@l zl=87m)4$^UqKV-HP*Fwa@NIp?+w?=Vp=R!DdR+`)3;_XO^R)dnXQ9Ip8&HBXpoU)f zNr|-TE8#@n)DOweu`79vbtPVk8Ei{Hlyi_ZN~0AYXwuc-Lze0I$;2nb15Cr^*fT0R zyp!M;x|%S~vQ(z+Hk<{=9x}i}>(Y004P|qRXTdQI{uOGn^Z1p#in@)0lsJv$pC+Z# zY4E#9v`KA{Gh@9OTnWBcQb^Zh7Arb#p!h^4qXcFOIsz*RdO(BDdwF-V1N7+L$|NzC0FwBr(rk^ z=sKL>9O`!A)ZTUEW<1!h_jTZ)bRBepL`6wMbTF^LlO3AH?|4lW?-m}i!7ggAY`c+{ zT#e-4t0{4H*{OnGQHdCi*tMKr!1Qa;7kom{`_D)idd9((bSCwSx|VBs^v=@%XjyBx zv1IPD4#POZ7&iCBWlK(N_$5!;zvO)~zvPXBji-5M!?5L8(Xn#*1aHr@A>lD?4rha^ zt>NHr@uxOz<7*m4(FUcn^an+w2K_y6v>3y>XRbVP*@8I@))N)%1N%!2zbrWML`)@% z=Pp^=-C!B3jJ_4S7B87Qr(xjY5w^J>#M@=&)a(eyN`Z7t=0-R!jI> zs`<2o7v!ArI{PYK7=P5vIR|$hGkIF4>CWuJ=9$apb}n1cHFxP)l&xcIJpZ>gWx0BinV-%sB**Tc0r;X{H zHs({_Fy8$oTh@7M=gCW_7n=Jd7W2JRojFUV*Ub)1DHGqIAaf=ZPHdGic15~m9Nrn@ zSbZ)2@GBtZkR8kF)Am>fFAROcR|MSQ6JjDZcFC~K=ATt#ZfhLicUs;1n{9 z4PcQ;n9JMJOz$YyuBfgsZG;(T9}m}xXce{0_WYE$=Y+^_Du;073d|E7MM)N)xw5O7>P(<$kCPS0Oy+^-BHAZt-J()`uDG zwU~#FXVLwm^5eSER$If+u6Wae6FZrFrj8dVI_lQSK^9&`HTGky$!^=uqK~u>$l<&8nSOqQ);%70w~>9p)yp>g?83oc?L3G$ykO{L*4Mlc}UYKUOjs6Zl!> zG5lV@@3u9WMe37iU6o&-K^e6@p{D1 z=Yb2v@li2C9a_9qIV_(o2>wnzcSVi8L=MR3pApdyP7?1|LjwRjPaW;tfH=SGH7GUA z#J^Jm^X@e)@^oMER9}Q<$a`gURSiF@Rvam7taBv$ZeUI3jJn}=!TNLkve_$^%^bGu zr0-%{eW(%d=uo0R3za+lSxx3ODHhl9^I1)P5Z4w|!I2y}f@>dF#9ul?cBf>X@eeD) zhcK~aNSj&s%gIU8>7zH`4&)Z0M{W+;>Cl-vq){KqYVb{NpTQ9%brdhN4(yZoG}14z zEmAwp>coFWWYWscrL*rPKJi?}!mQTp%LbYDM~KZC&daS|^ES)8VyOymD!Tjz9REciF3&b*F=E{*nGc~1xkX=1HQ%#TSUtC7jin(d`Ir@+eR z{6r%vE44pZjA8l*NnsvCD-D9ogYEoDE{^3`J#O^jD% zn;72M7Y#&7+!g)HSB-~Q4(oeHSERzZgv&Mk>+<6{Y;DAPjltFB#>iuuPVUNac^@&% z3Nz_!$wh2`)6CE4$BgqMVy6&wk&?H#{1gk}w_xxrV)|Wp-Tjh(9iTe&_!>ZIyZUc+ogvl&} z?IU>mQuijNTb5~Fa%ms)J;7b(@6tqt8rusq`ZE-m>d#8nvvPAiLv+NbrKY)o>1FnT zme>FkOcUZJsm(=Ig#xrr$b5_AUkb&ef3x^^s98806(?#&npSq5CcZdae6EEK;yK%F z%d-)4?98>gICltdX7R_NC17vXT5ZceL~OGrUL1(Am)NYK`h|5pY%b?kEsOz%A+rT4 zm$^rIqXm7F#G_nqbgX;&G8+YEDYkAaOUw}=6d+C88>BwK%;GBMh*W+9Yb0wWfr}WM zwIF1HkmU_bpu(P=+rVOS0#c4{r5*CvVFN1UVTYW*18Usc6QS#k-^A_M0XxRzB`jPWDwD55cM>4M=pEMn$3)U2clNCsT_q1B~%nQIV?^3XDdr5Swa3FI_LI zSg2O8SM)G`SyF>F5&k{82Ga)q7038LjH$uhrG57IeyGLPG_}wUkG1B|Pu#u+QCf?s z4-^Kb2XOpI@7c?-Is`&W_M#rbUT!oR0%b_iwY@wf&x)qAuSK8<1lY&-!Y<#-73__@ zTtsW3S&$is>Mncf&5vI`#)q|*;9*f%HRe`n&igK$l?_T3RNW+1;i($|@y$wgvVAv-xFj_t#bW$~OC zoHKJ+cH)jwATaU|Dv^&+9_!3mL)@Gz^eT4%mdV3KQy~Yrqynae+B0tC0}6#UUT4NR zTt;c&s1~pIOf5<1q#gJ8#d5SffLpIM$3}m9( z90=#e7mT^F)T)V$4`Fp@+)DT!M77XopAs(RB3FgEs?PZxfxLlTRmc=jcHXhAgMTik z2o228=~0&CW!cMbY06pqZB8|uF#yKlKgG+qG8`wfGJgUB z%eEJi%QGy$q;1)u?C51U`pj;YUE0wwfw@cDmLA6{SFT{SO9r#DWqTNYHWn}GUgomf za5NlY)=anXFsog9CDUQYj$z>pi>zkV%Wh=(Wo^q4oc?DP`xVnB@=FIUDVS|bu>UbP zl`Ml)>MbTAfAgbd$!fJk5V-#;r_z?C&6_zl`>^cwXZ8a#%jt zQ{a^~2<7+;tsk-ow7uigj-f>wP1n$B91OutDN)x~dr2!Tn>X)%l+&E(Fu-H5(xZby;b7e%|H?Xr-r-22{)B9jCWh*3GqL z)>aHHtqE2R{r81+6jG07j|ONMK3SvTy`gh5XLw; zY0$Zlyfx8YK&vo&+r^bcZ>Y#yHugxPM`S{Id*O#Vyg1-Y_V>C)B1?qMv~4SY?X2)l z7$xZKFcZ9&s4pF6IU5j?Wj+W`XU3mU5)VQR&%saaF5ISJedE^QD9iaEp24dL?V51O zPO@dyg&7ZE9eF*&9FxBeUa}cqZtc@l$YTNXJFC))ACQhF>v*~IXhJ0GU`j8zJ>2Z% zN?MbJf0nh_nLmfcZ>kzCXKgb4=P-*@CQdZ*+)sm9?LGIJ{7xaCs<$o2eX2g~Y~6+c zt5KgAKW}bvh9i{LHm`~99UGm^)0x+sj|=@lYIh$gx1~bQR*rKDR-qO*?{0E7e^Y;4 z^en_-5A2Lq^XhDdN3X_;;u~%6*wE>SK>fO}K;hfb3GKzcDf7}$Xk0R7epD}V@O;*@ zDz}~)>vn{WL4az#IEKY;XdaX`N3qy)Chn`p!mQbH?!^wVzA3wb8RP1;L|;CTMHfeK z;67r3KpKb9054v(_y(ntxN!$&MC*PLomp0CURB?eGb4;W8#Y$749qzrm>dfEMt3|t z@_v$KdF)IqjStbHE=5U?L4|l0`wguWH^ZcWxZRdAc~?6EYAMe6s#5VVi^FH*v>l|O zkY3%3S*n`VQ20;Pz;H^f|EcDY>ijq0xDZn-eeF-z+ z2Wgj;F$j?%YI>++t`u;|uB1ceR*GoolW_c>4^)_I(|Ep#Q(KzxC^`{$$1AaKfKOk6J^bgmJ>qRf4k*_sl;$tcE(EYumsd|OE(?lE_=uk?M z68BAht)+1e^2hksiAHH$>t3fSFIuBpJDSb5!)n>Ys_5TRa>sXJWC8rCLQWZ|aMwY& z8&?O&8dcTuUrl0iRUE&$ZEw|M1eQJ}EGwUTQZ!iBw2G2{%`LYkRmFbQ% zB*QE95Y|4#ITY4Tp{=nDmCactrisbORv^Dm8g3pTc31Ep4wD(iXF~}9b2&DnP(1CE zYkL|>;Ec~<^&OvbxsD^qxPX!?NAbp`g@G((p2SAjnHlG1wC|h5Vyc%|dJWIpPGLKI z3fpn$<|LC8;heahBiX>3LQCx_IIz>UCrk&Pi^xGH!ym&r{s|TupO>;bb^MM_Ch)yE zmpPOr{=u;{e>g6U^^m~)9)ZZm^^2a#EA2Bm&)jc(S|cADAg9uhw=5Gs^u zt8FA|=ndE&N-)F+7GD+>uW=;fI}de120HE&A1I2Q`&wj+{o@DJ2dQ)wL}4 z9tGF;t82$wpo;U~Hfo7T$yWg1JB^~5C6W;?FRy@~?tOl^Gg~Vnyk9tcuP{dM z8em#C#jy^#S7=xTrJW~?*uZQSL;A*AIW0`{#wv_w8k_M|{&-#`noI9Mieh#Z@SV7$ zB04x*SS4bIKan!)qts*Uq5VJd-aJl<>TDZ6=T!AR-8C~kThG!x471NLbnVp)Fn}8f z3a(KR5k&b~x!7ODsvL!U*Ote<9-EAI50;sS0)XltjcToTGT zJJs&gCNzcf2d$jGsS3I1&DA14?^%4`-z2-gQ)SAT({YZrQ;oGdxM;pNwevO6>4(N0nqYoMF|o~BNIr79DF5)X|v71ju}hCbRk3vG3JxUXK@ zsHHo{ec>cFO@>~5rN&VH5)J+=qn=Zp!^x_0eP_^1lY04;+TN!dYe0)pbJZ@Id$J0d z;J#O-DvP=SZT@s7nt(Ymzo$x7M^>p5;nSQ4c!`v3z!+R_ZpGwv|J1G;k!6+U2a&|N z8Lba?JFE9yEqp>|z%=utP)Fhu#(tO#PXvY1u>q-Ho~~w765(8?+-#|d=Q8TLO7W9w z4J+!Awd0L~mCJAo*%nDpXm~Hg{ncz{EcH!YYBMwKd~Y%mexq){v>Y^zD?O%$AHh$X zt_1D1P=v3kt2D1YC$$sb71;r_cTF7^kC&HTevD|?@PmG~uZXRz6I0p+#J{pG6k6Wi zTkx>&*FxQoqR60L5)X;m!m>toixHWFz~_FZ;6tKYQIC5>eajd?injyvgR5%I1KYK! zqX$>8(;w6@bJyne4Nk5#*SBitj>5*LA4+ZH+6}#fXSACxPic?zVB@A=(#BW1X`}a> zg7#V0;EK_v_na5Or=oR#J8YQATT}QTVKWn|$-=j$QisCAe<;&Ze-Y*JK)iW@2ZT0?Kiy+`^_^c@nU_8WeYy4V7+)nT3_Em?u3yp z1s|t~3e`?~9hG}}7ld)Lb_z#*b_>^XURR;qdqSm4DY1vScI_>y_*o5mPbpnUAf+Cz z^xM}|u_Z4aSVT2w5kGYC6)n1XLnAH}`m_^O$c^um!?v`V^&=JDcgkzc7dw%}3LD`W zatv$2Pk0~{C673rE87QG)LOSRYInEM%C8!h^w2GF&h3t)IX=C>Y$ksB;^V&YmgDbGsJvy~MDQ?JCTI;ikH#7-Ur}w2;_#th; zvW!uv_qQp_=0(F-X*p|CR;|Q8<&x)>h1hN97izrS>V?R@lf$01*^!ocM=F>96TW6% zFBgZU)DCU5?GXl@-j9%XM8gDynhf`_b9v;g6uW+I>a7$^Fc5~58-tvNTT-=lZBE;g z3ZD_zTRjYB$XcJ(-u)z0Y5y+ChNFzO-%HzhmVG}GfZ`6wt3dLq%_)5LpCf?S zs!v3vjf)L|%yn?7eLq2RpHIuhM|lp|+;szhD>}VA@Ra%lH*x>j!;vNd_}a%x+RjfE z=TB;}y@!eN_R8_`&H=PYZBG1cSppY*WHev~d1a)`05b3ti&+v~>XJl0|YZpH3BMS*33pFM#JC5GO+MFtG{*?bRl$z>8)9O7;jQ~_` zpxAs+xw5(BeoEmT^{v!s*Ly3)K?mwAT$_vk`Z00tY^(rNVkD)BY{E^0Igy}hJJ~$( zEcJV=2KX4`I*^L8v2T>AzyEz@-UOT^PAR9ZE+0T8VA=J9-wC?z!)CxP$gX3Fb0M0W z-u3r8d5Oe!Cl5JnZsc2EQa3l|%w&^V;Y?0)Uw=txA?)i=%=o~{KyMF6Rvqc7DX%J( z4j?3Em@%+@lSDY6Cnhujlksu;3_ztwG>m-rE(%#!d9n8%JTMC6eY1+ z`Q1k?j(0R>mAH;TNn%{>_+3JLyqynIVoDUct$UX$rhLY47J#w52d^9kOJBaQzt$oq zUw?rib)P-!JLPo{C8oed1%?+BDnbf7ee$FUQkrb*7g9sTd`mtQ1 z77V@D>qk3I30So114~qWQ}%|I!i;@ER(!BC^boKU41Xn9RXS&6#lmeN;L5c~TY0{K z)Jo^Lthi=dS%51iz?CP}(+3BO&)*9{TX{iyQdwchCtT6{ix;Zi+mfpDRh24LRRJ9x z($w*{vh47F4t`sbvfoesMY15w4H*7<$8AcTl9M!`|I2O(*CPl zqE>2N?)Sbf{&wg$Y{gf1mi?;HK~&PO8go{v3HjN#l?D3hWEvDBN;YR{v|Y)H+drV8 zM~;e0#=~QNHY+M!krfZh9e|F=a#ZgF0^o=xaaht=cj8@~bs@crbveaz3l3D);CGSb zefyBgiXi7YsmDj~6@vWi-yRunqQeiE{%wVoGaknAr%h)PRs`Sz^wmPD>Km@hRT^7w zhrHC$<9kSC8Luv^FN(wKlD5i(hkbDxH`!rGLfwE@?W^25?3xnU{g zhh>3&!>)HV^c9`dNvi~_*@3{HwlgbJ` znr*^e7xgnuzuwB$x^=mJ5Oj4pd;uYLzAo2*9`PzpommdYU%%g;?)Tf%{eFA8>^BOS zLZrZ5^TTxfI(F?Xa*0|5S9d0V)!1Gz04tkd<>4{=x=O+-Lqn6+gq|pSje;D>WN2(6 zV0joIhYy5x7Iyp`#%S8H7p|_#1-Qc5&{WzpboOvu!5ptq7& z6EI3sF4^eh>B{;$f*rV$fZ%XFg4XHNm456o;BJS^Fu)d^CZvGz(TA6?#V}U03iFIR zqDMhz)#Wf?9u-WwbjaH%jfc}Nmr~7nC4`mMkXuhm5=)yTilyf-J+wi;J&TsmyG3|a zdJ{_%Eeqpe1n?@z4}!K-FdP!T3MG6MJi-@^X1ERPDB>%%meC|@#7zoHVi)p(ruqn` zZv51P@zKW@?0SSR)5jM$WKvxcUQ%@>vlsLKV*d0V1LEA*Fd)|AzQ}kR9{H5vl97$|~-@qy)QLrQ?+Y6S|UHc;7%Nr+0otPsw!hB$WcQyDU*poXP!7}FjAm1t~1Nv{2hjy`fa`-f7x7P5lTUEDt#d)7>6_lsc96by7>=fhGdJLUzDvZ9GWfrNYh}F!le5TvB(67Z*xe*%F(VhS@vuwHCxlpr7Cje>;yH^A2bv~yWfaNU8&upN3$RD z$c_|UXJ-nPp*6TLMJD7jh1XIr>QBgNucd_YO8F?$I^be{_@$)}$#^8!Vd)bv^C}n< za^j9W4U!Xb-Ij@8XXLf4n$aepgVS|nEt!Z;(~3I@D{SCCZ6AMwW$qiSIQs=Fh5hM} zn;+B;z|zt4_A{Nyw-7#{J8w1SKntmG;b_XTlM*3^h1aA~N5VBNk6+E_Uz809&z5tawKSwS=)04cGY><^*Q)9Tq4VFjRYsXtRe03-Kx#B!*dEk z8c>2wJd^IchXVHihgs{uRH!PzgvFQBtR{P=Cq3;qR>)|BpLP&WI+>4=3Hx|i6? zT-!ODuJ^=r{u@!emHFjVlnnm3$LA31d3=tk=kOlW8uvVWMzF~=F7y>!vi)v;Q-v>n zO!P0%wc{~d01nAayEX@c#%c4O0rEm343Y%IlE0eIavQY zpm++_QG8o}x3lchWLm!^+mbK5kxazP5jX>;x%Z7&^zRx@M523Dy=Sy?VOHIu<@ATM zp-TLNbiS8We~beRi5slsZ$>&SzXnrP!%z^bj0{uVsc>R=pu5 z+DkvFRprN7b|a5Q=(iWqsMr{UvIu~3-iO9pl+)fvk`R1XCU3l$f2Ngi7yMo;_)jW6mz);eEI6gAYp+ zEROYyZR{aYwY-6CKOEkP|7&MdlofZSH)_cp|JyF9(@x0m7x<*kUTn^u8hE9C@jrQ` z_Ogm8o$Sjf`Skza{8HK3j7?zc;rjodT~n_px~49h!v06!)GbBdR6mM9`ls&U(m}O9 ze!`q3eM?s@II(%dY?MIg{|9nIUiP^%g0Wxl@ChLlLa4S1EHMXuiXuFToowKYljp-5 z@d=?!zLD?8*bGcs{~xi>iurR-I)J6;x=7suUr*-*Ho~zQ7~dB@a(_IuXKn$MC6Pjv z*8S;?r<}g7!qKIK1S@ps;;G-sS3ZWSO3*ztd@ zTc)KeXLhjktY+4bp8!vY2A;EaG9nH@wZVE;`AO(Ynd}bU{OwHJ#UkRaw~!-G?52c% zaQApQjbS$NG^<03x~%;))M1Esv*fSgoBC^pL@h=R25z!SK7&&aH7UK`Gc3yQyI-F7 z46E~=0ra0iemxs3eiADx4?ly%cQ}t2U3uOPx}-es_#e=D@n^6z{|wXiSD1PYQb)=Y z&k#7V-pe6^t|KJR43Bj6XDE1qE}1&Bcu517#ATV%8^Nh%SUXpZJcB3>9lE3rM)PM_ znRxu&;x#vaCpaa|l3~+B60e?FV=7nwr0ms`b*K6Cg)4gJ z%|B&ce<4w|I?YC|?H!=3f5&52+mfY?v3+qs|3_sL;1An(VvHTcMz)=N%AWjE(;2}g z!;gH~9d-GcZA;R-#oSoEdu1fbV^wQHi-SY>5k{e`Ez`RHw!nN=AXmiPd!UHS(_M*2kFthMmKH+CI^Z|vMN z_Hbp>olWjtqQmq?i73cv)4h)!)3bQqI$&TOo7r&sFoL>A864=GyA%|)arNio>`?4U z6q&yNQ_O4Yj8HOdy!vU8qqZB^&k*QkA}|wk|6_;>I|daB!Ct!qtZcbY9kL_Vv@KkM zH>YxZ)e?A2U-z@L@yN$8vd7Mep(O4{K3AP+MscZ?3ov)@@lfIra|HOwZ4V_9AEk}` zKjh)CdIO8Cil&WmZ>sQzYvecqwFW!EwWBnx`+~TX#ofSSZ-R<_crUJ(V+wmwp7bp(lP-m%sV*wDFrw!e(M05&H|T)aPx50XiK0A_{tJ zR!sQBwB0+Ii0Pb(jbdg?rSabN4t#X$!IM8Alpl!5qtx9A#Bh~eOYgDIN~=35p6v@H zW8?`qbAXKQs~NOlcW%s_wp;pY zfozeuJ8(BaYmz7;7Rv(1MU-^u=5`{vHxXS82!{bDR`z;ZaBJ3pl}Agl$WFD?o_+_3dU;iL?pBDkrSiOq*+HbtEf<*N{ox!jxkJ|ZmYhK z7VOOyB>qG4NbxgQ)YpT6rbLovtE8mu-iIY6{esvBb0gygQSKaDl^SeU3SaQWl?aa% zJz%8IQBYRJat|R&8s9r`2^w7{UJIgj5p^!?+}4zD+s3U=T?6d1&A*y9doic--f z+J6s^c5ym5X$(~-jto6gKsDBsnhEMp9TLz_54kgNxx zksd_*PHz)^k!knxSi6T0HL%iXTQpSgo%G#>w($vve4V(W7D7t1DviHLA65PiH4+ja z?GBeWdIx<}VS9YiD)mZURXB_tPYyhr1PTy(ikQa|w;&OT{$Ykyhs$>J3gfeG^_9p7%a|deizBv2zD?R6BXCVS z8qYEO#|UxHmd`!c+ds`9Gxkl0Rk}{}diM3?u+RcKeUys>hcnM!D%vs1FqT&hz%-wV z4%(6P9xD5}T4B5yjywS0lseQbDT8Acw3b*BqF49gc&x1eM~vjD8F6TcbP$+Kbs_Td zb>@^*HB=`yv^SY&RUE8gDP;_JH>nq`+-wm74#DWi9B zx60DiW38xswp-=TCV)+B>PW6ed)8{%p0!rQV!Khp8JQT7Cz*(29I9NE!MM9yEvuz} zOEc>A6sNfxOz*|*#PqHuwTuJ1`YdCu(ALVP+_fUwrK7>b<*`a@UT3kbiyQp5LKk&r zz2%uo>rzQW<1*qFqM^%nqf9MzbuIjQ?6q(JT1!gV$p^P)<1r|wcFIOV3Lb-jd+IPC ziNuPGTBwFY5#8BB9Dx-Yp8RfRJ+xIoTTaegk%7ltcegs(POiu(S4l^g6`8a(Cr#by zNB-Ou84!TpBIwtzYI(de)tJ$yO+W>?J?wEUw!02?ar#)YdY2_*uhoG(@jsn96R`*C z#GDz?0j{1{shn4>;U_4(Wy(0q%s)_9X^rhrr3!$Z;wp?x*H*V6>Z7Ub$~yT;=k#t1 z#}?Kh>jJ*L#KCEPn;M&jpTWhBL2@8u$efX)5-m*wXtJx0g`Tey^3BF@j8xlopv4iT zRd(Lxd_#;V=XhNNDK?YW-NUC;h2dRd!Mh~>C(MuRzQ&CG)cUkhM_`LDG%BqcEws?c zS!MabHMLf>T}zH0T$#0ZJf?N`4K9X;eymN~Z`9z_to`L<+VQ=EixEVXx|(aNdj=O| zZTmLu>TWvBxvfpRuWN8>&ffD_v_k*rBX&`e9oo((OzrEB_oOQAqbs>@DR?XedjNc5 z@o9<=f0dt+wnc%jcCDH1?5Oubs&3FOI%RSo?xLX07Cl$ zm_#}kxYSA3K3tpgbPPE})v zXxb|`!i44AIEsgqSTD@0D8d=SxaFG$oV*c18+|U?2ww)Zc^2Q_Y5~m ziGnLpk;y5_!JiI+4bQ%g%vHbpiGmX7W1EBon}o$Hu@@f>^{?L` z(nDg+)d3&En$lOnB-Z5oB7oFW=fHT9IhRR`6n4;oFt-P1V289w5!6;a-fCEPa7^99 z3t^H%rx8ZK9uadSHGYR4!d5#E{3#C~JkGKpEZo~LtU)v@+3Ib9&>UZgr|k%SyHbd7 zVkeB@&;th?Pbayu`aSXxI5}*Hs@HE=BO z=9+%L?+fsSFFx9ya~~<<%f0jQ82{17>Nb$igs+$P##e?cn3J0n_13-cMTU0lNZhC@ zw+8Sk0wDuL=72GpXqM1ry@EIDq9$KxY5^6319-WBSK*&NykZC=4jSG5DKDX`sIYLc zwEOT3A6=w5kECSZ*b7quA#&>sA7AoD=9M%4wHA{2%GoDP=ZKSC&-yJXwHycPw4I|7 z_e7ek>m`0d<#0_VMf&@qNCW6R8KBGcqzIAnu!JtRAm3`X*hg2+eeUtN^4gH{63{Ku zxT(DLH3mkeJd#zse}-V(^axz|2kjMwX%oC0Oq&Qr3&7<8ToeB3YcHmzMt2p=LvT{< zPjS*4)73Noslv1gvW`rf4^9tEo1WnixaeI*H@j`?{Zz(RUtmX}zNY+~UpS%ET|yUL zFE(&UVo?s0GLVIfat+?1+<@C3Uqr9jHC)4TJ=?I-UpAlYFW;*0wC36NLYxWHO<H75;5GBH<$gohQePRZz)lWq6@Ce9;a`9)@NpO#`Nkw(3N(dXTeIp9 zCAi4^ZeeI7yLn-6yE#>V!%U_+Cw$FSkaly#kO5q#wGuE1_is>?ushcq%snK2f)WjwXC9+Y4Wa$}j37*ba!Y*-J^$91YSd0Sw9~Ktt8pYPv8r%ZgJm zjS%Me2vepYBFkEZ>Dnrs?(~-Unof&!B~Dep`acr~$hDSMm znC`N`)R4VA)&DoN$T2HqlI!g8)rE#q)j|@X$}U#tSC1YONp+V zZsa9+)|VT{Nr2H7orJia%3uZ%n?f7W&>#*|z9vzxgL*dp(U|~AW1KvMG_IU5j=d3! z{9R*HWKm{d=FDhh3xy8+5_BQ`=M|9%P=@^hMT55@3h%``vdSy}EW<2}pymK-kwb!3 zROP@~N^}s4Y^c>6c?2^sG(r>&z1Zk+HBF$H0w_U=|8B$|FT89gW5hcASr+oQ4 z4yF)Lb0I@E@H%x1f;qe-7>T9ztY?|T7DPa@BoQo^Xd_9v^ln1!t&)d0*x+lkP6;<> zN)wE$7Y*U9IQ54p9!o!8^xceel~nMrug9a67->wpBiw45~Z(V z#9aE6|FSB`)JC&^?`#S)E@YK&{u!vXjDxAXY`5`4f5`MfC#U#w`}_||bAQ4hral1U z?~X?dpgw0tY4Wc@t%;{c;ButEsOzl7&C`sGB*-J>ax>{Q*tV|`nrW^8YXJHAs^_{v2>0(B9N0trE`G1*B>riHY*OYmr z+z2{nMx#Uul5WGlK)2}@ru{y}i5tMz0r2*k#M}8eiDvzh60}K|iF3vW(|)@&?Tzs7aNS4=n;oj>i{c_?jAURz+dV% zma_X;0-N%;ujX~Hy3AMeqjfI^w$wk%1I(e{^n#DK-(5@U&7IN|R!~BzID8V^Gc$I^UU-8mqObg5N7x%}9g70A(a=CDuEA~l z9e<>x;ii<20_VDkZyQmXtl%rNI@I8c$uN9jB2ZHb)iCiWAY52gX$hNB5o<69eHjRs z4ZKEYug6TY2)DHHy}dpFz(MotehjoJ0FI9~187rUKP~vgw7o#L;d(J~-LxV0nWq1> zo5P2YpCL{6Es)QmoGD9?CAu{KC#<czzvgI=kDk-pMIHF6T%> zQ{Sw#eE}O95@I3zPrasp-?FhNMrc zbnvDo_*0}Es0V-A>J_#}5^J$UxNgS$fbq{S_`Lpq?NIU22isf!KkiU5Q~FaN#@YE6 zqde7Tl&kDLJOM`8vqp*7ec(k)gtAd2lyyJi8Cg||gtGb2r_jdWlg&R9pWJ5jzn~!_ zV~rjJJsS<+)Fq+(#wCek7{4}z&}T^~TRx#ov90Wii`ylkd`3vY@HMh5`rk|(k$^!X zHfvOc$v;--BlaK86U_{%ghsk3gxG+xhM0N#l=8Tb(&n)NrQBd3=D7d`3r3m3rT0V; z-WhxUleBrk^PrRyGvS^aRescrSZAV??cQ5tsI%J(M!B5Dc0Q^e%|}??Nl_W;3`W_^ zfl+?y^A^)O`1m18**t0njQHVBNhzz9pp+A!k+n(~T0zoj_c8<&f>`F(M4wZRpu*E_ z@i=0gXB{slP~c<&oH9|FGSXRE@6Z0Cl}P0kGQxQUBHU{2fiY!WEfwZ_mlLP_{X`VZ zuZ&xM3G8WIlI}oq%F5sdrN}8e`TIn2J@Q-V6p~D&@~KrgFtJgvXX7eJf{h4C*7c1D zd^04k3`#lL?wA3w98l4cShhBbvexzr^N6LYPb|yy0SH)z-U5LDURg#agICU4tDx>c zD}$z9g$U=*B4Z_~3|az&3}SNC8n6;)iA1ftonm$Q)cs)&rHJ6P`#S1(B3f7ZAvEbf zz}nV#1U#z^2Q(0^9WIzsNhk+IFIRt4mUDNgWy&>O!e?4#z%udEZ;Px8)^=19U<7O1 z-e?RKn{#rAdL#-MG0xzB0~T5+S0OeStS$IX*_K+L%6U6gRlPNt#ZnwBc(}1LsQ76JJ0})72x26r+ozLDw*_VzZOIr$BBr0~Ds_<!Im-@(Px8G4pei7Kqial8q|&q%hkl+Me?n4 z0sjUYt%HFu~n6J(^I0g28l5Em=?82CQmYKtMGzow(}2^r6#wf?Fns_ zb~;Lh35$HP;lNi~^2v&L;|VSaWpSGHv_%@JBB5*#5z0C-&2GRatH{dmSMu7$1hd-) zpRCLssXkJ}TGG+e{21pd#Gs_j@pfolN0s^Z5SX0Imb;)n|F>|gn0maoRPq95X#`hr|Z=w39aV z72e|M)7W&&)QM6~V}{dE=y!R9C@2ba)(`9C%28^coo_f3PFF=9DyE{!jp{SX=M$sc zpf^)Oud|zzA7+$UJ17FZp`p^2lrlY}I`6{_M)-vh&QIA76+n~xpHh3 zKC(b5M}G?EWraV-5zz$;rmuZ&WrdlAca3L(wT@~RyE zz}sFsD_UVnPPq}BG5~`MJs@37a_+_PxQ)zS2(~{pqm;>rW>Ct?!uTlL=**?fBB|Vw zI5UDI)iV`_Wr`=YATgO@~bY-N;I3uIX|2iO+m920v0a=`( zDv}gan{`)Ip_WQOEJsoH(Lo&Y?1BRZgWfPXipu2{c-*qfVkK5Na4{i{x3SmwQmWez;C@v#(W zWt0^bqpJC~aC9LW(@{4ggsa`AMyKH?yk&8~ouh_$ZVS*2=Vl-t~Vm}7-2&({U- zcps+M@j9+9%Jeu+ybfjspIJr~fF;N-SI6JX62IpL+_GyBw>);;5vJ`@mJN{01smaF z#sGeUT|O)4ym4R~(aTfWU$zm634(b+78{9QUhMA$!8|oXn?Nt0+2`25Jcan>MgAK2 ziiu(DGEC+umf(MZE6Qyh!x=xd&c=84kvHHI-1&nx z)A%9SC4*)`2ol+~Kdn)Z-c6Y2N;4|q(`hrao7 zG34OGy=X0iFkLxChIz>P1Rq|que!ZOH}od+*E3p7TN2FSdr@!-R5Djzujp~D3(8^U zyP`8kjI(lJXVyM^5&x)n_-8+n%eBrkjYKW4>~p}q5VyRj*7>TQnB|pyE==Y`Eidxd zz$`Cfzx@jNtXqj(p3?5-$L5J!UdbNV6TX_4+1a!^GuPq_^FS{I9_TKWMNmOFGyn77 zC5jpUl-6%TAZd_6iAWl<&=SS0Ed2!jOM(A6SpXKLBmrpZgiV^E!v7o=HPl)Y(|UM7 z0Gb6@03-njin-q1^EH1)l2Y%dU~=hasXbp~XVJVCFo67*M@K<9PRo_;`MTM(r+N6r zrYVvE9B?g3O96k9;T&*npJ{e&pJ{e&pCqmLD%kJ%B&q9MUx-XLJfkpwev+Q4U+RyzJdD!4h&SFkFFvG z7@*5DZ9-R(0#ugljV@*E5h_?34>J>}x*hw$lu6+Yo~&Gn*Vc!ZXX^y7A_eGy0;~fJ zB*BcDR@C1iKe&Ja?3es9W&>@kY#|sxh^dZK*C2`jJ6i*6c|LXqJYu9_azlAQDVp-4 zC|rp}c>jTA-`409EIpu?)84NeOX!joa{$J7e8Gi_3=Qe5IzqzXH-MEpFzZ_|OKb{u z`{bZKL@?{*z92b3LKn2N&o3)4eZouVLJCB`&8k9Qh4{rmLr^Av7`j%WNG}K2>Tu{T zMhwEz|51P~x(h%{EE^9p8|1xq(sWdS_CO_g5C#K5BdKLxX&$5#|F^Id-Hd>mbwBk5 ziu{^VU>yOr3O;sNWq>VI#*q7;3j|s)B^FTzv*@-k%t-!7HeEod43JeoopCuH`p7B} zxr~3xNU669mJ4b|$(H-?U`Sp32`eftN}v|-e^lpGRowT;P+U!T(S}Dk!#n1-tKl63ei>{s@6i;WmnpzVi;T;##hx`#a3!(F z057u5;x}7V$Uy+^Z{}?i7IF&~a`AOpiC`vpMW!Om z8Qb|4jiLlEId(}b)Z^pI1nn|pBFFPqGdMs4BjfKX`7oHnNx;cw-YEcMFJ7QjnJ;}Z z+(b@#>Sfd~F!Q4;xTytJc|cDZ$roQhxiO1Ob5VzRgv=3xqRRZ}laiMVI2nJK0sYli zK;MxV##|47;oV=Cn>#K9O@Ul0CWUU14twicLC+A~is{H6;`3T2poT5$u*D>4t}izM zw&E6&C$<1?!4`{b=<7Y?+bEjJD-nHF=DT7c&5t6!0pN;^T>*A-d^ZVDfu^Ja=|8AI za>%j^#LSSV3))6V&*E?CvrXT_XbD#xe^%&Y&JBi6A9F4We(psB)P)|VysB4=pQ1uhWYe&>yaxJt@KK~f|rFiAe! zLjxz_qmD+hDzGS~K8y;?+OKNL%a;XAU;zOeJ~gBK`1xVF%_Gp_+_dREKjb?@nv|5A z+%fLA{=ivOqy<7MK$kWzdagvxq~@1bIc*F&0<=AE_kD5Wgf7`EjF`I|HwNe*R{{de7m8vT~6;r;Aug7jCe7S)Z^YKMx+*R?T0Zhh7 zsd+8|jF>-k8At*3hti<|)l8Ey^fbs&LDBUA^(Tquy{Nyte20bsUE*d#NuPmVN8iCr z<)z~Sma@;xhZVSZUFx@XB+QfUGC$l!gdYgzkYwMAj33SZrJf*A5qYL@%30k?@0(%bDPp`8QhF=a&(O41QUMGV6BokN;X+`x=y4 zPA9*H*GBMje-7rp7zB+`bJg*LoihiF06V@agWP=Vl(1zuQjV;MEyI!H1gc6Du~iy1 zX}t4&{aiWRfl2nA{fOxs|7d_Lk0$!yTcqw%g}82Ss_(?di0Uhp=K0c<6wN98(t{Kq zS_PWsmxw+cL|>h+yfDx9fi;wo`IDIS*F3p2RSPy*R;t zrMBw+a$c3cd^jwZ1Ewy!J%F$c2|LpuHMXJMgil9mdt*BY6iFwC(&jKeIW?sT(+fOO z@@p`G8!;9mSMW^#WvU-w%R{&gP9Zwkq;qDaf^#rb%Gg@mk%GYfe>2yQVl!z-A6t9* z%fJ_))ackDkC|L?2nD)uxjDmJW^4*@rZEO1WezVFuf&9`AKG~lV$6M=rBwWFoTGzT zXZ1lQgCVUofZX)HsL0y}Z>s4dX8;*V{ok$>A%070e!%qP8{KJo|AH(IH3csjawC;h zvoR+xAuDZ4j|CbQ3pC587-rmFEN#K-p*R&oq+oqTm+N7cj|x+y_cDE$i_t9KDjHAx zS-z!Xmd}*yQ{<>jJ%!#f0=D(t^ zwZE~Fh}j_qnHW}!SXW6Q7Xwqb${5;VfvMqEi)dIGnYz9ddrN_^*i>S4`ETWU!zkT| z_;>uVh4a84GbPmK2hfV{xy0x?!x`Ow%OT@xK8I`uWVavfTjF#nO1P}VJ^LhbB8UBYQrN48Q6z zx1bWjpKq-)Cv?Ob5Lb(M)#vx8H63e5o=j``2By4oe&~ycqTbHJtWJLpgflV`WLO#K zW)RC^gLUN#Q)$_n2d^v%XGHN*z;2aue3ba+ybS`{Jd(3J3fm9)U-QlXKM3G2@y+Ic z;F}GfZ_evJ-<${E+(iM*{LqKBb?oR2LYU#F;`yAjOPq5T1u-kFpNWq{@h4T~fX_e@ zfO0OB6Xom;<=MV#cnq^h#EYD>?x))h$8jEO3QN*CZM$Kf1akt;`I9K@>9IA53TuJn zoRI_guCOxyqcj-j9vlDQvnwg*uKxJhTH1P!NM~f)&e-oo)7E}(lmeOYE_LF|KR=Dz zu#R4e))B&aNO{`0{ERW!GKTR7G{tA0t$=wxaWgT`p8b1bo->GL=9hqY&VP}%Mhy#P zwtg*n=Z#;)kXqaAEvDF(k<8jlUm&Bz@2^LSZFa;!iFZ!xKafebe;W|banyx+t`e+B zDaW?MmEGcRPCxdDPE8#~oBYGLBwKswVmZUT2<_KTBRNW}*5zee^TuS^8k=18OR(qpJ zc8B{=X95b>`>#LA;8nMjaO^`%;8221xv6kF3rHPJg zA4;!XjQt&+j<@WBA*vXpD&?r|ndg8N=E?`D(GCtRYu8;rl38Z3CK`LEn#B&~V0-~%+12PA zQe=!JiyeiBJkkQQGUe5;>CSc{s_;%qn~t?u2l7+xeQU?%NNOOB->oO95tr>a-NU); zA_IM8gWnv{|2YTbGni@W<**ye86dI&J=su476)k!J%e_;<9*f)x~)Na?GpWLI-Udi*)b8!{6JgU+0<6)>`gx- zJwZS}lb?1eoLNRK+lX4GcxFX>RK;aLvrkN`HP|h~naMf3NI&-&pr6^R+3;TUb6Q`@ z`2EXcuXa>h2aOcPU}ol`^xA`v%Y#Tk@YlZ$W1k(wEW_KGf|IQw_L+WzeTJK%AGIu_ znaQ#PHoDdg!kLv4{Y>%9IPgkj*}js)eFEXkYD4P~`~2`L48DxkG*)467?VOmE&DNi zCe7N?DQPNVpRFyOLa7U9tqXnfS)@>j!HucPO?8SSpOqCOK{eNV@QazIAf6fQbCr`# z!=tZT&m#}*86*6V=1$xCFw^DOPpzn0-o_$B5zXvU_!h{B=Cplv2uJu4&8{EOobkXu zBlRLenuUb|9jI}Df+onOT}VY0^@B1-0C<=(9s@k7Xd5!dFRwy87uaVz=Z24qPO%)v zct9jUQ_9F`u+QMG0c#3qc901k>~pzO6{T_+h)$L~EuxUsems;lqAPi3)c}0?Bv(xF z%np(;`|-?jYC~tx%oC@^gMj9@Yp6&lmQ=St2whNOYTNM?Cs z#KvBaO#EPD5y+feoDs7Q^IO7Tm+Eso(8ZTza#*0L)zp+vU#~`>wTDn-;+xO^jvsjp zT?$_l(8IO(mt2}rZfyr2Pki&QD&z`Nc1Gxc?&Ml(NpjaHfB}j)jqpbFyKLPM*G$wk3g4lBl5Lic5j?zdYlA$ttPUrX zAsYElXbh{WdUSP`mZKVTSakInI5h{>9opPofoe;Wx|PXx3MZV}4NU^38Y^%fh<}+@ z_NxuA$RM3rDSTP1tP!&#%IUR|Y_<383)JQ2kMkvUk{68CO7jTw%I1OnWC8CX@%x3kj)gt>;xB+LCh#Z z41Srjj3Sw4Bt+>;mEIl zVwqQFXbVxz?Ch_Ikp|bipwBII%%fQ5MKFkgYpyWQIVf~+M@9a{DvhY-!nXpMVWT8F zrBG(H4i98jIvr5EaN2@#5%MT;f8+-)qyIoP50Cz9vTm5sV!3VY6#hq{%$^I9Su)Lv z@?ytu+c|vKi*a8i_j0-n*)Y#S7IbfKo>>9g22%m{C`W%<;{KZQ#v!=g*c`5hNM`t6 z@7juT^e0x#%t9w#P+o4HC}WvT9sHki42taKujs^Qt9%ZyH@zyf>QF`l<$NH>I`3!U zRvFODHf|?Df_7d|>jktkTfdXGfp=ce=UHH&CGYI+qK%-P7qoj;k#=tR+NYh>`Xh&# zp@P6bP;4@YPjb%1sAdn8^A*y>=^!i+>77TA0Eu#bdv7B;C}-((9>g<9BWKPf!ufC_ zoTbOPj0u#)4MLiA5I3xrfdrM5piO~Wh&df%oMDTCgI6)AS^1;~6-+4Tlz1z4(m}*x zt)$$QlBEI;u>=EJ@PnKY)kfR#+u5hFJx3c401Ews3VB>fhPV;$Y!)0R;GGNK;+S@OsopfSt1d%CKbTBw|p8Zb@R$L#{oacD9Dm&K}w$ zOOy&;aDhH#s_!h&O|06WRutxB#kUjfVS5R7WDuKIq-($}>!4e?(#v~X{j06~mldGM zat_hW9^U$|wiaXL(kDAhB-kJm#QIsj01K8czybw6gK}P9qy=p$JLc{RWNAzOwX@*- z3oYn}1(FrYAvK7I)4;%4;q$`@S6-m%0^_+J0_!6u9XL1O7tM9F&SC&1e|GT*HF9`)~CR1Nubz?h%LEu7|@u~b11!{ z2-Bv+;N5@_dZg(e_vw&Dy|VzAYG@i)-B(k7Jm%>>;Za-1k5d+Y69)9$V8oOL z&=QP-L=6@hKrg@mvoMEm>c8x*(UiW0MB9KDXCTnV9v_g=2mzHtuy6lFhFD-vZ9*n7 zs3rrn&E7gK_2t&0R`+=uQNfixS0^9;zVg{@`iNVCkgX*-etLy=R8_sUBsVyDx~1nm ztf2eTw$m0$YH4AKATHhYmqvbn(rWl|09*G}aFF59&UW3{*_qmb1j+dwAf%^)!O{DR z?lc=@!iLB}Syn}B^m#Iz!I7cOji5+%93jV4(kTal!1>L&lpO@Hq0zQPN9X?p+wZp1 z32#e~c^eUofZNL#C~0f!-6gn1`SV)?o<`9tlxK&~CWq9ebojGBEBVtDlY_{x=e+{9 zP6N;$nn6HYf_$OqJgW2Ze%FBf*t=EWOa8-IkESHVj3vPzLgRwcQ zTqy_5f{Y22?9Gy#I(*C|<>-4mfRZCB@GsK?KN=%niV37Fp@uGl0%f4q667}qf5Yx! z)Z6!wu(l`H=bGs5-to>0j;mU7;e#n$^5@4jntQe$h(fmLoS6Dj5oJ@5--+O}fgK!R z46$tV8`~jITAIcX#x?{PGfYC}hIYe(Om;Ln;PwGBn?PoK3uMD{FqHI~j0@CBcM-~r z;V2`GhuvBoh#ZUdlu%~;smSC2Wa_FnRe%hqE2u6%$5{d%2heJI&PVFWz)vR zB@UXBf>2&sl&$eUFMQ`3lfZ_5;)ypwLbLgM5b?|?>>j|4rO`%-(BW#uXyvAx$!*Kj z0|n+g1;SezxJ!=5C=h}sd+)krL{nDe@k#??@jYAl`gQ0sP0>c$MCU9)Hsq2D$5^U7 zs408a0ct#cFg%76fT(3cYR-ey)0OO|%lw{C+2AjaTH-JNcDTQ^4)B)~Jb(FKw_LU( zyPZTB${qt@4k66!&x**8!0v^8H72#yR1nc7G}MBNOH`rKNnp?#2uQSR+-mG10+`V7 z?>-K47U{8{%7i_n$B+dI5E~C7+S+Fr#=1F1aGvKpiK z%k~rfWzP$8369QxwZ{hN!ssc{W#xTzSwNRLgs$TJA9?+th}1uhRxXyw8!Uns{)w@F z0KAaAixPuisLSDw!58iYulfpQ&SL~Gr1&C;Izi536wjrp-+nphec%fjo#-RL&v{Hx zLC#|~t)$Ivs~86#QlRH!R_Zi-9mH!)xoHRb=4ZwP#(Hd0{|`K_bs^3feLE0!fczoS zqVu7?5VaXBfkye;DXBB;^mUx&NEP31IX>7>I~ZVd32fFdb%u#rr_>cw!Ao0EO?!=* z#cu&|9SeN805w8|%(az88V5S1G({t*O*$wTG7Gl#Z$AdC;>Q4x)>m}jBIVg>lg^Tj zP6}vg(pdop0kpJr$}m#ez?i8_9gVB`dW+PVBh{G{Afj8LL1(0Pd%h0 zc+Afrxs|X?`I5Brz9elQP1r7l2yI9~&N%cytnNaPGp)kfBQ+cfT=|%@@5;8=`F~Bd zZKFgh0J6F0=xh_{@Gpp}w@sO78*?;3IF?2$!*m)rYTX9r?4s4hr>Jddby3^KE2mwj z0&}({^K6qlE4tfloBkxt*J`K@&XV_D!oNF|$ALV!u72!W95wQ6+l`Ff!#`J$XWQPJ zqgGycbSQOnekKLML|J4e<2mLoqChs34Mp+kW7+K#0=;BT-|_|X7crDH38z@an0h7h z88h=I=V83*Z(w3gbGK*I;5Dm3okyGgIrPt^e;)lS)G&_xEVQcAKO8KyH(}~2&?){J zof3YNMV9bpW6bRphc244WX>6_f*tb?oATx76|;}gjZ!{ur0kwTIlPgI8#%UhKQVU2 zY>yeU?OF4gGJ#dNXHQ&p;<7pO=k~3-T}4RuX>6pEKaFLuq08tk(69d%EvKB+!kk5J@0AR$Wai&Qz56%8&pj-B z2%qCv$cj9-VXk%vYBYbAh7}`c?Z+C@?uqHprJ*j<+`T~ z{`V7FmoB@Ku|J9OnKN1Std3og*C71Y1kc%%crHAWx0=??3>MzUsAI?oehTA{fsuX; zCS0TrF7Fw4WazDTB2VJylX&jVkCa^O@4U)TkVE$=ro6E~g|(l?xMa595png0IPw^@ zyh%}n$M&MKX&}(fxfFSOZ3bq~`V}V;Rtnn}I2+p%VnRr^Qj4avhd@GX3pZl5fi8y=Ip*(&p%?b78Q1vjV~gy>Mjl(F zttYMw8x*;vJ)?1B#$pfPNsish=FAzvVd?IpaS=6Gn9InIF zrK}O_4d}b}K}4`8$H@zLvmO~YyersEU7_~1<;mt)2d~1T7-gf2u&0zRfx{BYi+>T< z^W-(W*13icfLyv(K61FdT+15@*K+NX2;kKRc@<{8ouiB308pKTt82k+X@jb5jEOHf zX<2_fzBb->(t>46RyAMAS)+a>Z|RJ`z$=>DlbXRQl&AUVd@sVCbNU$8UTcgYEA1GT z$(i_>v*@2q{~Y|=;>Nq;eP_&BxnSA+xkr80+}k`pv0cHI`3n|6+blY1$~sF@vIobji-W2MwfwN4=E3&=spi2x9IO=E zkAJED-zpyP^SC&l&-l;f4$di-J9wJ^kJS#&D^@%Bl*>v7%Vc2wOz%V_df|hIT634q zyz%eJ?zHxFLe+kzgxCS?$$b%9x-V1U)d2LR zb-^xt8YFp_sXyeR>`In(8&-9cN)flR=z%Cf9;D2wROLh`{72AVaPvjkE=oa&Ln^0%7qCH5nvuj|R(Y8H!btqG$n>0hc@ zBgW|d>l^oNTjChC4ATgdb};K0;#);mWu?8jA~FkE^ZQu%7ABr7N2!>4XEw3{fH*04 znj2c@FEEIx&ay7Ma27*-Lfo2u8-fn=wJeS_DbFQwbDf5F73vZjvI{ZzC7C!Z_6H%1 zglJ+Yn_Evg0h*Dd|86Gg6VyH9TF&-VY6ph1S}Yu-;XgSvnUW^l!{ASM4vo06O{~iM z1CMP+_Vh~OpoFKl85xH1pYS?&GLlm0lhM%ku*K+OvDd4`WQ{K8>9bKV3ALr_h4@=i zT+QP3fLy971JTRj&-F!i(0a2-816bq1@ip4p9xj~`3HR>7sVbOsjxcK2H+-yu> z!eI(=Oy}ZxxH&Vpxo6=#IFrMfdMW3qm7ZnsrCfYGs-loIr3LDyV$8Xw3)07h*`^1AIaCBLmVgt}LCD@)Z ziJFc>(V|5o{{<6Yj2P{ipEIP=szQ>RI&*wj>HEIOu-HZ6O8tqEd;~#Q&oEK@FsvS?oo? z_k?U%H^OnKe4tw5>KcYgG-&%G}HZ zuci(iia7B$UJqvoaYI^JAFoIGhAQLnbjv7x0{l&xxYbnpQ98sjx|$*IHbmQ_097^g zeLXxR@U;su!BgTM6`58KXS~`u9DV@K5mYW@1WO*llr5MK9f2L*5u`t`;Vsx3k6Y33q!8RBao#ICs}!%5Qqh z91jIWYY3Oh_=lC_l}QUu>|1_O?Fg%PS4KCSp2JsbkVuV+@_T3!*$Q>+ptw61Lr#v+?efk)#JVY2ipFwLkHgzstrjIS3i7XB7 zEa>>hv^L#4U&OB$qFqySEO~ zzO>9oIj7A2&}CDStp)p09{*HRW?cryrPOAwT#qR)7D`J39x!vMgk2NUHe*J5Rf2c0 zw9ZIyOFp`yRhNJjq&d(NoOAAxPkw=rJ{88`qKq7Y~ zNg`W#Y>k5C)B&E*d^l}f$F;R|8zyx27CurpwjiwpxecSCBNP5z2r)i}2I5;VzSvv% zXx-X^CxeQvS*lf0h5LgR*g^qocrsh4|Bwf+tBhyyiE(jb3L_bQbL9rEt%p2p92{S- zi1Sk9<%8Q$j9AWIuf%HXR_cBlT|;(v|0a%z7jNQVhsECTLA zqGOmeoIo1u%Zt+ZRW#?2Gz$Jr;M*HXNdj@KjupjmZ1I_xxFE`s&@(X|+)AT)F|V~Y zG^H-Wt6wqBfNd~U@0`=5Or?t44jVhyF)`-+FiS$Xnb%fhFm4TrgDQbSzMLl}l9La5J`vy46M4OZi%DZ}bwUbaOCxmLt=faKZ z%y_S(W5WlkYBeRXvZ0dy`I0E4Xp>&S1^xS<#AD~7dECD^56z#4<~Kyai%r7qySV*H zTs=?Vu2Gw8QgHXUIb~(I$vIDm`&ISyCfq$T*|)RUBBatV7KL*7k`B6sobf(bE_^Dv0p?*U1tMQ0c6o`SQ9 zhX}^?9;S@0b&rqZ%-YG(R@d2=*Xwc07=pkY2jx}ZeP3s7X;L28z!x!KGrF<0(ip8` z8Z^OxiFnx*?UjfM=c(sW`k|-mKCO+3TD=YDe!n{9qWz# z26V^!^L~S7yY9@Ip1f04j;f9RSDf3d()dnDUDAwAVtq9-9J?PVm@5EZ%hbd~a)2Uy zA^8UWye6ic(x$>|aFQBAXk4E%0QPzxlqxq(c-HKzj`Y040CGfJBo0$Bib9F+R+R6C z;K8SqE3Zc2{tqgiO=WQh-V1CmbCnUs4iuit3y(^;hiyFJUC-Fd~vQ2?)F;_U*g^{Wbvtg7c zeO%#(u+TZpJ$XN-MoT6_$~jEAD|V`$H+!sEe-zc;l@;*^=>5*I_%Y=)oxzuZ)`Wm! zroCYe4n(iv%7}|ArClw5UKz*Z8(WR>x}VjW7a%`b{z5?ssJmDaE1;Mz6hjr_E)*(% z>|$}DsB|tA+GfTodXBLwdq-0MP@RqVA03G!0Uw-986-s*86->5I8U&!Qk8_L3kd(= z)Akh4Lq5qI@=7u>q8`eF;)eFAN8C^%6#YNsy?314)cG}jb+4xGl--$avu(V^>s@=j zJL-~+v4PNxv1y?jV_d+13pO@3U~GCPU|Q%skOT+`UkI3W;2 zp65!Moi!xy_w)Yw`@zR6%}BbE?mW7Zp7We@#9L!XK$12blLF?CwPMP(Z-yJ9ouWZI zq&yVu@DRDfG8yMFz%TIL#Dgwv_xVG#9mFo7=!ow~>k?P3zu_YajSDq z&9=EN+#PmBE#a*VThU?elc)15Q*mgsCj{<-wAs0)`N6Yr$|s98yeqeWvn+zzYF(^o}B;2!KbiOQ|&UC@b_K%W7Q*ewJo?nEa}qk4m!J z>(2z}ngx+Vc_VFuQ_sndp&zb+s@{RQ-tQy~rHR`AIvR`F# z`j5xPl(@J_fjD1MiL>LC?9t-~Cni?m?U?6`_j!%cUP}F@(LfpW|1|c3nzk2S8ahqy z56Q${y`#->op@h)0lsuz*+QIq6b;uPT&~r!vws_{#VsMAVW~ISck&f8|!fod_ zibm4}BWPTEUSAQ3o>raLz8QfsuVx#35_m%*mn6OLTJ}gB$oPdZ3~Exl(Dt`c6x4Tp_y!U77IZC@#TI4GkMpYCo0IH6*=kwa?R#GxNjwf|y+BJe*uNH^YzYVNo5@bhY%{%Ikvz1|`|;^IjjLlVdF z?eVH$fjqVY%{1#TvymElWp5k(ra$;m_VIk7ReN>TfQCPi1T*wI=f`Ta2inBjoPS;w ztL5xAK~FZ%qc)pt;-b%!N1jNviDTiBcNcQ)wtkoN$deq9OK=N>V=iiRE|DI2<|Vv0 z^~!8C|H|w^i;XxW3*WwO+qwi9eu(nXn-RW|Vuto5Jo8GV+jf>qk34x-Uyi*>j>>YX z3`bG=a(K|)HwVq#H)qhA2#eO`u*h>hkrsJ%Ts^cMPaP|`DmMcAB+>1Fc#;WeAmp9b zJc76u>r{SOj<^=tY#Tr_y~T-hLM*b}jJYM*99$}u3QDC!328Lo%kpX0!@E2LYH zYT`S*4Vr7}JseVrz3J75qoLJ@%Z9LK9Fm2{lRaJ?=kIq?!8kS%YjC^&isTG+-@1>4 zsjxudxh|@0`YN!UI-YE&jt7i&JRdZXM5p8W3U%I_tM~)GL0gjNgKd*oLMJI%AheIK zP+|_rMzX_#Vj~?Qi94c*A9jIps1~A7|Jy45R+rz7qF#|NdN?L{yZPr=KBkpKTB(Ae z;P&0rTVJW&W0CO!%z_mMt*ALN{$L)0{tNeDJJ%;)&-0zT@QT@IdaLUB0y>>!U9I@E z1B#$Xo{X8yt2_D5^(lFIJVj=CnWwn=KM%BP#pYpX_jRGH1PQ<q_OGkWAa+OQ!HYvk7ce<9J~nJg<<$ECXk^W zOrU}6)k?fuclIC($sYLH>-$TL+MUC)*v}|Ko5r%A;S&2S!!O+e8Adur9CPe5yyv)> zK?-!0@DC(8jj1OowfJ_51qR87jpC_Ju@}jWVmM8F9N`!3+^Kn2vT3?uNK?FzmAv+` zq88{)-okZxSDM;*p@LUgbR_ zk(5ep+azXo^6@M=sYxV%6GIZ(SjOss<0k*yq%7%(VHLMY{c#6=-f>MiW4|t}lH8+^ zGj79^369LmYdif$9oJNC+}V*jp4Vtkw5wy|?Iv6eV}FQ=Puq#zFc4S7T~hUMAdalC zxPnvLsI<{WDR&52&?qi~hYES);SmFd0gX|fO;G%U znYBjh9fFzF<~)P;o{{Z6gTu@IG6tsCyY)F^tu)dD)k{ookejEvP0|N_q#!2zlCCsR zQurVZ!>NtIMSda6rMZt+NOX1-WCx+O3#EFS*R8x-?#3pH?hXvwm zXdMzIrUiHwC^2nd!(^YAO+AmMW_=ce+TuA0euFg7`x*!Keqq4CnyCg0e|}$3zplZn z=hxt#yxiSSGhzc)z!Xft7i)|7hhM=1a|dFF2HH9|!S9j=deqkI&2m+^X@byG^+Z8D zaJPSwK8c6S2c`Nf&M|$+BzEM!IE6v82;ad(;%m}641ZCaiQ2%SC7Bv!m(bKxg~*L{ z;Axx)vBUd&0J-86(Fgc7zg9=JfihGi){lYCU3Px_aj01uXV*r>1*4H%JB0fZKt^beDyVr%*thMDP;R0XzcZUoQ<9auf38r z7K2T;o-di9&Z5uWSh%PlQ+db?b-O~f*i68XCjC9#x}n&_}tibPYR(NAGW}HlIBxdw(PD z+4=^C8HGPqT^<>V+Lcf}{IaRncCT#YuO7fhudh@c|l3=HnX+V98!G(Dq# zaDIb%ZCCb&v4h7onD=*PAM6`EuHQ5-zB2pQF@p>HO>51S*>$7k+(lPr)0jhI`Xe`H zTblQBx7xoteM^QPmSYE1si<$bC6nF@)dR*}7^(M?qiJIj-z$f+?4C?CI-m#|I_A(L zFUPR}wZ26Qi3MOPdtv~_oOm+B|Jc-F8Mtr?J*khgcum7_+}kT$%dnQP?2R9(Vpqn; z78HYJAurc!czdDqFc#0RVPhiYz42bt*pp@N!-6~N*++sF%$0|cxKGLM`Uh3{MOL|q z`v=i#ZN35;C)c+K06*2e{f@I=wQ}P;Mb{<&3XpGk^aml+6-1 zt;t@}J-DpF{8>x(&XLr0-d|GLr@IChHkhwAW#8*Ww_0Bovfp%InN`BFe8=FzZaLT2 zK6qTWrR7T59Y@HyzJc`Wbk4fAjX71BH?kSr74K{lr{61nn`JK`2O~T5h4bjQBw?`+$>|&GmXr{qxC}tncM37?Ni=`Wi$c60)atq_FH^kp* z<7PE)K#iI9KaSel%kaM2P~_Y15N#;36Hm%EplBU6MINTB*^{@^=T#Fe3oW8j+p=7L zYHPvN45kiE2P|iIFXn=`diGA)bgRf&>so^lo0G`^W3lj?XXty5$JToh3PFe!JpATQ zw(*?xe45D+^M7>SBcoyTN7w|&=Y_E#9BuPEYznFd z1eJYA7*s3e_~{3gZOSoi#*RTy*=EqD3@T7hjdwDH%g7V&b?rwp?1f1&8CDRd(m*>o z>?16eVKs8DvH4W>Z0H6wz^}!|UpxTFuo~mx#FV^3QM7a-EIa(uw1d;PgVP7DOwolm zonUGQQyGQeL!&z$Y_U;7`XD^?(kN53*R=4vTJe)cWndK?Kd|_WG^-f8c#nkvD!cJR z{H6$>iog;Dj9*2-ee}pTEUaEXDhw;=c?MzSREAZLjd3#j@rNSsAg(&5+#uz?bG zBoJ7*3Ht-33@i+kG?a~UuoOv{`|#@E{9{^Wa54V!(KLD?x;*p_12S*|8|Rg#?^oT3 z-oOJgB22uR9qZ}1jsuM>aqIKcqst~j$X50gP?TWm_n@QuJqY%I|2>|fsD~Xx24s(8 zgaMXwCbd<)AqN~~j|_V$5k-K(v);e|`2j`_g5sYa2Jz*X9>tdt#+MVuS7s#>uT}GH z7pbElN*9b#pYoU>>b>9IsY>h}F!e2pEz^%Jq%Si|=-P-Lvm1+pE7%9GWiegF-u0)b|MBn{XY1<0)C#7qKlL=4c01l> zJ*kIUY}c|LLh(nYHNw}Wg7IoDjaM-NZNqFUNRgsV`TBjBj{D;kM|DFOK9+w=q@jYh zDG*S^-Li9K=!RQDxQW=sJcSMS+ z?Biz$<<5WbiqVSqy5WuTsEUY!fQP)F#2Sl5oUNk%O&Q~%uL}5(U5L7C8myeMkRb~D z``W4ZmV$@r_ZrN|sdpwqCN-F1Q~GSmUc=N3KBHL-R<4C!#9%d}E$40*#uBb7Ka_C$ zr<>P;Hg-fjc5ybl0Am$g0})HHh1q^vTbQjen@^xuw?>Rr?u=lp3S#Mqv+^#2$qvRQ zKbRcZ;*(REj3(Ul-^t|6Tn(Wyc5oq4_l6gK_uJCa~?49iXqD%m}LAo!y*egbGk|X>O_(A4#^DN z3MsPa{zQ@Gd9JYpF|6)x#gQJQ^SAVQZIZ-+S1)aRxRxdaKx? z+X}i_S$sjdu?R1!6QEYIQ+s@Wj8?cHb$x&NtksGOGt|YZnY-V%)SbtHeCbD!7eo-` zQvGhTg6^|q_raEsu4{CwB_k5#%P_+HC#>K_;H55; z1*<`6F8le30u@QwHg;wdtHHOJZ0fQ3OTYoMHOkII7TH{x^jRolxL}$R3uL9sN^{T6 zprg5bn(`D!OGIO_=7I>fT>9kgMEAd)z#oB%p{ZT^IREo^(VdFfYyDv?z4@0)3-^1! zX70x6*`0`QsX?lCXTQ@ddzWCw+tr`3^~u4EwOcUbPVr|PZFkJT9@cqI^5HJ4p|It^66sd!LHoTmlpDCToJV?$7@!Vz*lcb(u z(4=HsDxYr7#IinnW6q)1m@Tk^pLSD5lY&V(}uW~5IL0Or7nnNYTCc1l_gloi%~gs zDzq|5&JY5Dz_az$Y_h4j)6c?C2IXW!hwQJ2SGVf>+^)QPUil&qWLN=N`htakE~S8> z=1VNYfzX#A)dGoSEs$8&q#EwY;9LHnpdo3pO1@=TUz#)uNGtQJR|8i(kHn=TJHwih zT=A;cmZdU>q^0$e)Y>e|8KQax!!;6;KAjgbs6SQg8vych}c=AfWaIW(E z1?4l9u6Q0`-tW2M=_F_9N;yNlk}6`(XgV*t2yF9FhwcW@$o>1e4%2<9UH$QT_D5d3 zw27_X$LjlkC{Hd^Ikv7*CR#^Oq&(vo@H~Pt|Z#=77)h@oP5kF#cJSqd3=P~XcCgvQb?9BE;&+5)+Tq;5C%xY&}|D7@o zb*uKQz)WzP?{c%R6oC}vDGV5FyHnaLH>3rLQvYf}Zh~U08E>e5Zh#;kQ6~mB_ahhJW9(sxA|2 zS4O3=KlOb9LK zn7hX1PIxvo++=W0)eo2q-sH}3wtS)z*^@VGCo09# ziOPuVcqOP7|0$cie8w?HuVPTb+N=ytY@WRtIJ$dvRipJd7}v@d{CqX>OO$ySCIbxC zsCT9E`lNpXh;G83yKU%H4p%fh8x`I@60Q4+hT~Oi$NuQs=%FAq1f%)80BBGs+@II? z_>`ZH8cjwfp7&76<`~N@k_pu)#@H3@ z2S<{I!jU~V*OxPV_atGZ0~=t*q&g#ZAKzCf^Zk{k+HhTQhD#9u+1yp=W zJMBXX8p10trtEfXC}{Y0SQL?deUW&jPztR1&s8hZxiGUTP(2f z(593#bV$zd^Uz9<>gWjJB`ZCkzoDFA;A5xoTld3`%J?pjsnq1oK;zHKZg@Igqt7`Y z5(pZu?ISFO1PvwlBLxkCTcrW=1}1wPR(hmk$U;5CHdx*jA&UrMF047^qbCoGP%fw$ zn!cJL)+D$%JTf*Z357XnT9>7sllp_TBZFguY9nba>hQrMLBr`I=*URW@RT~74+$Cy zfOEr-&F{7oWC;LF{d!ZIhFZfRhH8f6g0`fZAtV+Q_2}i_-6yK`nS8o zE`wot?D4$VuA|oeqnbRsE@vJy0^l=yp|PsQ|J_K;Fy~CXM6~0k;vtdPT948UzF(1F zBf;mV`Su!0%AZCd!-dD6$ zk8FLYWcX3763JjusAP!6fs&!q_jX{UH^vzMt-@E0Q17m1Z9_(S`VyvI{o}~KJ$3p& z+bfg|Ez7$XqxHQE>F0?xN+Ah5zU*B}0xZX}l%dtPF6O)R6}4efhF;&Z5q|+m86r<8 zjr5T1elMlmEU<*63~yadPI?esoT34V-qNT(&{5VhEE-8yQLCd9ZI4iBb*<8DY`j$Y znE>#_Vz{+z*Q<gmtw$__u%pQC>ErA-=AXe*4V!m74gwO#S%AA&`Kk{ zM*AwjbC!2Kh9FyeQ-L7!RZKl0f}~(Pj>JPHtZc;NqsAJgg|#41E+j}3#(hxcv(3AK zD?=|(TI}BKWM6PT^O_X(#~RdL9^`0dh;oDC7r^!I3#8z}B6_kgm@rn8SW$j z-LNx4Q}f-nu6z^iJ4rcUjaGqM7Oqzoa}XlT$+Bvc>A7DyTLLnWI0jjE`pH

    | zDp2U4Ak}zg4-GRACRBfvCH+AWYZ@>~fN-o13qDlNNd-b28pI57RKA#@{2@uK5!QKF zMAmt!V+yKMM{TQOUQcj-CjE*yzc%O?l9wNbO!t_AlC!!-tCmTkj2pgzm|?F|%EO~& zW*(a*|DAWNlDP!#jV0q~NX}kbr^Ivo*m}M)CXVn04XwV1vak)$J8?XI(i@W3w>TYt zxe>sZe1W=T8tbl#|GF_}T{0~(foz^u*JXd*h&q$fVle>~UbM&@HB8aa>Dwlexxn|& z8&juz5ltKgMZ@6b{$@3?3lt55eeKT^BO7_$$(g7kUTeT{S|b~o`c&whhl6sW_(C+b zSbx7j87vTp9Bss76;uqqy+e65M%H;IS?B!)_O;+6`>? zPq(0kRc4(WWFUMwLuW`9Cw%SS2suOh(fVPQEIlqAhg@=fX-Lmd`_-NuI#2+TlDNGG z9S7qw5|c`-vb1l#C?G*{SVtHSGL`zC3&c zeRi>5Tclc@Ue+TGu0MW$)YW=by5-K1?4c2Qr4)Up`DE*5|fIPrx@1 za)ihcKtN392=E4)-setbLN&#ohxj97Gx%sxFD)!$==F`w;Nqr~4x?n!GIrLNep1OM z?=A?H*q$^p!_-$cd>|0sb4tE2pW}PNp*Zj=59N(Fe;RpcM<~ce#2epKD$Dgal&yqz zq57*~aVDLmLbtQBY$gSSbUSOg4z3`RE96RsTjn_~{27bVGOyB}(RHvd2;+$Uilo!p z>$&pKTa?V&fG~5;Idmw@{_-&Lsg6gJ+;*sYv*O27Var*7Sb%1bgaLy;Qfu;5z71*?7KY18=JpG@FpV}l5LkE(EGO)7iWKg_!2&I9c zVwiW{Y*QzHOOb^dI@B>AsU{FuyImj2IqP=}@|tkSgYMU@JBBKT(vFdIzHsKFb@FL} zm>z|dx_vgi@=oQ0q4Sg?hB&oA#ISB4(8koETF9@grc+tQ-U&Lv4I(FS6NIavuWgv~ zJ7Jzu%$k!-;oL#BU2~lQ9y)&(VaDjIOa_K|c?;rkU~?eAARdQ~-T+f6i^i^VUQ{k_ zuav<-?<{AAZ#>A(zeolOTUYB(?>NSvj$7zYYcKStd;04YUG2$`MyV z&MT`v5)o%t#uI!P#ly?VP)cUXLo>lh9!8ELu{0HglM{r~IU;wJ5^iWE7xc30DHAKI6Ncf=wxpH%Qfhmq`0Uutk%MV@rP67NPEEyuOdmVAZ;UiiI%+8CN_Obp>?_> zc^s+6_6%J0RPp9CG4P$*S9aN>Jb4UpwJXaaPmY%*i4Tl6Amc@tKrmRf;&(^SghHR> zRt5-QyiSRJy!6P>!h<||sUYpjmR9R$$c|Vw4aH~_JgaGjqK9Via)Oy^{Wck2aO*fv zb^$FRm#Nh#4kC-d^)1RlpOI^sMSzR`(C{!L`zVAT99qxX>V@uy5okmYzJvxFXP$jg6 z9>3_BE^x#{%j36JB@BX-AG$~Rwn%V{7|9UY6jdhh4JjE1;VXn4B;x{qsa^M+06{Ty zKAGa-Nxx?9E*Dc@9apX2UhZHCw@|-IyhYBC;}kl0o4{ibpa@;z_{NjbwhGFgP(*PqUK zPfoivt1{NeAx~@_YBX-aAWwvm=HId)OGtN47~~BF8pR+*L#4S{c|3#XqVFh%9Yb8z zpa*=oKI)snqdua|vP&Rwhr=i; z32_u?6g4ly<4ulrGTOGbWAq&_DX=WMT2aL?-lE=PJ5dOd&8IkmPp~YEPoqj(#~Rd7 zr2`(ObjvsyQ~A7s>tS9kr9_SZfol>Duf9`2X95uM1x%@xhsk`<> zJLly}%4ot%L+iY4S#I{89C&FJU`1lG11|kl^<};iU;lzxk22o%HXuKK)|ZXP{(bvb>%tH3CK2k_5JpSFQPB{kbQqzA6)0sC@<~_;m}Fde z{o)Ya#5RPB4#AWX-K>BqV|T5rL%^s5z&5Vfg%B96wV+QmMqksAJK^)>aA5Sz#18SvGw8U@&V01(M_At&f4vY{mx_ykz0+$4}aE~lw7su+7=f+04<8D&mf#=$@V(fs^ z<2T3nZyF^&dQxmBd<{-)Gw@L&!4f>G`|zlSZw0Jwlhvx@TD zv%YBhUmN2+mtEgA$C_z-|KBa2@Qv|?z+!7Fuy{8gEH0Xa6}JE@R<;PXIVr(n;}4(n z3kWRE8=rrUVFB)U?`6pS&JI}1PBZ&uz*+{M|3E@j1E|=W$dXH$`1Vs8O@4NcG{3{^ zkA#X7A2Jd745|LaA&DBJ@TpH*ZZ^SN_SU{8R)U9IWV~f6%%2D>-uIKdv6R5#ys;xo zoFB^@U%n>M;${~fd8CB_v^Zfv)8!99izQCx8OeO9gEcwh7^}~yH?oBDdEWTc2V+Yt9U?m6eZKavbN=`vsty2@)^1eET~Esuabd zj~8?PdKygSxznZINE3@KSV=dXiLCYX6i5U0ps)X1pS?tA2b`R zeZ17R?KQ@h3kWa1PU6Lqe@u9>O*CbR7mM1HVSZOMe+`egp~mjOXwo-zH`X? z&W86LW(H06n?qP}cwqkTc|rhQ;Vj#*QW4e{*6KsW z$r{d=waTLy&yfU-YqW&KcmG$SjzYmI-ki_rKEJ}&mX5-le6k`OD7EBQaG0az?}LyaQQVziz0 z!Q!G0aF|zTl@Kg0!X;0Qm3{9j!Qy?GSOalHAl|#X5-sKjwBg+pMp^uJB|Fw;ktu9q z$(EGmMZC$JVk=%_02XVrM=6jNg`!K#_$jteSe7u;jRi9h zRWKp5iF|w|??bsGVaT8#$3Z`~B~IL=-wUnuTH*`GClAk_~?i)GOW&|+CMaw6}BA2>A$xY!1EM`$rn zT;KRkK3@<67LX;Dq~Lp(I=mp3Z>E6-$Zr`c9)g~asfBPm8USV3KBhJfZx!uC*kCsD zGF}{9yIF+N^0kOA9@d%M8406KdHR?&gZwpnBt=%dd|>DUOUt%Qsf zalXH5ssZb#<`-08#|%z3t5$ho&%t@zeW0WbD_BpmDh00WcO9ZJ_g` zWBLH)`)DxW41a^7k@ksn=aA^LgJX;Lke%Kb^1ly(GGi4BdAt)f>R8*p*r<;DS5Cye8!9;Le~@oUhOA4pD6#LS!s z&|=#JT5Ov-kmDmZ4+D$MGFVJbDLz&VdIS?WXG&i2(PA&y)&4v_5@vfPePp9zfwu<( zyh^y3k5B*(E4ZwiwP+&_%?FFs3wb8K1^Es@bq+ywf8hf0 z4BJPFZPO*BxafSm>qvr%cVnM^Nq8i%;sySf0E>5P!(s^*7ib1Z@iO?aJ~g+Cu;ShN zX_mlZSl=0EyRn^g$I}57@BW{lVweELY3@5}#M~|TI!Gi? zva)G4b{AsBc-&2GE9w^{7 znVAb|tBM>FP~znc&f_hF5ie)fI_hDd#0wgn4NZg*F9(?k4tD^F7x{C*h!?THO1Kyx z@q%v09akcZcscvsH}JYkTWx$ps*JsGC_MQz1;8VSQWqJ^N~b$*3t=ywOCYf{?IEMP z)t@OZMlybW+{cJ1lLQcrS}=obr3>PTY)~eWs@-K%z*4{yFLG%Y6q~I07UefKflQRH z91V$XAbTh-3eOywBz|Ny554Zx1-&iUWU^sf1W#SLfDk2k-I1jh@D#V9&`sY=9-0Fe z%}0%0!v{RuHlkLcQ?3O*ngl&T&IMw;3#50?B3J%z_nmjD%#`P|737FNgn-kPKE0}%+O;@vqBmLNWV;nssF8}57uKH>L3 zV;jL3g2oe(_me^9m4mE22YMRTM4~P91Z)ku#PdA?yFJTyyhCEn4#4BQ_e4uM#>nta zju^YZw1*55D@HZn{Ang4i58R#6Y!HmxemYk4|pmv$Cgy0g+;NeQ8LI#MZ(7wu8KVd z#?UNUt@RLPPaWJ@lG$-Yo`4uC7WIDz)W*ARxUnJu$o=1`Sa8SGAplvYK$CbMB8u$j z2!a`7+p#UmpR0WUSuxy4Si@~A{v{lovDP7;I ztBqG=zshf@CS6So%-hi<;hlr8w&dF zZzG99#9wI(Fc?DYDBwaD%Di#X@L^5#9V0^Aj|Rqwh=s79D$brEW^RF%N`U*}xfcoY zg~c8lxF276T{y7qz}nCop@sx;uTcGhGXScLym%S;a|rpn?pn&sF2z}!5`DrEH)2@B zce_^1Vlicg0Rv)&5CrrNq7F0EJ2vHgSHpxX$dGHgiwwDmOgPTGf{BH=8zl!1f63&u zA9!-~p!lK~0epuvFi^g7=nVx4A%JpOSi6t~04T~xv#Xh8v-m8G?2NZ6M>vxL7b6)V zGb{T$H514T*?hvqhlaBGXNq>CG;auMrgc%L=7(k8_&T_!$`KU+AU{o--vOI(Vq4(P zUBWmw*>*}GWHq2C&}|zBl)Q0Z%>)}7nw1c{b}JbfBLaM?baM0oYBpak37R|u_E&5t}36&5KOQj}s;pRhw_gULii&Zr!gJBWtAr{hPiH>G)CyX>UK$nKa9m_! zW5$Qu0ULarL6LwDHpAzza(u_x5)9}P3;Vr}6)#A*f%=;GvA>K=-hsBH-TWu(sP>}GH9TY z!2l4r)?mByGd2O}Q-YU@A9__N>Xi_nYuLD-669QK{I!*DX~oulO(~+&uPOZjt3^Vb z4I@MVaUc|3JuU?$FuyW)I;w3}aTmlfhCn$^llMgM(3sGgr*A3xa|N=s{4QAQ9|`nQ5B=&YU;5 ziZkhGhd9fdfQ^4TC4i0TValP9Koow@j9tDU5Y%kYHd82uWN_jRs=T)i_{BJE;h8Qu zF49nlUGlmU!$@<3cLchFrq1s)-9yOiDj3Q9R<{{ugC}}D8afejV&C*tXCHKi z-ynTP33M50HVL;zu$fdb;s={q4mLPT1&n#*l|r03U^M5=i&}$fEmZmXl{45IJQuf$ zHF(*0JU|(t0l-B zBECNLwi5B>HDz?#2bt+W(Y(*SbpxdMdE(v{K-A3XO%YO{239QI7i2x*gUkUO4$^KL z0P36$sbzrw?+fwpkJYExc+^$G`x~$1IQ^8rA@)&$GK)^zo6HPtjJe%@|4W>CpIx@b znc3MfxT*~CZ#UGlf7SD?QRcy00+bm-AmeTZ%#4K3>==}L#@`ald)vjxh(}um!pLX0 zfM#0&&OF}r+^vbY5^09fO|x#p)#yQ%3V68HO11mAx_;09HPVdYE$9DdNb`T9CA(!> zGGCftx1Ue|FIhbMIsb{8{G|~841ngpNub#XfM%2e3~E z%#QA(%o2>g6gbi9Jb^8j`eN7wGaG=J!9^y@89?T4#|lv95SNDYNF$)=%&U=Z2mIpn zY{D@l$V^}_+5#C_(x?G3x7jOrcB&2%BDB>AV#X5zA43o`-w(jGWFyOs05K`e--Qe|*uM92 zpt!v)MqP+6ORzc)<*E}%1{;U97pS>}N^@~B$jZRFfPVU9WGOjKpzzVM$136KZ^Gul z+(b)6ZI&SOPoWZvHX>VN)!|_gR*mHWx?BNOXYU2HY~DoBautj>ED0@>aPNXVo;o+E zRmzjJj7~8)ENJY0haZwS((7iTJ_G03J=O#z8vJAlG5@ri$jHkF)ls!g#@Th^&A}lq zGW~2#cm-1056dt9b!MDX@;vxr={~+}0$;{0Ap>Ke1xM-iewJ#$~n8&br?=I zUP(wcT-5Xw$Lx(aA;7$}g8*jp z`Za+d_7ax2_An#Ich{L;RI-twntX47FI#1NInfQBeA2`QY7DMGnTrgoGBL^|&T%Ea z9OBLayi7+asmM6WswgKaGLBt}VsB}TJk-G@xC~M3qSJ3P@yZBxNuem=<%e0-?zZwu zEXH^-|Xw%FzL;yh5VNK%4zy3AA<;>Pw{D^D(vX z+Y1QDanCU!v0Qa_ea;z1L3T(x8hW)7QqDU^bqqKbk&q(+qU>YTAl7D zSzO$Wy%TZ^K$&Jz4R#q&b}&nTa=)AznJeORZ<_}|*^}6G5yu8!Hz2*KpCpD@$l~A0ykRIk122wqRHyUJnnMip#zxr_fLgdjqVbhuXA)gEYKvHoNX+y zfJ*RCHol>eC~1@qJYx(7j}8$5|Jc=n3T{b1u6Ccbsz5*XeEP9k>n?_Op7-lUK8$9SJQF9NQMNbC2?i< zA0e*%Ss7Pu!eLf)-FUlFd%iW2k$uDqb%wVw`fW!ENL+3<7^xboB=z?BJt zF;M*Sb8SG%yNx0evY`R&6K^S*!xk#9Xx~GZy#QVA z_ewyL0WL3U@Ir9eL&dlcF3ULyE+-Bk5SqYc_QwNhmKezF_k=E|EKsfvg79j|FvU57?lh^ z6IBdc5|QJC{#laZCz;5x3yO)vmKx&~3%Cqrl86*TfYX0PnRDLV`zBo01Xz!Kbs)i1 z%Slrb)05d}U;22bXIu1nqG$X3WY7%d@?r@7IRIUe_yB6|#odyr1>mx`HMop8lHfA% zJ#$T}v5RtX!H=i-d9i=>FCGtnK zY(?F)Ym-O){eBI=uOfnvtHAvdKD>uc7m5J#%u?WT4_|mevy%cbN*C@8ug2eCF%~B zuu?fAd!gDyK?A;_bzF+i)hI#&0H0ph0$m%!2bA0wT*u!w3C z1PsGZ$HqxEx3caqs%tQ5r~~51sIY;guMv4Z{(>%A9_m!Gx93sc0os!xbutS}8#F^+ z>IAxB`N^2dOT9-k!-&gk<;n&mEYKUud^;=j>h*iT; z=Fz5(ge9~pSGNWO;Z|fnm&ksED4WA-W?TwRj8g%ktjl~jjiFSb1w6UK)W-$U6&{C2AxTv; zmC-c}*h6s=k`f^Lxh2fb(ujJsaX`?3_Cus);BUy7;|^g3J_s;c1E|NAN}3tQFme8Q6I_D$*l>{r{=p33$M97|a-TnY zZ@`KtSd*Q4Kb;+rJx`uJrV?uUPpmYC0gQTs?e9-Pw+~P~hiHA^EJygP*LcW`r{^>| zE)b7&yWjhaW&bDj6+C1BUCoAT$F4t@3Il=t)|me|K~z*L4DtGu%Ue;6RRnTORNGKE zHqqnJScxrjrkL8f*sQ4j<52zfM=0DC*H2Im-3;boa3~aZ&mD@5?rUTF(hH-H?ihp{ zhrk}G1mIo#6%1X}ams5~OTwQ9_1JLe3h2rhx~PwiXPXtjufhmJ1v|bUiZH_lOoPv1 zgc-Js$R2~xco|{J__VJKL%xN9GVu_fFTh#&D+l9L{b9@fuXH}~;7t@@UNBSzy2NNu zh|50>0?ex<^CfX5U8;nrUNCYEjnKqT#vud0>AxoLe*S!)tHq)D_?PQ&?Xk(P`jLg( zp*&069x+`#(bVKwV=8eaO#SOHh%9p9q4m2>RBB|_w{)XIO~S>IVK`o9*H%=Q;m1Z~ z5sp_`=;v#A0Kx4vv1C|mdB8-m(MG6v(4vaiVq)R%aZ%wIVP#XIHvl3jn*<|;;T6Z$ z^k7Br06_98f(xaE!T5wN@US8a{=)YWimvAm9V#xBw{K#?Ki=+N#lQj)Q0lweHtV1$ ze^%p@Mrq_q-*bm@M~(kHlApVxhI(+>L^Ft+Fs@8LZs>;S_psxSWMN#Ht{ll=)*i-H z#j`#Jr|Kl*jop)}uF ze%K9*5kRx?`^pLW(2t&p7FB{!AG)#+CtC0^mY)f120m<2eTN*i%FzW2Pt?0uzMO{_ z+}8YZ7c78qRhfrumnucC^L7P7JfwP!XJm@6vg)-RCQdTl`Uni-XY7g3Ra zJQQ9Dr06iwH2N(GG?L?ZNC;LXa2F>|eTI9()YXm>SKnnsH4c_Ah3X=9Uyz7!QQ!_z|OB zy&lh3^$f%)`eV}{hyJ+q$E#-p znTu!6@8WEa_gLdQU)0PvP}9rAP)KL*3aM+7#D>v4kXDJs;Mbv|Qr_Ji@qgeCuqd;2)dna`i%ezOh zMtl~3$YG7V`#$eD9NMh*BByT+>X}QEM3eIYhmn;M-BY>FHb;zHJR8MSdxDJluRL-R zMNlJ~)w_?0oF9SX*rTlKwodL?Jfh@`E7W^t_8+^j-)Ch%3)Ap@*q`A6$Bg6V%`Pge zl|eHSigCy7AY2&jZp->g*1_;+K8f+G*<_&o?!k)kMx<-Wv1=InE3ZCicUCvOc~k6F z^!uw^DVp0W#b_tYi1nKoQnn8hBdHxC$xL||pf`MborjsI9^>sB`RjWzfb1Z2!zTAi zQH=i`e#<4n({FKcx&xviJBle!5?22nPpUt~Bg%nj`3|9!RIw9FT*mnZ!S91GrSUAQ z*L3)Hn&*QHNv_Mu^Z96_?|l6J3pji#OLr-}+nB!PPq98$9JfxPl9BD_+qS%KX_~DB3?bm*7l`J6^dl9 zQc{;H4QQLbVB+d3*g#_kP51_HjMya#I`_tzSkrg8+}{VjktcGgl2{~)#%SyWN77e| z?KAI2#DbKN=W#7WGx2>DY(4yaIM@gNDe5(%1=D7%pB)=R4_ef|J$?R);2eq$^;5Zd z97l=Tr!z4z$DT|@|&i-}ER8okAxZ{OC9l>@oX~7(mF;LUg;+e>)-k zE%3Pk3#ps1jAxgoMhxtS9ra7Ir%|nuaLht^sBE> zn!PKO?C02r)sKC6)88%9KCl9)VbobyD2WWHXqG-Mxp>a8 zT%)v<)+il4$>)@s5#8ym&T7Qt%0LN5)gz1AIM&^uk0a~AajZ}@@UdvpAB+Cj`17cf z>`nI1pSgU&vGZo{@vjkmBc6M4y}&o~7A(M6vuMuZCG$t<$rC0u{C?5mIkQKMT(pf* z+ID=NU3!>iV~|*~jh92&aLrEJ*e(p}m2R=`Ho9Z!wHOgaX&X)7opmM?lRE#cjp(0w z^t{6tj4(&^ALjl)7!Yh?Unpho0e#0Q^9+5*87e%j4?B9{tfT6cy#wQc_5aOyV0#6? z5c`p`QT@N!4k)K8{4`~c?|Tk3?RXYDCG;Ekz4Bk}22Km@20mA$)xfdRY2YCDFo=dI zgL|2?mmGBY-&4K$%oXwMFGLmF2FAW9Zut>wZqts=4;T)dXN$%T47VYgvuF-~ntSZ& z-lphBNl^2aIME~Vgkt_NR$D4DJ~t7a43EJ~L&?ag>ld1nvs=Md5Z|J@&Mwu6YX@83q!Uu`gNtnWm9C?pSDJT1s;079 zV=7M1oXYrW;Jlbf=#dt{8yUPGe50dpX#w3aX@P?UW(iHXep9>!n8sAbBB!G~95bkk z5B5O}+2mA6MQGT>s@OX}tiH>Ey>jd*v5VF>qI5^oINLC`G)GSsU5<6KNUot9bSsqf zOOG^0xOu|F*_z(YqB*M_vh~}*d)nI4=$_B`TifQm_eAt1#$IdA+VQsRzhi+K|6Z|O zNnqhlpcH+lGIl+S|3o!4-RxHrGt`_WwecH`zcGAgn=J9TD)ziKG9J%C76S*PizNyQ zvUpyTa$xV0S^opu%!~r1(ijlmB}h>Afo+e6p#S*%V-A1*DH`FUk4c-zhai(4nUZ)g z`a2{GoRP7_XR%SnxR0T{;_fBbFH6Q@bLWgFnTJonPW|R%f0bZ(cqk!Vfr1X=lBQwZAdgY!;cgVLM}qZJMa(8)z)L1$Zqwedj6S z3MSrD<~h8z{1zETKAR&pHZVsLS3Wyp1Ov3AWqs!Dtv=~^)B3Wc{A z+s)R^F?DNtmK?jSu^s9Lz0J+Ni{1BF&bw1l_Kc)i9tYmR(od6i%B3uO5qZ{G7vUl1 z0w&m@Unnm&j9ctkhcMLg&Vi*7(oLK9nmC)Xa%#1{_+sS{{E~-2bDT%~#d&0diykdC zHrrU5+@13qBf-KPCG(6DmTqtAx`}P^g|Z~vRwQu4)@Ui-(XdwXAi>!P)o&QYj?xT_ zO*5FPBZmK~jKdd)Qq|JoEPE)6=Cwm{VI9iU9UOpzhvEV1L?I@yF1>GEdaUCP3Z)|k zpVQ>!a4ceKpJBd)#+y+skctaMi$z|-lR$wknj5@t^BQNTf78G_u}Ml;sCTAIs*nSE4y>3VKB|mmr#P7?Z%U zu*dIOv_3(`+`58QeZrK3S>zKCp6_OL?k6ny5ku;zh%784mBeT9Q{w6QqiBbwU!wGC z-hPaK7FD{~BG743GHs5_p!f``Ne0Tv1~dl&f@1dbRZr86KQQ=k@^cf(&#Uc8-f%sV6{Vv9zuTHL2gc}nl#o2)jQi~4| zaQI}p*K}JMyAQ>y;PN`R;(QJJR^&QHnX_pX}4*`G4eDSWhrt42NRZhIb#aX z-oqF_WlOHFpC#9_27N7bw*_OP+^@xLj9B@!k&BH^i1B1?xRD;kor5-Nd?efm8)TQl75kW4I?A;WoYL0fCwVKz z4=it1TLrc}ZFbo8;bv&Mh<~h$eiqsncHU&*%xFB22bjY~IO>>k`^g}u0;^t&g(d9m zk#@#6*Y<1HjiT3f*0L&WCCk^=vPh?ey;H+6Wy4|0jRL*3mc?%rcwl}2JEJP8ss~7P z{Q=hGVLOfX_5ix$CP*)755RrL*(tp(kgMw$KN3>tv8wA(k9sXemOsYT4$C|lgM8YA zf6=H|mt|Gg@_Ul(TbA6I;HRqenlL%W3Tk%u*1?J5HANgoJV5!|7Ht>GxG5gHKO*ZMCW)vz`0g3VU zLI0ki=5(!DeUeeh_6P(v^~JVL{Glckoh27y+hgiFbuY%)N;Uqww!Bt*jxt_}Y+#AY zt84TTju_2SGhlErfm-bwpWJCzIKH;mLTM+l$sU25VX{z~p{O^c6mVYetd9Kzwn;yK zg)dZ+G3tXXYiW#l0k`W4weV#cvgM z2_oSV)QLIpk`}+e3dUy!t!iDuP``*)MkJ_E@KTl#XQ!1*F*xX#G0q2)>fTJznQ}YJ zUdGf0`!d#oe|Yl2%9pVu|7D6_h708~vNE&~RB zfe;fPK)d4FtHt66umnc&m$B5RoYz7cP_`TU6qW-f9l=SF;YZ+M&CfaCC>1eq1hLPt zCN`%t3-{0ZSnT77xcGd2otkV<*BWzb^F|-ND4vV^xvihe;N_A#;nUH>HN@qD^PYuhiHCR(z4{Z zYx#qB^0(k{!s3%VtNQ4vYF|bCge8}C#$vqQekR(43RYhI5*0%32aypQMXcFZFBCcL zp$_WEZEsL-k0Sd}@0=4&{e*satcdMnUAQHFs0ziL7{O{+-_WmlT_Sc`vvQB<@+@erCwcZEtkrH|E%pAYu^JAz-k2UuUcmBtp$)I5n-VB&#kWx6=K?Yg!ViU; z;Zq({lwVdUd$3w<*JO5Lw6Wi_*G1a2iBbHRqZ;*z(R4A|t((8YckNNWC8B2Wv*{-0 z^T-*eR?f-k??jY8GEhLM{AHJDy?zE8@TTt)Rg@jrgvCqr!|0jeLx%d((R20F#^$xR zFXJ0()MwMFdcK1O3ER_=+;N^zTG%!$vqEVzouEHfQrOQFRUyLZk&2jAr?!%A z-bf{9K02A^t-kG8&NP*zHHybTT`;UYl{)v4OzPTJHH8Y`8(Mox_;HkDvhi6NV0Cbo zo0U->W3e5`w{1KX)1rnBo;>CPCVqP{koh$Y=Mavkva% zZ=k^H$xL2++^Qaj0pvIua8QbQ90rg<247xrTZXhrmr)JYGRmVZqe#OV%UBhzKCEyK zRxk{#P;i$auZWpBQ6^VNvX@$-SmQ`q16xDLA5EAgG(n<_vI+9P&FPb|hN&%+-1lWH zHI1uJqUaYZrV&hNVKgnbXdhT9HI<8mz|9s7B$-yAT_kA*d6YOnln8$BC_hP8>qb*{ zhjgiEU6}TY_J!$)*ien`xiFpRFwGKDSmuRk#t-Leisl!_I20w@Sevy=tj?IuvKOXR zevfEb0%w}z6#vS_cQJd3EUfpMBdMc<>k=ZExEzr; zkEi<_?P$jS98+uL#ynrN?#0IM=CHB)VQQ>nVOu;V)3)*ggeQ@>S1x@VOFb;rzg20e zyzr=H`cc&zQR%kh8ji~G4RSf;zWs;jE&c`7~6w?caGdrjUJ zRQ9+Or_;zQN_&N}z7hLS?$=YKBK8yN6a*f{>L>SA|uqi>+NThZ;-PyR?_COejg1{ISGpbO*$R#WpQiaeeBla@ zW7y64yp#H{-$@SuC~k z0=c1#YNoyBft435+pUUX$$v17^XWD}hYBjNKZ=spNkE(9c9{$>!bB_thsijdSgmfS z{$1KyA_0&x?ysCIwJUw{2?}Vfg4Nu*3HQ60a_*rBs%Dnp_F5_XmBM_a1q++1;uG}V zHD3wtKi4qYL?}srE-j<9eV=3^y-J3TD5iRdCU;A(T%)5wTDwa$ts>Aa{kY_>`o;aK zF}@*#wWP`yF=Imsj#H}Vl~z@WXiTQMDuo?Q*P0rCP#AkLg{U>zS3b{f%ui}jcRp%r z$yyVOP-trF`dbSH&eR-T?BC-JH8FW{r7S3x&wKmA2B4AD=c{4u7B2uxjW|^O&7d|f ztX+c3427k#VQrKb$64dT+*hR8_?^OYb-Bd)A}xd~O2QmpqC8%sh;@`lgpLoY zGG_0VCPwnF<7E0GO}t=YNE*BnOGWt9)}F!;|M1Xf4xY|s`c`dyp??aj=NK!`oLeXd zdHTYb5AT!vd}6%RI?**{%>2GUGF-$dW97N~3*>eKSClo0&p53>K1SCnbIAg^92d4q zN8ofPOHMTkl5bR4!ia^A4N=#N1*^5f1i=Vd-DYXxWFN8`m?ii%-2EPl1$~b=eUBDP ztj2-LRzqVd?tTn=xS{b{uJ6TqS$w#`e=0WcHE@?-D)2SrS(W~Wj}lqlHJ#iTz$tDs ztUfs3X0#s%n#7;$V!rCjQ!;|gp94=V94PpRac+oT+DKTCp+}OabVUzxm7+Jc3si$CQ;p_}oF+kk=p!i${Bnj>lS*%uXw7)s3qil{BV8ux zerp8jg|53Bx3BX#k3-ONO3*X((mOvAvhupa>PZRu3=4fy=3_5&npRyjy&FQ1X@H!g z?4m{|A$VM3#;XLqagtrj2;78*MfI2_L9ep}w5Z#*vLxu=hDgve5bt_FH7(raIiVlP zx@LfE$KIHSftZlM(W4m4SdOH_Mqq|Tf(}y>5);&>yaiWrCFv^y$h*9Rt{qXw)hI6; zbv+KUr$!-d1lda1F^aMzggs?rU@03*P#yAX54-ki$a*~VPC!XeItF2vPg5y<;(Nmt z^_2UC*;_aogETq?%d6(&-L9b1s|I=Gsq;gP&}6v4LRNAVk?zLY_+H zg&fz98M1j^{?X-zyl@^8!8uL{nrg_w^C02f!Ri}sWUela&z;+k6ZCL`| zDoVU@9;BzVZ3yJSmE$m4G6br%xuY6X6e-0_Cq`?(hIUO--qF2J@^N)F&j3oIVra7e zp%5H8A)d;MI<+;d#*nCIA?gw{rifP7C!MAKeW{;xJ|x`~zv!AP>T$`V5nrXw*Y**v ztal3?l69EKldLZc3b}KZlS?J-S(5fexce{nt}E~8caX)pUMSS;L)9=k!E@;xb??R( zLUwEuay;W%kR%XtTTdzbyCJO=0l8n-N%HzrA$o`8p2j$9J4x~K$<8Np^#{ZW=}^G4 zhXu&I*z;c&1<=2%9;MDYveK08;hyV=Jr)TavCp^->K?uGnXjd9hFDRGX`XD`Ksw zgSCh@7p~(GsqY4!8NcrJkksd5kouI8`ds{QsZY65pH8-w`ZNsZ&~K+nHX!urR2!l1 zn@+0^9zhWLbXp00#u0j4s$LYj3tjx~0=J9jjhXm-p;Y@j0aNZ~5fZ62d0;%KdUsrGH=1(DmB9KS zt{%gcn<;ed(abwht=<)SFfB7{MLP&Sa+p}_ic1(JQ0|Ghlu%12R zivEN$CHk4xVHS!0on8|Co}Kw}0ns;mb{4Y+QMbN!uz%|rKw)CtZeySnnuQ(F7&_Sx zL5f$HR_*}KE?Zrq&7`(vd`I27r_g7m59ry9oltkFS-;l6a~T@aTYvZkLNZQ>8gKI) z?70#0yI&M#yroW3Zm;aQ+i!UeU@^LP+uIoaQqN9f1aqb(c-9es;7kisu17^+rd64nX<0`VG5*#gMW-~f=-3LalFxcLutkQJ zIkLXYZ}Q{9I%FM*%2n^9jr*%~G51*d_A{-Z_&Dx<`Z@a?-S+A8clEUNf-2qA0 zxxUJPs9zUE&ggD#RW$QjgXDKyiJZ}BJ(AAnEZ?y=*?1Or<&9VNh083B_>)v*n!}VM z%P0o~+}bMPgN2e?n;u84X59KdG>d`Y<96H17WHa0@$lm~kP)>r)2hj)pbGFal}*tY zex}vF4}L+$hdQIiYz%$7cmviJRKDgx!jbXRVKSaZ%hG4!Xp5LlLSB!)J=;2Nti#q& zeH!D&x@^48EJ)neAH#UFxQ<%`J!oJv#{0%h#&QcH=aiJs%=hg%6i9pCYt8AdWivSx zgU0YVND?N1FD3aL#U&R1XNgMc5;^B;Nj@Yav)li8=x8uRjv6bE^@|0yKTBlI%# z?Qd^X9X2ko6)S`u3Fb8DvpUe1e9?Z0qm}0?zI%gSDL5tF!p~2oiAo zXc$2PKH?bv$i-KBF_HT!Yxa!)k3ksal;I=uZ zYga>e8gQ2%*5=^3tK?f|VHDf8sjH5i#JC)C(b_o)92(R5d~0KGov~x+kjT;k01BTU z38)DxPP-_`UM`G$QV?&hYw}UypJ~Ar5ar6Is9R6d2tJ!8QIBF-ku_#>v~9w=z%=kE z-4rnEL0k8U7rc=5K$XtpCpgU@#D8kn+6>GreBdDKn7{yEtKO-)^)$NmXd0`luDWq1 z?C=3Xkzx?*99phh)XmU}xeWE`#jgl{>Qa6@W6KSZFBDoi$-Ju1|EdOb>UVYmEpwI! zBHUVWsuu2```7#0-WSf0LWNvQLhr`7wwkAMIalhVx#U3Bn2Yb0s>eI3(&V?d)6um< z(8O7ErU8xU6Nia?k~$P>FR{GT=URu8br{hP4xmplOX>;}qeIl@=+}e*HM(6#`@XmY zLN9;%I=D~?hdZ86kO)2RjppV;=yM6QBO1@=5^6kua{$6on0plFKv@2vxjTX(_*nQj zB>3<*rBOi25&UTGJy=-hno3Y?h<-6HF`{n>y-OqdI_up4HfyMiK2|xBR2!!5IU3K; z#Ek7K-uktD;atX#Bo32$ct5Icoid4OdoHc|b<`L7^^DW6;{yG9hH^xcc3h%k&$vRb zEjOHjL0t}Fp-nZ|Nv4{xE7hxHUUu@*r~{$$1+6iWgUH*5iG0HO1mbf|iG0o(T6G~j z5B2JgYV-wqcjo>RFu2O8yYd7}JCgZE4Au6`FG^uVKVm3OrJiX;Q#;29SPsW4O>5A* zdQtB0CE6?tCtnzQWuToo7>9bKMq+0oCybs4!}kh>R0C@#VJw_e-S1+#$#)Oa#21E zCghsAkt0MRmTBrYT`=uX+n>m)v9=pxq+``=#L1NIP0VK1l^R=dDLEoS=2`+f2_sdo7V0oGHVrDMS)Lz zs%CksEYwLnmimHQ_XGuU^s%O6-6Rd?RL#r#&4t$u-~g28zvuILpn(_0-(p&HpME1HA2Wv%B7hlIf$nlcqN*OIeA<75lKJdK2BGi6KO-U9<$m5j2wDGhL(h=9;~Y?O>Md^ zf5aX&n%`PauS71jUGk3wPVAx0nf>na-F3`((qf;Dvd*)*^GnVOHPGT6Ocke?njC9s zXn$ks_>{5e^nLhohlKq5R}6)<7sUU|5uqC){+p~oR}((?nAj$swlv+u*5Rw&HGI=d z<~hsw7cJdk?OS{v&|b8RO|*0e?+Wu3%UDS(cl3L+WlW=$J3Iz;_qt^a^;!+pIPW!9 z9njyhj5@DaRALgOr>m<=l*5s#hz&V zsi83Xh}*j?eXqd}T&W)X!qPVz{584|yuYr0ZRzU_Y@1bEDWiMn1^NngsEDTp7H6>) zzZcDMrI&xQ!M9Av)kB%{74CEw?eG=$T4HIn^(ia2)>ynT9##`h2R z?5D)?t=?k2fKKfwz~!b9Pz4>Y+tK zp`&@_g`plAwOi{ezgNESqu!lc`_b%&ir#Q^!`gkCTE%{}ij_gPRUj??+vz&Q|GS_r zo=(y`?K7++)k+>@I!QH>!OiG6D${x0QKqpcyRt8<{n~!3lbzZ`Qm)kz+Q9nIM%4}O zf`m{(c~?#4l?-hm&vjy?-56=80Bclds)bye2&!^U?u>-qD?2jtNt|^{9AKkwp(fLF(x4*_UG`RQb_-=#d^=W&*1!^aa_|u6S1s2*H z_FMjLO8)t|I_2#a&IdEAU!y3F8#7T)+P}QgI}>ukTD zXo0M*c~~})vAsd@{I!}F8_ z(v{dV3_Y|&&IpUHWO(+-67jg9J-URC4jZeMgzaPdifYYjUIHNh-`|GKjsG8uS$mI_ zS^Vdb-aj~x_~c~Hy#S=#0@~&%arUKM&Yu{e4bl$GItEss+e`2Q|Anx}I_5IZWEkzO z6-L*190rI(3Xql6CU}t*i9Vt!mMgm9&!en`FJUl{{71QW8SSBk<3F4!H*o(?g&0O_ z{b4t^{U+`AGcnyC$cj=kHwI5#4)fw+%)ee^T|=I6%PTMdf*mKBfu^bogO@FbhyMkk z_{2=+{E)E;=}n&`?g2z?JGrnd5p+({F)g4Q#E)(10hh}oaJXQsid(~5n6wMQ%K8~- z=iJX&yl%&MrZ>#+te=@tW5<7n1J5mgvoy=nnZ~3&uBASkdJbD*h@${&6zA(g z#KA#|UeD=>gWz&pSQ8P)XpcB&B2E@@GKiy&{-QW1g%Kx5an44Z4C3GsYpoYV^DyE} zX~7s3najao6UQmKnJY!49P;e-T+q_hMr>fF5NjIVbSGjZUcyig*(K9D*jA`WMi_Uo z(1l3Gj26E4H`A?%*)3fDj_f5~MkM$H!LSYnw1@-#rhFMuvd<&RoE9)w6N6!N+Wr!@ z$=A1AJPD`_D>t=)%v!d}EQ-(b8#k`1P4`H1w3bI;vYdLj(yW60a24a$Y;Pq@L$aMr zz1GewF-8(tohSqE8dZrCp7oBf!153!S)#o z3$prjK~`~}$fA^}a;)OyCz73WIsX(ifllwS&!xW?6L(V+?g0-%*qE;Hlcih_T`NBg zhH^EGz3nyQkM&N0iP3EKTNJiWeh&iaKaGi#d>wPJNVg80%3ueT?N9p@k+CURok~nP z*1VL<jRG#7bT5S4c6=!qTJ7{ zQ!DuZB$?gG_*9SiHpv7mAEzx3Ie|h7DpVm zvDPZ)FU4)^`YQN{KU{<(yy#gtchMtY>8)ZoMXs6h1miRq;g)8bnKie)R+Q{rrj5jD z?kZus1@>|A7UrAV+`&%rN{NSY1*U%svo3E&(s$&aZo!NkPnRMDhrqRvhk<(7Z~Q8( z1=?GkPY_RQ=9?XB?9>N-ai2;01Ybc^hZxO8%FCfR)jVAf^I6OD?WI$VLuojQGgB9Yav`)F)cE--;=7LC#o&LU)K85pr6M_pO za>haGrpLqb4JPOu)-2y#T>w`zDAkIdD1Z;1gAIbmFQk7v zte4H;!mz#JBC?^Gtoh(9@^@jS2g-2#-Gfe9j5iH)8EjWJ8vbQWbg!Z(m!Zf_uzmX- zu(WH6+%j)qK|GhZ(+DV^3HPyjShdBLp%&Avwb;(abIIE%Jzk654N4Dtskm$1(k!au zNf@g;HNK3sOXJzpDwSr6Eam9c5yM*FLn}yj)!paHSv$O=G<_pIr+o}h&}9sUcerQm z?g6ICNUimIw@c!|%(bd8FDi>VO7UZ1b?6Dt<9^b4P&kFj&O5v?cx)^^29Jf-CV`d2 z!ua=oej=P+uJu`G7!fRn78{}ZF7!do`YwTf2LJstZI>P#xfmS&-Vv>Y_f5xg{bAv@ zNvB!J4mv~VT{X-4K@UwfO4HY%t5_`L02o1u>Vo8FOnyNIaBQ9t`h)j_{Z-;j2EN~V zIP$>gZ43{sQ*X1@bZJ4n|(ier~k>`@qxhRxP$CGDRT$~%coAc=B+9F?YKyybsS>o%Oj^C+UZ%7)h zYBr7&35DR34UmLyAPL0SM%epXvl)<@4K~v+3t=l3$6{ckb~f`5K@zDCJ!DOWD=p-Q zKaW0^9-$LkBKYGQN{^U^^9ZPQlt?c;VdGpEOotI|M042gIMaEHU+@Srp;v~mk6Q_Y zn6wRoxbFnWacZQ%(V;3QNlN5kkUjVZE~Tf@3XVb=kGW~MIsGUI?{<|_ya^|%;mJM9 z?hUWxXLQz)#A8AB(?M&a(cZFxJak&UnyzJIV}qKk`a-*2v&IG`ou`=Mec($S@yKtA zv_klGPUsHPp)4%3LgQI@`aX$$+tZpgIchE}Q@e{`fTkCa&#^%dKgo3D6BoLCTJjTg z-)W}YHk(B5Cr~_x8OVs$BWQ~AD#T#je*p~s!btBMEhGnpB{EqS?43$xFM#QEUp;Vv z(;ZnC;Cra5{4s!Yv~7guQYvx@Mg9Phe<-5JZwGqem~AAA6HdFS=t|-!x~jx`5j`D4 z^mqpqnj?9nQ1!8|qtGNm?J|}4@*?0|9@j#eUPvGM>_EHJg+(G+FN1&0nK2-M181#m z{urkB9RoQGjq3EESC{X#=Nq)(tmY!S{}AH#gO&k($S}P+Tv~ zLTY9=3%R_YYIIvp7OR2hnF^2vm;n&91q3G%B|iS+yG^= zpvVIww?u7#g^D~THwQO}Tp^^UB3J90xIIze9pn-Fz1q}j@mXbHBtJTi!@01}y0x>F zkb)oN#()Y;<*W^U&)_)l2$-?WYle1c340_3ICDJbl%p$~F*{yg=y@*U&W>p*NS$(Y zZ8OH9v-j$AR0#T1tOdzBg6mt?H$yRdO7$ECxv9}K_{L^g9DhHo{ZvkgVI}ETpFj@O zfeZfYF|FEFs69YoZQ`t=I2%LSdG7t-Z)ElMq41qoE|$zO&MU{~gUxtNHnWuKJ=;rD z2DabJkiSUPS~BY?vUe{wFm-M$*H{9kTr6;=&cjkn#Bii6#1w!^Ac?ooXVcg!BQ$m`CH9jy3W9 z9>ydZJKuCLfY=w*9|_YuI*n~|rbm+Jg>|f^sRJq^+0J2oC@v@&nBMOw((AmeN0~KK zR$(&Dv1jm-B;6OaF`urBH@t&hy9hXs3SZB3GJcB`gKwbkKcNT{%}QtO1mg|sEY5wM zi<~(%!vPIn6ko!{#_L2Qx4q*CrQYO$~>fs?2pS#H1R#;B_|0yBs}R(2e3sFIrS{Bo=AlSR0??X$ zEfP|aOt!uT@5aI$njS5>IVbU*5|CXpseA^4SnPYBHKdazEo^&T^)2~r2&29b|6Qd#(CUJxPF9n`b9EtdUBOKeo2B&mVUEwVbE znZZ$~^238|V$`=_xjb`@-&xRf^neD>F2uQGo`#?s4iBnN(c3r7gTl#V^VOiLCqPPF~d&m9v|I-!eY2Ys}7jb~^93#YnfvBs98HMV_NOFfAn zt`Cq^wZ_Ke`ScyI%!czVNtPoh7Ok@3tOm%r?4&}m%AQR)DgmKT2{4!@m4FMVge(qa zfl5G2B9)K@waE!uXB1^`sDVysib8~YSeI6qdM7TR5%44%StcBfV7uSMSzk|(envan zI2PZd8=rSi{(EF;as4*6%jRnk>u)7}fFG;tNgbr7ws?4|-V1f`xDfj+Yif%)I-X0U zN1E1!Eqaf*+j0z#Mrb!Wdr);)RKaey_jwvSTe&2)!dWfwUd=8pJtW%s5rXQmP;94b zQ^SLLby(Ou(gxWN+C<4~gDXiJWV45BgL)dFs2sE=MlHHFO|L&Cpm)vY@-hHbz|QWY zZ4-XfN`|9uno{v^1g}YBbP!I@E3(S;a(?Z!KwcTpPR5zKR~v0er4KarRsmIYA9rhw zn!{pwNF88joYVmczWY|C4KjIckc+j}5wxNg+F*5yHaMP(Il?F$b%6c~S--UfVv55x z|2sz2e29GRzqA2%=n*A4AG?pa^L&RX3an-!sN;NSgPfzt=`}ZW5ZRm>nA}JDs7=Td zF@aq;r4CXLwW@;`)#7^8_G+fIUC~(U=N;Pnu)Fqqx4-VLp>FML1Fs@g&=`kfo$76q zqzQiY(6C@cz4#?gEpJ49VXCkjjZyJomF-+K)u#arT_w~OK=+UxRQlfz zn)2H*=(kDyGop7omCA3h;d_hnfbc$!m9YG9psn}|TN)65SWmj*j~zBla9gFH#se^o zqQMH(STRNpuIyuj4fZ@F`e>}!V6!NLJ+43ovAd=rf7o1$W?aeFK9(9wXUbr_&dh&_!(Ah=CbSGR4~Zo5~X=flom0 z2|ZKEq&HZaf&72nBH8SA1~%5dY0*2_v0=ruv88s_LZjfuM=kHWpf(7tCaVJS!vQ*% z%{n!JV@YG{y-pmbg*!6@CuF?tgis_jdu*&w<3HFU5o>GoUJ_99kj-{lSo zdSG|`Z_@%W`2Wfo5_|>QSv47Fva1}2@=o3QmowS-4$ zq_o#oRf=Zl8&=PsCQBRoagEw+OVMTghj#g$ErnS9MtFdD$ z#GuV~k~tGW*lBmpYIlNYvz=pR?I#ytI}Cg6+WXZQ43t9` zh)}}O1qtW^kB(k|_Od?G`Ni?J+im<-cU#rf1$eu&*G@wL)H~(|eQ_!&y&QE4U4RXC zR~d+C(8zgs*U{KV1Ba4^Di{mE57a3H^Z_nNAwd zH1kdD!mBlGyTM3*;%dwe(zN4dkYHI8SBpaX^XdBL;k1P;Z@ZLaDsmBeNg58&&|LNG zEX3)BZ%=i`xavH2CC>*+HGvuF8}Pbj{HMQbS*v&SJAYbJ)}%>$E-0 zF7jF+k#UCu*l~AF>4(?z*U5(4haa~{+Huc7<^U8SC9r4|DFN)FHzjl3poy`C9)S{| z0RawXrCt*X1Iq;bwaZAHXpb7x0$Uw2&d>Jan>*X>PS1-g3ZsOP1Y7cK0!ZxK9JvYSMvcRxWFSH z+M)7{536?FQ?3%|no2?k{5gd(9iewa1=!$`V$6>V*xZzTpt42V>`(!=8de~P#snXb z250~`om4;)d+uIzS~M)cvvP^IF`a=DNFO#I$T%N@-8}}nxUngzcHNV->&|y_(!^(W z;iHwE4Swt|p~*n*Q<8qrw1c%7=nLyp5`N#cdi`n2e&o)VNyd-3))js=5+|8v?G`HQu!WxYjN=6KMm@>9w0u$lRh+*sD&t>?3e*Nf zhGqk_RyaJJNhl?-b;IG~0C}9DIa+}I=D}Pb04)%)@>*a?TRWTVF*FSLY_-7og7-Ub zrRjjPR;coS)q2YR&H-*U71}QzL9(u*Y`T+*aPSBxOzR5NI)&txB+3?TuHez>L|4v zI|%+{4e0@K(^S~pRJ2d-9MlI#hPKfJdw5NL_MG3rIkXusa6X84-Ho~cLgcmi2sug;DfJGQbN*&DM7+nD#XPm zFMs2D3W9eEE@6hYlActe)@G#;@|0gGtbkU*LLmv4GZ5f#C2huOZqRiJGP`@;>18{3 zdZjaItP;)}4i`zK{{ybwU4B~dUs|AbnUJ(Q%?i{qp%~I1b>C){5ZQzdfX&w-9k6kc zDjlQ`I)E?kO(h`p0IR#Cs{~SNnJ`7mgqo8>zHB&c$sJlGWX`-G<&Fbx+uAw~NTt+g zz#^f>zfhmy%r3I}7_xqX8YonjkN65S9P63NVU>_JO6FO2oQAGq<0x&kY3*FC7ulcH z8VAsAjnaKua5T1vPo%N#PLjA)oe*-U-Kkl@xPatmckm!a{c&W`r3M0Hd`?pP%PFa2 zkE3=+y?UI+z&lBd?kb^>!GkGEeoJ1Rdui>g)vz;9WqLW?-Zy@eedzH( z4IF^7O=8J78$VJP!81q=9KaIc1vA|>fdd!}1bUIV-Cmg6UCJmg{d%dffEtOTRM?UH z-KQO}I;Il6g;m?A@oiZWS|_N+?*wha-~iR&E)}8#g*H|SRlU*(9@cpENz{l_P1V!r zJp2ex}vH%dtYu8`G`Uo>Sp&^UZ8>w@JsR z!l`98EesrAFZgU)7f2tl;H?hM((Bzx3Gm$}vXx&LI6&)z)@O~n)_XSU>d@jKz6~ty zw$FmV;B<-r!e|tbiaDbIT*2xt^^f5iSgOM)5N3CE7psRq@z6Ca?>@W8HNNH8B_Z>> zbdtsbkTEJ~@j3kSk7z!imImp&zc%~up#XAuXlW2hVkq#_QFsN9phz?nNVP5v;u>Rt z7pjza;{x`#PUeghWd?(R&LsMxB84kh;9cQZ2;u?;c>SjxS{j^NVamy2_>EH*J6zH` zolQaw{B>ne$0y%w;5#(p6q5tc#A&rGSfrK)&g#O?znDCp@T2NtEYbS^F&qdr4+AL6 z8|24b2iv>g&ef$jOSwbB-nqIW35gjYt?O1w(XSbSrSUNi5SvV>3gf4Mv2hAE{#QRxn~da-lf6DN&Z++ktqHD0D%Mv+W-kW+vD}%iHd|><>$dqMxH_# z>}gB*{u?@;5&PnX;`rPf2z#9a_Ikth;^ogSahcZ@bF~M3%tc;5tdQ59>4aql@j3(I zH3-*=cuh1;|70LaW0P3~$m{wfp1{?=MEI;l%hN!C!!l&^Cq$l3?-cx39mH#~a5=yH zLF+gkVZA~@;I8ePLHyZ&t?wT?TgmljnQ!pTVY~ZIiK#_ur`Df<*Iz7`Fr~W1$KGL~ z^((ZSa>eOWt}?D$0eidNuoxM`%QBa-nv6Y$S7gR;HtJM1VuiesvG)Xk1_Nu&B(u#>x^gVV(TH zxU32mr=PppScF0LB0$V13z)ZTp4P!!j_(Dw zIf*~<^ghm)dSRW24WYP+1uamonFn@QweWpf4#0J4IiSkR0X$9;xp_JG)3}ku4cNZH zD=v)7^7JseQuh*gmuI;{(p~@nHDHJUP%kIS^>VIE|LjZ>H=~H>ldFTGg$I^%&uASp zZhA}FeG8&Q@lTLfWEejpsbL(yi8$uG!8~6^ZQO_^=ncqf=o4M8DF7mnpZ_^SY~1q0 zxLBoMh7v?6gW7afh2Iq!=K-3qQz39!o*V|tdU`{`Ed#xQZcu5vYRfNR&*;JKUVhFX z)E1AOTW~}fv+xceZ(F#3IhRj=Es-k9hM`2bdnWd=H-bE1nZqrH90oj2!YxLkO)=C< zP#+B?h#Wk^D|&Ig6GJ_@RqY2&s)YwpO}jkE9aWRT`esg$>s6?&c3{q};^Js&fN~9z zc2hEqjT*R_wD3s$L~QQUd$LDiFLE_Eb?Z+pnf(jr8ud|yst4ry4PIE?-ho`d{Qn5K z?s;6ko1ZG~Ld5#$=3p-D$qcD*4h2lK@gwgiugPc#Al*AE8??t zHLD`(Gge<)(a#`3R~DvkDhyA1!6Q~zvLI(e1IA^Y#od*lH`m$8Qg5e3*1w=slydPv73?(YQuY_ucS^9BsYR&F>a z+;9bBw=#1hu+M9_x%5u{Y_wros_RM~X(y8y%On?Z9%v`48C%4SO}tY&a}2DzXM@tv zkbx=n`M8rSW4_0DLNT7}?A$V#BC z-{II$c!!Uvn?6CIi=7O;LZEA@nG4!=$z<2^3ZRNX(*9hp>mGlfizmB^EbErZ&0LS< zYT%NZ7|yW;F4{wfcI}+W^kUwhA_`~?C)h>6+1P2=hQrr10fcm5D48Fl=Nk%ww+q1* zMBg0N25Fs!5s89e+Zd-)K$c>Fbq$=gf?#*awX&|;=Z3*DG=?b_L9j*NO03Z0fALEQ zoPpuMU|$VglpRiQhrQHrh9irk3A%qR2Ll`T=|kc^6ir8@k(ec!**+5M-#&0t)ap_t z`8(C@CetF?brJ@~+oFH=G#=w&d+QJ0Gb@fspO)zHA1;0_=IhK3$?V;nZ77uO!RTF5 z-Us`}74WGLBZ+8&Q5a|XFq9;Dc zE7Ey7>_M(~jHeEwe>%vy05RlkY|KDj9)ZCtGduaDd9rpHdW{T(rY4KGR^W7~;@o8% zgTy)L@xhSI;eSyBR2K`);YGP9^F;wVi_PJlc?QG+83)UD4%mkF9A23i?P7XoO1;L$ zooHgF6yizs;yGN%;iAD#;K%Von}cpVIfru?i{r(9yce&;c|vpOD^)XV4kyGd3Ok3_ zB$81Os5^7>py-~!6HaO8ptN(i@1Wo#J?O&_!w4h0)45_l~4?#3dWCc?wgm*&YTZ}^*;|H$u$K{6O#uqcNy!| zkDx|l5 zMOL*`(j=ACc1oK3Ye~iZg(?^Rj!9G_l~j8Wox&V=tHH;kmih1{lE_O_GKFH6Bqwb0 zRs~@Dih8O*9x$kLYc_|P#f#CZBDu~GL*#}EIj5*;VhV+Xxb&UFYK1{w6If7kzqV|s<$&5@EnX0{;QyV zG$ZANfiEh*^r@GM{w!ayBtj@C%mz>e=lVoAUHe=^Dl>@7c-R`qafI#82z1#H*Jr712fBK4QwK8W!~$;p{-1$ieYpUUkZ(aL5~s9d<9KB1 z+){b)16c2V(z_^LUW_`fi)XAF>^K)q+*3@*eRJxTOPKOGZ zYlT=JR`BqTx$Kz9eauXF1rbPOptz0`+IPN>E zwh|{?OzYb;F;n=89?zw_ZHe-CUh!QBkIMr(Ja3COGx@6qW+`H35c3HvUHU|o?m)ja zKIA|lxGZ3Dd-NN(@Zo`B<2p6#y)-ggwh3V@<5 z+`^w2?**0|&tSR_uNvLSXub2g?H;kteI4{DYzIK~_UKn^!T#IXI^XdPa*5GA0lc#? zi$^v)BHokA!%G~8^Aa6|_dM8D;USNH*%touH{K@!_j{6Ao4Yg7-#{MM(q{aVu-k;P zk{EyCw_mP>S5t!G%-F)qcTk)h;@oY(!-e9kgCkT5sBrjp!CG6r2b~CB5=|o#V4CT5 z*y$Erw%6GKVueQ(D||kKTjG4Q^sxo+@Ks-E|7gbsn4uHi7o!? zo^n5GA{OLD@e4|LkFTsTufug^nJ-dVM~HBF;Z5yQyLsPCF0qF@TyT4Z&-oFLRgE(i z2M5}jTD*(h9AfQ%35_i?-bA8$i)211IG{0dbY#Hdq+Dy7gLwSPshN8ci_nqfbdJbo;R5G zhaVo0a|?qvA->(p2XEI7eDEUsUkqDnX@Y*oT|T(-fde1B6nCxap;CLL3d0zVQSk;$ zD#<}dCU$)yc7ZOd%D^6sKTShmqHAnNYt{B=p_@ddwnz9o>B-rYpedv7hI(YvL$X? zleP-EVlu&?7oPzEz=OtVT42IfeZ-f}b3_HVLL+pz1)ShA$$iJ3n29HVyVR}vc?K^JVbo>wJeCI zvgc7^+P9La$4s2^i5DL`S(AOWRwOq)m~#l<%6-End|!#D8f5EJ$iK*zim`_kM4nj9 zk>DmgdWFmQMoBCjx5792!T64*Pr5qFpYaFar8IIR5moYl?`+%we9Nw7k^tXXf_-bV zc$NKx&i|0&ZROnbSH5@SwCMm6AHsXDPln^eCw58On}dO3A&l?&0&H=-;J7)>)gv=?*06k1|Z(I zZS54dJHd`7Nwn=G!Jn_eR4q0GODiu0f`6yrGYAVu!C4AE3&D6;D+lY_-?A0Qj=Wk) zzE3llS(NY((D2AWJOUcHCQ_ZX892OUtGMM)a(yCbcp7OGC2B(i>cS&{hhlM$-qO8D zMGD9joe6#Ip(pSPxLCPJZ*3TkmCNT+ei1AH9LhQ(2)OJ?^x327#c+Fi?QCtDX5r9E zzWW{$*x(e8{Pk>NdM9I3AbGtD08@axhNmB=;nrg8uZ!XJ^r7F8 zSEQtgQ#Qz)?%ROk9p`er&2Zuh1@@jC^vJSvg#-3hO`E{pRE=_Quy?|afv}zGtoYkX zGKsKFwJ2+G$jq-`YnKAhivMJN7`b^?3v%w&5v)_>EP^wIDzXwnicHlfKM(XyBy5Cc zJu33HB1FCi;O~bB?Jb|9;534B4%=Jhiz2Ih-5O|@SXd;-O%Vqa`TOvE%?a?_LCXrn zLXD?Tt(x6WA-MM~1osYMFaGTFwC@=afx-5cyEs4gJl{f%msB{?)HKPSp|dX2lUF+% z_c>8D{gYEgsz4}K{vo>e_qx$1U|qOXIXwaGJs^+v?gzB@M?#^!`vv$@F$e99pI{zh z?O5vN-ZF?VET;5&wW~GzZA+f0eQe)DK=#rbVt zj>UiyzWm>Qm+ftRUKZlRq7F3*y-o0V%#Cb7!iH=WT3LbYS;Uh>_V(7LK?t)3ZdG9K z$z|e=Gn%F){vDFMgQ@{l=4?}$9Epkn*qgVb+g4w6!vnGTRw|Ff{d;jgGR46Co~VLk z?9oy=bPB&BpsFBCRj`^10()PY=X6gBao&9*#Yk*bZ12AL5CRP5VhH&10U=+$82y$w z?Oo=81WOX1OG}ovw|qE?^P+4>0m3?4PoM2!Qx299^LHownilv(^Fbfz-p}W0(rxJ8 zcjoEdm4BgoFYO3x1)_WND=M*3sp#Iz$d~32-Min=5V(NXhO|81TO1S86yBSE`!~hb zOTHQ=N?0-xYlOziKf(3cxqP0h39ah+N?4tSB2;V-u`8i^IwL6YSnvAx+<)gG7a-IF9= zPO9|#j%j6k+W?eWKW-7c?k0U%XY0TgY?uRWDo(vg|5gT108hh4>)y8o_}%F)!4?#} zy6ZSUYcaLsZ?_29pF+gy#ZDs=by?N=5amo2@Pr#6JsbSit}S{|iiat}gIBq&(uC-L zwgqR4$Kh`&g6?gQ?x^8!M>?;nbf#aCe;%R_ATV?T9`{||I4#wd?``95)ZYCh<6mFm za6p0g)|XuBJ)HUb>L8c-%kHfvSX^7Y_whbQ?7?3(`S@9eLjFp5`bCuO<+C952H!N3 z)FBZ+0iG56W-?R@iC!Fq&x6XvsEhMi2H|_yR^ z*?bZJ{Wg}gvi$!CzPEgv^QrgxA?bO(H}{G|njMl}yod7WqWqJ{BM{$Sh3YN`l$|8~ zh1~@FCLA#sCaZTVC4lBijPGl!BcS-;dD1TuN49A*a;Ng&d z35a7Br2#FZPqC}<{|5PHL&mns`r)AO9%P!}YwX5X^(RYF{1~Yd8c2b@ZyrOSZ{LEh zV*Y&~8C#b?)JJ}*?}`Irt%=%GfQ*(4KgFyAvJQ(PG-+V0>(f*PcYi91r&15(Dezg- zw&x%@67o?{ zW*gQxxmEzsB)ax!7IVmQR0tKt5pq}#A=AU5nV!4Rc{*QqFXa4~Et))H;bCQ`+kf1z z6{idQqD`Hk&{X<^_X}CRo66a|J(|9)N%GUT)8NTH?m({C&iBlv4*>&aJl>Nkk?`_M z@$}W8{el*ZZXI&o2fq#@dW-fFqf7*8*f8LaJw$^3|48(HQ;;Q(VW)0AV=HO@n?dyw^19S) zf_$S}e|;Xh^(KHh3HY0_3HS?CJ_3DWUIBe+0Dsqd-7n3DyF~9pz4~8d{X$2eU0ENj zWS!b6WWB>-vW~NrX|#b}9igE9W>Wd`EqBP?S)lY0gd;mL7X?Y$fjcCieeL6F=&w0fk-dF5 zup@!iYOyVnZ{MLm(AWBNvsRe7DGaEyEcjIWjzqmSMWTKkNdK7u1r%U^+Bc)d)e#J? z9jPX+@%$ZqGt`}qK{j z`t3NzcmK3jzBeZ^&lA3d0{Rl}Hw(tMCci*2NanLCr+3E{L>`BwP#^9*OPKGJ5_tqd z$ZEDZ=ubn#93E}l1L6E4di$X^mEKzmKCQ@>uxMD9w-e&{KkPcBaB z*V@TrINvcF!@A%U52y2b!bw;O4Dt| ziv7(gsYkZa!{=hEhsOm_-?_h_zQw#kjbke*%NGX!b-VO&o%v0&t89{}(z~;h%4HO(y1BY(Y2RwHUa=(d4`*+F>8(9L4+Y zOvcBA)))cacL8j@u7rO5FoB8=)a!h-B>BG*o=Bgl!{(5ID=ibnvh7{mS_Pk@+jnVK z(L1f~8o(|wJ3SJDK9aipYgAV7O+IO$ib%u|xgTWx>s{JH3d+}mxkFn0alhv-?K(I2 zsupnj9O!^ttzRrYbf0XMkc)b=~z+#DZsuD)}p~xq*uD$M~Med3@sLX zj!$1{`3*DF1oOujUboY0-2(aFut(zJY4R&1G0LvA^k!NdZDNFvek`ChTl&Sg0dpzc zTy1H`dD$QaLtafh70_<6v_>yJ@b6J#{+fP$jivd$Y%q)VJOYPhOn@WePzUs>+e9+Rkdx5PqpTwc=pBnkV$1Ls1)(gOuSJ6eZXT4#EmOEeLK*YpMM!o}~ zc^2r5*G+s5@dt)XFbu-@pVK_E z4E_wQtoWLTYF8~J@^@wW+dx_NS<4!^84#YQuF(6AwO$WuY{g*j^W@Mg!Y19)@pc=ATv2BbzzIU;>HmmHCHI1b4>{HAtxke~$b zLx(Fzq@Y^Qo5*k{#NP_J4hZkV0pZ9b`5~by!tsT>^bagCGf5r@SkH6v5su%xOaG8^ zNL56YK>mYHgm-u8AGfUqa#Tjv!|~tN>)WB|VJD6wJ&1hl=|Dag8*PM*SX>Ko-3|U;FG(h;l+2xf$5mn(MWlhwft&+08+5{QT>*UHOo32VNXsHiy9@c{e)c!@bH8X~0C1H@=gA9OQ{KlDvA9AI~%||8*e+R=^PlP6+&h;rSrA zBEEIaAy>qD_#l~l%>d&a$II_{-aDB}s;W#`H9^8fW z9S6#B9=VvV9FlL&BhOZ0A!@ncq^QX+G=1&*0Di{^DT{ z^Ly4?#Qa8O@!s8o_xsauiyUP}GsLqVUhKHCK?lGY*`bY{uo+ud(L(NJo#PEo6JJ4E z;HaZWL7cEz6vfwj5lzfK%9UKK>mh_Z569~@)8ZQhoP=l>I0=P8xJ={fS0V8 z+$-1wZf~Seka%LY~*hIB=b!U=x6ssuy zh(W1s>YT3$!kV108FmrtCs4pYJ2O})e1k&)wg4i5gE%{b*cK+rbf<*92}2OnDpj6S zMfj{@d^^g(EchGUT5+g~C}dlOlQoST6MYMnA7bLEf&9lSL;bv{jxNe0c^7cGc-jX$ zPQG9ac_JN7|Ngh%H*L1MxnR}GMO zIS_D{@okuLE6Fc0zR4BIrIF!+4geruW#>VCrPn%#c-y0oL>lCcsF($AAjkx7R}&5# zE|TPr_#XKqDoRn_DVaFnUOrpob-`eZXU87KCRi+5#{{9XxSTN^b=F1|X#WRIK$s%v zp|-jJzDV5Lh(ZZ|3_0}^s3;L9T}OV1@J0HylUrg9zDQU~0}Q;;jz6vZCZmJ{*E*4_ zv`_x7@i*S|V@TlA30$v4mrelJ59OHL1_#dHS8IM_y6|s^TIRzKMu-T70~aOL5@!HR zpKJh5;9m%@Ble+Tp0L>kg1_-VMdFPI7$y>z&JNp;_hhpR%I)u_b^u7BTy|jH?d;f< zo#L1t)g^i!$8e@irfijG+Y)(QU;c?^y}v{&%Iq}=27X{MEAm($E&20U9vPxJB=A%< zE3rRnW?%78Xc-)BB+PgUmWc)BTG2B8)F0+pRvuq*nOOl7^9p7(6?CvOW2Gbtc$0vq zRg?I$Z`TW_zrNI1%foRo$+HaBsJ$-Mp8QB`;Fa-SWWm@U#_%bvB;I{e2|(biWhM@i z=JEqCJR7cG&cruf{W8%l7K>tm5+;V2Bj2}Nz#Tqwa)`m!;$)D(wQ&5dNl?A!^XU55 zO%gaBz8jeSD{#hg=8Be{$xPx1n0(c6>#7!36u(a=7W3yf%dH!Y-&th>36t%j^*c!0 z_ZA>c@jHR7xo1fWAM~*as6g%&xCMeOyuG?Hnb~_Ye`KTg6&64|b>R0a%;=Pj;gON6 zVPli|TMLUb-zzlX#=Tn+t>)gwWOhx9Jg0;43af;1a6Op=Td&}KdkXPB{POB|Q8YhZ zmO!j~0O|hEM#|>BE%K+0`YWtk9Hz|hymI569L~r4M?PNa6*7f;m2ucubz?#N$S~to zR+&P)48?mD?~AHQa1BMe%+bvd4eazNW(TmLdzA%X?fxnj@hI93ie?P~Jup6motBKb zXz-p24gSL_Q{Mcjv5&~$z4#Cy8q!~TjflTfHdVm_ia*~IhjD_`p81!=2~i!e+uh6T zlC^Wp-^&Dpbh6*EcZ=N$!#D2)Y$)f(HJ{r#lijKi;OQqd5z>4YTSaN$gJAUbrIe+o z%l--hP9^~6xaP2Z-1v^EI0)c4%%QtO0Pm#@Ov4H(Z}W!cR|iAJ)P0OURUm=hU8#vD zV)EUEu$1$U1N3zD5x#NF<|XTk?BocN6PUZ@TywYAR{_42Y;Uk8(7w|+PwEHt&V42( zf1dx$_wL2_4)LknzZ9d=LjHq90}d^PiQG{;Id0AE6L_RVziOvwg?-CPxc@c{k~M)%3n0GCScS6$R#C=av$%@+x@1B0CboB5F1WSt z0^kphJzHBv?XH=Li>k?tt(gH04%&C;_HZYj+RDzh3Tlv-Q)lTda7_ZgTam$m*)Ger z;C%OHOb=7Lea_REV_5U1BJJ&`Yb`(-1KM4bIu?@&MF;Pa0|VUJ2$p#288-ri8pLkx zf75o}VNw*^->=X;d8T(~^Rh6cO|ZaB&rHt@QA9ulL_rV{SaOoM%YuLz6T*Um@Ds#< zUcHDpV?<0>OjpHt4TxS$fat|^y`t~;RQGJ~@_XL*pZ9rmneOW9s;;VYDxLbAq6{G3 z4PX{0zYp0D``v#C<9lS}%LUCDfz$vOh)0*vqiN?+Z_0||rm=jpD2Vm^r^vFPOA|{v zrA#Xc=JygXzpcl+h&&%Dj&(SdQIw0SicHv5RMy*y#upLudsh(+L?Vf!tHJ!X?ryKG zcd-kbnBU1HcAtgtb}7j>drs5la_omByOdyEsvwWEX@QR~ciG7Ak1v-zudIGoKk?`x z>bWWaEd%X))Uqbpx7RPU)3m_9uG5Ep1?y(x2H|(7q)|B-h`Hpuo$T)=(Dx0ZFnzaz zXya638W8QuSadxzF54_Jv1FWoEfUN|W6PziTOzrhX}i5Wk~n)4bXTJb8Z7ZxVhTOR z*P~giXJSD+adT^kb_bV{-&4~c`?9Ir6c9Xi9Wl9O+!wKiZVTkbTz(xXAJ8z<%woPB z9Jr}4-)Nus5(nPB1}|LkRr3px>B9JxDqUrBLxAx(eaU8m>)uw^)OZvQJaLgq`fole z8|RH$E6z7!D$e(Jiu0XxIN$LUINxuSQzd%eC=Z_KDzZTN9!!+)>O4@s;rsX`m*|v= zw*$xgc#!WNnF;4$^8TP`M`mzVO$*4kc;H~}*)fmd^JEdC1=#rI|Us=VM-L;DxkfrL*i4)J?1vS$9pp_0^8U^@~! zVBGfg?|O$&z}gJ|H2J>L)X{+P8VKLpJemnv2^rNX;JbZkl7OCFZ1lEGgm$e687G_~ z#r9uZ;AHor`0ruz1CnNfDK>?%N{kMcM$u$L=eY=3PYYO zk*#w1eh^Dc1Q5shG1$&8BVDE5V3Vs|j|R0JLyS=uiKo(nllCyU**SlkYioggbnO{9M{b`j1xU>@RP5kcT%$l>^)o4v)QqVD5D zuSlmx>Hdjc(N|fw{ivaHIG2h!1E}|3z|K7mSi3MN2cPR*03!L}ZYi+6D>Csn4uiYx zmt~6ieKa7iJlBKp5{)PSo2{+C5s-T*eqpSu?pwgb&BqA2|C$CU$BT;leRn|mmeB*I z&GlA-wE(iOsNYuw8i))o2FE-5DR z_ep_#t6-S%w!a1)YsY4|cSR<-Lo+%Ca7N6fABE4eB+%aZiHE-l-l}0YVy{|=Y$khm z1f1qty{!IxOFY%SiR|5-$le`enduDMO7S_H+jlpuc_aG9)A761TBUKMt0wYSlaX7z zBEbIu`3UYf@#}7l#3fVV*tlKM-pCwce4;ew5TV*yq}3Vxf^s7YuJ8DEMlZ(L1!n%;=UYuhrA-->BxxTDK z{xf^O82AnY2Jsj^=xDY9;%ljOBzlK&0imkj%G17ASZ~}IupD`-sH3SJmc!(yx!T>u zP%rmj%aE4Gh$w1YzFC5tZKY=yYm*jrx2%8b*b)c0b9Ql;OlEd5)>APp#xbUAP~w@4 zrl8)ScDfbRyUfaHuIF{x=`bPty1?RXrl(zMrjLg`MCdpIgSY+8?8w;H%g6WD(E=IV zRh6b5ERx=Onit#941d1Hd-&W-i)5_cDFj*pGe&59kH_7sNS@X5cE|pjTp!T?D3ll1 z_lQ|811k^p^)%_dfiUGS`?Tj2t{XR|P#IibpDlxFUhRr3S)zYLbQSAK!*!fy+F@@d`& zGt%ROc^=G?ya%=>c@wg8gqs#-`;N{{TtVC8*b|@U0D3kQC|+bv;=K&biN%4C{#Fys zJ8>1!yp8LZqs?qxuAfLOZ{tR~x@o!oE5W>tZFF_Za{U29c^iMBtJ{|AbMipvF#bwc zA1>27=3!k--?2P|3B*6b#O+N@Y3t001-1o=%#l$bZw1M|J}k8d%X*%1oxesXhm2TrGHAV`m9{chm9xb>dEDL z7b1BZPcO&0mK3~W9U_*uv3ohlxGC!%LV4@YFAv5rxiA+hmUs9{Oo&^tyz{_SFh=Bf z!$~;9XoczNF(Y|E(D^FRl=E|Pl5e`e=_vt2RkX%==O)iCK#dU3J13dwN?YWkMvC*R zpbh*NpM%r2m>2(4>GnYF|HMI%T~-;q*U#@=q#r9c4s6DYEC<6^CLP&UNbm19>nu3ji`x^LZtDT#2T~D_sK+m>6Dx)z z0glqZi+-UOJ+4CT&c>j%pWnzMz$bkufp?mehgyXrmUkKqT2Y02^qpsf_P{Xs4e%OXFLW^cq|6NpGri)0w zk=T37wcOYt6{Cn^e4s))E_Rd(F}JS02=n!i)%{bP``AgO#IL&uF^(>y;;CyHW9vm& zBg*2C9c7NPz@k&n6LolVQLqzGnc z%@ps`XwO_xyxWPE6z`nmQ*h=0UCb_;SE zp^vD}WL|KQ5-6elAh4@tC%P?XIFg7-?3s1c8=W1{WW@@648{;NW360)8SDAfkJHjP z*7ysZFg#mLVYjLrtHM(N+B<)7uJ!C)MVd?SluY>u!=>?!o_Gab}Y3wSE;!F zKzd_aJsSX|w|J33ClJzmu#Vl8NUUvVZbnTS8l+i{|;P7hEt~a$m{P>q`4Bv$F?o}h@ENWB^w2PF1qWaTD626W2y+rs2 zm|y`F0x^6Q;h)+K#s&5sw8qD|NV4jjYl?}1L3V>07x3{xd(uO(cTN!BpX|MJ;QW=t zT+#)lzCJjEn%y%aT`>Jmd*>VcP@!3ux#TopWp+!PpDQW(iB0?ExX5G!%m5v8Xkbr`_UGi{oKx@ZriQh=IvtFOCSL3V;LCdbZ1%eH{SH1 za;p1KwzsGKv#->fD8dI#oxR#DKLql>89k+?i;CD(Z=Ioxd+PTmKco@6mZx01M1AaEf2RG z3P_@!-f}h`m*H&pO|u9$-Cr<{?x&hMe6>~HPfGd3Srjn7DFQ|a21OXD?q8gZ0Amys zLLP;T8cQ*5ZyBSAVB@iO1a@tl?frE`^sTQ`9KUT%qXfryE~wt}5X(|L2fFx$-CAs) z!O@I$nfUr-d-qIyaWZymYW{@uo@YQ85XoD)_`na*tARGpnvmYG*oXgIfsHOPfCU|* zH|mujehblin)ri?z}NskkoVp`+Hu0*phX}C2Q98JI8axZSKvuZ6c(av z`@fmq`~sQXID>zWlu4WDSs%K8^6%knqL;>OKe`GSjG2Oyem?eHX{OMe9fkN;eBVFF zb1p^*2-KX{DVIpHs89spbnSVOh;y0W4-0$K&+wRu`yW}AIIN0``M@T z03p_~GH=^AsqOTe)poifdp~d*?Vy3|y|9$bnk^7T)$xU1itbGt>c+_H(YZhmylAt% zRTHl^Q!l#6g?2*C*vAluS_Q~CP12j??n*mgU6Zs!Z%nuzm1^H_r3Gq<8mcukx6G!^ z^2tOEeR2^(}5I0Gs!(or04A5b>*Enwc4 zE0{O0B|>zT;i<&m-Yd@o=DsvTJLhWrO>#mz=LEl}Ep?*#E9p{jf3IF~pX0rCag)#|njEY&x%VJ??+eO;20#8z&OP8Rpo!)kM?*JOlDO}z)XNpkTfVyi zA1uDD1kIb|ePL(nUhz!W3~r#tb9-lMJmnyxouF*JR#Mw_9YQ3sYQg3v8OS(YzZBs{ zit|UY)8MG%UrDN9={J0hP+UOA*5{kU8%gWbGebCkH5Wg5u}+oJjT> zA=2+)#?SRqIxo3^`bOW+SBB)f0-b-CI64&|2+4YemI+6s;t6Fv^ML$Q=l`j6I)D9l z7JSyv|D{%pNa(*lp@q*43T9C+VoV^g_CPp6O>jR<*g1m5uP&q!WXxo)9il081pt~x^hsh4#b zOi@l;YTuWY%2aP9alB7F5g~R>7`IaK=~F48d$^RhsWR_1m5Pr@-W{eYlJ}R(U_sL+ z^j{!v+l&t1BHsw21zN{nFGLY+7fJ;rvO`Y=^A^{hMg}y1c|RSZwZbNtcO;GW*Mj5? z0ce^JATgNE)Ey#264l4<_sG-f3Op->0pr*H{i~w}=8)pCj#FSboOwvkWlZ<_!_lAe~Rw(afxqn_A5WQs3?*DB?z+Vg? zJsdP5B?eu9v$&3ef-2xsZl*v?2uQ+VJF|TwWljP9p$rCnqXW21uyXYOL%xAToIL`SK z^V88tq;oR$BplLHgT5l{q#rgHjHF0Ug|k{jjX;q7eA8H=BEbL;>cF<8BXy8~)&}zc z>Og;J1dhooT~O#JU2sp+E@3-u0Kn@O zFz^4+c)+WDx{x25*aY*2Uk}mRug9N^X=z-70l_ETby?kzZ{~-ZR|ye9Za>v3;pW98 z+Bte8`OpZcXurlh00+>1!8dxoc>|{mLk&DnSN-bf3TohQqy~zi25@wlTz;L0B>`_K zEeW7;sughY+7hT^1>%H*LSnq%R z|HFFcq%H~DT<-~?ld?Q=taJ};{$W3i#u)%9%;bh5; zO|;xZalvaJ>P-JI1u+OaZXB>43c#U8@1?T~W&RV&{A# z*{2O-C5e)aFsSMa_EmB`$lez)zLgO|JT+dSy+68Eu4myHA6=U}?S$*tC&D`fWbgL{ z!wU6@AaHl$>~6_h(!KdJQ->mY`gnBjEfQO9B23Ay@+@c(sCWik;(8(l3pjGKT(TP@neSL5WFkhGI4^5Q#S z)wqM$-avQTZ13+Jw)a)Kz~Ve8&q@4=S>JPhEup<}>d_0LsCm>Td+QLKjiAz684UBAwJm0()=Fg1s}iN$>WH z?wGMr8gv5>F_}=1#f`v+Z^Y3=yiyolK=#H}Npb|XlL3;p$=(~ecOl5$xIvkz$;Y42 zC%T+e2)-WBa=4_V{n7%ii}Ok=YTw}HaVji)27OkXvK&{Rfy?5=2;8D1Y_zwX1a2^H z&B0r$`47E0(n{c6+FL>b@13ym-t;NYsRTuliT6_RphejU;k#5pst>_MN!oJe_Hi-2R}|s`9S)_S>K&hgxHfg0zC?~7gbBVR zL0@9iz3nfd8xdp=^^W>T;)`v%H(a5RCh!ENe4T$-r{cx0$!e zfbD%a%l6L0RSA-F(B8ya-^{&!uAbSU-uZ9Sp`>$jCtP#RG0J{g(x_ytd|kmvM#kvkmPD>KzBvo55J@Am8496!fr??-yv=tq*$l;#p7dIBLQ@yf`iMPWz$&t?s6aOr9<#JxsH(dAa5&*&T5&+bhCqFE||JkEAc1k6| ztw_+i`rn1cZzEtW&Dybx_yRH4N5f zZLymk;(6&1_eMm=44y4XZsj;S(1v+`W@1izlu1`BemyTw$FAo%xV@E!t*5?YsR#0> zuVwk>FeVN&7xeY46mYe$1-lzqa{46im*@|YgSMLy{K>DHHt!znjJE5TPTq9bdk@^s zj_1Yk9|6}*%@*z-C?_T>gSIcsjOT6B<9Rss)Hj~(ydo1FC+MSN^uJFlnBOj#SCfQ& z`I)?fmC9uU>cNo>Gj@M_HoZemO@euLG4X7BF`0GCn7;}BF?4(U4}4Gp#0 z&GYV@Zf8`K&z@hx_%mEP{7~0uqSp@oY6O&DP|(lfg;Pd6QW3Ql!^S7N@^L2nJp>r2 ze+oBF-+8j}ci$J@pE;IoXQ8iPfjhL$vFHdFKi1xVhbFq{{M3hic|s1*&6@UBAvoCI za`B7g<;?djbug#Nan+0F`iKRsvI*;ESl)s$ex?+f^i~o^x< zxJ%5M$Km0}1=po$XH4UD5 zICU_Ob&2B-y$Jtks73n`yj2ibIZh47AJi`WfETgg_#z;`J28ICIOBaR zFFa6yyv4H_{0;v2D^8ch&Ln-1GSk} z#wv-6R}qV*B!pB!w)vC7(~HJEJJCqmGLa+EeV3wYRZd~VU-^WDkDKq}=CpY9t~=d- z6T;6iKy>fD!F7w&KKTfZzckU4jCR^HcTeWo46^^jU^1XEkrwR09){)TUz3P#=0E7F z3d^6%5S`cUc2AQ0bs+$39=lDhZv$ro?AaU7f~i3wF`88-qNADj?MGzK7x1)iG~@pi z@IBxj&GZeqa@F7T^B6mz1rI){_1;wy&*1r*NdWyOGfZ^u8t?Z^X<`EBeXt%Udce#AI*F}an`pILu#*gTR7I$Wrv}FDzx)(BE@=&1I9l$Z^Fd8 zynU(Yr{iY2FM|W?*fHKEnVQD=`8Z)AjAOV$KLtdbKE?sMjN;%y0T=rU z>CMNu#@|l!{H`{(wvD^kj3G zimM#Tcd$ksKgM0Wkkj{U#u3#GT6G55lO^8nsU&juU7?dZRos-jR7T}a94TxY+jV~JBv3*=jfCks)(5tA}!!9N&>OK=omoC+|NK;|^-#p-l?8W+1=PVs@xjjXnr?D^2f zbF1=8Td3dyf{v^AO3}~l3$bJ{X*b?D-HhfPx^#B9upM8Fz${he|efy0ti5{r=$1U`-R5GbwZN zepG@#B6p^V+yzyFlshwy-2Ld)cFw?>@gH0-H^i&`WN*pih@q=9za<9gS*88fo$gH`>6#c&@V%C{N(LoB1@G?D;n(11&hI!Hx}IroGymCiB#ybwQj{y0 z0Pt9_5#zFrv^U(ADwMQt2^Ng-A(13_^YR?Q-x=pAq|<`H&9BV!{Z7L%SY>}9Bnt)I zD`4NXfr?0;LPIpS98qC zIj%!Oz74a0^9uNDOs>ONcv&bH8S}Mad^;w#rRXdzc*yD=OFdE`&I)lHIj9n1WJs_zuK7m0pfgOR-NL4Xq${-TRm8M}w!h$%?a7QUlBgMh9#fhCTaL+Ji7<86mCloZ^ zf*}vGNIe&l(q%5J3Gu8;zhEzat76)nj$~AAQZm;e3UchyC+^LdN&LcWc_+hOHi~3S4y@s? z14$egumwdl^7KLl0gfOFD~(*c_y;37+>}{c8ArGKo9^EVn0$OI3gsfSq(}04#NroV z!9FL$aGv49y)Jp*B;SUT%0$o0e7Uhx9?~$sT+@aZJ%rLKHotU*W3%tYyuD4#B5yaH z0EqvI!N|NY^?V!NYohlmfOO9Q=RJ)@qfYM5vG~K4@rJm0T^S6UC$^cEVltT{`!S^D zdy&cea?k?Wn7vTq`^#(MIOvFp`TcF#K?YY9cs&GXEZWQ09r>W!LZ_T6b_T(8@wx}( z#%6yXc%IIAoXvf68GmW3>({b=@k|E4ML@?x{OxFP^2zw%4NQXDb0yCA!2Mcx4h+^7IRO-F}3UO4dWSUIG^= zuZQZHD@_9){1D?b(c&$dyBC&K61eZ~ZU2zo8^6I6E}KXSDI0x-sI=nv(eS#cHZz}o zBjy}rtFX5*CNDO0ve+)Qhdki67bo0R{P0botC&0&t3wZ*Vcc~}5x?RK--J{6{T)Mh zo&ruWG26qtaeV!R>s`Zj-uZF=#ZSQ1N%S9>7ESnjNIOxDS2%pJTKU7kX3j-%2WweD zeW}b%{vm^(J|XAjmet=mQoIc9r;f=4N4UhuTn7XFk1<~H_#tf>=m*O}N4WctFxo8F zm{q8$uQsmNy_IQmF*62%PMC`0NBni6op6xbg>n@YElR&0BPJBDaM$SS$A1-mh6*3$ z#vvalm>*vg+Vjp!Q20g-lwJnGk#zPY^aDGotqcDI0UioHae^?OnJcxE4>|czRg9_h zVI42;hvLsr@n82E@eD6KEJoam;-{Rt`{7u#%4k1f{5qGmb$1^Yu^o0WsL!{{>3XE= zOucPic(*OpLmS5sEV|g7sfPyZh3Rjwj5$OnjbL#8`b`FY=K%>Dcy_6{w7>zc|Ez@; z0(2@q!s!D_D~IcM*48@KW@QFA14CJ)^_nvOyQZyv4f zBjEbUT;7pu1J@;%+#Wey{H+j+;h<#uR#$@h<-+J@a(Q{Q#(<}+pciWuF$igiH8vne z%o3PMjScvYnb<@!Z{xyUr1Klw8n7hb?=abo8MOiILN|c(WIU|{n%e$**+0N@zcawV zuQrKFb)zoDutKm{^-cl)++qZXV&btq?Uv#An>iF91N|^69fcj8coZQM5#yR-3i#ZQ zfaE9}J$1fYW1r<|xcwa6&d}|fxG}-4p@XW5$8W{mWSriTpmcA-c;pS0?n=yHelgyX zZH$k7BE%gUdKbTr1LpeK(&*x+Bb7nk7qhPYx_G=TaOn8l@$9XUEcTxqR`UQ?;7xfw8KZ>n+!+-upRtJ^R)k*^g3JwpzI}=h168NQR?U=hZyw6m)x{_L zbBrgw-6JWlFXJs87pl;-0)Hen?iDP%yt6=4Eb~+qSmst+{@4QFZpr;_r-8mJLnAaf z7fYV8v%toj*tV?x@`>X7whqgDng;eBmv4tKO*`|I_GE{9HV+l&D!b%FH0aZKu$>E# zflScHOFg=q{5;`jxE&g2X)@@mh|;-^)t7mvy26>yJ9n;We|}Mr1uIg?(}KK9TVt^X zuRix`;X?8JRAZj*;@#eNj|8Oyw9f;%I6+X*0#KL+SC7b^+J`>*c5{Gq4+;V7sf)XB z)*mboKfY=Me8DJ=;rYQJfnLqE_4K?_?GB%Oz$;RmzENLPAcj1jCH{hI+7GuMxJEy% zK+JM(V+6iS(Z9iL{AI1HM}Zi+3lRc63gmXdv8m9bpxTV}D2SLD593!p9X=ZZRjifu zh1=deGW3!`N~6py)Z91fVoE@(;Kq0P8lZiooqOvT{Y+)X!}%fJBVZHpjMZK*A3V?f z2{+7F1e{u4n=e<)Gumo8|Md}SCKh%oAGlbr&llYv?NOIF4}Jhj9!04sG^BTAz8Fro zSK#(<_tR}fhRnqBMf3sOUyl1{-cMiD3E%o?ot~2~R^N|+We8|{H$||hjE>}q)9=RZ zb8&mlc6z=I;HC-d^*nLo_7){pgtt67Rlhq=oN>ET^5uyrpr?1|wd;%B7C=wEVJZV- z`%HIUY`c#3XspT8*ul1Fy#b)iKQJ7Cb_2MX0uI6ow17QI|Oc&ce(5k?B4nXn= zWnSUsCv?WfU)UFHr4|o((Fx3OYmEAPs?T&@4+k@Jv zVeJN7rn*A`Rfn}@Fw%EV@xj2K>Dbnvn2C2xgmZ_xn0p%@=6C!}VT$j{0p7S@GDbP`UXcUjDK02y@~=KQB?o|GnR-lN&HLmK@ib}D z=gEv$7UvNDFlnmqg9~dgPm?n$z&wpcGK4%$Mu9xV3@2gtmumAESq zw$6`ocrI&zAMXdx(WiAZK6+WxFI|iYRGhhB%`g&Uf3&YvL5x#oX?jBoDrvPzLjN|H zoY&Q94Tk*3&;0#c2|`?)!hMj&d*468;}6GB%r7NLr;sI zC$(t6bi1scZjTc^>XM>T@?Qs#654`=kQ8orr>BDr1_q-b95)!H=?25t+?Mf^PU35@ zvX={SFXD5i2O#cO`&CoF+V8`-0HWStXxcsgZf2%b$9xx(-T?dkkGLc04Pcm89dSX@ zuMA4@_jUHCL)1Oh)Cr@7|fJwj@XPf{&i)iQy13UgcO^$1ITU4j0z{leG6)gfTfnz|=msBWQQ59QT zgiJqf&A^;{aL0tRr#;MRxiaqTR?9wP7>Rs zvzuS^TQ-l(&3CV)FcNw^OH}h@Hd_#S%c8Ht`aQx3YHlf+M{zH733msGd^c>ak<43! zG>5S~s)8W;R285cr(02uGbHe6^ZPm|fp1MSzcGbs@cmrHXZTPH^kapO$VQ50KJj#- znfq_9%8M^eWySrLI{i?0!kNPXEVB1b9cbo|#uA9T-OJ$S?+YT9uM=E!C?^}oAdR;l zp^B=Q7qPs!pFW5BB!Zcv)S6p7cuKf!_igHa%ieuBh@5YHtidzK<+7iZL2}9|$q?Lr z>U}AE&TB4h&r>+Pj%H0f^DkeuB?kfmDHk4(K=0mwQ5xz5BS3H&JEg5PSbOLOns=Hy z_ZHHQIkA#sRGOLe}rC*e)0^3Mx3%ey%5T$1bH=eK7cVTLF1Zq;%Y)P^@Il${_aMeU?*-Ro3}VQG7xI&~lfop%do}dK zFV{A|Xe5JE1p0hZb!fRwrK?J-1D-y7Nvo%^--DjL!Dxpij1NFIw#D4&*TySW^Q@HL zC>$w24$d4UnNDPd+{&nay%MWD6G+RRAnwPeTFCA?AO$Nz5}*h2-W9`|W{x?WUn0~8#|nJ_ zT|Pd?9L@WoA|>Ii8Rq}?kc7iQ>a&VvoGBNd+(Z5O>cRf6C)o`1y8;~((Qbw#;pucH z`E4KLz#gDPpo)36Lnprk`}e?^Cf&^X8Q_^rlv>*{zX+$d<+p5E=xH5kZYAVZG3wUd z*(1YgIEQZC%+aI2xkpQ<6R5?eBvivC2PEm1%^52%wvdBj4q>*RhKy_D3z;qB3FH&r zhh7%(j0qX%N6$1~mL+|0(NfI4uvei0JPKbs(4Q~7#apTi2D>|w^C17}aR+0Lem#>h zGpb*2N)lr3PG{mI=TGfH1}!@ywwP15{#c8GyHyGspEGz5jrlBKTCFRDaxyjNp9jox>#(yVHo;RmT zv>!xm?acnZ2G|ua`Ru>|hVg&y&^3(W)fgOG`lvw+;xjGeJQHmx=b5OI^Oz&&nP^t3 zXdEAdyRH&cJ34b-^#yh2J<@Sn{37nuvtWu%=H5_RB$$R?9He93)G`JRXdnjNzBT(ij$ZJ#mq@7@w;Szfx#v+CI$zO>Bc_g1 zqcJ*m4LY~@Tae+@=|7rr3`ZPtIZpZBfwODT8eV3c4a5FS(>b4U7|FNi=wQ4jRf(M; zYIY|9UJhm{){3k4;tU17Ww<~sPR9|%`|J8UhKs<(DGGYu zaN(?FQk}I7-LLAy$SL*8Z)A^X=3{jBALa6Hg9uaVpcuN%i1$f~FGthC*N+YHd8ImN zv5xA)KKW9?m)09A!9erT+{(MHJU5>2(he{&qt3O`1v3{Mf%V-#T$_0j5zPJf59g=% zl#g6ue2mq~k?nPHws9bcGK@t*%}z36vWy0f0oDP=7eUbz_xBkhR?N}Z>5ycan&9X? zAPUD~`?1`U?;N!#!4ZFB9DpgY*ynU=!*0u1cp(YE^ZBv-52={PoBgR`oK(J0bB-fyVC4=v!~ zz~x~yiupe0u*G2{Pn_;}Yh` z?>7>U1HZKO6!#HB_IB<|EG{B~dQsbfE`)6UQ;cxTbpr0&UlqxaDu7_)Rr#@RF49zh zQ>>M7s)jT60Cc>=LKLxXqEin9b5Zv<#GF?F&j1DkR`PJz;)oGxXPz~f->+p4T^@oL zgHMOhp-ZsB*=J0EQv(D8pj{6rdYFCe(xfB*M=*CvlQP(5FurR=mIGqV1-$$k@CKOo z=_>K^n>3+(x{Cise(?N1+wgK(SR1@r$nOI93V#=+3QAH(3|;qPEeaf&SQ;0f(kdPu zwZ!iyXcZ5?OES3FM5}ltX5R(GUwrOG9>a4gzWj(ES<;7jjP*Fk9J|^@)qKn{nh&9k*g~o*&u8(aVTA zs5`J4JulF4Inm9pKOYK0BAYmH1&`G#Yrp&G*?c@3ITg>=ok!1tRczwOCeupexO&;e z=g!E+yv>zw-mA0#PDZ*iP%=-$V(fBGnhMX#!=7#l3+@(=4QF;m{MA{;Qxze~J18}< z4Qe3P>dbYH@<|xOflmI2m#U&o1%Jq(s_1GX%zMU@33pIT!Fi(`q@?ry?Q!G^ZAQ<) z5(GuKq`mIef}_1WzsvNmZDFA8|2ZN3RK%3zY=sFa@!Jw`^a*|yNkbf`M z^^lQ~N-banMgSPf;+q60{|N4lov;u4QCOHe*~jXh3V{Y2(F-Bk=-GTlZ)jHGfz}vF z0^KQt`;G>kd@A1d(kxOmkCh|No+QQjeU`l60%IOS5<8jvm}aUXrPFE$>m`3}R#OJ% zc0&{?XTu0#O$RL*PiOT&eD7fXj4yP8%`Ptiec=;M^aW~t1@Jp;C7a>paA43bpEtUw z6GGu8Q6*7u%a7o^RV)qp=i?M$`ScMd$^dK_`_} z0VF}XS7Q1^{jE|C+NU1*!(v=>3VgyNA85MRH<~wT-HhlAZbShlqT^q zz{;-=W>dm>%Q%+tm6j4)B@X@?jY5~$KO4Xy{s^QI0A>D&OMWIPPx4AHDhJ{(Us>S1 zM#mUnFG+t5%xy^gO+_ky+|FPHhpPMx4NGid2rqbYmJC7!lFT5ix;Nmg0>w z=+x`v3Vwn*Wr-i7X;D>?%K2#RDLsO^bUGAFAI>Zv4xSW5kn9V#O z-FN1C1z9Rx!T8@2gjs&&ilXFYu$X}@@6x z)1Wn6ei=YS+^EdNcF_V;)<|a;wz8l1_n4L$xJqZZ*hdk4yJ(dYF+W3+W3h9|0(ezo z7vSiKr?{QFD8agZ(=y3jpk#mHBv%qgq_44{@SjThKtxLIB12nXT9HYLb45Mkq$$qf zY#hA7_znpjE5RmMZ;i3j%3aR@HxB4*tOkJPXA#X8Mz)OS5bc*Wgd2YjMe-aVl)Jh7 zA_PeJGg9_0m(R0a7~R7fAOULt;{_POJumykqKOv}Pj9S=CGI-EDxG-&HfFIGvbgaV zu%-3_PBkDF*Z1t?|gIYg`|%>1y?CvnJ2n zaXM?W#gIT4|b)9@^ zym0K4(m$^er|kuXmyZtU<&1sBe0MSas28SRWSZpJeIY{)MqmT?<@ws1$}))z%VC*R zl=^rL!n*bHy_3ru=8~(~k_mt3{F3*)pR5s+KhsX+uuun>_!D}}fEBu6I=Xmc18j^h z*e^CQcz73B>K&8f>~H_npJp7w3X7G!?@O4sbWJoc4OURYnHIlnBf*I%MN$tt~Ts;HWw}B{y$p*4VTEb+ZwS*bNa4O~F{d@$|ut)kgxb9{{zE#fmI!`j;=NL2r@~c zhffp6y#?TKPu4{CEyn3W@;Bz={l-WkVKR#!|5<}MWpX9BnUo#8#g|i>XXZ~9FG+7s zY1nKZ)N)Fxu+}o6HHt_)r?g$~WG3kkfv0_zJwr^qcQM!j2ixk4bauAO`!UN+7qEgj zwi-U6DN@+{cOTa|I9nILB+RvsJiPxafmP?bCNf^C1y`Lfw*=v%zEG^bm((g6-cw{|DQev9k%;L7?1ZMqmPOL`^#Xw;^9aeUo$}yK!wwHxf+RD zzQScc;*?Hdaw!=pQSl5VBPA;2L~|k2wF*E13V^ur8u-&95O?4J5w=m|6F-;yQ%Wk5 zw%=k*ifYx#L^t(-eOq&nA{!+NA0>>7qgqaKc{?0mu&dh`3OlEG4DT*!s{X_ zG)FH?1@vH>m0@$l6juRk!)J!(>NXoYt?O7c+N*}_FmT$S>o~1ewo;Re&Mm7yr$D^= zki+}ku7`f-BXAHqR^Hf&^<<&3a1v0a2FiglP2~7pFi@JGLk3D%sO8>3nK%%}@G+7u zZ*;?JL*^on=h6J&jG(x>8+5+6yfJLnmeFaFn*y-(nHG#BZsXG3RX55T;jbz=yc1>= z#$N(CnPdVZLxt&pz;$Qt%K~!s0UE_5X-L#Xl~?MvFZ3A!dEWtyh?x5&&FI#MVQDh; z@)xdw0c`;R72RwK2oFAC}Y zXMXH=(D*e)iDnu>pFiUOKj?Mu_Op}njCFdMQQ{Y&9c@t}RahjQ3A3aUsV$bqOg~yy z;>Uxb|L8K6&~O&)jd$@oKMjkdyumU$59Bw8`1v`fXg@L-UdGW zAx!>FMFl*K3f?k5{7S#b$GuLhR{{s zVUf@YFcQQVr;m@x!EORjCoC)*YVBCa-OQiQQ&kwD3*#Q)&z}ljXDlj#5WY+%&UbhcpaVx0UkxYPizEJaX?s~ zPuSz^N(FgLGNv?QlpW-tRli5HYOF3Oq>`dj&S=CEKX(b#{RDiVCo2=v4|vvxFL}bxpax!-*5zQ6L6Yh;JlDaEjE+xTfag>MstK%2VE<%Jix*W{ zl<>wz%sQ=S1KN=MP9Pg|@aY|C-mKEjROQP(`83hV({u#%NiCfYrL8VUP2A56(;2gEE=QOY)_X&oV^8$3Rnx9=jA6U zoJ=!%`X1XtDJNld4qYw6so^0#FV9)p$O9FsB&B=dmzi);aDS`s31enMewt}=@Ru-V zHsq(77C6!uhP6#}MaU^}ZBQQ<#@vS7G}EKWur>@Aia1jm&k18@6Ha|ldR+c=yasCr zZ{|uZzeA0c1XZS5!Gt#D0yf;jArtu1yu@0R+hUbtSgy9x-4C!GO0tsh)BREj%AHRT zeVSMNig}BWSmXFOhoCYej^bMSb`pIWyR-C>rPc<*Pm`-=iiaNLHaKVA(-(7`C{~Ug ze@qGT&^8>W6^7?{!@=8;eafgM`hKz>oHw zsf$Xz-RR~|cJjJ|g~_)Yi7ARbMV#$0-k~;=0*@E%wFOo3gGStBHEj2zjU^4p~bqWAp({A}K@G}P*fw$fCqq`|cVVIyvziyQ5Z+n3Yb>5ZL0f$K= zU-TnX49t;~97XJ&iP}G4HoWqP{W4@N0Q_kkhZ4Y#5@Z-NaOeP>I>zz_9J3vdJ&o=g zO_?~JV>fm)t!swnCOc-~)1tRQBeOGz^9lBJiWI=V8)b)B`e_YhPh?cBa3~xkn7m!m zfCS^FT}Da+u(c@BR=2U#OBz6H5s+0485D)FaxoN4+HCnETC2QbF=3=z-WJ$frXpCa zA^;fblpECn#aO3eIQMC=jr%~OilT1hl8xuhB^}VK9Z50&;C>=c!yW-z07aqwqbrZE z`d?r&teK=~Z7*|@ zF7QDWq!UUNC@M9nf^l|(!xd$`(K9}W}!U8MdAI(tVe#1wQv7C)_4JORfA zfLeK6RHR%2P%Bkn1E`zH)Y$E4B2#0xLosJ^VI7ACM1C3-nwm0w8|;NI=f*-&N>rH^ z^l4euA7`u40=2i2-7G@Q9hW{W#+~ly0mh%ZGg~W)Eb}kru(?AQG2~|2gTjw4R3rW? zYn2BV{$dZ0J6K_vBi7=>H7k=&V5Rf4wUGLZ-J%_3P(oc1HFW2;qYSDt)DFk4MUR|W zTZlI1$UtsqJ|vdOph1$H=4A$PV1ucZ+O3fTo*X4vn6y@$9Lt!fRvJnmFsl-#saGCr zMpoN6Wps1&QVqJoi9iaWQVmSTw;)ery%SFi_t2mK2yF}Mh>aR(T+JBrAGT88l z#*!Env;()el5w2lT6{Hac#h<@Kgr zPtpUMv1qF((`(Yy;((h*F9aQcDo|EUImyfP|Iz^@Vc6=h;gPmn(`HB7(EzmB0c!{H zj|}=WHairJ8ZhGT1B9bqgd3y)@R3jeHq%+-PbwO9W%HhAYv!~(YLne1^wpZJwBwng zwQUmr$8@`@$!Hlv0is;n#Ay>!XuWXgH*z!ONKSJ&(j*FYl%i^ZXTur#?ah$59 zC2rasluM~Y1VH`pzx3UGjaSxc?3Rc}wW$`Pg1@iTn{GRbz~)4PHH}K?Uw}#>@oYIY zAPjZ(RgM;b2XfK@AFh?1%qY<7P1?ih#`dix)-`z3cw5g$o!vXkyija-0*X@v9-_Nz ziJAP&eYBqckcxRPzEgJpUJZ zd7NEFCMW)dGTE^^lpdxJ$mCBd0)lLXs3cx-B7e=sX%48Sxx3L9rjOr^pmI34vAGPpRfsx^S# zXoFpk`v=gj2MR=9r}wc^@#b9*FsFBC#Iplw*8_!{P##-JCzwscQPK%M?DjL?@M=Dp zOq%J(yl%Ajk;JG*c@54<&gn)@w=ow+2DT?> z)H3u!lOtzjZxb9cze(e8euEF$p-Dn4-aImh#2{^9^Pa~jtkT1yyOi^0)7}I%gI;;7 z-XjJD4I|S+ek9rCuazo(@}D+Ak+&Ap1H5phn?Lju4f;vA^J17F#4Kl2Kof)+cT&dG zs04c;G0VvoA*UTj&T3F#s4TvJH4PE41M*Ib{m(c#Z`QCwgA9s=U7?+6W^f$fG&I2+ z*`x_t1E-7C=BENqmv^ALm|DS4l&A~XO%Gh>=KD{kxq&rs9aT5Kai0F%aP)FIkOL5< zx94d#aGpj3svCk3;x2Y*I(7#i^~QPBzJ^fyn)(Ck5kb!UlV%1(*MVrX^jv(InDn62 zTB{Wpa`-wxY#yd@<^-77hROby$17YBnN3QnDII4MhlX zdE$(w04M-V9n_?t6cTDY{}gERMYqx-d4z<&o%!$({_Z`YjJ@aimEVVvussAoztG!C zW#EzK9+@2%4r|{u2Jpd;Ck+9{P!_*kV9!G!{vH$>mBN|yO^ZK5PMS-B76!(ylOPKo zZK>=WF63B>G3|3rUxiyYFV zYSdnP_Zdl}Grz*^$i0;yqX&}vX593=td%pQJ*sfi_%Xu4O+)PC*z(Lt-f)H@Osal7 zYxV%q!lozx{aYoZEgGHOa#EM7h~^4Inq3!*})9# z9+r@lOXQL49^z5O$i_IDRs{ZjOE&0;iyyA1Z!3lR!!RHce+NcJFKoaIF$$1(U+c^S zIE-}dRRMB4LH1AJ+(0=M=J4+a)8?ncoknH66Xq8QyE54B!Y0{o&7B@V)=v<4@x>Xm z0}aW?Aw=R%k6i~pH0h{2$On#=V{Os*B=p`Bl<3DXL=b%wz)sV`suF#OKTbK+v=qN8 zH3mP6`kk|`M0tzrsvLo(l|g%n5QT+C!3R0H78I zk(02wb}?>?h|4JoQUL0{o1|H!vNjL)(jZ=xYx*ZamB^B9Svk+f_>eJ8x ziG3&cO(asNYb;<>=g()4Ak!x_O}$DFJ{IAX`hPDFQmJBr&{hF0aMS4f#We~y4cR~2 z!A)mf)7>|s!h{Zx-QNtr@agwokk>zHfN>{~lt`r*x4`?h)iGF`JkoO}FUtE6FB8;Cv*Cn^eHrcVwT03V8lz3Z$hGS`k~nd7bqA`!9VW@Yq5nz%J&I+JJ1KA)}3A0Ycv z^JpCam5@Ls^h{>bSO>^N&$6YzN0cm{&RRz-Y?@L|k2=)(nkuri8AomVtvQt96i3XZ zy)KCUSG#LQ%ic|`3XWR`g6=a@a34eOCjkY)2;PBGk0bF}GMV1>VwOrx+bc*T&-`#H z3Hhf@RB9&xiI1fS9hGKKn^n~D;Z^zOsxe4KQK`}S^RHdRnm zihEz703N?-9hvDRR z3N<|s2e{94P}B3gqJuhXGrT(2x>@-~MWY6#$IaNKHfmbQdTG+0000T;p`}5&bSY$o zH7NpF7sE9T1<3yC;F9bG?4OeNjevr?vm;1>^i{~Y(aq1gmfzf()RnTTl(>S08g-b3I`Je^Do&)^%q9FBucQK5} zh%>D!Lahc4^wHW3MgZm&v^GOSfjV0Y04d~V)iDcWfJ^4W04g|cT_G%!K-L?#t~$|v z+&cD@Fg^n}V&b}H&U9)axo^*PIMcVsd-e|A0&pg(HfP zJiX~EuJ_G?r+b_yKbr~aO)0q3pfkvB*%ZTeac9IFk>wX?w$#ICgBV%*mg$F~zb455}orU)Yem;&Y!BQ#n`G{>MsR#g+t?bxKGR%l09u|W1i_`jV{U>=10Ed#=2mlkPjKnM z%;-#T>F)s#o~$Gi$7KZI(27Ws{#f|qAg1rldv0Of^l9zO7xs=v`}WFXIa97_LQMaj zGl*u9;5nzINQWQxoyp zA*Y@(aOA1|ht*o?XvRuSw`yZ%?aZ0;=GIPam^K-IYGEgznx33&W!`1q@gc)zn@MXR z{^I|*Iq);KC>EVEcfr(ij@Z`nQYZuR+ zJH1{ptyu^Dvv%6-(@sm(*3OzdcZNACQH%cu_GS~3a~DjWmS$`crx$f2`G4XBl@bl{cj5;M7E`qbKK3vT99YZs+!W3?Z#=LeoP>cra9hK@?sjyg%Q z%0ab5*rm|Kqx#p5>i;rtKQOa_Ev{WwyQu!`^sHuj_Ia1NYI5X{y3sSJL2z{zR{-sd z1JFjrMDer41WWsUu;i{_Wf8P3SjZDYJ3+s!CYp8%zdBeGHW!~Xx%=V;W888K7r)%x z!_0uIEe^Ta?S3|=Ty*lpK@=Shy0_1DNx4|j77*zwGqJ?eIc2s&YZs@lEWp9z?+dg% zkf^<{4f4~4G2oWGldFN2bp4cwNOvv>n4pXE*~Mdy_Gbz3LGyAXK0lT~vH>t?10F**Np z&&gTtcAoY7wo$QOz6Evp;QO~kZ&wm}TO``ygrqkFCTp>GSeCp!k{4v2xP`#m7s0rT zvC3KTd9&vOr+8Bpk$lb1xVW|*%r)D_KIi-hWAod&x{1y>8_Il3g?NqP;73I!IT^I- z#3@Wn#P{z5qFW{A65@|`V67ILJvlq6*!UlJJ7bKyWRzKp{~mOmd~U6xbUz*nXEuOw zc@L9={>og%o+>Uc+$3HVfMoOk!`XQUR#B||f6DG@d(PQ(Qb|Y%2}wxK+0*tAno1P` zr6?*z5K#~ilb~Qh!NyfUE_S)1D01!HtD>S_#oj22ir5eVd-r1F_kCvfgv3|h_x-(p zK=$mEotd5Inc10nKF{B{OfVbYi2vsD<#kYHp=Y@KZXMXwp=SZ@?#leV=(ytt!q)|m zZ~TjH0JOUxoY#|oalwwe2~{D0!dwyfo@#Pu45ngihJ2oEUeR-8S7S-nmuJ&T4LPm zfnycv$vi%F`iz5l4Z1z!zl);*mb z&i$Noq04?Ow1ij3>8Z~!nUk!b-$lqTu!OV23#zJH_Eq=}JQWAH%aH+Sp(XZGF4Rk#>x=AD2D4h7__jMgOzJvL)5yH$%#H-_3BdTxj>Y^8VU^cumM@-5Bca6 zo7y`?p4uNw=^Ca6A6 z$IfP2pDe!QE~2Q%K~X2tIyU6HvEXccJorFqo{jDjoeli{V4e@0y5g)uFq}LHSxYGP z*lgGk6abd42I$>&l$DaWF@Rd<-(Kt~0xCbU#4L@C#6`3i4NshPt1P?7hW+u~zMOcr$J1EnEGUK3qFRo8stY7JXM@}FE}3o%iHIlK9atzq>zsY&)64+}WsDQF`%3aY+}@!m{Z#mvR)wJJNkipk=Cd0)#BrxqY> zy1FHaiC>tm16MGyoG{g_rgt~nekAA{2lOrw(UTtGcV-aL3e`>|^)B+2Dd2!}y)g94 z`pV?Q?l9K?OFcy_bDLtb_G3-dNzR;Zx z|7(?L`yt*7mIe|cxbJry>UEr|7f9CM+t6z z5*PbSr{p+{$(@qJ7CW(uQRL!jjZx$!dWNZRD7RZUDJruGEMO+%DGm1VDDVI=>I96aF_in#V z5zi5Fjn8ds1scZ<@s^i>@m2z5u1r%$0csyz8fAvBAE(T*n<;aQ>~+x6uPTH-dI4`0ZlU8*r_f1?OojfIx)!yxTQn&w-Dznu z;dXk6;*V3Q8#O9*%q|klvLYz9FRxpUHAJH>5^;(hJWNBO%TUbrc1}_|k7we6yryYM zv|ME(@(}NeEAg?GDRRPcirighy7ez^?5ae36&$nR@$d}glzFIh%j_0RVu*3ed>%Pd zpx*Is=42$q`JBM$Sb!2A^l~}}4iTfkaC4ygM$&THIf+M1El@?I87ta3*{PkAF{hp9 zlY$|6t4$&}N~cajpJX8s`yM>av2ug{11tLhx0SH4^3pYwXb zt#CkmpO-1}vv~@aj?N(qunCW@k)W=Tgf^ifmq39~Bd0nva?0(@l_)}r8ab6jBjZX8 z&CirKWjp1i`MXjbH@cCl?1)odFU6(uK9Y;6H_D3>;cna^wXOhm%O(Ltd8cM)$~z^S z`b8>*0_VgEfYqTQ+f-yYu5w!0wkLD{S}k;wCU&DUrf$+ONlY9e@MUr>zCGW{#zEtW zS2GM9&w1N*WlzySjf48-Ie3nDdbyz-aX%c9L^r5Q|Gl=>^B-rHAKS3i*TYKGZRPLG1U0=2AnEwJBtUx%>u+WcWViZc zvwEu^pLF?GXL188z1*r$xq;zco+?LXiCJdXt$yTHx|J8rLS8=b)noCZ%roWu2D5N$ zPyWHI@?*QG{BB*4)6mHLk1_UJt_SP#Fp<^v^@L7;9LBjrF^(`ZdutUxd$xd6xcCN8 z*TY-+)Y-lbsLlqg>B8Aq?>gC&g*IR`M3h8eYXz^LWBRuSPz>+Z{;_EMvLW8abm~SX z?(SC*y=;hi9=6d=%x{XO&jnhqFGWf8+3IbyQyWSESzi&zi~cm3L(kjZ?C4Fcin6}X zlNT*J4qKZ3z22PY)VY!{>pwAkmG+27zADR#pIGF(7}ucK_u|FOqa5fQ(nnZ1!6 zeQCD1*YKwZrk~-giwCkrEu0j=L@nN&t&Q&09FJq-i?zy|%N^FbmSko2c&Oy)j_!QT zwBRF0@kQ|g00__HeNqmW}hna zK9*pkFJWfOQCy7PO|bQZ44r~SSL+m3UVkbkyPLW=7lvE3qif#aeEdE;n^C_pwKVe>ZjFe?_+aD6xGRaf=JG%*V z{9B~x`*p*m zK7Cru`BA)sx$eXd!~R#k(@x-g){mj{#%le4;A2iOh_imA$hN^*ANGuVySTKq_*n5) zu?v_!>nM*HQtSYxae^|uKy-6nK^l!2AFPQUF)++s(E1;nK2A-KR(DwJbRj-3Xm1q-K_^JN zYBl!)15T%w??HfkMOp`P-$K*(nkVJKr*_T+B=rQnSRmESLlHjN4R5M$nRu#}9X)9; z)1LXPm0>RVT?4bo0Zzarht+gE68unFyjpTMrGv7gIEYTek?e z-g7eH)(g^ie;@cryUqo&^iSvCRB_i;%PEmgk@# z4)l(}3hi6)X^V*STIp_85J!9I?!%h- z)f>WdRm+zrJHgefl6DB2Y^e_w@jl4;%t_%7b$MBc|8h#O16tk8DQ#_?DL$=odp@Dn zpY?Y@tN-|*2VC`c@!YklQ38g^54y*TR&l}V@yMq*MtVI;DE!|^a~oprrI`AQf%5o| zIDyChNnrJ@sJ}6f?%#&{Z{q%;Yv}$a+y~Mc_b(1`s|49_-@i=r)h)WiR@Y|+WDODQ zRsCPuBK3E2Yplef0XeMw?(=x2f~)Iw0sZ7Qz||YV7f+@B=>OZ)P!BjKi@YFBe*iko ztA7a%5&>OZyN@@dqJXP^m)8-lUJyrj^uvbHD@t3}&lKm?2&X?fZ1rxj#0iYO-6&7= znosx(%?&WxV7#9q$nXD#hLP;%u^K zLK6Eg&5!O5Af#O0aP^~M?3Ax*1pRZr`+z+ki92{%}2KAf8eVF zK^}2&t?&?&;iwaj)jKWAych9LnkN-s-6abXYxz#J;Iw(#srho!EOY8SjSrti54{x+ zJ#LzN+`h!aPoq z)f4GXWOd(a9dp+n4p_Z92b{J}VD+1eUHmG*>ghz%0+#W*EkaCrOTRo17W0H(txb|Q zgKJTY^Iq3l^W?}m{Q9>*O~on=)txF^Xphd5*Uc_hVD;28s?AE|Qu>Mxviix(T(bH} zvkA+(92pIor)A~If6V4PUQ`*`76JgIl?Tn!zRH!4&o=wd(_o|n*t&Tk;`g1Wy_$>S zIE@H!9Ug4Hc-njv#Z}FyTU;309?Jx+>UT{aV}BE39kO{ z4AA?31y^Uw^I;^X;OZ9_Vmn;H)mKtaYlo}bV*yu}6FeA`cKJA{<>IA~)|vy(viyR$ z%D`fb%pv}2A{HSAqTMqG09JX`=ix>uRZGhOfK`tCoMQUl&jw`KT;8V3Wo_E}Y(SP_ zzopBI39b$-qrRjKSjL8M2e3NUIbOkm4sg{SfH4@$DZ*+KSADPho@s!cg2huqDzG~7 z-~9@!-XBLgRFM={UGBRIMUpQCq)S#$+C*ubnnnE8ltqxn^8&JOmi91yCMl>eOS>FI zHp;{Q9r2affObvqlA z$c)|8ab$&6*NW&J5LUgJxLC4Jz47}Y8LT??%exOH03@$@kf7>=w*YrX%=2R&1Z6oi z8lOJY-JZ=VKssvLTc`S2c%pR@*jSJ9UXJ26t>{}a)PhF-jYqJRGn^BzR+zLL87 z)PN8-&jX)aj$disu}4cMZJ?J;3-Wy19tX_oc3hZ0x!J6v0Qt>gb1kyD`E<&LIKzb8 zeEalXN&LkYn#))wpe8D)?}SX zRQ0ZNU8=g){dWhCO!!qkXf}q3avDUb?sCCwV4hHGP>@N?2_{XH&g*B2t7eeU5|y>f z7AX?LIzs6cgFP3wo9MQzK20p138;0AMHPSUVNDzHiStNTANrsVpT_OPcHFK^S@^lQ zT8jOoDl*T6;Ijfp(d5T=D#UWXRE*^N07>1C^`7pp=)jsN1L{YylpKK2PlA;dru1x{6O45DLZY8r0b2a4%5`MsQLMjen z5d#1~0hx*p8^EQ9tk){cufi)s zw0lM!(H3&&Cmp3v5_kFO&AQZfcf1Y$G4*d}7*p`yOlR}nW|)s6{@_mW6-D`>%~GD& z={9*#QnD@Nl1>4Vx;PN(b}HGfQvT>LA>50>?IL7b!W9G@CiKIPjCo=K|tVGrYx zq++MM$5)M4RCQE*#b$s(=>Ot)h^kc;pr0V zpYb$+$}T${U224%&KEnP{XenO`9My#Y{XONU6frxJ2^ee`uUU)M(#=U=HMWKMsCL= z0%SXpk!=jzGNgVKQnO&--UXagCMHJi$3Jnk07h(rw2(N;i!3NrH)w4C%Jx9i`h&WX5lV zLcZ<90r^%0b**|AlrgzQv0FnV;eSM^Lrnz4MUv){e}zzISCqF8;hiz+r+DdPF)-@) z4TYj5xbo8v()j)0P$Td73`QM?g=Bm>Iy5lIaT^fz!#BfH4ISEns6)zY5{{H>@}$mE zUW7@bBhBsNhR%pini<9D<#iZRNXiF5%3tc74M}aE&6@nY({16*8*GSwsDqTBUjcl3 zie{_78kqkbNCJ+!+-#61B=|}oTs6K@X&g^M*88Uu6AQJHe(BU7WZiX_AZ0Bzu>p+w z=0`Gk?c+yv7|4T4)*B$}X=2_FP_kZ2-^^xD2pHX@Ni!(w8yh$urG&aV6Z^a!<>`(1 zj-RUp5*&3Lc}6B{cl1w3)nE@{FQZ&=w|(jjp3?n0=u5JgvWWq94Wji-a8og;T?f@g z@niE{sIv9ID?;W32CB0kWU(w~#s&di0T zKQ9*4dZknUreW@0wTQ7zfs~VQ#Gx-V`P?yPJufyRIK6I1>m4^pRuc{oUpLwzs5kjV z>jvs&MYZBCubL%}4%~V&mMXGhS561FO8g_JEi{cUmBe31*YZW5d|JtBVI05K`Q$3+ zmyKVGeX>=FwG(xcPY!p)8ezSCvZ_N^flvOjOR0l}ruMCul?2VhyiJXE%=MP=4!k7* zqn<)F<7;yj=BR+y;{Lj6TrRbe>1aU<0qKSW+N7eaTXr$vD`ie zv-NKjOkhN{7!snFFajK9oG6B@mmh1~-$KWP?jH{b>|NsZ03ISiQn&3okknU)G&+fM z3H2k-&oW%^M=u08bxjD6A>ORj4IHs&6ppPp%O64SX-cr)tMAHp%0@wI;UTY z$2`{0cVi|29<6NU@QiNJNS7+`wPiokly^N06IL}Gn)ev&dNyaRTn@3|Ic2=@;K&e?)V z!Q&wUl_&0^M=O)U7daj1-@A#(>WO>lHW@ui0;xVV22FzHMk@D%ZdsMxfMN(ZNs^DK z0A!J22$*XgqP&uicSzyzj8O63@W1|~DFzO3>Qkv}&l@H`8nGp{+{ zZ0JB$Cywf29y-H5vsRq&3U$JnwK=g*kHW07IQgt=R2W+^TG2`<3BmrxLq zRRL07Gd%MH7DZpof<;j@{IpU9Ev z(z6vweVqadJXbC52>_(d>p$?q{NxE*JPB+Yp*_5qKYKbV#8;dCZ z#!^?BXP#j1w4_E>JC2uaB}jfpmYH7;Rz<7 zkSVx+(PO?)0dkZ@0YC}7tWW~Zd#F_~bw8OqAvC}vBVDk_z6{j916TxIXU8LW5xxGv zQQxGIOGM(Ri;sqpL9yL~7m`tzafHKB=X+-XE(DIcd^kV~AQ?;ANBYZCqya2Y>m6ST z&;Xc(D-EEDgCcHEg$BTgMyA7rP}kPhI#_WIxH<$M-wya+G1Rx$bn4qA{<}&1CzJS- z$dYL*4UUli-6YHY%8m)Z<+mFe^fmYcXQqI@a93piB3ZN;?R29kQfaixHFCx?XkCZeehBz1AY zk=!AT(VG}LlWYn>QWqx{;-T8YnGk=S4_6j_sxTrS_w_|Hv1zMjG1L$$pe&mL&Yx-i z&`aZkW{~ny6`mZdY>6HkguirG{(aC3yEkch(SiV46{i+)2;riUP%U37jQUH}nz-46 zG%Gv@(vab$(@5yjvPY(ozRNTcT8{#HW&&>bKKs}jDIQ-;#IdgNeM9(3D?5PHwf8uY z1*k#5#{O&z0mstrO!ONWtYQ3ngUs0#N!@X%0E?dkG zUOW!a)U#sO4^?WQgGYr7K^oukX1?}KnLJ>Gm1?r2onJ~yGGIYaMJXI9E?X@J%Fiz{3Zic zC%nLGr(i13*l1tn`n3z0 z_&PvX_17=t2YdBR7uLnC%N(kD0!Lz7;xm}PE1gLMI$2-F<*ElL^1h42nVLTSq7t|! zS3bebeHY1!XyR9yb8LiA)@NJLlJ)xJn&fbNqpfx$-JIYP{b2g+>8m!MrM{HUGE1e-A0^lYv@c7_lP$PVwMv{ zyeCn_jg8nV+DM0tHsY+m4Pz!G>r z3vOg0#k7sA-io4_stG6^DBJD>56Psnk!~>3jjn|)`LP-kmwEBLk~oslIcN2_I>lC} zavny>0vmBc9%VE~p;eD0mU0qtq%LP|AR)o8PU_IFRXMmeofS-=3{? zorz+ZZ%eK{rIk}cZin%}`d9=h>3lXlQF|LUZS3zV;W6|`^H8Se!UhDh-1;|qnBAA@ zgjla$=99NB^;9hbVtvZe9#$&nYR^-7Itsw5u z)+IsJ&FgYycH*sK=|n+DnxX*4?&8+dr!jL@zLuSMra)!@+~qNlxohHt-HtEA+_uFa za`>`*DV*%uy0u0=9r7&#*Z}uOqA??XB5%%Pl) z5Sr9wJKmjs*Cap`HwRFhvqn=K@V#Y*xz0}qpEy$N@%~z$#9yuU7a1uwy}#nIH5Z8G z&;b({giHCy?*!_JxxT>pZi&NNm;UQdGJ{;twH|B78$YSy6 zH^JA=)}QBQ*Tpz8vk>pQxcNV(n7fcvF8bjP;MQ}`bdl4y75l}VpJ<@1Khrn-9Zv0# z2h81l!I2-F@1WE{TlaTK{)f&c5#c;@A^wP32OnJ#)(N$4_UxyL5C7Bt3KRo9MQ>n? zVxTASO3bkYOn&Ug_BY@}!b8lXsNt&pE_Gdl{bT#Pq&EP|1w4y@>p<`mSba@I)7E@- z;0+LQ-KIA%Sv@TUu)291J^E4L^Pu%u);QG#pCWgD=c-MGkAht$N%mCNBHrf_= z>-Ral_4`UfGj$*%09>DPUas}nw>p693kkTcU95)=JxaX4P;BXdTkj^#slcs|SXkP6 zNxnGujE=ZmuJdlh_g2Um zY%qi4eL;}FvWE}~-o2VRm+0)tRq)BqywihltW55vh`8RW0@h?xz#s&WqaSxU>9l2{ zdo+1V7>jG(?i2)|yIMb4K-BCnQ+Tjf;y!u$0j-JVZfDU;S$7(Rd}N3R-^JrO&9=^= z6lMMC{!@lHey2-b=iwLsl)PS*PUR3B^A{caYYo}BO#PyBbd$691h?v*NjQfF^!iI# zrL7-z6VJ4{azNe^^KBPm`o3=VsL3c!9PLFh;36(`OGXFZwm`UT9j%U}0R4zT`{z+R8QC05@+8VtPSG(xYZ zKa%0T0qwZCL|#v)L0+$l<2{GA(+afHH#@V}kH{`mqy{?Lyz zh)Jx;D)hQ?eYDm=ujg4E*z0hwiI%&}ugfAs8`XiK?p+=>@1RZ{`0EsK58thKg03q!jE_-cU;44bTt^z9)@9K= z;8g>-xaD*0wtVb4TcE2{+BTsT;VDxq?ZjO-H`jZ$=Fe%a3Fx{E=kgu%0)Vbpg$b@g z(Di=OnGl-}bRAAhx%rHej_*7NsOxEJiRY-RRD9?ClCbDhg)Jeh9OG;}!d@cG^i5xR z6??rs4332n_8Nt)+3UT-#jGoTT(nNIg)+SKC$Ga_hwA%ON-O|UqhLK#ZV71_0=wgo z3j(^Gge2tv*zM?DFw)QT%=cADYnE1AQK$x#iT{bkeg|#E`4huLmx=fuho2u8wN!3@0_^vB$I$ms zw?twgZ%U+{g%KDwewhQ<8f*o~M;jc2xfpiGN0Wh*$ zQ?8y8IanBVTs`8*W)_b7`@{hVJC=VpN>sGge@`g5Q7S)Eo3j0~gc&8IMOCvn+2MRk@N1JTrKdL61C@W-Aj29J&ifk;7Lg}fJDF%Cg+@%jBhrw<~ zsDi~&hrtdLdkS(G?Dk&8U`Jl$XDXc`ut$l&KI0ga@V_CjKg9uA!4h>l?h^ha#RrGe zdpK;cIBpazQRCvC!=M++Q^hbTy7#c~u|J6O3JIwN8#d4n%o0Te2g3)Q8JN}3k$xNN z(&&2SK%++OYYAFhm5$7iSWu!d2r$K}<-n}lgl2QsIMm>TfEp(N&=(58e9al0sPoq^ z$M%R_Rzz?ZXJI5WIyEha7X~{HI+~k^hNoKPj4`Il26CGdLekKaNw zOartC)KXm(bQ<&igSiDG%N1-CDE@zjU-xT^JPv6|$_!^wzBe$ zcc`kB+epZR_C?6~iur;q@c5c!k)gqubz{htH8>@u%{!AxFHazRX9i`nZgf1*x{0f z#0`BK3#2*e?FS(2KWyj>Vb`!DiORsaw`lvV19B$1U-c zPJ53Ee@}wSEg#Xm!wh$eV?q{?C?anD&IGmEVr*L%vwwRH$5XEy-kSc&Rx%+59cb)sB z2x^j!BG9wbpXL&%O+CAvyq@vI5G79xl}SezkSm7Levzd8NA$Yui~)?{u6^O!qa%9# zTW`BEpms=+HXx}_zYze98&6frAmu0n(anlH?{i8cFf$-ggfe()xdt#zIpMqA3Xsez zU%eZb3oy8ymgtb8X`VI|x7%AnDGBAQH!_bPH_QK!mztO$2+x0?Bm|FfbEE0}8&F18 z+zo61;5|Et8sapXy9qR=cDbpA4ED>E)kP2H=y*7;{m_kg$_XCg7+Il9S`!MIPBccC;iC_ZNBzlt4S)oEV3H#bNhjYA#&?yAT`22VBpBx-1HV?%Ftp0W=@B zO8*kYo(pj|$n`X7fg<9>lkaKL0VoYQo>ty+=^DEv%2{p^YU{x^2_Ug}|McSkaXEFK zr?;Z6zG%YhG?5p#YJITLvQo&48{N&S4tpecsUKyxqZgwY7dcjhRKQ&>e4VeL6H@r< z!&d3*X;R2&UtpDBXft&vxnZ!ZEC;_>b_vnfvoF=iJ{)FCV=SQ4x^lYY;jTue&KBT;F|zXw3RC4vDviUM^C3N-iuJkzrN_8kh#NN1${kb zT?+d8?~1-|#XiM}iI=9g1DN4;nl!dKyxYVyz9aEFsFGz=Pi>Db%y{f)=g29(#{O_S<3$` z^uf0$(Pka=!8>$l5^G2!FZIfwMv(XEZ-O1a3^4xVyo7?UCzqk1YOBN@Dru)gd2e^1 zjLHFZW->ru1(*z|xqu5{&apqUp5tp*1D(n1djqsxs>ti_HJMQenrE20)r3%)eBxvaF|tGaGh0eNW{jT_xG^1d@nLGFpQKdOqof!p9ulK(hxm z7f{m>I&+046?^7WkEf4z?T-&c`3XUd3dN#DrNz|oMk#624UVORVcfeJt|bF9PfhkJl$ zHMEDC45*1Y<_PkVyYbiqEkWPnM6;u-m52*SgNKdAhx&AW>FaFHYW|h z*6T=3Mh{$HT5%5xXJ%~%UMdYY2pD5Fq%AMXEXp@xV38l8JL3*2MFtO*!lGF(AVw0 z7aG7cq*Z}9d7qXbMMKF1BwSl|BCxw>rc%yp5RJTD2XrE^i>*h~t~KDx`?;e5_&h%? z45a77^}@i{mFtE1jskf5t9Jf6<}%X!+EoB*CQb($X!deo$R-J2Kn@my2crpOk3FvB zt8V~0)JWRVoh@LTL*J#*ZUG7Sw+ga8d}4<_iu*ZM*BEjVz0}}I-vDavLH-qX_CkP@ z7fF7tS|C(e!9P8cY^Lu1N6!lvY=Gy5Z$}>(_~Uk`fxm;}g%#Yvu1o*842ORpM#+pf zHokcj4g3pe;2&JwKJfc%)dXA>{nk<{`Wp9;ml9xgKU@SQkwZrzoYery=M5&QS9y&u zpn>}K!I^e|)T=~~hA6Xudmjt^ka|jyV^stwWa~khNf3SVFQ9o7`-R$}y04p+dmk)q z=yLIXZ@NuVKRTtP{#KIu#QQ_}BGysrKQ=N_e;jX2(J9G4Sq@a>^{?S-K925?#*s^M zw{l-Drv5a-_Y|}aNH_5@frB|Na=m}TPXCp}A5UZH0g2}~bYiZnl|WY=fVLc0wB_ys z&2V5T5ZB7{f-Xxop&2@j`M{D#uMxBoXu{tL|19W!Tl00t(g`F;eY4k;(2e zVdO?)|LwDX6#D~9fp|z}DNs(nm7bYd3Uo((oYZZXdH(SYN;lwp52Jp00=^gI@V_Au zk=L*JQ}Q~Z!s~+Qn~Kxvh|Gy;XZlYkrl}WfENqwg&gAv|>Wla!z2}hEZ8(!bzr);LH1xp(4~V`y@dvj))#-krGw+9Y=tRf+ z=)ffUXV4rt@tcn6K=&k0067y~bl@{CmEEkwoz&^upW&_rA_#E3o(PdC7aY#H8a9zz zj&-mb0@Z_opAYTnqSt9%5oCs0+)C1dAWqouC(7Ktf%b`i2e%8oz0Ik365RFS?cNyA z&uk6Qs6TuboslB$`lH=Z7Jbny4EegV7>I)8S(__RtEwax12ME~eA`%(aaF`FN->1S zkpvQv{p%9?R#5fot%7=#GTdli4pi9<>!PxYgIiA{z67AeNd$;G%{jZAj3G4h5rn*O zn^bm}4!&BPN35boZD+3MC+`_m9xr>Myvh1A=6cFyu4g509Dtq14$FY06Yf^}F3bmslK z*v6O-D+Zlc0Uh8vkbLe6034}7pfclrIckN^R>Hq`Ag(*>fJ9t(4oYH6E%u5xjg2)N zm8LUNh~U@m;Jl?1bv-wE-w>8j{Dz!NBh`VSUn~xKa8fb}?7BFUWP)b@Nwo^dPm%N+ z%YaF>4Cv~CWXDCoWXDB77rajKa7OB}Q#-8z(w-HS?;s5-fSfP<*9AZnEGIcCo4&g` z5!c^RTLGBrH_-_xBCZc4pDU1loIdd~04(v{Z`(&)6gndVTtDN|;`kYtvU^kH-%Bj~ zzw*{|W2mzZm|5jTbP=l*GBBB%XJfr-fJ8 zyhVY3dPy?D@-4t?fm;W38)P)t9vy(Kuh8{5tUeI| zYdz|))_W!zP652}LvaALo}KszE;K#@#LjCT!Ld3D*m}r&L2=?tW_&IA_g&bfB!K z9Ljor;{OM-Zns0$6R{6@DfpxRg|eP@DeLQeL|MOarFh6EFBitFf*y%DLDtiNtOG^_ zCOIw^NF9{*`0Na2J^J5K*5ML5LYVc$e~Vea#nco!yZ|h2oCG0uc)~@L1JO;4bbOkF z>y4S>e}`Ge!@vS>$OFRr&pGQ+mrzdJbHwD>_g0*B9@g|Lxp|Eaq>*Bj1NHvbsCAT~ zArBODu-5tZ;SL3zQ0~N92U=a#q=sr?K6E9QkA@v!Jb#y-QBKfutg};HfGaQjE8IFn z0U&gYiY{(lKA-KN&O@MbLJf1Hf8P!Ev>UFtiYLp%?Ft5R@z~*Kae}Fr4?(oxeTn!!F^)M zNDszqWmcc3&h+Fl(M^KMj^)Mk^W?bFuWSF0O!gnr;}nwp=RZNRdw2%P-i80KknD#5 zM9$ct{|%D;d@e5dACc_O{4bI0U-C{!_N51q>^EHCIXp}JM>IsE9F+Tr7qi=e$wY*DBdh)~GA-L>)5_UfAyz7noh?hlfNG#GJmxsQqQC4>x5T%C_4&18X;CAq=h@}We3$@dnpg2eWG?;#)}pW`o#J<2@2 z^ZePvY7+MQIfbcRH^{$*OA=YR(h7@PnExT1-wcT(Sg%;~;xJnxvU>e&*3Fosg*d?0 z3&S;2rp+($UTow?r{-48nDaUl!9aB~(uesDDd-Yw4ER$u-IECnS@sBq?bb3D9Kpm4 zj7=jLxWXgI%gRW?2zO<{kqjR@<@QJfq%m!?;v;eDbSKsW5CHuMD&$C<7>VM9NX$YS z%Si)|h8QeIvb-1q;t>SI-2mGO$WM%9{tE#@s>X>7%8ERDP=XW^B=B@`F6R6A!>cQR z^<$%$XPjiCiVGvdi+jhS*0m*V$Dh_V1>pRb4efKiGT!i=Zgyjy9N;yqK9!qzd94@L$)7X5S@}{?r1C=RYsODK%sk51)hzJ22=`X+u=$gT zTrPU+`~pIk7u#p>%2>l9HDig>Y~(MeEmr4gi<+lcl*GBBnN9#~lwDljyTTVMMAwP+ z?k42uTlhn!4~L;X-Xu}xM3qO*Dgn%r-I5an!u?b%XKrT2EO_QDd2ScI3N7Az5goY! zZ2cC&FU~V>5##Ho%?54VZg7g6T!pH?Ru-6{u^&A^CiZNJe#S(E$h6tXq{gnuk~XuZ zMU(I<05Eh_s$mN_9!wsmsh6Kb$ln+-e~DOJXGNQ_gk7fHsFi^=o@bSa(9?Ls)jm14 ziirLNT<(PH_6fniXN!}H_;?lqIc7A|?XeoWCi*vOLm&x>T8;JPa}zO~ zs!3X}MMekwXI2DeXR~hX2Qj5#YC}syYeQSZyoS>nPH(O#Mdqib;|Rsd>g;(DmTGBe z8^w-p!xN^=W{KA3ioq=1+R!?Q<%NLV|Rvmbw*($IqBXP*)CbQAiSvO3y)7|W_| zx-k#B(G^8i^CXiEQsN zRj1C%(&R(b%TwLhR9+8Y*^qIi#YBg>W%R>aTfC@Lj}X$^O%<^l*=s2d5js=e;-qFwBEBuDaIr zFpoIYL~%*X2LKCf5pX=qp^+XvlTE+@E~V6ZNY^A2YLvZm25^$lAGoJ!R3j~ z(%>_fWMkImdzI5pJ0_*C^0M;us~o}ht2|g0jo+vj+m~ywBx%vj%Qc z&Tu+#JA-;vIbeD_K2S$hQuZ2Iijx{^@K&(Z zwniE-o=Bde*QQYkF!NEH2-PN`Y7<9oDlO|2y)GTUT;o4UDh+BO>$2f#h^muvs*^-@ zXjV?usp;DkwP)pcs%>H%U#&q)Won~osx}_^FQYuRFjwy$MUAO8=?H2=GhxbL$uP7B z)uuqlFdx86y=VyGjd7y*cFh#4;kf6MSUH;o$6 z8}_&A{E*LJIuL5rwH0&gBav;; z*v;r`+y0f)P{;h6IrjVaaXDkRxtSN2r#5p$NN(n#Jo|J#aB;J^S<2F`y`#w#%u~n< zNU)6N5b$17#$+A7)CF<!Tr>dFpb{XgMa?czF+i!RYL3Y{nx^Zzu1&QH*NUNZ6rXw@BAwlCH zNVakfl!`OWvi{L%6Fo)gEgaTNKVvOu3-4-9D&0Srjoe~x;UPJ- zG&pLDnBvja=%xmw#pzktkGTQ;mipbbIu75h)>OYUuGP^`QLSt7jxEwFH{zIeHGCaM zpkVq{Yv(I5tcpd}!^k^_Y`av?W!sG0Go5a-KnKs0s)CDKJsma50tn)6ovMN>sFa~F zxJj?WYfi4iYc^x0K}?;3TGeD6xF5gHq<4Umsqm3j>-!njs_1Z zt2K{2JF7hYbv_D1T4l8+dzXsQ1$C{l-lg*HZ&3E$rMh*@^={GN?kq8@5n~Kp%xTni<2@xG z)ua{+bWhdiO-P?var~YmRI{OS@rZ`@wBw9cg7}JVkS8<$bl2>6_!@i1(k&GYR9K4Eab6HvZ!gsNcu60S(C1S3;HYBW5 zIiCm;FTS|Nzb1GrE*C83lj8ooURl;r4d&$o_V*7ACYC?^5qdEV-vc)Qr|(R|nO8IR zU7F+~EDVegBtB@z5uzwHLXfQ*3B5T&=vB$+2qC_kV?M~ZxML%s!~^SD7YiNQD><^Q zVa9rRAwdrhT&Iaxgj_MKM?X2pz(Irc%&Sk?iRIZC(!|%ZuAo53ckt&aSxfg|KMO^J zRYP1GvI0pE$*Ui^lgBUcAqhbvKJCK98IeXSdH7DyfAN@K3~^s$<}sh^SpTFn!*`Zg z>k4a<_IiBbtjDLGO%+MvU~*_)j+Gnmth8m|_sWEQSHFseis`&4a=%v`3|=z}-0x*mxw&od{{He{A*YhF z3-z|ypzPo)2F`oFau{#?#9XvXZ;V6-_A87J?8mO&>CNin-NkvYkIfBzC-~06Fb@d- z{zLr7bMs7N|3LgLPko!7?)%*Pwm_bvU-3tdT z6)=VjHnT3N7YAZND7d#-Oc}@raPe4x?O?!vYkfg#pUmWlQrWT&a9Z$fyEBnw-~|LlPyqg39ALBMsqYaq)Bsl;#g(xVW--l&>{ee z7XT)1-aZHZQ<}H~S-%+LH0DT`#J1y`pYK)y2|;4OR*5)>Y)um!oq|44l2 z4$a+*^X8URj}#WE-MV22k4V*f5pOe#*c#$&rQeocAk zQY|N5%eq>ZYVdqe$-=vFAiCiU&aeDC+C4XQE(_x|(2@*=q#HhmZ3k9?c55OR7TD$K z-5S^1Fh=AVdo^hLYNiciP1B=I09xKC8X^h!>6<)KAHg^|g$s=v6ph6rJ%j#-igTk| zSK^%-s|;CEilqt+R(A(_#AD6OxH}+jtHe52;J6YAXsVLpqU65}cJDCr6~VmMXyzlk zb?t08NqZf8T7eL^N(tu%fE%?dK;oMN{bO;U)HUxhn(5oE=fnbK0F0aW1x)_;Josfb zxvq)lOK?wLiMWXf#VygyWA`BLa0Mf8qdY*Z)BJ0=Ierfs^0PvUKbGPXwGv|um~*%8 zM#x|l5~mQLY8BUg-EKLE{4xUfo)>_RmhUxBPO?qQOMS2Pizg>utBEgp-`02%7h?rO z=l)g``BJmF{>BwPGuJ`bC-KGDTX z@8O20x8K|y(s<5l??0LO)Na8?zN6tbz@{sKZ8ujFY;VJEA)eSuv48fN{|xEAWnt6Y zt&6R%(Y<$k<`IbMU+qEE;BLu}dWmvaPeiI`VP!p3!a^Csv>u4q4~qM>CL-|75l1%* zJul@zOo}V!CDpO+jy%dq^oV}bCF)35PW#v@^7e(1wK zlXZ00;2*>++|Z#zeACA?_qBI4hS*&~ocwS7i5&6E*A8l3IIv}7m*ihO?pd7!_@H?+gP(M?rs+fUNe}C1 z=ZN)tfEE87td}{LOXM>FP26(7K8d0;{N5x5KW!&HVf-h8e}9*!Z;rTaCz9M2l>CAB zygxGYv28+3yHzjE5qsW4z__sFx$hF4bnPxF=C9RZR)_V;lUVSVY_ZQrFy>#f>ypu5 zvU?>XKTGkbSHrokRoTWfQmprBmooi??53oJU%9ca%uEK+YVn^~-(+;+PCAR@Xv*8Y ze*V$h-h;Wxb_xFJ4W5D7qTn5KhwyOm4!yy<@db43D!nROB;R2`H}2-5RuOGSd@RK& zSL%XFr5YqkpvV8v`GUxYSyWWS2I&$m1W||8sKeBy`jc7Wn^#e}>8SPCm(Uyvs$6Ja zpCy*Og!_et##JF6SKs-|HcafYauuUXn=+{ z8UMwk%S6Lirf)Pc^&27uMj9*@4Us%QHAI>lO~&ssgi=*(k_`I2{2Qr*Pq@x3hXX7Q ze)2Boeg8UKu z&xNA<1W&7OY`r)He~a5b()R_8QMxKra%)i5>wMk^Ksj=`-6tFUhSv#-UmTP>HQ8?) zQ63BJ6N2&yxY>)KBsl(J4G79r_!)J|ToRP0(=RHt1Oe(tLym#Bs@KClTGK$;E;oX> zOjFq=VHR!s1Y9ACvb0aIsZ6&($cuVeS)|#3199ZhY-o#WwZ&5kaHn4)YOVM3O&94u z6q|t$HSOjVqS+u&YDfUR?Val}J@7`cW`)*l$R11hCC?L_mu?^VfiAD3+wDCHirm2j zCz}mXb6!(R;zWEUefgAII1aQ_;&m`GGb}woqTgft@wwsM!sVHtePzTvE5lI+c zlB{L}b{cCO$tsV3@5Q$MFb<%v@#F!?YBu~f$QqEW;U7pDzSFJO4&mzwXV%Od=@;VQ zJCK#Q=zJ0^5*6~^U|#*c6t~=p0Jj-x;-qOtY}CYnbrk(9H@fsM73N;l>c|`E_G#y{ zkP?$xg`(X>6|>Q9B#9?c_R@#?ez6e@r&Uf_*jl)X(qJ8hr#fXU2f zb&*h|oo?7{7>hjNi2$CU-^hs`{>r83yh6Raw5L3|!LQlLC^C@w_@&b?3-3gJqw}vW zRxwdOIPe0fz#_3qq3f#hejqdDO}SDP`gp=`r;RyTqYB72oA)^ zE!Ih4rwDaAqz$;BKt1c~}kNmLRN6-K%W7C;Gd%X`@9dHquO0QK_Z2L0(O^cao5 zcm-aAoUuU*31W*YjR?@MRHZxW5ngp^Mw-@a*X?8qrF6RyIv2Xp>g^JDskGX<@+3)9 ze3kcRS7@l%C#}K}D9F+i%9p^G@8WG6J_vYwHv*-bP{;k=g&lOli;&7x0v+paq&q-?aScsM&FQeRDQM5^3w$`v^FhQX>Smscfeu(D$l zJBt+Gc|HwRS8f-0hSOa!SowM;AtR2eKqaWGN}{Ci5@D`-Qj>4~=5%>AP^F+&%&VUi z+SDK1iaC)VlJr5G#D07qsO~9E9lj4poNP#uBTg8eoH2^T=^)WboQU~=tjgmgPUwXgp+E$$ zjZqK8q0h%(LZ4GY18JfWN_9U-(+Lk#XLP!8+QTP3rQ%UH&iC-#bt+JG<8Sox)Z>6E zEF`IbJi&c;c({=BA?3}6NBln7l_uNHNYk7={;L;bloF7`%T0WOG`bU)!d zloIUqkj{rtQJrV%)Jyvq=CwBpEqp3}s%LnJRMWmb5UE+-10vPOz%m@VMjrzkgAgga z>&&DNWrRq9K~FOyZK_`&2tq~kK@ zg~r1VO#4!h94^m6H|S&NGTPu4wdO`48+;fBf^~x5&q$#97$GFX!(4%)9;(%27U{?h z?qj~EgdF!FPid4?fVV&odICQch?~la=^pOV1P>C0KuDA`?4k%5oce*E>=W{zPm)BT zg`~e13WYWSm=B_au2jJL?lT}%LzGb2BvfcQHMaLL0*ek3|N0TpvGD$=mnGA7{7k(( z0pUr3*N*pr`CgdjdvI(_GKC_#y({ykmG2qsX(GUR)1;eg(=;_I@Zzr9xv1MgM21Eq z)WOV4wop*KuK^Y}!w0TKsQ1+zO%HqO$33z?1@M!B5OdPl_~Q3bShE*P$ZjIQ)ChQl zVhszS`V6(hH*!U(#L1~L1=EIgLP z#rDl;^HgM%N`MAIG)w^y(2LqU6+gmF;WXjR5Jz?29+OGHy&N9{K;Mr=@96rRHjZgy z4SwA|^C(msQ$X|67_YQbk7EZo^6NO`Xo)3q=hJGA42?BvERwOY28_Wu=YzfaSi|_x z6{WF;_Bg(hsCQ~-_#5M?YbXG-CY6 zyrKI%=5`enjT~cWAM0!=@xB;VAhau(Inm(SWts%@Zj!;f#m#X7d!b!HLdoM7aL+Q` zoMeRP^~5I|!5O;wGtJqi7}_8m%kMp_fXayAT=$XwV5LrH!wZws4efW04WpCd8V24O zhPGW}x6@C(Fh0xB9(Dr(y*|azu5iOp0H16zv=$XwAvh?4SHUX~wAF3H_3_wNH?Tm9 z`|>T;Hy({u2sQxAOz`wg!giX0&ssF$X@(Xbt6h!_kJAiz>Pmj$WrfkG-)wtTXZbU{ z^XYwgDup=?gl}{y^FqHs)e@024Km@MO*Vk|0wh+~bFWAWiJwCu<{ix6(}E!+ZmR_L zVwGSHCW&5Q1H6l%^4DY>ob??6oN$KK5sWvH4|P0*4f2B<5*g;xE;8CJEtDa3>#M-N zMCN+6zZqE6g-yoyK8+vLOr{D5Lhnz-FEPaF&9Gt!E;Zzne*T6qmKr!rzSQUyO)ND; z!6?0yo68I?Z5?B`z8viYzYESv#wEGDG9CYwWyga>#)k(6v*kvB_l|jo0#@*fpr_cE z8e(qD{1KyBoGSCiEA(*NT49J66dHPDcR=bMilSf+HlirG(hy%n(K0@qGee4=Dx-Ad zGD93wPevEilmx3c7rjb={eN=L6^6LHCmCHF2Ej{Gb1r(7o}RX^qGlmOt&tj5R;d7c zpMZnS^54AI7y@3~aRVVeQ`D9yaaQ!2dA?OxohYLR_4Lvf?1#W5q7hc;8am5rG(!4B zi77H(g?S>)7f+PtYUrf%aYl}oU)e$#T5Vuk5xr)$Q63G#h23v{c|AVny{aF_*T8e6 zhjy>2Bi{ex?LEV!sPg#V6RN6n*Cd7s%rwl9W*DHm zy1TlYtO9}}$$$a_0}LQZK$u}vRD$fPm=#f67j?yeAVw5L1tTh;f)RDit1fGfYk>Rx zovIo}?|)z1=RWtoVCXuhPN-AoTPOX_=g3m~&XBg)h$Uh{UCx`JZv?cSbma@>b(g$F5;BqO=ukwa97hBq8%??>bpyae^gu; zFgArke^KfxwGqb@J(gHktra9j<;bU>uN)uGnvzy_j4n`@NMpGaX)NVxOuneO+E0?Z{N3P{?}eZ?tYJ)rK^!%0 zn=qTl$`YGGfz9K@E7Jg1j{N7DV%RKnO4#!5z%h?^%uNn(qxe)d?Ip7X7Eh1b)fQHF zqg&=kfc0xxX!P8Igx{y#KL-s}>al+mS-l6Eb#wfB-SY+Ze@^vlGguatf6n0%1@=MA z=yUF8!SnCZjy_6!GTS$_NiTX43u?ofggm(bM(d%4SY?k-@S&S@tMFmxVj3XXu(A6^ ztiY5f2Z&gF!>q%{n8%R7ul&+~6?R2@a(eevY9kNb8Z^!;{ zR*=5tzVMxz{LScF%MW*-_ozM07ve6iH%g?Me4BPoOJ2JBm49`F-R zBTidCF?mCaxt(!i6d{#EJ8|y%PR#!y*i=86TkXWbf;-7N3Y8Y2b~2xcM|(GB%_SP& z$@EjaP-%oZtr^(nPCe83jf${SnXSN}&<*xgWME@1u@ms+dM^-SHXD%CKLSotls4d3 zu2sfP77-Io1WHk$MlVoqCwk&LagsRg+@bv0NC_u!06VWzGOBH)9YfrHKDMr~F3y5G zX=fnPIs<8)6YQ13nI$zj#8aBBVC?v7{au*(Bv_?by-mb>;=!I``r>8+SwDs1c#8E( z#Ghu`!s`(5d5{u2XwNb>@w#9PGiosNFn1y79tzqQL3c5IIRypiS*uRk$1(Qfvskem z*<6`RCGAnofJ~2W4#@8=AGj!;YFwtVO9I$>g@x+t7W>)kOo@H%;xhaLiR`8Yz}uX2 z6d>W^_x6EG7$|@q|6Dcw!pDYB=uN-U`1N2P{3^yWD~}EhRIp;aVm@OG{X$7b8qUQ= z&S60vb|&`+{iQh7wZFjP>Fh8j>hEuwL!lOC{5mVNoUGychh)raYAqQ#fr>WiSRJVg{m=@~C#2`(B?L|7iml>lDvd_&>U#9H^ zM3S-bLI3!|LMw8b;cI5Uu;64SMi!E!VVAMwAm;z7S>XHj+H*eEqg}y--Ynp67T11> zzp#Hg-!JC!@ELUE{65KXm_q6d7}=zOYD(`Z!>OGU#kdb7+J8)VG?nshR`LnPU-m~9 zv2>c2*j+p|9lh@2sX?X&W|i2}HY!qawi#QLnJ#jsP`F}Tz#0RjW9W4WOcx1QY#u1r zWTf7?!KDxvgFGEWU}?OLQ^%Uo06jYqi}OfCoWso~Wv}4^t_2J>kV;txP2T86f<9sl z(QCd@WQ{?D=F!6J+d%t=>> zLw*!bV7KkN@bm)v%8(p6m%XHQsPA=pp*5|(?;@PBcRG3(R|fLZcZCCsOYpmErS>=< zn6?t9VeK_}K8v2lG@Df(a!g`O|L>c6v? zcumJZzO_B89p?PuT)3L$CrUoYh52?)7A002&cm3aVRrF$mXO-dY0`I(ZuV?ObF{%| zTcWaS0#s;NUQnqME84sPfapuSD86I?<6dlCOE#k;an9!i`p%1M@|XrE4k}QTqvm@X z#v2GM@xz?d53i+Ax~bqyAGo82AZXua3| zquif6{vnq3Nf$!R`J&S(FV|U`c1DBqxa#FzI!_m)jp{}ArSq7soA_I34dVkA+3~wI zY^;DW#PlwO)-hA{RrCfj^agUvS>!Y(2Xp@BH<-CLE%H-JvGD;@Ee*7cA0(dD{D>5{}QqNc-hdxcSZtnx9V5@~yR{K7l#VX7mh~ zPN7I92hHR(poo8?NDNZWl~c)mKyV;5iykq7d;;WdDEEq>*%$Zk{Eha+hbf*rRXo4p zAQRi#4pWO%U#%#;UE^PG3L|%Aag=guic`vwM>P3X7wss{@A(0RTbMha%2-slCqs)z zG+|WeUs4&H_}$e?y!AuydMMDR-x9z$=9WODyPdg!oB5QR1C$$cc_6=r_S7q^A@)4> zV*Uo$S)i|}1>O;6G2Qurx^rM4-~W9S-v+eqpOA~c(y_F7{delwmp5Z9oxU%Mvhx4# zH*YdA&blvZR+2KlP`AH>vpis!@$TPy4GB{S1^y_OG%!Nj4W)DVt)*V^HlQ?T;qu4%^ZAD_0U zlrJp`55a(UeTlX*$iIo1YX#SSo2FeaX_#=m#5|a-2EPeiFYa6u$j!NE=j8ZRb$mrbqEvnbLtudRQ~+_115-m>Vn{ zE6@%G*_$F1E5OV}H`~7Gw@{@fR|T{VoIjBt`b^3n12lrVC?8vjK6Azq=1$DQf1%?j zwR)eX_L`8D+NVBPsrBndGZrK1nXa9#pPo-;gBc6VFw>}L4873Dr|ZX(yEn+esOV&J z|75z}RozcBIqEn-6tG;YYkEGGL|($SR~k|VaQnn&%zW7C_{Vt^4GIQZX~3ISlR^!Y zv{j=&MSkjQ<*Kfc9{rmd?UuaijCD6+!z)p8Je@q2mubsYY+&WA>#2QpNdJKGSYCK0 zW*O@+Ci&dNp&b}T$sb`OmzpVA7aCQWpTh(LCYs)Kg*mTTYQ3m=o!9IuN<43BJxmOv zFdU+jaSao*6&S*+fyW2YkQzi`yVdq6<|^FbN!D5$)fbbUh8nq?8P!M8%%U@LIU%ao zlA(r*pnFu;F@qSV0aO};736Q4prb^P+p8kI(`k6f^YZ(r)ArGVUBUFba6FEMfz~qVT^JzF`rJqA(Y!Qml@6gQ!IOP#Dt{(r85faYol$VN6%Zp3~J;_JJ_X zR%8-tP-R({hqXI2dC20u_muj;F6NdHPEgL-BPz_B=~XRg)V9zd+2|r70RyX2G#1`K zHR!rVUHN#g-S?nj-q{Q^b0(Qp9#CD795>N->r?k`ryfd}0U@4yD4ykBJWdOtYRLoS zk(ur!-~~}N?qTu?xjr?~nLTXP^BEcC>zSL|5&1Nbn zU8$`ex{c1Br<+gnZiddf(ZPM@(nfrjm%Gk%`_V;Mp};A}_>{j)LCQTpXw6m4tK|NQ z=kA07T{&&x3-s4UXmEq;MUz9zhW>#TFqA%TsS;1I#5@st_)62wch1@Yi-Dz34#B>D~Eg>q6 z*1fi1<4dm)%?wa>ZPMD?zKV2eg;+5VN~0U1@_dTNo38j>;IT0=C?9q81TQsRp>j+@ zJBvJE_f4rmX*W4aqfA3-SXsnJKwjXZSRl1YjxW+7sbLwBq?V;g3o6M^dV3|Ah0#84^)QY6ZzrjR^jTg&vomw(ilyetAp&^N1#Uw)Il^kHD}(R za=Y6LfR7GM{e49$``&f*3QzSI2Gi}Axjvp=sHgaJFHH`fiAvPkT)I<^BPc|P>(jRU zMlZn^a-FL%Re+F~_M%Rcf`~@@kD3&OZmw7%^nqRRALmPkNi=0!F!O#z@QA`rrV5hA zohL7W!cL;JJcUt}{K$}(IqFD4N7R<7Mgl%i*f8>O>h)qnHqlJGTdyIp97*g)dSN87 z-i~J)k&wi4DbkW^Gt|5KM0YE4CIffO2cgX<7vhWiNMy)eRDMb^IU;jXq_!;GgX@@5 zcO>RX9};`rkywUOgT$nhPgFyi5_H;J`g~wYkeX?YCf;$0Nx=+sL`xWszBKGlP|`Pd zpbBjo;Y_RAAMvb31+j*@5ph>9 z&f?7U0H$p?RS|@uD&nnY4jUKnT;iU(+rS_l>90nZB}qXL{LBOk6f4tT93TCyz3 z?nCLeWa7A?j>clypI`-*ruEgIUOgLwqA6zMI!62I=Y)E zQ(wEzUWuqvBJUxeb~BylP(`ASs_r};@$_+>odAL_Qm4m0v_yg-o^%S43dMW!M=7cc z+%RoFJ5P|u7|+8iM%7b5Iz`qiGn{v*ijf+#gHg9J)BZ#2wWykyY4#ek7w0qnz=@cZ zG_{qS585GH`;EJ(xN%2i5`55gwBnOs zhGV@+?*|j`xULG~`XwqgW0YYk-}ZC`#d*G0)7=KTkeL)IuC?iS;W$TeW`~tRzIAd> zD~%rqPbR$~gONhZpoqfGVpj>A3@mnKp*NTd!`)fxqKax@0^U8)85fvfsI?}!p*SHo{{8_hW63J6xq3Ux)f*yodybJOEWW@`Jx5y!?q|0I13xb* zw0?@~8-_t|lAn3DzBNax(niqpI^9OqoY8oMnzM!U{SepBch*BS>K@7#y`A;pUgQP$ ztHw-KIHLuX;Zb$_p?Tiz)BI+jMK835EBD%&99<+cAb9a~8gGRth)!R2F=DzKgg)#M za^I(de03THaeGx}3%K-&Y4p``KKWrh#A{u+(`C$|R3j&^#QGY}!*Loj?OZOehP^K8 zSuXAM8A)k2DQ(NQ+#K0Xx`Mzu2Z;HpH(zysNewa6mtRjPDOk)YE^4TRI6Nu1H)e2JH=6iLg5RfPE; z$ZXgouT7JIBW+rB3uKmo%&J=;v(;XkHp@>-MyPq{Ho8kjPLoD!NmQ#bK7)vi8hQa< zmvJ9GA4X^J&}EsrsC7D%k57eU~*{AZOn2x>M))k?r+EA-ry{Td_`q| zBBIvJYfaH%%sO2?6tg=t1C|@5L0!f#-2oS_(42KT(jZfp(E|66*0|t_4&xiGv7o~^ zz@pWx0{e`UX^9(6zg$guL##3TcIf`xscoCIj8a&_ExbUY1#Z2C?*y(D}l#643y%|K$Q7SM5TC^6u^x`Zl}bNpJW1s~Od(j)I0 z^~(o|;r2pngwo6P6`sUK?4(+&g7nU78$@;vz=rKp91Tk zKR{~6dv)G4I_R&-4eQloT!?rT2d8Vx~e zRT)UF(tdI!nA2^v_P6ac6QXi=lIG-2wQ4E)@E`+)){peA-8xPBhjNsAIn_(q`w$qV0389fW5F!I;r5{kTQw_x0tB~jCFAQ~IMSNoDQYcL zSEL4+Whqu~7K8>}Xw3MA7g56{)y>vv5O`oI+4RFh)TkjB`i@(lQA$Al!RSox59104 zR8VIfO&Oo$SW-|8ht8PE!_Bc+!%iqwu&~tFYf+DYnm{rVP1@%9G|( z&fMkX@&bw!ZCP?wXRVzz@kxCCy{Qn@JB8eS+M#ko=|OH)PpT_K1+{VRm};~R(B9qI znsYR0V;`;vVgf`NOd&_|n^WDfBNPJQGkj1{&{r~-?1VH&&(JU@kfG{$)Qygx*C$ie z4xx&yl6A;eb&4!EAUW;pX_|@;VLrUJH4HUue+^XFAFV93$~QrYk&jm5Y}T(5hC3JX zUvDlXkwLpAv4uF1b%$vayZmXG20$&%g;3}DjjNp`)G$qru8`XzYtRnlsdFlWJbe#H zwzB9@k2q#E?l)JDh1~|}M!CIwA>8DyZJutRv<&Iy=T+qX)iy_IYFbF$f59?xZ|^G8 zJ;Yr3oOTZR41DCzA%ZRBKJ$?(E7iY{CK;7+6jhATLAO2oXeG#|*#|$2VV;py(P}jg zy@U?H-|@Dmz&;A!&yHBehBC=+L+J@-8?*e9?LZ2ow3`XHF4U}oBQ=b~NKP20l|2D3 z0yy9jT08nk?Zz-IMeW+k$0-&J(+)egsvak#Hgax+&{gFxyOqDANtqA^bP>gp~1yGarfzvfZGm5Pp?J zt)ZcsJ0Xe-vffY=A<9CEit~U^|JP*1fx7K=96wsgF&he*ys?=O;KZ4>M|iWB28EzB|tQdr8*PfUQF#RSG)ojc>qDZQG` zm{o+$3cKcZO7wYby6+3-?<)P}tTQMo%wLSDjN<>7AhlNXYuM+YU-$U<2gf%~m^?mV z&HKk}o}E=aHC{5iD6wT${^Ts{GdW$qc@|&8Jk;w=6Scyz93~(@y|TZvg2hSZTO?|8 zbvag^u>tX#!^&Ic;2dq>1mx=gu5qkUUyk0trd{{kIKIzK|%VBUowborSPi7{IXKdLnHrT**6StckqLp2)FlksVwpuVU~%@h%X_=N2en0yRfxrlmrvDr9f1L zu%)g?GWk4A8R9sGIJFvBn+%LSf~!S2E@GLv4iZ*$P1S!f##hH;eZJ-Zksgh;+pjT8 zF_f7X>);1{4SZ?}e-idLTqaFWJ9zO!d4t+xdmqkjKZ%JgVZ^?Mi}vX?$nF}TO>>mY z8eW*blozJ3gFOdFMTEt2e*OMqk(Q}kl9bjO9ynHuS*yUJ$gDwH_8P*$t|9BD&I}fH zaE##+#uRlo@bDVmo*Zx!DCa_s`^{K`qF=+o%t02+S}D8Q_1pS8Nq}AKrm#T9tXiay zr4;Zd`cGYcQ;26l0=T4ZLfiuTB{DtYIvBYtGf{M-lhfqIHu z{hXNh6e;&9N|Si&Dg~4#UOQez8ikAgC6!bTj#TnNw1F=lr`^Z_wJEj%yMf`&_3E_) z>~uXB54QKM>u91G3YJ-jR&IU;r|l=7VotKlBwz*e2M3G z>=rRCmM@>ce1r*N2tHlDLee=uevdfZf)0M_c-9(|N$GqzC>V z@vk+@o?39`^u~@|7W8xQulZ94&KTm-Ustu#Uu)&D{j5x?2us#7-Y)?Ioa$iU_LBGh z0DqmgbX)JlkajiWmmZ-+6YE%A3w!X#h3 z5jKuvMTrjsdP{+3mkpunkLn)(^#8oIhP8VJm0du}l>BS^b(!ZIqRyxr~Sq66|w@H>t+1>qd`wAvA)Mp z-?CSX5A9o3Shs?)^(?R%;LDqNNwOQv{43e*Jg~04xTv#8Vg4y~F&9;p=z(DW=yu-O z&K%DITULl;Dp>|`odK6zdlr0{6F-8AC3h78RGnfuj)_H;a@Aja39O}p%UWY+$^e}L zri^XQ8k?9{Q`sYv+Q-2M+Q-LtUo`D*v_Wo`o?`&FNi8sZMAuCAR$i7$0gRa{>E1K( zIu|F$M3(i)N?DI1yS$@7DP@T#i zT#Rj~m8_ug=OS(l3IkSS*G*?~sgSP`39piYf|{NwWJeSV><0Poef@nwh^oG#BwMa` zNu>Mu#J5K9F(Iz;W3U%E(c>pL<@R8;<5v$p&SP*Eq`=~7Wk&i&OV9)C@AX6%ad z<2V{%b-D4nPiwieFuhh`Q5F9XEGW4w(80=q&y^^F9q87z;&;EpL@h{;@Z(b{-txny z;s#=j_gfg8#Q7es1B#j&02b<%wN;JQJLPR?sEr)6iH*FI!Y($V`lf+4%XY#KP{;z< zKUcC_oXn8XQ5&&87=;A3-l-hMN*&qt**Nz2rBX=?=8(4pKyzyaqE6}$AZqt?rc~o= z{yoJ3qCQ{CHeV%I7W^+7YR4&cr!k*PL+#SH<9*@(Mo@TQp)#wCwM#lMRQcDzI=Y(4$w6VfD2~y^rb~It zUA|31918O8K%v55Fq66Y@=3f=4ZZbpFJ~Y=X1HayBrQHj9fqx zg)$xlsj@hSv+7>ttg46okLzl406Tz2=nvxmWCVcWXdk~Qj%Z!6dCu>!+#-H|X~yp_ z1H#dPx%vIN_%sn~yv;BaA=U4%%38M?*kb@f>aB*jF~U1Db1w*~SqLrol22R|!50&R zRR0^$$Q!Vp^3g`ChtVZl;q$}buL}#W^s)CME|#(M+>?Cb!w3-o@na7~7kZZ{dL6MP z%_ni7HwL&T!QyAbI(-T@6n%s&kq1b%(mz zV2HQ-;PK1`z+Q8JK?YXp^28HRNaP|eF9pOBzjQeW2hSxNj6iW3&wGc%lKghJWAhmXKm3B64x?e$d}2E__~xG5OsCW=<=M<#I%>%)(ioJ&J!Maf1+% zyRrWT(aGON$p-8*h-VNbtOy?tXR&3fn-JGZ9R(EcCP0L=P(nk|$!#!vz*IgG=A(N0 zLqdO)dIZSP%rUX}b{yDw@jX~aN9-IlyKXGfV3ejCj3YF=2E&ju(f6>aa0qCMJA03H zL6(%29vje4-x1cekz*?oD|NA@*eMzf$D?>fb6uo&5?Kut=TLhZ4A^mfKnz#({gD4M zjtoTcc-YC^rt%M-YE4aY{ytQ2RQ|+7Xr$FVh;Z z7Gxopg}AOsq)=FVMf#9wr?iZsPZv}{8N7#@x6bh%; zqfB71E;e>S?;p8A#fUfP*nvw7Sj7v*Q>-uW;GT%#Z-pubT^oLJg@x+!W3L!RSd#)a z6A@tl4^V?Kycuv#lTMK&6DShPDH72s%AF#a=IP0;EmDAh;}i+Ik{iQdlaT39>#l4Sx}K84F|VfF5Q(Kkr+~u0su-xI5L^?F!JnxUs#vtX$3^=4#C>(1 z2v>J@3WaPTooW)Zws!I5iU*d2*>bG6yi^J3m+4?A)vV> zl0^9&KGr-C!`p#(u&I~)q=8cWJdUz8?z!ET^gn%kS=?a1nk$ zcejdUy8rQm0OtSo=JmQ#E2KRUr5qD28uc zD$xTh;#%`!i0#QRUPz=CpHHlpS%AgP4W-iQ9v4gsFMpby8{wB!n#-QnvFD^KAw#?7 zlHd0Ytcr`(r;4fR%EXgNd0qr-onI+X=y(?S3YJMYU$5R4Z-!ByVB215X!1~jmCp5e z`g@P@ z0?_hP=CJvo>@QdW1Z^rAPtF?@IK|3K8r{qj}S*1oe{#2kIDjj%M?YRU4OSnpatXA3}NR?JW6djIInOB0?}7Z zWuyqS-vXxwsH;!EXfO5?;#ao>ab5`yd#hi9Te|}v2~b>dG^tlV0eZ!Tw?}B*mjbTX zTb6vkD~}J*k=XCMnOHzXdrAzLTH412gBUk4BLdbEg*j($=C3dr)VoOb#JJk7CIdXxUiq`2BRU5(3Lx zB~Cq}5cBqi5;ur76r$34l!>NLuVi8aOs89a5&7kuBRpwGqv##75kljkF7Fl^gV|#z`*&w-XFf;YYgKvrN2MOT3 zn~vo_4Kl40T6wcc=hc=ZZWi)|P(kvIZtO#D4u2Wo{7%6RN0+9Ke_4LJkzF4wv-;uN zpZ*tjIJ1X>4rey`(11z4A0zUuyCZiVUz8|o0%13>z|^;Wh$Az~65m(iT$Q~TtTO*R z%v$tp!YPe`5B)H;e_y+T_A`aBJt9lnBfg0iB(E{4Yt$uNl}L__;?sax(psOtzA&9g z+8XQz@XZL!GT=KYifv5cNwke^7pLtvci$yoFg)~Fhbw!SW6H*=+*_DvX%ZudDvM$8 zb!r=vJr6YGv+{Z;lDtWZ&yN+?cvRU_=YuMXSHdsyN9MCGxzv2x#RO|Aggu^NuM?w* z@`bdEiD<8Y%8FuOVa>G*r9Am8;h;)C!7ip`(q+mre)XB!VrD*wJFau@;1?5BRx8dd z!YnSLFrMRPbgz_y&JrpSeg-#@X4h1L5&=?{cTE60i=T^-lN9z-Nefw2k+fyXqHUxb zXu}oVFppCzz5%q2X%RT3-VYYi93(5E2tM0{qMUCMQg&_>KcA0^4Svys_3j&N*uhyy z2X|l3eJCnWxH&mL{i;~9`>gwXbDE4xM6732TSG8#O^MT1sl30@I^N40zXk$ZD z8Z6n~QI{n<^Ln1ddD~c$4Xj|i;RpT$4hsQH_VhD^(aBkx_W$RE=zl@#O#&u6w_gxH zEnsBPrw0cgGapU~XS6`KG^o8X@Op*s8Hrvkeu!{8=M6aJi`n1=QDE`xylXP<{%kEj z^HaPgJB`=mF=f?{BgN;uB!bQoNS2_p&JSU`yjYN6&CP%fWRm!Ca1ZA%Ehc#HX4vgT zB>%%p0xOn)vVvH#ulxldQvOqS%)SoXX`yPS#V+**UkpcH$ynzY+@PVe8p4wwATinH|4{$l6anRT+l#s z(}Or(wK5geY4(Bk|?bp^0QRy?dPaJs6$Av=c;KHr>eNx-t43CP#iHkAG@s-M79sP`xRVv47tY<8YiD3)y!T|kos3Kg-F0BVdd-K%U-F;AKqZE zh|2nhJiaV`IDA=C7txrW#Z^fr7eMxZHHv+Nj z8-cL)WP4)ET9lt2l&bkqz~tFt!tMeyL$wzE4&nAt0}FaOJN?~;I7 zk_?z;4-{+5_i)k21$f0T=7~7dBAL9MncY#g{`2TzG67z62p)opr3*ejwaU4DfIspt zy5GMsYF6#l)tGfFpfNyd48Or$$|G-o#10lOq0ldx%k9GS)?i)s;r&sxr!omN^`dlwu+x~z3&X2iQ>pH(#wwHE3X%~JUXsWDAqyU;NDs(`zV-9E!1+{mkM?U1@fv8+A zc@mQz(w9qHAbUB)Mf)8h#PZV>pwYKCgwL*yX|edDt(@5;UVRMJ0;r&M>fTw-y}Ki( zPu-h6r$GMr2LJX8BL5L4OQJY>F4M*r$X{QLrJe(7^^8}1KY9t~3gj)X@QV(5cmKKv zsJdk^j&?H=Dk+c(FB=3e;M~7xa6e~N_!k23f-n1Ue)wq#qT%IC`!yU(b-qIInWqug z=tjxq7yN`&Jo9I~?7qE3?E7Jlkjs{9Q}U(p65(aL6EE5P7Kz`oTpN@xH@!G8l}!=w z49LDO;r!HcEtapH^Bk~HWSNXYfS3SlI&_3Bs|c8%?vZ@ahsL{k@`1-=3M^Z_jX1j> zA;EJ#)wZkKo${r^d2bK6nDOild2;l&SZW#y=hpk__P6(lEXbv2=gBwk&rAPT^auuy zm7+&jdmSdfd7)z^8`&8PjM|4LZ@kFFr9vP*@h$^JmDsW$Vq;TV$k+x`mZB56L6K#F z?NeY`VEbgpki05Nkg;^aL3+)L5@Jjty@o}B7{d-wqL0BOt2zqC7%m;A*P#fweEK3nBE zV=1&OzyEpVXaA_+eHp;}IL7jqd0<(^=ml6dL43^WG~xTwt@yq_qh$lP&1;vq&#X?T z-u*TV7-q*MdO^8)%N|WuKSba~kj4}Y6H6+1k0S$8d+i;#SJ~;;sH018Ow=p02$tVj zB3$mk}urLX1+B1}ELdhjSpfRUIoFWu%-8s5 zYn9reEV)L?yer|1CnMlmw;Vn%=1gpieV-_f^eu9}F9gG6Yo)mVA`}27UE$G6?nCo6 zmI+i)#D3d#G5artlK=M-d}7QAj|h4GN+%+(;D~xS?h!CSQv|HM_BDW3ZQ@~e^g~*AY({Wr6 zs!rXr#P6$y>&f2js7@r4P5XTtV4A!~Xg}3D5mEg>9ExyRju30T5Jx`N?eVeBsA{%; zKg@lxgmlS%4>6lb(hJ?Ozn^nMD`M8lK~@&D)dn&9VmHm9HYek*tda@H3TszCv7RaG zhabd&1+FD3u+99&SEVHsXla{BdQ@ipmHnmo$!F&qVVHr`w zCP{)ex1r2(;9KyHJV_y+iiA!L4~+hfC<++@2;C$wbA~>x0HG`FC3so5Xh%NSa z4+wNB(2uaUFQIa3k;DO+#X2KYrwGkpVrHGzlp+BFJxgscHMO{eoUlU_vLWy-9?g(9 z(;O0UdXvzQi4gHZols*?1_OY<=aPav50`| zfLptk2oQ1u{Jf9qD4I2(MG0M62X~@8m+mJ9Kh-~?pvn{W_f!6&=mhbQ2yFbyJDEvl>lE>?!Z9Q`T=^%Ku`H8e6Rn=nB}!fQ0sP!{A{Toj8-{`6h*5C z_*$$*Ee10euFGDOg3MB%<2=OX%(_ zJ;WvCp(FxHDaLG;%5ENb3wE635vzTpi^SdRW9l1N<$Nsvg$ESi2fhEAgo-<%P#3EmsHwGQvkJ)1!3i!_E%Ll2n)MHNm$4i?l#050D~$%aSC$cm>ht`#+z}zS|eTki8LEX4#%)+ zGvxu(Mqth6CwlD%d(0e-VhA6QK*6S9;UU5=Vc$CTs$pD8$HA0jTT!t1wD_70a|lE? z_JBiyHSffR+mv-OGb?;jYd#c^U^-w@63!qU)LXyirdPIxcR6bUi0_S zAu@xY)9nYO!)^sN3`qnwa5IlcuUQA&$_u&qIE8p{AI8dNzumyG=3IX392OoC5<8iA zP6Uqqswi>$7JWphXF3kYyCjijN5B&I;-G}t?FelCx9&r)h(NPP74pI?&fZF;mkr=| z`rIaKL!`xO*PWfrP5e!j|3M4em_*6~7oyUZRw?Vqw!GcCL^Y z;!4<)yg)~5=yTJyW+yr;K2?P&Q(>_E&GBJV^8GX1AhCEmAFRVP&?L-RA1;Fp?;ii^o+Zg%5c`l!Nr24W&=A5^X`)DoKW~DBQnYlLxXDq za$ZQ=-?}f*UJwf3F)+bCAfU15lm4cVHj6HQ!KIe;w}iBzbU8Rc77K*| zc}_^HCWpiD-lAf1008EyuKJ*3%$u=wGV$|U+6^uMGkP*i(MU?SV4rNF z!vXzoA@R>Dj%r4Gk?u3h!Rb}2zC-5(E zdtqYr0sUsMA57Z16vpnrNAqdxk_vKgnf{NE_$Hr%JOF;ndl7=TOby6fB4KX`iFQ%i zL5E7L_8TO3%e+KmlmGURIMIh7;X6X|fFjP`0i=X=N2t)=1_Ng)Kj=i;-S0#xIn3FO zz!W4s0_K)NhdFyf%C_p;FlRS{fr+E#v6Vt)E!M2x6%sQI?4e( zM2_8kOK>kpj64clPOa>(C=;Fky2^dRf<&*OF0a$u?uY#p2vC$baR3O8C`5O=A52r6 zLMec;<&hw8R9lpiyTMakopC&zAV=J{Bwcsp2^dUyE~kCCh~1^lf+=aIXF8I@K@l!( zb`x5;ao*_!=SiZaD%vbCn4rx99IGgpv`Ip)@VOYwMB3R^2QRe^7v|jHMq+~?IF}+2 zLpF$k*;I>ADgxRfNM6&6;RSw+2?C~wgy;gBZ?nX2(LP5@y$LWq%x8o9P<-%mLH+2LNMA)wO>ia^TYXw2NjC;b}Pkf=9EBD;<N{leGANF%Gv-0tCD3Ox>Y8URvB9cs; zz9SExr4lc4B}Vv&_-=fserqB3ACE$T_%W999-=2X%jvJW8SSsL7E8QO4uVu;CNZE&5I!**0@GJA;RsAS zE=*g0P(3ngqdRT&ANn@0if49WaR^1m`DX950wu9OkYtSH zd0P8A8%d1?Eb9tn?SPGWg)D0R2@bs2_RwE#4q>>{j{{ zY4+uDBEJzklGrP^$=6@xoAj;=9N_HD_m^2W-_Q1NBX??{bqn_O_)Dy9jX35MX90A= zg7~#(%FUBNiS=K6>To#bMlUip%r3Ov$%!RC^S0Tdla;CBvIi@(exJ@pYUZ7@4S-(%5}MQqn+5$=@n%mRKA;ofK>DC~2X9ej@LD|Rv3Xww5{5rUt~ zja_&L2$!aCyAba9D23aFa343-CelNIEc^UKZ5K+E0+KNq1Ari9&X zmco5Q=>>NYOlcQ(Rss!L`41Q#e$c`S5(6n*d5(^6b^_vPa6}A4OA2|2LV`gnIeV*M z!kzx29+y;^FE*8->%F@P-Qzt?0hwHHfkC^ssr#bE59H-fNE!Tvb7(_MyTv#u?q#EJ zaW}iq?ff_^lgRcD7;{6N6WBr!E+q^8zAW$(j!DlvFh={XBh!ZZFAsE0q;f2Dc>rb! zkB5|jMa=p(==?}5Up%`@0$;koeNtXIPDZuBF0&y0dJ4uuqaPoonL587-uYB%nm>+Fnj<| z7ypalC1MwcH2{w6{i?VsZJlVa-mJ8qiN0woxdQ2KA16*wh}cveK!d2p))`ocUjoa` z^r3E=cGY;kmTCAbUCPY6+XE4s0wT7+7hQxTu-F~z(ZqCR(BJ}M;{=FJw*q2Q%~-Q4 z1vp@W@Bp#F;+)He1wVEPGYiW!IotJi@US?*6_`=t!*bh>Tg~{1Se5MnrP73NETxih z39+&mEL!tK@NA1da`~^9VMJ)XjuaHFv@Ild4Q}|+yP<@I zGL=JdPW->03vdPbpDIDt^Ht7p)Q z>wty(n!dr!#f8>$6ZFUVfV7=EjR7?1Ks0BR)51PrvEw^9uvqh>Vl1+vZL3E2;>A0~ z6+F^un)tHH9klML1S>W_L#)_HR(gPTPKek{npm9~#p-m9=!I9# zfpy{}OI;L#ENyl_o$*fHrB8=NMd1HPhy_P_!(yHIuvI~ZgHj(d#Hx<^S~G&t(wdGw zSdHNfngjVz=M|9FfClaMP_JxevdFjkS7(>NgW3_U1qsi^$0fxH*q9dh-udGRp#a zxpX3fqM@EN|5}s8y$zUa8#MO)55%52lWwl~l5QRl$SX;I7d00zMsNNog|@8-nClzJ zvSMGGdYZ`3>+#|tNReN4sjwm)Xy8qrG9S4GWp7wdTZ`(cHi zdBksiH-#cu7&VvCTkH59-F>|uD`jyH6FYDP`=>Oohq=Vq4lX2?wsu9|mo=HXV_-jG zquOast)o-B!|zMEOEFOY@VPj@ z#Be{4ANvBJaHfc*cRM}JSJU)Hmkk@hgf|}YLqiAu|Cm34VJ}05v)L*a3mXhz97H$f zEbiSnHw5Y)4&Fl)baT#rUx8m;azr0A#9tf>U|ppO|0?6LkoWt4+tcDm`~9 znQ-~l81X!7s-yd`^!@B&^st7MY295YEC$@tB$A#~SUP!1Nc*S4!m1I%wkRA($Gd? z;Pbj-!~Vs|YwBKy4Qo5Yu}i`ZAaQmjrbgvU zAy6(b`cX)f2#RujZyNj%9X7h+HyG{oBE|i! zU#cg~$J8b;1nil>ECWAWKr|Hm5U2W_2?lhoX%deH*&nv&RRo6ZZ6}Vwt~QTai3tX* zKc%3w5=y0E?o<@kuWbUMGz4E(Pv1q03i4d?)3(+ZWcw8n z8bzVLPzG{~LZe`KoWMy@YSbRf5*sB2Hp)mlk?Ju^@;klhb7wY>j`xG`GEF`O@Aanh zobfk=x5(jV;az)dlr+tVL3atqhi1f}yHg3Cg%KVN;)xPVXWD!~Z;y0WOrFj(pl*oz zg0RxsS{l(a5zSN%{ z=Vej&0zuIL`*>P%5F#Y+^%kNDu0wIkQO&P2dDRbXrd*mcBhrs}e_qR!YL5sx|3I zrS@jb7c@bDt6X=I8LTaE_adq#o7>!u*}PmXYoliUK^?Aca3&`Lk0dfL`y z)gmy=ZPjq#&u|Ne`9W*+vz_WFEOw+fD92yY8OYXz~%25;-qH$`pXUJP8z_ zYN$(48{z2Ot*BtUrzSseBjMhchdK-j)L()+iu>Dsch*yB%$e?Fhr1+CXTI<^wBi5p z;=-pYPDisT&=(}89j&`_c@~tVBxd&S2H40>7?)U+b3rIa{alE+412r)cNk=`n4Y zAS@)!-FGhasfye?Nz>@^BiY|hCR*i%i~(1fpoaynGV%)sAQ8Gio7TEA1ur$3$H3IX zq&24VJTFrIx8BKzIB*b`ds>f0#Ct=d<{g=c7lz3^3W#aD8pZfR?(~fWtwee-u6G-> z@T!nFdlxlm4kh+YxBLQcHWgZHx(JjcoQ7IBZVz+jZ$V~O^EA1cUawItB0hs(J5Wch zx|499H%!x%k6TfE_Z#L15Sq2ab$4nNY35^mR;^F|czX$|TW^B$W4+#q2BN_gLE@&- zs$q%0P3&&}^y?r;47sHL(OxKK^5{`+i1++Eb+{^SrlCB z068TcZ>CP=a6Lv`<4(uZBj@4%3UzqwiN}(@0!P-P!pHmgz5-fT*^IM&X#p5z2`+4Ore7Wy3P*!D=gw*= zJe=hydYzD$T&H@2pxWaSE!ZB_NKph>kYerrg=U40(ZnTMu$7Ky3Ri%8=?B2k)0P>e zvdtkTeDdh2?@>s7Hq#%N4vAHmH%0Ivh`ZW*F)iZ^s#9lyZ#gL@- z8Nn(M6ZYpoVz3u9zk|Yv3fs$0Wd`w^gxiRbz}^iJ7j`_Q@?XlBC=An@FM79b8&itN z@feib(IhaOgN6K#?TP@$On07yN~F8$+8!zgU324jqcsS9B`|Wsu^k0gdA;lId~Qfe z8@s{XJgx2hFp8oc0zwp8py=c67r!iXGpI*TAyiCH1QA01?8=PEb{Z}DB2oTSFL-4xtjIe&Pk>2izW2ZOF`5ieZ@3S|Cf> z7CL7T@ndd}ma0C}BZck6Kc*6_G6RumPv%qN4y+O#QN#g}O>0$BD?Sfz&y1_R<8nVwGp@vL7%rEW-06Ggerb8<2n5!l#lrf~Vp%0VNP9&ub zCO^6KVHAs>^rQmJQjU`!rpAT_QvV?v5+{kD)WcUj*k<`x1-V}ZdGB5)h{V2MRVe6E zEK@%B-0g;-zCbVo{dqX<%|WzDc2(4fb#|Lq7^ryN#JesR51&Dem_vfaJ19d;f%;~A?F*u$M%1AqYw2W;Zeo2i zx{2$z!1aj8sA-x+P1C2FkURIwO|@K&p(c^Y?z-LaQ6f{uJ(Eae58u)@faaTm1Gy-o zi`F~tBr((%!T;SzCw-|fm)vk9%!8NE^5V1KCbrBi8`uLAX4 z(;A3WHr=SR?LN02XW4cRDzovt@@i#Yf&BA{g)}C^b7O5zZWaUWOu`Xah28H~@!#l? zwk(4UOwbrUJhJL4Ck1NC_+<~Zru^AuaF?=r0!{;JXp2&WlO&6}n*3H5N%`~Rt zbc6s|SD-;L_|rvhlhJ)CPCJq{Gk8B)fBZ)bz4ER?$+Q+drg5|s9999Yk zEa&HN@d0SCk@>cw!Q$+-jDv&adxHjWuz~p)lDFbuanSn^R$fOu*b-|83x9F4ob1OA z6fr2ESg?)r!Gh(>HNGDwLM>o&lfg%@;OC3bIU2w!5)*lQ`#i?~#*Q1*WdWgJk2;=} zF8~TwPMe?Km|P@slYI^dmdE1Y!1}6rQPRc00&CZa@xG&uM^Fy~%jf){pYKp$p9IY} z3kq!D6RtmXgaFI`K57&K5CK-Z7UmED!20f@y}?6S=+?Q#bz4QKe`QHF4#d`KpkL{n zUqZhofqqT5qF=IP9$mH^m=p6_ zfCVg@pseZod;bUZ6)Av)(t|%>as__X9>R%A%*v3f1AYZD6^K_D3&H`9!elx2N)y3W zk!3C1M{!UpcK!AL8~uvlbw!}A))D@d6*C{WtQ{X=JyynW9THzC{H$nCWrL?BtCv6E zWgYHorhfVV;JylC(AKrXV@HPg^(t)QteXo0r9#sN*%)0{c-&&V2Xk>y$khhU)B4;; zRM|Gv*KGZ)|3!TjRNi>uco9dSuNgx7#_U>&GY9s992Q@Ta>~`ofp#uS%-2kvV!oE= zuIJ_#J|e!3Lowy*Pi{wSS-@Z&1n>1c5Hi0jN@e>5&z!!vZ!manu-Ei67N2=mM}VOd z(-xdHc}CKjJR@Nb-`HaIZ7I(KkhTD<)a6NQ$mrvzjh?opCC@U?DxSp|(6GfKzvCGZ zb19o3PZdDJUclzJPh3D$*bCUS82&7XCFxI!{-o)TO@A`ziCw@9`5JoG_q`OK z?MvD8%0xkNEO9BDVXntsf=l3#yab?psrD7V5>}l4r9)toAUdub&i% z+gT*Psu-J@#PtOol2y$2dRb9wLVmCTb47JQjnBE#_X0CYd7b4YQDbFZRM7`YxxcwE ze3cC(*01>i07;XGw=S8mi8FdTD^L84AJ~f})^w>$;)rT|!lp4XmC5N{lCU4B#tcju z*4geTVf`~PC^UErg-u6yCFGozW|VKZQi6bH=cIU~t2l0Z)+G!_EMfU#`Z zmO!!x#6uG31;U2rw)G^RThZGzC2ew1+w_K}Ng?UIEp5|6o3vG2w~(~A<@V-Y^Y!L_ zwVgJ0(>4)FYExeazW>^fGiT16b7q7`GZRPW$KmY9f3LmP+H0-7&Y7c`eQ&P#+xzqL zev555SlhfB?`-2Gvm+nX{(5Oi%>&;kT)(+_wa44Ix~(Qs+qddbd`jK7YKZ?oA^ud2~(g3yswrwsp}m&uc`mYs^IadpIdcr?a!_1hEFYJ^1v5?iT12qRy|8sp0X1r`Utz&pr6;;S(Yl@Y=}u;R*KOi9@GOJZO#$eftmY zitOFJX=CK!-A`LWF^k)ffn(a3>k5AMf*k=l*;CCs}0^)(wQ zy40xnBBIH*ZQGvfsg3k(jEuw%efDh3J2ku?-$tE{nTJLv2KSFXI5IwRf@|Qw#Q4;S z{o^O9GtSJythw4jGQH->=Uu2ZPd@Vku5psd)f(51Jv$m1+kYZ*tUj{y;a!6@@W}3+ z&-K(qx({=gjPu6S&@p|chF4msB}<>*5bhi)46zfpdS2pMqwU4D#yg7ZJj7C5iy?{P z*3D~mozPa|I^k`^O=XBlT-zab;#z11+Z=6d@s=hCTchp8wZ=P&>pa9#T#F%z;%=JP z>N=sV#C5{kh?~j~leo4+?8LRujOFSI!q#Yeajo%=;yMqp6xU)%qPQF9wYpAdD{-Ch zHsYo-#3Zim5Ib=#G-J8Cg0MB(UR-OuqqxpPEXB1Lk|=KNyjIr5+@^c}os(qU$^dcrmVLw%Jj3UT?6K!O@8W zM;F>k4#!zYO}6IO?ILR&7_A{YOeh=JXb2LKV=w^xp*aEtp1{^rbDQ7~SMNA-G$8gw z4o-+iw2@9Z7b7^%rw24hx~vn(nz<2MaC&m~Wfa+Aw> zcnhA#!inx|pN)A7s4SGXWQW0dc}sR!oUgZJm&;VWB@0~6!&~rtI}P3fDhuT;*_=j$!m_mA9m7hgsm#)(&y!ylbQ}7PIjIRvI!KP)Uy!<_3EX zHkca>I$K~4@aSxRn_~8dPvz2Jf1r{^`^!3e$?Pxd3@ZDxesaU@FK2kPj?y{6<2-yM z9Wfdo2rrb6WP`nV`A9YxoUe~$lgCtjB;!1$>?8P4ISu;=s4R?+WQV#b^*ti+jv(3z?VwWrM-_+F!RUI`0%qj z4KGh*lpWo^az#Hzd&&u(Qna5t{6H|yesB+#F8j$8J1N^wrWl%!{bYovjM`7y;!k>1 zlboFl+fQytAUn*Z_>&4d8MU8O7*h5_&vlaRU+HkN`S3*d2sy!1Mr}HY zf5l$(&5UZ2vy)+)PR>x~Z8~+HGH26Cc#<}4`LgH2r}Qbjc$+aMbo2_{moi%hVQnq4e7CmFH}o2ZppyKrVAV|L-pMkejTfs>5b zg>BZDNxMkKM274l85^0i3r9{eWET#W8OxOIH}-UdO+0D0z73VenK8R?W+Rh!;lPQq zi`wI3Q<3qB<74zCX7qPn)wP@W_Xp7*?j1J%;a*J&(3p->04q(1KV47Ghr;vBEE#<} z`H;QQmq8_$E&*sSTLM&ZYAKm5+ET7~w3MpRZo!P}dZE`<`{D&Z~8|;*w^!K$BI`Aru3`SZ&BCkg!oJkYcpq;K=?VFgkTKf-j|taU1_vz%@x=F}9Nc z;}~=WMaRkNWbcDspX^%9@ zX^%oyqv&xt?U7Q>MlPlb93y54?Yec@>;Q@jvN}tQK_1I~lO&cHDMPLPt%UUFyWUC|iBQy-wqnfeeVIq5&eQA&<#_1Ddl)wTHg)`5t@uzu?qmAV@YuRAEslLg`XIgj!` z`%e6phM;_yl$#{%`C6A3$Bcsp8Zdr^Q zi&dA-iB+eXoTrNxbX7lX>j~o(KSPIX`LXDV@ng}c=HvW0^mBg9{gR&s$|*!<-BX?L zO))mTI#)LRiZPnl3L@vOsoQ_>pvoZW+P$+r5*gkuS@-IkHCXo>S+Rl8-N^m}Cq^d5-}Ub}Wcn8z)QZRbq|6IYI$0Rg zOERh9gPZi4eDZnqK$GUhO+NDiT9)(Vsr^iZG6elW%n#2`Ttp%h2ZkbCzpOMBX#tw= z@A2TVE55IA|A|A96CJEqvO(rDKhVcX;M#pV&5c4UxxsXpsx*FH4awo59Y1q;OQLOm40Klv*(()fNXa%?IRX=-f5?@%u4HvUT? z-@R@RO5HXj<_*bXs6~{j<{ux&{g#kjOtyd;wp8=%*67$qm>OPfU;N>1@*!4nIDwHI zh{IXs$tDhGm8bVy9ELV?BM#SX+Sv3Si^I8~TONn&Hf^d&9)}Ygi*C1Ku?&wwt$%AH zF%H{8E#t5g+A0n^;ceou-H`Y=Y=cTi9Ok6&Bp=QJo)Y444)C-9akwUy4@1C|^I`jy zb9Y#fGwDd)rXE9;yO>*L;SJ`6%>%!eCm8)|A7G7kTU>Xyf0=ysD+9OgEW zEFTu2#9(ca58FZ=;;;o_pzY(ZHQq4}Cl0ZS!wIMyh{IXs$tDhGm8bVy9ELXUFdv4q zr7;dSG~xmAdn^v;f^I1elWraJVY|2)_gn(6c&3^U+d?hluoK!U4m;s(;;`M2_&98X zN=F>#r0*mj&H3u^c_J&P$wbf~R zuOvtIhFs7s?G4avjpKVIcF{I2GsB-@^aRH4l~%v539 z=?tnHH!kc`46vK&4J#LP%Y!O(>-ZGIE=OFbnt{5_xH z@901%ozbhdwrkPDjSu?w1Y{EG*>Xb_io;pZ|^ z&AV)&ma)qTZIyR9;cY%WvKtZ~?rc!$2zQ)xDyf?Jn;3F{Cw~9?F2D7FdnM&-c+P}P zQvc2ah?jD%X0Jo%TumRBdakx9_WcQlTn&WMn5)$`ZfZ=!yHtysrLWzM`?Q=i>-Z)W zw}@o9ngAsv8dkZQEz}|2SrE3#)tsn1#=FERtm0h)DhJ|SR(X1l#XIOSX?~ZHcvsiZ zRFkHA)7;oeazV3{-_=618=dY=?IMUNzf1YKTAke^IGcE9L)bRn+2d{Fo%IlNyt725 zC*Fbdo#l5~<0;*@v&tzAUugwHnMZnOr^00EogDY>)4Oy%Frq)Ti?#wQ+Et^iBnjGy987YguATp^xh12 zP~{zGcWDiGHPwypt#FqMn&sgRnoS|xCHR#2@8nZ{dWT+lNgyZ-voxLnQf zkn=}WvlP5YvyQi>+#-@aiW8v32xsw!E4EOF;AKJB=GN4Xx>fK>pqc~0E2})c$ATAh zd54)7tSFtqtG*g8_Ff8Jxu97dyr5af&k^jxLEMcdewo=iol5-1PFtu=@UkIn8@#OX z=HO+CN>A_t={w83vc}Uw-8IIg2dO_K;}&A6!eoh;RQ6594Q5PSlbu;+J&950vBA?qp7vZ8l;tHwQS;<9QD7qCQZe-!;rK zJJ@LJ4aUlU<#nOW^l;2Xvom?jFtawlZjM>wz-WY7VFISN(GVOXvEQXaCau4l$$yXP z4kKnm!Vg7J-0a?|6UUFYcyGo zGBq#8cYmhAi`AFGrrV3Nz}@`3I6Dl^%Zsza;(Wb0yIiK~#hK^Q-iz_XKu>z{Oc!b-F%>V)9WI@`IJ;b?=EeLQT;BD4vHIGYbbE0Y zxSO9BXNSRgd2x1FR9>8_e`KCZEC1l1y*9@7IQ%Vn8ZuQ-Ny8qO1H3u;MsBd@;2F8W zptE0OpGRA-*c9^$`~_YbyaH6xvd^Yz?p@|ddUW}3%TJQr{0reV)jFKfTM`!sW` z%K~rn@!agNHxJLv4ui^bQ}c?<^O%}fq{CP72G#=XXP}xEkDUi^^Ye;qus1KS$OeP+ z^@>dM==i1=56pM?Ft5(=`WAiNC~Xn%=GDN=@e;FohnL_o%8qX3xx$dqs&j#-}1%AlQWcg zD|Y57GggfIhn$JUNqNbv6{o^ZMy)s%hLjc46We4NMLHtSe0ZWe+Fal%Q(QRvcM5;T z!;|CmtWpwQGVNK(*~zeHC1)t}o|QUJne!}Xp73nQ>d%c9{w6Qk-yCIzgP0d(Q4L^1 z_nqvrp*)5^$;_HvIN4-6Vyo@lY)Uq{;2fl4lbK*51)IzS8>!jkLUXe4Hfa;5GiZ|z z9AwTWotem(O**rYNt?9iWT9=+_D&&VHtEPgrff196B)9}WNc*4CY?B0c$>8M2X%jD zpF^c%m%yiy*3VzaD>7%3&P-&?CY{;Hq)pm$0-LNoJ~kB@pEy1iIlQr!zD}XKb`$@; zn8WxB^TV;fFi(avtZxd?*eav|R=VPE?j^zV?>BN3312{S;Ms%wBU57=Pel%nJQq1W z4*3tC_#i1DGBrAJa&rHPVfj5ZNz}8gZYnbM>{ujHUt4GOL#>XC@b4QoA#iU;-_?^u z_wgtP%_jiu^_~EA)OsA+O6NvEiW;X7p(f?GS>~lS(uDFF?W|TeS_ec-Y0e;BVa_nc zH<_qC5{k0zOi@YV>yvD$=muHWSey6@cDBPz+B7KIQkQZ4)|xa!EcIvx*=f;;GwIOK zm7)gCW@c21ff`iOG<9JA=phOV+#?OSokdSf4c48y0<620=w$eb2#V8Fh*6QT{ik$( z3}63Y*%{-=dNBHRrfd<4FA;k!c;L>T*dAMq+Um&h1CtbGlE@k66}w(B^p zqQ_U!76~0}RX|M-cK z4<6$0+fvNJJBGSYcHJ>S91uG54j9F-a8XNMXv?(ZGPY?t-kKzAotDIqz|=MvUbs~2 zPG2;3tUhv-f4vypXvCD0GCroQ`3%w3H=jXDpWMh(l*dW(I)mi8RoF8W4^Ktzgb^u- zoiHXfspEz@3BAc6bSlej!lxp3;*b>NP8^h);PK;}B;Pns$xZlFBu^ZYg5-&VQj zoRj3W^OW3#Pet;?At^|nI4CvACxA(M%qgRMotR|X{) zAqH|5Ar9v#LL4%g2s+qW1bo{?auH%6XA$CXjv~Y%lZl{%k)BVDj6NH?Q`WcUg!UMt zR$V%8R-K9+eoJARkDe>VH{D@2W}-rm)`kvQi)L;&h-T3h6V0MCPBe#pekWw=kL+!r zh6TD-8<_ek>UNLhbf`&iNuna z6p%4?Qv>VVrv^6)lY9gO=A!Y3iV4cL=!$V~H4wczyEgqs{%jz0E4}}~iIItMW_yIu zqxrw6_eXuA_}jR+Sgc(E)@ao3&Qo=DEk}Evp}kOcG;sXm3Z`Gbh<45YCB3fZt#lFn zSi1sz%uVe*s;Xb_&L=v5tk=VXqPP+5E*5K7fRFI@`~?2L#M_@xF#S5Ql;}LE*Hz)u zXxIFIqN*&sUlgx!e5_po0?UYwCt==h-u{$=>DRYb5WZKht3sup=KWJuW#Nb@K8ki1 zi?u7j1>WvWnD;tw?^7`S`ux2_XOCW2h2KTH=ATtn#^lhKIo{AN5!GvmjxS-}eY|~d zjE*dM-%t4dg!X2%YyL0C+MgE12*(@RCE_w~Uy?BI8@zoWMn{%@K0xzIqK4iV(XRPl z)LUldQoPRbv33Or7ZIJM3G+_!_Gc7KzZR4eUM`;A%GeIHYyLmeTV_8ciW3|kYgd4) zynR{1yf=CKJ_XaS8y}!~_v>|4IE;49|B|XQ_DiDpvm9?|mxzDh?aLG9UHt)~FP$(( zjXhdR?FS4kqWEF7YyLmi+h>1X6wh;ftX&6eBszB`%=?)JYCovMRN-Z`YyQ7bRTljj zQGAEvW9Xrfp*P*Rj-G^A02nK6F$~1S{Xac+x-djk8LOXkb>#g&!AoNe?_lHF`kaEaD1#? zv@%xQNpw~w(0`n_4=b2{-M^FYBYIsGK8|+H|5a6G(aoaxha4YkSAbQ!h|a2ndE0sW z5e3t)k98CNs9slv7tpTx|58;M+a`*i<9I{6L}-r@oqH1It>x{bF*>po##Z5CV+rk3 zXxIFIrMHK-h~f;#$J!O(25(=TFmDmI3KvV<&^I8Yy4Zvou3rbyuKE9)UT3glI;J_^ z&@P(UE4=;Qgn9o3A*ZTx35W{|2c#P7dxh4 z`t|E**ZhB@*Q3p%m8v}^urdOeKzLdPF-e5_rx zGPVY$>|%up^oy|ME;glL`t=F4YySVP*O^BY|0l;A+9l#Rme9pc#PG6|2i0r-zt!8r zl7mxdcd=Nz0=xxPy4bU-s$YK`D$xA@L$A-?C5o%Tx{Jly72r*<;$qLKs($?>NW0ic zy{-!FfNK7)sVY->-QS_z#bWIW@TF7Kj{i)@;Ez!|{xcoE4-)k@L{|8emV}Ffy&Humj_Sxm4c=#s?A8S{Dt|+x*64UW*-VS1>XsURn@OwMZ4zz zfA#vTw9kE~2_I`$fR_JA?NL?LudncS2xmH8_*tU=cY14BuGf7ZAv&>k1$gu4s2$2M z9l!ihYX5&st&DB?d7}TnW9?E8Uqic#8QLY{;>V~R$}=5L`~uPWdaQM+D1Hm=E@o(# zh`;zawL{saAY2>mLxWARPLm(Z^HU(s7PY-Ng*;67j*`pmrFe>2RMXI^WP+XC<8|+FdNxt^jv`j@n_oreg-}n*Sg4Rz+v^ z=LsKcSAb9dCbh$;O~(WOh3NdF-WrztTtK^v#o861{F_S+r~ZZ|ZeLr{%W^ zA8S{DuU@2fIFspk;&+J7>w0VS9#MP_?JgE;SAehZ_V?wfy1Kr}+u?ksqx^S~gMv=s z3ehp_7S~Us-Nk;n-< zyXODrSc{bK1&%kgOT^#tb_6Zc@eZf+FM6w5$9pc(ys>r#IL_M<8arg>xS3h>js9l_Fc{4Uxx|F`wl*`=cR6^@U!D?sQE zi9Uj>>3D>wqs3olomkRp{pJ2-2qGgJ{?MH)5@l{uz!pv`fUl@b=Hd@Um3>C7SoM z3GGjyUGsleZ;wj5{c(*Zbw_i|I{rXk37X#m&FPc2|0N>;7*py61)hy9@GuA5O;uC0hF+;mV{1b1-CT2PUUnV+l>8)Yu7dz1IVzG7w zc#XGXb2Aa9`9PY2pvEY_|7U+3-rRaN!t>OUho|E|~BGEv-ub{8|WOT_=; z?Y|Yn%hKI15uLYV?b6;pfOZ!%v`fTic>8b1@UryZIi3F-YnSUh$MJ@Ci5U8GqL0nl zbbK7`n*SZWH7e=+9>>Sp6`=Ajhz>Sk)6t7|&Hn?vH7f1@IgXFDE5N_<_TN=i{d(UO zqH{~HhuxysgmxE;wJX3y-j2=Ibo?Jq=eFJ&mi&B&<74d#&~}yRWAii}5wsVx+w5|l z=r}F;nc;YBhNj~(+BH8u@{otxN50DOv3Ave-&bf}Y+|OPnYUw;F&%r+uKDwH`cX{) zCOAIUu7+LZ?bu9A$3JsAnodVOH(2pi;wRRwhJAv!V{8WsD`V~rKK@i?DSF%`qD&z7Dnogtp$t4drSeIeN~)e>GW1Fx5XCl7z0#4B$n zyj})gF9T1JPSICUkMMdKc)bifMf{MYPh~m?ua|+>%fQo486*t&SGy+R^)m2!8Fua|-UwgFFNItZ_qf!E8x|1t*0yLBGONnGV9g!b>Ovua|-UI@*ua|+pivHDv0sb!ujDzrc8F;-64B_b@j9vyt zFM}qwUFIbW@KmOQ@Ol||y$t*;`qvT$_&>vy4#MkY;Po;vvm7BXdKnnK44QugjG~D& zk{?7SG9851%fRbp;C})A3QuJ^2(Ooc*UP~F zJo*EK0evddL3q6kyj}+WBj~@MFu+rp4#MkY;Po=_KZAb750&X4yj})gF9ZKm=wC+| z(5EsTgxAZ!>t*0SgnmVz%5)H3F9WZaf&WSL2M7cDRHlRQdKq}V4E%pUzoJiNItZ_q zf!E8xpG1E(VL+eCbP!%I1Fx5XpF+Q)Ph~m?ua|+>%fL^dKR_7Jr!pOc*UP}`W#EsZ zKR_7ZsZ0mq^)m2!8TeuJ`v?O(mFXb7UItz-1Ahqp?47^?jz7_o=gaMw)bP!%I1Fx5XZ$keIgaMw)bP!%I1Fx5XuS0*7 zFu+rp4#MkY;Po=_HR%5(!T?WYItZ_qf!E8xKY;#YgaMw)bP!%I1Fx5X528Ox7~rW) z2jTTH@Ol~eV)UOP4DeK@gYbG8c)bk#I`n^#Fu+rp4#MkY;Po=_h3JnG26!sdL3q6k zyj}+W9`v6l4DeK@gYbG8c)bifMqJ+ z4RwwA*+DAXTE7Y-KO=#dna-0CDt#tUiRx3#rpZ#9C)gR5&NFT{TNR7+7Ro;)%Ofz z7jRZb7`u$KYae6RaQ5v-9p_D)?tIuZ#^N78t=4`O`oej+Cv%q@@(w^goFwxwt|b3u zoL!Ln8qPk*{RYlSDZ4*KnG14CX7W=%kIRTGtZ*-6#>r*IwXh#DwF#8Grt1={Up{CXVA*Uw>{arS)_>x{GO=dsQ>tzuSV z4$Ij00^%@ElJNqreLsb@#d-RtvEI{IW1OMWSW}$-pTYX#w34wU=VTQ3J>*j)+qGuM zv>CF1(Tg}6TVby_ySE@#;cRR}oWf}(TR6vMJG~M7!;!Az9Ik`!;XGB3nA-rG#W{zw z8b)X(+qRsOEtVJcVSOfXa@)kU59@Rj=V`2yAB!@BGxQMF6Q{o&Yl+iJ#vM5euwAm>YS`~2PAeH7&0!g@W4-3cw;*E(Yjz#yDXf_f z>vaZa;a13tv$_LyoY!z#$@oML%jm~Cg>aILeYpCuUKepTV!f{7>_*JFj&m4xOmW8t zJGPRsFQ;UT#^txyVV`r-RztAU>o`xrPJNK~49-HxdjTie=^32YaHf(24CJWHGj8}F z9u{81N$cvXMIC1!;_VwaClPON;yjIb>xW(@ab6_-q>$h4%PE=T^PWk_Lo$)fmvJSz z{8;N5oFT0DMVyUT@2faNSnpw+R%Q)Y_c@wAKg7-qSk$hHq z|6mq*zpxB8gL4k24|Y?C)2#Op+D=ouh0Xj#7I~k9KF{D(_VNblSN}{v#DqDtb=y1- zk7kkgi{R-R&YL*>_>d@s)69D{+RjkBh2CGtChv%`*Kpp%>4&|Ca3=7Mwlmaj!Taef z@?H&|x^bS8{9Pa(O*V58ZQO?~c*kQAJh#fu9!R$AhrLh?B%2<_Y36+rZDdzgdjDt^ zdG|>h@5Xf)=P9yllip9G?G0+T(EG=-$a`ohbdIwd=P=GwI1_kB+Z)tw!TZOv$h$GV zG(xwee>3lWXuE8q_p@2#-4C8ZI2GSyH)h@^(RPj6E%g2?S>*jPY~h-;iJQ3kvA>#m zFGSlZYPaD1Q(5GF4*dGS7x7n(vx|5%`6_)!&_!yu;QiB__w?o3S8a0b&!%~v3!1e& z7t%b>MVonkGtKkdw9(sdrFkBojXYoA^AzHqt5Cn^dROmzRD>+=4=rvPZ@WYIToU_u z7f$0|KPUJ0YV4(5IQwvtZHK_Cd##_}cbq~znY;SX7eV|M+el&=mnkYbj3k+ z`rDj~ydzduf3KtPUC<95RHwg9rO*E9P<8e9aa5T6|1wTv{S8BXAN10PQ}t7QW@W5?eHF%=>N99l zc;0WSUo+JSqwwALKweYbk2Yg}wW;1^s=M!Zvw)3_{vim3^U`Uf_RlbUSSzx}VVue) zjkf2*x?RLtUBLZ$7xenWV0+gfi&_i1_a*-_)=wL3@f>8EG1wy2yA8H@6Z^>=PJKMe zbU&)ZeR~C)@i| zOcc(07yD#Icgpe5Dn?qhxkKH0Ts(!fJA?BA&Z{`zzqw@GlxidXaD1@HK&)u6|$vee0F5+Dy=+7DI*AN70|EGg4RHu^; zx)8q45MSvTq0bN>sa|cUpMiazHrOcDXAE_sM|%Suiv9(Ijb2BY@=euG^=d=>+=p_X zsZRNy!jnDw4K_{ntHwI)*Ke@lLX;Z~b+S*h&34}#qkm=%_AXPs8*OTS-fya(Hq{BE z@brgr7fto6rurME`b|^a$p>D-MDNZA=9d%D`gY?S#(4^-vhQmsU&pCz+i0_0SYyhG z-@rOtK>YY&u-QrYpjtz#xO>ykUk&*}2Aih(RYUz1$bQ{m!&EsILW2$SepB6O^VCnLn(rFQr%d%Trus!w{i><%WV2T= zQ8=ABgMM!%-eacx((1nIulT(0X1|!9uY_c-+J`IUsHf?~x?jL~8Rs>eZ{T#VTh2}+ zSYAh*rQF56b~!tRnAQawIEA%#Z}R6+{HKFrY9Z)!8)7#8D4X3h)qQBAL*e}xW31DA zTB;re4;KwFJOJA+G}t%QX}>b!>Au@oZ#2YU;(gLoKV`7*Fyv}9*f-TfhP;CEhIf+} z{0$fj=dHzk(^~z$DZTH_`}lkFlbA=nJ8yUI`#(4@rQoGh=Owf6_zPao7T*XQ2N-=@H$Bg`|(cmw1zk1D7 zpEK3{2LB;^pQ%1+s?Qnfw5CS?q53t$x>Eg&VO^tG!#=}0QvH;v?xgp>&q2Lk#vVg@ zFEr?tba>HJH?9Nq8`pvAjRw6^z1vjJrruxUde4==$8mn=gWt`V=QcSyv)4fi_ zLCR;yUnsT><3t=}^jwz?ic6<}oy19ps^<|7G2aiIRm}fKV9hZj-=BgI9{1l=t@G+6P&?xE@%Z@!7-~tovz$jZmHPE;>Mt+lw*pZG`<)8*GT` z!-hK97d@AugT~Vzo6<8HI#ivW$r$TznCiy+KpO8e#N1OT8}AFL-e~IYGu0!V`Kp&YaKR`QJ?@@l))9^xjuB&Mus^N0OhO1`o79Qp_60^(vJi7uhWxB*#t2O7D)* zq3TX@eGj;BUUt^68+JB~lWg(~&I>rr>vs`tl&6!N*T5?sBv%;iMmwgulbmnTn7r)B zNzc0}U%ia;8qPOxn&q5B8+`|?*-q_pBD?+P-?Jzu-5V9+tj5`evk#|P&SA7&rFN4) z-o*ON;iQAxZIbnT2e@#aANN*%{ocy{@08(h`saggb`>$#Dwf^81De$s<6i6L_pw$q zH3&0bJ{8SA+J7uQo2OqHnjcMZuh)ouig=}b(!HrV?ioDoQ6a-V#_NWCit6NF0g~5( zC*QnzQlHo2sR;I3E1L9cEbr>Mvc4CHXL1)ok8<;2T~%0UfH|Wyo{rvs}sz zRX^1!FEG}JO?AqvjQyt#^_wVPFx4-c>eo$mR;8 zluVR6kuHsOC)=Q38wuwvVC*%mGv#Ymx}jh1Nb4SMn%58dR`b%gZ)aNmDOwzHtSn>s z^{3?L=?|cd%z0AQt7QGAe14+(=VV>=`(&=9`fnnJ)1mq&WzMSl>9ZMQ|8 zXW*Gzk31ZH9GRQ(M{_39^N*(FnUmUugWmU{`*Syr%+0(w)1n3zHSoix0pl~JA2!~9 z*!W%4^$**ME%Ljlfkh20YG6?ViyFu+4J_VBFZ_Be>UiOGyg0+61{O82sDVWdENUQE zH6ZeUXdAwB`+4vf%~d{s*!f!2b7od>QO^sn=S3Yayp9)VSQrib>dY56Z~pw{wtbVI zt;L=PQ;yQlT|^gVwneIo8dxX|%zpVFY9DBx`rXFgl|(Z5{Z^wi9{ zmM``mX#JNTJiDdvcugD3Tjh5P#mpjIT?6x9m%m%_l|LOW`t3wZqc)R!tXmO&C+`G)v)$c^dbB&={W?BUW^418_Oj^8ivu@S z`~}fx8r7d?{a#!z;HoV>$@!b}&c4Q8T3_hX-U3Uj2DE14@3jF>KI8@NRd4jxEXI3L zKaIMZu3Dg<`k5=#kMZARFSQlAJttW}n;q~HUxC*K^1&~S|2J>>JH)>SbsEpxwNSsC z*8}|||BH}6KYxgicYAwDfBha@iO)GHzuP;+3bpEfZ)I;jmuBte$Nuj2mZe29pv=As1v{W`Tx%K z=ve~&x~luXPvbuh{b3yGH~)4uW8Thz<(QA^H@xMy!q7j-i=*Es<#sK(!s&nCyZsiM zU0=8qb<*E5?=+|DrMf%NztVf|Hk(<`?rOe-;jaxWp>cVke%F%o?3`;B>tB9r_8REB zUgq??xDp*7zmooEZ_#+_r}cDsu#WE80gvSOh8Ok&{dql**Mo7mlAIpTG@F5Z|K>gS z1Fm0oiQDfA_YhwPkLO|VvvS}cNq&rXxrE+19n$YI=-1u3>))vVYnVU(EbQL@=nA)3 z2RG~G^j;PHK9@`CpZ6bv9TJ}HzCrwxf4GF+$&ScQT(|M7!QM`+U-3Ka+IpXo$L*TV zk7{i961rkO^xq0&{(KMS%V)d2bVa+{b(Yh?`t$Lmml@FY_|Efrz5Gh!U*!66yH4ga z(9Oq{#xHU8^6}sG?t2aE=gapAdvI4`o#DT(C2!&Vw2DUX{|@@uvSwO;_}vn3K8yNy zd0hqh%;(>=dd0a0cC}6SZ`3`Hj}NnLgybR`NuNU zDW14w{^6mz%0FJ9{Db^Lf0oJo!0Qoth!0m0pAPf*w1n3K z{Yw!y$nQLa*c@bxjkGzTfoARqAs8hW1de7qbd8_-e-+>O> z{jZomO7Y!|_|5Y}5w|=Z5wCdsMnC0^JZ`yqdED~Ke1zgZ?Ju#o)yw0S$0OF`hTI?Y zxFz!vk4MC-Z&H4S_`%~R`vH}A zp`YIm@cV{#wA}n#wy=9@2{b7du**IsZ`m{0}IqB&5_gc>E#)D?zJ7zt&)bpDsJz6B z{hIO-zJJpFm&`v@UZV04o_}1#{gX}pG3R}W?w^>-J5(N`@(iAz!ah|#qVf)vZ;1SX z@}u~?L**-EUkv_rr}+o$&xU7`gk!P{PO1uh>wh&<#yp^L;Sgpiy;of zPVS}gFRf*Fu^?{;fBe2}xqSYE=MUc^`YzX7cbbM;u6CBAD$n;zkS*?=;FDJ)_{E|FtFZ5`%!@8=kXuoFh9oK<#k2# z3I{xzm*c754gHaQ(Ea45O+&bLH7?P-9MAOw`s)zyiJnjMx`@sSBYpIPK5y5&=m(z< za@RlTtl2r{q0T{J;%7=4RiiB-bM3cUfeg+JP+ibXN7C3asN@w`@M4h zm2zJ9dO;8Ty+iW5xZFhp8rmuE$j5yyT~)sib(+6+;}y)~AE>X#e#ZQ}RR4p^DgR*Z z_3Jx%p02GhjE8>ir{@*efAi5!bZTnfB6;0v{Dyky)m1dGbe$Nt3|GRb{=1imc0aDv z?sn<@-2Oj+IxArPD^`g6gqr#SPEU>3HVC^}x9$=v%%}TsZ(gCdTBq;#3i=*giN0^8 z&OfKW6m@F<0Q5Hly|NlXkNY3j-&?iO=l{MR&n0{4y39rTpyvzwxP7f$iS@X`Oj^E;JB8Kk>Du zM&Q)^C8$&TBlR!4iO;6F;9cM&kDhNa;;;S+Z*MH>)bLzs;L-ZGcwLS!EbjDbg)6K3 zyXvQTdufB9FXv|+^_{%E2<v;0^@<<4e!jXop^wH!aUZg|jP$7K>(^TL zI+u^=uyqyn!HO#`@)xDQDoMY1jo>p>B<54|m#z`@=H^STbN9~1gp5_Ci5f{vQMY)voM*Jkj+R#nuO zOa9dO)-cu+d?~-KtP^z9_^K*FuWWNrJGW|fpcr)gtH}PO|9~E?YtiyfgoRL}l1Gj2 zX%_U>@Vum}v9DOrQ}LrNAoNpI)Nn1&Ggn_M>olJ1^P#&i9&xWZAnd!hOwgnGNk9Ek z-lo7=zHUVC%zZKY-;6q2Sy3O5dVHw9fX5rf|ISuHuXN2xjn=ibD2VC08WsQBK+M33tS`DNWhK_0J&E(=uDZ^iYDKej$vsh7{c zTheXXAox)HHOuu0w7$jdx};9 zUeC5{IO{50U)|rdz1My2p4owI0U`gKH@t?PKLjN|+XI3>R~Yd|IbhA>TvTf4Zq1epR%km)l?2 z?ekJUVfuWH1=hsIQ(S(myFd$+k^L}y{-CiPr9z&%IqaXx&2^V4?F-@^0LP-FS(mo>`Y8y^$;{hd7cC-nPRK*%3jbBW8bW%cVk&zH~N*g$zN z&r2$9H_&sKfxQpB&f_S_5B(HA84}|wTgCXG#FPEe^S38Z=ld$IwC+#wE5+y1TQ5St z5!Bg(75#y|VxA&g39say!YDeuguefNn)Ov~YACT)XDEXn! zXJ@f~Ph%YEjgPOX=zoUSH}wB53*+;<2-_>|wc_?AH}PG%M$l91(;pK0+IPRu-+s^+ z{zvxZVKg5jx(8m)4{VqncseBXC*zyHOwt`57IF>n@w9&659?RCPw1}-SJGc(otWoU z`T2Lb>_761koy@K?<9Y0|6qY9@Zjvg$cUg{x$lxzcrVYNC_ehD?iTb8MZ`Q#jiOHY;O+B#Uk=GQIOi=U`||Is3VI43tnMF>ar7|g2>rr8P9uLhaK$r&yl_;` zUvc{^r!xork$i*TpYZ$DI`KO6i_g!akgp8%SZzgrgwx&7kM-s9Nc&}Dpv&qj`ZwcB zbZ8!mKd^tUpTlKCo^x2&h};(tf8_k|57^hiqd`xgdUjx+jNi?bVjU14NPlcl+QZn` zC0C$+cHpRA==Xc{d=&lTQeT^;T^}^8@9Yb(4;i;fkHjD0SwjW*D}4%|uNJoP_6_|9 zr2fi}>iQ@8g;i2tO@{LnnDYe5g{yxr(D_wZcZ3-$TCOn4r58@ty2v zvQ^Nz5#;_+SSs7gaHV-#>~- zyocgO<<7IbKNRXjKJc|~{~JAD!TSTPYp#GCb64Fy$#JDSVLzb5KYxV%R8|T+;sm#= zmewnxUklUz<|{1~{jImBd4J>1vvNE`{JEbEwRo2kKTWrX_`W#O66AG!{`n^PPx;O( zoUg`4K___oB*)EpUwn?@d-F~&9$5GX%F9Ln=G&JzpK}E-zDfPXJ74DGo0~;{$?exg zzjwBt=x^DH^~U((V$t7r`z_Ar@3;fE9{Sp+*p@A#y<+(lsKGx_wtSlFgU2uI4;2+& z+LzsBWkFm*jd&hb$JpE)kDqwH8x9vRf04Vsz2Ys#JU3gkhf&XS^ZeMy`+G6IVj#Gy zz|D$SeUXOwKu6j)D+yD*t1%q*(ofa6cL8?>`Skb5zoGwNhZt8Qn_95Q>+|_Supi+cRb2wVeY@au>sIg| z6#SF_cY+?}Efoy{rYn)AzJ%n;(hiALH5Sdv9u0Mbn@A+2?2Li%JS0N4v)J1HL|@y{Spe!;n$x z>jVCGbVHspcl{%vduAQ!LEsgCMUw93?Lw}qiXi6Or^)@1fi62;bW^LSXaIj6ZO0Cw zCmJ6H{gy`sza>Q&w{oAhd9#p*kH`Aqz6Shyv|y8SH z=s7mOm(Snx1m>@B*SGC}yz6g5zp%d-)-%v!r$aY2$iew8X$>-8$v)AK`J0*q-IfYD zPb>7a&LjFU|K>I!cSV)B_Vft-N&Ch74{vRv^?LFt%wOrQZ)$-a*Gl?i|1CoAVX0U6 zBeyrsKlo$pbv{1e@go1dFtD{pm!I!nJv~C7El&#l^!8z%Drw&s9}FU1VLdjt!L9=B zT2mGDvzqJ+@N^I6{N4RA`N@C#`-OftlU^(K2|ccr_6zx&S{vLX z&%@h<9$Lu{*Gv0A{MykCyC}P<^-H?S-_-nDAC_{ritEEWguH6~F^>5jyb1lD<@$~6 zgMK#{^t(-r8yrM?wYz@1^gp$}4@-GT{?qF{8uCcK-$?!X+WN(On_DjNb!piOIg9o9 z=G(ee*w5gg7#H3F`ATE)bz4N}r%dXRv1!gH==1n=;2`*_ao6wIA=ihV2dMRje#2oU z{}9(>TR-Tp;`-y`w`~*avGsshpY0J*SNhpKDCTGEB%k-tVa!)c`Vr3$c7zd+%Jyjw zharEd2kRi_lk&5$^h?acPS@Pjw$grrc&^rG_ii!Y_CsR+?m=ZA!oK=J|MUm;X=Oxz zl}Brn_Dc8Pv_FTX|8{l;`92PM>~t;YGlux#g(|%G&AEZ^bd#NwAdYr=fgAV^m#ir z*)7_uG=VFE9drA21>VV{{ZkY8Ao+PoyVlTP@E@#SXQ!x#)&3h4`la}-A-@Uk2EF&U zYgO21Ph)&Xhu{zQC->9*+ob(Ab%=RX9FXgix4A>`wR^XqTOsKS`)*_1-J-qyA+gUk z$#^QCpZT`Y`oNysXnkP+TWKFgJfQJBe$xJ1;?Z_vU-t#~Y28h@hGOxP@9XdPXb*wD zAJ3hdnm`BmAIRq~C0#m&F5&&$&ViN^A)oe$Era7Gy=cbi2YUaIajdnmK*C+Rx8F2-{bYWVV4cczU2Hv_f7|> zeTV#9D^xZ;NOit`n7^`Y`qNY|Et`IguE@VseBkppmQ5GuqrDvC=-LcCU2k}ccz-d* zQGE+=9$W(r(}Q%qE#8kpe&A)%_g|Q!D`PX?Y1(lf{zT8u@%aPhFWb?8_E4j?oagCl z5r3G@qush@y()rV6c<7dv}0e*C^%>e2cxbj_nzo=Iu`pdVLzk z9omfb@bCD}$Gm~>Qheweyu$mR8tml#O_88Gdi(93b>RQQc)y@`5PHG5Edvei=qKOq z=^w=Bj5L1`?-$Ij_wRdJ;ClwWONjoXdw~Dc+dVZH--Y=f8=U5Jw;%FG@p!WF$wBCW z#(Sg0zjo-*G;iNKh|dwxKHOKJMbE$8^D(Z!b?k}3PEL30Q?TocZ}&Vtc!krOTfy~L z*xoy&5x=3`-b19n1H(gZy3Z#4hoQfR5RZxO2-@lXx@~Y;%wJH7`9H<>^#}QQ#OgfK`I+ksll-jx$&(sG`{qIKG8#WTeAY8lL-+q! z|L?D3;lWNmfAQW1jriX(cty-V9pLL<@<(@Dm=LL`}u;r}A&b;08%-|I@{@Y|fCE-h26zwg8 zSGZn+&Ctgmyxp@BsRtfrdT=rzcv^`nT;vyqDvn7(X)7>7K#!&PwT*A?a^wd`HDwp2CLe{t58G=K&o-AI}G2 zpHth0c)cC|OLVy(ef;g7$7p`ghu?gbi&_V zuX{+3?d0FELq7jYZT^wUvmVAS4|GWX2uOcKKhMvOZfo$;^RQuQm&ZY0@Q3HK;BPDZ zo#<_Y-Lp@>-BV8f1bbRZ>kIv0y?%q%zeD-i0`H$30|HtetPc-cu0y9fOpV*c{6 zP7k}6{=P1Z_=fzT6m|#uuc|!H*KGp*B*zVn+gIU{%1gX`3UsLbSWwtIeSY{Mj4wr< zHM0H_Pfzo>I6ek@#^*rCnDD=`%JbNlFAq$X!A_gtM-hR8eh}Xx?0B%iOYe0YtHg6e z;6~f8K%db)6kln55f}b}kQ;rTzszOPQ=%Jp9W|Aqai{dY|IH{a(F|A~LBFQfg9fxqLRL*vS)yk3e| z{PP+7{i51Gx5AI37Dr;%Nu}0Ab;bZ|M=VG zzH@~94}65kPvC!8UyASkO4vL3WASd}nb1QO`6v9B{L_v1C!j+5VzAD0R{#&{mT zMvsd4qWtG5`6uS7LH{iDb7W0tA^Ar|RRPyy09UR*`uqX=^RbZdmkC_S4`5Fv`F#D! z|JN5zjy3Rc$8n``QQ5%!}t_8hxH5KL20G0-*vPSBl`D>qKD??bC;|Al>mKiFd_@iQ*>6%{{ktl;lYv15@S_p9SY z!tW+T{j&&zC;MIs(GK5Le2GPvxI#{YUzTIDh3m;ySUXllvi$zq4)r z(#JYA2LE73;1>-1jlqA4qkC4;{s;R&{#{OX(Z2Vj7R5d@(bvnz-zebmXVvI9@bI^- zkN0Zq7hr$A=lOin{tL^WILY^w_J^mr{ftcrKjQia{c+T3T}QgbxUwfNaXNB5D{sX( z*kgO=Sw4PpYmnQ69G^EaA@=2}=1ZKv(l)Oa1s|0E(EGt=>B*X_SG);g(B%6%8!WuJnV0i(qAT!_Ywc_j{~&M zeEncQ$H#;}1aPH&<5*(@_irvA=C7>6evZ%MC&wGO-XER zc65;Fga7Xm|5eE6$o|GEU*>Up$&o9bsGH&|{1fj_ADigp<2!Jr`77oAq4XD$`wr&k z`l0-e^hx^@{LlZs;Y*(A^5~w43Fr^|>NxfZ+Mj8Eq4n#ie2dR}oc0&Kzk3gH`GY+F z@!@lEvA@VXkLPjN?`}*7ZhZ*%x9#mOL+F`((w`6UP332$y<%Oq!M+Ix z`{wawq@%$d-GqHb`q8-bBW_<HdK1vK;p*BzMtxfx$o9{2|n7e)vzA{0H|hd_HBL6P3d6CguIXRP6qM|NUpx_%wf? zWc*Q#!@S$1zhHiTe^QF^l(%_eX+{ zHl7sgunTqgsl5Nh{rOqG{~VQhR#gP+i2aP>V-)+xQE8uJj|AO(|3yAd{3!iYgbIXy za3%e;KMEY=Rrg27#v6FQ+6N||7W7Gfv_2C9B3@U8pdaK_W6vNSa{h(=ZrulaLSEQ` z_)hnk?N7lzB>gLoOfmS1j}OKmhuOekbTY0rB}U%>N;pA9*|7w;nUypL70R5cdc4eCpX^ z8E0{2ev#iqF@B2TKjaDE{vZmy6v_Jq&L54J`@(T~-!W0#%i|@Fzq9LC9i#gL_&wIK z#DjG#B|F4?ACvpHibv1F?uZZgODW;_`@f*y9u)R@0$0+{bH{`|%Fid*Nz|!*689+- zUkZ<$^)TcMJb%FWsbHtKknZ1Mmt_AZj-B)tZWjJc&o_?2KBKrVjYz-gkoJxHZ@xcl zojj@TJIaW!+ z_*W(T8snb9d^32Tyq5eM^gAj$d3y!u(EG)~%GU*b@%%XN=uxjmc}J)ca$@{=;B~B1 zbkD2P=We@Sim<>$koOlC!%xw^cW)=J)A~?+sw_Rv>*eJITC^^@r)ac5W5_44e^UJS zx3@Ro^91A<9k{N<_+YQbK0y7&xAO4*N5Sxr7F~wmn*YNrLXkK&={(e;aef|;H1KL+G->zFL!mkx+4crdwK3`Msk<<4p%wm0t zSA%bSz7@iI-1Ho&NM0cy_pj3XgV2kAfZhwIbqG8l>LfqL`%Bh~dKvoZz0OL0E=L3cB*G@jHuCa@JJ{`wM`M?C0|1 z`6$;5(Z}Bh^_TE|l27cf`c1{Tuq5o4wk( zmAs$t&n?gg>Ae+Kr5~zG`B|VS$lpgVxm(OrRdv=Cz~AYR{KS7L*SFT+QvR~5@P7Oq zh14(iub1v;MP=gs(Q=O4&>skRm#DulnZ@`r^?s__sH;t$D zBl%nS`a%8*K}XK-tCa6sZ{z(N`uY4ty8KMpRTKSv802ck-?vddAjh++u%K5`EbL%2 z-mjs*$C36`h`+1j`fHK>rMMD5-;nwVqfT~*_Zs;3Y_y}!?icgZ_Y*WXi}7_Fx1qnJ z82b(OJDQ)qzhm=eF|MxN>ppiM{ywin;OYA(!pL9i>O_C(PQ<4u-k+84*W&%&H58xA zcMgg6(oX)~vElt*_5Ln@KUclqi}!cs`|B^(Q+|y1n)!J3{x06Hm+uFQ_lGNYp6C7Q zz2>Uhm(=^ioPOiZX-;3g$K0g9pD*4YZkF#mtM`xbezBZi&~Mp!g^yS77q{Mq{_sBa z??C=M#Q&BSAy?^Ly%+QH=IZfxiiodW;_su8-_*@{>3waS;=QSW$IIVSjJW}PpZn+xcM6Udr)3d~PG zF#hDhxC$Fj!T5(R*tc|6`7vVRD!LHg!S5B~KVW^Z99NOnxC$FjA@LKC&uCiXDn>>W zPfuFoDFFX9*7r`UiK}>a#4T|UkY~ex%~9_#!T4Z* z|46IGRU8;ul=}0GU&8nAgCiNKKh>&n1p7w{^33%C_cu?BXk13?vu;_}?i+EN_=Fov z&cbz1-=Vnp)lZKs3f$f!?mXit_5+^&Z~usi+c@kiaS)%eV?^UHWPcp}>*M#AKlpxN z&qzk_9yy}lo15srVEx=VqVXB61Lz;%yGJzM;#Pt2A%N$8A>g-;Xne%66H2G>7yB=X zw8mXzxUK~J&XI!B&-*3t{j6(WPUt^r;v4#&&I&%lFMxg<-!PO}lJ83$BPPDW9hUfv zXYii(sBJ{!9=0>y9R4@^&-kfrBN`7f+*eq||Lq=eoA`u~jBh4$a~03u>>61Vx`uWr zKe_*W1@yO%Xxu`0&$P>dAHHQo<2Z1BNBqAG@a7}V;L#C{kLcq5I{qi^1OBOzjIpP z{|UqgXT<-eA1wYY*S~1L0q`X~9_RQ7>shY9lJShtHGxvw$NCQY+hb;Z6GO@GYh77g$KdN?JPWB^(zwkfCstcv08+JzGLwcUgi5{c=Z;7AlO7gWY zRgm$U#D1-%uM7C6YIOaP;65()Nt1Zye(7!Zi12^>@U*P2C;F#LxGwI+ei!{5-M_i+ z&D1RF{%Bg`IC`kZ_)fK7$JfcE0FQOYxUnNskY9eEWc(%i=M5Qsm^AyAVb}}8bN`?E z-;;C8x@3y-g?%rPbL?X@0KW&{Z$oK~&*X;rNUh`A7VS==TK5d*s6j z)4o8ytep2z4`FXa{s1rWM4;!i`7RKf1po1UiS=IaH%EH{_;Dk@QR>${@K&C!{9+&4 z@c(}Kj$}2?VJxS1g!uE|PamEsH{+CJ&=I4)*zaqwUo~dG$jWsht??J)|A2pC?ziH* zY6|C0xPC^wPpKbzPXC$vA2xm>GN|Kb^<4Z*z(-@MSK}zjx4viaKgfH7jvxF(mD|ui zCjY=cY2-gl`NwyGSZqf2_iwvPAm0^E^tey-dy3zO!M8s1y&CfSt#kQ0&Ns}JQvW7W z&=bf}7taTUxIUElH~(Zc;2Le7;PpQ0vzdy+SJf8D- zfA-me*q<{ev?PDL;O}@8^g_QTCeSXv%i8aV%lns8Sr^yc&_9X8IDL3V_Vdbt--Z6$ z{mVpdPS(-XAId4(r+p|ogZnrf?EkHuC`kOoD#|g|!?)w1-|_xt(I?3L`1rhw@fq8V z9vS_2dZ*@HdC-MzjZLlE#lPkUDEi}tV6 z+m%s$ilLP8H+pLK|8vk+wrlm%>Z|VmgMP+8g`7dek(W>o64XQJAI4YK=hnXEpqIpx zJcbhU6!tH^q5bMI@fwhi2>02oz5<@|;kR}_f$uxqKOE1gzM1~{C-6+Z+4!reWX8^a zVn5H|ne{2gIY2MN$1z^OLwMeQmCLEUs(IEe^4-IDEBXH7fWNDp$>dTg<1WUB0SEYq z*-s+>x9~M#eZhp>Q@)zJBlXpoNvZ=q3}&< zCp3_e@i`Ctj4unP&~NBZ`m6U)PUxQ6q2>5E>>23C{8>u*>f!fa z$VVcYHEe2jzO{1xw>mU%?v1N2Q8xt=s~oxyyckK~W;7y5z^ z!LCSL2hPWe-Hma-7~>26qJN!EoZqML9Njl3bdLAH9)Z4ch4=Shy&&J`%y;2Lb=;1h z#1~HBS;p__8Nr+6_a@2@=ReS&%c;HVN^2a*V`G?yW&a)i$yWgj593|r`?fwDdLfQTlO3weQ`=&L%ATIlRPJ;W_n6GR2{Rr}r zgZ}BX1AEzS90fek9%@yhZU? zeKPjRf13OI7|%)b{a~spv%)`&{~0`!{_&^MGCzh*{DnE6>W@I)_`U3Of3}42Nj($y z>6ddB&xG%-QauRarhCq_rhTW%$lv5M?h?-PU6e22!}yDRllWA`O+<}+_8iA}fnJI4 z!1#KPZ^5teOWvfB zpRO+8$2<^+yixv1Ul-`xZsY==y)^#E$RX;b{c-l^QOpZjjc-U%4vhVyeV9VO*=`(i zNW2lq2iGrhJ_hqkIP4R@$jWEJd`IB;UBvvq-F%k_4Q9kXrm&8oK9jx$;P0JWlz7yM zxXRTOO2dEB=R}@?ykPt(r(B<$GxDnE{{zlsO!eVu&ng|y8~$1U=iIY% zVkhkPNaDYW^-=1Cz8~+IapfEHM>7*BVSgq52lfNsFQmQR!;mX{A3f8L5_U-Fzl{AC ztUK7>uCANlFXAiurZv6-_^&`dZQRJ@6!Z(-S934-@^z{0siZ>DQqCH2fO+6-oF%Y9HXALcS;9uMs|K_K)m3Tjm$Q z$BbT_GkP&T<+I<{IX-@#e_(qFuCHk)7@vUtX#Zf}O57jU|`Ud8`=vCgJk(T^rR$|v>v1;BH@ zJUyZID~FPPkeNUI&l`Jt9wq%8#=mhqWd6YXjkq(3XFS7wBlzWr-*M~rJ&`YGd;m%WIX`=F!PJ|Ed75x!;g_ThlugVfgk)o;XMy{_LqLR%(Kh#Mg0i+tz6l4 zcFe?SC_L^rf;=!@p#7CUgh-yO1?i0c&*3!67-9FqkS9yaMr|OvVZjN&d^_gJfAb)dAs89lQ9p1|FZw_ zg7K%iQlJ}t@_EQ3*D>XWKFGhsO*~8g25||e;YTn|L-3>h=Z*YtKLhzhTrJ}z7%yVt zhn+)*=EN@J{J)Fm!1{OSv+dv6(<;yBQ1ToD&aq3p1pI6A-%0F?3q0c^7`Je6t3KQH zRVU+D5RXvPJ@0b<@cV%Q#!LJ+B44t84DW$_LI0q45;u|B?-u)R>2GU8J@9sS#>Fnw zbhyQjWIfl%nD-?vA+j?gauCM%8t!+op7Iktiub<{`FYwWc-z~3%kZ>su`T-l$gZr& zP57y4!9(~3z*is3ihs3jK=q^_r5Rs|Uyhr2h^mOn#}LZpdcf}i-F&X8&ItV@C~dt9 z?Sr2sydMtdzEzF^&+o+&e}nn2D(fERx;C5DxQX~Pg=PQ90se&9mu>63S;FsbA>*(7 ziuMEN{{|U9f&J=#Bz{8VD{A&5ZTtl3oP|GCF7^lfGw~CQlb{~PQ*&acARiom{{Yt$ zNoVi~O7^R*JzeUcS;K$-Nj&rYi;zFz1L71kJ`?f-`M2>8vB9j!HTIKM%_e1kk^ASK z9uv1|<0DStf5g+E@ypBc54b;~RN_#8pY$If{lK40VSgHWv;9oQP5-hcH81N;yMNQm z^Eim>+Ma^m;D5NULH2t-20YIn_L_aC*tlE#pTX3;#8>>%?9bx6oV=e5&5Qrh)fJa# z`Y&96_k=O8!7qtM!9T7;<35-3Fyb$$-(LkE^3z|zdTuh|llY45+tV)YZyEj-_4MKy z`#aH^tjl>Qe>63S5^)rS@46?x!qYcj>L9M7WDNb_{t@pNfc&`o&_3cPO8cM(C=p+Q z?|1p5;{W1)^fKp)#8o` zr_0<6zRuhOzTVvP-O2BZe-?B$I6mzD>+Qaf2_h0`# z@2|4=!9Q63C-x8c%fJEreznR$ySNv9)v7ce`&)la`T@U|^dtY(TF^Jk`>o5|po8&G zH#q*Db;!Gf4|YSo4F&1PdPC>0<^J$u$I`ogz0$eH(0SVdeeZ)lL+?MN5AzS&xAZxy zw4HTjh5OoHBj@_j{yJ@c?V2UwlWl*^8s*no<|RYkt;g0VpQQc&j`^jOUk|pA{2t;z z+V?ATxTU|$e^&HYL1$f=j_ZSTAb;2o-2Yi^=vk&?wbF6h!T6#5Ck#D-2k7{Q`MrSO zwr@*I2l5|4zB-Z9N$CM!M7}H?j2{yDF?@ND4l6%v4Ly$=I*^cVMSdV3w%rFy;1~I@ z^sLa~hP{G(l&O4JdhGaEI{v}<7&?3pjF0C5zF0c`OUI|ItRVC((_!@2j*sWT@$uY0 zJ|%`8_XBkN=f;QmN4jP^k-x$1s9(m3W zupf@SH~ztU-p%}i3_{1eC*fxK~&M?&(%@c#a?8$Y<lQ*KY*e&)==tq4?vCbDxvD%r<>*I2N?6*3{mtA3QhjxfK2voUM_)GE3^{vJ4UNtRnwI%xA zv#KD^s2BLPcu#+4&68U1MagFiUyS*N?be$-56}lZS22D~@<-IwA@39NQP!3qzk;uR z@X05UUjg%wt>55Qyd@}!x3o;3ZT)IIOZy&uzZRuwU+_OvuJ0d4$@h;G-vj@fpz|o6 z`QBNjr3)nz`H6o>|GNQvWBxeTM!nbH+3fxgyx-)P=6>Vy@^q1ZHS#kQXN&x6@IM#y z1bG-NeUEO2J|ezzgFE9eZ$w#{_Se>XJ(^eILH)7y|BU`f|NbfcvGD(l{s{a(r9Xg| z`SC&hdDumHUCDoG^D)>w46%pRzbH5QztQ+xRp$QZpee0<+Iz$8z47todb$7J6Nu^k z(G{kwLY%M0hoTg}RCuL7uzpGC*&g(jgb=rD<;3JDJ|I%iB8!NS6 ziLmXT_P@pSm+kU?(E#|w{2*)}rxmE2lM1n|K~uk-sqTd2!z;@pzvIwODsl70UNWh00Ac@j;F)d_SJO zYk99(!FA)Yg`ouSdCOMv0|c6;C7#vlR|s*EHzfXC`QP8K?NzMHKnxPC8N-id{+YZE zVjs}1<(F;0CZzZ)69!L(=6MkLME^6fY0}5ZZtce2h-v416UMS7?&+@GO*wi;3xdP*c}`SihUZ;6>S7R)jpCxp2mRE*B2{@evpo;jMaZDAd+>T0!H%^mKNP}RcF z&v1X^0`f<61eD*qpg*+#U11$Z@!!$^-FQ#Cw!g=>Dim25>I-ST_$Tn+Y=65=o`%Et zztAW9Unl&59iSimWxu?*cP?Vu!TD>Uf6tcr5`T65U{>Jj1}nB>|4QtuBjdL{YQ}Ge zTk(XnKX(872=SFC2YXFF4n7hu;dvhR&-u$zr`zN`*uwV1p_U%QZ~1C2-`)d!j)q!xnsI#QNyUTyQU3iW%JjLlRq4zg zRX&^V1O61A$yemD5c_bL``dWN{Vs&Z_j9d3#<)DZKfb}@m;4A$_UN2zwg%^d4c=<} zkN8ac$geW5p27h7Y12;D6OV?cctbj{7t6f69-JZ}{n)v_D*3C%|F`mKr+c|@##I%>u%hmv_xVyAMh&}QR5K>wPXwLRXe%sATP%kqiu z<7hu*o{ynqKcl&fE7Yj)&=3E!F{Qg&@tijPFZf}j6ZqEPJq!f?%Kfl=EM3@g0 z|8F{&m44WBU|$1%JK&q|`Xt{&<-t4BPE*sp@Gd8K*Ddv}2X9J!Wu?~Nao?EX{Iccl z66JEpp8vA>A0)mW=bIcSBlqLuyQgzCSkmH{d<#7PM*FpOEAA^tz6V!z9REfBv#l(X zL;oor`oRPJs^a-DypL?vd!@H-kDTBYcS^Hhp zg8QGnEB8A`TGHrOsjIqL>(g7%k0-uc&hHRJzL+Z&!>*P_(Dyj$v;5Kir&565Q0l6{ zyyD=VXPd9U&W}B~Pum+VX{m|>9`~AWNh|$!d>b2;-j)_E?LGhWUpPL2(#0a)_r2Zp zFPOSh#CD_}{nz`nlS6THFLuh@!)@X1ef=5S+kQ0yI@tfmR{9UTa^HCi`S5tDtGUPa zPxl8R?Ek~K-<<6FI3`)lQM z+fMCYOQXVdwCl4yf4P0T!f)FK`k^1y%|6G2`_L`@yF2h6`2iY9e`wex@`OAhmcQ*i zpu3{m)!eLj;)b4I8v9VqbuaqAWw-XjF?kp)d_V4A_k!QJe^dBt^L*I#Wjc;_ABTL$ z)1V7^BDN_W3vcD8+2p_J?^ph#Ui`<#R9f2a>4-a?F!Gz+o8N={Lw;G(2fj$&h?d1AMw)`Dyc?^!MvH34MT%Z^gP7__uBY-pX!Q zyU`;{e@pWn$-6Uf2zZgdqdM{O8h(5HrRa+@^kEN2fvYzK=5OJ-@?2ckXM|e z2L0ea@N*x^oZkX#G_S#7#F2QBm!!qWtA+1yDgCZ~9k>1am*wwk+7FvI;8^J#?tS>< zq4eQ<`j7STk)yzid?MJVlJV)hH$MvCT_*p|zyRU;F@G(|cv}9TJ+YUEA;+E?^z(?t zul6Htli_>u2G=LhoV7nXeL*H0Exm`l|Vkgq>zQp&;tKvcak?MB0rwGrupL!eND-J8(6!7vr z^i=rpE!V$TpEsg?zVC0w_(g|Z@pkvS0&ncI3+JDizh^7*Sh?`OW|Ln<`16<7m+hOK zH>>ue|0X|37x-)Er4HPyf29(7m{vU`eE(NLSK8#q2_pXu=f}vheec5j(CJh$e+uTM z!-tg*xaL;qx8oBu^WXmcT5t2De9Q9>Xy48kjmU4q`RQ;F{j5>>gnjf>1RVHeiO|^p{2$1Vm+eFyMK9zX|_iS&9F#lzMz$Z^i$4u0OzYgeV=yE%_28{^GBKl0SiY6DkJy z-D@RJg4sXt1lHaB_xxU1>CzJalYJf&ALM~N0nP~oWPRZs3NpS1`$y6~)(4e1*Pq|u zv>d2#^E+^fd%!LE3;u@VhxqV7K>0C@|8d{>P(aVw%lZ}kJ+MBG_#XezvjII{AB238 zf8ej2-yR;;=MzD_Uq5+3pZ^~Cw*&vtVK>C(sc&{2a_6xP*xF5g>-_?_-~WW?(4m67 z-#?s@|2=a;|0n(#^#8e_-p`M9yZmqOa6$fetL!V-uj}6E(YT)LA4dPsPWAq@ji2WI zkxn3~_ZB=ooRRvch8G2XKkWzN-;NAJUIDjr81o>?P*U$RxCZ(eKi@H&k@{`>mWmj6 zxo5Z_cyRvhYpzfF_QF3zd~5%3M&N6nhJT27&<4Pl;QU3~a6#aY9Z@=W4=)<{5cyZs z^Az+6=MlFK>%9WqJL3}HN&WJIzRux-;N8)Iej&~=n$-IMaKD(`ACT#pL;M}?HyPG@ z1$yz!b?$jX|F+>pf$!VnmblRLu--EO`hP|H+uaZU?Z3jg`r$>PGt-kT;W_zoz`GFt zwtd(w=ihgxq-V>0)Gw%Z+|CryPYZ&WGj7w!Z`1%pzY=`xp0K30(>{*qU z>~KN;7uc3{IUgb(+VsCCsrONY)5_PuVRQc99m4npy*pZOO1};d>-_;0+jBO)_6Ocy zd3;#U`^Osf{mDMWuYy0fF+XyAhlUrW-Ov`di}dx;UdZ_w^bhhE49v;7{ce=(XPEmu zh~NHYhVlpfz;MW%YvrJQL3^3ylBmbfPuj zEAWN0nG(YH;G6;Ju;>uXG7~V6UJdXD~|C8&${~@n`hx@fDe;K2{eK;S)`1)R)XP8Av`OQQA zpl_1D;gr$;zEn=)XhEO&cRA_>+P87EqelK|zg@WhAp`y9d0(s(B~G@R_xvGFR?mkA zoJ!b>{GZ_5A>|NwFdlzI`QiEm_Y3+*DfjH3u?r)aInj6aFAw<{$20j}3H|1{TRA5@ z>rYZH2@gGIJ7YPOCkr3S%#`|(e>X@y27INJPrySyU17*${%1H>130$R$NWc#*ERPy z_^XV*M4;cqe=4Z@%=RhYAw2UwNUJ|0uar+yUwJ_91*oF@L+&HcU!HG}^%d-ICWvu? zyq+?8g8BIC<@p2h8#Hoj&s9b%jr{ube(cID#s_$9oc9RM3p3w_(1-C4MN~hlP_lo4 zLHr;6XaIc+p#PM~zc3nfi`iKA+_Vn?*hWH3&UKkm;tJ?os4_#Vjnq{gb|g)gHe-*c zz8F2?_~ZPJ%gz^>QH(pz#g+DEN*%;;Tm9-A!+V^YgC5HH{~gpP%p+ERx;fwC`6TrR zateO_TJ3Ka<diPx{@==XkC|6!|MQUR9Xnt@B!36(2ku{|UIAa2^DOm?{-d6+6#shkB=isRI8MET zee7Mf|2n>*1MUzEav;;Kdewt6U&ZlN|NLJ4qn({F^A!2Z^8q_BKalTZy(*_Y-P0w! z2i@{FX7sMdoQp@kWYIsdzwp29{qY!oIp04)J;Zr7fyez?oHsZgc7BLK-zXneKQd9( zuW^**+ey&j$oVquUmW^Id^t0(OqqEE^n*XwodER*_+rr+xxZ)h=#uzhvi}VI={^fqqfWtQ}_m7a+f5)r)feY&@X)a}p)zgZ*az1ac+k`z!WCj{fxffzcz1U+#|u z|0XglTmwP?SG%SFGl8P zeBbKr&dR)ydkS&_`M~|j;(wUpv-)CrlMsJFLGKP}v#?lrZ@{jsWr_!a)M(FSEtiX3C^_)NTCy(*zX~BEg=j#4x zvH!RSsFe0-zqx+_awq5gW6jfIcX0oSw4?ID`zutgb9m2li)%-~PvpU1e8?q?-ze%S zZ}CpppO0Z5YE(Y$`1De)V2{U)-(uy*(C6*peFvx?-L7(Ra+}Io1N962gZ#+({>nzJ z&mF!gcHYqEh5amXpnukH33RD^SpJQkRQ(uh!h4MG6rN@L;-cT)Amt12l}0Wqvhfnm zBfu~1j~jnxY!L5hU$@5X_{sR6Jh>?JXCPmcpFZZ913dIs?spASKJXs$Bj@%fa_)Ql zJKT?fXVN3`2mJImjs=bbR+MC1eXK|gZ2n|iL>_$d*}q1aak@VKAM z$YWoh+eN*?c*{9|+rKg1yNq^EQhtCpY~<70-)`s^?`w!aF7v35F3X?z&;Ic-)!z(C z%Et~PuQI+EztdK3A%Da_aWcCKdBCARxU4Y@;_?iA_DoN9fQ9k=loGG;}fMkf*&!+1?6)J?W_JOeBgkd`;SoWKu4wVZ~l(+ zH|`G}rQATDD=2q>k5=mWdbxk=3jCw2Tl9we7@T)R9&mq$*&p$D2Yll1pEUFSxbcVf z8~L(!ePY=^0zR~7?7M%o!Y%TWLrJ`lpxv70%C|G=3HAiJbR`d`NyO|EZkZ zM=p7%V5irNz@EUqas9Wv{{X*1)*(Lwo+;=H{77sELw@0Za6by;{=}(FNgn=B57rmz ze_;Is`T}PE!LC0l?)T4}KC_;&evn;Xi2Y*!0%{K?QF8oO))$(eEkpkc>z_*F|A?Oh zIcEQ4{J8#sJ?aanowe(X+o1n4=Fi7Q(vrW0>kDJ2K$Cx|(()qjsa4em0)1f7iqHH|!4NO3wZF;(reIS4jT?=-a`4CHP-w z$8;X;L%HmqUB>zCaic#yW_^v4cJ#J6pE`+p-V4y1fu9AxlIz`N`wsut&ZiSx2hdN1 ze@^*R{|)zFjop#^+D3726X)5L^-Y)9hdv{ZJ>yH#|MBJZb%^)7`K{k-0sD>o zi+)hCbng3)z{Vmv2sfYh})c8kM zjyooB{+jb2zrVo$-nmo#wvH6OU%-FQARa7_JO`_Gm?+j&12?%QZ?Q#stb8}hya z@5gr=@mGVW=eSmMsvKDOV|eEKs>43<(<__OBJVQ4VtiYTzQIqCdkS_LeIq>YF9-vk z=O(gQ@DX%W9B>bFJ*)i>`VSn?bN|h4cZy~o$39e*%9(9{7|(1!VEh!=QR%1D!+*#Q zf#1k)fpu01?|-kXP=Dq}w6D<5KtTPW2=H+Kw9@!T^8E_-H)QrZ!&#r)-)QqMaQqk0 zzs%mO>_<1Z+*y@>+!=fp|06xN{X?kd^9j_mtUjIS-6-5BI`OQ`J=v5kaOfyko`sMFSYPKfhUkx0sAu!;EGQzAwHV^ zo7y+`2-?Gb5zhJVX8weV|4jabDiep!?{DCrKlBLtgYRYdu8V#^&P)mVX&?PzJab$t z>Y!iv?it1NJ@KucYI(-FswcHx@F1Sn!dKSn`#@FPCG$sxwnO~^|NL=06MxveZwlIa zZNC}MtdB%8t{cc3kgT-z0`IB8v&fx!AFIGPJ}mLSV&9{{OL~c)alTE#Y_T8mL;KQ& z@vV^hy1``SyyRD?+Mx8B{R4j-cnMEB$e(JqgLqz!FX-p@Ly1>~Ug3XrxCaq*Zdi%$ zZ8ZFBHGD+8nJfQz67vV;7xCSZw8Wj(;62+xe7EE`5c#=`@ALA$ZZHb@oTDd+3)-P5##_KIg8WB(w3fUjwpcky0)9VgddYgpTp`5F9gHhfDb6>kgil(B!< z{{uYnvR_r^f8+=GO?bB7CjE8|Mx?A86nyBPZ9f{-_QFkyKUO&{-#Ns-gMXD?<#!9# znK#hCV7cYL(jRZ0E9QBhh{=CY-FRRB{Z$X?|3ij8%7>+o{kQ#VGIS!&O!#g27c>0S zeozi(miMpOf7_pSGydC5Y2?@Gz%$#k;~Y2nBy9hAo+eZQxi$Q?<81inbeZubUgn)> z4r(3@sYm;jW?VTAY^ROSkCDGv-+_N286TIl&v9yMTInC-Uu(9_yF$p@VB>@#JvV9GZLp; zbvGmNv#6K+2;qZqiJP_Yw~@PPQ?L08q6f25Z{udG@4`+a-WBkYA0c)yC-u<>;(%>^ z;^2(b+c@B)iN{6!?{C?E8<%VIFErmx8~msT{Rar0j^^(KEpmBv@VzJ?h;u~M)3 z6Jmhp`vl-MzM=~AOQ+KWI6fZ)+`VxYcg_7HHr|4z#91_^Q6>=oa!LHZla1g9>^kB= z@gC;P#9JVK<_G52s4#IC?nbxdC$MoA^dGv=f1LjVSbr$C*2Z0iLVNi}J_#leFGd4IS!BmaYbV*jtg8R!K)_`V)!(m09zy#=Yi zM*jil6Q1tPNd3OvMR^}RGAI7%-vhr3{om7Dkop+!FT}bt)THqfx8i>&@eRp=CE2gv z+3S`#gv9zAYaCY<-1pZi7 z`xR|6@f8`3Z%FO+$^Bj1dNqy%?XQ}}d9U-NAK!5vo!1+Ys|8Bg`S0jH0icC)AhvUcm9mjeXHGZN4;{?2ey&7-9^NpBa9s50@GB_ja=x0#s{Koy6>)xT` zD({hI^dIe1^i9k9+QwJdd~TsOj3d7T2a&G=_Mh_y>949;6ugxvi8q3II1fCypW`m- zA9}{bm*D)8=uhxK!K~j&f53?yD#-e+s%A;zDxhy)>i0*`e;Mc75kE|OQyIA_?Np;w z`r%(dK7z+)grDKilDt1LI3xHP=)ZuzL_*guRj6m2g^ics`h@noGLm(%KhK&tjf(YI zw8!|YF2?8hPjP<}-*2Fo66Y}zjF&pN@09Yt0R2D3ya@2`drs)O2J&y?FXaBZQM|_` zOM{i>`&KXDmHr87fA>kZH@{(_b=OIEh~?;sObPdK^!~9x7N#m@xX+d(vG`Jm&jYA|-we?tf2YW!=(q(%mKXW`8V4yMz6P;gjyC`Ti933;Q9r z-D|}DojBP5gc4~P$(_20FJ&JfBwp$%pmJ^9bAbs>7<@+D@-N%|2WuI(vRP7Y&7l1$7 z4g35t;yy-HeydT>`*fv$gvWdC7X~tFAMJjL)j#AP5WP5qQs^9=FP%kxWNSZjBU$-A zXX7xcxsJsC8SO8>uUfepIg*p{S=m1X{owBy_ctIPQ(3K_Xazj%%r*88^g|vbu3TycM9 zY)t!ghVq2x25sL9eUrF`3Fkh zet$`r`PcAgIsRk9%)gNi{2%tytZ)1&v%hBJJjT!5E1xI4BY0+ilF2!_=RIKN2Ltb& z+>3dId_~+b@m64;jrW_{_A9sOc-na)2>Va@F!9aa@iQ42*8t8v&<;m1PjY|sypeCa zKNRKs0lBdA1@|8)-@yYIFT9^fsCb9&eSC6eMI+nD4&xie?S7~he-eK)Vzs58d1`f zkG(%~1kdE>ej~qj{)k6!%Kyeus{F|KI=coT7m&xQkjfSI8ASiCfj$rDv++lxqZn80 z>rC-`IrbOM^Zqcbe<8mS-X}c1OXrUW@NggMHsCLTe!Jf^IeD{)-@&HvKkn0hTjt>V z7xXu)b|Db*NgNX7Q{pki|A74G#xU-H3z+%m@l*4X$D8{H^j~-Fn$i3YCT?R_YEJlb zJ1+CL7w4K}e`*%4#uT2}?il?m;2+-UmWN|4)X`+S33_F{y4kwfBLs}UWkk?n*1FG zp7RU*wjAs@;j4`Om-s;NpW{z|JZ$Vb_%HDox5}cpzZ3j1{)Ux{l<_mH{!WBuL@y>$ zvLCx?|Iwb*V}E}tcT?(5qh$Rk{0-Vm$~Wi7Fzr72H%`9;e6PYisr(LN_jfoS0Oxp&maowX|yluy`Ooj)p_B;^nE)YO1}%*&7i ziO=BpiGCY-j2SzhN?@MDJVE}Dz68Hl0Df#j<#Ze+=_h<1^>$u}(XM|2K5+iP|AoJ( zABFv=zDy<;WgOxY(0AY`JidQ=)x3TY(Sb z8^*eTdKfr>ahCZ><5Mckx+Z4UHDfs)U+#}{en{e(^UCNb`i*&^@=(Tn|A76$_f_lv z*mXuvYEJg+t$au0D!;ub$%nu(jIXp$_(~@j%*nl0-+=tpS+V!KdVDSic6nmL zjt}y;pnmc&_z!)qG50#}9>aJU`|bKo!115Le1ZFkd$;3%7$@kN#$ObS{T(d`-KoTk ztUuO_VE#q?#cg*F?Pqxp^p*a}F6uAhFcP^LiTAi2H}Exh#(Ki)sntgtUz?)7F)kkK z0Ln)V^o{HI^N?@eZ@&xvKi^jy{fe6J-^PCWD~aSC)Iz9W%RJ)`_nzi>aa=vy_v zPr{A|=`W$Q@KNd~{T`#oV`e?9`f~#F=ZuSTH*VI)ap)KESp7{vf9M~DjQ-`Quc$Zr z=e2qltWmwKq#i+E)P5trlJOAG?=k2-^%nB;E6NY!dl%rpR#6`@exY1u73~`4M;jj@ z_IDibMZb-nO;*l`onZVCzmHGhS>*meM)Dhu@%$R>tojd#zcBHQ;X@fYr|{tVp{i2l zDRc~S2E7@l{f0d62Y;F00dgsE6+K5VkK%mL>4}@BeI5U^cxL;%vRWS=1RltlnO~eq z<9GGaZ-SjavuxiLJ~DAf{PL>pkUPl5#9@?>7qQPjuR#7Pwfnm;?=b!XawPE;&>z^3 zPA}#gvB!4)8{au6{zkd+53Su#ZPoWlXUc8t8-m`cn|07)If==-tfXBc)0j_JYeyTM7L-j<)#q}rVS6M&D z_Y}k~Om-AR&!eaBXnvtgiNtp&j9kUwrwIM`Y%R*y$Q-C^rwe%1-Up3|HMJOg7lC6 zVGQyE{`XE~WLGm*vEBGDr>B=XSSaOJj=6yX9@h^&vmc( zCs+?XHjwZwz?+mGy%k13&lY zqp6I%&*fl$uzrrEa`Mdm?Goh2+#OK=$Hq|vu#YV969wU)m)~Rg9120cQ103VdBA!Y z@podMc5{6Uersh_#xmtm{-B(Q}}He?l;Hxn{wBp=2b9x4s1S!zbE~ddH=usezmTA zPVy?0p=3S<(VzE&j?Js!Eidqo0h><&{g>}+>&oxkmsi2(El8dMd;j}}bxZhOw~|+3 z{f4Z5KR5UDJ0@R2=>vHRa6kJ$dq4kg%NB%w$K+MOy+t6ezqOS8aGbr&AHe(y8_M1M zUKl7Now(=P=26i5BX?{s2PUu;a64jmnFq!{$@C&HNu2pMN&L z1HRAO@miJ>83)E6{lyPOS5W^zUIox;^jGmem{-B#gZ&c!$3B-i6o2Pe?h@SZXY;3k zK3o4_`77E--2Y(T+q??MA8_|B?BHL!ogbY1O1=G`Eq}}T`A7h*798diC^q>MkRJf@ z_VZi#KKyIOC%B6>pTZi4^UBX}ImMU6qFg-&-e|@505&S@4%PSXXBEWptMx; zEa>;$H=PZ5&w1bFO!Hoir%KkiiyY+f`H%6Cz!yIXeAxe4TT&4Fx4H!NkZx6Fh|P0(|jZ zAKv%2tSeEwx3463AN=|fwLfLH9k0@9@q1iu%)eDbC2OFE=vTSSGhWS~fbrR3=vnQ| z2p@~R+8?wp_CHg)DD9o_+`;|_@-(0%zodV#zt0Li!0%PQFy9Z`llC$HI;&M4S0gTy z?@xH2F;xadb`q zbO=9fed%h&??p-cr_Ul!5%yszpIxvIN7u!RX5lYxF!VjNLch!}&#ZPAao)9gI=qGs zi+{a~^i~ZW+Mw+eqg>_>=-dC0zF&)y?{R+(=uIMiO6BXhN3)P8+`qU+|Mv(=126J7 z;MMn~DEU6SUY{*|37+|WZ%*+X+K_f;anGi$-~Z6OGn=R%T)PMIh5v0tc`yFr=Y(G+ z5AW3a$5Gx}Ke#4S#Cu%_yg7$?%d+b;4)3G2_)GUG+#@InSF-mG`Cnq|_w30PF)vhc z@wAg)^IiMSopVLA$ai7u*CK97=t4>O$IJ8?^|HScz%$?P+n14XC^7sO`2v3*$!L8k z>^{fAg=gZk_>X&hh!=KRaIb^Vv9@fn$iIH2egAI#|6?fGPT3m$zrcTm`0otbMg9)r z@z#Y}T#V-eK8xQ|s`9;i_e_z0UH#xOz+c7P!M5JN!{A3r{A-@o67@R2;5lE6{Bpd1 zrzq6o@#O0Bk{_f?#@|(<_z&Y=GPe8dvvWu)-~3 zBfPgJ)H1YsnSSB#0k1wk{g9UM$3>qke@~UFysa0zk!XDw&+Lcg&uEF(7o+5RkDK;G z?2G7+OXlNbtK+aAPRYolJ}=5;`JWWKnP?@QUfjP-dc3%Q+2Y^uDCold(5Fh%MYEgh z2T8xTcBOuJRs63n7T;>gR$_(k1PGp zJ;%~185+`O+y9BFMUk6h$MpSEIlV8$!XG)J?|0?gA;1R?AHE;HKd0wy4<6L_eK|c( zYvB)=`>J|!dVb~Ur|*XkKBRbYf1NzD{Vsmre@5|NNax&Fpx<$vuVx;T z`{4bFme&p5G~lm3B>E}vZ4WEnC!>ltW=hfz{7&_t;(tCG7yOM;=9dVG{<8ketqkY? zBEnzY7;0%p={&6YQCQ#nh~lrQHuz1sO#e~E--&zWNdM;QxZt<#H|;C9sqchm{*n%q z#BbqS9##C7?&O2?XBGds=p6Xs489VbK|faLzi9Z90G#*XP|K@?e`Gno3-Vhi{^%ja z6T63g2mDW&=Sv39Yt{3@Crkh9)r-=erK`@+XXtmf_zeBP!}i}`{~lf8-}HdCTMf9Y z$Sd&{;eFbFwC_*uQU28J*7AJQlK6qP{TJ{|yMHn2^RWMyaG$yDKk46Q=zh_Z(PYx4_Q|2E2d==XQL>UQ5~Ul?leFNxm9U()~C_Ald^|39~XQS|uv z_PF~7@Z0{sS%1?_x*Ff|c|zM4hA!U2f70Ln#=JYUZDHuO7qT8d&b|ETCD4!f9Kw_S z&5vojZyEl^N3|V(e?qQQ<8^PO^9DGBb>nyzY65v>Wnef|_gT%vg7MA{|3dNs1 zrFb`8Ty%#zm43GWx*5MWP!i9j%W=;Q^n>F^`rk5qt$jlAys~3u{PL*32sme3a*%k~ zZr%B~Isc>dzfE}1br~h`6CeM_{uBPyS5OcB7EqGUn>MAF&%dz!`jp~(UpM%p zA6fpXe7y4(`Um;^@yp7mcTwIWzs}o6Z(n!`RX&OhWY;jeawS_toKPqe%Udk|{V`~O*g{vBd`=qEhpLy=eF@wSIr+JMK~v0{G+@7;?0 zSAf6T6>4dXD;|y?;hVSmL|&hNUdI>t4UPP3eOu?8&~u?ZC-d0Lx6n__mlnRIBPaD8 z=Ka>^6`!HsQ&Xe(UfrVYJ|8c*uRu>M{6)~?1QIPT$8XBK*}7T(XZzpYruaG&iU;>q zOaCl4+&F3m*dk9GAw%8R2D&b?Yw+J@mToxs!jizw7%g*-}3l%fxnxl>tMO zF3P+Vop8%JwsbrAN-#Rrd^;_;{<^0%h-QD~?=WUtL_i6LKY3ion z|8sob&MyR==UcEZg!~oFcjpCe^Mux${1^Tgo6s)m8%=%v)ck$$7d9(=!`(%Jubt3( zz{~f+>3W5)GxeLM?g*WK&h;JgYrI;k@K4^I6Zq7Gsdoh4k9=U#evPSbo4Tp+$iG4Q zFQpWI>s{y{&gHdFXua&ueznGFYg70RQ~&ZNef~AhR|DSDIyLWM-i$4Ga~{ICOz5+~ z|Gd&^HSMQO{X6a2-Yxf6JYV76JT)Wm9SNwn@M&7`;QXKTzkWjN+c#^w4R^KvPk4Ve z@^cgn|7$0*g6G|O#s4+GPyV9Rsk@sIe5om|-)i_p`MCUxwN8zx-&CH~ex$UWZxNr< z1^IdMu20~bMo@q8CgxX_9}|D#G>`Za3)s(i(wtvxnZW)z`0?jX7sqF{%?FacyCnRr zpSXh!5!B20p75kw6d%T4>T4%%O8w7@ZpitQ`g*N@{c)eHZ|d&O$p3D+L%(${Uw1Z7 z%*+4lYW06LuP=!|@EdoZ@b4A#+;}%FaH)x`;#dF4-?&-fUcmo2FTTP5Kbjo;CC0Z4 z`@hY2=6v*;l+2UlTWKHmB{AU^d^IVH2mWh&{orrR_v_|2vc)$#a6b0#lE`QDg}B&v z>HlB3aQ;W(s+-fIzwpyV4tPGY8{Y?QK9Yv#XRvRP9Kt*yrNjr}{=S9=z+->l`RBF7 z=D6fb5&MPjSIrj`?!pCygMBT+kNbDOE5iQ!g$oK7eO}+!zQ||Z4?E2H$)CKS?;U4J z@&}||ReZMnS6@}Uu}+1v`8CA8;eP3Dm-PRaE-kl@W2@h}%>7jOehqd${GF@exEt*b zeRJuO(u413vVRpl?uOkP`sUSF^?fpl|N96}`rJ;6d`JHsXHn=&4(b1`{cU-f^@-Nb zSG6CTr}g<(8Q?GD`~D@{zj=W__m1t~4Vjvs$iG)xP<(}g;z_=1@uPo`pLgHY_bucD@}itOr+DoAAouknUq_*!@1yT%d$#>p z8{a2danHTbVe>qo|FrMU=B?V^yYDJI;&tSImOse9Ao4VwaywVHvi;?Hflsw6{z5_D z*HX{GZ+ri|9Y5v|@w9#CN+xZ+BmHY0a^wF)-^AJ#&-5{UhW?6vHoU8NJCEtOZKgg7 zex<+Vh`zUZdqBVAX}9AabU?4;sbF3l&Ev4`$o=@6n&Q&GbBFbPie~=N?_9s(_c!D( zh#pq_n1_Wgse}4#`44%M_s|=W)7Tc$$MeNHe(-ms9)78mSbs=+e*^r8k9C08@dUne zr7#cTS5kY>(wCS1i#%6C{twvxV;t~*p%40#JfQ!NG4BxcWb@M&Uik<4b37ZrbH$!k z_!rH7pgmvR5z_nek*7!Q$B*w-_}j+6cycfI%Xn{nM&vfV*PZ9H^bhu>ey@9h&vk%f zUIy4B`Je57BjEYI25>AB_&>|r?q5p$NcFI`$GDOF6MuY*CC_QoK6PRL;H4Kcc;Ow2 z8M~8sF^>8~tI!YqeDTEso}Iw#2H0)<@1>V8zhNKowmTv7Lvm^!_kAu56%vGVN;a*# z>F`;{H|WgH@_m2nhdG7sm?avXKUV%-NrErfkG(jn=ae^X(r3&6FK09I{|g@~p7vRD z{@5Mn{c_HgLIHsf$d7eF&xIBWi{ht2TqJ(G_JW?zcE9MBd-+=~=y|{MJbw-Oh+fe1 zK{5P~all{97NouNfWL_Nn)(ZRZhLD-rkL@kpUvtyWxe11g#XQp`aXsB3E$eWB=MhY zpYgE?w8!^NSSJvEW_Ho^KP=~qwp`TzZvq{Rt82Na|9cql3pl^?`K+F6uKn_k%lTK| z4}3Zc{tN%4|Ngr6JFYz5U!B$S+i!fCEzaXUq}zbU_&Ti@^#0>F+wuN?_75k);2XS;)DzPxy!4yQuG{ zXZ4(Rv?C|~WBcUq%d;8zf9#^Ze|1*RV%to_de{)O3s^mp5r(-J3m zZg%Y}!HJI?t9)&$C0Ku7hJX7d{OSMx`+?VIA(x>055Amn<^MhLqaOT!s~z>9eLwI=?K3Xt zKYTy%<(D@lUb_MMA^0JGjMuLJG%kE;xQbHni~e}7U)1(5&Sr!!o4-JbaklioF{|gw z-~FOc?0_$CewGnAko_UF|N9@Lh2EdOpBB8=+i$w^|JU~e`_VqXk8i^Gv;BsdY_anN z@)OL=2p-X2*pKGVRj%Hg)pPP6eO4&WFCzXM_rG@m|2tn`{Qsx#2Y&CSMfi{Bl*MrfAsl`;M+2jRXiU|7d!t4>dpDj%U?ilAQ$g_ zuH*ib_ooG({A2r&Ux{~byNY%}SK_mRi*j_H>nGrEzo7RKL_f`m9>uPr1fPCM`NjPK zAAc}k?EJ6a4}9`IO6V2zN#c*S|JS|MGZ?qO_?4t1h(ia%#|55la=fmFmY|)j+ z^GEMbOPuJn4^T?{zKp*&`8nVbUmW{%PU8OGp1CRTiq$7{u|>Phdfa3 zp1g|s&oREQri)3R8Q=0KmPAk+g^hnLO)`4S@}Qp zcLDrqz%$`G>vQt{1C)F=^MmWBKh3UYJa7At3KFNED2*eJ^&jJY9@sa;kHlY}5xhT5 zEv;t!Z(W_QnD=iXKMU{AaNe(-7JPN7JDB(X?NCGgP0wtQ-!GuQXurNRE%-X|Kkie1 zP~iODPya*a-}X0vALHAQ0-pfimY)+kgg@9HXe4~`9}mTz%2LpVesVtJ%G3UkKD1w3 zyD06w|K^$|oq+Ftt$85ivq;)6vFZut;j2Kc%J^n-EBF_nYV^I5@j z4fGd19dO#O%m}@m7+=a|GPNZAyd6jXa6YY}-dCLW<&V}~Lc9M9=J6@`o3ICF{w(@w zVrez;M^icuZKZS4Px9A=_G>Wi9Pg{8Im99V@lYrJM?R5%@Sj~DmQKt2`g-tbU;b!& z>7s$Z5hVRTIhPfFR1+S2N+2I9;X6F^KRTUQLFuo>dyadd^d|hZe~a<$6926e@!K4) zD90V}b(CMoA=_WT`J2sbAMZc=NkQ;_o`U`eeE4@IXnz*(MZQWGJ^bI5nk6|;1-Jco z&Qq1tPq}~KQ_3~)evzWT$o7Xhe*T~Qq_BE+SN$O5Sndh0S?Fum`@y2mqI39v{^Vnq)1 z&%0%BWc6~PU+M>X1`q83`b}G6{_2gD2 zw3qtV@L^$feoy}BhlB&)*2L!^|3|pLFaA|yBlrn^%)EZnMf>^W8#l$inDvqOlXEjd z_vcr@pWT;^Zptso|0o|0&KG?4CZ1uBYNM)Gm_MR&J`(pQeueg*Y^1!64So7aLB{n9 zlxlx;ez|(_j`ncfvB$YPf zuirltm*<79z+@UQH7 z5WxQ}^vnBkDzkdlk8>Tyjy7Qap&h%%{{Ll#lQi~O<`ww0AE)9%5BbCO*GIH3!23Dn z4E69A?fL!Rb>n;#<&J*C)tFoLqpcwNWaP{HSwWvaiKV5Ua^^tJr2jZyYUM4_uX4Mo zea@ACSkG@T|L*4Z@eKKlCBf%@=utAhI=@r(m*e-Tk-sMsDu1vyBYM74`0rdb^4bXd zpND)PPXg@3*pQJg|E4EZzM@9%KKtk%`DFW)Pry`(vOGhF9a*mz)N%_1Ae6+`#-+~_jzw6_--7??X^O5z9Dp%J~a{ME;Y0!5B`i=7? z7=O;~{L20T-+Qz}z_ZE7C(jpxzuxGN@PEuJb@)y}`}o=GS+Q4?uWs=FlY+i)tW8UO zZLLq_(AZD!wKuY|9;oiiLV>+Q_4%CG8C{=UccQfKnBPC49f#a~)ByRxvypH5Uw=q> z`}9q~p?{4H(1XWVuj6;^;7xEAJL$9D;kUOz^sQ>6g@Da}q#=b)y<-9lTAMtz&cpX3b zw?Y3k*f-+sZj9rc`H>-O=Pdo3jlD}4JNMpuuqXK5eVg~2fWJR31%F|GVBd;q-%@<$ z{Ord46ujT=l_i-M-%HKQ_%(godKl)Gm>ZvXD3BHf7<)q)A zpj@UO{ZGDpN9@_V=P@pjkH!S(K%5AYW(s|q2@m>eUcICJH*(JPb9`XGk^ea>awBqxd7!3kM*c7LnN9y z(|6C^6guf2;(TIJDrMxt$YDM6Xu_YD{0CokdPM$kzFz!@9?${#r5z;xJn+9)n^~Rj z%^$6$+yZ|!mT5|gvgt~V|F2y^d$4cs zeTeZ>`}Q}KccuS?Q}g^yxxb|mcsMSb&G?J{fIqcw6$EeU?SjzvWKGt{FV^3nKY?e$ zb$#R(`3ql*i~UpmgMWT`M&PeDp#*cDd*eh}<$*2rH|W5sg|<=~&ZS2y-8uo`B9eBI5(Bz{S2JLro%?2Npt{)GES+JDL) z;`hnC4ZZ%LUFEdxCD?JypL~A_`Srj1VOMn-^0Ef=IPv?0`$TE)5&pja-lWe7Ag;nC z@CWmF0_#nlm)i54_uhlNL%u%X{KUpb6R-J^<-3HG{5wZ`@#lKJ#Pv-J?E>sy^S6r99`;h+R||cy|44kh zDDpiDz2W)5nl&Z&7WT_`8UF|Jec=M^9pJ6W%*p)OatV3pk?6-4|K3?`e)k}8TJ^lu zTQT#m*k9+uMaakh3cJH{$VuB}_ot*bq9?zUnDQnYVR>iM+Y_cpy)k?|$C4@UpA?~HG? z3gv7ce`(HBh8=A*`&qj_Z~hSFkpEHiL%VWjbxGjtBz=MZXr>GD`&prca>8j_q4gqP zkdN%Ql&)PUXFcu{t7(U1{f+)RQ7`40DUpxWt4nU+MffjLKQX>cYEtxj1=@3+z9uz? z{u!TM=cknU-G&#;KD8~A6F9JMYuNrWzK_tw2%D|YwA#FX?8`pf*=$a6*PU+uaj{vFyctWU(g^!ZY0*po=P zSN*j53(4=y$$Z21T)#K+d=lR`WoJF*=gYlq+1lzd`jh*wFW`Uu(S*z^4c9;i%rD80 zDzct7{X0$9W`W<8-bU=>%FkZub>k&j4-5YQzosE4d2g~PX?0VVq&9y3qQ)M{BYys7 z#?Oy0o0a!#CVn#BYJB}(uHm&D@TLFTRod4;l5r`KPra&XqG8VX2TS}6ev z8KlfpKBlogZNmF{>RmHZmUoyu#xL|uG)#GTo<=zQt|d7saq8Kg`k6sF{V%cxe)^T1 z!B6<(Z%fU|yeIA9w}JQm_@4fg(tm*cvc2?+xZ+KKqyB}0zeBjrbLo6azH7;68Yd+V zKkWnXcarjbOTLxxhVMy_bXwu07UJVed#6+CTk-;T zc^dxzxoY}JoAcj5LlX7~zlZRG@X?chQBsay`7iwi5tknEL5Y7N@nHPGFVNOiTOD0K zT}ZYo{_W;FgTK>(Jn`;gIq3NO^OMzg5D(wtzXIjNe`TA(ZD_FkxgzxMl=_xD-$fAb z_U9k!AO1Tlx^mKghZ%R5@q@DTxAE{>jepmx_|JXi z+`{=-E9?jS&RXun&cJ^ydwgcWf3W+nu|B*%DdidCm)B(czc_!fzVZHq)TfSDq@DQV z0G`ZmpCi89{i4(-j+dl9ZTy{njP}kK9%mKsBmI)bzi_4TZ&L7l zk>dfsNMFA1d;xjVm*b}1cXm~(1Iw}gBz*MWa6f7M5;4D*{e=eOr}mFRpS8~OFM?k| z_@Ca#yn^vJcPfA2p9TJe9q~sYeGFgV&w<~s_`%=*-1tw7-o<@5{Bf<{O`G3E_Tl*U zMe&zt^1Ef0XZ-3XXtwfpXS20FL@sAU;0cpSJ@Z^UaU= zSx9^U>>sVa#p%&5AO`=$QP5HRR}Rv?JDJg>nZ*NIwhc z!PN}EcWQp-mSz6#q`w8qZ{B42=2hP^eim~60r;10y6AT6Pum*RuVVF0^|P@4U!9#= z{?g5yd^h$jg+u>~ZmdtgcT@c>uJQZ__$S8Hp91nB_ZL^M7Nxv>O#Ld{Q5Wm6fzF*g z|HJug^O*W&#K+XnB8B!`-w#v%5kD(~dgi}$ zyFvf&+{{V)@@mEN-J9xXq5cn%WtYD7vOv~wOYR~-BkaJE0-p}*8bd0^|!Eo5+gS&f{$6B_}0K*g8Q>s4 z>@UXDzoPlu&~xlBU_ZaQg7xFYn=>+=3eRyd?iIL?=6;0rTwh+ess10?)ms1Y_rM3N z=YMAIN6I$=5B%x4(IaqIeu@p+}80Dp;J`u_K3_52@l z#&d=CZ&&1;Q||vU{?^sneiiPW=~r?2rutJbKA{irSBw|szIo+`NYU@=8xzvro=@I> z3F}7Oi+t~Uwc=;dI;Q>()NjPc@<0D6zK6W6<-X)L?x%RqEcj#ph5rBDyCs1OJrF;P zRo}&TI1e}Tr$0`=2JAPV{}3tQtob(N190s8xAsPl!2RUAD98S|;nNr`6-R$4FziYSwexY6JY*PIn zJ_Wxx{-myduTY*KZz4C?*MIcxlxYwAV1F~?a|-uNm)zf5{|oisiugY^{tJ+E@#|=$ z9EpF0gZ4q^%FP+U?>`v10w2VWf&2sim%c}T2b>FK&R4{5pz`gRY9n95zxTh3_Q2~U znTr?^B-8&oK21@(24b=Y1c%JFk8k<8y)!^n<@| z#{Sj+;imebw2!#e<-a0)(1-TD47mZnR$ZtF-q3UTeFN^#i2rTMHRS)>-?l0PpNOIb$D`{3DJ{PH`Nb?<8!XwcD@IF;Jsrj z{UmU|9&ewK{j=g1aypRb`sT)!9_c?jW`3W5_>YAg+}8^H@wX>M{$IH2V!n9bAMh#l zh5cUz-BBKI$2t-53xAfQedPUgQO?&IZgkkBsuc{bvWt+5dM}PgV1rXPo*X z=U;mM^5NM@v3nVF@9`r2gFs(BKV0kFxY1S3c!?ce@D2NGoTpaves&4*r+(mmjpqa3 zIWwjA|5rJWZnp9Hs#*s@SDeRu_Z;dWXYqFM1N(5&hw)$Dh29ab%qq}_=Wk=`&v7@Y z_%)uN@s#0L@Ezk<@M-I$(39hXe}I$ay&Ujq>*$f+-)%rW>0s^8ip+%MS0W`H;>M4H z?Rmf6i2FFof7aalwzhUX#_^i-duL*#BKN(md>4UnX5gQ|-&bqr_;EhB!uVGp4x8wO zJ-@l@9_IY)G;uuu_$!ScMHcsU)Pw74fBf;d%KvZko(S?Y!FwLLAKW10OO;hGTH9SY zm&mT3m-akgn@0S%-yX#GXg5AFBja4*h5Q0f&d-SN?oXqf<6h|neNmo*A0*EwmsFI0 z?cSW6U*R5J;3mjt+!x$U?hh0H){aRJ&qr_YJMe!T{${){BmbsB|4+R=Qr`62O7|}K zSMWRZpFw+nGs;E&%st07-shnIVbX60{3FKHKjP*plw;gU$}{^Xf5bmR_xI2n@sGfL zkH|UuXZ+1h_J{9(3+3#``b&s^#8s>xRwRXPF}fSt&pD_)}KG` zgZ`-B#BXILi{J0r}$mc(b!d&ZE%3%nuDl zFEeB6XE8y210U@C7;h^9pDVpLAZNTkyV=zveh^~+;9n#9hk4WbPqbfEdZS+E*T>_N z(2KVU)-NNO%zf>C$m(4K^#uL4U&Hw2{!rUn|Ar2uUrmV${72M&aD2CnK4qyVzytHB z_+N;9q5m@V7xpEE`%BWVy+ifwOVFR^gUwB(Uwle{x>>&3SW#D%M{z12(&#h;RG7sD^_T0+HCy)4FIG?=O{*wSCtKTAKQ{RckQ z4#xLWOYbZzD%|r%#KnnWE{nZWn2SC4I$HecVopLPmtMacI^2zl^ zHmmc)cqhgWdD{v3ApP;)K-NF)kYBDpnkj$SpV;{DpM01EKl=;UJ5>J0yNd7wxzam~ z_VllSyovwUTc8z`lUho5Qg!xOXyP8-f&cu(+pmA1G37S_+g z`cZ;Ed|$D|t~+4g#P8yh^Et5x@V^@*ejl|1FWi4yKavkPpJKfX`u-a0fB#3BIkB%< z-jBonjpH7h@_Uc>JD=ai@1x9%ytQ1_^yB7vYu|+a*6%|6EGP%Y&*ENA`0s1Nc>~u! z4J%=vVE5znr_9m5sr_re2K|P=MF;)9U>94B9NF{zkIN;MFRXjHFZ$^1qKt0|);RU9``rAU#FaX@`1`3`WOCPUtJRYdyjSy>$6lB=X9A5#tp#xD~J23w@@VpH3(tFU$GW;_>pnnnW%b|adQ~sJEkD}McuOr?G{2*uWuN3{Ta+jbS zWBzWYyqWWvD#QnVuS@U8G8L7R#&;?rha%rs#r}yuM*DZBe3ZKnFb?ub5;QTr46VJm`{(jB<=^Et8&$HZjQNE2G0R5i^{q*;H zbloa`7p3!Vb@_iG{;CeF3b@?kFQZ);1=<@^r#Z0{eV zJ%v5A`|tL0S9KZZx$3{r=U=lLatC?Ie0$zU`<^xSu8sZUe8}#{Ta5i{H0x2?FZxGV z|BjA#Aa__ltyzmyMf?A_w2XcdQ=<|AC(~mdOd-#jgbOLlgZ> zkQ)CGUxV?hSOd5L%(ImbY0vr#OZ0xxv3@^S0GIg1@!pE{*8v~vC*PG!QtY4gtH`9m zXZm00`A*de(sdd7C0+45YGa9<_-PpV^fjhk_&vb?t8+%+zW*KgOTBE@7x;bT&Yakf z4?hH-(C?atxoYPHT|dFT`QkiZ#d_sRL()gTi%i!f_-NbX_hCP%mHEJZza;D1HQzz| zO;XSIZH_lyl=2l_7{{_Jy)_bV;4S%m0p1TSTGJ!-)hoIrUF`T?p`XQF6F-01GTIv_ z_^6-7Lj3$?^WJjx$vpfs{ww3>Kj9RC&lh)>aDVYo{QRe#9w~pyA--SSU5KCm#LU;? z=Rf`QtmOaM`1!80{fS58=RfTNo)cV%pa1lviH{Hc!~63mmrVVO@$(ly5|{p|#XaJO zVB?=ZZsM_f9*M*LuZ^Goq=}#Zei) z{r2Oe2ks3$zbQVtNAZ2^afm76emf>k`%k$(`2pf@AU>_*{Lv1Z+BoDkKKoO=|0H}9 zKi~GZ5TD(n_&C3*e-p2~-t=$dq5oUsvp>K?`Dx>``^@-jEgrr(+*PMn+4$@}Uryrr zKW6Y)?^8P5Gx6EGeHzc-j^C!gDSp1iI6m&!h44Ek3m-e!iv0Z{knQ zBmD6`LYJ@c=daf;$gh=KFXh2Y|CGP{HRoT)tMcIWsvNkF#?SW}y?8_qepCGXMPB#+ zm+|wTHg?td4e|5eaw-sy-yA>R#=o`kZZSW}`sN7}Z^Op%{aXBB%+HU;54LfDZF?Kn z*T(T(Vc^;QnT-ehq$z*Or1xsEzQO$Sw8<}CNZsWcKVRchEO|@q=5jM{^dO!t*9kkh z{zLrsoRgIK#BbuPRhtz3|C;MhXNkr;^PnBq4X%mDkMk+1_rw0u|E79LmqY)XMfe_c zWPCN5KiMDSi6btK#GiLvjnB{VSN-7sa{PYr-uCDJgRYae@^(M?{bdMsd>!BchymTC-z4AN4@m>c1yr#;`-Y-`}TaB@%J6X z-+#ikUyeNB+5T-j_su!jag2XG;$O2L;4l3@ZhkjljXNXdPvJY#$@aggrX=O)U+mA5 zH5Eyv9^e!5A&jXe@?{F{qP@WKidURjjtF3VmSN%2MLH>D=vc1KB+j5Op{_Hc9E2n0c$Wv;S<0vy+h-YKlhx%v+ZBp zp>fG;YZdPEJKX(*XWIt?THduoT}>gSoX3Jm&o!iMPyFM- z9^|8WfwMT(*$`HE)PLX?AUuCZv@=~-@dS7dkyLo5eHb7~fzV{`Xy=Tcjv-Z;VU|y-oYTq5Ct!_k9OzMQ)m#6d!ZG z7U)2pc(nqqvn18oMm%Z}KT-MP&mhnBLEj-);1Ex)6L7vm|6ZqkpTga@5AzHBYL7MH zoF3;D7$4`?KwWFmbLZLVLaX6x3@PE6^9jU1ob=qOh5v4!!q2oTyzi6#R{6NJn5 zP9U96O8bTP0Zy;s`yQl(+rr;b1b^-QLSu)*O=J}A5dA;^&yG*pXVdxS)})7i|Mdb# z{Ojd@HgEXex=P_D8x@|6ANa)*3b!wzaC>_v7u{K+{^Mng|3FJo^rL{3bPfTYj(?M! z4-5RJbiO{RaMS6ejUO!Z>xe1bJ<_fvzt_kU2UevRFk@&Z>z4Y&IYn}A+cSYFV zX-(%_#{jV|c7(686ftIfRQh@c<#C-~$1FK_T^ZgHy#zXk2b@%t;^=lHHh zoW1=0Ajo?i>?`%6^{~aS8}SqH`=Jq6Bo|o?sUs&4L)zu2$M@IC!fo9E{ z_`*(j_k_$Rk^4EFA9ky~vhjbz;hgyW7mXd-b5!-k#Fxc{0=Wl%`65#K@9#17Ccf|C zJzC$A*ZSb@9_jDTJQyG1+xDAyxS{*dPqaVYtnGgY{1N}kf1*X(9X+n)#S@zUKI+S? zKd$f(8oUk}JXjC^Vt>)#x5wDeys?9SjPvOl^nd7}wr`Fp{DV%NZy~I92cUyaX$k3e4oD`i1FKZDf zv|sh-PpkGrf7d#}pey{wnqA`dHtfT9^slW&J@5;)YaYKJD)q@eQ*Yj%^qTdo<0Pd% zvRCW>!RQ~(ou$0K06Y*sxW1nCn^*lK{exh?(uZxi#xH#kzxA-lPoV&PMZ3d?HQif} z_@vD?ek%9Z^YT8Wu3zEo&ABKmi2rAq@J;;G{(fy=C}{s0zc=DPd|2}~ZgBkxg(L3+ zasJ#?)O@k1?Im7n3**1?d@kagIAO|j?iKcH$0zm;^eYw>et*BFg@TUL+P}kxHGkrS z*4IPd@K?k4H+cV!v1nZ3)dbLf!5cbv%w@ma?~{~X?BkS=+}Kh%%*Pm_MJHK3nA$#~S@Zz$(_2`8V|@d$k| z{<=Ete{@vK8(=4h&)>3t&>z27AmfX4DE>`3_nN#Zw7qu8-9bJ&t}rc$MG2XaYjeA9OpbT?o?_L@ea}w|CRTz zp^)NNca-0yR$-hUvc2VBE8?XSKg;(#>?!jWKH~RF-o_V>$o&uXQ`a{Qqguab&y4ho z`CQ`s3jP>B;5*ka-lODS$1gptIrn|VU-?^y6SZr8)aTqMtASSr=64}JG1`MJPqSR; z06D^S-ABxWe!_qB=lGg_=>c8FS$;5}@qU$mh%fO?ystuec%zH)BTnx|?n57bpOzE4 z#WuQSmS;D*(@brA;5gcmFE;LPGujJ(b^TM5Ks)B6XvZ}8iuPmP7vu04)5$||e}laf zkT-vU=kJuCvEC%`O0C)x#5{$4_(123tiR=a591$`c)(80i5-*DZeW1lZ$|uON961D z0Q$rGjr<8MFAYFGkYB?4Gr*7L^}X1cft-9-7|2QePV+u2nAi7V;k>>dOXc;Q*f8M# z1^jPfXwP?Dji+7l4~XM?=I^?{gZuA3{=SivC(xedBWG&GpM>~*4*%Rk0~P7F@$^g; z-(6($`koB@=ftxy=l>WIs{R_}PR?>Xq z>711BJu~4c|DpP4bYG1)Cr=lpysxD7iIV2c`(0H&Du~~ir~gBth!o!wzi!|^e5_0Q+kX&nK-X0Ngp3#Tm-sBD zqo{{p2jo=VF9i?GEy&Lmv@aY%9`M44FmBL!-+;c~6aQAy_h8Obo&wwhlfvH-{@&h4 z7++HQ_YWR&Jr3&k7tt@q9qjM%I3H{L66$xnh&=pf!UtX9W8VP2hkV}y{?xD0qf-Jm z)nBV{j-Vf*AI5(b>)Qd)58p=*6g})WaRe#gnf6Y+7j^^oX{dLEQT8+NIK1n&&aU$QG-`M`r8yfHP zEae}3Y8ue@c48l(Ul%C5)pV~XS|2+$Rp+D3h3e& z`yn5Y6X=)Nk8ob!>m8+hqTl$+t}4od-CqRvL2uFD(9neUR!3{Tw-@sT&U3~7!v3Gn zxM0v{g(CEz{KvG@73p8}ZyfVm7W~Edjt*E;4$Lu_PP>> z{$A}>!9Pm5h1`sd^@yCrn~)dzzXSQY?Hn6Z`G~f4$#?bbNLkPK2Z)~>ZGnEHef$LI z2R%74rgX&nm!DvN=LdhPXwU3Br#k94zK4GO8vAeGx#P%V{NcKa#9xRaB^~col>P&C zt|zd#H6Nv2f__5Zs>a>8=RtHe|0?|VSM{TCo#tgizc(rJkDf$>59#D9S4J%i}IQQr8J`QJUg}#WN^rdqH`fKDX z8d5*ZAms_;q<_ye>_1*3yMiIg8|0|d$RFfM z;`5e`?vU4Rj^+pS%d3pLuZyoJA_Nt*|?wKj8d?amJ%q-%$RbAFz+8Z-V`U z|9*Jgr088;8{|vu8`ocJ{iSx~SszyYi?nF}OHBXKu*!Am2+9FBauoeT59vQO4f=+T zD?XPa72#VDDe3v&z#r#}wa(iimD|e^{O&pETC(zIem^XTdVXJL`S)2Nl$nSqh5tZLBYhhn-{(8Ql%cZ@%6zuZcdb&0LK)#|f|6R&xzgEsJ zoQD4~eg~B6Bj>Mz&Y01Q`cc)h(`G&~>j#|Q%!}Mv`Mqr9Z!hc%{ogHU;*d)RcJ{21$7d=3 z)W5vGe~WY7jdo`#kC;!ff0p%ac3$RqdXW#SLH zWWQD}gOEqsPkEp9bJ!OnmmwpUmxC&gnBTsF{q9q`N8m#~Vn$vbl@Hn9;{NKKkq;{umjD0gdSre$vmiIhf6H&m5A3UR zE&_Vt_w+3P?fPrU;yZI<-@V`;=F2nQE=eyKc~JR){e)b}`s)nr0_5Wi&Ns@iQz9R# zpYm=_=4rg25cxnV@kt<`3CacZ@1mJ^L&hHbE$9RL>gv!M^q?8AZFBNev zUsU__b^_}N$amsYt%r6J_6zgJTL0U|-Ude$PJBf1weg?QXis~W94d<4s2hE_J@j)x zzkgJYxPGO5NL-wA`9AL4Xpg+(N@NJSgq^QXLTqn%>?Kbb#YR5`SEN`7DNuY*qV zk@+)azrgr?Gx$OjrD0H(&Gt0UpbGmeIx@t0sSDKUphZ`aK2p9dN1e$ISfNyq@MAUZ&Ch= zA|E(Ml6PvCgY!CnqJIzIU%m)*Yz9YkvZh7&Q-X|k7Liga_ zob0nH-?Y#1eK|Qd2xh=X*kyYjBK|d?&tOpH5_%_cc``mBvsLhwDAnU(eFxju~dKKZ+!`v)gc(0uT8 zN!DrM(-qgjc*K7M_?Y zRoH(yXYe`aW!hQDQ9~c-BjW>ntWWzW|FD;_f|kRN#k~Ikei;9`!=M}IRjdQN*!T5O zKmJhmPd}l4#rAi}d1gK32lU-n1pcTu@lkyT59WkExZjcQ;s(R`EyT~);Bd3P5ZK}KV<#N z_GbMW$9{p|V}6$Y!$u!trzSkkl5%g~C{o6+SX?9Wm7;!vKJlTX&_9Otip2Le_T8>~ zgV`RB1HAjj=7A^q6BqyHGguFE{d{?NPWY6?`h)9a?w>u_|D+BSMeft^V<-LadwL?@ zJ9Yd{nB~yR5Xvd%!9BVT7yZEcupv7o-|s=n`nI-`oU@H^eFFNVyz>G#*-dYOu}*9;?~5RxD=z2Y@A_7uAv?Kc5T{(Zf4*BxH{zo%& zqBjXMkF>QUCB6aYPpl7}BS(;j+@;O@a56j#e0BfN_+Qyft(^D9PE|a7m)Uj{{JEv) zx7;5eIgb1vV_x4kA>%xTl;dRlIlhldWT(JS%r9Q>3G{13UhBKLe+|@)Ry>S*koJP^ zsBb=^bdvL_FP?BhEC)UI0q!lFlhhNA&zL!^Zg#$6Q5|<6}bzW_(u1VW_@Sm3g-?|KQf}Jz(@R#BS-K)5&n4e z6XW|e{0@=OTlT-u?xH-rBplxM{4&DPHd{C)Lv@Haqx1@p&M ztdAnlFW4LU&y~?`XlNerDZi*k{Q8KopCe;Qu{-fl&f~NYKHi_=d@4MQ_SnBBF^@QS z{}$nWh}cK)ANDtndlTn*ygQ>G4CH8N7~ieB(reETACF8*`D5`3NvnstB$fRk?2C>2 z3qMcrB~Y;UaWa2EewgR)aYl{bX2ke$a{n-m`rszcXNa2_EsCE-0x9`n)^~weM9bqy zSso5*p87@mREIpv>rHtoTJ%s4*uER<>xPB)IX!2?cl5^~{m|YY4%W)~pR`|+rk|qJ zoBsVtgO|WrnuZ>-UgEn_e*+Quz9nC0{5RA1p77b8_(^-j*NsYfOFmYg^hBRt@b3x) zjsIptL(y|*@pOUyjFeN;ztf03#}_f>(d2|D3O^8ze;V-XQO^F7X8cV^AEF=pBcTtF zPw|6YoX*$D_v)X9_P%sDDgITB3+-p+y{+v(f^xzq-8t^MM3;wtD6sz=zmtr0iT_n1 zu5hx1gE+}tzp_5~lJYm+px-s5^gGi&5YEn5MKSJ(@r$&0So$>s9>>!{xa4zG;jlgM z55zL2U&H5ClN$U38RXeMCHQ;tZIUkd=lP;_3a_q7;YdFZ{7VCkLDlb&@vm$bep7xB z9~R^5kUZiyBc=am2L7!9#0zKt9DgLN@PjQC&z%7LgH4=b%fD<$$CWZ^BhrWXhx`3x z^__3Re-Y*6LooQY@%x(0_* z)!3-t3H@+Cp4tuj1b?Jf_%)LL`28D6b^XftyRaAVM@sB2%6Hb^OYGxcdz_^4yNmDc zk@~FheS~(-`e#9YnlK*HyA3Jn%W;yAjK9hGOTR$3V_-A(?R23aoyC%JJhct+@XFI8GJAP6N@GO ztuJvZDeLK0e8=*0#$SNvZ&yCY`6BvbdF+%c-vt4O>qqg=nZ6x}n)~?U#?NAu{sCAo z?L_;{SYKp2)ZgOVV3(|;i^k8wp5Gm#{{_x7aDOKF?-@iM=eO+NkKbR7cBubF;#5xh zKWO|ZOncwyQ*+{%ame^p^csH*Ssy`u;BO)KZt;?~$Nj(DH%t5v$nRzA&ZtKc{A7Jol(SS8qEbgSB#h8#I0?t;c7?58z%-&p)z7 zmSwCZa#r>IY@8Fd9AEY|eKjT!PwwmYLfG_&nX8Zw03z&ycJ~)UJ z``9-0U&i=@;2-@T3ddbf`A_Hv0DJR4>iK0E^1H{}YetXGYMhyY8KLjJ3gB~nd=TaE z%jiFzlYR33gSB!G&+%b?@W+cN$Nf>^D9ZofSG$fKniKvDer$gLdA2{=%Mv|2O^zHD7ga4mrmT&kNqeN9F|%@|a z@rs9XaQRSC`XPVdKkTH66%WrX`;LPz*x&URF+QY*e!hJJIq5IXeGu{BeiMEKO96ix z`y0rw_;;iZP6%Iu*iR7-$4~meUqbHX`wxQd7~f^=$9dii{>lCO+eeTGT*#UDckDk3 zI5K|yePrvmapusR@U5Tc(13F{DgGx;kn#e4<&FQq`9qVI{^Y;U`a@heG9~zlJb{kH zZyNN4--`M-@ctBZC>=pc_-_2~xIRvi?~oVBiTGihKMXk79|M2h-}xI2|E*ucDaw)D zzd=6!3cpV=;L5#uKjn(|6y*O6X%G4B^W(lp{fj!(e`1t!gzwr6|C^0p1N=?ZssgwN^b3F(LYYowog?^#^vC}TPVf@{)+#fya*AQ)*6h2)? z`x^L%SigpJ%cR8d8ese#wCDO7_YeMH8{opeL=Q|!yO=qjC;xqrU;O?u=^0EzZp)Cn z;GS90qaWgaXqw}r{}lLF7putrxE?9jL-&+^9=F}axzRvpx(GQy`;-^*gZ($wuVVk~ zy+k;u`~K)r@EP!AeTM#HG2Dy6A0mx=akj^LUH0E{zKQ*RD2Veuo`3S(8*mfRDZ!&n z&R1>+Lgu_Pf^y=OOwUODf8+WV{0}3~@2o=Md$q^|@2b#lI5l>XAV|L49s znE}6ezFK={&iVYdug;v`L%+rEBb_SBc?A4Fe#H1WsZ_~R#{L_2PW&o{jXrRF1OEEM z=014{e4wAeFyx&45dHfQ@@dYy!{k5g<`C)6dWr9c{Xrh|CI5JC133zle~?qI&p5v} z!f%J`?g;%PP#$frHS@<&nP2L{6{$}mB^`oI7$?3H`fr7QDb9Pyk4(5Ed`NVt|Ak$j zL=SX{eY0_l>Y&eDue9-e{+i5>;=d3B9)#bB^N?HEPulw%8~5|%5zra^3>85?q)UMR z6`Ws!ZgM|v>1OE#`y=vm@+jyFx+IU6#Bbv==*0Pf^rQZWd?Rn^N;^UNSouqwoRaYm zAtip7Nk4qg^92X%dn@mWlkn4kT%1hK$oGK%>ng0DhLC5w@I!pC^rL>9Ou8=5qm!4F z&h{Ky@B@E_P|o(`5Amuq{P_pIe}H|qel^L2=7)p0hk3}qMg7CU|0wJQ>^0s=NecTZ@x~VXU#S0- zzd9`sQO_~o$^8`8_e0cY)Q70QD34hE;rKwGu<>h2ntLDX-*V4=SJq!=LrU+sB<{h=`0gU@Bj9mRoS{^YFJSyk>m z>8+@rOJh#@5&mQRush<B3)bVy?hz)c>cHe zs?hIk>I>E*7dQ_fJ)d^*o!oy&e2llD54>MI3%kSm3-H6U=ev+^pY>Zwzpe5eL`pv4 zeo^=rI;(o0ej9!rI7bK$gO1`Kc1PyNbY?>A=>>d8I~6-g{+aW2+7Dwdt=?b2Jv#j# zs6XJp-}*J2gIqYcCy#NR06D|__$BWz>W#jGPU7eA^tn06F@9fr@$ZTKh~?2A>{W0t z#*dWu)Xdxa!L!ZC>-sGr`#j!Hqh8J@seknU;{D12^o#N^*MZPuxgUXjh|oWQaJeo< zd2nsf=pWWcsK3nhF3RN|5Z~c_wCEZ5OZb8a8GJSFrwiyLB(9OweRpF1~?dp7!~O@CFR@+5IA>=08Okfx*+1s{M%d>P zuB|@>>C=t)tYNudhJWkDDbSztg>hQ{8`2N!Htu&vC|B5jj8dMEvVHjm>bB@P%K0ts=i?(4!9RqQcwQP+`GNiZlK#W=m!RB*IPXC2a9<ruSlaiAX!TtABa+b{RKjSuXf_(@zo zIVbY_3%widliTXC@j@b8%xxXEy+~GTsGul_I zpRvCSj8fjfkMLMh>`%nV8P6xCVPCC3Pu=K@+R5QA5BZPzJeNb4x?Xs`RLpc5P_c{pE3PGek*&)uPZ z9QOVsbaGDS)2D*7!q+h0PZ|654(T&ADRzl|6zn&0R#PKifhR*V+OCB8759F@;iT~o z+Ar&e2>sJQ&)8YT+xkDSefQ^mPG)#Y{2fAOUO&~FGv^!K(%#~ehJPgQ=QAfKMIKH6 z&V?cB?UmkBtv%ANt~4WfAU>9~PoJ5P??;Ea5V!Mze}wc;`*fzi!0N8mOzgU*1H z$xJPxy@h>(e{&@8CiWd{Z}+E>!j$y06zdnxPl(qp`qYea_8Vm$>j0r2>aATu+z>e* zO|%rnUxxM{zhC1ty*VTBI*_tG&bvIcC+*}9&R?wmN%lZV+9O`N^auGmO8gEVMmhHF ziA+W8M)F`q;HiFNf5z{DPd~~9zL`&DeTm=K3XV;Q-Zq}qG)$efa`w|?{8@B=74aQH|I{z>W5GC2SU(rQ?*@Gj zWxCY=BnrC2J~aXk@5y!oKj*JPPJJdR^_l3T)JKiK2H^jU=d1AN@ZQ3GYC~p9=sRZS z*Cl3s(v+Ez^0RiHJqdb=eeA~mFyc?t<-~90P`C?p!#-}f=UaViM&Yngd`?>mX zm-b)hn%{4Z@%^O}J_G#)yoOYdr`(2p+{v8Gzu?cWF@O2ao~cN_J~azJU(ECHqolq2 z2l3B<{^I_KcK2+l2mM^>JvoGaI=MgFFYBwCP)_X42k|?f zaex=fmpZkQKI^ZoVtmB^2mImtIrmwC_v$mxB&B>Ydv}~4LH;B@+R|qy7dekR+x z5I=V5(wxMP{l+(X#Lr;y(yzyl^)3D9O-#m`SV;GEdTH}(1F1Yf^j@m%6lJnuP(AMxjipXpb8UH{kd z{1NekeYEjZZT!@wixociUsXSd;H`c|@Ui{Y`YJ*v+rRs0|L)iOf6DaleWd??ZG2mc zkMCLKtJjQQ*5~j)wfMNOE99Gv^NRIxnDK30gU^#D&g&wt(&674-}V6>6_qdb5B6Dn zEFOyt9yY$M#m8NwbnzHG?wR<*j={(B!KS|{{;0eW$da=m#Q(dF_ApHN62l8*}Zd2k<{aNf#{GA^?R-6JV7$+=J=Ujoz5pI-=gd5T`RVTnzq(rE z?RJ}a#Kyz@3H1Z(M~|!XNsUM6ftUPA^vV0fgJS=Do{HGFMTk$!xVK%^IY~LclD=ps z`u@_A8T>wEpy2hm@;&Q${$%6lc6S%?|K?SXdDKn`ePLf$R)c?l>+`6de&b>Is0Vz} z8;?6v&3SLtBFv{)=h*%qN1p2*Z*@`NtiSKpIBpL1zgzHIyQD|^t)7tjRf}wV)0ot| zrvGP6zctwA5T2bst7Y7E1rN&E?;@|JQjhafAM*Tu&03DzUs%7s#C`Zy+rFzS=LD({ z{}w;k!uFlsigOEba_#sRp`7hkubJmKYhGLrI#$;$#BY6krM7zlDZhKc&-u`)5&1*^ zn0E#K>h-hI&hw(mf$e|g$|)zX2)`Hin8JAy>BHlD#?^8!QkG*L5j>?m`1d&SEU&57 z^m(LC$j~41<*e5JJf5kJGUAIZeQd_j^#kM!`MtyQs)%(;E+G5`|7%yzN%=QlELJ&?uV>t%6L|aq{hoam{6u`-=fS^Q zh+F&I;)=kt<9}4|t-jm(NA=$7yRCmz@2$Su`bYKN>btFfRPSv(S}VUcZnus98Zh<* z>mS*_*?6z;|6=^#d8czAs;2i+w>|p=}Ar?F82?QT;>zV*g%VQW1SjFwS*o zV`uYodd|xB(^!88{V0b#;hYlZV7MnkYUD%Cf0r%S@(@y%N5KbvXZm+y$g{j{eXYpf zD@z{eH}G@Tt*@;iey=T2JMr@RF3Gb!?Z?g~s`rV+jOb5Nh*;{mO2ZU#Tf z8b5X#_-9|nc(8v8zh>}6%J12p^}E)0N&l&xS|3BodP~37yE)q5s*U{pALvihD~hM- zKhV;GdiZ}vUQ;~dyB>@m`1=}=C%n{7;DLSOhTxp|Pn!M%(V*gu_)zk@H9?cIf8y7; zt4GfL5nrmBaB@iLr)lwzM(3sf1}SgJXOKGZ<5vGO_{Y>K{7rS*@3Jl(hr!?3(y954 z8|UPHAeSlC+(G;dOaB8awLTu#ema&Zo~D1_X5@)iohc92YkzEC#`rV!+Hb=aZC8)) z9>U)rTUM#z@4`xZe>%TR>L2(gzZ%qjx3N9^&l^Gt-_kD}QurMP{$`|>f23c1U6&{N z)O4X8q%A_fZqzq4DEwer;Vw%nJj?$rTNJ-^lh$uP@L>E7+ShGMR!0-lg>84? zzY00&F!&n!JMHlAru_}U@0fDA)qH31&*Jxzpzob;0Uh~d z;QMx%@n^FNr@2w#u>Cap-`c4Czajm%2pp$zA^vfo5%B!UXy>bd<4;99UpM{O{&yqK z@w9AJ_;0;gS@aP8{+@4?gf58dF6o=kXx_F*e0F&s(A%3^6iDM<@>#7n^!I0abX>{A z9Qd4Cwf9ZU+xA~X1n6o)8j6> zl~}l+cHY?2vnUFF?=f<_d+*$$J1xRrX}{N$Z`)wx_|2I`x0>|*Q8)P4*r@otYU(q_ z|C{vbz8Z1z8iS)`O-!Qa`#c8OGHpXp}<^5YFAzAoCon(Gq!!r?&l zZ`&rtL*PTcVljokchkJU%{^R?_D5b>vIg zXusdIKZKNY%=OJkyk)8XJmMTgIr-IR-dWgq!?yilsYiTc!a-c+ZP5q#gMZHJuXlL^ zt%$E|#|K483YsZnKH`+d3*n;-s38fF{?>l7avP|I~F{y3;)>{g%r$^!J zU*>wr2hyMXJG86|`DlI{+7Yg_Z#VQo|I1`Qvw77UjKhWa({H}1a4h{cB5vcI*mNOk z@UVOm{-XWXu;NuT>F(VRjSu+0{<^~3yle*g<VZ>_2xZ^oNoia;O05OKNeHC0}ta5{ECs;D#9;Bbo~2FD*jd2 zAHN#c^3eTx^0yG)Tq|*YF+S?QFJ#_-4B(!dazZ$M#J9HmKY+Z`lIn~D4)u29#!1BS zd=URVa(`Cf!aj%{u<@wP{NU{E(EhjNa$=uz4Vt&```R_X|A_0o(>7h$xUp8`(6*0n zQn(#}!?@dQullR& zq2C7nzAf7CZC3kl`)>hU>Qi4@;ie0gexhH}e*Bx!PPTVqsm_9dqy7nazpx+j3Vin& zxquu99`=1sYD2Mx@$uP?a=T}b#eZ7%N2%1j;Ey=N(r#}`>rH%h--czF-yjzo?RBlK%zIkD#BJuOxnY?mpxO`m-_aihd)0wag#cWiz7pm{;Vxh4|g>Up~k7&C90P zZy~=$>syQ-+W04_WuPzWo13*heSc2$N&JVt@H*|wAdjf;xIZc7d$RhS?SJdC8G(=A zaghGE8GS^2qUUfw=4{zKA@#i}t9rJ>vJH_((cv!6@j1KT$1m<&-EM5 zAGT~!yYp5K^BefS*QB(6Rd}D)biYU1r8XC(osCn@`EeTSmpAbJe?&XD4az+Frlc+T zFOC1Rz{9#HeLp8~;+vBT{quapzQ=nb*Rv>)ZOu3Co$}cCX^yx?S3CC)yJZey2eCv--Pko#tPDS<_cu(bTqo?KREs0vy8K3CB6& zYtMfpYizxyIdi`95AK}^Uo7M0`5N@&2hfi;EnmJ}+izN@`5&72 z>%q(n#+Amq>Y~8e^Rm{P`&(yuVoK_p%{x8BdzbjoqJKZHc6whk@X`OZr+(>a-)Y(} z-Y@j59_!;wmiaibk4De$-8d*)61nk?EepF%sPaeU8s()Y~on?~F59uWCQ?>P}a zgz$ZNf32rn?{uD82K?|oa8nL;26ANP7hfos1O6$>7wj0HYjQk#{?iToa=8lf2y+2A z{C$Z{JZG){#xCumR_nA?M|MPRiY!i*vSt&h7b}ZIAnJw2y$^_c zpXcX{KRqMgcWlt_vTg1m!n5}S8#c_}y?fWG*_oe__OHFB`6Xz-0sRNt+#~#c-OJkk z&Aj^<$7$Pd-KyUw@}MiqJ32Ja{u%$Ekk3i^#_ihvV7_A8(?4P9%P;Hqy+s#zZvJU} zgDdY0*`D%sI6oubZ{M!p4fRjRchui9>g#bX#dnF(t&@`O=+M;4?>5?J&}ZXDZNF}v zrojL2>7SUPy`o=F8{`}GfAtmp-nOsb4*9$Ot6f{RXuDTl(bUFwN^YDI|NXjkNdF`J z@A4HHuiBSB|F&)V{j0BPTEAsR;K}1)rv!bDr{l4?pQ$kUzZFBmJ%c{#$Qp zyS~?Q!k-?~k8K~{pyk0g=H#8qo`UTkzYm7?N8g$g_^dZ4de&zISNPyujUCP`vxLxB^GUcNOoyv-*Ab71$5>XBD#g-MtFiNBsLT zS|7ywH1->P9r6G_DUpBRci_!=iR%Kr`hE7le@CsrvE$pjSKAlNxcUx0z>nh#@0$?( zFh7eN1#yl_e<<7j=w8?tynj2!cfNlDKc7C}fqLD4-}Xns6Y^gF08*|aQd^5c=O2Rq zgnzt4^GDw7l767iM=9qb-;kfWJt&9#>_4n{CBn7d1^+0Huiq7YtKV3Xca5Xw9SHF& zqy6!9DF0LVt@Y(3PD})TWRyp%Kajuwj{O~JRJz9YPssZtypIz3hCGYB9)ER4;KcWX z&+vZ(eMSEd9n^LQi?xDBY9H#sC;C5?VV}dBP)@zrJu7i;=+DLX<(7U;yJiJ${U-hW zy(32+(0>}^J9J3%>6FrO5GmS+L7r(AS_!H2d4C9yirKzCu)l#hJ z_+#*wg8$s>f?vpq)$4c7^mgtX5dft-V1-2Za?nM1CO>sVaJ zaoETK`PYs6xe=6eTuHuzfFE4;XszIR7x%v&@PBl$OWp;vc!59sY8wyZJJ_*%Nk`xh znD+=x*`(0vB=a)9_*Z`TKb}B2;TQ3)hV4U1{f_(te!k;4FXg&Ajg;R-QO{KLkMesM z_@KWG=?4F{G2>6xCiJOxn#{Y1cpQG*D_Zj>%=?MEIr;qrXK=70eqkfB4*RTdym7)4 zSlODtUakCZ>{q(ucRVEiXOw<)fB1%7`xnz5ZL;pG3CgrJrsa`gcCBafXdQBHn#_%kV!w&i2Hg_xIBg&tSC2 zb-Li6-sb*@?N7u1t&BKOpE~Ft@-dR(#Qa%dEHMGR`wQ_l_s9GW{sFIYe^feFk@9}; zl<@EDiCV!^=^u1XEz1SCZW|lLxL>%^dx96mfG73??+Z>J?~%A^qpwxOZk^ensjFJoNmn!qcbcB>iEI^Z#upwH18F{6D&VLf%C;zC0oC-L3se_bYwJI`q3t zrXqfVT;F@Hf`1!fU-4ezq@l|w=LdN|0Q!M{CCm$y=kN*84{@vp4E=R|5_Hn*&>rub z={HIL{!E+u6JuX#-<&hsa)Qq&=MBIuVSeCy7CC=HePojx#ejm@S99`yw{CZj!5{V! z`#a7HY!}D8z;>yK+8404#yH;B!tRbFdfZ#j!#+s+paXqqVE<>}e@i=H-y5<2cL2YHa<(6R zZARofyFpX&kH`Mw)Tx}yxQVAS^We*8g+au*4j^9m-5mIb{)by8#XbyX=A`~~zvh=1 z|Cx-5r#-rTR^;T&%d^7Ad$nkf{>O}doHg>FExK+Q?-en=U*r9v)06@|VSlXLQ{MSb zYiE`6FG_xZ9-=3Z^I^(6-qQ(vu44Ui0`TB(n>{uI{qHYWIfs4W`o)1{-|~Fx3hLuV{?kS;c+af*qwCip%0JpQMd!U`#6OF1J!9mP z@)wQHK|b;Bf_ecx7d=4A_jRPN$UXZt?`P||KE`?<;}`u+;oU6P6LIPR;6{x6tN!DD z)yVtc@ma)QyV48&IcW8V`WG|$RS)^+J|Yf%ARL*$fFJdN>lxVZ!y?C!cj}j=&r^f5 zq8FKyF5X{U=^d$8Ij4Nle>V<&AiO%1i=0Bf+5WD(=_lmxu$6x!=Sian#DALmOC#^6 z;z^NztADco`6A>rpqy|=>T5j#$UXG!5b>1wGmzggGe6t7?!yV_3EnBo`UCx+G4r;K z%YQ1~dAr|3#S|9e)ev3CQVSW6=$~!23JZk4B?cV@9vC zM&8>T@b8P;h~KF4d%9oSV>-h-6w1HohhOvt_Ps>CfqaXc!=8$Ly&CZ}8F|P1HPOG} zl+JIQKe)eXH1hwj{!l*2Uyd)D(s>*E_@k7I#sTmPdScdxeyb00%0K$G`lI~E{A%T5qVf*-j@%Xbzh2lg!L)p z>33B=<1&AQj!ww_X3(t9Mh_zoc*7X~^fmCO&HX)oe=4YYl}1W=*Zox_kioqL?fPk? zq6eX*c?&WNN7s*3i9#$ z#3N|rd1n>ZA0foY#JUCc_w=aB{ZK~NPiQam`xztmR{ydsDxc>4hJUPI^TW8v=lnu> z=X>c-9JEJ#nxI+Fiu^-v!^Jr-<496IoU4&4@b63VZ}0@lVdu|m1;4T0;`nJ_V;!0w z-ICMw%_~R&=Uy@!%-*0hHq3$^6qLe|B(1?84Fv=*RsNscU$a@k8O$!|O6`eKdp;_9K&2|ICcP{+Gx7lya!(E$FY6n??=e1MZ9)=e{E?)Gn;MEQ5k_%HnV-WUGd z1is__N4M~uc+Nu)rTxmkd`#s&ey2_7N}R)Y{JzQPFZAg@k$CDY-@B6nsuR9CI{x4m@?;t10Ga>U78NVLEKMZY) z-rD@#AK}@y&-t@<=iap)@$Ylr>Z|m-ZzvigKp^WBF10sKQsPb4T#)XyY>YAR9g+I^wWPXJH`Dn-$d03vscg%C|A^$f0V`)F~``*7> zlX2<6Fn$NVz>cOA9{UHNKkiVzxyNrGk z9`kGDSA$%_p03b-LOvs$kN!`D7yra5aD4-Cy;ye z4(*}zAL>W@BJjIOcg(DlC3{`rKgNf@tE&k@xT&!0+iV+BZ)B0`Oz7 zqvA)D6~0B}v)xIV`O_%<3#?lYPhtE39%@E!D*5=+|Om2k((rAffGYhh3vzia&8%`I$#axKY%@JQ*$0KHlHc zCiA=T@tWRmW7dnrzrgv-N#GMWoZF@UkSVVT|0%z;Z{xWgd7quu_qQ?s2qKU75&AEX ze|v9MdJgS}|9CrB5kH#tllPMj13%BTW~%GTpIlAw5x?hqUpU#>b;;MoIAX3}$$5PE z0d{{PYR3D}Tmb&f^w?cv51t>^^BJRw4cNQYk@3Wilyh@yLI>rm1N2E=7oMA+-^RUD zpN_=leK=1F|FqI6_IEg5JFr>=e7w@IT3#LTgk7=2glGF+4Xw-bE3q{x@6O=&?|wQW z`^V(ZJotn2pw3;8hxMz*@tTw(Uy@(DvE{diJH8Bmo%TI*-0p+^HRC6se|%*x8V7yhIqitG-B0h;jpng0Bd^4Wef9bfscTuYRNc@2li|YFXO1@8- zXQN+@A)K3~yburlU^l+vVV*7e#~r|*#_t*bmy9C*8*%jlk2q$lpE*-+RDOs2*zZ~T zrG7v1vJ1T6M_hMAo;7|M^g9{A6F>1VZZwsuN*-<6M|=;)<$HNFno#<(reysN;PZH9 zyJF2g5A#q*j@bHzKaE^3e}a71X~HpoHcA_Rx(fW+#D<6ZPyEb}oi}`7|Fix?$Yngn zg`8;z`On{(`h%8l>2yHo7I=w&Rr+Ek-*w#P*9JW4mG}?PA3dt{CiCka<`oZ_Jlj_O zimuk*9NF}I4!w)Kp}%MSpwEBC^ygVqcB9n(m->UHOdI1vF1T66lQQiy@Il+&7DJb9 zrUZ1~Gk3PFKGv-9+u%d$$9AMD>Td5^s1#cesKlHFYwJpT^+3(Vi0Gx4B3J!=wIX5*Qp{rFxk z2kK+w@9u`c_4H_aet8(}$M;x4`5rH8zaWlD@@yl2wb<`a)6gIN-l1o$(U1!}+H?HO zGau}y$-j;LCmX+m_!fzCv2i$}U-)k0UH0Q#^uBZZJ#FG$5Z5AcE;bIve$Sb>85{p% z??LDH80>$KiHCVP4(6{hK6YS!VeP-f!Ni=_1rrCu@vj5>V;9Z@BpxPw27JNz5j(?n zW{zWhS=xW*ObyTb@h=w`|B}}Dmk#>(FU7yyjS=4QN`67iPi_25*9E@sIga~Ru#YJ5 zAH09uiA&rv?sqWpFU=j4@h(1`b7K5UwP9QLuQ>k)Jn|As{7a@w<6n}^ z`uty+_NPt!%+y^U#%=#ts7vEvWc>j7`|jSY$org$i}}#RQ_#QR{#n7q#Z*$d&)YY; zY3SGW-*d9=lsSIc#J`+PRnShJU)A`PSeM4j^q4r35fkTv{E8yqdHT!n--k?GjExf^ zJl8L5{L2S6e!|3esDFj=t)lSPrpVWxpLUyg3&L~%DcPm*H#Y9%&J_F%{7&FMi#j&0 zW$v!N&!2}MCiBA>?W@1^0rVAqb5D=i=RUXnLVj+>Z|eI9&PTBwm&|@K<+Bs;SIqwO zMH45H>)Da~VnQF{i+WAGM7DcJ_H`m%8b|ZYjmiA;YM=7+PD54vzAGl4h4>-Aej9Jp ze_4N5xa1T1rG4OE`6Bv#4fA`h%R}z^`jlRd537)$%a`@JbOmyNb|-r)vX0V(?`Xf1 z>C*TY8|N}SV*A%C>uUw<%W>WE*yVs{74^hlh~FW7HXdeRNa19?6~80>#BbwUMn;s5 zp&>0nKjMo(KldlNu4Lk#1_t!I-JfasQ2BnnqGf8hD)V@mU;U!diHx{H-vs8tyayZc zTsD46_V?4AkAa>-m&U)eoJarQch*0?Vd7qF{7Li!e8+r6=l|`_bra7sXyS6lFV*D! zAMj7+r^mW9u4Oc?bVo3cmh}nK{z=R?xn6+0M-oS7<6XcXu|HAnJN^;!EA~MyF@GA5 znf9~)z`qFl74WGWE3*ESy}Ty*oeg}Q%XMX}N2N#BWgqcoavvV^pCirV@FxI2Vf23T z+_qhxl=@3&^*O`!Ip{%_^FZK3|NJHTFPOWzDf=&xE{%&xH?N!Z5zvSJ3*njL-(=5@ z&{gV2x!?c({2=fFZw~WA%3o%5Q|iI|n)l=S)6JWbw-|Oy;$SAPz>h_Ii`8#?pI)gK z?}7Ii=Lyhn@qb{S^EZJHcyGm3{xaiRQlDKPXucW{eDMnbv0H_HJOhuwLqA%Q3TNY7 zZgaeaeOosCXI@y&$CJZuJ@=<3jXeZ^M7|0GZawwm?J3{~T`euj|DR!hk^Ps#{FnOy z*&A*3l=J=g5!f$$pEU7K&DZfAc;30Ic+|i9!k=sbJo+PYLF03HA0_(<{r_9uzntQH z7B`X|lIvjsZCw2$8l)rF>NLRWGU_6NT!bAFEX3dYycKG^(FQN*QiojHs=^@P7d z`NjH3!o&;VoTB(S#fdGoKQ+`3`}!aXzM%i78X%{b|K>0s=X@3GkCH#GgzuCOo4?9U z>F;U3u)Y&4;F;fN%{)7jY!iG&zMU+d`F%d4a+gQRXTZz&`T*w_x!+YX>kg@u)=&9) z3jP+%dds5m+ibiD>!to0dW!Lr6CN5?ryhk7Q&)c0P z6TdQp_oS;m?)PDQm-v>I@OlI9!)^h* z7xxE$WcIydr6F0zm?1p+Pxg;7zTap30Os$-yV}nWvH#BJWvnlBUk)R_WlP4D#Tm2@ z>jTg;iGvaOMSRLfcc4F5H~eO9#mDx~=c}@RM*qs`KHy+{*SMGJ5WY{3P18SN{T1*J z@^dd8koqtVOWe!y{EDnEw{U$L@fiyyzGa^4hyljeYzjSyU;YyJZ+q^|R(xEyyxRc1 zMg8U3n$N*K-J-wPpPV)RgY^TJkq2)TaTJt)+Mkc6UF@%8-`9-W56w7j^?#P*{lAC) zm~sB_@(%PH`E$+wwvCs$hjE+hvJW{LNjJL#>VSEeVXN`ZS`i=eF3%(c#3dQp4!uL4G*$u+$`evT{ zm%z8kaT0h^9Pgn28h_3F_-fadxDJf{!;IOll<^VkM@5d8u#fS(>mnz)E*rnnA^el^ z5%s0G{tNri%<%~8wXC1}Cq<4suuBQ#pJ)HaXEr^|2XFar#~+D*Aw0(m*pKG{^&gA0 ze}tdkMBEkb5uXj9pQp!;xR4Lg&zk5*$k;i%-;Vlae2Q`WLc3C2Uj$xXVnzB7_J!k< zlcfCv{$j(L;EB)efWA+WA5-Fgf+gBL?B_x5B|fGcQ#(Tb(>^5dOub!5`NZzHDEVyX z@AFBuSGeCx-Z#XnrhevUiw4Uv*Yi2@xj|1P&Sn|sn`jRqA3}c_acz|AMZDK~us#HR zSN)4N%_pm37oa~9C-dM#^b`EdWn(|~;#w;DelP#}VU^FNyPMLl%cY$L?mH|_>2nzK zM-S#F1@Z;@TDr64;r^iAM|$pxeED-mZ|)hrSv-p$k(qEVVU_;jHBN^}&c4Yza znJkTb9HGCJ9M4pcmAGg+f5$@i_lt{zx0|Rfe9>&$Ii3BA=8m<6p+1H^h^qp9py}`sXh) zE(QBO(dxFyWsLd)JbUo)A2}|^sULt7{eYbB!OsF7@*J6loMW9d34I}c3orTscpD#P z^+V+I5$q%O<5n3LgZUlzfeuBsM81A=82ZsO=EQHU>;7fSy6hv_cr5Tw>~GTOht->T zqbDtpZ^);g^Fi+W9atC=yk*9}fIgA09;^>w{>JYMlX#DI<&7TM{l8LD^+opoAV(=Y zzn~w%#d+16dnoySsjT`U`UCrk_*c<~2PpZylpKv_Gto(C*ocsR^3l)hsyI;}oR$us?_pf7p#218K6wEkj^^yJe zDdc0x*u`a|2X>w(@(2HU@%)y^&HWEhLjH1hHsl^j!mpxzg&90Ue)636!EP4KJns~~ zGya8sGyB!*#eM1n@NjW$m#>-i~dWJ z;|291yWPP3lZ?r4x(83aAiRkKvwC3S&zxd*$KzmJwt6G_A@U9V0)G?ScYu70UH}iq z4~bXd{^Kh7NBuy%W&C(SKR_Sthd(~MDe#HuEs4*1SwEIIe*yg88b4%w9`}oWz@8sW zY>NESpQaysg!+N{3k@}~`%4%i_@Puv&uqXYi!qVad{89#So3Ngq8U#Zzeu}Jdrmw2yrTX|@y?EiafO8$ z$Pvmi?LYX1@rC{0XvY_;S61Fde$jt+Jb~OxTuGVsUhJ<|`j>je@nzoV74%8sV5on% zU)L#RcN!?a3t69x3t2Nx5dSK^=VKE*% z)eG8x(jnsv$`*eAm%tCdo%(I{t2n(4e%SaetlycqE~^J6_*cB|MaMVjuNiNw9=%rF z5P8)8#rmAF?^X}!kJDaC`!N44!QXPwKG7@ah1I7Y+xSh~i%fr{jFNI1<~$s~r~Z&X zC8Ix9ulDr^?Zf!Xye!<$vifD^k@bT=&b-l^`h_;3J4AmBbdWz!fgkcH@iArY6QKSD zl%zw(Pr%dP5Vs%58$`< ze!=Kn4)RNTctysKh?B>BmE%njaZ{293-cJu-`_+1)K}uiJy9b6HvUlV7bX37_5IQk z;4w}uQ~rRT{nz-5I_M|l68Lj>w#2`W$8ksOG4u)Je}d}_rE^so=Y&7F zpJ|!$2z^SQ)%SVKBh~*>`7Rs3%=#xK?th?v6&~^FlsCXHcjG?}G2?fL=i}h7lYgrizZa)BkdOG&kucA> zK`*ghY2sIOf9&3p%J+Sg?57IH>Hk67-vRp`LHv{W{}(jQC42+&Dfl73=wF;)mv|T2 zMaECv|8VmK{*U{kJYRb?sjL%Kc9`w)u2>aaKCUJh1ixr_C_yxXrdq?J*_b=f+;V1D7J1zGYf&Rpm zn&5+7OpE;V*7n!mz~6_Ui+o8IRexTLA6x}|>N5HR{A#|srg4U5olM$?^`HKJyoWqx z5$8eu9T}+#9h488Z}O)Q4@-SdWBrG5EfS|9>qn08*Tw~92G%{R{}z1Y@8CxYe$Y3< zcv!@Hlz^Xfez>f0oWRfXJN`k&w*bG}u%-BKY)Bl-w?%&ue{J-O=lVG>{xG+J{T{i$ zK>VZJs88@05ck4;>N5DidRRaGKjhu=I5?LXn?gGlJQM!Tirf>BnL!CZOyht4jne|V#`R`*P{LM4odzmoz;F8{LnwrOS@+8bsq#CuFtg?{<&s- ztPD89+jx~{wS=6XN`)XF;7dMNmAI1@)WbMk>ZkL)CMRy}=ZB#U0)n^lb+sJ%m9A6|Z3UKqYTe8m3ME;=t_I{=4EaV#F^Sg@`qy}L>bu}S;%gB<*l6Qg@`(*;MiyCx<5^E1Fd&-oeRQ?ltb593?%=|KIe#K(6Ce3^`qC@WHTk`h#W2D6mwZji7vf*uX8cPq7{Gf68=gLA z_3MA|?5}-Ke#7-yyZ`A6R-qsBqsVvuAAg14gMWx04mmI9JwM_MfnVQ$){g!8x<5vK zQwQ>k=QmB>bDQrR_XF;-|Bm2Zd*+2jo?rg`gn7=LSDZ^2U!?tSFmE{Xo*!X9I3b(w z{3oXWd`Ivd`OW=rw$%k2kB!=V=e(b;gZZ;f-t(g`03Y z??=C3{_>ae7TagW2h{<;&ChJ}p4)uqe@XfQf7IkXKT7(L_w0|xvd-NSWto6KZ@||OSQtEH8^}k*dKH5Cv zw*H2OisXm4dBzXDl;7Lt8@Kh^^6$&U9Kz{F64L!DBZ26D&587Y%gQ#Qkp6}6N@}1lM zvGiEJ958g){_z-kUU`X*e=Ps{FL6GW`s+b|Fz z-%n}3K)-#qrOkJa{3pL*{_{r9SM#3R-~E*LM<71LKHJjfJKr_=&GGz|yyy0JKl=Zf z|NOAce}4Gy&VO$6p4n0|y-F(?22qImRE}Z|591p!v^j-t+o{0U0m;g7-r~e?5K| z!$RhGLp{eeC-jXb*I}Hd%)c?dc$^`;&K`H_b^LhmK-J_wM|>*215Wk6en{T?>V1q) zVtl%cKaKS@d49EC^|HRcCi*G-0sJe-U(WpJtzOg%|E6URKj88G5Z=@8aSpCY{_}?S z^mpWc2fiP~GrzxfU|sOkA80f5bqIW`cgqQW{TQ;Ft;qZL-rID7^^!kZz8`r_@f}1- zJcsJ_+0yqqp85W`7Ss9)Omu1|m8c%UZuU&S+jZ`+T11@JyTcH}kGi+e@h zsNZ%zZ`jY@eef{mFW~RdH_12uSp7F@|B?B81Rm{s*SGEjzjkc&okp#v0p%Wke1H2D zeeXrd_r4Z=w)MY?XTEn1XxWAmUW(4|0sq#)D*S^=FmM!dA@#Q*x{Up={C}sh>M;NB z+pkodAj+1Ob?5UJ_}7O1`yBjzS-&j&KcHX2|G!VaEc`#9UjqO4>zDSA%{TtmTa@qY zahq=(__rp6_x_y#;>YIcoeentUCcj_e zl;+{H@S(RV5;t2m-!rCU`#Rtsz5lF2{j76Ot)O1SF9RO=rzQU*zB~0tcc_ov@~Iu6 zD|4zQza#writl{}Uo5KajH4vIw*F#b%k$)or(;R*iSJ#L=iAip3>x^$hVHLLG2fB= z3;GvU#HjZyLk z^Q+Xm`aU7~uCj=a)AfmL^Sbm)2_@;zeGT?%Rr5ol|AOVnjwg2X=~zClzbl}8vHeN& zKGLl7*K7jwOT@{V`kjQyAD#)VOWbJ)ak!L2@(=i()A3C?KXxLe_)nrFehZ&B{7WR( z1aCO3ct}6t+fhH|=?qE-amyX@yq`b2WZ>f_k7FpLcx-%CGOGB#mfEcUJdAx9tY3Y$ z&;Q0~RO#iqF!P5B9{*ncR_A0wYI(F6cqm`dH+8+x% z9m@faKN4%r0?*?&H9y`e<4;WgkS~;rJf2m5bbY(S)%UqL+5tI0eocvIXZ?g{zdCPa zM~R2>e+GDPDZ9+i`Mnv>#7F%6-f8d=z61R2#xwgPlio(ZWsawE0h#Yu`qP+qGH-PJ zZEg1nzvhcJ@WC#?JFzVAR=mMD;;-?n^mlN5wvqI+UN>J26k z|3ds4-!J1^Tz+33EuD6SuN__M9`>V^zcZ$PQl`wIBps%HHEk@#hdF?Jg_gqzb*rJ*8Hv$rM6GbZ#d`p9(wmR;ge@H z)v-sPz+dWCeAG|UA^75Z@&C}@s`vBgvC)&jL%FC(Df#t<{}(POzKa(X&)Jyk{T%&d z+kd8Oz3vJ6BWCTR_;Wq9F9P3T^#8-tisyX0ZJ+Y*gL9kpPjH@~i}ur>ZS6L{xA3vB z>UTxrq#f_MGkfh5{`Z_!d?yWD=N`PCUy6r)-p|1I_HYGdY_tRToEPlJ2OlWDGbZnH ztgRaSeWLzonOW{n1!!*B<@gAJ)&qCcpBTQ=4_{pZ)yJlHbwkNRlqxE6%vXCqMYB z5Z1{#evm%;r}JpD_7HLBH+KGx>m*b|Si~cEGN07D^odF@BnJ7WvaY z(R0h+B=Gv!=r5JDzXx&8HT#i%j+3E(1^NI_|K&06KcN5e zI2&u__~+!Ztr8z0=R>wcUQf4gOZ!SCUmfM>$6UYtKO#<7S4Hx(_gxMgh-IISUC!xu z^xrSJzt?_pN8qm%^!>?>ZOJDr^UEL9JLRNL92Hj zZVKGVlY97O|L{!LmV7@IQ~B=fg&d$CzJvJ1x*vF)-i*F)53Wew;f@Z4|C03o@KvX) zFCcl9yZc>%>+IaGzvG9mJ7=%9$@g4kTfTR9?|zm34tHFy0^hh5cuI!7JwpcQiZNg_3f0R?0HqJGA}n0dElZ zEo67sgpOpTCV0NX^}o*$pKsdVb-qpdDYaXb-ywhVFKItwXVgC0b4KwlwRhj4e}eUu zcue~zEp^?|UQ`*FOXqeD1L=^Q_C!ZrRc>W6%V>Nf?h{;0m!{I9hC z6SBVlfmx4moGr<3n@(>)-?L*_-xhesS(o>vfbS9W|6UG&9?5SDc&zVU3HUns?3g^k zCj-b6i)XPPh_4OzZlV6{*y(`pf8*~?egpY>L(f`&Zun=2W;p5`KAv(sNs44eA8L11FY8Ze3RO* zdcTkJw~)>AJ7wen`Eg`_!iT)%JeOq8Ih{C5{5{8;pntSK5p&)tT(9|oJNNSUK9T)n zoBuav^Z(YPKQaHmLjC;#;)_n`xh9+E*Pdt6{s(_dzF(X>K{GG>^cMD$*xqjg{tWhq zGbi-CQ+Gt;?p<@9N#VzxE{;3k$A!^Nf$uQqD^3~u3n%pa(wR>EU5`2EWb1FIT_Rsk z=sBa#PJ6xr@o8v(|0whcbj7+|*%!XDpZ{0%yUXP7J%2*a{iHhdcZ^@8ehrOQ1U}K( zCUJu!_WV-?{R8`Z+MJ83-l~EAo}ZpdD?L|?|8@7)n!ImsSGsKeUgig6|HR-=GoG~9 zoR7F@&Z$5?f6e-vPq)eb>Zwx-pTqdY-{X9^(09(&_m^C)SMvC3e51&RJ)bl+Rgw8o z{?vx-k2Ya_kohlh?o8U3zKC%Q`@-(IO^GLX?y7yb+pvcHwm%uO`HTB5Xg%QnUvhme z$+!a47dxTnlrHz^chN84xA~Rr`K`fA_`Sq;DE_=T7d6nYa4(*Z0)PDWeAHE&ANazS z#3@+)wdb4Mo-K*LwCA&A`~?3BeUNADPZycL1^d8*w|vqc2HtPaGwq$P>R$H>e|?N^ zLjIzDjLVEqzOpU&lPC0?66bfTz<<3%e?P`J2JHLaxVkOz&Rm~h|3*4Dyxf-_Hs`9& zn{!s+pPWxAo!;>BJkxb^zUrDer}Z4`_n)HuADZ)QOgWz9S9*`XYIJf&af?|KMIE(T~`up1Yd35HR_J<$Q;8?V8HZkjXn7`mkp3qkjND z&hx(C`BlF?9~SO+{223h{UPGZyYzc}1i!~K zzau^@7#?nu`bJHj;b^ET@lgD}3ivyC=6HVN%!1UOXai@7`Na{^8{s#5l z*gOBF{J&|=7edZ7&f|ohlLG&hf7g}&*UkB(MDu?8sNWNKX8Tgei$giRc~kqt@~<$k zE%7Ad9D zup;^_^nH)QK1^Ipo`Oe-{y(zkz((iXrk{`DH_WV_01o$D}iz)rxbKie2 z`44T}MvmvBU{_oh{fs!xpPBq>MROkK4&aE_&8@%=GQKPJCGrafLpV=G{hn!XB@TZn z>qDHcS-*h)R%ZMK;vPzPPx!*P(hGQwpNJnteTXZ&GgTA*hjR*lMaB=rzcly+K7;p! zUo_{15Wg+@9|>(qyQj>#*gT&3JA>a@%5HlYA8qrtOfwD-c1Hc%!-x+INPO)=t|s|U z3Ty}S>mE)-*nc0*R5WhJ#F5N}HYDEUUxB`-7@u<|^jy>Yw9;YYRiC-i|8);iRe_(& zZHnB?ApafXNThwgK>n2zdR__f!$P->Pep!Uk)Qk7Hu=3hKRZ9|%6W?CCO#PBhMZqo zE^bSHHss;e^GoO-&|mlP)~3{N$J->91=X-EYX{uq!$T!Y^K>qHh zRssp9qVGZ?%i7f-1OL7aZ~V6{^}lm;S{^|`+Rw;!Fdn) zal2sOIsTgX&6#$6E@!LK&gJD=gM)lbHh-*~CxZN791uOopWcvoY8ju%|1;=M#xI>h z`R^%*+oFfhE8rjWqs((SZii{s^Z06Sy# zKSjF^e93DofBEm2*bm5A`Q_55Ffq8}~a0J3{-^ zB=V2*U%4%@XN!2x-`V(E_Fo73XL(^u=(>-R-yc@1KJr`bho0Y{eOc<>7Co?f2L9>! zI@qfq&P6UDPdek$mpk-#&%F-(6Ud*j3-^p(SoILwL9w5%Pkl7MFkoJK;BL9&4z4IMs^&AxGr+hC$FNkjrdf|K*=O~Om5Z;6D zR_+;h%eX=--*Wx}@*{b#2@gFWd=d7Xbhfa6A94La<4>)A*z+9df9A)AexP0GFW6~0 ze-wW~KS*DR`T_Z#qkaIt)d$sI+%Id+b)=a868e!g`mxOV(La!1Ie$bwq5hXR9s>{C zhx!rUj_2S1RsW&nmgq-Asw$mM{`_Y9JoD)&GjwzKhBejyv`Xt zS;l@2>tXwU5AxM~3eS-5g^QbY4&-c+`7be^G@<{%AH>gZiG3*C-NE@D#D7kqY&G$( z(BCrjgY}AjVE&hYf6RDsS${zORC^vIc>(AY2y$A=Zpe8i3y*tO1YX7oz|V1<5cxy@VEro{R=+ipU6;6B=z*MXg8aQo z{Yee)h<(qbRga3y9|3taWytwBEB6P(o1$0H4>`vq`%}O_pWYPtTSQ5@Lw+K$|D^xv_u#+aneUg4oZj1$ zPslIeOR1{ByD0fPoMUR>Id?O@IP*oHkLNOq)Iazso}?>uh<;%HYwh{c9L_Jn{?9e6 zseeiT3GG`pdMA2AKN%uoM?lexPo_ZHZ5Py7Cv+ULCSk4i=K8~oN{aa;T}@{jlz%=i?$ zfc}FXMT|d&?`r?1Hsw49cxOnAw!?3-sq8$1k6ciqY@F`y}l< z;IEkW+3|(r5B0N5{RADhe@m2Sj0@stfo}Talv6W4JH^>8j8`}}OFRF41fPMQ;|t}pl-v<{gdEB_r|4ytXF6q9ty8Kr!oe|c_+etgX6(U&6sVdR(Fl5)ql?M@us`m{v(fd0%wKG}YbKlHB_7opdP$0^0OML+EP^v9JayME+{wfdEd?a237 zS5?L{)BpaoS@)TPp70))dCITwSLHuW{{;0e7`xB;0?)zh$rsmkAa{&Uq8~9g13a+D z>OX{?^oJF}C+jaNpK{KL^GBXPn&nzLoj{f&UF64Yu*61JZACvJD{1g4Z&vira{obP5(FZ71KF~h+?+=$%ZWgAu8&;2g zI)e3XbN&hT@e%fK%=xAzt_#AxgwFaVpeP~opYp%B2)_g8njRSc+w$LzUlFXYtwP?y zTsH$B?Kvm%kMiGP{PB|UGqC=x`2h}7KCwP{b5qv83geryPG-+Lq5q_PXV2>Ss`6>T zA#d(!4(NH}_LkslA^*@m`s3`+!X(~<|K)S&FZ_=30r~TY zfAR(M3l9mN-rkzvvEy4Z;S>ETq9k9-$nW<8yubNUP1d7R{Z$Y13itM{d6-Ao=I2`h z{|T2w92(EvB+NRO*f-?Aw(DP#-xqYH%{e8p->?tN*TnO4_8e4kctz|>pV8lxIX5*h zurBr5^HG48_II26PQvC~O{t*z$o50NoGa&nkNJPE0v>ibLq7w2lJDT3du>DV2bTfI zcFb`ei}NfN9{2JJ{K&|L=zoU(2FC~ZhmS!2P5A4S@7S#&(NFh|mfSyadQRf}RR#M` ze=;@-|AhI0;|;DEzm@(G`1d^DWzRRoaK1|KXOR92x>HpT?^C+TbEAKR@hhWxVCm1| znRKT|RS%-@^NEk&d(i$dyyy4D(2k6|a$Xhwf#gU3zT_Vlx-*$IS(l3BHpPyCzp{Rq zyQ%VF?*&UmEq~EIoX;-dnfQ@M`M};eC9Z#w|Ja|L06f1pH?)a=bL$rP06(C~^xvq- z3%nSvNdAqlFKoac9M<_U^g9*ZmiVLS9feEfAjjY*^_TfOZUR5gTZO{g@aw>*Tmbe9 z=i6M-ucl0*CiU5KP7vS#%)evtlV*YgB~Q%cHUQhDXou zsekWgYZ70ZG40Bue6jsG6Hk{)RV6=fbdNsuUkV1U8ShzdCJg*IXKDGDPqazA4(^we zIGr@%kw@6J-^Tw%g%2L^d9Quszn}OSUzsv_eZ$Ca#{QP`-;l3jQSrvpZ4w9AT-d2& z9%EC#6Fs88w{(_VrHA}u|3_kmF4K-ON^QT&PgdyhATCVlI3dq_{C5g*#h1t^o>+Lt zDH^ z@y4Gc-!pIOQe;%i;Q*GyP{_uThX;@h%WZC9?cF7ZeC-3^H+!u{pHME^R;N=4q= zxSN!TAA|jn_?J*+OTHIP{EyA^EASYfB9(24r+zulFZ1Vi{IJ0(Bw=3=k7MKVY#bWx zE8~A`yj`r~lX`5Noy;%(EE+sfRDPCBSw=}dTKM>GK-!b8R0Tf9{VNmygZ4F^!tbdU zf+w6EeP5pUwkJUb!6`}4Tp8u2W6Mtl(V&$0eu<6dn1ioM@j z<1<3e;2`n!96$Re;%q#XvB;ng)$Ql^wec;9LBuWLJ@80;i>$w6e%duyk>A_6nLCJg zkn_uyX&$WTJ=pL2;6Kf^Hc>u7U(CeEgiRbwauDs2`V*MnjW^zu_<#S{%W*L8 zh9WTVeJd^m8 zc7I2gzP~)^lf0{mZqP6LSJW@~r-R@(=zTd3M(!_%{+@0&@d1MsjiYJ*D*VWx-uG`-L>xO=ff4NBefp&MAys9Tp>hB2OiT34A>F>{(xST}ChS^_I|Hj^LT`_Sy zy(YfJ?oU?DetGWXhWOw4!J6=a{w4E6r8_re{&2gYB7UFEb1eCTpdXh^JWP`7vuHQh z0eSzZ*k{n^RsfInjF;nNWPcF;rH$VyU|pB<(A*$O^p}D6+qfK?e>k)sAH(sv(ZIXf zB(8A$0e|{#`lLS@Kf`sCffw@&qy2@;+h2*RxwaQSgZ)>0FCspM@iV1PpUhuBG;u2I z-wu2a59|nD8&@-I<7Zeu?CU7T4bHc09L$i3rxE!A{j%5>X>eJ&kKIZ1${=c-(NyfGhFrUT^6CV?MaeV;zr)cjn zU$l9j?R~?j|4ZjF`u`H@gFM_aaeObtw@7}=BI8?LSU<4$VPk(n?zhdDxEXtI(8Pq= zD=R(J-#VErq*A$$m-Bp+;iL6PxZsDIMPZGrJ-ry?;Fl<%kMHMwSDQ|b^v~f9@?Al?M`Uz<3Z2V93l{qGw4g!N5{dzmk7$v(#Py&=G3eYJx1Bk*^& zw1IrRt0SfEn%I#{yOxws=5M=u266*`VF~*ljGLKZ{0Ht)H2UqIp074I$eS{MN`F`G zS~Kf=Sf9oETNd*r%2%WVa`VT(>c5Np!t4)ge@iFv{=2x}@8*WI@9^{v#`EE^Fy!Y` z)IZJNgMVe(f7t0L?K#)KXkQ-5{z(h~p<=O3)`2rzuY{bCKa`)yZN+QjVv<;&Zud@66qGx#t@BiUc3?`|y5U8xK=zSW`K@zP=a#xQg#~ zzd`nYK>yq|*ay_#V)zgJNOHgE{!|+V`sp#>%!>4%*gwF}OoIP_gM3PyOnzcR{HS}- zucx5j=1VPO{ek0v-S4;U$NjycUrTpU#MQjMv@P^qQT=G#+jlYcY1!B(nLi>vU~Ud^1BeTlL0-1c-#Z39-&FmpApaHo z|M}bC7xc~QeXD@a-`e)9 zV!wXAYfJV~il?_UzJ>N1{9UA8VP7Cu-IlnL`_L!Ke+%HbKVai!Y#uuCqo8j_zK`59 z{?Tk^L+l3ihx_@g-vRu6=nMBPuupl6dd7Ge>JQ29BL_c7ksee=JvR;~) z-jLG9$&fzkhxk8$OPO{30`!A;tp3Y>Dde+!XGhjWXYX!E9&FeT+X*ZG4T?+Rvr^iX+ADIH&e!aLDUn@-zop|c&5A~Zc*MZm~oW+=lHugqxy1hc3ZwbK*`_pd&l>_@D~b@ zYplmF<9B>NZ}#(1zvL$^W54{xeaofxb&=<9b9_YoMYCR?L!NlI`;)PmnSkUGp6`Oa_%8DwQ~uihRT`|3iLlyi5KT-a~#DIDSC> zjr@4#I9>qXEaG37A3nJsKPLKN<6mr?OOfM+fv0}Rc!Bz7GV7{ejCTPZ(og-GyNqZ2 zKAGK-{QpJDJLFUJ6X%!a&3KTqaWDhWZ;UhOpB(vL$ZmQVmzqgw{7ZOhQ^pD4m-&h8 zX8~X6L!XR`QN+hMphx|aup{FIo+JDEBk?t)kMS+xI~9p{DI)%bbS1g}B=ZZQ--(X+ zWWPFb9pAAJRk#a!OnjyX@HVa`HQ6TcMPuh}d`$XUK;R+Y68GXxp#Nli!T8Yq-(Y=3 z<7Q?}+_%*y@jrooF0JxCkCO5`W8%CSzw{LR;kd&0ORmcQGD<#!e_}s91y}U4&`=XU zaUs1W^8T+V->~m?zkW8gF81Hr@n;plqy8DAFZ0I#D<*d&juZGLKi{IO;{o(q;$W=) zv|#;{{#QA-CGwv$a=pL*3;XbAjeGLF4873!;5DI>^5Opl?)No%k)d2;A3SHq6CGc^ zaPstAIX~unfc~4TKbSZdkzcfbf&Lrh zan_Cl7$-Rn82Lv2?H##~yF|NBKfuJhz&?n7HbZ^GcxB^aGE+6N<0AjykLVxt1N+ny z=%`SM_J7Uj5Beu-@@dPs1HFoIJV7b;3-pOy=e~Sa^@H|)4<6%ZX`1|>9-A@a%q;ya z(78hTq>EFy@9HZViWw<%;Pc3~mE~ZGi4*q|7#(ndbEg=`eF7jnr6bAGH%SFkNI&$ zK9NeJsN^sla%@dNTB@iB{BKLnm7tQQg= z`cM2{#HD^E?qy-#mHx2ydD+NSnCp7r>%BesV*DQbW2_r;T#pz(x!wB5;1BKVec+?q z;oO_7FLsAC4w3vJ|3hXyr;GkEuNVH|J~@8TfdMdSng86MscyOc6`e!vnqO1E^o>HwLM=n41b*K!`7~3ZtL%w zjQple{L2vi7RW9Ab;>XC^Za6*{s-|_ha~Q066;&Uhwl z`e2y#pr0pD5A!h7|Ka(L$($>4k8_EVCwKzqOo&hVAN-T^cd&o4DW8m^ugz@8`1mtd z?c-2l1?^u&+)B-}dTezhdkZD_N&9pL@K{e3y5>XZ7udgaXb1OK(|^$YozOJ+kMVhG zYDMhR^z@oM|G0+pJ=otE3cC%fdDvgXXVR~aNgnr4M}BVM8P9~cnV~zN<87P|y6bwl zUS;=J55$IqUV9I=SN0Ev5kI8!yH^rx^4-S2*gU@y|MJIwJO0Jy`NjR&U()^{-|yG| z-@_f)Qw1H!8~j;>37+9PkaNghJv51@b2c-XJ+ zZJytzBiqo&>~WjF_Q;Wn>33H|<~F1|Cqy^{>SpS;(iG9U%O-J z0bitF8%+E6^6MJD)HiHPzu7#$HovaV@WbZ$^_V=rlArnW{q|cv*b?}^lKaQ=6vRlF27t-zNp_e z-|s6g<@ptO-pB#2-U&-_POUA#T{yL}TFrV#fPF3>S`d<6H z^Y^}O^4PSPlH)h*mt*tx+PuCm=imLB`Mt-KHczRAw|RSQ9@5`2zq8|;&G+jw?`^)( z=djN_pHy$&+dQXe@4tS<>G%@<&zGEk)jO~kXrIs6f62r9LjK-^W<02`*F3$4%sBAO z_oM%t`j7fVuRk>7gvYn(a2!DXUa{}*9dhxT%yF-$Mm~ocJvFgcHvf;!`}^*}A<55l zpuS@A;|hEu;KZ)HUypu39^M9zPvB*I0e??<+T=a@Uw+r z^gegdKUlx|@WU#|>N$SyP(|oOejk+C;|9L*9f6OJooAjVUuCSJzG~>x{9dorugP

    xHQ%-U9t1jbJ=A+}&AaLZ$LjG+KS}UoeE8r{K@6Lg%42d6w_6|6N{f z*Qrw&7we9V)*q}Qj%Yvs?a2d*--D8PeedhD_=kXR#53P_9CW?Ro73%8{>gXn?~GUZ z)rI^}%ma*mCZD{hU&imV=PPJWeC$Mn;`O53qaXNB9&nu?;szNf#k{-S=PQE8;`bcd z0XoNf=6pcjzy6BivG{#mZAVv;Pxvt26Yud?_rA;c*Mw)jZ|_h(be#8n1^;Q`m*cIR zryP*Zio-mimVe%}LxTSsuk1KM-?7mH-4%JZ^c{aSP!|jx8*MxjkoT`*n~42o;TwGJ zGv+(?<2~u9=Q@+hhw#VOs=seS$?vZtaLS45`Ze|cD4vD>^E>sVRp=Rd39pVzDS z4;;|4u~AFVC-%d0Xhrx}U++tjPp`Dw`X|&sa8|nczO^+_NB;Zj-5-%&3*RI1g=)@1 zz9BcSyt32G-%I;2f2nuy9_@MOok|_~^V(~cKJ-7nANIQV-gEruD~i|K(}w5${IRdS zR)zmu3AVNQ>VgNz$C}h*>-TpL$#YXzRmwLyR!shG)sLg?70IvbtyCQ9hqa@Y|F6FW ze4x+T)gz5c555ck{{j0d-~R#oD)!0RSHEBJT03j;H#O;dYj>@^mG9`^m+h{#x0e1l z-cWdJe~%v3XNhmc`rDhvKEGx7TzGv0_n@f!JO%y$o+&@x%C^X57$u*L{Q56EtI+P% zMc!-^`#O1=*QkBJ`_`OV2Q^2ZWC;?uK`!_Qx1{R#3vIDN1N@|{rN zpxUL&{)6LxELu{V)_(6oc_oL@n{vN+?vh5piP#o_wp;z6}P-Zx$ED(tA`|K$ki$sm7o zhvHA8H28&o@%CDs#P?6@_hyv(UHI1+2^hLi^8M}e6`{x0f9qgP#^zR>1H#LXN;e3$vX z;a?DWb)XcXQfaL%-9HXMVrJ zdj?niV{UcZ`#JJ4n)MauYF>XofRewPnA80i1K;@Y**4Y_nXqdHotBwn^V1-i)p@=NgJu^oZG8e0+g0e*j> z{&-yZT}*4eF?@e4`Gs}-neW>Yew0gucSgqtb`Hc)5BMYe>+4mx>$~6|`rY!&wtuLk z->;f7p4jVOfnPr73g21(W5|Cm@cEJF*TSbuY=3N&cpl??1MxVy{rvfT!-_v)>Muq1 z@Kb)AQQUjXetr0G3*!{>G+*8E#Bkq&rGFUktgnyj))<${ra!Fw#CNx)U6beB2I46- z@8K8v2WGVX{!3a8UewaUUtQMczFk-3taz?X+H31?Ugo_KIJb*?8(IGh@IB7$%kL%N zW!~cfuAAd~$%Rv4q=)v4{2g3YxxBP1>q27#=T>a{g#T>6AMNSCuJztQ{f`TK z^6M<)yYoh-b!iFqjr6_5|Fn6&IjZm%jlH$?FPQfqf9#X~pT;8U ze|$XF>Q3_h6KC}1WT1h3wD8M_>mYw7S?>whp@%--i}pYBaZT{fGtL#io7v}&)PK)B z-vRz7$DWRjk8cSdZTsDaLt_7@62K4seDv{Sro5jnzl(%*RX z0tcQzk1YHRj(32&0{F*e*s(i9 z(!Umd9QKXhOAptiU3Wf)y)pX1^}i9o`vG_5T0r0?CISty7Qz2((swgallF+6#P519 zDn46(`623qz6^g1{R7^iA=CqU@m=7r&umG5qTkid0sb-a&D;Ioi^e}5QM)j9?c*)! zXA6JD_}fJ}p9ed6UF{|P>!+Y^9`N-4FA+~VJ39Js#r7ZT4}R<8O_Ark{H{DY34C^b zx(fIq;>Wz=qP)lap@?Vnv#CG$yAORLe;*q;9>@1T(C=FRC5+#gcjgV;4U~#s+dnzv zHqhUF_z-l1PnR#d}@eLU~V<>I?l%MOuU(e`- zl;u&@=e)Onzl+!K3+LFRUBQc%K3QJ~0`Gy(^T$Sejhx~>@E7HW@uyPX81x_p`+NP8 zrBC{=QRU7vI%DKd@Sr`yKdetrV85O6!aQl8ga0{MPnY|@-Xi}m_HKD&?_pk$SQkAV z8?*S)zmG8f;F4&;8Bt?v{*) zgP&AIzeDDpk1z4P1K)>st1`Y7E^Uh5E)4pRr{&N83i}Jc1bkz0w<6yk47&0@i8v49 z$NHD7U)uB9=}R?vZ_hFR($^{RVVOMO@cZm;o8Zaiee(QE()ay{^UVzO6ZPedfBMfd zt~}#@13CYF^^=Ow{m&UEfZq)mKN07@1%KZsXgBcRy9&Jc-oNMnv3(8B%2m{l_oYv& z;=kRA)eQa)iEps}-M{El_~B1#f=}o}|Mc}K{K)Q_*rmae{?68a?UQx+{ZL7NH@dqa zzxxi_cjkv47%nJ$;?j=rX@v2x zzz6wa`x~2gD-PSgoYvnZFV#eTzl-=)>c{=G{yw$4C3x><^mnNLEslTbOW-H!|2U(+ zb9XoQ_+N+my_fa(8R$QMXY&l8e!^$6X5GN%1qjXtJgdl%^PM`-|AUBQ&+~_;^}Wpx z0Qf=HKa1b{4`P0wtjM|l;Gr!U2iX74FCvaTzdsH5$FIj)?Kypp?;Zaa^fOo${VfC( z|LiQ1lm$?-Tqn@>_TQpI>C6w-qkFsAcMwme#)C#&@pUG|%b# zMf~ouKi2x6jQwZ6n#V_Ct#kPPxGC0p`?jrrLimsTT|&>TTUyS|X(|2*?Ayh6-5=FO zpS4cz?O*!dbDU?-Wd9ZR1#$Pz<73`doNwX$3~~4s!S`dHe@A|anHjyW1N)GYCt%@0 z!11?v;a_O|3$s4_p7&yG%lB{oGkibk#r+>o#Xqt4j@((o`**ypckXCC62A!g!a>&O zc<aQ{zp3!NpPKaDxuf)b>s$K%-U@#A4R5Q+ zuhQ={p8Olny=kShuMh2Qm+z-}zck>T#?yb}>4RFb9l@&YpTuuHfDhmCH8wV8ynz`l ztN2cNlKuyM(Xj8gzxmCfP%xln{7%66>~NPqgk7icy$Q76fqb?*C74CwYq$-3Xz-NZ zviG-O{>}c2sicj^KIz;Gq6vXKiT{n>B$P{MjXH- z;w*M~zs{uChtOnz=eCZAC#xtNZy;Tj{T0T~bo?ON=sgthIEXwB99pU4{$&Kueosv0 z>vG762DIIgh?apU_=o%hEs~!&?06$SOh+#KG!?DL`y}&K;Q8BfeyH7_jn?FSCQ_64 z!2tcF>{t`!1MzXi=%#!R9K!g9eX3GqQ-1d>uqyc*V_wzk-l*?w)*BDH_!;dl;L$&Q z(Tcne3Z0qb{Sk~$_}w!X{D*v}Qd-|YbW?s8i?tm)cFghq+`wOrXugVgywcIp;dqB5 znx_KsImBO=O9LPFqY^RI|723>vHh1yDLu{c9sK#c-t#-+YQ1hs z>mfYP*CrD1yPT#moZ}I`q$anepX~h7dx-iK9LpxP{&EiT2zets`rpa9T5ogQ*Xe26 z9?fTzJ`0b0LKwauc?xpQrRO-#p^F{j{UYQa=08$z7IEdI!|PT27QVSzf1l4Q{kT6% z_$2(t`RGzf>&v8e0Pi0wM|^wvF=)SwMdi;e`UU=TKb`Up$?q)vUboWu>Cx@cc(XgX z>fats<+Yu{U%=-I+P+vb?1X>9Qz|JP@?GdxdXV1;v51d639r%%`yuD=Qz>m%E>aP? zZpI;JumiSz$)x^1UebD-i&`J@pGf{@H?cOk`o{Js@79rt?!0rXeq zcrpR{j!bxZk%yA^O46rv;sV`e=7ZJ`#YakxN=$f2mXBNJo*CXo0WgP z5zqm>$>sLtoAOmi3{5(3q5fFg)@Y@z9!4c->i{y+kYveH@TeB)!%RB7y6C(=jJ}8Z@jP}{K-c&kB^KGpf8&>?T=_4 zog~itQjRgd7yluV(|S|Q+OPfnUy+~2fdS=zHmmhS<2#)m?O%bX{(J_$rxJ?S?SDZ& zQ9t&ZM4$SyiXZuv_Vw!#tbD}Y0QmOB%crS zJ5oOfnePSi6i-w{KavK&mET;>^eg#~eu-w=&U&&UpMd`Y^=o?v2DE+oywU^y$^A{u z$)U+r$X6;>k$xK-e1X0PVJC&yDfBE`q01P|HXTi zU(o^OkF_Iezr$#s(siwQUGU^$n}T2D1N=jNGUv1GBTs+7wlg97Jx!ut^e^JZUNjFX ze%H0_OUU_~Y|@=tg?;IZ`TiZ{vLEgFEIZ+``~zLxw3`D1sKX-W zOJ6jq?I{+uAFMqW{-FM5SNpG=Q@I$z`3%;-O!~l|e5@vX&8C$9@#vm@NdFg%J+*eb zT-JIJU;lHqZ)5=TKH%$(RRmA2c}@8L?K;Ij5ZjdZh4`ktZ#H(C`LpXF-`TR(Ywc(x zwbJQ%ll+H&3Hsv2oiiTVFWAq|4nOi_4Su$d{TnsS|tPQ>``-X8`C6UgPK_<4ST^x5$O`4gSb-hliWdu013 zWb9ugul#pi18?}>d{ya&U6=7;cvzn;{6KLBeqCiOJgM+@{IK-f@uL{geu*UZ`j7NA zMnlS9A%_funAz|C@|`3l%UQ!1+*|ixRtEa#en9|7VkJXX!7v zN%Sx5*qvUr^Ur-A@HYhghF-#6^wPg+f_xNw|H}*c*Bh7T|)>31jO=3wXH$E0p!e0ygfe%RpcgMQO4-o6bwG2U7J*zwIbSwq~~ zTx%+&bO`;(k5L@n7WvK(t6dqM@`;}(dJZJQV8=qj8BnpP0ouM{s*IY=6X8s72vtJM7)jrO{32bugdt4!85;48~Ypy??^nF zmCxyEUySufN7|&GGUCUG2lc~09`|GYLE_pn1>bMkzR=Bz@QeP_(?=M8hV;1@9g=z? zC=t{T`D;M`g`AmkRo;hDuKE#2SipQ2cz&+uYn{-IA;}j|j3Q19adOc?JcG~QHu)cl zSa;`nvT_;c>yh^_6h~p?{}YAMBcZ zPmQf;{+ycLfAU&#%d>i5_5b7TZG!7Mt~}4nM-UIPDB)3-4V3-xzP|yyC)zGhcDYQD z0{K7@BuJ1VNC6;0>I3|eY*kkTV;1g$6^wuu9X(P-cTk%SX)!bGm_<)jbxqNWsSb37 zV&Fx`EG8;~wU~uvyNrnGm@?^d8x<9{IRF32^M3%-C3(6RgUyZmE>33N%#$bc<}c65 z3zelcd#~}cx6I#_^Q(2V{}b)4)M_96&Z?o_JGcgZVe^+v{c_sm8nZ#Z!uVwwlP^0}h{$;8chs?jQiMZtn>bt zCZALpcLDjyzp^lX&(5*2^&iY1E0v&6H_nB8+LfS3#{W=%^$Yhb-|FH4OQ-niJ!^l| zFUyyp-M`EF8>e46^!VCK$nSscz2ET7dT96SxF(-RoGY&x^@c{_N=wqu>2= zmT!b{`BA=3G3XoC-z+|L0rv^?PI1}ZycXKyE!SVfmA8I%^LluX8@R6Sqy8p{kDg1u zjsIu6buf<|Mx1Eq?_V-M^bdUh9ZYf_*HC&mva$(%4d-XQjrzZSeZ$Iq^YWVMiQ<*W zem3UA@7JycKlmFw4+;AF^Lns9yGKx8yH+pUya@e(A9(g0uFw<8uVa6B<7&vSePgA6 z^=pXFf@{!E_&1~fUAqK*f?Vq*T+wgPAN~W&|F9eMFV)yeB}l)ya^K3`Sn66iQNL#Y zFfQBuwMFO!+NpK+p83h*{4D6l!DQ6+zu@|rH1DFH(LXcT*9QH?QQqntuF%uYwa}07 z-1MtS{fEEpDD;zY6|UoXD8I{NUyI2jJ_7Z;edE6AcTb-BkMwKQOQch|20MZM!Yuzf z>{sc+Et9{|I$-^f@$`1|pN#bJCZ03jBKrZ-qdfa(4f;ua%PxobMh*6Z;2&(|zb3sa z&G#qIz`nIYdt3j9{+5g3eXrxn^egBGe4l+RAM7Xk*RR6yPmDZ-&Q_Qdb zv-PiRun)Cb=m(t=%8&Z{16%+4d{Xss=O*L(Bme8IEtB{0ad@O2^sRs^``NW}D38}4 z;+vyhFdmG19E~?`hX4PV=_5XW5%(My_+7^S1^xWQ`qyA3NBi?_?>BF>ZdtzSFZw>b zQNCm6o8G*++0T969AEaZe-2G@eK7N-@op-4YW0HR?^V!`7-!%u*x$@YA7pfHWykx~ z_*Li|`Y+eFS22DxSHgXp{Rs8PendMH&Ug7{a*clB`2U9cA;TVhm-+L2u2qzOpn0!9 z!T8Ze|4AVCx$%wu1mlg@PiEZvQyO}^x_kA4>^tm>egA#Aald~R<%gbpi|J;2_7m|H zvA^PtcF?cy;7UEX?&A&9Uxj}BGaq+uct8EN_fz%Hg6ul<*z7|a=RF}lVi^D7e=v^o z%3ycLU}u^CP4-vVe{cWf+Z3%nhF}Xr53+f2BQ=e2M)Q@;T}! z72VlnjN^KL))Q6BTlVlnjV#=@rAhjLl-%bMxexyvEHYB~Jh4czza5BNm;%%+zw z$elfVC&hRGt{+LWG7rCcjIYZF`<0!AA|c<{60SFb_iG6AZ6yqJ_ThLGZj`cB{2mGs;5-E1LBGF&df@(% z+h%|AzZdRv-wfBn$cF8|Vg0YeK9z9K`mW}~?=@UQ`_-&}7u{b-enL(EKbKDmBXz59 zro-==2HOee_-KAzb@@u}fSuz}#{Y4@mCI*}-w5TRe1da3M(lYwe*xvom|qmm*Qg;K z$}v6qu}D6L^6+;n7tT@0+kH4c0`kUZcz#E#7|J(_E8kD$uhv&mA3n3bSoY^5UswH^ z{TX0oYxmT`S-bY?FR}ER&4uDo^osOeK`0i4tHj_D-u)B8BY-@y5= zA-|FQrk&d{Ub|=Iwf$R=$NIOWH|pnhV7SAKAOMK zbMPddFQI*4+JE*-vmaQ$u7u}0wKgWZz;rQ=lK-2zsS)){bCXy$YC(j4>H;$hq2e$cr;QPk)!S{{hC&^=czYl!hxIQ?(aeeF$FrNQ#5b+WI z8hq_U8pYe@`m)CyA0{!rWiJPwU%QNUg8d%3yu$YZzlQ$b#`@CbO}i(z$M`vsb-wTX zf1uzz8t0=L$2Pu?{YJJviTxE^{~|9eJe4+1-5$a?f^k6W3y43D^rxQ}{}<=S{s-gp z*~?*n0oMKZbDgPB2>kdo_2;j_?|eT%yB&T9=fLn{=X2Qj`+DIPz9%z_qrOjI#lEjI zi|;}HduX4Q?;8+*(SCskLmyiHu!k70nu}w;Z=m8lejnufz^~?f-$1#H`7i#j$EUlf zKaBrc_XkHY{#h)B_YL14*gx+32CBX;4f|o7%l3ajzFrCI&da`UKpep4ALzfYzRveO z_A~7-cpdwLc<=V>nMO6Nw>O>Ri!+%1LB8zk@#3--=cU|VM*nfdO}F=IH11&Dun+SW zl^@R$AHV5bwOoc>z;ncVwg310lS+O5a0)zQbTqt2yS*(B{Y%Kz-vL)I6tS)jPG9 zz!$-PJRQuxt$!DuLb=dC8_wskpZLnE@h!G5^w)VsWiGrw&UmHxlX=o^-~%LmxtcY`91}e59euHe>9E*KD50*pkVb|aUR|B^?mgdTVG*(xJKw- zi|vh|N7_Gt^09rz{fp$HXcy>@@81dfkM&XGH-%LRMEL!zb6Rn5{3AFi-yi+`otP zCvS6pycY5$S4aO4$L9O-d;;<6Tow6a{Hi);_R*mKsD8NrA^E|XhHu%{weK0I(s&xFFUCE zkv&uYox}WO0Q&CoiN<^FKdOLdQr{$BFK%8Yw{0wk-_O#Hwj}>SGIBZSjqGQs6!cZ{ zSs#BjFTi~HG5rto=Ln9p%UTM_hlTxp9c?H0Sdv=pXjCL4QgIOpaWK ze6!wy9mae|<$uNd3%;|Gfv0b$z+1!k$@Yaj&P%p?eAgMjANTziEGn1}7(TsVXMlC*~^pY?mp zzqC(L`Kx}|UpPOL{n30%@^j5l-)Hz;ih6$q>2sgr$2dQm=i5{+rEUGQ)2P4B{To-f zUmNpNn}48u;*!|+ZogOI$HDm&(_cmXRIpymb<2Wt`5u3_{&6YO9^W+k(r`XmU)T_z zvHC48!Ja@qi+zyfHm`N&%|2N9vA!=J&vj(3iyEH+ui0 zPY5n%-#6g;WnW+B`t3U2Z{)(J@tStAYwNNdT*La#D%aPBORsENeDkY5PZ}@Rx7Tm6 z{tCWseE&Lrr`$H*|FBH^SMa#S=tssOulYEB*5(Hozn#06UfZ(s;jUc^yxz+{jQ9p2 zzIPd12yuqWg|NP<^Fy+iy4HSq=k%S@EiZr2uOj}R{AC2ca~<`v*$c)8owD&ue4bpM zT)l#QFyt(zzbOBBY0K74$z8~8(wEbS-*a<<-)E~hpGfPY?WGmtkBVo{@*e_!x$eBa znp;CZxw?2`Va>|R{ROM2|HfRnZ)07a{G`tHcJP1)-GcSsTJDa?q5l}?zwz=N=hIjp z{Xu@XapsQc#gkRk137=YyWKv}&nIeI#`l}}o$XVr*L%;I|2XdXd-cLyOSkdLT}#jE z7xEqNA2*z<6xw$z9+K%l>Zel2dNJ0+s~+dL_S!v@r+(V|IbZLPtKj{N(>q_;h4OKAWTy?vpd3Ch<-|DfDW{LXdn>*OgekLSY$?H?fLLBF_ByJehG{HFxo$$A~H zZiaI_@SN`}`)K_E>0S4I7*+HKro;Wc>r;C${|#KAUJCWvDFi*X__28Z@8EZ)Cq7Z} ze*9LL{|vXCPu!@1JAyOScJ?2<-&@{q-e5nW9VmfMasPzJH!L_mA7MYn^P88}On=#>Np&{*$@70+pM-t7lu4{S zs~5)K-0ElCuEs*w>Sv$V|G2knYcBlW9Ic!FBR=sb?;`y-anJgS_1yI5Hu|Ud{+W5> zI@jL{dSLnw`NAl;Eb@)@Tk@lB?^~`HHz6O|$Mic>ys%>ZrS{5-@vExqyQPo(o38Jp z&gC1_gMZ!Q_etfg4Ld(T{Jx0u7go{E%AfjAy`r9z`(LMiL*Df#xrz3-am6|P$ZNN3 zKLFRi)<1dz_I<4z5kWaORdNw{)`8nqwc5Wp4XT2W!-A(En`0B$t<|oKMTe@#NKUWTV+8GIY zr1vl2o_3?;<-dMY&rLqL!SbVjl<_+`e&yPx={f4h_J?&wwv5k++ke~ppXoRHzj*x( zd>62P-@J)&3hVXzQGWv;;e00N^=;?w+F$Tsu)z4JnJ;m@2mD){{@c#)_pyF|kRRxA zedqU$YtR?;!-s2TUo+|UJmRB6|F5Cl@OvBmko`^lzj-zMZu?`P2jcfX>e}~x=F2>n z2l)4Y((E? zgRAvJ=k=!lkT3ZBV7mAN60Pe#74HhyFo7aK2OE z`m}Sjf7jW+kPg#-7y4!MDx`PG=Mm!gra#2tjC z^pSs3ael9HzRd9(_R{zs^Dl(=zkw^?e+lylro-~F|B&C)?pLpOt)Av_4fX@?2YHSE zg~C1CCsN`#4&G0B*8dWD|G)dkGYbnFW*5ii!j;cW-pBj0bNdR$aqd45e=IG9d|$ZyY^;{nnnqFRlIusy-iBf;{&XfTN${c(46y+7}>h-{{Rx zR@uG-W#{(V-*(04EBjFXRlHxx_qQRANhrrFn^q26zsLF$;*B7?#`B}O(C=%`@!5YV z&-^%U;C$QED$YH4?X@kF7k{j~-Dp-;?EPESkdDh|vTi>{kUr;^dHmn1?GFw7a_Kzo z+t@b+IohGdYqw|k*-!BO z5%X92{v!RnxW7pAQStrrNdNsd_6@mReGU2Weg7Et=@9q=)|KIR^ZmuFbN5DT-o|&n z-z4|HBkm*Zik%yPYx!EZ*ZE3U-L748yChz3>kl90Q~mj_@%rcJUjR<6&tkS{x5&N-n7R z7jt{?FR$Na<8PnI?;-zb{NCfQ?BMtF{}jLP#iyt~s@rq%bntx}AH?s=9tSVx`{L^V zG~dsW?>`gx{#{G|zn1Td-;3`*#_wU@Kb_xWd;>ohzrXw-jdf2P2av2h#@B1Jw0H22 zpXEMTa`ND3zYqGGp#8<`OS9=!KF`jk*LgKQj^{~IxAbyIXBU1iARS)mU(fx`4ao7n z1vy^DUdw;_+DjxAO^OE-xPcp2_F9K5txKTwXlh&bLK;9PvDHdGYw) zHTi53b9wRj2X)(@yesDN;_){BM*GEFUOXP}Z~Q*y^5XI4-w*wZxx9G1$)kV9TwXk$ z_J!ZaF_#yQH~Vw@AoLgGI@asO<;CO8{{iwbmluzxd??b+S#O1}~gZu}a z|3Aj%#p6vL-TN?>tn%@hEY5`3bXpJijjH z^5XGUev=RUP#jA<{$UsCLq6v6;_;Ff9}<@rj}P@j`H;T2ym-9yJLdA@@rqv&b9wRj zhuq%)z9DWWE-xOB`nCPhF_#yQSNUQtFCMS=6W3Ee5sydu7Jnk<^5XGIKj!k{@#;S@ zmluzhe9Yy=p(wwK_9;eOUOZm%F_#yQNBMF7^}!_O^5XH@pyaA^|^@4i^sp0LjS<}c+BN7-WyLx` z*)c00@>l;Amlu!s@?-w)`zD;ri^oeo=JMk4eBOurV=gZqFZr0ui^nVfn9GaDOFriE zvbU0txx9G1F#eKgnZua(VH1r5|&7@pwEp z{fxQ1cs%7Nq5ran;_~A0`|+IPW6b5ntHk4j z{6U;=f$zy3TwXk0`*UJ0FCMS-V=gZqkM)Jne&N2q;_+VoOw8rQ2>F_#yQ zAL0D*6zo^T<;CN}_=ok?h|7z|v;6cw9Vvr%?BMd^@p}K5%Ztameq~}VFCI@mj`iOp z=JMk4`|bM*@h^K^e$BZ2_WEbwM=_TdkLUT-xAA=xb9t@P+xisFFOIpqc>F%;N5ti| z9{+G{($)uKE-xOB`Z4{Axx9FMSRcETiMhNurQ~BSFCNeH>$(3j=JIIY?~?yo`slwg zw-k?mIB4b1#9UrHUhNxmdGUBYU&s1dJ>v4>@g|S`Vn(^@pzO7hUOb-qw~F_Rxx9G1_5XJeUlZ%~{xr+m!i zk-c*fschrH%5;_~A0zJG2w=JMk4)F0*_b9wQ2?_WvG<;CN< zzligrn9GaDvwfL<%;m-7L;Q_=Cg$?u@s!8+Qzqu}h2H+gU>{;GFCK6D1^%S*UR+*0 z9?z|R$6Q`K-ue&9A9MNM`0w&Dmlu!M{>7Nf_x9ff`QdWJ<;CN@{F#``i^r?{F_#yQ zr~D+!A9H!}c=ZwD_b9wRj z2ZJI0!dD_L4<3*G0ZH~R=zog%>8DPmzf67>b9k%&cd@_N{pn*4&;G;qkw1OxM^E{6 zv@iLk?Tc{!DnEM4Lw^xpIq=QckKXhf^75yTIlTAZVfoX?e)P&;{`4`2x92Fo{OMy3 z&*%KUj=B3bpAY`w;`6Z|JIENu^&C(kM$=mAN$eU_aWjVh`-B^ zUcArFKgav=p8GAt=O6R0NBZL3;`8#aXZg{-pY31I@_mYbJ>}Pt|EK%chx*lfiOzm~8@UIuAxAsT=~9G5`vvl*9T|NPqOvhUG6F{}aZy$M`n$U=4f|=sa07j((~? zy@&DsxA}VD^)aX4eja!|xcn-)JUIONKgH+4<&nwa&%p5~Ka0W_&m;yHoy7D_&oY2{9!GAvHa#2+>ajf2a^|{ zzj!Ha{zp6bJlijI=@Rxg!e1%o^k!c$KM}7NpBJyk`ZVQ#gU^e{i!X}ji`(zu^S??# zUVL6$Lp)ZJ`~RvzZa+9$NGnUi`Snxv4K9^ zTokWo`jfXYf2V&e{JG>;FCMS_#q-7SxBcf6@YOv%|M{0AKY6r2_#w`p@pCi8<;C-r zzIePiz5MI#IpoFXPn-xG<^ugsclZy=-(7z34fmH1@&~v5<4*+tMDcf9e?|Qj++Y9X z$*_+@{_T{fe|O9MXE(oX+)$XDDy{`Bdfe>?p5T|U%n zaeQ-%@g=tVr|B=guR?vFJ{|tAgZ(1(&sX`$=LZnCz2F>K{9W}o>v5-zvs?P19wmSJ zbkM7Lj|-r44kRys_~vZTpNi)rK674v_wMIk^z#Pxd;5;LKmO?HAb;{?*iVE0Vf&k3 zI)Qlw^!bFxT~K`Te@6X+eJ^|5g;B(fqTY2pet?&MK>YqB_t7A3d|?)T^4tEc1M;`W zIRNH2Up#&H@Y^ANgw=nQ@#o>Mefl(>BaZZr^C_(Tb-qBm9okRzZ0k#yA1MC!x$#Yl zI}Lkd{Fw0(xjrMi*l_>&qT3;he-HgQUAT8;wSl+$Jl{Xy07h~l*bt>qwtzYB0>}RnU^hII(8sk$l19cPOrT<5bW8-~87#uAzL^ z{<2?`=lD~Czb5rU=Q=b!4h-!Z_g9#GgI~Qkx$KYUKOnnRtpq!htEZ3b(4VC2`@_V^ zjk7nl~Kn+p}5g8={dS+`eqz8mKc z3toTqA>+{4pKkiJ5AVnJ6Q4KE4*SsXI6p|=>_^-E=TQ&lC$Bj4%HQ@+;oOC~;soh@ z6qjFYY+8PZ|8|*v@Yvt&=ToFmzghVA)GdDgcpZNAILAS}-qOE~@uiOX!u(~abLViX zjX3*f!hRFwZ#*9HLfUSBu-^HYfBzZAkA?lcvJ`%wYr)R?{DSSP`9-}wZ+h2gBR|C3 zcqsq*3-ITF-+JfD#%uJSU%Z^Q`KZ|^l&^*OXncP8vd>em;Qc7i^%1NO$ZvkB9_&Kp z%_yOX42#;@U^2?n&R$i@h7w2Iou%52@jd*?ORNed_n;tKJ zzt_Kby*Rx2SHh3g;y*$^iszl*yWe{0^a1yeTIKva^U5p1U;PT~Htl5L?56q4hw)(~ zxpF1=$LE%y_w?U)fA^rj2ZzhWO^bKm#+B;|Bc%Nkd%#UrK zmp|+LKF{;z;a65HZd$xR*5BJ`zmof}cP@0T9dd||=k-VZ9Vi#JEdBBPQ1Cy(J^kfb zf2;U@Ea7*?KOKP|EdANTfBc0dCTmB5~Gl=seF#cAvb$kyZ zE`IiaUC}?xPu}Vm-#-ob!_xozD*fdD{2$M}ej4}x9`fC=|4w{fT)uMlZfX_jyL}n1 zHbVP!aAo^6UswAC`|v96`Fo50&q%+0;-2YW82_=q&HG2Av1M^RaUQ7Z-|P#{eKh~! z$};4j-<@`7kB_~6b^gLQey86U^vC&q;gj#-{fg`t@W)fXsJWjp+TZL`mHh$xPYMem z&c5{n+*3ceeqCHh7ob?#y7!AV&I90n4z!=GKUb;$=uhp|ChXMr7so3>PfQ;CwuAfR ztMH%oezDEx1D`IjKcIZCy5GEbyzw*iuX;7q@9Vg-9y{=dRebJs%>TySf4))<^{#lb zmOt#vHT+Jw*Vr%Mx0tQM-;MtBuK!o*KZ^WsTv)Su=lT%!5AVnLdBZD=uZ?)C;`Hz@ zw)FOU{n7q&zr^eKoqodBkI~L%zreq<^yh@XXLI(B`EfU{bWIP*zqvo~wbwTKhrjyV z!d35|ue*Ppov*?2&qHr^_|3OY-3{^Cp`Y~6XkNLGdcV5(>MJ4L-54+EFR%5>>sLd2 ztl+wec4(cx=kbR>e3StnxCVbt#(Pe^x@B?j8!vTt=-&s}pB?VoSFw)=wl)%3iZB%E9-gG^_lg%j{fvQLtw~q{>BX<7d=37xOpkg_J#Em=L%%)$#Lh=Sy5Jz@C*JA# z&)fKuluq2T{A_4$b|J*YH~mIFuTr0p-ahspuJ1aZr(V!Lc1l5iP(SQ{ z!&Th#+=7vX5a<52dZ;J2@55Jd&-xPAr#{nP>om`QdI#gX+xP3P=Sa`&h>fpYU-$U; zRrl{Ku^*uR*gibJ`E}R3GWThH4e{seYyIzkCHSYW!++p4?_Zr-(4)HdbH4vN%3r|m z^jlr=_qzJJ`hW7tB=}Vs_dHMHRXk_^5RdnM+p8;rkx)%z*=JMH`HtuFNO`-|$gE6^j}KkP2s{?advqut=YUc1t@esUH4 zk#?BxKMDP)t6#nno~LW`<}a`KCe17J)?Z(HC0xhZA0cn{0rt`QBlKdM&u^yaFaK-s zdHBa<2H0N^|GwjTI?n!vc;}E0@t3?mLQg_``)&Jd{QGmS-LiQ3uX?}Y`ga(gga6&@ z<3V4p;z~Wa)(-l?_glsL-M~G6@6dij|5n^zUi@i<^C{@VYaA!gFS6rnW{)_2ufjeR z+V@N^Os^sT8+@L6{qNB)*}q_?Z2VyVwC~$|X2s_fCw*QqvP1t^zTUjV=TVwJF}@w2 zmwi4^;rs&m%yPbPH?-e6o{P`te4g~G&y%R1CXe|5{oSjWKhTcUI8Si-gz_FA=Yr3x za>Z^x&*2I3A7pI2r#$0kK)(Fa#t!?4?*sRj$2e(z>vhf_pby?ZGB)nRF4TM+E1$dH z^S|f*HSza`k8c|Pq#r9jzf&Chvu8J5-p+3uE-!?5`U?voetxsQ-Tqu(T*N)wzrD0+ ze(N~L$KvsD|Jy3!*NER&d|py@e|qhYTkv^h3H|c@F~(0(d>gZ0nNgpY)R7P4oSfx) z&Hvo9-~w-^WIS-N@qqXeX$jY`+5Mm#{B6{2$|Q)Xw6H zc=&j3^V1UKIRC7-hx%9X`z1W*``Y{-@|W>D??*=NdYt<^W^aOhf&IjMg6*AiKY8** z#vyo*_T{6+L~-xWB3;JODYv?2r>y_49~@{SeaA|%< zNbh*x-c9>`khv$xkI_GVMg816co*N*$;qd2UHzlX>{ESdq{HurWwvj!Z*YzOpH27S zInvoXxS0(1bN;r<@pWMEsqp*IzK~C5?`Ng>Db?e_AfqH_M2Ivs_p#BdgD$m}*(5@;6_YX|IkMqa9 zJV{gz>`%+F{dOmzJZUe-m%SW6OQZcDuYBVx(*ITRuMR?gL%XRQ&_~xV)F1RmP6-F>2GTvy#FrLUwSaToB9!#L;9ie#O08F{EnCBxu_h! zwS5NJKKUf&`Z74UX5|>@qkYIM_S(n$Z!!?{WMClZiQ4B0ub2LTpeOqWf}Z^L_E``8 z*V`wBd{_6ZFY0}NIyhh`Rwt0Ed4+K%=Z6;{b!J99{u(!1L?>5xyk>FPnUnh z_#&&6r(H;XJeYu+!w#x_f0#~w#pk+@uNHp<<=d64CA1gMBr9e&($8!SuI|1zLHo}7 zA54-blVtKopG)w2`u)Wx{c7`bJm2g0Px`1cFgAHRRvuc(LpPoTUuKf(8TlH9TP+Uw)P?gae^@B0NCKRJHX(cgaX z0O^{Y$@n<&UwD2G?8ENeTaQq&h~I*A{-`sY+Ph`r#NUSab^~9_P#+u5_odd@4%va! zn%OfeKjzQ&+GlZvAb)}A#eRYy&LU;|HpIF|E~;ocQc;< z6REU4|6D5cN0YyuPx^PS*#DM2nF#5madmkczxLVl#`E9!#{Fa%D|;--~N6edy=@-S|D1EKE$?O5RUl{Q&oTZr`_fKlBIF zi)RLhb|q*B{{Q>KoHllQ;O@xSuPB=(Q??N0xY=b7TUU7t;( zpZ!sH81p}SzrJU>3ETGz&p=Ob{oT*4CGUS}`~AL}!u$Tta|?0*)BAl!|FiTzt^Y~> zGy5OjKkk3OH%R@p^M6f0)gR-2i1cmzfA(4Si{|s6_x>5?chk>f{}$t)B+q3+y?xQ_ z`tv+D3=h*ig;=q1W&+&Z*`GcH);e3LTZ-n2+SYE83Qht@|KZo!=hVPBbUJus`p&s>p zUc^1iRXVuE@wxByksZ(R{uSKwdE4u$f%LS#$^7e?y1oB(@H2~l_iR12THCI_67DJg z`bam$bx4#W_5O3)^*27Y$+&V8od=s(2T69d{p#;OP^sbj0`*ZuI*g0k^#8Z-FXVrO z_g`#Il*%jCex0$cl=Oq+*W}nH?mG)dJ>BtVR}k-u`Vs2y#Y)Kk1;2J5&p(;=dwgG8 zIj1U2Z(IMykpH{S7ADH2EweN5uieG-e^~xW%>SC755FI+tn{%Q%r8^r`7c5LEZ-u^ ze`E`>)7KX()m!*Krf=Wh3C_bcIp&WzP7@YC0Ot%zzWGA8uTWlJ#6A?;*EkuKf6DJG zwQlOeq4mWhJD;QeI_>aYqjUFC3HFJ0>uKc2_Otv4rrKS*pDc&}JJO!VeWBNXOn#^_ zF+LvN)6&`2-{b{Pzg7?ON4*|Z{;5v4@52(xh4eE8)Z-((hu#nE*Wq_B>T`57q(7ct zGkvi7MfsWjyT!u9be;87Kzw1=QzO(b`cD=4Wy*z#$wx>B>E`oDU*&^5xRb?%PhX|LfYbd>HYK5xB5QB`$}&f>mQJxg#5di!bGv*>2!uXK3CA6 zqy9VgdGztUrW({A*Kf#o8@H_dNAQ1^PCjkrQ2vxp%IF_hcV_!FUfA5OALj3RseY<< zQvb=fLb*6$wd~PO`i|LsDwWvou{ZFP_p>FU`%NRA zOl{kK9I1u+n(=h%M?*T2uT5>5zPDbuYx*sFApL8PhWeR&{+5k9-O&xxBh}wge_rdX zSiQaYqRJQS=hSG|>Wk?lumdyWAw7=27=MzBlVLnLhAYQ`gff@2mK83=?iw>Ss3^6bLu4eKkSv-pW`C`e}v~4A^*dN>%IQ7 z4*PQi?aBClCjZ4IILqVtcP2yqG!KOOf1&Sy_n*MGu3r!7b@6}9Cp*5GDp>qP)GzAq zB;|*i3+RXTUVY7wp4$JlBO$%lUk~YwPK12K?`Hh}XK`iwO!ECO4%u_me;dCispi6! zsgTa)%X+`S2QG|;{7&IY`I+Wc-*AoNduac0$g|u>{QnlS+waHu!^MjsJ(ip8Qutk! zFT}UJFq+=Ob>SxDna&i`L3^tHU!Dx<^`ZR=srALB8I>=@*Bmvu&cbXVl=C#MET`nh z{r91-hJ4TNsDI2K2AWfMQXhU{eeuGDknU_@Xb;aLH2p&Pvyf-GEFHA(sNMI@zf7iv zLcV=|ZR5H#|I>=^I2+Q>j&JN@ewIG+FW~=~e#fqzg(J99pH+UOmm0=*PoI6qPCq~D zc0m1iXfE`}8L#)kk+jVNB!99U@@@8Q*!(Yxc|fm!p#4WF|73GQ_J6W(19l?mll+j! zbsTGMn0?tfK5+h{aqq}nu=^b^kL1tKt?jY;bN>tatAz0{%zwIb93QAZ^L^C&Z14R- z{~hh)ygligo!i3ybrzbBhI;m$`4=YVExkU^w+j9h-Y?j%tp7gc*HfOp@pHU?@ln^( zD@`7-bZ!>v@CW%n|IX`ofbz-H&51KEcaHa^<^;c=7+?3)T-x4m-qSBXx@GBMeZ$sQ zDwB6D-EWsdy4~!pKAva#FrBjJEy@iwC+c$tkWOde%=F!U=FjxaKi~7cmF@KL zebyemYxeEUO4`bOzO}Z8;~?vQ63@R=3HjELPbO8EsGm#k`SA1Wi+>u{F9uFcuUUTQ ztlm-!v;H2|eyHEhqkCp|Tcg2_^F7}kwet-vKIVe||E0MtEB{sA*PEK3C9^Mv_j$$3 zKlKEs%=>PyvlUP3lq!!f2@C&f5p?k=2!S1?)k98_nS2Tg-h+amH)_*`&KVC z#48Q@m2iHZoSRCgSf8)p92x4_!c^Vvf8y=4JeS7r9h{$j$K#gs_P){R|?%Ozk^F8tY2NTX0m|wRW#-|tOgZx9RUorprv5?;lzTa016Dvo<{ev`C zHSm7+USDfY%#DR|9zTD}>gUgF{VSiGZ>R13re9sL_i8u7|Dk;L{%>46&|i3NeQ~)J z{_oh;pnoP0|H)Tcp?;=rg!UV)NgnzI{&eJx&>o0`WA!pNdAFbM^UEYL{k&cazmGqf z@8|e;^+lH-{42}9Ho0Q|f9=KafAvSm5C8WN@{@nlpByiwO)ndh;A}`2{%rO>@IUz_ z^KU-d;CQ(B>d}yHVRDn>>*6o%{d39D>F|5;(Ovt$?sUlK!O*(ppPRgI|No-5bN*4+ z{tx<E~^I`8NDZX0~>(!k_Pi z`FX9QXX_u>x9sv8CVw9ONSQI0$Ns_mNcREP@5aZ| zyYbhz{0g2w$LCX@Bv_w6e;)lBceF_YbL` zbN}c&SpTSo-w|hEU|^up*LNt~Q=ayzxEy|O9>RNI-621c{^Zxceku$9Jj74n`u065 zcdP#{_Er7cMaU=ozmLfuDPIi#KR1tZH~S{eftP1S`z8WEhyT`48fh&4tm^A;=Z4aU zc~ASo_`ZGPL&-aXhf^bnL;p_ZFy8g9<@XalNBzEvbEPt0>6^HE4cD*rO}sjkzD;=> zpOAmMgWrend?@|D^Y`o5hmv={(1-RdSo!3a*d9s`&~NZ)7yn=Go7nI9PxW{E_+BsG z!0*+*iR(k@7x{lme|$Xb`#n08{ulhcug~`fr%*nu-@iDN{y+Hp@^bjSbprcYac|?_ zM;|1|Z=yU%_lV)H^>c%pW?34q$)o@Zy`_LH-B&ChCW7**)baQUBA&@O!0i zVjT7N4)%Tb^%Js&h`~AJ=kXQV~H_GX^`25XBo7>O9KkD@$|7Hj0c;fl=BiP{`>5u$g=-1Qr z^g}-H>$`9JjWIr0{SOVL`?+7b?+ZBJ7tcqqf1CY@_Lc2F^u_dl$KQ|o`fbvS?~M5S zc>gg!e|hL&ki&V*cHXj`uZ!mg4`M%to!cDFUFJE;eMrykOCQc%w)2;Be*Ut~TMo}J zB|Nuz5B?wLINQ0)Q$t7(_qIO(^M`nUK=o)B<>&e+#&?$gXz(Y^9u0n*=Z|jUIp?1r z(tZt$RM%|1btp5GT75E^7|GnXerEOy^`FDMi33eZBLO*Dbz6=eav}UbEslAL@j2mfwRs&rhy<{N{q6 zlic$Uwfrw7#cFqV0&bxA&9xHe*Ud%tpW8Ddz4*;&cl*5~|IkqWU5Lku@=rhC&OuLb zu5-oDNwxVa>Tk;ZL!sB^|8YF>4=ojfze3mj=xVi)p5$lT->J|S>=@2*H-FL4|LETt z{2z*}f4oPf;{IK0=pWoaS`Y7oank%w`4rNx)lgoXA1FVqiu-BcxsA__a>!qPLPhs~dst`v(!PZHJyuGaU64PO z%MTPr@7np&^6#k?Z(T`H9+kiC=do6bC?EVdWUrLJ{383FBZtBMfB9E&{|E9vbSUJn zxWX@DotgGX^6+=E_EKEeTD5DOO!-?pNBFf&O$GgyznkO_9SZsgzu3?Y?H&GE7@x}S z|5D4Wm|Y(&uGx8q`)HqUV}FyM4?Q&%%5msW&_l}~_P53NhQAyA2&jhz*MIoOh4FWM zBlv$7!a2gVDdnHo`_C5E?0n(+p`f3q3n6|h^o#qucO4nMYxU78z`mn@>ikn1zp;Po zOkuN4WM@?6)v+8^&n|4{iuDQ+_TZ3c$6{lgTGwO9`0 z=kepAz5M$X=PSVf5Pm&lJSP+5pW@4^f94N$r&2us)cuw? z9YT3Zw^PTDyPaZv2mev4zr6b+75&`flAnW0dHT;yO@(sH&$ioj`@;SO`zpV<%JI;y z$G6X4w*FJguUuIzY~uW_pg&W5&(gMkm;7zz7gy}6ebN7@UzO0V`R1DG!Kqr;{4DoV zzfitfVZ+*Wv>xQ9clxhE|15qg{GZ@QZu+J7HU5V5Po50z(QyB$X?{mT4^Mmgqwcrg z^Yg9Tn&LUVs^2Et5B{dGyU9D{+o^8X=T9zw@?@y@2HzWgPbJp_JHHAluew)}|YxcW56aF9iWA$4p!LJW`*~R+BJLP4xv)U)r&lJ~l zU=L|$)cP;*}Tj&P=RhA#+%O4N*S~?lp;Y4TC()+Hpe=fne zXX6p#90xn&eyHrKB_H%7U+%TP4 z{OnxqfZ1{Qp(pQDt^8L1s?SpCj_KF&pzyi{K_%zz;6(G9{HcjA5r6g#v#w2=L=YU$*;H4 z-C>`hfBEU4Z?z`Q>4hDVAG+k>UwdGdE36l=^FY!^m_!H zocGGV2o&$LlOK1hF` zzrXxPn?6q&b$?Y$AN|9|7mOE*>n!`P{LQZ5dClAPY!l@O<+uG8^5-4TZkc~*8|x*( zzNbE+|7i0x>AId7GcS z%6DNj=+E(!_%1{Jo+L-ZmGYBFU-Jp9E1Uk**}mvcSReb(^#5pH=)Shv+*~+&K5g^D z%CYqJ{(IC9=7;t>;^WxwwaolqaXmr#p9YU%eyt05Z|L0_?uW*`_E%J195TOv;&EK* z2Zwoz?N1pB{y()78|F`1eJ-SXu6ftxv3~>kXA!r7{uqrTuut$0XkvYf{zVpF7vo=% z{`Bw%Xl3RtUHFOon(@57e3_%B@AwR3d=2_f@Ov2k0=~YGDbF1+f2Irm9Z{UxwDSgC ze)z(L;6FNY2ERkTP?|UYAUx;#6V4}|-$R~}D|hYpMO=CRYuIPTU(8}Xfb+)U%$B7q ze^GqDTKt8VTcJO~Kjjmad*mGc5Ba?1^WT?W4*sn;m&W$hBObvX?x!ao`5y8w6mMC6 z`D0ycpWJM?vV0hy2ihZR_Pm7u<39c}?&&YY^`}+Hr;n~--`mZJ{EMhR`iU0PwqHiy zhvOsIud>6hbmaKF`IGYdj`1PnSK2;;c7?qBNk1N1{^T~&uV(MyyX5NP!ihC2-{Lg> z5ASF7i}_*Wbojl^bqV+})UtQ&|Mz=*9Ql(joVsJ@3)biGfB!DX+y4ENcdR|1u69#N zdi8?*Nd5hjW;?W3b?UCkcW@v0Q;7dotA}ERv{}+4uKN;rd-E;v8mPH)rJ@nhGvOl06_fsDAKkn!6R;c&%uYta^{>;8${=ZlY z`q9Ca{vEOZXqEi|ato3FD9Ug4zf=kJdkI(8U)}pF^ylxOf5Yt>{8mt|j{CV?^nPOX zhxc3d{<6gWfqb&?L*afc$p0MQ&l&dHRrGK4>wiu^(8XgxUmp7Ww=o;;FP78&n5QTt1E~+P&G@gnbX^D|3Fmw1o2DJjhGlFKNG7 z4lCd750b?r&=<%rweFiAO5?&k(_eePALMsko`&B23F`0V@O$gR7ShN0u~!jr-K}2Rk?-n-QQQan z1OH^mw@!4e-!OOLI5cwRXjp0_W%{aU@S7?Rnf}AS)arxn1N|9pffeq2KTS?P@*^e_EV=f3%ia($2E<3j76^_xrRhdg)pqW2@}&krzujeEbW!OxNX zrtxyPDn5Dh!iM#?#h1f%8U2yz*!t7dze&c~|KJZQzf;(e@3I_h{}lG8e7Uh{{-lWO zyeEMl=`#Bx`X9>wQ|{02us=c`dT0KlPc3flS?z~^cKE&-mc7@S{=yS*;>{N&D2qVUvvTekLUa@aUO;ChklrUtLZn&C%@4G z^qli7#&1~t=!4`E(qsOM7(Xb#;PV8gpWH_KusdJ`Reg`>mM5D3!EpIeAquzcKdbA?N*WFwDsRG zK3A4PeZGh*-=n~Jf;|uVTjhKL{d#fnP9Ntfr5UuBKZpGrZutD5d}71iqgdFkU+RAi z_e^)}ba=kBbhnT32=xA%4{+YWe9EWp_xwvIAzvv#zp*bDW^%-wV;Wi}BdGExU|y4C5m?KF=Sf{=q(Esxw>mUd>#vZ?*ikeW3oHJGW)&jhDjn z#%Or%_C1q@oQr+n-6UKPEM# z&-Sdg?%D6>kPr87e+Ba76SdZg{ho#Yx7nB0irFKU?<4Y+m&5Oc3kU3Z<>hdF*tPL1 zRlb0A8`!1p%i$_NQt;tl!M-GW$!}pV`uW`pKhh^F^QqN6j31GN^Owsj*pH3#-@9w6 z1i!-{^wMMJFF$tx>eK)qPDkf2n|;Y-Kfhu8XXKk3sE5pA;p^f03%2iVtRH+M+~<5B zVHsD}v$xN1&G&!RapmvD{HFOC@HzWO3HSWH;=kuc4wyf$J%|1@d-Atz{>$`(e*yNd zLB5K0ANG$L; z^3*Tp&;2PQ_J7zvS6NAYIOzMwAU|3R# z$dCBB#iPZI)cZL1w?g?rmT!vv3+E??{2Q&c)Q8WmFLrwGAL_5=_hYy+|8nI(>O<^@ zRQ?q|kGWb6<-mH0=a2Z>$iHd#orN~j!9K^_$VO_|&L2koq5q6{{N{r1Lo3!pI+i}= z+grO>uKe$Y`mHk^Z-10OQTfI_esO73@*)1W%6-V&|A=3GevwS!p6|u-v0bnZ$^9KT z|2e!r>x1pnV7@qq8GO;|TkoI!YA6@teA|1Cnm(|7!}}k#d+hsTzS#E%PSy8*p=Y0m z8yLU2uRrhm2s^${mFZLez=JKny8qt7mE~pn>v;b$+mD(u{|=VZcWB-%w@4))J=K?gChu7K+J_VNCqcg+ZP@d%!|5lu zkF4eU`7Hi4_6KQS(5U+#D84i6=Md`e(BS-^>>7SBQ9KmZL5@CHgS|_3+5Q+lKZNty zjK8ngzKt5jJMw%z$9jeFdY#K$D2mUA_9+zupHGs&?{knRzu(?}GGyuM9Oo?36W=d@ z-!_mQd3_7%@H%!7>twk8c7Fdh^oqUL4=%ui$H#7aCVC*DW< zcd%Y%|KD*wUn>Rq zx2V4}*`({-8TQN8eZ}jsK56r#lE<|?=G?ws4*A&kKlEeTxqaEs8J%(dh4;7lL&f?0 ztaE(rH^BVg)-TRF&j$yv{4pOh&hu~$@Ln?`LkOto=EED&8{rg7f`z z&in2CZ{z#XdAhiN-Pgfs-*!Pi$DG%T(^MKOz4)yhe_;QT0jx)tih=tV(9Y!eluzOP z#;pAN7R6c0+x*_<58^G@cWRvD$dRBAlxO`OcW!T-9vnlQ#M&40Gx3r}`OcLD>*(4) z@NqrJi`Uek7Xw(=K5|6*5uS_R7o2~H({p~u{KZ{fY^>P2^N}Nu@t0lV_2Tqh=Tnl` z`g*xgw{{aRvG>FL6Mk*@OZQcJe160D{C?M;G3WE*OXBe+kMB?I3+VBG?pH=XlYS#^ zvFXPN@%bJ^g@Zbq{zHT+h+m}FP^Ua)i1>n#e;g~Z-6hCsF$JKdEfsbdGUJe4>o=? zJuQC4`p+iEjs<;cjE3u|@0W0XJfQt3r`WH+<;N=rY(IkXZ==1*lS>#C#(0XczoMtIdJ^aj{O}x z|GDM%Q~NyB-rM9zNgBp+8^@BzwUfq`zlTx!~O~IH}HA0Z{qW^tD}CNu<>oQ zPosD@*wqThk$sDK=;1qq+x)ju+OW9jb+?}_A1^F^C*(D5MsCk6T3DE0**U)ddv zQ>wqYxzPV-*uQGvlO7M+o7$R2U$e8JUK&0>YV$p`e~9nz{iiS&?0|T=@_*^2kX|;+ ze8Az!=PTs%m|sA?R>8OmyLk+D=AHU-YNoVd`Xl+XqnoDBm0a5NL;I9e{*v?bQQv86O}LL`<=z% z5%1dik>u+>??C)R+gH>&v$j3ILI1&em(5GYa~sC*JBZ^=4!=K)&jaH1v-R$k1f0C` z684E8&a(119*_M^ng=v|9}}M2{P3lhP#)|Hsi9wUesX@t{D|Y%+<34zXIgizki$2? zgF}4hAYVD2wsp(d*%fPt_W8{#tJp7K`Lq9@4$sBqUplj9|A%e*wmx#^LK@S{V?Psr zyl^4#{7^raGW8jJe}J!v%h#|UE5ttx{a0LG`&f$IdXMj*e`XZ-xpb^<=`@_jV}9~e z_TOg2<EkL`b6zo0O$A6%s|g>eGqcvw%_{Icr2zLvdb z97eoe{cm{|a(@CoaQ2q*0r674KhM8yHbVQv{GRgb$iIf?Y`4miw;!%y{f7E^DbsrC zuBBf+anCqJ+xvs^uY3P#G_a10b>GU;R%*xkex`y=uCRr-XF$mK~Flkay^~?C-DLw|LNs1HHufqKMb|9?K8?Q#|Nw6&w=$rObW|PJ-vZ z!uMq&Zohmy=vT@2d)WKo`K60P{qKWIys~u5^1X;Fc>qprst*Kf$1epH;#ddE1IkDHVRjvMqZj9y@!+ASd`|n8oesRePQ6Dui*D!j{l5hLC(o08-{$|W z-_E6~xUN12J3pPCgh9{JziS=wSH<@)*4>VHJZGyvly4cov%WfRU#_@)vH1y}^E`_8 z!H?oN&t_i`-`V0lqdv;6ciDQ{^l(4>=SL%n;*sW-P=DzEOIUv-k2C$k`?EhY{{s6p z?EfWyAA64ewOkI*jjN$wT*N)&CB4V`gZ&hLA78j{dU?hB7uSFJ{i*oRi--@+{RN5x zjqwBVpP^sd`(}QhTwMKhALLUXvH!3?e1B1Ko-ehw>>l-J{in|U_@~&net&##VQo{;=cI9I~wSuUUCxE}-ddJ6Lf>)$^A z3i6jSmEyg=;VR;naDMPV{Now;1DKt(`e*;+xQ_gDQ=wgoxU&A0zv4sJO4w)C!1!}4 zw3G5L;hz7GbC*(#YdtkJWc-rylSn@|?c9DkaQo@$!0WaDyTSPj#)q+4$V1P{ux}ja zJ|_P`|H=9Ool{3PQ^~(Y`xL`Gaeoq?7jvP%Py77Q<||0=yY%nG`g@}kp0{6uJkm%0 zW*@wK!zWH`S-PV>PpOaGa{UYK-}L!o%jYlc^Z0-06Xn-AKga)bJRKVicBH`hCG3pr ze@1+M>ID9;g!s?+zeIc<>%-;t9orW)kLRq%3%KXi?Bnz|!Pjm*7WY|kp23H#eyY{G zHs2DzxA@PPhdo34H2rUI{@*<8#rNSq4NhOe{tf5!kOx1wg!s>Q_Sn3lbsyhv-(SqW zJY@D|KkUx{&fk)KExf#DzrXx4)<4X?z<(0$TU-eL-&hFGrx*OW#Xrp_;`RLnlmmQz zZ*j|bJ=SMX{!7V|jk@vrJ>dSv>8EcQr?>eR&hG`UUnZ~5X41$vL7dIBar*z#^Z&;8 z7tZhPozLvNp7p;9|4eavaeDE4wjcWUaLny@@_Dwe_31T2 zuYCjB58(0{ar?Y;d+~aXuc$xx|AH$+p98OIbv`%HcxczsIt zDZ}&=#Kp-mK04-4BhKq(pTy~07r{{Z4 z`<3m-_a|59d$F9XSJi{wAL}i~zb)U0-$Q=b;=bd(#O=lFz5EID!y%&!Q~CKm_HS`| zzCZKFenNY{BhKf=>s5a8di!p7ZZBT%^YbLcpThnC{vY-SH0q(emOthXqtnjqr|QPx zTiGq!XJGRa#Q$g?d7Rse*ME%u%l%0)w->K}kPh)HVs2k`-fr%g*y9 zFRm{xFP^XG;`ZYD;`K^D=Jw+CkT?4qb9?dnKcoG{{sVCPXLfRX@p|kZ{3ZSSV{U)+ zK^p6b$u6ruw4eOxYlmp(;OBmb^Kawp_Wda?UpkatGj@o@a-O#hdkpPBuU`$ z`-1)_JuZ)Q`MiO2czu{IezFVpw}te0FD}1re{Fm>|9aZrs{7T8$8&$wB+4(p`kZrl z@%W$k^O(zv$J_n`+Hd!t7nc{0*ZNY-<;COo^ZZSGAH-ZN$KVMv4JRb9VtZ#jQ@B6U6B`z->e;V=w$Uo-t;_--oVC!Qsmluz>@elPEb9wQ2 zHb9wQShtxmF$6Q`K{zswx>7Vx)myh^QkB^9RiO0+S#9UrHp7w|Ni~ESni^qHZ z12LBuk2iU=f6V2@<2C<@xx9D>kD? z;_^HAiRB-2dGUDFPl5jPJGi_!iRstv50aS6i`Pg#=JMk4_WU;dTOuwm9wYgf%ZtbJ z`2gf&F0XZX$;Vt?JU-|j)<+{QFCH)biMhOZy!P+LTwXk0`W;_<5gn9GaDtNvmxFCHJ{KS*LOzuiB>{*{=^ zi^nVfn9Hj_D*u?vA8{TpdGR=LdGUD3$6Q`K-t-sWH!+tNk7xU{|HWKhJYMO?TwXjL z>GS-pT``xJoeKV!`GJ_ri^sp^_9^D_;_=Ae`ftqT#p78%mOtk5;_;G?xx9EhdxgJN@T(aC!0g zaDEc?JYMoKmluzJXz@QWzm2%Oc)aX$%;m-7mA>W!;_~A0>fbS!7mp9? ze+QG8%ZtZLKIZb`@n*lUJ{@y;@p!EN+V~xFdGUCb|83aUn9GaDtA1lHuXS!dU&Z=l z%;m-7_q%<^db|0{i_1T@KFs-T#O1}~t^6!s#O1}~k-zm{aT{@Y@pzsO!S&Oa%ZtZ9 z>+_$O%Zta8?~s4STwXlh>IdbExx9Eh&YxuYhGQ--9|V=gZq zkNt~Qe=(OAkN^9+t)C__mluyWK8E>0%;m-7E&q=&zlgZJcs$?pIKa9JU+~ya!JhP#pB(7H4*O|!+V^$FM~Jw*cs$}mg!O}n%ZtaGexQ6YmluzB z{mR5#UOXPpX`eDNmluyW{lW8?%Ztamd=hhc@p!#|%;m-7B_DHn@pzjbpnYWD#pTOA zevR)3tRKc)UOfImy4EuL7jb#o%;m-7**?3l{u^_7@p!90jDIng7mt6>`Zx9;Vf@(1<;CM4 z4B`6{`W16|@p$V$SYM5~ym&mu7xte_%;m-7Q9g_x*nb^ydGUD4Q$J%aFCLHY+aKfk zGclJJk7xa+Ag}p~xV(5g>u(+J7jt>>c<*1Cn9GaDQ+}29A>#5`=kd%R^N&o-<;COo zQ@=j?AQN+W@p$V$w=uuqey<%|UOYbZuY*a<<;CNze2|a1ym&mHqyCbZ%ZtbJ`8wod zE-xN$&mkXkdGUBlAM!Dm7mw%jw<#ZSdGUDbpOBBaym-9wkGZ^fyz-B^ym-9NzXmX# zF9Q-}#pT80B_DHn@%X>D`B##}TwXlhp8w(rtX~CQFD@@05B>jng7=HLym&mzNBxYs zym-9yBj)nr@vJ}SXC~(I;_-aHRpcLYdGUDWZ~pTUmlu!6`ty%=!M^14cPws{xV(70 zjnC8YA8dhloB#ZVabNLx^7lT-$6Q`Keh&3}nD#Z|^0KcVckO)kftbsS$A|WXe`Unw z#pA>J`v*zP<;CO8zGHljx%^-3S|n>^ZIJU-^|?*EFa4f`E+$~J^XS)z z7x3Hoy!`0J>7}3Yrx&-6`F!kGAM<(n(|-$m-r@kbKfRS7^Sj^V^TD6q+8_P5L%;g` zwqN~k@cB;Q{qn2-?R-9M{_5iA;_sD8H{rP!F@G1o7k`&Oeaz>@@Bb_Kyq$mXX?$Mi zU&xPw797`JMdfzx7}Zb{q&jSu=n3eIB3SaDUy-ABZ`9&wt)|y*NGi{3`jp zo`c)3^FB%HmTt~DJ;$d4`d2pM^5XFi2Y>j8=a(OLfBD!>*!V?${;d$-zWOcHKjNHZ zzZK%#GyTcim|wVm{D|{;#L3&mc=6PaN#uX1+O>Gv{J+c~{NyuOZ-)Q;FZ_IfgU@YQ zTy}AI#lH{hOPF7~U;N0oR**mZxbry20Q+-o{tG^S@L=$tm*2ejJm$aHKYK8P^BC>_ zM{{fD2QLo4591^GeB1fFxc!*>%ZK^@2Z{K);@Vf-U*5hi@P3o--(GZ%|APCmKj;Sk z__F)cBYwU4bynOzSn@OO-!5)H?fe7#6YTq`=6+i*dK}++CHS$~{OY58s_1_8igT|x z!q^`I`GZNt{oR}O;GflQ2Oi_{;70PM~!c7nqJk$>*oK3{bOJ0`7iPP zyuNY%pT!;6!QX9t5%$l@Jy%>qJt7WAV+-fiWI}vwjL!%Ce1oRP=bfsrnE%&z?fVh& zMLgbq(fyVY$JX8t^@H_=gW!92tbNMu(0<~R>R*b7U#Q$Ozd6P6rhLlEANwiFT?@Jz^pwQkp%=q1uhyM)XXQI8}UwrT&`Ykw~*0Wt6`yYZnR7&tugr8v9(?S2~ z=lr~h!&%th4|#lug5n!=L;EmZ9n(E{FzB6llBIt;pK6zft|aj1D=LnDEtEs~k20<| z{MB?$iQ)(RdN9HIGv?3kKZbQbtH;Cn5a%A{v-P{;!QiiZG#}#RYd;I$pX=YV`4IoU z?r|rMRPI^(ouNGHXVl~2m)t+H*!h3id-K>hk1S6xm`USB_z#gv^SlN8Bhrg+L? zQm%59XiMdkkFqSQY>LjbB-^qnTe1%7pe{>kni6$T6lJ@b+yk&MXsimDJ-U0lT0Ofx zy{uk$vvx69GzJZD{}^D)_OuD?V#<=c%3K(3Yk$8N@klCqx@HEuz+wjCKOes@@ewtkJZ zS&1Y6#1po?Dnvig|6Du|?bq7hrF_Uo<0Z5d^d}#idUr2@o^w(Ah5cik zzry}*0)Cf_8>G*spm)?GNM+{o1(E+69$=Q^NLREnn@~lTTW{>((r?pQNW>ZSC$5 z#?{S~<5RAGl3x0cvm0tRo9b*ol>A{|ALso63EY3+^j__ymfzE3`P;O~wqpa%(c1VS zmVdRUkJG;%_W)S@g7#J7t4Gwn={b@_9sFC-&usaepWFVe_G!~5XTP0(Ha%(UtNm8{ zxzIzudl;7^u^VyuEq_n6-<+ac)YWHSD?s0|4<`3Zsh!gL zH*B)s6?fPED)UQ}pLO>o)H}cTCm+W-ZTP1jcKjorl$8HmE9@%1uYrH1m7kIG`3(+# z-&kk+CC=k5#OJ5}WNrB=7iZ?_r=9(%vi+xq_73fyXzG?Y_iFEiKiFUGudRs7$8y!) z+xmSx?|-iMx2S#A@k#vR>kz-b9`_>PoEFDN-h)7Tj$e8oLL1MC!OrRZ1-AU!3dE0> zdoL2s?_TYN%2(~Vjsv*=R>tp7M{NFj-lsk>Blp5Qi~hlT5R|^o`OWJ%pmxNSZ<gG>tcyBe@FYD}?(zkry>f0v9U9ZFaH+5NQXVSBM zwz~Tn;?Ax&Jf0MNQTpvIw%&-JFM6AF_pC|z&~LTtZCkC~sEgZrRJi)bw`47U|Gc{|BDocMi+OdY)rZPjl_R7^*ro5;&MFSY`?etWLE6`b=05dmtJ_m`okx2 zFAV)2;~VXh<%b|&#oHU62*fX`^(SaY+!NDjtbP4Sv!&mZa_xhAeCWsK_>WZ6?u~u3 zeeG6DAIEt^iGR=bVSLZ$s>H8Karw0KL72 zcXS8h?9wl?#`(($J^}ot&&A(u*qF8LS3B$Ci#B}0_=&Zfd&R%3HH~^;AGE!Fq9lg< zmQg<9kJm;Tvq*>Eo8qbs@m}k{m^9xNa6egFykFjTz)zNb^5}0rB;Nly+P8rCNE)AZ z$Bzd?=D+@C`-%pXgE;jLKP+l^Vnq0AWSnc1)8z0(_U|dQ?|j^4+|$K&XvNdYzd_=Y zG(0yU{FSv~oeRInwvCV%^jPgvGyN|ace};x0QqM-) zj!OSB-dSGrCZr>uR2IK?{=J;PH~lCnew#_m+gPsR-=B+q8dLY=Ey)-A&NdFbi)Sn4 zqklF0xLe9^+J@gD|F$j256^AvAH%5sb{juG>Egim)@l1&`Ru^EX@Or_gO$(Acsl(Q z`uY|ZAOERY>6gi^mQUIL#`->92fs74ciXez1NDlhr(wq#{~hIHf4QLnd?UT?$+;r> znbz0O_aDIrsxjWPzxO&nzP>gqKhpmK^2y^{{rY=cKxlL{RH|^NBxJLRr&<{Ug=NYu&H0@ zThj~ePx>6**}l?GNKgGHy}kb=y4LlZxYNtVCkI{rw*2HaywfhYeo_ZL6?&c@L;I|C zaq}BE?}S{ddxD-q^_0x-S^ph7pudnu8gbSqS9RoGu2cSCf1y7)ypum27g{jhuswAD zH`QeORdu!1`!#sy?`3}j<8Olf3iYpt-jYv^gD>_Q{M9fnJmS;ma6cyf-cwERrw2cj z?-cl3i+)9U=95l8@H7ufe0|#ASReHd;{)wKaq!y4r0`4mPa*#ucxV4_f}b1tO5s^R zoDQ|0SpS!B|NG@WGF!s#~;1_m4;?uwE z^d08|c)lhYAzv65Xh$i(7WgUK{Ch-yTDRaGc1_2P1ofQp*^?Z-Hr?V_KfpLQE+)I5${m}ljAF&E*e51w&$Qp>M* z_ORL6ku?d+ho!HL_TioRseP&DIAHCw@c#_$CH(4Zsi!D^<9z=T{-Zlw|4PwLLXVqa zZ#d4m@}p}K*1uWpPl9$7`LX;V$RF|WN+xSNavPtpdX=L6T%b42^t;D<%T}ANc8L9> z=P#juw5O0)q9=Hsc46al(65i@%Qx6B+0E}M*j47+(-R!B_QTqjX4)g>|MZNsv)Uur z2RZ-N=9oSkZV5$jdwKacrOk=m`Em+W`N=W+gC z`k(sCmvY}k;@c`zf+egG-{&ryTp_MDSep&FFHwNo8;K=`m@qfX8 zuriBtukYl5>o1ur@A<6Q^rIfXyj{Wl!*AnglBB#xO|SiKs^s}~`HjD)|9)lhoH5~8 zKByciK|aqEN2`kX&iMSa-{mabn9rk?HxWn7JXelq;aqg9*tgMIQ&CL$nD_&gBm7-F zC`LN+VgKa)*wM;46N_}@$}8;mst0U2cY?q8miMEtWISh++7OLGKi-QyTd}g&#zzP8 zWd022Yol;cP5i50mqp7We429B{|}!3lJ`3UKht-8mV-(Beg1X%l<>d8pxj{c*%d3g z@p;RJGS(w7&;2d=`v~P%2Hf9>mx0g8;*MO^O3NS5KlI@K`DpP3lB4-@k58Pxs4<^} zO+~roH|+QfIX=G(cK=TPK9&2aH=42)F8|6A;UnbA`>iX#s@(Du4$X?3LLny!}^a=Y#{ukv>^*5g{i3HNmMSr0``g{NRIqf6-+x2_7*hTYs zxdC1dJNPxnhaGVM{v(F{KV)2oG+h3e6_o5&uqTb zjT3v{>Nea**+%>u{BL&S#R`1qyr9?&Vjj->D_}p^er81E`tWVEKh9Uwx~KAA)&u*}bRSbL~R9(6_qxcK6hFu;p)zXnSZol$DN%odteQ z`benMj$2Dgt=$Vs1Dl?-`@1EZt5B`x4a-Zd9on;*{jHhnN1@-e+0reA-7bXd@@1vg zPO$tQx_-){YFR_(I+J+(P0e6KFo{4M{Ln!lO5i;fdd zIDX~)3EFpA#L6ou9uz)yFU9vz?S!NgmOsa^Og6O|Kbwno5+_%tlUeMWaVAYM<8Dr zKOzw;zi@Q0*vd!hAB#dh)b}52KCi2M>N$UnJmB&xe$9S=aLI_vU+AL|{GRk%mUQEL zT|SK8@tx&Qf&Ypn)AIXefu-NJWM(nF0lkS~-mwJfq$_(ZYbJ~A`XA*-!)8MI*K+6u z(~BWbo4+l8oo>FfaeuGY@8qCK3M)al48p!LnS|a1n+NebQ>^rr;bem84}@&~OCy#KM<0#!qu&>z`PY!|cv&J-Q8DuF`(5^z467X7j7Qd&}@1p0fT4$xq7EtI|ES{$(hS{l2zhPWY^;n3Z~J{a3s8 zApLkrBC~9TEl25B_0LNF6-YN_&6&#ODnC1ZR=M{eYU$Q2?+&rO9KDG-epmDda=#P# zNXY$YcKnYnPvZB9T*c;O6ned38S;xlPqqAd=D)N#Q|0(vzUtoc8{B(PZp*K%m=k`L zzGhXg@Uy1AJCuk_cYg_bY7(VS^Y_DemGzt|7uSLb&tkiWIRGJZwMLC15c$@&qwAFjDl`M2$t!up);6?NZh zsx{rx*T?NU=C?9$Pghc&3AC@JXMW}Z$PLeE1m|Bt&+@eXHK31HBr?Utu68Xuld7yYMyZsNhIeDPh#A9}wU^iDs7{vpsuaX(dMsMoenfZt&})bit1 zHb2bcg#U+;|9GYFC-jXmo38WUAT$Viu}>^NLVD(3au@ld{Hl5RS^0-BuF<~gJb?Mx z{B8Ti-0#zsw?uCB#q;(1j`pVl>Er01Yq8F!9c*z=$A6^C>35jx2$Y|yq@GCsBL5NQ zPrFl$d@1MF(2PsB<+p|Aq})p6JN{ro@;9r*zDfP-&7k3VfDrou_;}!fS;%R={w64~ zeAQt6N&Z&V-qduV@8f(M>$TcVl&>jXxpGF+rTt9IwqFVIp=S64%hl5XwKk7RzZWdqj_*bL9SnVXjRzUt2#xoP~~6#MH-$G`a<>r1KsKeoP9 z`hR?VDgDp<@Q38Ld4sMqfA9nQuJpR@tl3LBr8d;guTO3NePR=Tzh%Sb%~r0DZ=yV8 zeI@#n%T0sM6mQ%_xixQisn6o{TK^q8f}e+Q|J_geERLPc20t&xyX*gv7y2w7``Bal zchC0)J;*4o^sm3p^0sVvuFuA~eeE^-uJ+^EzF;?h|LUvu`_p|I|JK%j_ip>WXH&Q6 z#jagSZ~NcQo%a2eSL`#NpHKgm`wxkPeXpyt&-(iLbg6%uaw|mhEza(*t+jF#`3~2b zw{K^;zA3`JU$Sn}^)S=ff17KwrL_NT>1pX_Eos|Nm_7yiwKccI-=jTsQ|4KZxF_e2 zq+f^kpP@e!H)p>lz3rcvUxL09>5PlnvDW6hUf$d1?XTpwI+a_ON`@KVyM0mlq{n$p z>2Ix|kH!+2l*Fl({vr5a=Ob0wg0{p*tAx3d=X<5ku^lK)oFv%jPr-!1Mb^1=N6 zoz8B1Kjqp$=vhzJhxH?UoA3+%<=LKNeHf3_(VG_Hoyh-qYn9}4^i9ZXcq$M4MCzYT z*?5_$&e>2RHkEH{v2xV-1g-A<*xml1Q1*-biL|Z9A5#9{@95E>h<-Kg_#OF5<4JjP ze~0q#kazIKe85-hi+FHO5HloR-o_M?0#FW_HokIaV1m&!@oPvv!xa$5R}{JYwIMbiIc z=MPxE(w>~ip8w=wtSs+aw0wXUr%{~FV(AN;KP)sC-yOX9Rw3(4!d6X*l`D(#%D0j~ z(6z0t5_|u({UajnI6p=Ev6l2Jevya2aKQ0G_P>8w z1OGQmpSn9Cc7E-CzW>W#Yy8{exe57wsyQp=4Bov}%6Z%$G5$K@-|ky)`96`Gmfsye zZh!X~?8oCsKY90Nz~2w#W+eUO37by+d;;l5?%tC013B#LgRg;sh4f;iAG|v&>FaY< zl78U8LjJt}x9jelq<7>-B)x0>0zLWbyqk=${FYo+(mOje-NxsITqV7=#eP5K<{#oe zDe-k@#BcBD>j8#Q`teQ6yZZON|C)ZkCEpLdYTp;=Z_4-cyY+Vy3-rKeGrRQrpnPvG zg}xO1Oy`$o-%gvp?iKqyoVQQypY8QHuL{1p6Y#sk6Zh=OQ~68n(EPKK|M4B1-_SoX zA@}2++z}M`KCmO0vh}NS{2?9v`vB+}AGiy2e0JjZd}{pQR?zXiIjiNMnIHbyZNa}V zzgIlE`IPljynHGPIdcA1&+#kLdTJK$rug)!BpzEftUuK+@2-DGPRVx@Z+_C+mGtF_ zVk7&%J;Gnh*!Wg)(=T)fNsdNF>;{q`+S zOw0FlS604X?1MhycR!Kw5A&a{5&7QS47p<7c%UnA_dh~D?4K?6`#@J#zQ1=dDfN)^ z#lW|Zb&bgPX4nVj+wmUenK;jb@^OA)V|1j|mVZ#rS8w?e_itkUp31KbBmT;7;-(2ouap13hW}(2`X}mp!reRB-j$Vi zl>Zg@FWTq)36FPK|HtNoS@6&HF}&Z_baz3npwATS_mPn*TR!a@>YqLtgn4fDe3$h* zNi~m1{Yf7J{e>a}f?iu_01Fg2+kb~CmGxB%1xnKNJn%@ilgmQ1$mkjf~mGn>0cXdq* zKWE;Z4p{!t0b7oaFGr5pdEZt) z^&A|u?~Xo};k*U(hX<;p{Ie}{GG4jzqwnLLxP$m%icaJad zUqJbpmhMPwBjzthY&#uqcjW^=XL`%A5jlU?-EHZH4%y$ae5Rju?K6B7?SOM>S4V6+ zLVqOw)ceOVZa|(b?*+f5d^-j#J@}LH@l3ZZulo?_fAP)svuE$AzZtq}+wa|X?e|Lq z_}%3E`KoBgnVX>k=!OTAVe=O_7k4NbF8mkvd>7k)XlN$Fb~|^@w#(=M(m$D}Hd9qJAjklrz5+u@M`{O+$vZ}{VvT$CLf;PzmJX%&qXF<9l5I~U>{Jg z%whC{|LmLXBHv;3zag{_-eEVsrhMOj|6ciBIB(l;_=+uO?1<$<@IBBsA4dBi-z!5C zAc{>QH>vlL{y%@S9sN}FYW;gb7yVFFzlMixc^@4Gf73XBclf59XH)&S zeqc`W8y~tED*Pq#xo{7E(bO=$#?zv7;vLzX|%PeFby1NQye^*Pb|5AdWs zzry`S)W0i3w?gKZ-)tYdfN>G|TuI-;n8NeroZoDWe)R5~`c!%lFbqpaL{bUsRm?y3Nvwd3Hy31lu z!@e8_|KMZ%z@YGH*B`X+R<0dGNumD``vhzc)t_revLdf_hwO7b>@UX?(ibp)9vg%F zo@D;0AMzhd&q{mZ{GN%9e^zV)i>sNI7@_f43&vDm(FJHFlkIpGsceSwdXe`jx+ zX=hOGIQuK)NB$ZAC`0>+@7<+0Bb=9xj#iaTuD14z{9VVs5!>?-+8LCSf}NorvVAGv z=9g{-ocDC0|B}D;nR)$^`gP*H5Hq=Tuq)&(Srke5d(t^XBT%XnI=o@p5KPzQax* zXMTtef%(-&b2W2I=*QC&^1GIJt*&=Vt&Q> z(^&Uxr10cWU)%a#eBYZdzIGGi3-4b`e0LG)B^Qy7_pu{rKlGdSL-zUUh{!+s0qSL* z8tS`@`5nt`J89Fc{%xcNeV!vVcM`?fYO`n&$2`hSh{H+&x-g?`EYt-<}eC1wovnf$lY{(_H`n;#+nUn9OzwDoz* zPn+vE*JEaY~L_7%_0V)I=w^!uu7_tp&fgWRFtUt9awBk?P=UtCMW4nfa8aO=qmJO7C2 zc&~asPCegZ=N}kfidwsGMhdH7-`u*Tv1K+?s4Vn-H6r?LM!9}O|G!TC-qMjvw#|eJ z(4WJQFYIgddKz{Y<+eLJuj?d{KjbsY^&;w{>za!h^2z%*8#q2juX0@j`!Uuv8!5oP zj=Oad_~-aX`_@Ijs8OyDDHpfC`4sw%{#B&qpOg6m=0jo!g&yPMsMBZBE6~e40{yTP_2>EsdYxhY$DAFzNIhM&J{#x! z2=lwEoM(W~dHu5Ti|Tx$nd>9uuXYISL;Dx|(Al4B&OUzN?4h(D+E?{uly(T?zN}vs zm46v@2KH3v9lFlZ`Rhfj3#d0@f56|xH0%%bMf{`D{$tJ_UcPGOsOu2!f6)Iz?dPbQ zcW}Nzc_4nT?B85>_DR<%zvt}KVbqWMsq>2#U8m4aO8>O_^&#yg^jp_gI*vN|M90Sa z%O=79b*@ifC&W%JqUZWW=-oQ%r*6Dd`VChmA|_twyUuYE`g6_MOW2onR{nD`o`H<@v)Z>Vo$4L8u{-ciu%VHQe zKXCJwj_YVIjB{4McY(gj(c=mF_b^{6{4-}iL4U-}Yff_Bg7lwq`~@G{KaO(Ug7Qyb zeM0(mZvG_cpqKf`)HmBtV%}2tvv0Ql9?G}#1BuTWo%pF8f18g@%lvB}=0hCEl>cLx z|B#>Y^EUk?=PAgC>FEDaov$1@j&_B9rVgQ;pD(7z`~UFG_V?dMI^^Gca!%JL?4Qwt zcqc!DZk{6Z8|1T4KFS0AyKeq+=FIGZd_X@ujCbs>oJ2nK`%NFlc!YU~@Q3=h3{4At z^K-Xk9uGe^dCv1cHWN&Kzaw|{>|DtFIo834!Kb5V`?n6^9eOu>0qNL(IsLTK_t3vN z`Vr*E_2*H}8^CAFVekX`3dpAi<2&$Nl=r9k)**aHJ|{STfc&6;;y-%wEXJ?LOzuQ_ zM1D6mjQpS{fp9zJcy zxe?^gcdS1LxISnfniIZSQ#QThdVg6A>yUNq|Gz|hhBV4WzMVgX9%G%{kq$8bfd6aI zBkPN^$ba&&j$CIN{S)7Zkw52QAAp|Y=h^hE)T`NzPs8b~*q=`kzpm($U6E8~TE?Tb z>u<^UdLlzP$o=XZewSjLwzT@!N+4m z7(Z!WJ~r#SQ2s+heQV%XSEwlTWx7%R!}Ij!QP{%*>_fO?2Dn9`?|ZE%zZ&B&>yPzi zXnhp`ghJo<5BG-)_zpj`b2h%L^seZhW*oSVqB4u)gc*X(xX zx$@SMK7c2G z*Xr(bWx4@9bA4EPZhx9$5KPK<(IhJF-m&&bQ zn+zs5%F}8X62sO1$-9v1N7~8VLt`G zotE^rHcS7R%fI#RjHIV?Hzi$hT$?|}kGrsopl{AiNIGydDIfOtYufLW!?XA8$36*g z@AbK?@cAbeKgazO_V-EJ0G)ntT7g!ZF?*z%%@}i*!oy7WpUZ0(6^M{!g;NEe7HD`{D{A%kPn|- zpttxe=HKvt%YdHmEm>Qx+S&jA@Yz7_;kl2`Lcj0hv-k1YmizcD_t);@vlI96S*-i+ zR z=OA={|2{r@AD_LC&jNRI^M?EQEcOEhAH)93eSG#lK6@XZy^qh{$7la>e71HL>#bN` zaRbF?Iln3pKX?Avipwem-;;}5B_@Ix=DjqwJ z?*TU@o~O91;;|Zkz{h13k5zoy$7L0db@j*je2ZTyE~|Jf%O}3+aaqM< zsUHcnuaC>`#x2tZZ&v+f#XlJIzTd3+%i{h4_z!(-e7{-s zmv#0B=TAoN@takDSxJX}_DRdvdW+D zH>>`#O7Hv4s=w@=5!4^@!Fdmyi%aFzZ&v+fNk4`99rpZY)nAtB1Mv`@myJfxgR9@H`pZf>%J=QtoqAVfIrsH_nTFJSv{Za`^~Dqtnd$d z-)~m^Wl7Ka`+l?PFRS#v->mw}>i)8i%c{SuqmTK1v+6HP`YDv}`^~DqEd5(pf8TFb z{bjZOzTd3+%d-3ey*s=sW7Js-~V=lA%{s=ut`KkECUr}yHr>Mx7_ z^99p=zghK{mHdZse%blAsNbym%ewiC@%?7iUzYR*(tCch>Mtwv2m0T5ezWQ?3;#Ef zukSaj{<0iD-vj@8US0iW^&GnL=ljj7zpTo~_nTFJS<)AfzwbB8^X5EDRdvLYYMZ+yR5^_La-f`8v{R{dq&{5n6In^k{V;cpo0Tl&MmUtr$P<)vFVsJ9S5$@iO8f7$u^(QixW@x;ES`pd$< zg!9vg?>DRdvSPpJpXvF{s=utvkN!oq@%?7$zheEjZoH5CL6ATE2^aazs=sWf(=Xp| zR{dFSC+q*uDB9Qen^k|=k3e69{aN2{R{doWpI`1L^ZjPkU-mbgKSBP!->mw}-pQi> z;eJHlZ&v+fsow?A`+l?PFU#~Iw4d)ctNyZ%KI;3;s=qALi$U-E&8ojF?Nb5u_x)zo zUzYSdU$6c?>Nl(Yg3`Xo-}jqUe_84e>*xE;s=ut{5Bl+eoA>z5s=uu3A2Hu=R{dp_ z-p6ItUsm)N{nz)KRexEfAM^ZX)n69%!~I_yjqf+B{<6xS?>DP{gw{U8Ka~E2i~MHQ zUslS8e0;xI^_P|N$4K}6X4T(IKHr)nAtTL!7_(ezWubvPR|~QQvR&x|>f} z`F(7BzghJs1pk=7Y>fJTv+6H>`#uKkSfH>>`IwtV66f7uGxKQX_%$8T2kU-F0k`hK(OFAMvT=J?|K&8olb zVVvJ)|7i34X4PL7^_Tgf?>GCA^OvRnQQ?y;{3q`9n^k{V#y2saM4?~6qu^JlezWQ? zdpimJ27kWatoDa>&OToA{ASf(mipZT{#D=A4^sVQDWAwMYeT-@toqB!{tE8*^!;Yl zUzYyml#lN>tNyacpYn8H^C zzTd3+%S!&>&-a^Ee_2~T=smw#^_O+@cK!hWLG_zee_63VDBt&+RexETe|{1-J}wJ= z7Jpe?ANhW>DRdvYdaCKi_Xw?I-9NzboeZ&8okw%uk@7x?WMgS)E_-em3Uc;`z<0zpS>O zuCM0DQRgqq`jOuEo8|h2exmdAp5Ltc%L+aEukSbeA>s^h{c|1n?@|7~->mw}B7f;W zzTd3+%d&i~-+aGW^_Nw8-)~m^Wl29I^i}ux&8okw())h1>Mu)rgZ|_D&8okwqc^_a ztoqB|8L{&Z-)~m^WtHCdn^k{V8DGJ_?>Bo4^A-BLD!uPFtNya=pKM>>Z}u4c$rjW5 zezWQ?%lebv_nTFJSsfpIzu7V8FRT3fezWQ?tNi>`#ozySPAAP@B9Y5h8^#aEq-)~m^Wh-3#zc$ZrR{dp#f6)7Wv+6JV0pc6dKi2n~ z)%BMzUj&ul?_PtR{w{bg@+{2Z<=^8IGjU-s{@K79i1=ljj7zbyEd@zeL4 zRexFbZ}=yNe7{-smnA*#_xAl})n8War|&nb{<62-`f|Z<_TpLk%{JH02p;<zTg6+IKgDZ(oR<2<^3`8faa+Y>1%HPAwK@Mz^_%taS@oAy z9Jby0(K3JVKkq-Q{2y@svQj^kulTIuu8OxRz2d9tSG$1UI{xAJy4bJwAM>BhIRDpw zfB#wF*QozKhrcRr>-*2D-z;%k@}YPv>(>K%;;)6SRF3)3&-d-jg8wY_OYvOAZ8Ob- z;x8-sA@JGmL$jqfx~B4q)BZ<<&wkDQ$$yB?-jw*yivOy=tm3kY$4WZr)n8U|S;b@j zkmCpNrHu2JJ#l+Pa9P|JD1NRL&VP1)>9qK}`Z%q|H&(p%-|9b$_EWr8aoYb-e0IO* zH~SCp*%LOd@dd`UMx46V6SH{oek+U5?mLmhE8-fT=$G#&(jP{h;xT&-dNJ{Y$v#z~QmLFJ=9xc&*~HipR?O1NiF! z7ti?YdCRBbv6z3${mP2hcAT~NtHv=Ve#!fhk2$zi(7p1w56wgD?q>2?uY+6 z{MHng)%e6rr+rrZ)yHWio$dQhQsRD|IyoYGqIj&NQ-57N2UUC(^CQ{+RJ^wN zti@?hotlt1z?@&2Pd+w^zbek!=I~VIPw`g8Wlx`;6Fp@*?7um7%ErY#>EaSE#$Q># zAs3%maoBb*KJmb@o5GLcu8Ozb$=dcm=i(J-T9Oh6Wyr;mw(Tgm`5WjjA}&_}>F>U4<#y7=J63wZZ~r;sdX3ojJ$3G0`U2v0G5_IVOaI=yuq3I1z*x?|kG8)-A~Ay&maWJaDWpYgjgcxU|MN8X+mzlw9`CWH^If8l*w-h1!a zdR@9WBk_%;e}R5vB#^iu7x&KyPBD^3J%Bge;rioabvhj-BH zzQ$F?E41{?KdSM>h}#ms(fG*Be+uQVb@9!{T->)s`&Sa5_UfrQ$xm@v#cPE>p@-aI zpDta=Mhcs8KM&)*A-)jiH&Va!Ronj8@MQZpyEw*He_;O(fnV@7%6$*yv-a(*#y1xF zvG)RbzsmS$h;!U}68enatNv-c;}rKjQ17+-d&S(SF__B%0a%Z@AM0O1@(Uz^OLg{uN{9M6&Uz@G zOa7UE`#JE9{57ueJU&})^;hxNONd)sfF6!5>ObZ$!CxoZ4dr$+KJq5aQwQ)n_?c?? z7Z?{A-`CSl;``_+$Orj|{80WS^e6JKxNc?u=}M3J-_;9A8P~dK*YF+jiR4|^x9iz| zkl&@NHvX~VwG~ePJ3C!m-w zgz<|;=i`TC{K5R^1H`jpeizPT9)Nkld54FCzgg;^; z4PVPxJ?p^JAf7ShGllXI|5)Z_8sE4JwV4{T3S|*I|E{Kl+K_ zwwKo<{ulg5uN%ytepzk0$UlDHzP?w!U+u8<1U~y2;#-E=G9&UGc3I*YYy8U>$p5o7 zM)8L8U9jtjU#$3m;v^~K=1&-j)86>lb6LUtHz>CGsQwG==qn?&n=}@r_3uo`w2}{U&}({Z}0JGVCwM zIjKMRzce~4_H>l?7x}84mHq|&y_mWciNW4pK^#WTgE~q86UI#_wwZ#;o~ChE%Il4 zV}Ul@a3hkPz!o zvCbPV@xBG{W9gyahwu*l>U86)%x6&_C*P>zr8-Y&pSS-Ozf?SS)Xl#TzgYB8#y8l% zE0^YEJQ~B3deZ9Vrxj>l_Al54!C!U$FiQLA+Lz~J=k?Fok;|8$PZEEc^S^2tKiK~i zhgH0FzWr&xQNJ-aPf0zm{IP#P{+yqoyi0Bzx!4W)!oDbd>lNq~;=5kvIT@5A^Awr? zfPd_Nk0G7)YUlh5a=ql@LF)W%l=C;{f63ZKnctzE?ff8a6mPn61@*!_LFai`e+qsz z=GLX?7ZUe)yxr>SVd;M#8@z->|Z$ghSf8hD3XwwMn zHqvpwnam$X+&bub2=#+}F1T?+aagtgc6|IV&3Udrk>5qPF2XuU;uUjzMf>4=5bQVX z>gBFmV&6v)@7UT;=8yBsh-+LxT+b^mt})j`VxLBA|G&WYK>T{uYgx~T{k7v`1LKn; zzVWs5R?o)qWP7;wi|Twu?sb9OFT3>*?KjI;eb;r)$a%;C?d#}c7v20s);(y)M=sxz zc?9KKfPBXB&hpMXy}sh?6zL1d|0?u~^-)|``-!vfJbxzlA)p@!Zref3(HLHNMVu1aMigr>MV^Uu>M~7Swz6YF6U!UmIK8{ zIj+Lae1vsGLGq`4ikmCWzVe)l@Q-;A>qC5*?W_Ii+E}mXovdFVFRkBIj&F!Je1&n2 z!I!LKkU!&pv;E(8^AnAGJkE8>qWe{J{lf8;^fG?JzH9&3&-uyEzuA7&#XVkx-&*-P zy?NV>tE2PdqsTw1@s9U%p7JM%zwG>B$v@9m9mRZyae1kK1)P&oyjIJ92lFS+M+e`V zmibwV^Phh<-#%tP;vF;Jqnzg;pJo^5c!3_jM|z=v_WvI-&*A(9`s3DDX5Icd8GjDq z$#yz$)V80}%lruRr}3TXCr?7pgx=bx!uxo~e#d^$$1wi~9xLOUqc`cp)AnAVbKoCz zh;Qu1KdYZCFV>BCzGvnnZu2{c_pAFSJ(H(llY2XT6Zz}-5C2FP@3`e0`24+ZwjX#0{kz-6F9trUEDuaaf#nW`IJxVK1qh;R!z0ksj-V zbo!>OJ36=yMjUZn|H3}V{&45jr0BiIHC~5uVi_C1criZv4$2WZrqR!6UpPJv<9_1x zl*iuuJLwsb%SAU&xRb1x^?{B*>(`SHjzfbo4&BM3eL>%nnU?PxE@7NO9O860?3b)B z>c4v)?L&OlbPe^5GOjVkp*5FBB#trlo98#zcYzc4 zjrv1B5D)qF{~Ne&#Pp*czr0;$lJeXZ{ObQQ|NBO>#PrJhQd1?*WswPE!m<3nLHiVA z{t_%3DM5bEELn0(zL&FfV?Kv|e@pp9mfb8dCFZ&1coxn@x0WplkPq>P-7^1Qv5fnY zCLSz7I`WAun=!Fs?w=HBpCaXD_IuR|Th7wREO46ChA%k(_yi$OBiR!3UhLVjrM+^` za1g=pk@#1?zGHs%_vX)VKTV`8!go_1pqM{+UY~zU`2Zi&_i{tF%;!rD$_pl+{UVt9 zmhH22X*WJ^*$|L_)T0FaO@=#ie@pxHH??N@vVgczJhG%058Si9d_?MTC-{qRiO&U& z-+4X*%jX@Fs3Cu)j^ARB&(F!<@Wy|@Uu3B*N6Rl=HX`L0FQFV!e(AmCmlV&6ym-Go zNqqK(FQcPvrlt`Di2b*S4GTQM_!#=@;Y&{V7$s6kEBNQY#PD zpVCq*m%#DSP*H4fi zNB>{8&$4AB_wX^_KCb`zeE97Xc6@yA-@ARLxPKo}xv>6)lBv9wqw=5EODF%3D@WS@ zj~C>ta@QyMXa6ZTRDbjN_ltvj`nk}Fxb z>}BLbyA}@j@)Qj{F$Z3^nBLo?gj2}Pdh)t{;PX$bI(@y)cHlRdoOX%QukE) zkb4iiXN!9(y>ah>dq&(-)^ES5HD&I7iF-nhk3_()tWPk$7r$)n=TJB2vu867`%fSz&F!+3I@u(bFV_C!Lt&uITaUsBwQ_x2p=Oi?Ps z-^W@y5I-FD0rE3uLfU0%=$5$=n#z}$5qbZ#7U|HBaCEMi5KT_}si92(ukc9RAHx{!do3{>>Yn zD!GY!ffM;9VQUXW{@{P(>ZGI#pXb_Rp<=v)Ppy9>97uU(;H!`}x$>~uH=F-*C$IQc z)<2eC5w><%_y>PK*g7ZYwKi$_%-{L<^oV>oo}@MeC4<6WXmyqFBkd3Vo+*KTgYO9H zIf-$(G~6rin*TDCKVF*1{HSD3zK6rs&Itd=KN_70Q@-VK@DKTx;Ym4b`ihcSq5E+V zNIMtf$#l&>w3YIRuYJBl_dfE#_RIor!0LG&-whpe|ClaUWO;X z|2W8+$)*MR;*gcc^QHE8%kiA22men!6%lYR7S%&!z`-jK} z`9J>ntjtFqD!y4%D4NO#s|Qis0)NGEs}IjS({Cn29l0O22u z8Iy=iKpdetjzjbEi@JI(clD}t@2Vf6z}EMNDz`ZxQPkcH@)kS2^gTp+x54_$}yH47a~q{o|L?7yfc=aLU(uRG=DDr*UGpz96OwQ763Z9H zL$UKJ{|NXs;pWWhNBP|puPW(R{Sx_^3j6!gu%&;XGFx<`c)@-zLB5pVYFBQtYhRUb zrIW|1NPp1{$UhWfK1K8TiF0N09!CCA$YI@ToP)wW@WLPJUxECXKl6!}B{C~lqJ0wsxi{5#{|iJ#v1s2I=D!iA;6XtjsfZ?+)aC7?wYU{l$3g ztn|NhHTFGFZY`d)v%0@l@4nYmp&Zzc2E22Ar~Jp`RkE%>@KR7(xGDi@g*1fxo(EYl%)?9(6G_K6)l5EPjkfAi}%-?sU_+GzP#d@Kbzvoe)y!gtpH z=$d3G_C4}niuSEB4f6Z;T>n0s@4mNfe!?I6cm7SAZ~ar2&m?}&{8;}2_}^3KM`nmHp%U^BQ@^_>$2u(i9`q}-yAANX|A8CKk?`OWa->DZ*t^<<0Y<|jrLzB%f zkqSaLDyH%SwG$;V;Scx?==)rK*Zj!xpOSnWe~@2e(&m?JvivQa4;T4I>p;)?g+90LD*e*;hQy|%hr^x5$jJ$f`L{UwEc^c!oZ^7WEmyU^qW z_p7hkeD>_I`8fKhwioHy&$KO9ET?|&7W>!d-DWUJ}wdLk&UAmLc*TIvr|DD(#l$wiE`8wLCCBMkm@2(O%|26F^?9Xe7 zz|g*|iT8^AuHo-5P35tFK>RhbramZPdM)Xf{vsdWmJK*g{0aBZQU9Y2wqDhDt^Kd5 zvH2nX*$k#M_WN6RC**heZAr%;>$fYicdt!<l`E6sS<@@U|1QFhIWy~#k zSO0+I3&E)Uep9|5ej)g)d+8_S`_UJI|IPkR{SOktUv23e=G{NbA9*2on(1pE!g(~| z59uiXwbel<-)kNY4)bYDuPfiu$DgzH+5Mco=WEY%L1Dgp=!g0x?0qhn;`cm$&vMwm z5=h?#I=(l6j?V;sC+X$bKg0fJ?GJ4JKF%Qi2iX5R#P-3wsd}gNQyADei}wZpgjaVa z@w#P0)6RbRzEj@0zfv#tj~~K%5%YrT$DqF^ny)!DDDS#{dG*y1ncoFFN3cJzKNJ5x z`T>4N{{Z3}jny{)nhmq^J=chK68tJ5@zoB;AwSH&;*9~wp8c|6EA$`qKau`ZZ7|-- z_v#w^yH^^sj=muM^YCHlGk%|HoR;6c-jI~~TqphWH3k$v)s0#C-R<&* z&!GR&T&^GUwN(DK0sFgn+`e~$p7=`Qb?f(#Oxo{z8%J#U*#_~i*z=10UfVb=-w(v? zIp8~>$N4madKIx=HGL=-?Qr;TmGA@m2mUvj>S{|rFkrvuU$ei1|DN=(HyR;N(D&Ai zNWJz~+x#m?5B)=ZB)vapzwgT1-%)=;!?mWj7jnnB@tOmH#b;BtJe2>1`Q&3vEG*rg z#-NPtQd?`&Nl*Lq=B{b%$7S>RUep76vMZ_e1AnL=+DFRYy&w40wQsi9^xJZT9_g<* zzmB&!{{ekI4?BVUkZ$esUR&PoUCEI7gKxI)#dyhll)kTTPV_SMR)49~BR`+N+V_r* z4paQ*E8RlByLO&G(cjlzv-F&Q@Z5N9-sX?`(?8U_)r)ff809u*rT+WgoZ$YBjPE%A zXx_m)$FH|tI~`1cew_Ey+W0?pjUz(W(17+s`yScd9V#F{w!itL9QM!Rt%)~hN+-KI za{C&m<@cW=y#Rdn9j9+^=98fU>K%XG`f;#-O+kJ~Q}}-Co9*>Sl7fRD!;}0t`9%*N zw)%qcRpjv28&;l_UkK+T-+tSEe`AmR-gu-ph*ik^P~>-Hz|z;}A;16ro9$~-cmk)l z^8eWEIcW9ijW=vQZ@Tt!<(s$Ovfqy$vA;Wf*vgyq1@OOT&z!WI_MbQ3w7-Y{2FnlC z)mgrd9K|>Yz1aKCbdjF#r+yvWWA$cWz~P@AZ}#%rg$wx$>R<9m;fv`F+nZTmI2~vqh}`-`Vz!*6*DzGS_jw;ZRcg-%llWit-r1r8^f7s)KZr#;az{!BgF=|+ ze;d9FVSWPpT~t7Qj`BOkv6?;jJ<7p$1oZ1;+PB{_zGGuNNsq1EvC@9{laLPAd9_!=a2lp52`KU9rE4Y`sv|%PN;X+>{`g`F6&?l|^8FcNoJ{$Qu7e$* zK7DHO|ESmlyeFVX)KB&Yrc3!~U+oW#39CO%c#=QtzkWCMOX%OTRWhC@oqi8GJr@5p z*w@BHe~5YmJ?!GS;ikB?qwGHg>W|Y8(R1+K)MV``@%IAgMW4|gNvCHgoPKuFzW=7$ zK<^};pX#Z`JD~qq@px^~X{UFC$DlXRyHiK3p0R%P4>$>ZE5Lti@OU;<`2JAe>7%_N z^8(ezJeV_ILWDdZ>EL^<5A4 z_miirUY)>G^uy_s%zsh7>hq~nBf%u}t6^Th3T)q)>Z|JSsRroV52!!?MEv8EcxS%z zde#7a`T_M1;~V6!`lkA)`gSMyuSCC^JiSwWlk)+XfBJf-`o{PKY+qmRRNrL&LwZl| zRNrL%3;FnZ7k}F78{%8Z{K?ll)wfF8FSIZ8PW&QN?^NHU|NTvE#Me93H}PNl1oqF< zJLsGENo)&le97}8zTT<6-ANWCevz+tv~ScmIe&xpRlPgu^iJ&=<1ev&RPQ3tI|IEd zZkoV2%Jb()2fgZ@+A-C)uk82|^Yu>cnCL&~)t;#xQ+*Qsqx_vc_3fL)pMd>Sz4Ptd zXEOfK{#koBuYb|Ay;FUY^M707M(v&I9oG{!ej@rO&u=?>r+TOQc1O;_w`QoO~wcGZ?$)-cdBnfkMZ5t zJJmOtAEEtxy;FUIeY%VB`*)A8IN#*!o$4FQ$M_oY^-lGT_K*F`*E`j>f7ke`{oB_& z)i^<2Vh<}*ogVi_htP3oadKLa$bh-4VWMC-1$k)=OG8oAHSu351z!l>-#2m z3Qy)Uc=Bdo=`nvq{Z6^@c`!XFc0l#_H|2K!{q%vXtcy=_o``YhRKI<{6THUpIjZ*b z%>G^(mrip2DCMJmquk%_6*{%AXLg~T**?xc<0R*k_*D(LRlN z)DLt`++Sh+%lD8z+VD;w@;&{AeKzJ%Kbild|H8gCrBHv-&nn61VJAK z=@3r~8y9fDW-PG__xBQ;+W%Vl{FL#NF@BzN`gvesoD=_x+rgeMu>Oml zar$~7J&Se5pXT>dPi1}BBl>xU`ic7FT>I^(e!^cs#uv2TyU4}dNzrT7noZxG;`?sUPqsSzko2@SLJz*szDf2U zp||nRtDms+GQY$A!C|+K75Rex)gGJP$bAaX?|uXN(_#6e{Q|x$`(^|9PQICsUH>LZ zF@BjQ?pL6^nz$W*)>PZy%lr%J^Xn4!3)Jt`S8e($oZrKLGwIfkZy^6zM@O#rRhtj& z^9AOQ{i!1MzuI(_=xz0}08j2enD2^y5;t$8dquC}M`1s^hx+!Uv+@r5U!#A7s*jHZ zg%v}6O>1nvbw`qxJ~{MV2IPR^4 zA3`+H=2g;=34 zd=h%N$UmW@3H8GFa%24y;&Q&Cd4u>Tpnn|l!?w2;=$@Xiiv+tyz;{F5P`91E=8SuP;(@(LlYuxvS+TIZNub7YS zzk)uJth3{3Le3Y2kPq;C*m2~)Ko4B733S8_i9=g@iw{eFl?&$+7U8!-ueiSA&UwrH zKkwwy>*T@mdmz8K!#DftZgke6><3pjb_*{4N^O0bnWQq&6}iePvu^D#qzf+Z}V~TGq1|;+jFlm zU$pbi+MqPnPW_Pj8`TG%(~x$^*?g2<+x>N<%lU=Z217SG=JEMhZl^7;w=P>sJKN~m zQR&$pY}ehcol|e3eLF2Z4}A(~GThXzio_ir_9%i8ZvS;37P9S*JO_1n57 zU2)nqcVT~oe(G!b&m^|N9wOg0^_ITw?u_8PN?)^WPVipEb!+d!&MhiG?(pE+8cSd8 zaAeR6zLeiKE%b_Ozv6J>Kcf8x{+(ic3*g^7x6R7$6px+_Zd7sqdzZtV6^Gt=djxju zAKvekTo>RoaMX1cht>6mFCyq}PI;xT`T$@?PQWLrv*~ z?2E^dFVpkLNATI8?z)L^>JDm zKaj3??E+34$UR@Ozl-rt@me3Jt&s6E4#RHoS|6vq?c&QRUhCtuhe;3pR=n27X)%6& z#qn41S|6wV2=t6Er+BT8)84LX0Dk;2<`2+&;J4gYA&!xBI4$v!i`XAgyw=BQWqpSD zCW_bkI4#G21NkXl>*KVy%L_7oD_;9XBl_JUoEG^@{13%zeVo?n-!7wgt&h_ZAC&lh zTu-2WK2CclnGpUIuk~?Ssoya4&*5V}PAm3>`r+2!K29s?pjW)M*WrGO(<;5rl4^>Nxe zVT|wCpHsZn$7!#-{ZsC{QSW@5R_m{Lt&h{%@okq;yw=BQWqt?wD_-m4v?@Q@KLWnD z$HQqwKR~Z|t&h_>`l#ZyK2FPY`d=zuTj$}lcSfxKDPHU2v|9hBeO7;coYs|}P`uX1 zX_a2_S|6vC^*`EI@mlU5aQ!)WC<&XrWdqj7(*Jb-z{hFT{wZGTJDm|FM2iyw=BQ?*zXu_X8{a3u!$7yc|zc1sf;bFUnpMdrzC-^Ps6|d0! zKiy~6{Wslj)_rE(Pv-v76!BMwr~N07UwAm}@4znvr^WdH{|SDf`^m7Q_u#aOU+BK+ z!alNHPcPsXBbeCj&HFg5;unh7`Z%rP7mC;VIIY+p^l!y$Rew|uef+}5X}@y&*Q!^l z$BNTR`IsN+{<7++>Mz$XJ%5Ap-Ts^IGb>&}{EYF78XR7$xP|VAkpKTE@C%36DsHxb zU-Z!aEj}M`4^GST0aNJzieD(Mp?I0>&w_p)*YI%K&V};^AGK?0rxd5v`MKh?YCqME3BCpW^Yu>gGU|sx{%X&BJEr)_yk2=Y zt(;H6`c&YduTzqj$FV*a@l)j!@Z-GlN~-&Fq;FH?L>@mj?l6fa}@p#6UL`GDcy zc|Jhwzv8uuo9TEj^1=F5@mj^r6sNs|^WQzt4`1&TFRNt#LjP2}*2igO|NSGJzvR9q z_77F>RNwsb0X|Ne1PDza{dJUL-kAToa&dHkAi(jy8Uw>r^Wi_3(oI!eD!f!jIZwe9mmhb=L0xj z$NqPAx3sU?J0GXT_#)@;6tDGhT8=;T&sV%w?VsYbq914<#cO?>R>wcZYkizn$_KsT zwK|R}POJ1y96y2A>iDU4j{3#^p?Iy2({g>#1Nkam>*KVPzd4HbYqWT+kJB=~#MC6_ zw+^rMaaz@H#cO?>mi?RYGgW_moL2M?_?P0fs@ICs>i((XwLVVE_q zbk%zwr)BxZ3C&YwEG*2ih7Uj^7- z=?}myeVo>vPm3yE>*KVfe{U4}!~GTDc|K0-*KU6e+v04UhCtuq%S~!;|{O&aayrYz{eG@^>JE>uLAt_ z|6%XVgX281Jh7|;_=+Ts0tlcAV4)76fGQMtfFxK29z}p>frlvGAXwlbQc^(@FYqdn z6s4kCGu8Ia# zq!HF~OZ4yeG7}_gwx@Tx9o`6=e`VyC`Hp<=<;(ms^JUs`sdAt83H=AgPy7E^xlhaS zv-GDSp1+j++RA-e+5ZQBcE7fApO*Fs`%-qlwsN0VyI)(mPdg$0*{|$=ZRI|#UcbZnce7txxlhaU?cD!;)$G?+?$dr! zj()rS&rT`3Ut76POZnjbBxUz&EB9$dKCoZAUt76P%k=}!-|T*E;HeSKil{Z+n;rC4(7%FtX=>4 zyZf`{7yGl=N7du|i~ZRb`?DE|r+u+MJO5l9t;|n9c(FhGVt;m8*6&{I&tjeLnK;`2 z&&8L$*q?naj#kz$@c;c{e>U-NjoF%*q_DvBIX}ED^9mnxve|91M=*9jl_itb9&+7Qgia6RA`?D|hXR$x_Vt>}e)4tfB z4M?1>jiY_BKl|@{e-`m^*#F19*|I;IN;%884`TOY=bR6?Kl${2YZEtX_hYHQ2Y|1P zo3-(>Jiml;RT(#H_ahCws@#{g`>}HV3HU4HX6=5gfe%*3&DwZb*_l3E8=EtysSBY6ReDzeYX82@K?DnYvX0*{uHbaRL0HP z{aA^A27Kkdx{af?{MmTg$~ankKdOzVt&F23JoN9k@wAn3w9-ECXX9xr_h|{w_Stya zlNE8a#y*1FpJn_h_gNX=YU5}vyp5-29IbjLj+Xj?efdtBcv{BKGXB---?smBBv37J z^M<~Sqa}UvXZ6oGU&7n?XVZQaG4ZxM7aT=gEY8VDoV1~j_*@-VYxijrh=*l6EPaWm zMO^VKjFZLv+ha)e{m}aS=_$#Bu8ChxnmAf}e}1e3_qiaRcI1_rs{6oW<7nmmC&br| znRwdDeOj&`^8RHTPg@yB%kwWRxAC-^;HCmV)l(AZiubaf-fxWZ%D7r(;%TM-qr5V%*4}q){DarV)!O*kt{HhWaDEK<{snr)3bu7LCzP26s|jz`-DU09^+Udr|%bLd;#F?y~mx2vV6DkvT}YD z=XbgiGxEJ7^bm6QkG+-9@wV9il=n5m=HBD64$>KZG;Z%V_8>kM@RvJq-vz!$agUd-p_3}Om;0=xI_}G|<;}ia`dey~VjrV+1$7f#Y)%YGKgnw6Or^Xvi!x5!1H|%CFiRO3D_Is zW-n^I=MpoLe;g=D{93P>|4k(HJ-Z#eukxAugD)lYeY!m zhprOdH|E9BL)E^lw%Du&Bu4q1u{i>5) znqKS_;s6leccKIGkoIZ#ix)NC(Uksf@3FP;Z=BKmb)B5o@F#TpME)OOf6wSOI3_Hozgj40yjRaUavzhS?>~1=f0uK_xTm(a_j&rSnR|~XCiM5ziFw06 z_`~_VOPBQb#0c~U`nU%~>>K@8;!oc&_g^DE#P5ck7Ye$ac6_{w^TTX^=r!QQy}C)> zM{L^1@ijH-$h*9eGvFKTe6#m?_~;wDJ?GBp@9l-eGxs+~)U~AMXJSH^_k`x?T~}qPlNf()#`%W2iyxd+7IsWkou6X^p8uIG~Uz%zJDL@ zM_7P_?JXt)^!i}!N9*se5}2P`zrl2{F9BZ!8uv>?~px5!1xNr zXBAT!xp(M#^@y}HiM(o3d6_?e|DH1mc^BF_4LRd}`xNd`3xZD>e+f@G@ZWm|azp#= zd&!UMA25E+mAneMBAx>MSMERV;e9|&?~ks={f>x_aQCLBrCkZ*=N99hDusK9d481q zy-mLby(h1;-uT$t@H4!J&feeFYxJKeP6^)Rf_BtkJg`k|09Jw;orV6B5)G#0C|Z1(7w0f@2St^TN>WR z|JnB4Ith6pJ^(M=h#Zo)w4A6Pjt?p1iT~CujVA>^NPgy=-<0JRMUXNt@o!jvYj4lF@8Led_-(wuL_b46iT1PqP(Jotdt?-R zpxv=Epbvh&K>X+s{Ri(ON52ixZ$iFNjNg=>_)o|um4e>k*CJ-0_2wDy2{|_)zMb&5 z%zf%%`bEIo`?Ocf{1f_1!7c#b6~Vj>^RkG!@73PVk{q2D`NIE5{H#64|4%W0bV2^T zsj~Q=+t;TZ^4V?fS$iCa{v7&sg|8C-_*hq$-nU2=%T5XY>&vo2d{n#Yy$bv&Pw;*- z+)oBSEb+9IkNS%bRq7hr+x-4$Z!zcQJ?%EmhWh3C`uK%_=xq`1Z7JdY;;QbloA+hY zK1;YCA^DagcGG=Ar#{~2hI)4V#QaCfyS^GE;v0QggYC*7`2*gf7A=tj!Cz{9>`6PllnQKYobsP?m> zKfuGU{1NYUwQ;lUXRQAjlK5=?AMn0Z`0+nvy%^)&Ag|BO`w5*X$OHCi?XF`~^S=i6 z`vCEY_;30{FXlzj82TUhv++oLA5Z;hy9(nw`E5U={aCx{FNnYYTz&MRip6GKyf-dp z?(gfk3jM(z=Wss{<1Zp+TnJx>obbKl8u)2=f5Cn_jX#QVd_cd97(exSS&zTrV!%zi zb~>OJjGLYCKfK5AQ^e;f;E$dvh`p=`K`ywrubtxs+Ryu)DE}z@7V(B~j-Tr^5u|L7 zydRJ9F#Q(lx3_Em@(%nJ{fmVUnQQ|<#~s?Su_w7-`vcgwv5#mpA?qYD_)oU)Z+Sl<{A;I~m&E8l0Wb3rYv12T z`;6Xh8a>(hiJc$ajNyJy=qGCC4K`kk?IV9NGe7C%{DJsQf1!QSKX;gZ6E)*kd|~_& zc>mk6ggc1)MLRgZ0AJA)kO%PmrNJ-b7y45N=NBk{7vmSpCH@%lx8qm5V_x?&q`H4V zevt3Gy#EvTi7t#|9RZoYM1cPe-vNJ|?+6_12zcyx$N2~EC%M7-7v?i>90x9Jp;|c2H ze(7q;=QhVH;Kl#9^z$3Ihne%l1L)sdFurhp$9s#DoZq0`w^I)V|Kq@YnLqSios|A+ z;|!C0uL%B>{%7dp!KdSgnMd_pCp_=x)c3=LFn{8F@Ez07ZxyFxe6r{3Z<_woZsM;) zoJXO5$o(*1BK{TqeqnwGIk%g5HFJNEU*=P&f4g1#DH|^<_Yc8-ZnD3D-w5Ve@U!7x0&aq*dLH5{X4MV1m<@ff8H_U>U(A!L;v~(|Bq7~->4tnZ;f`m z$9rzY{w03R7vp${?_C&&`28J@XQ(gz2mdEAjCb@qH#x3=?mHZ(P@m)L5aiPvgI{dM zy|G9shn|}m=wId8zd1jBhvN*@s{s8sE@fQ5c{0wwt9t(Y#_ep#= zZvqZ-gB{EL#4^4Le+uJ&Xd(VJWaeiWFD2gfQ{E4T{@H2fw{{$~KOlUb<0tSDp85;FHZS&k5h?X@>ZI-mn19RoI)*&IPjFn~{m7`tan8~Y(;lHW z+9COfqy9a)|8u+e*Dj8yX#XXSUq8e>!t}prKjsfIJ}3Bp0sY(m*30I9mG%w!vHuopn_*vqi|HJ>8(7ytB@^AkWI^b`~FYxnzIYqxqeBrR3 zzemkHeyvh+KUXA${sVuEbr$E|n!Y^NgJr%X_m2R6l=FMEufxoLY&Ez5ATmC!9H=n3-9ko{<>Me=)9K0JD&Re9NzC0y_Rq*+=sk8 zf_{zplZ~V0_{R0c>qYR7cXvF|g4}D|*A4%G`;4W1@GtI8=#%#!Ckt}_alLvzel`$D z;J-+PD);&RHRq@Bk4|8!s^mGJ$Nk8!{G0lrPnW0y`2ES_2Cm<~)2?b1_(Q%&$-be(&9Yict1JUmd#c2uiKBylT^jqCf7W=B? z!`e@k;ir-hYd^~Hv$BGZM|@xR@39~1hw~FF7jJ{ZckV;gMji|L@oN33YAu)Q>gVml zQCdICtF>HKRa^V`_4L!wP!>L{ek?x$(|;`=RzH>>%ZJDCVfE8z__2Dhsptpmmo{(p zBYLRj{m{Dqs!I8r_RhJq{@q6Y7LQHgzr?@We7&OitDmj*I?~S{IU3%USEfJX{Q}ru zwcqREoCsg9uzw0a_)|yyLY1DD+j=&Y`$3L{Ko#%4!asObLHq>XzZL(8`&)j_^;^d~ zkN@U3(r)8dJ;>8v$^JXuKlOM3_ui`DTb>b+?->9dq{9RB{~W*IKbI&q^yz?kCwQYt z#Xq8at;w%5Y1*WAevmQw)h1nOQVYM{M|{5dClGMx0Of!0J^Whf@x=2ahaoCA=D25M{D6Gm-y&*}Q>I=* zi+z)LUpG32y!7W!5-7*|ZdGFf#mRv;-^wYjFI0Pq7=QhH!M`4VEF8)?5AoJ$d}zPG zFL504o1U5x#e4r79Nj;p{U1b>w;Fgov9VgGEcFigriBm8pM}3VNBg^@;FJ6TpY$&a zUvOjG;P_ah>Fo0bU=LCLzX^YDzBQ@1uUJ(*BXk zd~p6ggz{S7L!n#eo0ars!`}k^0{M!KyAJN;Ang#s}|HONDRW#jT+Ih0daq)hAOaBDhw*N5(jW5`MBaqEyCRxCZscL{J4PH0pTtaq>$^m@$y3Ca)DVP2H%%P)D1a|*ckz*(gAW$7PYtl^g;CH$d7Wp&T}6yASS zmp33~`H`B0tK{bU9NIqWUe@2MYMg^!cW_`yW6oEqQnU}5A5`P}`<~!H4eHT9_?*eU z(tH1h{(l00hZkpD!Bk)V=+S^H2)iE_e=FIUt{!X<-5QBp$bAidl#4gw>#jgexIgi;r+-9U6~*I$Lb0? zZ{cf^FZopd4WW}9@GhEB_o~eM39!F?`yAIjr!U{MXbRE~jxF*eetO6EctJidy-}8P zwe<}-JRjyCTWZE9E8jw4R_3)wjyMPTPPrY2tbBcMYJJ*q>7|#j&y9K(-i}Xu_v-I< zoU-tX7SVqX57=?*wbyjs!rSrd>{C-%gy+-|aYO;q!U@ z-Hv;sqtC4m(*pnU{~mmt<9O+6hMn*~q;)~R zI6ngW550-+(EFA*ba~I?gw!Yg2UwrDZ1T&R%P!h)lSzd>;Mm zqJHx}3E&e?%3i*=5em&qJ7W7Sec|8V*7DGGueL9r4QRY!q{L_WkC^tghY~zTn(mA} zr9TAvc+W@bM?;f1cNqm9oVN(Gf5E?lek3%H_F;d9@O8;__~29e;NQO^hW#P#TbXvX z9(r0%_-@13vIF`%_d#^~{zdj=8Dsy4119tWSe?ry~sbA9X z1U&hPOS&q*8Ti$bh4+Jk!0QeIuH$9hz5vQK|JpxqlKiTC%i^M&dQ85m=^6X;xAtV* z(Z&a3gB_Z`A*2iZfqn}6b$ov)V&v4bx#)_9jeUHC|KBAV@1`>v@74~-doM!$!9D@M z9dP7lH{tP)(4ge`K8?svZ8mZV*JwPuPFw!;`Lb;&Cwx@WRr&3^bKd(A(wFs1bspbU z1bB^IMQSx3Yk!+hYJ7W4`#SeMwT}nrKike{ytIe&ga@7>q|eGPTBq?X!#iy3N2J4Z z$hQAoAl|N?{FY8Fzc^AYKdrxWC?`JBC)|XoC;UPGF~7#&aa`ly(g{0=K9%1^)F=EU zNe%qKg8tRec}L{Y*`V>nk7+!%{eu@~s_%C_7~5m|;kgC>gZ>5m1-o^>+->@2SEI&5 z_#x=8sVO1nsS~E&p6+Syccp)8_;cMe)$F$+!27$R>D?3a)ls~6ulI+-s<}BM>qTvC z8c$P`gY&_E{+ak^(7!;uOOxqtr2d*{dLpU$G4fI84Zjyn8cb`4 zB-6q_$|nq5YLmu$#iWM5ueDX<>+RKe&LCJmmXH%&n)y$-?nWU-;Ny`&z@ace^!3yc4_?)uRk136Q9ax z`LX@yuOyuN(C5&Q#WF`dDmvmpVi-l$>W?06p#KhsPP#3zAalczKfeF zXO+LS*%3L3{|9~IyBmjH5D)aa$H?2tfAemQ5BvOLr&kRhqJONP+wt|>GR@a+lUn|< zAE)hed`ia2E6Z{V^l4ugmTCQ61)NGJ(}bs;OME`o$IlsiU-krk2>$hA%k%ATYs0vI z|Krbs;}1RbAK9z3)%Vwne&qk_LO|D_i0JfE*uoFV{xI>~%|z3!Pt5o~J}rJozfD15vSm>MsKOrQC_vkMCArcK{^Kyu|3cmg z^R8Qbd`im2zOX*m^~8~RN5^*4*k7Vdwg#;2wJ9>z6*Zts&B59|HF zMf$McsD|G(9&kv1cejNf`bs?*^ktu*-=hAxZe1@vUKD(?KKYSbb%%BRt|vK}Cnv(X zo_&9=W4s{sb17Y~^GQbP{Q&%L1^vq@T|YWLBK0OV>3V2C=(GKf)W5Px*9(m&q@Hen z81HlN`^TTPKbaRkJ47BIe}?nHgjeD5fYi5fKanT1QtuBazmLN>AEn{3K9Bzw6$%Ug zAAiRCpSk|0)U3qgG*##DZs+ffDfQ62Pj_1Gue?<4;6XZmpO){#y8_A|_rkt`AMnGk zIlwXY=={Zix|{ZQNH`E#?zfZeyKMt z{GlA{!BT(EE4n;)8TdL4efX#Ir}X!UEBHPDIwy1<`|o1^4%Y**Ki8c%@S{3q|K$F{ z#E8yc^5Fj(?Pxplw4Ch=9?|dpwH$FuY^PF*r|koL{D|{_-#Y-uclx5JZ{P2u{|o_6 z-tR*_rcH~m&Vuxp#SiA3+*jX5_C9Jb_wUE6!4J;AWS!i%Pw@SmQ|(d4>~!4YdtsOR{!YhL#qM*6SS`h{JBuSE$0aQ7AGh8O#fE#ov4p}^-Io- zzz4Is-WPzsi}CxSGb8n*!v%NgckoWK``@s? zFC*AHfd9ew?%a&TnY`nmKOqnJzg8ba)TW)N54=IhhkOoYbv-#Bg8#eoJWtQ_Av|Xb zIw8*gkOKZQ>MwTgp*|l8`4N88j)YtNGwk2hI;a%E}v&`#95kMlcOotOU?*zYc$ z7sUCW&BL>D4&@5>%Kz(2(IQh_&|L;rm8^`WM$ zPC0)np**=0a5!(WndfIe{QA)D;VC)4XXNMKa~PeL_c^xZ|k+9OZ^vLAKG>uDfkNx zPq|7+CkT)ITiD+n;$Ja3k`}$pxzv!oZ z=%L`dvIXD&$FC1vqrIV=?Jq%o*J*En-*stL;CF1A6gxX0@{2UU-nNilJKy=Hoet*2 zju5}d`Gr5cCFd$ZpFKl3w*veVn?_7I`HQILA>?r$X2&Ji9put;5h?AXUgYQ7Jy>?p z9(G-rcaiTs+mV7!Bl|DlVSjf>|MC{p1O7d!Y0Rg7i20wKpY=CiEQr3h4(8mngUuJF zg%0c+?{{K-Xgl(t2fO+a@m$$7DfFy=*qp+62z;$W_zwJ+vCm}ugV z--ovsg&ye>f6JDfy9Bz;n?{6w@Y0lva**==G*-=nQt0RLa&{6F50r~kUKDIj*$ zbrJR8mtsT6gCCyn0(@{M>`S435q3rU&0UxldzJSuVE?KC(#v2m8P~hXUVvd2-==YYFgZkJweqc}L&_6FTMk z)e!g(UYQbm=(>!0&~xk6DX|CJ{`apG+{7Q}xC;A>T@JWQNE`J30sZUyZ2wK;2XDdu z(au*xeqQts+7-)_6Eo88A@om0cp7(pL{YRH6^gFKAadM+f|( z2W|f$1-~!-;tut%?RXpQnE2seU?0#A%(pY?>WvBzz4=h z`ezm9xDUI%jd7msewX$Je&l>M&WA>*H{gGddP53*eTVpDegpmWTn0Y)PxwXAQ_Gbp zx59Y!AF=;qeu?o=`0u$oC4Lt3Fv)*X5C4Yo?J9MJ6Y=!WzBoQ%{z?j`hcB@ePjMzG;$aHLq2z$nQvtNuE!_X$Bc}ZS6-<;QAW; zukRZB1?ZnILB60*KSlcdKcM{2rygRx=7(d~E}Keh+)O={Ub2-xsKV@B{mk`Co|s3G!@%9T0yj?FaOz zU-jh@ReVX$8!kidVn?YF({rq}$XqDfs3B zABg=%izC=y9Ur^(u1=eproAelrX!%i(i5Lp6Ft zs|0NqY*bl`20spQd6Z@`FSl;!nmP7Q)jL`o} zw9mEOrLx6I$)D>2AJG5iRKnViw%;h`bM2+kE+;2^T+E^$L62FnpG_*5%1Qle?`k}k zc|HyOnDb}<-H6&yd?@&@zEl?fw)}>s5BoYv{;ypF-6rsznio7P-qrQLXY{|R+NmP{ z?Hizfv_H!8a~l8WIA8DIxIEx4fxnoOlkXc^a~`e(%q8HT@P77t&Wx;g^zYE$uUr9t z&==$@^Vi^tvWxKX(1=I<)2|P$%OU+w=^slnzg}_0@s>iR(V=Q*JNf8oE_gT&ihX|E zuHw#&$YtGd!BYZUI+YW9mH!vae>XH0JseN*A0+%`E+db6jGwuS_TRXn`RVIIIp}YQ z&3H=x+1H1@hxh~^#>gI%({LMM9N_=S%;~(|aazm$Eh7;Zr>T`T{q5p1f%6LntzqPe2dM}bb{23gLaHw`>EZw6 z&REXF|6JI?N319FQ_Qb>u8(*WxZX2C6up=qCWor zBz_6&KRcVIJ>M;GF!G^&(*JC{jB?_|xJx-CX(xc!@AsYZue$>Lu&0f*8|cyM z8RLi8x7Eun>K%Mi->irJ_bKK7_G<9EsWb}x|0}jD`40FH`@cVn{`su_y_^^IQ2+mn zjQ`>vZaF!zuLV6CdpN-RD{ww+vzfP9y;^&K{<(hWxBA>_+P%~0ll&{p4_DvN?e4=o zf$g_?1pk76_3BxV8Yqoo{Z#baX6y{}Khf`|uCmChEk!&(9NQc#iyj~6Fn+^-^!34> z0MGu-_6=J9LH`Q*OgN6TFS#Qp_SJJ8dWId-KDa)$K8if-sUQA>|K0Rgdj42~{vv+y zCy;ychUPy^{{i{3|KR^jS-+7?PT?FyX|yLkC3Zmj=KLrO|G{}_o9VwhjsIw;eSkmq zOVS%)KgIf5&rR41=*Ue3kVl9j!BBKbv;wRQp%_{|`ZL8L_|LV!P;P^!gCy z57aOH5A~1#OY(vFk%#k9`9FkxSih6a;XCAH{mVhfAM-=scJyoFz1TMCErE{pL!dAH zKRY}tetEds!Te(1qqOlSh+loe{?|%>277I8p7n5^pN4&Fy3?iP@?`+TMYWp z;}h;L*!QUUI^+dDr2l^uarJlQyp&JZ-WeGeuQfrB8%m=;Gy4xsx63l_wQ}ABz6N7C zFZ-#qAM%S`AMvt%=tnyRfA^$U3I9XlU$7qcE$4e%qM(cZ)p`@-2-*vH-jC#uMn?o6 z{!_$mWATEQ|FP13@E?C^M&>^Da`U*P>(zMr|}NVLam!LR-{+uM41TI9ATl@mFc|4Y^0J>p@zqp1=39=bCn^u+(* zey9Ev%Aud!J4G-1#lV%a*xLm7_X+~vYVYT*5>ZV?Ucq-CdiZ}mRMO?#|1AN3=qA3i-QBQH$T4_lR_cMiybnLb^ND4XZvZt;Y$h8OYr)!T>F-1DB?RAGIWGQxnXxBpH{pql z^v5~&@1Gz(J^+0$DUA-U(SD(+8XJ{pC+zPt;%|lDCVzI_cp2=W1Uset?tJv2T4(g% zPy0nbU$J7!#rcY?&p>}ew{s$|sIiMM?Evr%ru{+e&r|-}OS)b^?HT%&_mLsLSoes~ z-_CUjj1&E|Ka?B!`P*SXCFH}j6VUItR51N}NRO}Yq2CgYc87YjAKD@1S3>*nKOlZ_ zb37yccc4qBa{*DjGmu#0#=ionln12ji z$;o=w>Ja3M|N0R87~3oI`DoCe!MZ~U<3$tg7WfBmL7&J={|A5Du9jYV5&tuX@vQ{? z4|eJNDy~0*&e}CaS%>2I{66HfDn+;-jsF*(||B{dGYmfrZ z_r(6tzfv<||4p~iZ=Ya)Dqa+R#6IwU6z6?8=$FxwE)SaifO6{Bx3x>xFB!kuh4^aj zAHe^~_?zes$o>NQMUHaqXPi0o@z~ie`(NT8fgg5UX1Vl-2eeP@UvT`nG%M>-vG-=> z-lNo|gv7hA*8anf_0<`{`(DCL`^0^UVxN@X5cbE`E!g+GtmCI9GO~`U+lTvME+Y@P z3EKY;x&JXQ_QLh$AEABgXzwVG7&~sFJ%azaL^u4$DHWx?;Xa2>u5ZEaZr#esJptzb zGZ@Eu4dK_B|K=#ymk7`Hp?^kbzvv&Gv@gI1X`j%K86SgKSCe)1_{|YnpN`U=o`G+o z-2%Ru_CKaH zch%;3cM0nx{o7_-oG*TZ`3>))Qi^lP(o5jaJ6*L%*LgJ|FS^pZubJ=u?k^{UAQSN(ChSDsulD z_4|nLv+;+Re=t7Z#;-n3V1E(*1?Q6_KGDYMyPYY-PpW;8Kl`_;LZ0#Z9$>-MQ!D-#y+DIX}7Ft>c?lx}S+} z{{AnIzx`X@?}Ydl8&_Oy;`FN#r^a}qPwMXr|I!|h+UMoIE%>f7eEyZbAIcZ-mNoyB z1I{ga44*ds+4Af0Xg*gMKIa&p{yX^pHT+t++O#r0zN%W|_i~>KeAxJFx1nqK_*L}# zo~4iY_{=Y%ujAtfpNVg#`qa-nhL69Z|AT$`c>W0d;3o%(e=OkB^04vQZttw<&Fj^A zt8!~O*!cKWCO$j;4~>sE`l%9q`Ntp^;ls+KGCtnQ#p(m=J7M0RVD-{(=)aqJKZD1_>#sNRx9!9I z8sGfe??<5dtDnKY$^8xkZXK_0;cP1RUpy0^Z@=3({U;_qA9;z_x8*kd>Ho{|`v-nS z{JxDZwDF7L|KVS4e4vdh>@{(KX8cn&ell*pCrxVMZQP-aD@;_t+qlS-`QEbtujKq; zm&tdV6!PrQ@%vHP|EN1azc4&7Y{nJe;{^Mu>j2MJVf=9HxMRM1>M*~N^YOa8x~{Ak zS5#Fug4CV&vE0>z^YbOnzhFO;5)Zz}+!Ijc8&Of%8`>xLXLvmG;(w}#6Cj%$c=1`7DM$nYZvY$n$&suAF>tM9RD^Z^-HIO-T8D=}w)u<;}?RyKjk3 zUqV{)K84SkxbHm}e}jlaUVLCi1reWY;dkvyNPKcGmyr*Vt^9ze?Pd&SNq{#(kI3~T*o zhY?pER%zJRpD|9G^K;tQZU^(NxJvI6y(9+)m&|;u%VB@8AHv;5+|njbPU5dw-!Jhw zQH|e&cx>`VE_hOz$kY<&A7#%<%=zh|-T2RnAmO1!z1AHtC&?tOdhyb5;o z<+p9qaqPBy>sH7W^4zke=n5jWe#n+ve^lv*q#XQPe^lv*EW88yjIXzT$@(K}zt%4e z59|2xXZ(}M$M>>sSEZi`S^0{zjp6Vpj+Ub3**Nu{Ng$KTZ1PPe&bsy` z)Po+S9Qz0R_vw6tZ&vWu?Sa3UqJPuzr-9m>#8n58(*D{^Ue=G{AFRKqSsXyUAB{EE zWnAAyJt+tMrFA37NApLFUugxrjt}Mjb|l!$?@lt^QltIyGAU<#sOF#a6ymW7e>W9P z*ZC))w*S{L-8*Z)kWbzXz}%+#4Wq zQGrI?PCrt%)6#FQAA$V+WA!^Vd~MsL>wc}4PYLiXOEp{&Dd7T*j?lC4{^o%EKOEkR zc`5oyYrU>-`1iLVPq<|}H2%nTom%+jZ90GC3G@QJ4;(Hmw4d^8Sz2}l(Z0_5Dc8N4 zzI@v(*<0;mD-E-?sl5{y=}E8S?1u%eNXhzp(?hZwTwJ?MCjwy0X|!Y@No3^(C&4`9e{R z?|3w!7=P4SH!1e?1O5N!&ztz84&YV3WO{?qhuAOpJ4XCAb+9XX!KQ6lMp*RhWct5s(_aPIsD)Yt9P`mH}!^hCk`GWotLAKB_iKN9=H z`q+1=2cNVz!ju1v_)hsZOZlq&QIvCjAp8M;eZ9tKyV5t?M^$ zOt|kaelXTy~`&-k%mWeu))hR+QfEPP4UpBn)0Z-8F~ zynk^t-H~2szpP)R4{N#j{Q>cVO?8g6lk1~=U#r<4&~~>sA@RQ_Onka7hy6Ush~M(> zEl7D|Bk_HV_)-nu@T4f^b$c@s-`IIr^K1IQzy8U*_^ZPq{ry<5ApY-@zi;CL+n+#w@Z*SY{EGXd zO?yQjW9=r6u=xqrNm(91{2|I)_D)IMb90m7{|Wt^f9wx=z5(Z>Y`n3JGtB1^-?xJC zdnku|^1Gcs(Q$PTC9bZfdItX)zc=;;|8HPFN=?c4jYkpR*X~UZtOtC^oBk5|;r*5y zcO$L=@pOmAP~L;`-Og^t*@=EIf57?zaH!Cs-8lb)?>0WM!SHvY`eBuhZ`5&#ooV1{ z@TLX+f581lM?f#-O?U2gfM)EG;|*}VD=+bhpl{<75AVjiTPR1IukyDM9{i(y(RIlC zz3JF)=XY2h-R=CZOwIc^>cl1;ci1?r@iz=3j*sO=K6S%RN%O7a4%>#E2f92;{N6C& zh_4-ROq)?(@WVgxe!dpeXTD~MjytsLpj;o~`C8_cy7%aKR>vJi9nhEkm8iTgy)mof z4ucNr;rrpNjz64``}0GpKda*p{SNp<`JwDW{GqfzlhyHu8?rj?aD5i*4cKpGsjIW^n!|DX}54^{z|NjpALynG5#QcEsJ9TOlaKLw%cJp5&F3;G*7rD6Tzab6% z!9HsDKa_f>sDIQG`-gnb8vSn=fc{Vqb|CSKJiko+)*PI1l~Dia=!}bYTDMW_`HO_$ zSDgo;SLm%a{ZRBeGKxIv(LUYyf7{Rxz2bb#k#$JR(C>cKL-|}8`h$JeA1u2{zmI+C zfms*rr!zew_;`MC2=Z^*k38y!H_i(FOnTB)0-i>cKOldQKkc@8pdfHZH)?%}uj4MDC(>!% zKPmO>{7BxHa=!Dyp#Ko>!$Eo5M$kvUZ=#-|N15OKB;w0wb7C+4 z{Q=?c=(?iF2m7nyzcT&PVs}SV1;Mj^9r8Fo!1)jO$N5`~=fK}EkP!OoQ+*m{iUtlIXVvV z!~py?`V;gg|2OtrShPPQezXJgc=~hd2maL`HT$WJ`JDK%0on)n(dT1Msg1@yB3Z}} z{dVbDT~EJ%^P#fm31VX-!e?`6#8ra7U9IW2qQCu^?O(SJ;{f_mIA0bzVjq~F$bLHX z+i_NZ@9)nT{?Y$Fh`2k)CdEEmLr4W4_JwhP_KE)C?>MXTHKz;G51LL-Nk5sZ*XQ?| zBlr&cXpP`I^cEX~9{-7MKjCXb$OG?d?M3N-ue48#ecSkx@Uf!6!;eXv<(XsCg2(uO ze_P&>_AEQA)0)$;56D-}2SGn|5#*t_+OdGxbweoN;`tb{Ph%hKcb)C?Vi%{5Aw~b6 zbAA``p@aUK(+Tk#4H2ZUuR5bA&W}p4&w8VeTFM`AB7edoJ`?ukuQT$lH}dT`mJvMC zzX2a>&q%xdlppwPpu7PO{~+ggDR=rK_#uh2Y@~d_2j7n!!u;Z-k?$zwhwmpSKj?q1 z{&)GloquUw>!-!&sR8n*eaQI>+&?1n0vzpxau9v|BjQK@!2Hn4?qK9RPc4({?;b=C-g7y@g1!n=pXjiNxJA?r$C2(lK7do z_)h`9d^h;(h#&Q2egOQP2LEZ`r(FX79}~aC7k(e}8{$WQv+s{|usy(!{v-Bp+avA3 zciRr3kNz1m?ddRdVr&QSMIb-UKS5988-))1qJ6)M`?v7_>Llrzc2RCZ2YK7RlY@@T zw=Lb#3i+KfbVo@S_^C(s1DtP=@lohF<-Q$MdW9O$o!~H`36Qm3L)EnvMDNo>${c-%C98XON{xIqP6HR}i9Qw@< zIWjH?eU=+NTKR}RA(vx@?wHZzGxC*q&qmVa_-D@NSp6&oUHS{0yH@loHMAF`&Cn0e z|NA$SKIZkL3;5d9l$jqq5c!cl?Y22Jh4q&oj-561Z@VGCpM0q5QX|s7*U2B?k7Vgz zaQ?X-@HjtJv z_XpcjjJ#PQjnZx2dU6#dx=)*|Nl8;T?@C zo|F1pBcDTqWwHOJ<|!BB?1G!wALRV$&()V7sxy2)s2cCinfG04@-sq5{P$lhQOz}& z|20FdC-rx{2P*mkeV*U)*VIgUN+?fm*71w}akL+NuJ%H|AAP9Sr{<-8dqIE4f4cbL z$9O-_kMXY-<0I>z%IY|>W@kzmV0`Tmg(ak!3aXt8CJ*)=^{9F$H^COq4$(OO;JU+I{pQvISq(Al0wol~S zTG03oW*s@VpFFASe}Vry_i#v^$j(T6YG9Wo*i~(+Z0!I3TJqQ0IwSFwp;TG$t}09l zJvkqY_tB4KXM~>>$%4eSrc*PTeggkDY+oMj1Ak-L8R-{Y;~IW7&IkDLzCn*UU+Z7x z$oqh`D`AH?f8D_LWBgn$_Z{tfRMRzucU2JQw^_$SivBRZtQ`*s{^MD+3;iy7Qq!9& zb9}}8d+m&?1h{B)TF%$j7Ib~yFT(lz+V&Y)m&xaIf@kEUPUU?p==^T3%HKaSGU8FN?|w(e-^Gs23Z6!+kK%qI z)hF>1IA4DJpBoW{99j3=v(%**%K_=uK2SzqZn zoDuwM4`y_|R7U!{?Y~_G&CePWhm_=hHuQZP^t~SpDtlgcq$}qx^+JC!T|Sq?{ZE*` zCX>Jqf7596VC5soc!auJ&IU?mf`yoHngM5CAe0;(G6TtV4 zYPiNzunWNT97~A2P%irEI}SL+2R0rqddPRrX)RC8-(`GlOi>;`9P2v)J)mA!4C4Ug z$NNDTAG-EPM!v`MGjb2Z@>h_;4jTv${|mW%M1JB&As5iceTw40|C02ve!Xt2Am@7< zPrB48V}ElT>A|_T%SPuRQ!l59E3hl5Bmf1{>duJ74xzcDd2}3>L@?R zneC_ltAo5)-okY%$YnY7$2`Y(j;~h!%c(cuZE67?_}?$-Kj7c2{OhP6l+&MZp7JH- zgYkcjk$WBW1H64HwwLG2@5}k8HIzT(-58q{`u(sM=H-5%zZmp4H$wlQ$9_z_){Z&; zaerW=u~*uW!unOe@fV*vABcP#X}4Ja>1Y2(c_ZwVb|T|5+Gq9GPrrcj<>>Fa9PQg5 zQgue3V&BA%{!2b&eh>XEXTL|gSD1D+vcDt$w`@Q3Z~aCi`Z@6~e^&n(zr$S5gxp(V zQ<7T$!T1Lk@CU=-8*w$^_MG&eKI2D3{~us}-2!_>+%x1Zae}M&Lk^hdN&8^m{i7PL zk^TktUw5n^@wD>)g!^3}SBa18KMpv`$MDDbCI4UhPe8BuUU#}E`pX^u%_Eksy zf!<1^AIM+g8>JlUmwiV5tKoMgP6+;k`uT+OH~gR1QQyET`h(p!8aZjhjztz+y^8H6A7vxNQ;{Q;N`HaNZhK>DDkE}2H1ON8@ZP5$lb|jmVI82Ej zga2NAYU(+?u0IJnh^K=8=lOiK?(nqWgB@U8+xKYw*p$SlPT>F91^cxAD-ZujIcDe| zLFaRsKd^rQ9{AF+gp8YYrXQexJR$z&@SFS}$!BLoei`^V!hetO;1A=!d|wfp5_rs0 zrM-6jc8q=x^}{RBPcYA@;r<8g>v1kB@sAy8=ne6Eu#27I|LBJyZ;AiI_&9n<<4t89 ziQfy=%qq@T<`Q0skE=W4NWZFqe=Y&;aCS!Mi~hj>82qXFmxy0a&4}OXJFe>=r2Sz0 zLcf!^%i3cBv5PS~KjZyufUk=cgkS7m2>tFuCJ%T&*4GbZ%ksUC_6xnnvNMur`%9R= z;XMrOyJFtBKjGoJLbMM0!~CNG{)OuY1CAr{l8r}l+CStIf=B!l==+cB@7NcRIL(pn znJUf`R&#v>@u6c`>V5B{x;EGq@XLHc>=W}}ynkJL4Dv<4=%atdI?%cy$N}}|xc(0N zuR;H(T`WHcyMW*J?=J`*$e-~!czGH24}9st8TrqsL1elxnY;TO}*A0h8+NIWo%aJe_4}%i<=%b(1aXlFHr2qffpjrjH;ds0uhJK3juDTh; z|4FewjPEtnJIY~ae?q()#-=4s9P*LzZG-urrvBJIYoGMLZs?~zt?AXYJF;$Q?d;2h zmQTDMbU|gp2+ta}0Wf{+FA1 zjP(zzxvq_JYgcPh0r~&I{+O))uhD1ML+jb zK*z$bKL-6mJ~bziqW%6uXb0CnxxaQ5^Y7)5AN10|I5+SCd$RGB^dJ6Ao9_4Q#~e4- z?}vYY9_;!^O&;?V;N8%Mbr^id|ElB<==oEy27X88C7gGIZie$Uw1@k%@Ba?ucMy55 zpR%7|9wPk&c+B}ie*?xZ*3XQ=?$FPcvVV|&$oB*2&-RbT3ORgk_J11=qkX8qf&ByU zwtvX}Bi2t>P(JuxYveP~pON~yf51P$e~|yaL(mK4GhqHtX}?4Gzry~R@V(LWs~XA& z{Q&z1vVQ`(NnB(tOY5j{9L~ z-^ZqnC33$6VKgAAnyx$o>U-j4yit_!XRA{T|L07`^twPm~a^ z2>k?~pX z_lExMc^iAq2Jwa~zo{Skw88o5->AQM5Ahob@cT6G(8e47Yp3*$dhj9Rmn6Q<#^u;} zL!2*=_=L*1LmO`>;}`r_W!#~SH3>ax1Ii#@6Yo8x-#z2(&PWN z#AllL$6rOi$IxH9Kp*j2zg~PD?B&;wuS-?L*Y#G!wOKp+ca5*}nYhD+__}{!{NqZ) z&#DSOepP&(jZb|V|46^2Lcgwl5=K8O{sH=V_WfpSCpO;j@5HB?er)Z;#y{G4OdE%3 z<9O%H`^~>BKK7Tr53KzI&Og`xSl;*cs9E?+#0{&Q#0^_I7Qc;$wR*SdFMA(&jfppW z^c%hp%>5np%=^E1-&f+;5DzK-5a$E*`@imadH?sgD#&+*Jln(mkNq{M9B_zNJ0o$x zJp&$30pI@a`@i;mMEicC_WxKvFmWx*Oj`YH{0scMWAZ+eE;6ZwcbmM&q(PI4{{_5_ zn^ER_l}S0j;QD*3$+wvl?Q)GzptFhNc`It{60Mk54=);#5>~U`>h_-v*+iB z0AFM1Ep|IXXQ#U;@K%0RCuiB7G4~G5|MBCF#4B3*n=M~Ebi44Lf`ymy@z_X0-VLoq zO1k9p9^SXL`tywh5HF_E9&ZA0v9ZO@l!X`h96wHeVq?w@EuTZ)g5*Kp;K%!;co%jA zc>H)N?5Ic6lXA%4hdk*X@n|~k9lD(s-tlVuIDaR6RwFg?5&0kWlvNP%DTHTyQ7zs- zB)=Bk@_o?J@P4EV@R0A}Lj~Mn*_Vg>M7{@{=i#e&Xnig*aio|Jdhb?0jek6d-zvr{ z>^JSIHSMwXQD@raGx8(;yGe;}68ShrUhXBj-|qM5_gXFgF9Y6>c*}i0&Hoal3;aWV zo*mkL_L}xpoA!zR(7v%9wBO-@6DKob$8Pte_ya5deR$6~h`7#|a8m*0R{L!Gfq#h? zb_@OPg&hSECs{rAQ0&d}=W&k!Z_fbX?{-Jid)U5bX~>pKZKAZ~fnrlR1p_Ayvfz%&Q=hqeBlEK?JI3;9=@_(00>F5bD?wrEz}i#>h6 zI4}NbcwqYu?FTjryT<`?<+aF@zLjs)aq#6F;(NJ#awhExa99Uw&DCe{OsQ{g+7)_@Mrd^>wl9 z`uz*=vcBivr}GVab=tUFrxt#x=@-p8{T*>^!spM?|M>qM2zJYRo$2Fb5f^x=(MI~Le5FeL7eSRmr!uzo8l4pD))(3%~_!QzF zFFn!p@xFr8H~g!Z_gAMmS`;rAlm zF}#m@-Af#Y@kwU=4)-&b8LyX)9MyPZ&&Y2G@aUYW@Ay)j8-*o`?IZjH$e;M|Kz(|R=_hX?r95bV)X(|xha$I?<67@jYs->@rI-MH-3zG?zTkJ7M|~()4yH0qT#Py)9{~DzSzI-0-Qe(O|L{f ze`7QqH~#7q#vfvT=;B2UclD}#>1F@6>N_4exWbLVt@MPgZG2=Dent3)ocyiP zbZ3`_=lKW1$4|}5_;_=(wy&-y7(YdS3j9~AP)y^GwQIgsc4#_ZB0fZYv{?1s)cR>( zq47e#CO#PRL)d3Ds^Qn59_^%vly>%o$ahfSX}^dIm3D}}1d8EHp{@wbRCO;dlJsPEq#O|J@TzScf@DD4COuh{-K z-bjf2*R0Xygl9Z8%CD@1D)2)euSRvd%$Lm!>;br`u_ zFmNH`kL~%lOB1u0RpWjP^KNk%<^DSJ{|x$X#M0-} z&0jZs5?(bX)1TA6Am8?+#&^l+Ib`}XQ~Tn|*h^7|z0X^pE*5H}F9H<9L;hTmi>v7+X&>WD`+soG z^gog2`pZS0*oxs_rQg-$QowCq9`PQ`Nk5Xqivg~;*?#bP%xQ1e@rj*RJfrLV2mkCt ze&jw`k0gf60*CxNM!rWS{x;z#4;jFP@N9cy;OeF6DzN$?bS&@Y<_2;JjGzSDqbJ9<9?@K>Q%0M}vidZ*L+{f{Yspl?SO z?1Xp-nXr-X;gv@AU(RPh-&1dt1U~j)PVf#7FG@N2YZ>s9X@%$f&w0+q84&&Y>1OAW z`91Og=V;)QqTzR|zs?Vrr9K;fVBF6CO^E*k|HmxeDGz7l*)=TnJ(U^e{RJQ5S6q0| zC-tU>A@{)h{COQOo==m02e6T;AE6aCn7_V#1_kCvm z4SIQPHm@z(r+;2sEOV>p?=+TzRIor+e)BU-e(r;|+(f-9!Ez*7}ul;LF;~nkU@ktky zZm8c0?m_QjkKOm>#@Nnae=G)kcii_G`FHYprBCcgK=4i#9vZ(7aXyWD zIbK=NkNxNzTM>Lo-vQKb@lF>!sUPudoFK*t^*=}XPIm!Pl*2Q z>ePPQyx{o>ewU{GP51}(JHa0GYfSrDt*+5W?)Rp%7;lVgwxIpM{cGpiPPQ-mN2f5R z^hg~FNc;IN)Cc@5{k$>lFWX`Nx~gn{u-~q4JI6eE&*wph*89&Csw?aGq5obE{X=^> z_)nm~pH8Fypf~#e7U%!$nD#e)i1m(q(V55hkT1xm@So$X2tRa9vpn5jC}=&l|5H=i zU*dP|iTl2MRq25HyIfxc$HuhZo~P}0SGB))>y>`qP(a#6y&^wdRqe0TkNJi5*0tP! zre})n5B6s}QBSwv|8F>col`4>G6Jw1y5djB-O zO4n(^r~A9jcoUxTl`mlYDA!ZkFTgw3dhh$Ne~|e5V^i9n?rz0@X2y>Hfbd5F-*a4g zrW6l;SJzGa63kx}>=b{V!TxGh>C`o){TKd2``z8Z8**dgw#?7l`msI*ea2^21aEgr z;jw>`@e}#M_>ax7UxWR*?*;JW_=0|q3;hJYF7%Id>HHqQ8~GwUrTl>Ye@*|K@o}YB z+q~A}b^{*zOZ5x&cTM;sKg)9H_gAzYp+DO1o?nsQ$Hugta2MdA4+XyuVIOESzrPZY z_Pb`3p4$H#PJTQf^miPMPm`Y0cBFoxkHW`hmHo7LJm&*Df23wS(c2#Qih4LbukQxl*EZuxyIp{1z1ewvCp`Hl2K`U{ zlA2MvdeAp)$F|=_d4s;3nOT&2vRx>Ld`kPEUwU5Q=I6CMwWc2zWPLkBeb$HizpL~U zIYa$+d}h8&dX0RM&EmUf?)$u#^gGL6XN^7A#_`F%q~BZoI(7#_e!x$*=(GKR!mrQY zB^m$XfxrOUNgN0)@G0<^U*ZP>%Y2Ulj&XP}e?Bt5L;%O%&jXIn48G^{Zs6wV{E?cn#Z zh`tLv#_vp_Ccn>Np5}KmoWB(w_v^z>;A{Zr`=@%-b2vx9Jw|sf@Vk88<@yu;7s)8- zj_*%X@8UUC2n2n2-o^Z1hx?(^g_8UpJztait&@e4l;3IjMDp83&tX3bzlBo;^c!&D zGm9pFuJeumaK!P(aIS&hvF{T2N};Ckfo0*Z@Jx%3eyf)nONhJsqml6GTk?L6?SEG9 zR12UB;M0@Z&P9G#|0CRwTgLsi<4$VYlkX=AD^hRj)ROpHH3Q!NRoEFX1U9ihY5EN! zuT^d?@EQAmhw{4|^QEeN^8JNENxqw(06zHcb+&&1@ss8Pf5GpQ zzh}>(zqqew@_RVBIM&y=pBuk`e!_n$F}YH=@UM8kP~@{Y+^*xEoD1w~0G@?2w8)cyE<`O^4qt~gI@R^_8(b)Tfg26RUM()0(!cjRB+f!}jdV}ai%{t@?9fOJNll6vCvd1-+6Q$yX|i}HJM{+_g( zoLLk)Tm4it_p#Fx_#J%FML$~jQ$oK9|7WUz13kbehe^NW>574OM80~gU*b4^2Yfr* zNB<`@YTO50txv13fd|KT&>E6910e$0UX zQsa9#5!0XU`6a2p-Sh|kIi#*_nCQo2mTcQ$q#Qh;Y&4pM!9R82?;QCV`X>@b|G_umD_S4MSNz+uhM%dQNjI1L zEc%o3bKJ?1p8@ZWlvK{b7ze}y=;ru?e$>kXN4^DI9Q@4h4?(}tzJmGeFw4IcUJ|_y zIr&7!FYx=+&mrv2cUoB5LKC+hzxGhd4S#`uZ;#`rLQ zEA5l#&jsq8|K;xvP2n8I`48Yvqo4mC?Jpd7#<6<&4Cg(3=Qcv#p^wmhql59QaNYx4 zjK4$gTK#PIXKACC&&)tiF8$r1$^@SOp7N>wX(^*ulSa<19=7;r8zE1q7xrl%;m0}u z0iN@h5A8>dytZ8geIb`A=v(qB@Du)MH~P|JJ;3|)v{%3IW8p6u|M3fW|3mc4%6GKI zw}AWcMKeBaM&G2Ue^GA-^(fW{=Y>8|r`_=XY0jIdHi>{Ehf!{_W7TTgfI5V_eIfPs6Shl z-!ERgCBMfmD;=!;q3yDMpS`T*tvDy6p82u_{zrboaJ=H<{r{K?{)HZDOD;O5@8K8qnR5HY4vYDR__wy>o##1iQT;uM zC*Mtc>QF4KzsK?9?+NoR_+xxBZpHTz&UaF4@Fm|z%{-r%{8phhd{6sqEZpMzsHq_E zyvJeM4`mHL9^rRnhQsnb&u2Bhbvu41JnNTpwC8RA+KGQC3V4=x;K}oASKimpcN2*| zx&IIzF#Y!`KAsPte(8TYuKmm7$^NyQcl1y0zeGD$>v+G!#qVr~{h=M(^uINWcf!$c zt94glxO1)C;14)wX9nkgihnxhi9Ol0AM~WZzTuoayA*ym=>z=-{gVyf5_-0^2YkH0 z5>E7q{n@l1YENo??mq2b{5eY>=x@L$p3!%&bI#}P#y&6gD10)b@RlzMYyF3P9q=(T zKAm{7pBbSq?+*z7BmT73SIlcY90!g6E%$?3bA-pZcA0uDoejLxL;B#{w5?6+DKP%t zLg;1F|JIm$TlglETlC$;y@76_Bio1l2>7Msy=yoJ`hSFT{J1$MC;yyt7|fJcWTw} z?ql-*hghGw+J2;9=xCmQOZo!73-6?#jV~RhpE=O*q{1vgbcSf2h=DbKFqd;#~FFpkncz(*e3mh-Ia@GYq~Y|dj9|9wso`-hvw<&h3^?$vJi@W&E= zB^ym6=Mnqa|IYIf&R33K>^!)iV(mO%>i*p6roD&v zc3>B!ea6~(xPGGl?hNdOv~O5D&*?nc(e)Ge=gvuE@98vlnhVCxqxPe)GnrR=O%Zle z)}Owhb{?!RB>!XJOaS}3Q@!B}YWF#nuSxyqg#P=S@x0n|rt&ND`&{E~+0Q{gaDC#; z@*V4&N?z?Y(|L?1@oUljS=UTW_Vw-swX5`Cy+?oKe~tcq0{Dr%+GV;Y71+(SA|r8*$F%)vnXSbv%AQpI6m@@8mprNVm-JLw_C?|I_oTfc5BvlB%H_s;(rya-FWPP9 z`Hp&I{J}r6{s(?G4{845lC0C;A$<>wIN%qt8x`jQvOde1{nnit=!5=6XMrEqt(|7y zRT%SRohkFjS2vtQwIcn?U%FREyGysb7?AyEiTGiE5Ub{=x0!YwU->|6>2igP%!coX<9K)xa;)xKrB`z7W~b9ZP@HXIKB(N1N$8Knf*x`zKt6G5&OY`2FE2|11?QI#&>bT z3;!LE`6~&2C4c9jf4I+&l25QtwEL4}7WHG?UGg{gpIPuf-oYP`kA05tHTai$jqq3I zKwt3Vt`=DzvHxNhirIaxHk%C)$nh89{2(73idY(&#Hg%b@;zFTqz5^6NZnj z8vc>{lhDtJ)8Gq?Z*qJ^?3%gD+P;*7e`P#bZtN$y9Ow!D5c(kgPMq?A{tBO?f9^@O zuV8=qIq!d^rf!S=v2^d8z&q$g{j&i3d?2TGqa@@)_V0$iJfB^Fe5}a@^ceSlF^)g% z1N1L<;2)lZys*A@!~d4v*#G=3`7ecgv4m^SR%9IV=kN}EX@7A(@jGpe0nsNZjz7Lj z@E!Y9?r%Q?{#VU-SUvIH8hr?l^BF^T(L3M|jHB2yzU2G@`AnUMzCyj8kzeNbrJjI% zejP&ppfALp^xk_Fkvr%a;WL?kus?C--dc6U#w~eg&XaK_|5Cqv|FXW*Zq4y`u0kDg ze@Xp^_(_fLRpkAhcR(kM8{|>!GP8aR-cp`o<<1;u{W=f)u@}~oW_m$H%p9A~2;CG$&$$-df_!Q(D^vTms zM|iA{7cf39?MvXB@KlTNNqQXc_>TI4;|IAC`%j#9BzzZ{hWtQJH1m8M?T1gQJ;vHq z+%fPczPqFGWu0i%6a5W261!329O#8|;lDqFeeYCR@Qt5Uxs9GwdlBN3iTyu8y9W7x zYEj@a#!lXh_#z7j>R=xRJ-{zBGb_@s*qVJ*;oqIq-)a9NpT^HCpMNRm2VvO%fG^=s zV|~4Za$^q_`y={S7{~8_jP}PWGOuQgok!>k{hg}b68>tt)F*Nb`=sFy?9V~JQ>SkG zSZ{%LBFvxJbGHPKX43bQ8&1;b!_?V1<$v1Az(=fq0sQ4&*7{COVSfO-ND=lU)+6&T z@XKDD6a6Um9q7f>d6grvKcYO2eLLeFB(i-Xe=(dxX#Kzs{5L(l>SMiQW2?Re;&*9D z>buj_F6*=KTuJ(q%>r-e&AGXn?Vs>}d)2F7fc>lcoLBGsA?S2jznA>lXg@Lw{Lr7- z*+qG#FDty*zfgYm>^+&UtR1QQBHppS(evx$jt6@x;WP6JZ|yX9jeV*W_lYTQXV3RZ z{%_pVm-uzvlt0)H&t?MvQ)oGFUUpFDY z?D7q#Y4ei!(*~Mq5@%xj_7!>G7++#*)2#-e@akqfna^72i}`oU_5kX0!l5R`Gq4@y z$Y;&|bN>K1$+y_FMSpJzX*)K)#I~)gpns-+>(-L^r*GRwx5t-oez?7j=|%uiC@rY@Ui1&pT8--gvEp7!~Io5Q%(4*(a@!(LFr-n$ALa2 z|1>r#T>>VbGVTuu|M(k~F5hb0$Uoo@)Nk>zPn*vg@-6vuEk6Dx=yC9g#ba%JO#F|H zcv$|h__P{49yfSM{Dj{U|Ks8K5*Cl9rkdbk$H#B!V&vEHD?N04wlM#d$W?=(OTCT% z;RAm_zMj|+cf-;_<4fFFqmQMFwAV=c>3@>=61KgK?c6o>`%HVbUi#-SS91%4u&z|G%#P zkoGyQM-bn{-%`go7XcFoL+EquhO-Uup?bIXrDjk1@tu9_kKA9C`fXec!2@wb*5YG8 z{|uo1@9iVpdVGxM*W*(Nyp3D2-KTmgv>qQr%AYgwEqo>p#;c$w;}Pikg!q^7m+5bK z>6YX#ZVXf&i9b=_e9uq6@22K}Gf=5 zKtgt!f8|HXRmFYD^=^ggv+@wNTm`JBQbzQ1Xw-N$%`M;q6W`;Lm^08^#w+qF_mR&X|8vikY<_PUzd_+o`1PZn>wDea zUZJzx?-%+UKz$*{?cLc>l6LnED1LVQ_6}hDf$#p;`Xq1mlTU(vh%;g7-@j$iX$=?P zg`#mHULIV*_v`u7H|jO3&n)~#y=L{99iNSQ&FV9h%l=@y@t?Q)?eRY1Yx)QJSbg`c zK9y6e?=1YjeHx#@>c6IMtG?k@R<=hZff3S46G2YssB{U_=!vZ!2i+b6u&oiX#Gjl z!}-9LcgTC!F!A8|ZF?B!XgkHfTk22mSA61aEj|~1SoHV24*x(4AC4;iZRVN6lXzPC z<#w5NVaMb7VPeg{Rr}wG?-_sK?RHPj@jSdgj9*sXyN1KhYCqbdWjT)(`z`txqdzSC z1xJ&8vTu=dRzIIjg`&U-lm1FY?6#;ySo^5^u%73-N6R#C{RMzL94Gh0Pl8bzr#-{{vF;L{25(9Pm$`ONTFo#p=#gSX`mD<2kLOJ{)xzpe9^^1bDoyrJ{QzMIm&*RwkAv6$lB zwMJj~_kn&B2H!HzHE}LH9NWNOhJPykhQHSNV>jX3^E$3aEqyBM<3sv}%{%hrh#Yxc zYvcO}f8`CG;`mPF-vj*spOyEn;SM~VP-YnS#p+ryPUJ88r(6DVO~0)l_+Ojx$#y_* zLLbFVzbh5xrytjIe2^c}obQhrzeea&kx$sqzovhBo0&H{?EI0bne{#VW5|DoU)mA( zi1SW1(`d|5?~WsjpPNZa61QyKkFk zEWO@7@o#%jQor26Rm#ao#~bVAjNfYgapUP0+%s^7-%5LUGQP=x@UPT|`7CApqfg`% zUgi(jU+sMgcktd?{nsB8|Mah!zv2z!KWzPXt$!}&SJ=Pz;r_vr=ymIN%lI&E7x&Mg zFX;1@(Z3P2d%fWH!hhWO?~Z;$`sa-QuDyqWJYBLrkn#VS&*{vzh(5G_yPdg!@UhSj z>x(tN-N8Pg^YK!Pz~g>gFYU{*2e%17@@87$!h>b`?qeVDBmIoO_vmru>$lDG7lwW( z@Xq-m@?b^k$qrT&9{uC_v%Rm8!*}HClk#MIAkZKEXMIjFGdy~{rLh%p`EZXz>Vf@v zH|-zkLC78X%ILq`+bcfa_t5@Foy>!h@Ka*c6Fq6~%X}WV*~|NNZMi<7Pg_F!hx;7j zzbf`U)Q@vtthX~G@nT8Vd0ue^&vZY}9|<3i2V_0B?jNdtz8pW=e^Uj*rTb&WC4tBH zPO$a9?-#uPhyHgI%Tk{5;2#G+D8vVr_Hh3GwGZ$yeE&ZDtrA5~;KkqdG5TkHAoP!S z8@##|uLS%}gW})&D1IGl{;TRwEc`|MdK5pedmTUe(?S2zzUSn+4SpSp-_Vfa2mTTN z^hnV|{|EcoFZzFVbn83n|7HOFBffR;%ghWZp1C2#)0Ri*|3&}b;-b`3EG|kv1wZf~ z;$k@0;P2&``yrW((i`_@Wd90#w~SZELG1_pA!R&d{sjD?LyB(%_fW(SIDseV{}t{Z z4WNJUuR?q9%j(wlV+UA|_-9G|Df;iiKNNlzf*0C%f|)h{X~!E1Eq5 z9%6l@k0;~e0iJXc{|EN(K;Q#uKZSD8Ju~FV_jegz0`yB9C`ow-=ubb%?n5gmr+q@l zw^-Ev=7yB+jJ2G<05AM2^Zcd|3|d{*00ygpr5GkD}`#$_udyZ)TMSr5)_MiQuTy-2$JjH*H@bC|1d)804`*o#< z<$vq%dgze$L+H>U{)eK!3rCbb<+9Qx1N=G8I3N2r93T3-%D5dsoP6}7`-t`f<1go% z1<-}#){z4o_-5#c(#P_D$AOZ-9V%{Ov#g7(#$8qt0 zTDN~Ba-bLHgF|Ic=Ytz2RQ@x^wEeCw<*VE={f_jZ{+DS-q!^GeB=DHm@_g`Lb(%09s~aZ;`BuxUqZYZ zt`C79=ofxz1^g5m35*0_e?8U9@uGaezw&dg->T;RhDqU zTY#Pjufa=xqqKpq3>iPz0fm?K58!28i2IBuq6&8`4Sex_4*2taQ22!2=NxaWAP)48 zMo#jHdjzDP59ibF3BA`j(O8r6gK6jqz!yCozv;#~`F%KDlX~AsugDYP@(uIz97#hj z;QOiZCD^&DBZU*zKUVJ_x4*d}_gTv6fZUs$p2qqU-<<>e^T_{pI9(HX@1TB{JE8YD z?*tCu{?-i#_ip9>z@cxnC;!zx~aC zpjwNc~$Pm zkpJHY{YKMzKeYYWir_gpr1ve2f2}Wj1i#~c+uLb#KlG3%?STGY!@n>zme%{B@z-0V zUt!)8M?Xkk=PTU5I-&O~-NX2u_vB8j-GAixh9ZcMx`6vSryCbdKW>})N9F!U=j(XK zeVq95Rk^nld8^O(5Ayya>>Fj=>j1pLHk{N$As!m*`I6)Ra)kUV_a83|m*rl`sq6~)i}??6 zzXtFZ50~XWZThWy;wN`z?4IDs@%!MD1_%5m_X4ZqCCstak(n&oS-U@o`zsUr`@ru+#{3*ZbGTw22(aO=DY0d*jNB+L#euMlbp~>oM zA;A z|HZ#|`k=n&hV-6f>L|X)Ju8%Jei_Ik`O-D_elufBrhV<7XXMiQM@}6BAK^X`$B*}q z!*Ahx)YkzyV?FksG3A5wnPz@3e4m1RQtqq6x5Xb%;+ug!*^@OHx7JC>J?Mgbh2n21 z>z5C2IMau3`v~7Tr1vHxxGzUK-wBKf|HmQEY#(wa_XIm2C%k`U=u=l^{?k9gy)5RD zLOtOK^a%XJgnxmbJE8SOD~d-P@=gAv{E+`5lppk~T3+=@J;zt&9#+xZKh2wa+b!Wa z!QXYkN4USJ_hXTthw_d35|kgvDda)!5#oN;uPDFSLy%wKS2g#?i=&WV;BWEUa(YSl zZL@nzo(0N3>H~eCUqN5U6Yt+aj^y5A`sh6wPtiZnuTv(UQ1R`1g7m^JcG`C|UQ(-kd0^%mru_i!Q4ypJsWwH#|cI|jK2zCH94fSyQ>*F+AA z_27?-QK!h?!MD{3{oTs<9S{5m`r_V~@V~tWR;@0H9Goi&|4_c=zUakcm|q}=vqvy~ z{~N|f{l`Ny5}pF@0DKF^%Qcng2HzvTYnd_~_O*K&{gBJ~X9oa1{P{SQOGu)e7` z10pxm2ldJRb9_$CtTZn4EgajOtjPF6U&uYlpR*kL6!j70k?oWIp3y6u$B2I# z^2mIbydQ}1Z#~TXS;(gqc}wLZUiO5)&jEe_?LRcHiQZ3_Z;3wC`~CZz;E0cJV&{)^W5Ki;O|e4J7J?w5|l&ocjKb)E9Gw)@ufy7kN-2~ z-=lpB|2CeOUz;)hL9CzJ_&xZZcEbh8eT4l5zf1e*e{6hC3sC6Uv&-^TL~s6QLO z85o3qz`Q1SnR(6LZw38-h52_)KjEAO_55VyDCO|qk^Tda|9#HekU!^Rtedhmtbczp zGCtlX?KMOH`ar+8v!2L%;w1PJbUA7Ct?|DLdJ}WMJtwm^#8lz*u3*;qaU$P zlKZN-KSKVldn{ZQxrn-D(R&fEBKI`!)?lCf6#h%&wT1=cUq)QCM#eGm$@*IFZ&JPj z(K+GU#z;k;&dGp0?f#{qtt{`>KR4Fb@{juGMxVO}eAfMQ!_Vux`>a0WIB(?n4(12S zPiqqIVqZ1qK0Ht4JLivO(9fO+wYv)E;i=`MPb`>Gj zuNCDu9|E7iPAmSi0-rVYCZ19J(yl$9Rd}A4I`Hpo$CLJ5wxjUkU+Y8x&)+k6@_bj$ zaby>+f;~iQL`=k7${>>ZDH+ul@h<~xtzXR{2OV0S;Vn1&BXZ)j0zdGgFHEhp0 z**@qW%<#Mue$PeJ!*TAG=NkVw9nmFUYb(wbBZ_CZtLD22KV$>n8a4jMg_z=5RY4hH?X8}kq1=dMV3E~)h-20c^1%uj3nxz^7& zItcxU_CLn`Ro>5UGv`YM;7>ZnjGr;|_pix6;lbPTeJrZ=7xA6axBZ&|*mtDgdosh_ z@;k;qAE>9FwXUz}pIa0B(u0eFmp$)U^UpQomU(bnzDsr~eXW14J+Da_|6IgVeZ)T( z3u)*}m}HE9ZpYpLUjLzguD3U^z~6IwH~Qa}#IEV?4J@;~4e+$zi2VifXYD>Q!14Dm z>QVcS`sbzr$M@t0JI_Y{+>Le~Et-YsW z>@?%X&Liue4*_rNJ(bF%b{>U~IIkFcPtw3oyrOmi4Z@OyYv?L1?RW!Y~-{;Bsv1jbu&Wr;L5*U{dWr zD98HXxKmE9NO@sY?K+cVw{(4u{(p-7+mWQ&e-g;ALc7XP68r#sfd8+sz6ecCmF4^N zsM>X0u1B%o;QHqP;=3JAs{JQn_N9lCB?B+(`yDRV$5?m0o>V(e8~o(i&JO_ZgMZP{ zWKF(L(9VK-bH=^}`iuR*ErYKCKVj@V?Z*B?`&kh9zm;4Ocz0-3+IbWFO?wvhSBM|A z&uN3bVgdCYPpX|K%zY}}Wql9+IFVGlPCM-r*q^?gRC~_PJ+2Qi{#ZA%eOb2x&K*^I z4)7EEV3_t9tcN>aQM*xrb{^Do2>3I9X>wHUJ=V^XE-&i(wKOX6d%|x5Z@?F5f51Kp z>tM6KCVw1vaGoXW(x{0KmB;>*-;4ba{1ZO8BI~!poA?g!RkPpH{R#3r!+t>joeWaxEp+?mn#Pem^-;%T+puW?Ho5S^~^-q-j z^I+6DOS>NEe~Rm7)B`>gdyl368SG!^k2GWKMsBVm{7U|EJ{fVq_hMg)k7@msBieTu z|C#ZfDkp35y^FjX^#40sF8iFHnEea*=gjM6iR)wcukkqg(X()DhpsuPvEV5Ro3h`vVI9!|EMbC+rthNKU5KT_y@`U)TKQM{cj(x$@ol} zeI)1S1?ZWU;h2y9crW8f-fb07WOMbKg8FYqTFF$ zmU~6*LkY^O?C;!P^8P@D_EW&yeNFhSIoYoOUh>y(k$Ak=cV;1n7=N*siF^%EenSQB zA5p)DeIfhdmLVS~KWFIYW$`=UDzwiKPs+RU*O$(x$DJzW3*!#?`Xk1bN}7EP*O#c@ zNgKH@K#mAs9J(d)UNq}N$g9|eqGO;V_^bNnEwST}ewd#_?c@5p`2C|iWA=e4=lz3F z0rph3pTxaHhk4++kHkCaR|o&%D&_HyC|4`85A@nWAIKB-$KQmozR1x2gZ^|Ixl2(F z0Y3!(WPC*EeX$3nu|H(JMPpAw{r`gd=gAXGQvYcq*Dc98;WOgDjQTfww?zJ67ZUlb z(hiG#@Ik3x^pDtuPC>7buGMS}{4W00Q;eT*mUbcFKWXel7mOY#Qhp%6kTqyIBwpfBFfjq8*0O8e4X z#xMKihI7W)SIILgQ?*OBL9K$d^gV zALPK=aZoPs8|^n?>JP{t;jaNcPW=J+VaPe{Cf0tV^n?CKpirM_E7g3i5Q;J7V9_^A~I1Ne)${p7fg)!Sh-Amw$@+xe<5+&f0%+#{L5QKWF_z zl;{5m`p3+Fhbh0X_i%l@O!}B}i3I0q;A!nAcRi7BCkB6K@|Sy(`l&jSro2K9WPJ$z zGz58HK>qf_lylUZgnf(pX$bV+kNOkFzSC~(DpAJYLp^tzT){6E!+2xfh_D}6r=?E- z9`%d;`O{eI5apWnQ;u0b-m@H|A&yzA>L1eJdcfeQjeD{$vgY^Cm6r+as7SW{<9+Ane$U8JfU>4`Y$)3<+QK) z(ErC`Wsw)`gT?L>jYwW{@B3D#g8qqr?k}CM!_GE`{r~h% z$SKQny9503uKu~lot;~6tAFm!n)ua*LaYB(|J?06Z($$oyt)<7hy8Q6g#xG#ZU#FQ z&p-&}5BcYA-?`$n1`5MX+w}LAW^Kp%_cd)_1${I9+qYxf-fw-msi`dc?KS_(?do5- zXZuF~O6)&B1O1vvzdv}*KCK_&ubKZH`{QQgpWEErhwldacMyN{gZ`J?f9xQBn+n5Q zcLsom6W$*3@O;QWc56-g;y zgU4=z$6e!}yV0-Oj?-`Q&$W2`HSafqew%jIgugZ$y0mOkdRYGPZ}6MmV(_s1Q@_D) z+P42&^S@jEFyrIj8NfX4go7K$$N1;g8^2}iuWZL>Q@!%XWB;%Gr(S&(#yspbvq)yU+3 z{}BE$X1-`>(ERW9&K%~~(97JP)&KB@^Y%$k{677|Ep_zs96b(r+(#1p03Y=0ys+6H z5dG#f2Vmc69f5sJ?4MixHTnI8hMM??ZuhJHvG7|OZprVcNA$q(F!VjzLHXBQAE926 zhbF(u#U|iGJ0$2Q_4~~H8Ss~-9)GjqVee1T@0Wh30}ZS4+-LAWxzxYSwEt|wJt-d^ zW<7DSFAt#ohU520j}c$JC%^maOY#)|1eCvh68??F!f>!z`?<;2C-FTk{vo^*-y^;j z$sfMiujPV2;CJGk<&E_%xStgtIpo*xEPY=01?oP6|19B|zdcxAGwmyVe9cPF!~VXy z)&}HnHvZ7I{bP;VUK5^dhxK32toy%}8@0WILH%wMo`$}1zBv@sa=+=nZ}UCT2kZ6U zb3S7Jden2h!|gp71U-=N-If!c`P^;4n@oRg`S(nJ8=H0fgUveL=KRjt)U4zFW;6M2 zu>Y;&eU|@p{C$g9uXMG(=7--Y`p^2Vdu#bCgN^kS9k(}EWgIR2g#Nz+{;FS;a-Xk^ zdXcBy(8G?;cTN8X&A7j`S?OW%_ZxnGF#!GmeH-v3{cL&2(0`|)Kk2LID>{DL4ZSU2 zy%;Dvt(u=(_>=ftN8b2X8!^7{|0O=xQ|sgRa&T4Rj?@pB_VHY6AN^~5L4Ob8$={#b zrtcQNfq}B~5%Ra!<9C+7@B;jF)qhvUzj2>|$CKsXZYG^f{`OBO9~=+(6>sZvT9K#y zspFuJ`0qnMg1_rce(HVuv|gL9UE~k&{l}GmkBVMlo_3Wt;3x1;OZ|iWtTz;Kd*5(0 zPrJpxX|vKZgeURazva>XZNfW$4?Ju7fhXTFzEc13<8y+)Q(sFmPkW=u*KX_o&SuCT z*0&t@>&P#^pZ?6qFK_wd*=K9cN1zw<{9n@#JTR#ESo}BPo$Zy3+&4DrceZ}Y1-sXXS;|=wbw(xeow0Ym{d}-lr-gi5H+I;U8-p;2s@4KB(ExgV9ZsTUyeD4zW{&$Q2E+b#NOIokZ_x?)*-`cA9Cm+-D_P5J&UMKz~82{*< z3dg%HZl1|4B{^pk_@Ci^%VF@@FTt^{5$Z? z0PIVQ|3!bfsQFI5hrit4^86F+Cn5@u_*arw()wBcg7=rvegx(8kB)`|a;_SoJp%Kw zo*&}=Nu)*gli}ADuME$hZvOeNu>RT2`-N?$U-@WBeovWqJHNy&{@V=xM^_DfaR2&4 zp1&)8h}$iGiK%c|`eX8gI%$?8zk1x{2bF#RU#`!d|HS7c+={dtGyN>MHF^IpjK78Y zqv<}0C(eE{k7p#R{X=|bp^xpi?Pu2X@8h~<@vmw#{R$hrZJtu_$LpkTF|6$)5486G zupPez(SIF=9y#+&r?kJkzsUTv?slb1JVifDHU0s806$^ME#D=341E|M9On;Xx!Xe5&fGnrs~tbdZwUMML=W@b zBmcP>$5fBBP27h`8osIS(Ef>hAU=5NJNmt6 z_^2ai@l*We9eLZwO+U`;RCu|chW?#1zh5!;62>}8je0-B#6R!S`rdg9dIxfQ!F(_J z5%3*dW$~vyZ+@RNPdok>&HK5omH_E+*6<18dH;C)iq;=xJG;}pC+<_|Ugmb{R9i2-eXUNwe{iS_-0q4K0pZLY_{1KiP5J3DU z@H6nOuy;y%XZl{L6Q1qK z{j#qhUwCJ`llYE#4EVk2AMIzYkto__d z{iMO>&BvEV_#NRViO=Iw zzuXUt4ru+COu2>sFQ}jM!$tG^CBi+0e&F3f{@}ZT|3k)y%08D`KrQCWNO$4Wi&n@=v&3_A;hZCysU%$nR7L%$NEQBCsrU%>3+xQlX?^I zHw-oVd%p~PApI+x(R!z=0j?wbXYd|smHgw=TPZal!i6`s>0zWgZ@Co>> z(GRUKjpyU^-%|Qa8@*ngSOWYY@*jgfPiXxEuy0HQKGf&-j!%@Oe&kDc>K+&WN2%Z5 z&&eWhaOg3AZ*_Oey8J@E+9o{UJ;=PQ&ilwKIzHh^J68UYZ(Hbf+R(2p0sl4NY3Y-l zSQL1hml62{oa?QAjGy*zVq#J1qo3wAv*`r`hmcv0yn^#gvoTj`r^3j~9~v>*OjG7h%=Q)a$7hrEX@pNK1+Ec`g= zO}vo*_rW*cY!3ro{GTm+cUijt!xAb?U|8Akrxz@km7wyq@dlD$e z`p)84EGqnXRq0!e>v&lGjPqE@t9vT0<1pds_iO7%legSGivBHxMrO=B$omBj)^FXQ zcW}?BuUIUjAC0~&`55hs{)2qt{7LxL=Be-O^w#LZ^V#aS(mgSa?|P9x6@D%lgY*JC=N-%I}>->1#})w5NlZ=s<0bA9Rjna`+jt~uio*MMv7*h$Nc^r z$7kByZ|p7yz*i$*M8+{5pr`h4vs0Kr|5`_V=O91V`Wt-{X1&Vx2Y{blS9T--_xOI_ z__(&u`JeZn6A68fM)bM9ej)$ga4wtssaPiq-Qpb<|F@<8_DCmp!qwRfq zK7{@afc_njhhX!lFEMgk#;4P)cX)q}{fn9PioL(sK5|>)J^bI2pJShtQ=eMB7=iz3 zXb1Hd=m+|G4tidnb3yHDp6DF=OH5tY|2)E^4Dy;aC(@bO0EM+SZpgDoRG9Vs`LE3S!TJ8XI&a1C`U&;;TAxGy8?z1(_)qJd6zY3_$Ngtw8O0+b{QnvESJMA0fG6Ik4Bxp&S9Jfx z_&MN@X(LZ_sP{U)LwpjU6Z${v;QZmV;kPj(2Z@T}Y5R}-zK^V{D@Oite{VO}&+nQ3 z=Z#!G!hi6;xIC%yIBEEAp5O1w41er*zxf2?f8Ov@48L=pepjBn|2rV#fAy;JW7P1+ zyYu(z+g|Uf+)@UUvOs<7;z0$aT}Z z?S3VwgO8S!WMd)IL6g0^!Zs`dYz`I*4qvvZXI*S%q*rz5jU2gDzn1^t}4d8Hrn z)Cykjy{F}}e*M|L;H;tVJMZZ4?#P^sBl*XV_&l&H2wkEh75P2xmQc@Ul;77y|2@EX zf&Xlrow?i!^bzBKV10}BXLGM4N zw`YM4^MSkYtEZleB;j9=cnG4uP@bAq{gBJ){F;pD{PnrFAoPi`Uij_fUbd_ccpsU5 z{^Fkw`%Ws-hj#a4ZLuQj%WM|-&s=L7^<^%pL?`gY`akXJ_^+=I zG5%=3Q|@&lzdhG&h{Mz4dV-IIPZwJx-}+2M>Be;&*P$XGq)$Zg&*iYrLL3srr+2Q& z_-gy8U+Np5Q94;V5MJnu`rb$U6E~vxhrDHWpRB;IRG7izwnpiX#A3~G2q|p@9jw{pIG{=;Xk3{ zZ{-8!0>8F?A1h(}(*0E~IQu%Y7`x<;VmQ;SS?Z>8-URnAdqJKHq;rO)e_n>~^pQQ5V807@}M9LraXIIkj zU5xk-VxL?#`)}1>74E;GFM4`fgs=0-NBM8^Jjx&U_l`3T9{S$}I$mp8j~_KwRJwIm z6whK(`IPukzLP!RH+(-K_tewYtvN_J3>){l~sK-{r~v4)e3X7h_6~2~01t zzl>==e{S?k58&AUYNzd=+81p57cXOcp7Qrjb}Ifw(hKrz={p8}Pr8h=|DbQ=N)`Y#ek0ox8?BZ`BV%zp);pSCV}q|CI{x75jzZ z&rZc>auUBkao<<%R6K-!u#Y8;UO*l#(Gvyc0|x(LeHNwun5bxbg)-?h@+7`oXGrU@>;Imre(w(HcgbQ&W4wOw8MZsAjAec_sQht*#ezF_vV6B7zot**n9zamEeBhMJ*bksLC zUIxC6(mu<(QYG-!s4rH)6Z)&OfbkOjrTm#n;rl(@mjk|M)W`Kf@bOW_AL}m{^FGHn zf_d^9zRQoT3jIxd7tl}Vr~E5Q*HlXNoA`H;zTZ{4!mcLkpwxFQ{TF0^SB=0P2!3>5 z((lf!#s63Pd-Wy#KG~x2lPj$pSJwcfxt4~ui`uU$tCdJ zn*SW=gSbxOPZz~^{5|}J)@Sk;lW&%@V8fFegVJ7j(z?AGFUvZs1R5^G|w{ z`rgd>2l0uf)6kp1FKqI7j+r<>n!oaf)6Tq7|4Q=H{RQ!2KB)z~LyTcR3OiL3wXM7vxJEK2Tgn6RiCxCpR5(f+VMf`h;XYo7WyXVxe zQS$xazP~AVqED{W3xAlrj=4&U#Oe7(N&GW>VdMv6z3vp&5AgpfA|D{@Q~V>&JnbUD zU-I4|uEPAh_805luW28&dHur78-;p`vweck4$$`l#9y%SW_l(|Lf>K*^u&F5_MiEm zqSaOLJL|;#c*bo=n0#z^J*97?yCoq00T=tkj{)&ZO#aRR$oD?v|HJwZ{s5h4Q4ioZ zGk#2i_4F->6fdNkT1b)YN>2tRPp8H?s*UZe`6Zk9h`n!$Oqy8PRZ%tPu z9>-<)KauW`H}#)m{FM*)Ih)ex7wWh98Ld2V|F!`BxN77ng}A{B;JffyJbx<3oV3rWznqNEpF(~pFRXWVNxnnA zO7Rah@fn;5^WK4PB)=WLyE19Z2fl%SUC2d#HR6>efB!E0M5e*-;1iJ_?0-_^f52Y> z-!t!?dkO8}UHwDh-*O7{1za=>{J}Tzswe&}BLDDD%Fda%NoVmp+Hteg1N5I7{gUySq(Ep~P+ z{$`w?7e2YsYWX^P5psq0>pSw|3EzQVO?)woFXESgpTu9QgM1IY z0C^C9yF2ucf&Z~D4!qHBhs0_A$;jSJ&F5@Go;Tu;{FLB(@lU&K_!xXB{$h}yFDZYP zuP*?uRlCMzoAMh)V-4eY6Ir>xL=|a!49@;mS**~NI!k6ZhKC>#%=S6=+*Yvy1 zV`$^~aDL$W#LiEy(Yu|7j}8L({#Iyuu~s_4hromAZwk3&%9SYS?M#yaf5O^ODV@dZz~e?GJA_kJE2-FZ8#W zmy&Dp@C z@lS=3H(>|j>xi8hw>H3!jc5J`CcgATGSvuUS9i!P-zcK!Z!**$(hkYG!KmPnznYH*j5??6TA^r9Zr{vi+%=#R}BQgB%UKT zcg{(_V$L6DekGsNr@jB=J*)2>-Ai(h&oy}v2#@g%rJ|mk2jl*M@XbV0 zpKPDwpEkc+`gTcw*5cEIqKQ5^|4QVvo`UJGh0mcr(v$Ub+{fiz;^&Y*VZX!gJ&2oR z=vK^YJqA9M=D2`=x(!}Ecq)Ghe#k#?&*!!-k92za`#Ah3Z+1(51*t!W-zg6TbAH`r z&U;P&Tf38e^{sor-{!kEJc%#c9{_%7yfdEA3Hcpyme%MuD)#AYx8mFB0Z+(D8}CaN z*#5G#-!ZQAvFGl26Nkve*KyJ#i*jz9G50guM=J6z@ndkm&c=_iadeU+Wn0euZ?L_+ zB52x+~pdTIl)x<7o?J(>1 z=ZgHE?hD{E?9cmjpT1tM_P%7F?%NZ6fn|QTUhWCJ3wZ9&qkv!EzaxJI;P{>c+&|dA zRChm*JeF66A zlQzCg3*)okeEsx_?4NTNH9k%IDGzi`_Y5;w+?VVGe#bhdnyeZ4oBx^X2bcB@%uDA?92mRLm-Rp3 z&ztx%?cC?$yGu4c4CJ#8^!E_&mh0>I81^yPN6eb@A>`MP_|n;#73ufvtnO>AJp}8c z&w2kkGU;jDVC>7dK5B1g{~3RJ0Q9-x#Lu7{{h4c5_$=)eXou&63y8m$ylCRfR90o* z6FrM3zDNBsza_Ze2i>u*{ykkMmQcSFmi5`Eu^sO8ZP_=aFIqc5pR5O|pQs$e}BKs(rf#?5++_xG5; zq;qmr;&tHOdw}b%;uz`!JodjlKS2JXIr+V_;>o^aa}0FG{+s)o(8aJ*JOg;t8;oLn zv5y76%6=UEL;TMhPG|L=?yoQE{`!hpugm!=_J>!w-v@oVjh(~pZ!mw-{^8jDLEfwz zubwE${`Ti`e+K)<*%etYcAvW^acI)hi);Da-~Z%>a~1n`?uWa^!M|u{Qxf9jrrT|AX~s>I}-! z{yg{LfQyf{nEq@0*!js-sn71)GiQ|lI6lkh-xb=^(C=uaB77COp!;c-GrmZ>*>}V% zp42~oLHE&&Ps{UHyRT1h{|!8HC(u9igX^mS^soKglC0ldo)3d>;#Ke=_>uD``=6W! zKS5p+=fIb+!$1$z(~iRR`vB^1=e`5->(WjExV7~=?}uT1l{EYLnBm(L_bVb_0}`Jh zZT97MU(z{tTjc2n=-&e3583^Aa?+E1J@l;Xk0n0rhtMCh7!UA$2KSfw>^!4<&h;hZ z&qQaTAMyK@*_y~fwz8`B1@w>kmy&Z@?(@pB&(0e=)!iEC3;D47ZGRN~$36n`A^U$B zfACMP3cdq(~Ryc_)% zOk%&kfchav^^^~hU+@{>$v>9UN6mGd<9p@j#1!;FUx zy+}PyJg!XOdjr3K{--YJe%$gI^&jz&`-g*JCr$Z8eViv)59Cz#`{ZxJ3%}v}vWd9v8^MvVN$j%p?XE5%Ni@4!0o_{W*|5h(Xs^ELHZ|4IG zZ}}}=ofEl0{ARIJaeS81|8B}B^xDSxf%|jD50BZnX6NRFKN3dH$X^SH|J4TmqP$gM zcVe8Swrrp1zdM2bun(brqc^K2u2J6b*}nul_y1lN{RdxJIm%~O1zzz#9*P_J3D1^A zkI&B5=Tbpk+I05I?EqFc>-(-6L z^*Z5@^&{Vo@`vJ^Y;9h0S{omVZxX7R^8Y0H$C|dTLVsoY*WzSsh;Opl#LEbpxE(e= z!WWD`f%T((w@({~;nz*e;{UtV#5dWxwGU_x_HSc98l6{}-(K>&8-Mq0!1E*E*<$jz z<9^vU1Bj2Zne>2tBe)@s2K+ywjBm0fSeE_eCKE>^uvz1<{8Qqa@c!U7#+PCJ#{b>6 z$MZL~-x5@M1%6Ze0d3!J+OJ=0ANl10Z|Sn}Dfbh9xE|lc;sO7E8Bf_iKz{^H|64Z1 z@%X34&)6G$G%k(B<2S`Ov3PKN>M*{3@F?4Y@#QCuNQSa#Z>@j#eZt(c0#h+P^Z({L4yd%NmAB>NYUni*Y zq~o*2S&MIC@MyI0O?==F(C3MNYyM6wq z_$IxO!k2Ar>*h4pd^ zXP>|3{Bktx)HyY0A@I@5J`?|>!RSeuA924j;DbJ|pX}Xc^s0k*>MQC8oe z%J@I>$Tw8*97O&?lw*Eua-1y=;)xW^xqsoI^M96infJVTcABSMpXSWF^^>;#*=Bv= zSifrP_q}5S{7&<3{j#keH|HOoe_FqA>jw@xzV~qalg+QG-t?JyW0Uc}8{+vt=C^t? zzxd7X&gP2APpajcHZMA~SNS*Neg^D}jVK45G=DVCUvS^Df%Fd;xGg5$iuMoZkBy6t z>s!YCQly@t3Wu%k8LN&B175BP0Hz1QpA-Yr`+K1-nf zwx97;EPaC}?niKo=+cynji)v-pSnHPOd@ z6Tju@Ew|U}2mA|-0pR5fKWW+x;(e|E(BIph3kY3y;>q8)W4>4X60&}MYD)n8?T$2U zDar3IG}fGt5T60<3w^gV5TE$SbIf8LY09?xuV zscVfEhM#`AT-S&TN&uF850_)Go$O`u!20Q!`j)?{J0SH^dp|Jm;Ky>4%xqjL9>-0xYBZ}GU( zC;hSdtw-J^zLD^c)pr~9oTZ=DcN_Jb#n0+HtLL_SPxXM6FRS-(FYbr_y4LcOoqJ_>L3VyUEYHLQNL?H@Rx`oQYRZHV(?#!u*H_2zb?XPaJFt6$>JfBV}j z_}=k{LJHTsU(2QcKa4rAZrAtn_f{qE^KPR@rGG5nvg)VZd)JF|4GaIn^2nZt%hA7< zU8-*%+qw$=_>+-Vyk8Uk91!~NHsyPEE#h}%d*S<*bnoZ1PXT`KV+y|uzlXNCy}Mg# zbvL)tzZv=)>&M4X9@^&i?%EZQbC}0=m!YRZ#{b!e@)lYDMt7lqJU`l1lBcdeVovL~ zOXAP8=KRV9q0drPqFnfc<)K+ckKrM zJAqGVKMT1AuMUHE+~D_zb%?Kt_R|)BgV*b>XWM_B_V0+nZ^$jl@4MVb+fNz4s>kBm zzGwWY?zAk6{jSyYD{JvI{bBoz?{UcBd*tOgj?ai|@PvJHmg9Tyf%4C*2G7GUU_FZO ze(qs>algmLEh!tmiX2vc5dOsdo%rDviLX#TJl8<}2{(BhZ=N3se;wub@Si`jU+axD zYdPYdfPaoV2ajldd^(vl_(=P|s`gRvkM`U8T_iKO58Xunl?CC?=+PG6&5q>}i(foh zmi*1O{HVb@bAw?)whzW&QLI8kPC8TvqtKaS!zj_Vc^wQ^ zm*x9|WxykkXIoo~)Fb)@_Wixa-!=n-2jLFJJ!wzm5ABOzGuqt?x)45N{FGrI7y6eO zKLztbocx3Kkw01P_uBD0XyT^uJH{8=yBGJc;qM{sqyBJPAM%Or$Nks;hrM?Vjyp;2 z#QtbB(BNZ;CJCS$K)=yIKkx>J0Ozqw3_-F%5(J3{(P(tzL2_m=v-4QZ6DxfYoh1Pw}sI@d|Q& z0Q*Wu3;Oerf4If?Gnv%-|G>le1AoZ)a~ks7kX!NPBJi_q68~MvkC@z~(>tP9VlnVB z=dZ#UiGK{Yfxh4wU$IT=ck<-wZ|zWiXfrvQ4{Nz^8h>?|JUO~?jxX`|uKlT2<(Ke0 z)~DSozGAD6Kh7^?{F3vaH(2kR??OAD@ed4zut{^%v&?U2l75V^1Itf-}ouEyWu$ahkPXOmxKSof2r0D;aj|aE$!-R z-$r?vzeWBe-VEjWK6XPB|m?&w$kDFTk|YHbDGtl#3hrTx%PUFKJxD~9A<++w@7N9IrTUpA}!*xs)6 zfew+6zaf9$3m`ta3cGiq(u#iLJGpo-8tth3wTv(HLozjjde8XUK_|y2%=n$-;vcW_ zZSiU@jyv9}@*?r+s6UxheheF5BEI;Md?G&ueZ~0fB=kfB2YAX2Af32o}o7=UW zxvmZKe+U19Kf4f@&~R|Y*A&LMU>=^Df;=?VGkyv7FY>3JZ^KXhSJ`jz4EPlB;gHXt zkiRm`T3<8TLHH!?p&}oMpM`xVHK+WZw0GD$+qFFGtMY#JT#Dl{eyTmSjWm0zGlTv> zoQ92$H#evJm&xq+pYXBxf1&+OK8q>kOOzM+6aE1G@k_hF8>}p(lut`p5HY*ll(UizU2Gf#Z*SxG1p%8>HY!w1@u+$ z&3(h7{XRdRk@uI~_!k$z*Wk+%^0|+mYu~O5cia9G`}YOH_2tU#lHZRwW#w~$$NI5- zVWaNOGj}VcdF3nK6KC=-{aY$2KQ0tCziVpMjsHL4`^Bkw@LSIrAL0(=-S{bx6O(`sYW(OZ__vhN`e*XWACvil^t0f{_-0Dr7wGkQyyM*f{G}P?7rEaW{XfHX z8Te{)Qh!H($UE|spHcK*Vlsf`4&L|9EB`Fyl}{Z1Bog3@+)rPe$t#~YKH&Qy9N$u2 z`C%r3am4(c$SWTpU&ep(%MZb?!AfaH$321ZW_>t6mi*$R@=FCN`2_eM#b=`ZWy{a! zb=-@S+jX~DY(2RRbI``%Cza;&s62_zV zj4yvS@K5P~GE*6;OJwd!{5a)*lK0_*A4(-1hsm=ADd+mv@k6J@ZOVA}P=4CQ?*Kni-^lt7{R_Cd+lL0q^O%*F7e)^)=2hqPB;Cu2P%YFUmPhafFC?CoB1o_A4 z=DL;l=5%C~pQL>pf9Ch($}GomZISem|C+4#1Wx%bVezSs|60l$b%{gN4~E~?d$N8- z|0EU);KvnT=Ry(Vg7N9l@%jsl&nU*fqcb4mpTIhea@%nh??r)6L_WTQ{?901cG~)_ z&E7GT^%dH;VDw~4;D4-7N^LqmPXCtiO?{a_{gmH%`*!VLnZtT(Jvh+`Iyo;$dGNX9 z6Mx%AT^RT45-{olF=eL(xrY(V%oEd3|mP z&1N23KVW@6JFEJ<+tyK?30>cb{~O>t&j$V(^|{+uEG|Od_0xWGSLScj?|t0&Q{Unu z>BBuKY5jKVzh>lr{oqeubo+$m73>cLens>z%YXgIPhSkpWY7-WkFu=ob?pP+$a*~l zJ^S&YpZc0-!0$3Ydt#qR&*=Oz6V?84>rCN~d(gi(P~U)mnD_dAd=T()taFZWeRW6Z zk4LpX@gSe{Blc&Ka{Y((O#^=SJ|6g~@A`FZ-!;Suvz=~zmyT+G15V17q8aID$p?HI z@HM#qsfhfq=W!2IRNIO9UFyFU)%MI-I}ryg>pN*b_%oityqbsogZo?TBTCe_X#Z!_ z|D0c&wS1K8$NW!mR;2#KM{WJtUcV)ALI$q?$t zdThq_*>1fwNcz#gt@Rs%KM~UPU+9tj>5FmD@Aki4%_ErK&-ik-AH@1e+TT2*^(MFv z#yUgx!B}T}R!zwIB9HrRK0bu_bjF__#6F};>tTEl>v#9rxVZ9sUh`%AQNOz%pnJOD zecTNDQx{U~r(OQ^G}aaQdf+XBKE#1z|G@ihTz&}a{f`gT`{HT*j`;Fs+<)=$!FnIp zKinU6PjAWk2X-$>VLuRgaq;6_wx32E_TgH{Q7E({_J#+9pNRUq&KBhNX5KH2b#$zL zSNaqBN!mAS=L(^-f&Yx~&1Vae@_u0-+TZ>R{C@F!YcOz?>D=i6_~TK0`21=0N3Wa? ztn>G_(}BB>=SNVU>-sRtF>OIPrsRJ=&exkzp5L*8;`O|M#EbtJ{^MN#@!Rum|8>)B zLF{(TO;wYhb)i3fvVd>SPn3)7spiq5d`tiR&m15AK7K0n>{_jN@NQ)p`hb4ouK&u- zn!jXz=*`1BewI7R{`(a6kFxrummuH7gZD}ep8XereOZ6cnSXkutp4g#^iPNX@pQT> z<-5&KeKNhR@D@MbvRoCv+`RdzrPP(ejQOjFXVuSq-n}oX{_9@Twe1@3pYz>R z^aI+J%HbP+rUH-sSJC{>!xyX4FLTZ6$9+Eo|Khvxnx<*!hky37nMxY@fDd)!8}RS2 z{a2&jqWPs?=eiB;Uoe04`&Ih?p7xq1cLY9BR{!@9{OQ&~&jaJ%74ui0oh<;~i-fPM zpSkn@jLd8bJod#BXC9s36!@cJ-(C(jmDMjlFdLA#@Ybna@n@ue%txQXKfAaqe&4MX z=%HVOf8gSl_%v3%y=}Q5{oKB!>5o9)I{e$3Rvt?E$Ti5*mRj_)&6v{NNw(OB3U_>%yQPetY1zW`6&O>kG)gye9{|iJ8@!b&OMT z9x1+m5cr7x$-!p6*N5*^F(ZD8&6PDN2l@KB-2b?^Cga(%ye;kTTGI3feBTcH*X9NI zRRV8w9`vJqp_LKwpTu#2#J6Ky#h*QLttxyL$^#$DaeuQ8|IV%)euw{Z%N+aXHT2Jp z_7DB*kst2HH}V5G*IS2wVq|hd@}Yk|r+pyG{>He0FU0@5wWN4tenR|iWM)^&N9T8C zoc*n9&|`>ag#DfV$>5J`?624|#tDAjty7y)Ui{CXKiZ0$#vc!r4;CNRaGcS<5g8t%9iB+0PU{bz7+_?Q`)2pM~yF{{-8wfnNB1H{}X7>qy(DL&7iA zZ{DAr_Tt?bZ}e}|oWl3C?bPsnI&B~3U-UcS>T!PRp?{ht@eTT#$e-Vii2h;wcz+?w zQNI{}2>nen7=PeT6jzo1rjX)$mi&YM1%Li7{pwp5F|Op#ijFtq!^uA>(?4CNcbXU0 zgnzI<0)H$ALn~`C?v6jg)Hl!%gYrICJm~nLi+Ts+9Hu@&KR(F##lL=^FQ`|LpN2e> zem#GH{;=^5Q;z`7lk;EoU-eByG=2kqzr9VM3;l-i7XNYKf65p22gi+i1LZ_N;CqPr z1MLG}eUt5fT2F9%KKeHHC#El;AB2CPA0(CdTEquLOn)RyPdI+~tP%PV{_Sy&KgWyX zFM1+?H4^WCK>yxb4#ua8GHxB+#V7cH`pXaf88*H;j`3eVuwLqe9`HizCF+ND=m+Qn z@qZV-(D4`lb=q&%F}@s^b&N;T%&OpTo?jJte$e>aQokGD4jW%Le$a37eq;pWMtI6O z{p|P0kNC0vi*VeeUsr{%TEJ)27t%iHKR0e77bw?MS@Thjus;7D<)e9V&Byr(<1T*t zZoIg@T8I8=wQ*|#-;r<0Z^TdiL;vh1)4MIy`@oCwRR43nPY3#zP41UWj%A#s{+C6+ zab95kEvC2Jc>m{I-$B0HudDyNni=q%q@zA@&dSODqq% zFy70Qd*pXh-jRM*SP}iuY;y0$IWh@;KtB1;|DDrbcOKt}e>m0*KEn9-htaRMCZ}cnd_EN5C4()-S<@qV+ulACDPfcO`Q7&@by`P%+x%ZuAZ@!4%e;4;JkiQUD zG0+Zr!<4UkBL7p=2YBCek@^AUrWV%Z8~m|L|ANI8eE;6hX5#q}=CN;8n&-Bq{-d&g zU-sJaJMw#^q`&*P&O|-;8{t2W@g0n8)~usG=Xc(0`*6D-2ulK8@40ne=)^95qkoaa z2Zv+LRoNdmS=xe>`)%ZNe-I4gTkIl|_LtjUS_6HAm-un7{mc4IJiNz0`X&8F{J6k3 zHLuo$4D-r&QX_-4JNlkkEs zsPXBj-*e|SO-&iG-$ZbK0PT;C{xs+&9NXdH9@;kC7jRqZr~Z=t5AyrV9WN;T@%{QS zzhHd1FX8!*vs)xuwVrQ)zX2a^YSOsx_Ef=l2ludcb~yU+{sHty6!=)b;6*!AkLRQQ zG``usn3U@;x7vN#l%KnRcXqEXlp~&uq_j`#`MA`FdjmQ;3evBs_)bm2;^SF=?0IX~ zbDBm^X-fQTf5_spon0y2x$3)vI82T&>rYyLL@agVVdIbc4V12Svjf9kF5|#_)}OI< z2_B4FF8-*0SpTGb=aI4>QWkG6^Z_3J8#=BSH}YLq@-h0*|J{INzf4KmUnV{;^XUG8 zOnlRK8}a37i>r?tKTH1tJ|8js_B-wo7doVUY(Ktfo#}ofs^{?54mj(g4|{+jDE@6Tem ze|JOdZ85WBx_E8cFGrCdH+x*f?04}P_91dVujWVhwgkTI!lu~SB9TY=#NWP`k+|*f z1?b21V5PlH^Bw-yy@KS!PAvJ(K1%vne`s%2@>3Tu4+1{a@+AI_y$#7vU#LocN6O*H z`8L-7oqI*i=e`qk&)*L~zj-xSKYh;m&-ooS)fZ%6@BBH0Kaigo3ZM+m&4&V`Or4#~ z)QuEciv-TwQ#JU@YcX|jF0+sC(zYI)gTg1_>%pMSIu z$N3%Bdv1TfK))gETT8ZYUvANF?*B$Hf6myx9dsp7@KktN_xqUt7$1)Fw*r2~G0C#- z>zghXgx)FgAKF(;S7kpRm=8!?GWPpczr?3|H?00S+xNHRtFjOK3E+KLKf)d$TI3Yw5}w9lxVoVp;77_i_G$ z`h#h%w@|+GhVHZ5upVSP2RVOp{ciEdQLex7dw2=uvHqJPf8L89ZAX7|-O|*$3I4+n79zlopweU$IQK9ck`bG?o9LEvS~FU!HmwN+X7HgVs^a@-GK zp9J~B`i=BeW&D~KGqS#GDkF94Z?1oeJ5oNueYfoI)@*$ac+}r=eNFMtLXV*RIA@hq z*6--Q$lQkXSAzR;z=xNx9t8eltRMW{Z2cFxwyWdAbvVj7_}0Zu{k@D7zqiqT0Dc|B z_;UZ;mdEet|3Fhw_W$4)u_vH^X@Bw}m4~wL1|P`&KYIP4;Q4^{<9;OYgY54kOIuQp zzZ3Yd|99)tH1_KpzjoWF$BjRZV*I^(p9G)gkEU6)Q`XOkpEsa?S{L*?48Gw0+VR5! z#1Ge?|LdDjFZSgsryk(`Rrmw_Bm4n=qu!8xy77nD&+-1d;|IqF$r~1b&iyyW zugmm-li#rM1NX;VA3WlVZ5d}L&&ogCUx6P`zvGKA^@Z}!7wf+U{xP|BcA-||2fd$* z%Fh1yK+5i8A-A~txxL4W* z5|n%36@7tn@7CP;A>tn~{*ZUjn>Ib+_yh7K{gX7k(KL(pqkYi@O~rlz{)<2!$roYD zA@GAAW&iyE`@10Q567uDxNnaZ5W)odOM~M4c%84rJtK9Z;&s}kKDh9DR&${ z8}~5v0KR4aj`4q5Z*)gbY=ii{?+cvX{HJKhje4xBv;N&}OdLc~xg!;uk0{e9f`knf&75itV zS;#Z#_zCylXn&0Ij`A_;4fM0yPm6sD^tY6%qEE6jRpGN%vu}!h4E)!8L+t^@Vo}P4 zZs>kq_Rr97S=e6~f8IhlLI1QukF2A5nz*O=b~{X~6M zytb7c>?93H`rF zd&%!%-o3si<-)UTQjYMfKeV9Vv&Nqb#-C!JLVW(>(w4%nApL#J|F$2$&-n@bbF67Y z> z&N~rr_rF8G_`x3mi=sqU%z>;1Sw3h}l*{(pFUG}lj#p1MXI*LtHv_80IU z2-PV)ew=G^-0JI<4)}M)7(b79=VjcydZnYcUg`Mjz&|X0-O*9sST+8__`<%k-!Jt_ zhiCoa_-DUgEI#_U^@ro1zNh-djmIyFUw3qnKWZ>O^^F?;`7|AlKO8+z)8Y8zn9On$w;Jw9Kie|*6DrPju0;O{*?ce%cAaB?N>_alz?@92M@ zwO7Xfo6ui~ul$e2f0Mr$zuxGP{k`uF`ZaFcl^1xduiW?3=^o?9*9lMjkK)E%xj+9q z!^~zg&xWbvggT{O;njkJ|iD zXYtvxKgIm+?iX?K+3tQ3tpERt>xa5Jjk_MTdBnw0KWMxo`@7ns+cIx_S>h_Qr|N5~ z9FK_5kM)z!;-kG<)i2K<-mP`<+oK=h{(`zyiCYGo$i2U|DBm*wuzzaQ|_YvUtWW~ep z#B+Kt;P(QBisXa7Q-^nIJ;bvQ`w_?6K2Sb+GEft)edIs)Y(VkVBPD!$!(;dXe-PjN z{m3Ex-H(*t4*!eNF3;a~AmD|c87QAVy+%9Hgv<9%>9{-_SoOkf1HixO-9|Z=f8 z=F9p<#ovJRas0tr{rvz^{_d~KcwS86zrPp-|M>9D-%p*c*0LW);IG0|_#gB?hkV9Y z`%XQS`NbR2RP2}N-xnC454)A$SM69w9QZMBO;YA_|8^Ym%6aLif9t!96Zap})Y(6e zABS8c?*G`S5Y}PgO4CR|;;hj=;ScClkNq92-SEN<1LdQ~i>NLK|19N?r{&(syUTxC z?w!25{HNvK$-B#cTJD{^yZoo+-pRZ0FZ##H{jp={cksE3lScfe-0y^Q3Hd#8G{E@t zattZQ!}!~~bb4FHWBjnn*~P#$!Z*{}FLj+FVa zOZpA^DL-Bm-~4_2bk)yspFXT|EaQ*-i>Ei`_smE}&TW$5gWEX2Aw2YJL)ykSc42ZAz@5HpiXOTV*-*IufhUYm~PY0x)Gxq@x`?1mQMTfcm#{1ictD@gdOjmuk zaUZOsKXFp?$F3^=E~JmqAMA@}WZd9)DC3s3ZwG(n^fu`PaSE~La8Pw06D;nBarLDWZl zy%DW{2&t=o9sS=;x`3Z_@to_WE1)N#?FW5cfA*oATSX1N>jmidb-iE1Lw+KXspY%e zgWaLp1l}phwJV*j{n@1QLpR~!2iJ8~t8S&ge!;y3g9T z8^6iJI^RUQH-*k@c1QTb&c7PEGKw#sQ92^IOfBzuCj4F0e-8K%Bv~Fp%6=k#(&6}T z;;_zJIo>}BKk)Nkexm&ilc#q@KDyhq-T9c-ME&7&9S;At@AmP5 z@--`G{TH6aH}UlxQTk`_{W$+!#y9&XFTeMfFHG##+{Qf?gdau!b@Xcev9#8EHm&tJ z`mc2t>Tc%;%5yzR-xSiv>7ThgQb)e&wfy{vC+KhJjwyb;<1GC&*Av>0&*S(JAL%U; z9``iQ%J-x5&z>>Gm$!Zz8&f=_e;x3>FKPbeMs0s*P*XR4Y2%ygXL&C)`l(0hG5!g^ z^pfJ6zpU+Bu+;Hy8Q*Mg2`TBUNV+e-;a=B&8O5{Qsdxxa`d08w_?!0o65t^ePX4|5 z3rc@Ft#oBBC?4zo@P%TiE|I@mSp+=mzai;<{hr_*%#|-+-l_}t4wR>sHtG_6Jl_@l z;>~sj>TmZClso4Yf64gSjeps`ivtCTlV7%PgKt=|?}Fu5a9;)HBgQAn`h3a07wq2e z^EY?u5`(NiCF{HSfsH!$dwF0BX`;MHJl$D=2mdt;;QLlbVz_wjp_E%W7r;0rAU}Hk z-3R=^zQpi3q)=wVH;o>vzoB$i=_&M&$Ub?=z8(FQct*~b=NGGWjC;9xc0}+y`ukD- zR!?I1Wy5ir5pwEjB8r~CH58?m?pX-xWVZmlkX`@{!PF4&Ja zBa35j^)K1^@XN^e2D8Iaqr=sI!@eV9TK_pq9ejC6>AQAK=_;Mj{&xKz9owm4|KAwP z2z@62A3VbNDjmO7;!9)!{bN@DknBIkPdR>Y?LP;(x`XjP`;yXk;eyiR z=)Zhf>55qX^_ND##|g*(4P!&w)UW>1%Nuof`tMd&UgG%guOAwwrWD`otm0ukywAtg z|0=#c+^?}5)B0a|tp7ZWpBvYg&MTgqR?grXB4e8z&&qlHehcHX5GzVQIr^9Jz7F~M zi7x>C*L(E4V{c3F4h#fD zJ^=r7_P@KIz6`ur%naY?b@0l6#p14rUE#SY&^9;eS@ZIwvk?X!b#XFDsNr$6v z3HXS&_Z;d6ojuFjvL1BxFXR0&;>$yiqTLhy_D;EjFO{kShx27A=lI*fyZQfIm*)5O zDjo+vKNyhq;@$`0pT$=S^$F-12fvK=u>TicU#m|%d$)r7{A+IYKB9lHr1**_6wgv+ zSLku$yV9ldaJ`H3SE77_bU0QseSDu18NP~RlVCE)RzvcpTAiqF+wwz#%*LGj?d zgD1xCyw#sAjmSFb1mLMB<$eP2*E!4!9M?{3AMU4c{3Y`bOXU`yYew zFC69hk5?MnhI;Y*nRD8%^VS~t=lmS^1L6Gzg)d|^f2gGEL&R^%{njV!U4*lxU6IRk zdz-S3gnvPd_K%*@L-`%^hS1Tww`2K#EboW(k-yf1mH8pf@81i_I}M2c{0ZX^vZXc2 zFZO8ux#vb?pY-oM$Or7heSP|S&irihrEMwC^UG1lcely&KxtEcckeaaZ(NuD=|7i| z{Y|&|1r3^1pQbreWv#(9rQ3i%kM*WFVgw*`YrxL_hR0Oy%CZ7 zp0QP_f5_VTAn;GWxC{Dbto}KqzXQJM-P@4$F5b8LiTBa6mmS-Ybs^+m>KQ~iS-)oR zK0V+I^4(uvAf8;V+<$Jh?l$&WY`=&4b9*vwmD#a^)bHNg_)8oA!G%!mosPSeYkMK7 zH`1SBxe0k+1M#&I*MW9NZJv)u0z$`6RKF&YmqNbvdT;m=(p$mAaB^I~&3>8ayr|#f z_+9d^>i2`jtlV!Gy`tY8^sfb;izt8Vn8`old#<9qz`@Ug`BzZ>7UpM>Z}3-iLVuqI z{H>!2(2)TTo_Hou{&D#6am|lRYkKvng9m>BK8pKwdGFnoD-MsQ z;@=MY;>3i0W8W(Ex_hWVUyShcmjd{`^4DiCYFZrERN(PGlk@NDW52T8^O--diQUKj zCo59FyFbpedwfb)wVbpc^}F|52PXA*7iS6kzrdfL(BIR?0zt-Mb~R}V{?dH2=XOT} zzrp-iH1H`?hd&VwG%;>06%EWXb@73ckM<1#j=%Q+j%gO<8AtXYkoJ^Q z@mL1%i2FRe1OJ|IB@zcd^$+_V@BhDS;}S#sVGVxAJGQ^!6aNE^-^yMN{40JZcn=fu zJK_Z?cfT8Vfa6TjWQs*>39j{9L)bH?L30}CM<;N46#x7R(-_N)T z{WO_S{Fgd3KSe)7`1=e0e}wb#__pAi=+JVB@uHl=yYZWxRJiDQ^^c2vd0X_W?1r+hu=i>Fz(kpa({T{oXcnXB3|s7U9o%SCQuG|Qt@r+ zFI^uldsmW*H}cZq?~bilqtdZtAGMLpaP5~ROi4tA(@oa=W@(f@Bk_-|RA zQ$6))AL>ufZpwQn)4INFNL&syvwUs_zoY%rS%*I%^Zz{OHMDnbPJbV~x-0klzf*&J z*w6cj7xkyFt;zlW+1ZS|lfw4%{nXs_n&4fi$GD*W`FX{2)aI8me<%FhmcAb_19-e2 z@aycqkK#2M^V{hi9>`r;aY_b+lB<|{YzBjU&Lpn&xk;Ul|s>qpj0FJu1l{s44h{__4u z#&2r-lT(4;CO;>N0cq#Tf~M>ruD@hG0(*KmO1(K>iC)>QAs*@nzJIiMb+?B8DTzd= ze!YLa6gVG%J@?IF#s~9!W4TZjd5_FyMDHvjUWMgpzv2Am^j7SgmUDWJ=YP~+t%(h( zH(ehR{)}9ED1KrbpS!RRFHS#{`coG$j*$Ch%KyJ5e#%eOi$UHgAMuOZQh(1>;CI_@UgP9DIte)7 zNfs3k_Xps=-~ja!+TBsg2>#raO=*w#7ef9AuWkxI_d>7H4-)eKDfxxti~jRc^v43f z4b1F{o=PVJzV)Mw|EWj+{ifGNc?JItn%oW5Z%aR*f8>3c{Oqp0%hAizN&M5ke9b=;{E*KkzN3xzwNo75 z*Z1`T_yltJhUpREANWtbnqL)px-s`qd_ODYv|!-$%h8c>mRd z+%~iPSEx6>i8yM+C#?UwpUuGk_lvKi{*|(}=VlRl9PL`gdYb8A5c0?Ig?tk}LOJe( zA0zaK2YBO;;1cx)VtAu5&7IkMszB@PC2w417+nT&6xjJ-|=>7QRGz z20!NNtHR$2$RYK#^zX;8k3*h`H%&Pv9@8h7U&VjxH~rpp){@!8VCLayG37mK0-OkQ^c#V^D^LH11r#&GSLEK^^-eGNb^hy1}jL{?T ze4kg!^ZZHAUsI@$@KP`03nTI^`LvID`J~dBgF(UTCL>l}F`v=;``onUr3%a|kUvo$w>wgdNYu0~CXR=fASpNqF z9`C}s_fg}Gu78F9@xJheFN|}`$PxWL8r;v9`m^0tALAMOGK!buul%9wrx@i4^pY+gotSVruZ z9eX2Uw{+(Ze~9)2zQNh=lY1e_kBmXTz@GVI-TyT7n!Pf*w=4OvG3asR{~`4w?vIa} z-7&tmE%`m%&%@pZ`{OY0AL|-}enWY8&XL)Jo|5wk*hj&i>9K<3yLWO2dL4hfD)z-b z`|d|7@@Mgem>*$Z#QJxvD)6wot9=pW#J`{JYbbCUzw@5uz?i9h{5?a$Qjk;BE`|9ay7 zaNPFUXYL1}KP5g=?gw!8vs7H|SI$mG{$hMpG_Lk5$hp|Ho{o=%T}bR&xCdJ7SWnrv z{As|6T?=?BlNzrWBu6TADunx zX**U6`QuNpzc72&g{SOTQ(V8Jf6^D!o^{FWR@n<`&-!)1zl8bU*|p9&JJtoYV{!e3 z`#%~AX3x56cBe73W6Ao9`_l_*&%*g1x;=X;W%jPmGs6E~)Yg?r@FDl_g@V}^3VQxA zeo4PCT~he-=k=TO_f^dQ=oi6z*4ekX4#hr4#t-eg= zIYazjByqO5zkh@L!v3rEIlESRylDG3jo<4u`&h@=w$Ok1s?m@BTj%=8>{`i-;B(ZQ zF#DCz2l;XKtu)t}SU2U)DIU2$2=vdK4~RX>*|#Rle#G@5$8XZcwd3-tz-K4bK85j- z_>SoU;IV(JOsbu0!0cQP0%yg36NBA~_AqD1N=~dw|A0RPf7gK8ztU%S#J+VUrQ@Le zce4y$KJ?$L^?&Xn%AtLOCWk*F{fKXkTu^(|l`GnB1A~w3TeOc| zwf3h=nk!;Sy7Yg%t+Y+LMCIoh8vUO(Xe8~2-Z&TjeEQQy$iLwTpt zz2mC-^SIZ?^*8Y4ZQr_(NBgjzevpy*2lpdw%X+vxJ0kQgT^o^ie5cWV#$T56Te6<+ zn%j|bOZi>-#{QV`t6qO0Ao!sd#C|n&J|OQw%laSriJ2Xgf2~p}YPvZ0P`>XMM85<} zk)o`Nsb^>hSUI~R_Al2zH@KhWyTTXLjuq)yQ+UjO!H=MSd#m!@1HB}6F5IWh^|IQJ zKk-TzLq6~K5r2&HBkvouLv6`EnfyWf&+@#|6OC+&9V{}b_AdGdtb_i*8MFuXsuKLR z)_)iAUuJK5!1s%hpTzt|y|i!ty1ZM%`pEx)uW@#((v^&l@QbF$exTZ@9!%7O55SLz&&#v^68EFPo8<4{pVZVtxnD`z5BXTY z{?+>*VBb266#KuW^V_nYen;9L^A;!7o>VU2chuiAsrIkWnUDLUO0y$EcgM96v7h0- zaP&9tH`DP?Q@(-U#cjqR$J}R1{jl$sp)c2wzXZL=eQ;_9`~rS>VEdaxl`R>s+~rM? zn{?6g3ml&c*ypO^~?zCqfT(EcReV^RFjU(o;Mi#t;P z0PXCkzmsyP@+taF3jhzb)j!57Pe$?w^C#O`i7Ul==tt3<~|HgOp3!hx({jU{_u>Jp%f^7`+$wy<&Rd zWs`%&d94TU6VZO=EzLeuyBPE^@!X&t9C-dE_~T>fAEyr>-_q~S&L#5u(I?O^`a9%P z>|CqV53nyk2>dqQhdt-5(7u3n-7IQKIcGhjkNmw1{j&ZC=$FdYzI}`Eluz2%asRaJ zua{OJM+57nW$F)%v&whOJ5b(`{x4JhAy>FBU+h?zKRLcN7fgPg{fqW1wLh``)8S?4 z58|s`8WB8B4i!Jn=S-f@ovVr-!2BxqEL%T#W#|L)O@#Ubcp7e01rPVPqxTSBZgMw9 zxdeT9=c{)8xAyf1?CbdcZNNi+c#u!g6TnCN>*&3Rm$vmtjO&j73j96k>{r;Ifj

    f5Bf)Z^ZcxIa2yyKY{#s;L9}S=U>pi2Kfda(U0H{ zoXgh=Ug`{zGAm79J*97Gn_;R*B5qp;Cx5Vc@$oD1a z1+ib5T`LJW()m42`&-Qfd4oKNoWl;5gnT%7^p8*M zQh<*X6+RZ*!9A9|AJD`79#Jo9_ADnq8JnkZz9IcPG_@sipM;zc?=$3KbqW$rC?T_fZ!e!>QJkEcSm+}AuF2fY7&^zjhpHF-b!GsXcQ_SimoKl*zf?nijW%gA@o;NC?kzMp>?$nVZ1&IT0eCqvZ{}GKV4Ig8R~ zK16n~;yjvaKj-@6=@j^XF7KNof)an#_HMSr z-U#d(6fE9(xFV`v2d4b-fp9@Kq%>c>Gkvf9{m;;FiSwY8#d*pBi_~^f=^#`8U@+XaMKfZ}a)~{$^oy9AU)a&mD z5J$>*WPwM15Wlm&Hf!JTaHxj!jI2-j-%k!&ysX1t+o6w`cuZI{XkXXk=xqVyxWKq{{K#VF4q58|GN0x1lx~(iP$=g z_JO#ehjJgpUB6Fqa(tvY4f8$ZSkkFW5$B4Cr%gONf^o$AELg|z zeHP(Q!SKYV#VK1AUs?K}27`6yVqx}UG{9k~-5az7>Ealh&C?0&wS4~3@; zZ%6E5E!)>=sh;nh4tL?3=N;XW_Lt)kZKv=D+mCOyciQj>yqteY{S8+Um%#JM*%Jjx zS>LVfqxgjg&Q)*oT=hAnKYpSBdU-xMD*cy6y~N+$x$3)vIKfC{)#P8!SHp-e6}t15 z_8`^%m-9)l7vH46PtyK!F12Cjt7?Dm$M1}<&Bh9H?`!Oo(&73)pWK%7)Re_JcUU~L zjbFI8f5(>y-K``?6t3rq{=@l{^58SkV{8`E~yQ`UiC2yjsqijQ(I8=X%r+F~bvyj`+M!xITb?8qR;x_?`8R zBK1PJe|GrE_DAEZxS#irDxE>Vtp_W8Nt};kyj=Y*J~DYy;bKRzKlO!Gzk)voQc8b( zZ&m2RJ9L7F@MwQ{a5Pk#!1?DHqwlPxM!z>^^r0W69cjjy;(X8GgPmwU>3RwENIR@P z<==St9N;Wba=!l&24%qpr^gr59yd2*SJC{AXU%#GD z=dJz=2`zWdQn62>f4hyYSnr6eW8*zak86Jq%CkMalJ=J`5xh&r0f4aJCDp7otNOxbf<;wn4duZsO9&c*b%sd=^;md*5VEat=xHw z<0JimZzzlzT?RLHA|&Vd7C+VSlKq}Kkpcex@|hC>JO9=C&z{wOXT4r9H+=4#qfhnU z;E53WzrQ?0JT1B5(d;((*z>#oo8a$>+;Ded%a=HMxAM{@#kWs?b{oY#fA7#k-<|N? zN@6s$FFzjI-#?M@-@*B@Yai}6ApRN$KNJCe%o`IHCzag8I?d#V?N5O(DL(@d(y9J2 z7C)=}4|uONJ3MH3&O{X-{WIDBW0@WF2h4<-U8IRJ>+!lIzD(c;h61&B&@RH?3L`!N z@WEtaSkHIhf4a9T@*Ek3{DBVVFChK%5zdz;M*MfWpdYMVE}oS6tbbr&2kpiC^Ak@z z18=Z7F`Tz?7_&Gxp&#`10ADba816GZN)LoYP96L}HYE2cxbe#Z{ucVj;Im!UuAZT7 zncvAT(9;^f3jYJ*CH^7dGhcbo?qi1it%dxN&ICk1T^cBe{{ry^j|+YopKQJ=c=JY| z>t`3AciDdb+wpVC-#wO3c=p5C3HC4NZ}11`J7f8iC&(YTpWNc)=$}vfe6|n#h;esu zbQ2SqTJkg6FZ5;1|AX}eThPvZ{#O2T{VH^J<%aS8w&QQYH{iW08UHJUN59UT$e4aV zBmDEI|8(5DyElY?erWH{_w;NE{21X|5hvQaCHZoHBk1qz!?=L{eyjs1S3_gF^8F3+ zhvaL&bA9CHa>G|I@A?zCC;Xc=9{A^=ciH0RPE0%$czIt}{96+Lgz#r*9|ry_7T-2A zJtFb^KgRhA{1ZJFFE@5|MB3fY^Jv01B0le9$j4Mh;^XA}AHNUIjA;B^C^by`Wp;E^ z@&}DSF1|P-@`Ujj_U^(zd9Nzv$1P4WKe{31*}iXo1bCyr_oB{E7cBi@^}MwI1im>x zbnmSSo}SUQefU4Rw;XoyhGQs4{uq#y_Y;6W(7sOM!+Pk%#gSUxJJGvWQ2Obg1NzgW zMZxFd{{|q>3Ft|YU)(?5X>ogr6B&^M=f{Kn%TE};>HKOEiGcJQ*6|WY2mchg-!p=5 z#={|gO5)sLPlkH6{U`lr%s*kw;>0{}OWu>0_x&J$mm!@mh=2PD&mRCk6bW2p{u%KT89%ij z-)8!0FcSD*nLqw0zU}IM{2J)%x45>H#kFNDp3TvZcsKF?aehCDUlTtd(@*}q#kC>6 zP5gh-7SHy;?Bj_uzsUaw>+e5_H_+c_o&G;#BjW$#;@QN$d5iudPsX)5KOp#jeNOqn zxI7WpHeuuOY#{Mh)PMVNZ4>GTl$}ujpLcjZarbnC^Z#*iZRgDo=qURa`@fzE^#{6O zen2js?S3frJ-$!6AJ;aaen5p7hX}Q_#;spF59pac#~& z=<|ZEFZca^E>z|G%K7^|sG|QMALA~rtx%Qot4kePznfp2zfW{b{eYamkBy(_{C-kA z--aK_CG#Va`)kpE9X!`#+|fBrd(0n*@axET{yz!x|8f34dVY%iEB$_e*TuD6wsl2L4~pAISOrz#l;3-K2j%!udMm zLU4ZO{Cu1rkXt`H{~){{C*$J$fJk2r`0uL4yUm(kQqkle{>@|HzuBmP0?Pt^Z?+W+P_uYe!LPYCCx&R<9R z2klGGVn2uSE{<(*DkJfQ(*N*Zcm7D7kNW|E9`xVOeRzM$#my~R{8gI%JX*ipA3rw6 z`n`yYb93=&)ZhMlhrB+-#c}+)&u@$WP}%%{$lndXpXa$H@O2iqv5tAIavgs5Y%ki! z_WK6SKj6CE|Le~4A2j-Lei`xl8LtBWq6*J1kwQO+ACT*xl~O?BO_nW=ZHVXj#2-os z{R=KG4*G@uJ2%b$$H_;;{Cg5JyW;1wG_NW6=ZDl^`~E=_>K_#C*^qJ%GP3@uf&LM{ zpqo6$7yqA!=Kmw@^Za<1oBl#eOCgDm35*3aK27u&&VM6Y>KA1GL&<&rAceol^L^lT zenE$pwgeyJE6BeK<`>}ngCdNN!#O$ofAl-c!RXbD&=osh6+N+dt{^GfPxu7i=i|A$ z>A}eCL%Fa1Z>k>FU!Uy9uPx9|2z~()2PfzE7$5L=>H@|UdO`eqe(#ZgkDTAa|5*G1 z=oi6rd(`9ngvg(~pWVf~Md)V$JQC*y{uKQP{V9G2sMq-!bx33)XzcZ59IuV zBJ?LfJr4pmWPKSmzXFk4;GrLo`VWDA_$P?J4ayHt4S;#Z}ZCu=2p7IX=o})H?&cCN?c1z@tdcXr6ZhmobZ!UfQ&R6Y+H) zq5oF+JNWTc=n2M^4nR&xkLVxp_bT5+gZ-9@GlbihJW8U=S%t*nO<>ma_FDGLVRsFL4P5%H%Y%2$bH=Wbc8;Pf0}X$ ze!mR4CEjtyp#k56#!>Na%hN9pa1qll)DOgW4E%K${ORJ}Iw^-}XN2{DUvNJQ)|c^M zj`E21^qGI(Wy&f1b+mt$J*QX3DTk;xJ_G&`{}-{3HYAD|FMK~e52OFkzn=tWDVM-E zPPqeo=f3|S;J=Oab;;l8@&^AndEaN2a*4RKuKWh%<6D(+#;LLWXdnG&do4cA z#mA-c1u4h=#rmNpF%uHG8qZ^&2>4`i+vpen9=z|3{sjFIzVCz7`SGCrU);j@=I1p( zTSPx0zhv?4%=dx+uHSelesK}l|2_EcL}|Z*c&*zT));B)<;tRTGc+ zx8nW|-0v@OZ4rxWbACYdKUjzS^PBf~M4xB-aX;57O?m(AUF64}({I@6#SWZ8%Kb9+ z1K`7*wAbRh%j~mBJ1?OAM}7m(ZCKu&BOne)&Ql0K3V7mEc#CsGd9|;mgudR`h>!QV z=Bys#VZ0OJNnZ!xS)O?KK3+`VC4NlkOO7c0Q7MP_&47pHjebw?@_a>p?=L6PMTyrU z{lJg-H>Ix|Dcgbf-Q*rm!h6Vf=N8~U*}q4JwLZe5eO?FPSf7h~%jDMN9W{dw5}xlK z_Sw5}Nhz=Nqki1KsCd)XPu)me|C7F~{oX0I>yiBaGTy6~ z^B7luKYr)=Qqtnaq9+~wXSIFp`WpExxSN&OwHR zKXm*_{|Wi-FAE;TN%hA9wY-06fBYj_U)0hVQrG_;=*#A;e+M(QcW_SBjeO-_9sdFO z?l0$&dWd7o+5Jp>zXb5SA41MkyYpKTSLfpR=syPgkC%^Xf4aD~nAxE}hyEMI{ZMg> zON)#`ufPr$=l&jcG|D&aN4;h*i|z%)e&_7-&i<6#Ta({YqZxrun0-$0!#?HW=DJ3q z-+O)6JNK$me|B_3;GO-;`oCci z<=LOa!#K9n^4(u1eT=_z@oYI4e`oes=zp=l=+vI+uv0o71cFyctE^h72etg@C ztS_F9Z;Oo;9_{ZiKjMBpx&JA0I)iyGdn$QG^QR~uAIEE)UCYI_jYhS+*(C(`w&x_AJRq{6+`%eY7i$k88c1 zXSRiYtp7i!en=J|7g*1^xV5Oo89V&Wp5@}wa$KhZANU{Z2dv-56rZz;P1D~U>ny_a z{T^rEx@2~(i)Nn`c=Vt1E6-lkxVFi2fCqlNzX|a_PsX)%Tw0a=(iHHogMMe%nxuZh zy$920ks{uW^>cmX>|IwaZq3EFS^I*gPqSaW$YryC^%g?4#KZL;-~SsN$2agzo88OB zvw{9ITp#VnwN0!2>+)so=O4rVwSMmtuTsCE@h=wFHcdO1?7x8@`&-#BqrFpZd@YX6 z_@iOw(yr`#dl~h(qNqmj&f5HEZZ>h?9J~s)x*eARAH})U!2Lq=A$bWNqaPpzhnWjIz z>|aLT1^$NoRs4?ce)a?C=;L}Fc>X2(_g|Wht+hX5x@ol1iQU4<2YPjz|qxp+= zAJ2nK;)|D%ADP~kb#o`zy;wibPmPEj3-N8VkJk*H1AVk>S$tb*W?Sq_Q#GO-+>MJFFh{n|d9x>B&8)BY4c zzb)}-gP{K|_^0Qh#;e6RKLc-KYDDOe{s;eLXGg?t)KQOq0sj=SUnV~4_s8v9De6Vw z*Yn(O+4}Kx!vggm@J1=uNIT~WGEQv&DC)1wDL+uoi8o%@5j<}F7eV|i?E*Q*xnTdE zno)Sr2m5Tirn0nC=i%O-#d?enc(c?Sko!F49N)iQEBYbq;_{q*Yk=|vJJz)EH|AflXSq1Q z(tdo~nSHz%N`|6S;Brt!0Zx zrF>xiuUW|lU|;%H<;EPw0sZIV)Oddk`q#T@dgT??hW(&81HJ%U+2Zq- zrqMnbKiXewyqnY?-@yBPv=iWW7vDzyApTdWH~xV3uZ_BO#NW&>RO{AZ2c!LK9r=}| zZHW&}Ku-`)(d3EnjIVgr>|qy7zMLKG0r?yDhwInTKHNJ7{?&QcTT#0}1bSl~>wp;LQ|uq3Y#-%Q>|YJn ztD>i(S27|8a=!Nw{9iaH{**j6x3(AKTCVKX3N281xG1llV695&Lfx@JW-`Udk!pBBnoV{>1tS<9i452j_9v z**c(4NC)m0ll#5WluO`E+Wk#gt}h@5(mxoVNFL?EUoOt=lF2jY*Sq5t#z%`?Ck46W zyqB&=dqE%j-;e&uLO#jwG1}q4Ka_9AyD=aA8^-iQ?^rA(_Y;x-*C9XdzNV`t-#M0p9uoe9|Kw%JH|=9li#tP{py5Bm_6NHtcaUcn z*LRijjr*cx|AhFqt~~S=+JBjH3_Mr!0mvERhZ`}!qJ7Efg6O-v-E)<>rr!@jw9kCv zr7d1~db%p*W@a`dW&20jKiBm4#9Tmr&&@r`2mj)Ji|rc5ttFEgpNIPw_v72D=s&D) zr>6sT>p9%plv$O2$!0fw>$HDae4C4B^CdIFzaA79=Ud?~tWVv&O?6qdYr&rNe>J|X z_iz3&zU``u!}-VfwttLo`JX+v|Nf-R zuih#9Znw0}Qn!9{@7uX|>i(|xGu```4&J?Y=ibe8@8h}orOxVe?{4Bf&~vpOjhFMLZ|5?A)}4bE?P zAJSJvYVTVjKVWffh)YAiB2N2-0`5@_(>^Kt`$N6}@Z){qx>bn_1H61o`v8C5-jxI% ztbe`8xw@*wkEI0O#k*bf73Fu|3tGQhKP@ciU&*bl*OYqkEQ9r&v zXZw*~Uq=59dc&1+(F^wtlov``k86Jb-^ABY(sFf%5BUN=U#sO0AZ58S@C9q-eI3bP zD6M&XSE{~N;Y+|1^gqh?y%3Q8o~u(l0i;I1z&F$>+&tfZ>=`H@@HXoB4y>cE2)wMX z{)MXGsePQjd+={Ue}%j8?iui~-a5WthjEntL;HOPRNex9j(@T;YweNt0p7I>_yz76 zYln+ZYVd2nue?D18$UHmI`Q6_qwl)h@0vX|1GroDiQxlQkIS!Z(011&WxIVov=8rL zO8ua(ZY6~MU9d78&~ibf`~3s@rUKeOR~j_E+OX=~u6a~{E%;L6FAr$`gwgBpPY3Xx zX%6px0T1J{i04-3(fHKW1*BgC7r{5=1Ei1FUw=-2Z$!%9FQcAd%_Dff)%VJ)Ti)%V zf%3(Rh!=e9{Z!vsg|9PDkG%eDinMndKeOz!@#?@*D8Y{ISFOdp%NqBVX(X zXU`VBF#2N>@2ZD01LX@Zus_C6IrusmAJ2d0jM8=bMhNjvp1#k7{vSJx{zQCGU{vw@ zCX`=H{u&P8ch*<$*WbT%L;K6szbtxb{M7h`jEv)#r9Sf?27cCeD~@-)Joxqc?hh9Z z?zd0qe+J*gf8)j)=*DxRzU?&MS#|u2{i5_|puUjc?*}IK`%mBt2Y0;N9gsi#PCPy@ z^F7|b>fkT=wR|9;zdwU->pzjdL+6#AAX5HbhkIn!eG(rk`iu9<@b{Jp=o#qMi3#+V z-`)pA`(Ahf_Y=Zj`H~-WbmIO7|C*Gu{^R{HHMj8|{Yzh>{A5op0UzT?UH`rKCCmpH zuba!;(*7^WH~ec&f4h0_;49kyZvJ!dFT8;Bp_=e1HxG`F>$ih<^Wx$n?C&V|#QX^Q z%Vm{oH&2#I`t9J|yjd*j?{5Bd_2XSNq2IkrJ2Uene1px8Q&al;6Z0$TckimWc^3O+ z!RP9C^X{RFw%^UauKvRd`n#KlpOO1ia{K+~=H(-D?@aDg(^Kn%M)=iGe=IL=bN=uL zWgjo_V*fb`yC?IH(e8=#xXFjqkNXpvFX`_sElPJNv`@d-haydy-|^4{~r9W?E5PRK_B8T`d=QA^GFB3c5x#>d?Qva^A!9^`yQ|~ zwYORC;-l`O|KpX1f-kyOkn`0TQayjx^;J^7`^()1KeUe@@hO0h#4{34)EnRNeGEBC z;67cAuTuCl@#0<76NfT#P8wa%`W*d;=al#9-ZZ=)7PLLC{jv0J4gC?`0v^gC?t_*3 z9DHxrjxT}y#9_t%`urpOupfC{hIci(Chx-$p6}uDe3O zljXe;(EkR;Z}@KIP2uDIvfJOiVffyAdnDlUNsru*MEEh~_YXeUuD^Y9p!_E58D@O% zzmfBgH-z8%rGCP_^JXY;=Oq1$?uh=D^7#FYvx?{4ceTIGKP3Ft8%p7?;zJ-`Z@;}G?SAWoj>{WJZw)7g#XkrAbK;D)3vqk0 z{(9?#)+hQ6@f}~oH}SoZQ21Zj&lmX)zjdM-;P`zF`L|9chMDhuN#gTGKfZx)_6y>F zh3*s0kMS4$%fB+J^{=j0WghzF*Bt+-e7^B3TlJ!!*D~VQwe}T9-whd`ui=~Y{Yp~d zVzCkNH*@m!;fD?mbiM#Of&bQvjPDfw@_yOy5kB}Oyg!HU{rL<1_x}5e?}HB%&&Y_< z>EK@@{ENBrR|KxV{I$pDmyhG#$&;JXuJ_(kJnz1%cuW5c_IUst* z?iZK*TQ8v97H1q=UJX!>vVQ0fFG;@x_;Y<|^EA^S%FFr%`SHC%fa`(Ca#7$uK>LHz zzbg`d_5Q$`w12Hn>4@%)NO_)*a{e6nFra>m<~Q}8&7aag!2coONS}KbwC@8g@5c87 zo0nb(+^y#l!|!#2elJM-h49CRPXDilgfCeB*7FuW{2TD!eqHgc+PwGru+k~`Q9pmb zbs{l5jNflPi#X;H#UuF`-`9{{11(ci4W@>s{|F{K*k5@7g~ygnkG9_f5XjC{K7-{|7d&W!_WxA*)Z|p?}{q zeZ30!AnJcV^bbcs`S0~M(;L!M7!{7w$&@9y6HfvkR`{$bWX zbTgyvk~rZ%{XX9NlsM&Y5FYwrEng72hHrw8Kxbc90?}pRwO_77tDTof`OWcJ6Hp-qiAr z;OR`0j!(bO^TE5ApN0WP{r(nG`scohl=I&Y3ZvpbaYDY~cf7YHc)FG`zo4JK!SR8A zmh%@KerL7zHr~lN@z#i}BY1upgnwyfuPSh{;f(NUm-OSO--rG0Cxnlm7!kb@iv@(P z*KGfX_cuRhd@=Ty;`jKq`f7mZx}LWq-=ZIp|K58c@7A;a;rBlXdBNxX!!G_=_#gd$ zauxY){^65l;D_Jkz#z(n{g8jqk9^!)CivbfY5s?6$bZ2P`NQ}C|N9hw!1eXx_Ym=~ zNqNbK|JaAuG{5^-P*1aeIA6ah=g-2wfPeRw0r#ALcwolxOld0m0r#i9d&S@{Yx=bo zegBjG3#>mM((k0bOZs$t_0V`=l=MZ%1M5tC#{+knO8X!m&aX5Fc*bFOqC8X9pFn;J zaQyB99MjmM(qZr8gk3y=izA48U|xaqevZaNt&NO|}E=g4Y7 z>P^I|f`4^Y{r`>vKi~iCh*hQhNy;DS>v_w)udpKVOT)uje&8*QpB@>}Z}G3d`aZf^ z5dW={C-wI?;+D_zZN#6v9ap@mVJ#OKsj7bl`WNpfc+uA~2~>RQD;9VBrp5Eh_)|Ze ztcpLt+ixr0_!~v>-@q`y|Kf-jiET@}USHXfev8Jor9HMj2&TS*^6*c1^G$<)dqe!3 zBz_Y8`%C6``BjV4#yk#k#!n%BRQ(55x21jQ*VX?s_a^i({2!D*K zkM!?o_z3<@zqBg##YO^h?|S^J_y#@u@c##U?;acZb=`UX_^V&luZpiKlEtcGu}Bu# z%`TGNt?pK=CjE$;QWTda<5Je+ZO21Bt%oI3k~22ds|l5v3`POGXaR$TdV>L& z#RfZ3;!JCHH@l3X8G06jfuPl*gX}C|$+3uixYKRRYHe0l@8^5&y=04yGmp*gU>2!= zF6#ID-PgJ2bL6>R4y)_XhYp>HT`y2brJn;V)Nx zes#fjBzk7j!Qyd5q-y*)r_{-#1&wKw7>chVdKgxUjTYgjHNB)NU239{&O$3MOC;1*fEcgfU zO(&v5kF_#u_=hO&L4F@I2h!-q=sw_2{>9BxrNdw0J?*Wox_Ml;lG=LqIrv1Yt8RR) z#P$FJD^3~#O*{Gx+X3vo1fX7TV7S8QDO-6!~SKGDK|2>Q8h7J4OLd6T#ijRShL z_+;JhDF2YBo z%5Z-e^FPD+-T0#|^DlbZ)A83lof>_=hJU!|^}qe|JH7@TuKnSk-|@7k2k_hM%TuC9 z{EEH?o$3A8k8c@#8Nczr{g2ST{1U&iZT?Y*LW@H=qEFG4>Kh&W_Zt7a>X#-T z+wM^NqxU;M%tOL+o8NwGe_ZrM`y=-|KkWUUzQ|vx_`uTFJ>CniRZsLGe=6}mt>5_l z&R;<%0OfUR*||FxO(Mh{2#ffwa7i~DDw z7wA~=(UNb64sVh73Hm#XenScWaq-#d%m?Hz$Uil~yh~>mkL?2wsGoU;b~@x=g?}>R z%RaM3zPq)>BNGeuo%msh55DD}jpdWo3vtBzuRYB;p!0YYJn{8AxF4pz3cdEMEk6Bp z+vpDZ_VL-km-UODxx)O{7NJ9nTONAme7e@H{+l1XhI|}eJ)5pk|L_X)z|Z+Q;^S0a zuKo)0@kDgY^P?l4|1@U71Mu`R`P-j^f9$`3e#KuzhwyLsgvB=#Kl~Q_F)#VJ=IGnv zup19T@6dzY@5%nMDSiUJ|7}mV$9L${=qGRV_}_WD`-gvi$MFZK4<3L&7Jo7FW#C48 zjr*Nn=dAb;_$B_a#`wlXzqB9d@&Qk88o%gk@*(QeZu3#_$I+?9IfwIoqkG;5`ZRj` z1CPJp_x?wy=jh-3JSQJ*8T}f6fqzYjzc8NhudLWO0-cJ!kWcwXJbgBEz#Y8a{}|uV zp7MWea{tKzPZv|7f7+S$^mREUKN9O3=z3CogL;oi-kjI^~oTj(6`zRbUXPL&5t|KCLa#=m@;dmW9g#>c8wPVHMKkHMM6%j+}dKYX}F`@LrtC-*Jb^G1ty z_%HmKhd$<3soz*ztUW`0=;ouV;4}X%zZv6CpSb`(;$F;WsE_>o*eddNWNq;$;tv+z z`}{3-Z{^RoP5%q}xa?2h=T3a@=r4iS=;ip&TdDoeru=h1<^DHD+qQ4qN2&du#>e{_ z`G@TJ1f`zuA9w$y-_d@)#eY4Y^xrjzKh-^bzCQ84?)w>EPx(KUPgeM={#)a#7LVHG zJK6pA(~e4Czhw1^>$UcY`z61f?LXCj#Q4VS`y)#ezv$*MML(fF<0F2zZE=_5_MG_M zeW{P{ZCd?N`F8`C{gZ9WyE;AL#_Rhhf2Et>n14>Z_Oe5`zhS-se$x}@ z?S92c4_9l4cwaw$?T>9f4Iif)?r&86dB%Ux!%ulcU+g=&bjZU=@MC_Zec)Y_{Dot` z;N~%YlPgsp_(T(me_?(j``td8^B5bi=u`C%dw5zu#HU{8*HQI(A06@QcD*l0XIwkR ze}MndY1iJtgIkt&^U#Ou*ADYv_@Q-B*|PPr`$4t-QHb|FX3x2wkWzVG{rGFmN!R`% z&L?XX;=pYkRo}(e{+#_Me!dGR zlp3e%Ykbq!pN-EcuGiLydrHT4=g<56As_F2%-%B&wL?C*o&0dfXWid=#M^Za`*`7< z`zxEZ$y#Zd_*OeVK5%Nq{{Iudz9Fu)b(M9-4!r+V+umbe zmj0X{IpXkn(%Y9OPNm*H=GqVOwjs_p*r)A&NBB>$--P=yM^9~A`!9=szXpHMeh+)m zb-tgYl!Bk>SFgs{r?1$!8mG3b-XU+_A%BhCe|f#?alRb#RvzQOqhH3y{^uk1AG|n{ zW^`}m$d3Kd$M>Gvuyz~T7c!1x*H<&my34QEfqf~&_a5+Zy)$Od+qEyXeEwJXy4_oO zpO51;`v~@x5YIdHao9ih5BwdyeFysD{r-Fg`CPyFs<&c1T!F=tK0?3B2Ndi!BM-K( z-Cq^P?|1*d?BjwT@_EpLe)Y(N>$ma1mhF?qqz9s}3I2-j8Ta;=Cyu&)AC(=|>|65vC`9%uHC68dC&L`czxLN%iYZWCbwn#y6e2%sQH+)$C&&Bz76y{_5bwK zuAgb_C(`e(2fm7*vA7!a*29m&-(+8S%-LVwfrqQG6KfAD(jh-l+D6 zwEN8C=k5Dr;Lo$*5BO~Mj$;p|whq_d@5(pZ*teN~<7>dRa%S;sU)zpVLPutYkbNYg zKI86CywliIlpYeiU>c2Ln^H=sylTU(2(AB8c-}HOx1HWgq?$qD^5PGcYKhfHuKkY9j z9(MMIuYdW1t@}5;of!F`{a1ea(W=?qMjv+ejbo4SpZ0#}^uK8TBMWw~>ETBy)&A;= zweRJ3{($Uc7*&hinpUI{E`~dwI`0jgp)!;TY1O9;52cBBB z{gw7dvR~T13Hliq-a_98)z6N7W32Y8U%g`UJ*;+lKJ)af#b--?D}PkT|8(rBRh##8 zu61qw=!S2&@dvxdj(t%5lOJ*a4C}?XCZC!$yc$=1_J_>>jK=?~Pp@Vo@Mm^r!{`z_ z9_>GLT=SQGCG5wvZPLE$S7)|TwRcJOl^4c3CcHi6h8rB5j{1Gv<+M}u6(73p0{%{C z7O%T*oqN^JEJCklrx1UX{kBEkB(*#H5ysJXX0gyZ!};qloxs-0Op zG7g?o+WG>YqtK)5DIfXB0(tDtEQ-JB|K+OsZ$!WP%vP#?pLwQj{lmY^e!~7v^q0>Z zhc2+UWM!AY4wKvfK2qBL5B!gBxDv}All$5NaRh6N(Q(F!y~WdCRKEeb#J)0goPO9p z4&(12d&}kGKT>|+zQYf~f39M8x!;vXJfG71&-}(%^mWg#8sanH$JfMX;HQfJq(1xy zxXHc(pVPd)zOrt7M)tXR&JSi~Z=z#q|0tS%Q+m+zrTaafdQkic`-td!p7nVE{-peND}fI_K|Ay_ z!231Yhi{nOOBA-iYSpk?@Pa2dGxH^mpT2&S;s%&AEIZ!KPx>5|4}{TJCw%1 zeqZnBE&gK)erkM0c1P+xA^yR4W`BV{eg*y_esjRn{p9L~=YNhrPCdC{^!o&SCHk*v z-`i6}e;VJI>^9I#Q*=)I`@OwH?Tdfn7n51To)Pj$PKeI{KX1P(iGM}#y(#q%eLn%c ztDj5hO~(IP;uo|#?(IWQ$_``i4~&BU`F&5HH@#!R+gA@hb>7;)jq$Ca-%fh_(G%hu z)C>H=*M~eTydx2{;aNu{)r>HE&cBQ9{ur&sMp6^bw^cuUhF(?@i;#KzRJ&% z7T4|mzTVy~dmipnWPaxV-d)_V`v^NJb+2MqZ%R9gA2}`g9F>Z0ylF4*xmS_zqgqb( zmo?E}zS!lSS4*y+p6+er$n;#e|83`fzMcg;hcE28pD*__?&tfy{P&n&xUVh5ofiCk zif?QD-z0ve;QZ$`kF_NFOiwYTe~tf~{O_VL-fE88DV8txB_-8kadjRXIQ(Fpr& z#@`-~Yd<5+k2zi zJY4dA93TC+UY|`zzy5wl;pbYixg2?Xbnx$rcJR{olX`r#^%wstrhxBvKfAZo_!S>q z#CpN+dml^Oy^7&GtB?K={_icXD!=}k>Z^V3pN!V8%1#}=dsp)9FNi%@iigN1$h0d_?r0BuFpFDnDKI>)BAtlmaZB9 zkG{er^_Y+9&s`pCzMoJ($uU0e|NTtdqOB?J;dS>t2Kf~3ea!lC{qkp5 zqZbc2`~N)f&nN5DiyCQWJ5hYrFJ;t@#lL+p|J+#gH)73yYOa(xI=?a5CJwR*|7ZNv z@1oro;wFAq3w$>{S4dLh*S3Dt|77pFeNR8ex3ala8*dn2?w8Kmy$;>Uy45Qtsh6L$ zPyHlubp6rZ6#c2WT)Gi?Z}v^se?R{PmqPDZ>*p78DROu>zVBn9f1c~R9?|JFUlT+^_`86`OWsW?RnoPUB3gAJMS4^Z+4saFb;PO>*b|RPlZ{D{i$TI-bwF|F*u&?;}3` zc|N1{y=CqbJ+mFUr!tK1oBJs}{B8Y;{8xWHv+j9`^4k8h)YJcu zeeA5oDHd{VAOGj#r=z%P@s@4F?_1_H&eFuL|8*bm6yBbg7v2&_lUexPj`}4>UyT2z z&(0=mac%jQUgA8tALgSUB~H}zFNZ&~v&0wj{{~yPTjq|_Un%nKQ-AIwYIkbx)9o$F zDEYaM%u?*eX9m93TX1v}_*;O_U&7xEK7R>+v-J!7?IYIj)Lh_mv~TOz{mYIY1ip9k z&2AilJ_G-|{(2YJ82DhQf8vCD9{6I@#` zbewR$V&m`YbK~j1$-S=>L;KiIz~9C%Utv34S|0NJbLwyK-}K9QtG~}b=YCAlM@OZ5 z#m+P6-_Fm_@;J@&*>EB!ZZWsTi`olce`w>d<`3Wm6f3S_e#ed}&9;=dH znRC~DL$h(SdndlB)EqqDq4U^U&kAzmkCw;lp?`;;gMX9x0iRJnuA$b24xKmp@s}R< z^BLy7`fsUz$?os7{>QI6cr|#haZLQeg0<)O*OA(lT&mU_T-4qR#K&;HXZ0ujcn(r( zp5+pJf^#nQuk|}{lWVU={TI5L$E%-k@aDbh*G3!XJDSDK<&iq)u$;rGJ&iNeAMAJS z)%LA}H>Kr=A5Q)GsO+O-QQf{jvQ+W&Z{TmwIx#-i|Lr{2xB{NkYE{#7L;nwb`hxjG z54RTLX3ysGq;DtGpXPtmHN6v`S+P6;il2yVeh*(|T+H{rht3A_qld&z0b8f&Uv-)^kpw! zZ@;f?{Z%UtFY4199p|ozk6ZT7L!9GX_q+DP{D0+6*S_omilaQJ@0o9yf7QopjPqP@ zye9tD*6&Mqx%N)~ifgCFcW(WNUuAu!?LYaI)lS#c@#RW2R-Opoe}3}70^dhVpZ}6; zr*&Y}<`?>}c>Jvnx^+Ey+VvCcE472`9p}o7`_7iZVcL&3)R%oy@K8G?;UDb?5AFSP z$iN;wcGmG4t_fPrM(x*&Exy_K_}qfJ>!xvv-i<#p{?l)@87ALOUr=je^|TdPNXn;+}m&a2;Sg_!hi0k)A=;?v0&qkm+maP`WlbMf4M{SIU3znarIl1 zZXBZzx$m%V*!pt+nvH9C*ulBs{Y9`Z+53C(Yty<<1?dE{&}tD>J1IK@3HUM`0u_KzY*@k9m8))d}Co|H7k7neIK9FI_<{4wB+hf zo^=0#-{utp;=VKghgV;+@oC-f z<-OpxxZwKvk+=WeeYb1>-qTmI%_E!33-`MB9)9_<{FRVDgICWxKLW{j{$Eai&HOV? zik|=v@h8EB`!(%5#$S>Bvfkbj{Fj$){oc5Eva;HtJS{J4ej^=y7t9$6Z?dS3LT`!y{8c%^;8`llhQzjS)FL-Q2= z%0Hoc^{jngZg1Fk6{F8LE;{bGPU;6x6D7m z;#+us>+Qsyw36eu-t6x23-K>~MdlBFm;HIn!P{JX%Dy`(`x4^Az;EpP2X9X8-aqmh zMlVb!$M@ar?)%gE75pQ*>vKGxNsf=+O#k>T+;y|N&ky>x_=(^@F_ybxc5Lp~j9wT> zj^n>+^(PPTzkfGwrgby^2()AEGrs8=-j|c(lQ+A21gE^dC;r&M{(So8^q;HWaxdpU zlw*D5d8Rb}$^6GpxN$X41pkX`{4*H;@`-d!^&2PBO_g=NSO1LP#uxlGYSh>B3g4@| zoQ|9S-5~Y!|Kz7!KfxYs=gZg+gTF?3%F%h{xGT;6ihX#nybiyQlA8Dkdi`{bb~x`N zeopySqrv$FlLrTCz=h|x4Z82{^zkoM;T6vtw>dwJ=55YT<2PA9Ve#ya;^DW(yf~&W9$F`00m_I*i-sSu`?iL?ne52g6rSlkr@2e;B;|u&JZ|mK6`}#h9 z#n$JYm!f4KzcNmK6xADmUAS@mXV&Jmruv*8m6vDj{NMP~6WM5V2Dos3(>MrRIoDg7X@jqv&(ePU9OwHp z3s%2;mpi}Tcl%lU?j7zgie7zbY7l(a`RmZFJjZ`z>Gb*RTIU(gU#$Pq>C@XC`VW4W ziN(eJO}=jlN%kvr+4HZ0{#$R;j>j9suGmMXU1$-WazRtXgf5%bEH$@~qz%#Zd5g&*_}-rglRmOUPEf1J)AOJh^Q z@2NTSGsHeL&iV_!#HY-NKkWlwBK`+FDBrN1tg+wv+mavf=Wrf4_H*kQJs-cz`C0ra z@8y4ekMuA2Ub*7tN1h||chLN9{$IvA(y5ejKXiO_1iE3|cE1uOY})*{pj-35DJ)&! z{Ag{l;p0u*`TD6+{+^bd>!tSqC(ilq_4E<=^OC2Bd%^$cAA^6wck+qb{u}%$3$J-z z6CU$?Y0Qn+&d1^JgTiO#zqI7WT@xMyPxH?ce1)&PuYsR>UiSF;W5Eadsezw*J}CU; zyYg=Q$=k$tL^beL?}3~7m+S*y)!wBd^g;VM=p|xaW9+YlpV=koRQ>}k+Nb_t*}?T* z@LTP$&gM^dN#~E7C#DW9UFe7^z-4BeyoIkUk2S6seq1I#Ai1-l`{m4EqtVzlx&+?l zzhwT2#Bap+T4Dd1d^4#Fd^8nAVJ^`M4 z;b`@VZwm0-3&%d4AL5@A;2Ge!13&4X#P?hS7xT*q@S^^9^y-PJ2@lr*pNZ4Zndql_ z&io_bPXR9GClU$Y@XsLrsE12{M;QO8;PMZ4;bQRMKm8khj^5?` zBmP48z+ZkAe2l-)e}K=uxozVk0ZxX$-xU3WUxs(Qhd%^3$-e{mMNN-yw>xzv-pu3-^MLzzaTYelqvoyK49~DEUnM0{CS9G6VOta%%s@ zpC0<3_WH~Lug45}dNunM{Ll0k`ISk3!9P*(6MdGw{xNu$^FKN0^_E@!zh?Kdnq1QN zcR9bAgVIO-Q_%_$d?lLx|+UG&n?*c zvX8L#jsLv595wV@{w3%c(r;>#H{ijg^dDJ#*P`UZ@BBHpMDkqUAs_UeT`%WHW`GlX=5lN1gXo15QN6l?f5w@`q3T&H%jD^g zh;x&FMvQ)z+_TXkf2c;|LWiCoUE;gi+M?}Gn1ALTjcaZ3nD`IR@wfOJI%kBx+5Jc5 zkGTD6(9459uJx0CP`$AYys-a%(v@`|M`Q63@Yg|aud7gMe_0!9+kR8^H`yN!^WXNJ z{<{YDLhVNlKd3*(f4y%q&lfw7E{$GOU-T91t(76{u-H$AKjFrq{x_*#GkadVG@|zL zldsx;+4m-_|H1l|4#nGy(XQ;P`_#YLUy1LaeuL-QpQ>N&zbDL|Df_1zzxvnn$zeC{ z1C$!C*YBgDk9)ZI_qvbdT-T2MnET~gX5UaAc-dL2!`PXzH(LAjKSI6Gzu=;Ay7n#p zB&zd1>X}{|w(pKC1v^IQe|%rd?1tp$vwkM1@8H`Me=1E5F@M=N>K8iBVP75jSb(3? zZ$>}r{twT(vfP+8dzZnN`ujY54tV%XQR*H+^)L8027SLHuHP1=8^6IXx^>h&ALO~_ zxo-;lda#dDe`wtGcfi-LV~@oi@oC>b_v1PEPy2R=!`W#+qCWWytX)N= zH!@@29a*yRw7h+l`V%9>R}nXK;J`vh6T8pUD0Xn}(X;uziv4Y$8=uxma2-Vdl)Ws> ze|o}=cig`pr3~u_{zqfBZk#(%PWgNI%sxT=kzsfL-PrgQ zJ69MSbl<-V{3HBZCcOP@pPzTIQ;NULV?P=9_L|Z5irHyGJPPMOmcNGlNFTBrja-F) zn0;pRU5&5a-mrSX4m5mq)xZC?>_<_pyN2a=-oe_utX~ z;MD~i??k(0?UcQJ$m|Q$ZxOGiyes?352*ZoAN#oT!*g->D{iPnAm%W0<{T%YoIH!h~Z#!UZ1{=LcTKWujyzCPW&_I-`|vY!My zOO@}PeWhvnN6NIP|NE$?a?IOVeEt!OZ@e}xrhI1``BO6ge%Y_~A9w$QorU~NjQ5tg zKCRy$H=;ZCGk)wR!On8qerIRF{)ByCB)V(ReLuCoZQmiMzZtVn`pvZYL*@Ue-R0~p zGy9#L<@P)Hj{TCg&;Ew};T!t?jyv2woBjU(r2m(y__zE9_KDlv_mlhAt^IJ{m+0?i z{C9)BWMRtHZ{5*$@zbIY@bm5|S3lS}rf+la??C_He&?vX-`RBz+`ex48G;?b{2zJ$ zxf$1P?N;8S$DEvT?b-eFyq~^f%lezS&6SP)&W`hz;K%%03*aAm&w<683eqkATO|Gs|f=W2GPeg;u8!qp~UCusns^8@z^{2~)%v&dar&Q-zD&Pgke!eDjhwm?^xyAk{ZEJe^Igsk zGI}rXX-ECb|9|MTvoC$#+n4I6ogGH)pTR!*g)g}Aj@<#D!cTnsHdo?*Y2*L==iU3p z7tr(2yGK7iYxW=czd!rxOW1#a3;JB`_O{u1MsmQz^hd+b(%7v$2cF|O)*1b={Dt#g ze`I{Xr>XCGKKyx}vkxrq*pGm}`0v7k*++)GUOVx*1&hDBf%6N+2aTy+?OX0%F#MbJ z`9e(pfAvJP?Mk@w84L3%;~LTBd#30XT{oilljU2c>nT>!E@g@ z>x6%Q`Lwh5n0*TS)%ZB$<~e-8><|-8#)qD2_`&)%o7NZVvF`1A=h*+8DphWC|AXGX|Mo5O zqi26KBl*_2b<6Bq6|cYVUpQ;+3;(d6=MQ|2|Ez1!&%tlQGven=f4uWf;a$|&fAH9BvK3l_1BR+CW^a20=(wCfFWoUWZ>V47UJMgvrNqT2$@giURqPM@CI&by0Kh*xG za_@OtKkRa5znuKS6?-rJAtL|BsE@lj@OhqN2Oi@*S8yi(k?imJ!oG#v8g`|szh^1` zCFq#{zz_SviAelkcC++Lz#ThGu+v>`H9we#zH;NUIoW3peer_XS+ZYbyt2=@@q-g#7-2+y4EG%fZj=FlL{6^+YMsdSQ>b?u%_)C5Z#@@WQ@i{@3t3qbGwK zcx`Yp{{N30fA;X&3n!!h7vN7GUdVN`iwt>rc{%-4;%`or${v1$z)g5vksPE9@M$6s zE$#*Wq4=7bF**At*e>Z>H2S1JPYuw(xz94>2JCaXp^#3{dz2v6k zkH)`G@&`NjkD!k=`mcMrFmm@l%ivqri-zc3tc{Yyz%iXw?CFFqQSRePpMY0d& zz#HVpB67jmIrtBrga2<6pU3(4Ml8Fp+2QrwGXH-^>m&K|pCNz1AHKgweEq*dKIRsJ z{JSXo2KFxdenijtF7R19e<1(QJzqF)_3r)r`B--5aDS@tpI67GLjI9pf2?>r3Htr} zQGP_74-9;X@nc8R`jX!#I`YMh4%ySHBU@%aG5fjfE5!$-f91<#7qZG9 zbnn=?{`lc1`{f{NGJZ1Ut)*({n#j{*+*E zNsFoCPnL+ISywy^_=WsxM0?|6LOjd~_HP~E!oPG+Tug|E!Tx$x@@;QiOo)d8e+)nO z#>Iqq80E(j{_c&73Gp!6pIUsyp17D04-@?Nd-lY|gm@V9kN+m~|C#>v%#ZzTh>Pj= zaWUQ852F2v;y*OLg5rB}yKyo6xBDx;@BAn7yKymRsaIMK@h~C&VsBhb-p9jSR{RC~ zkL;efm@r=BKa4+&uh8w=FRr795TE1YKRWSyR=*)GChOyIeyV>T7n5GwKk)^Jen$U4 zEB+(v$MJpLANq#kqf+>L)X3vsYvV}QEzT*#f8_GpjCXo2pKrT+zV^fi#d#N>b2$I+ z7oU^ucKzmy>o$&@9|!Pr_>*_ziLt+H9J!nuN5G#nUNC!9lyl>_F8A*jpA*Ir`*@hJ zK4Co7*o`Cd;|S{$#*_N^kO4mq!w=Tyh#ybDi%|aT^>Of!exdV^5ErvE4j&H_)+dZ- z?>H_;#4pi*;>UAz&p7@~@j0>|&A)ge%4$7w#KmMC{FCf8@TYy^O$`1aPAkms&&0nN zfA}BD5D$ZX@e_^j*q*qU@ZFy&{_g$1sD28bM&G-dM(_Lhm=DFpg!r8$68v4*Zw)gMT)B{THKX{;fE6@gL^D_06%U zCtjhsskyYLs&*U2IPKPXF5@@<^E72#_`js-mEv0F!KKh1{v*<#qTugcj0#iMeopPl z|LctL@2tkh{Cav;dEU32;lJj|d-Lx~d^}n)ZW;Z@#EIzsDQ}<3bKjV)f3cW0X}6J> zpTGQXSwH5NjnQ|Y+l=mg!)}-)skh&5T7KwkwrcfxjxDOx$X;Ct{@CyIFa;$#H-|Xv`l9oLmh}-tOSNO_z?mbtw#;W(m#qPLm zWoOc|_b;dCu0+re>s8YGuDER_^E5bJk^dI=9?#=FYu4JRihK|u#h_&twlAnpU<;@ zC2q^`t+(L#PodB_BuT5F0c-a<8peFy^k}q`oEmXI6UmVx^4Ic zeZ4RHcpRsOkC}|a!`R_(<86;$Vf;z7Wq4SKx34<i^5ps4D?q!KZGI-#vzBZ(L;kppO$#pxa)L_lyTYR%!(N2>pk3Gx)Hc$B54u$GJN9**nGWeoy&b<9HqToLtVt>zDLA zV{tSmm&dR#bo^=~N-}MGPHEp|p*L5*nUj8+<^DI-&t?guE;L7+u1mCOwhWOI|(DD=c#`zTE z7k?nG(&6v@$7B3pB~RWKeSv>*%=>S&Yvt&@qUaF*vMK&z_66YY@EiH#X#CB-+`{-i5Go@YP!M3QyyJ7eMt zuem?5r>N(|h4yWwYB${97U~CiUo5s?QygGl-xlzR64Ni(|CCCuUF84cg3G|ARuAtx zG`@M>SN;F)&Q=fSm&dca?=`-B>Yryavo`-+=PYqpI{&u#k=j7#D*ulxseY83K3?ry zu=qivf6nJBJb!^33sV2QMj7Bs`?bM%f${b)=ek#-bA`?2Zr;20UHp=@hrf8%o)bq@ zIgdH2v>eVq)6Vq{!Ao-K9C5Z)_?+~N%YOeikfz4pvjw+4-QAAPcyIEnQt|Jz?I?=d z%hl@6d(&Skl@;JsYV>C}psUTf>eW>{FMOB$BrCB@w%v{}a`c1FliiAUyL8TEd2UYQftI*tCuFg zpZc|=ZKcVVH_)G>s>%CC13&QYv=CGE-ZS1aizI5pU+PvvaiqcJ|10&n!TIL z&?n=%Wv)Kt-Wz>zKGMjzaSi+PpEONB_{mRt&=2O___OYPz3!f88UOS2XZ2|xf5_~LeE<1I zN_)MhWAwKU@!ui%-1FA{yv0Y1qJQO!xi}N8+WXY&InqBxAJtg;(Q6lnM$g(j#&TQ# zm-Hpm-=U9&>~74D^OuWyUaPO$e@7qqKjat>`gMPQD!$hkjkkZO_T*n6{HZ7FwDqt9;)iRy<@JL+xlPC{_rsK;JeG|Kezlyl`-%ayd0twe(Ha%>*$i& zm;DX;rvKM2%D+nWf%KjeH*`A-7>NTOK>|Cv?5B>!^Z z|7etrwoHEw_Txs98vl4XI&Jprk)%}@UkUmr{tPxB!9Rw-RCA06ePgr^+`d7cE%ulC zPyCnppHymB9Dm52x9`UIulazVZ)<;C`TfZ!Bq!zn0)5vyJJ*31`rnS6WWT}q&Hsq~N8<1E&H8(MV@fZ-K9~nS-TX%` zE@kZbk);GVrucqqpYdn9ThY0W&E?qdi^D!d@GV>kJx32HZ2S29%@33xv$L3XG_#w_Nq5W1;m%p(C&)kB-?6-?)hXjm38rDr)z&i@oL_ z^cr})V)F29tuN=3xzx$KTF#iYet0%AT zxtBiYp7WlZ9Phz@*U%qNMbgWk&%MX;I=-Lr@=N?*`^P|6-MKBJ8|(vKJ~4mrr-l<+Pdz=3&s%-zchJT2$ejfJ zH6O#@dz>8d`c;ze;dzpalSK5@UdEoXCVu&+hF|FC`4xMfBpZ?VUvIB_ulk$dZ&&WT zJ)z~C@0hR>W_=6v)g@jK9;-}i?7 zaYqEcM3*kTle+zJ*bndB2eUs$zlqrYy8ZCpeX#BSpzpB%+q)0`{uuI+^$q*sz5C!l zlYJEW3j5)`<<G(x6I{uzt-XJPZj)&TRg`M-qW`G<*`pT`Oo>#X{(>V zly>pIqu@*Q%P#nz+n-Ut%m2?N&>?w9dUNZ>|IGfx`#kn4?SHIZX8O3ke<7>;0l{D4 zC;BDrH+s|UsF|RrcBR?1Gn=2b^EK8t?X5EZKl*eon}V0vKjD{b)ZP9R{7A1tckE|q zC%g7{Ha}fTG~W{Un>0=SbzZGzqx6qHJxIIAiBA{IzAz>Fbn`1gFVJl_{m{;*6W>qB zZ`2iEp}i<6z_;~X_UeZ97xc?K9764;UF+DbA3DxHkk4{r|U=Uj+U)FtEb+Y@@H9wSI#fl6`j*{iJ|bmGqfvX~XzL z&GaqVcP+lW*5#iMnI4Ip;J^6D%c_t4t(>H0f6Mb+a;q=r{tJHd^j}wf_Lpj3>)2Vs z&z$?}e=Pi@{|fwD@+4nhkL0&qH#zmj#UJ?i+s;lW*Mc3ks}OZ}Gap+Y`0q&V(k0EW zP@AWinyU`E_W`~mU9Y{VeS4wczU#_6`DpD6zc{ay{15xMa(Nc~m=5}PG&1zwk3g`b zT7BWWYNuLr|II%~@VmaE|=ifc#ut@IQ8^{swm6uHy;UOZNJ_+j&-ezkh#Dm*Z;xNPP>GUEP+`W4?^ zr9%Hj>W{F0=X;9}27Yz+HdGUs(T;y2SY>a9r9uK=o^XpTs zuG@EpKX06f`uc!t=X>$Uh`-1)BOALteKzSw_3 z=TA=mWPaiN0lmuJ2Ya*KAN{XopK#AhCFqxSgZ^yz@s9Aroj;TXch;w-a|YJS;?p_b z=p?Qs|9Ai7j)1=nug}~51N^S{ZJ1xosE@CzVowtMl|LK$%=dAgAh?gzFWB>P-RTcM zOmD>htPvI9$MQev>a2FW$UdUW>j&08{>9`Suzh=3-=RnK37^mxkpK8UoQkS5^p8H# zuzlFtV&~}jXf40C_~YWH@$V{rWl`_iVxbfM6y3L6sJ1)S68R@mpZRev!Sj>Y9Sh&m z{vp%r^bNw?Ej}~o9hr>#F3vbR`w!%Q0e`Um+P#K(5* z$Mzokap$i7aq3$A1Al$Got`Us`*9|6_!#t$So;p>I?+B2KAPoybdCOzBwIX>k}T)O z(qA*BpVB`Hyzl6|M4SL+noSGW>L2I@_Fv~O(m(Rqb(3R3|LDwanB1~@=pO~XFJW&D z`UiAxbem7tBin}+(rk2%{*ldBP5*G;l^VS!-*@$kz#qC*PkMlzqwVS!Ir*<3*L!G3 z`bBrQ;3fILX8Hm95__L7UEz6@^jy8Lt6#jp{vqeub$a$Kb1C|R^bGiyukYH8p|Y-<8RNizx4XVP98JhyY`Js$4$Nw-;(kCFZKJ|Mw}X-H~R$sdwspDrdJGmJtOb` z%f7KmejCo6O@AoxTzqK2%YX96n0+nBbJHtSFF(DM+W#Xv`a>T0NG_y(E77^k=5n9c zQ{I(+i2jkww;Wv4S%Y7`v|{pJ`cL#7xQFQ&f?F-%A?mhcI!?!EakC4A%y+ho~NMoMi>3&n{v%el0aeB{4!|5%%`}4@`AESLv zUm6*8dQz}AnS7Ca9(M1e$mJyo=j5{QcOYMe8?ODlmy?Cj-!*+p{l~y>82fC;nlL4M|Dzz^gV?Hm53WjFr*;a11m^Y~>Jg8l@2 z>7Q}g_y%_RUk~tC{aQKi#*<2Z|0jQP$8djjcl@%S^Izky4Xm3VD(&0&?R$jf*&l8u>Dzm&ei$ zoxdU9H_RV2t*+3H?2G)DeX)A(t?0#<&@Wpi&x8Fi9TNYLe>nCh_Fsh*{)F7Fq9?B5 z|4>jn*T`?#t(^S+^*@ySjygXqzq6k2N0Iw3j`qm!tUDhJb_4u}ti5o4&i?d6=jxmn z+W#QGchA-TqVsb^QP;M~tGKJ}&d-wtYk%kb-1}eshd)1Gv2*jkD*ve3gDo?7#TkA(y|sT+BE=pZN1>lV9L(wzzHh-$N-mky@$quTPnON`JC) zbd7!6K(f+Qnb-HRzyFN!CH?SU&a1NnTUPeuFPI$h?dMbMf&3cEyQ;E`{aq#gFGl}K zF3m;px976C^&I1z%cV~Lk^i&kKVNYFJIk&d%&ppZ#J@HfeFopgiW`4d^_ut8@2Q)$r6!{EdFX|Mmx__Dw1-iP+fOx$U}eS5^SOg)+y5XRi#o?nb$)%$&X0>% zuS8MWUOspb`+aY6yja{2ypf;g|Cp~IoIQHABJBb6)s(qwqZl_9=&Xb8DGxE>#o{iEx- z*zz<)eam*g3+r2}od^DX%VyUYd@3H+`Bq1p@vkXwb#69anFRd$*Sk`SWDc z|Ix22H8-C6A?*4+r|D@r=MUyI8;A-W3jTmG*orpRj=_6*rfj<@K@)#wRqL^ zf?-P0&yP9Zn}>fi{PRkD-tsTh`5%#I!Or*54^>ZmuWIFyrAFe`Q|Iq%$p0$mxw5N` z3_3ihXWjd7eFU#&uv+U=Gry$=lt4_?~2X$NaKplbA(cU60~pk<1`Ke zZ|ExA%XXyb=;R&6AAlc+>VlW@lQ_Dn9|`pFTXsHhq~Yl2u>2rW=;X+T(S!D9vd`9! zfd7@J;=_lpd?5n=kJPs8{O`w(|Lpi*aR0aYXEY8&2ly+P{gCxUjtMA6MtGpK*Wq@CA!I9NzEXAMnlS8~rlCRr8nKt5IK6x{0k1k@ABQx#Uq~18x8p{YW+5C ze=?+X>$!9sK4W-W9CGU={wVxE!hhlCaNWUO?_W%hg1=TD{^H<2G<4qJK3reF@l5wN z^w0PepVsB(+X#LvQ*OTOUxc6eTDN=8xD9U)HqL&2ZE&0O|NW!Fzo8!YJ$WDO{Rn|DM86%B@qM#>f5@ zzY*Jy)M_gR_prW}pOy6s{@e8${DXCnpON^-o4|J-{yj`yZSjj5rPcxYVf&|Jw2%L8 zQuFpn%kM+{YSsHcyi0zuj(6a%vbSX_v{Y$~`Uv}+}`G?*9h4F#E&Yxp<|I&3yb{6ly2mW;X|GnORSoEdsZ_qz< ze}(WW$NpyX8}H49^HSM2=6SFCF7%x9%YN|iI1Uk32K_NZeVwQ39RGRRAznjt#Q6;N zdB!Kd1?4+eeffD}&+Cs8<=1aYf68a@$Jcp&{!*K~BG@^1?VHv=_g9d^0Kd=dwzVJZ zouU8U>=kRjhkcyrq)7cJyOY0P{tfoLlhWpyTlM~FZhz9nbLk&eA3vP5xD_>1<>&GH z2Yb)CUuMJXvsu4S@cwgAx8Dz@DRPW+w0sZa~E3uIwQe{F(U&dtswT z{gS`e#~Yjf3h+bjX*`L}5lw!3J;eE^o`^<~d&0Y6O2aSYFW+;%K5zXu8Y@;$@=@oA z!~L#3;fKz5!ucO`ac3^GdA#25>f8QV>u2XtoNrO8edNQPxt>jzf1dI8<5wtqAoK-( z-7**KXr})^hyH?JgXT3{ckk15#q8tOzwE1iKDj|RuHoSg)02NF`NjEFEp_uw(F-;I zU`Mn4vGjZI56S%)Ht!1U3m#_Qdvz=s=D)$k=MAY3xbNOk``_tAzfAA^wcgF+gDLRg ze6EtTO;5g51pkrW!``ni2@wV+<-supYxOB!jCjsH+whhV|d%s1N?xe>0hQFJGk_C zyebXstS|f9m!bjXO-8?{mRn|D#2&w2bSD2g`CkURJNkt^5BBnR)9>2;vafHwQ{M+V z4R~z%Kj@$F*t!J$eAust#<#h7Dj)3Kl^({)x}=m^kK?w!BT31}_ou}73I6@qhjd;V z;BWC==np-5j$O50U$A)$qW{FNz7(b2U$itt`^0?_Pr!WdlmC^iUwsI80{@=+1^CRF z#m=4$;CGV!tCO!d0h9KU`PLH|0@?ibELNGf0ciB$9@Wb?~*^=HTKg?*N5X% zvvyuMHP`L*f(G#~^z)GHFLwUo;_->ELC+BXO1quCJlL;-e^8J=Jtlvr=8zv+KgBBXzj$Bk-|zpYms;q(QAa-0mcGsSocz!E z|Jc_puD5_4_j%g+p^ty)&$K$E->9DS8tnD4&R5m{Ci+(i`7OGW99P*#DSgA_x9qF= zvr&_{mYny)FYsRDyqx|m(;xczA8~G|cFd2=`~O&d8aURpmOaFlW zfKT8X@E50tl&Yo=g#8_UpPYG@8l~(O)9+gj{$#=r$^Q@^koWy^-=XoTcf~(=pY`%S zFFP3H;QaGnd;k1*#lH*w{LlHpzkadg?6(c8&-fa-^?xCGT`aly+`c^R*#50)@wc6w zsn(^zIi)=>=U1$J*~jM&>imoEksH?UaK1I6|Gc;P*Yj=rU(K)d={e_^R=(rT=c19s z#SH|zNZ^;@e60_^-WT$^Kf%Ste#k$C`IQH;8+Ing`|~Ypx36#3_%Ze;<9~zswmlDg zdlY+<&fz4#Iehd6Yqu!xeSmfH`Kz_yQ4JCr3k1u8XVP1opM}c`@FMOdZIqv-1 zWS>iaPH-C=WZcOA!F4g3wM_f;^KJ+D z!~6zv>p#%=ZU2g&7VGQUSN=rC2j1Q+{2a-z+w&kF1;6-@@%q&HHuFI~-=gp8N!$LL z{f7AGfX~5y2>EN@VHTr*@(23;d62_n{v7gB5&1y;Y<|?OOVHEuvSR~Jv!5}(VE+o| z%Y)cyUjQFQw7%$9wH*8ox#{e*_u;4K@W}LI^s5k;T^@0GG>`*-`2KDAFEReX!BvBA zxx8WLtG(ct7@wz<+fBS^zS3Lg;cpLC9;7_04KL>yE`(|S`_|8o8-sOhvX zzql^xQJJaZ@*h?G4F7fiY`5qN%Sw!$Mfp{%KKr{I^xhRS8C#BcVj6ddbj(=D^_!$0Ep8weVZGR!XECU>6 z$HHIN>sQ7faqQlRn#3LVWKyda@~vQB)A{F)e_C(i_z-d0jK73_#C!H1<*WS1u9SGc ztB_B^_P^AxdU+m;E}4IS0vzEV_8W`Xf(_JrDkGmj3|$jQ*zeXr%Cc z*>6I;)aCTIj6YS(pLv>dImX4g>rjREz$4_7+1H0FdOkJRsJiEzQ>eYf>}T+|ptoT^ zx9{)+xA)pVbo_?SZ`}VZ=ctOy9kPDRzs%%I4Zm^457!kpPQQubd-12X{Ri;p{!eSS z;rkt`EZBe3zv#c7CBJgdd!HDrwCMMixsj@CC)5w|!aARQw)?$LH0-?J-!BV(4{<)D z{%RHEH}&x+jGpa%?-QZ^Xw~(X3_JgM@|)Xto_-?kqqBKcDrar{#DPQ|#ohYD)s{V% zerIvg%5O(MCZC=gOUREC<-3SK%e74Juzfsoz}g3Xvgaz^8T*QF$MuJNd@JJoxKycj zMDi>1dP_EooTj}HzfQb*r1vGYk6j^~1<%%XzfffPa|czA=j4a6eMNRg^L=HR{A1?d znIyE2zEk%5h@PIbCi?h()xD2P3)pY&TMl_!y1HCD-*53=`lI}zh~Lb4K2TtvBzXjV zdHI$9A0)rxLi(X|kYIn%zDnQkjRV_jf7lxbwqt+5FIV;d+WwFN2iZaF_q~5t`PIEE zzsOPK^LIc$onC%*?U7$bpS%x#y}3&(;1Q(i%QwAzEBXIPrUOg}U*!Jm7#V<=g&UbaKYr;vU)17l*kFxLaZ&dwS zUjO5%<3;pn$+v6eq-zj7!MB0(OFP_y^~C@ATtOnSR~vzfUP8x1=Xa4#<8X z`$I417xF9DcZxI4*?00UgFf)T%w7e*b#4*2Og_b#71;@~Uo=0E{2l0CjhggJJ$s&J zE(G~#^Dh*fybE@M9=?k@rm6o0+uw2DdWYnr>dP(?^3hoTv>*4T*01c3O`Y@j^AO2@ z$;Tf5e_+7L#~kNDZho8U-|{1wd`#M`?{0oD;g{;8Z@c!>P=5li+rPtagg1?P4!<*=r`Rtg#~8oaC#teX$*vH$t?bKf+jo~E`WO6isXZqz zn90u|p9NpNCtlB<59amV8yCx7p1<6&`M&&hzO;`U} zJLC8A%;Fd6f1tKyy!*NkXMW|$j>0R8UybAK%bjmz(49m&*$HZ`wULBk35z9 z+Nob#u=X|2=L_$}1GN_YD1RvH$Nc)J|7@P|4{zK4sc!yzf{)R6RHfdtUGIH@eYw?B zyq4ObzWI07v|p#a{-KuLJ4b#QgD3VC%fG7o)${3laj(z&hCj2(d+_ru>4$xN%v3gu*p~CXGZ6H#5)x{ zpXjd4TK=|cujMCk3xCD?Kk|!7zX|b6#7)b7AMEr$5q~3pALlDy zmAnjb)gjLn{yVn+2=@J~m!rk(uKiy8pZ$p8e_X6ml3%ju?DP1i8~^Rf==s!K9NYVZ z^Ldj`7XJYL^_czt7VQ7XP3%f8&ig_9YaM>>weNRlS1dmS`l;EkTzt3L_ixfXvX|PT zbIVU9{z*Ozlg}k@$LjN?KcBC;c$dEA{_X{nt2tkK`%^yUzvO8`Dfzi;|F`+&3x5Bq z`cZ*AMfRP^PuZXHIpm}As-!08$bX^zYw&Mid`W-X@=lR=2RX<&ftN=ie#G{-3Hh%| ztM*;N?*om0!{3vhS(A5JZwJcxeQdDrhx7d)e}jAt^^qG!&p~b^$vSpGFaKyi(0$yq zZv6};TYuv1_a^^B+;t<_!p{80#bOcphJTWipWM%rr2e_H-&aiz`useyj|Ka^-+!`S zEKAP4to%B_r!U$1K-K!W=R@SZ$=6cOohMYhe5~bD`_An5;1`KAOm6P%1O5HE z&VEh)Ad`FC`&vJ1c2wfC!}-K<>~r}M|2=s@O%7-LeJ3wRYsTMQd=+xJ?C8Mq4RIgd zCFwWN-$=iU&k6navCgui!T(LZlh4EURb}7q@W^?)4+8xD-^9Ng;D_jkb65Lr)W`eS z{*3k&&n@`-pa>o1JY@-iv^y|;5W{P-)TUp1l-4;|yT zr@ZvU57<2Ienaewef{S<6i-{ybLLSlFF@b-E#F}N_a~xwrUiUnS?=xIrbLcN&a>Z> zf1C0{WXiP5{*L^f_MZH~|D)uQ@@uRye)!)3@r~~84c>E3w!=SIU-a+JF84gx!P9Qq zgC9t~Z}L9t|K}(jpFlr=Pl$i0ehK@wz7KYCtDjMP2Jq#5Og-tp+3pq7!wY=x^mon& z8K3OqYESLxoG;`7vijIhlC*7h>zMow=)IrLckbA?-TDy^cn-UE#`6vGz}a_i0{?l| zx8UtpNe^&jUx2=7^m1A2WAv|n$!qTEpY^x*tS|JJ!Tx;K-dkP?=(amqxA%@dq3>MV z{&!(#7G3w`-230_I4$}hwb!~m-=U9^!&B>@`1MRq>-XEsr4sEx2iPH;|AF@B;D4v$ zFQ6ylQ~YUEaRN73IA{b64MzFpn!d-BR#`<-1E?7jS}o7``M zectG%v-^rY@0{7-yH}Rq+rLxb z^}C-9@ac$H7xHuV{*3tT40LPp+eW|9X9Q2>OWldz?p^&E@!L-SvG{D||BSA{Kkh%? zc|J8)Dpo0fTL0-by@&TD zd!Hy@k?1?#Ew>o&_&1n-9`?7vzoDyZ!Sa7Wf2RMq_;S;KZr41LORa15 zpM2i`FZeRo)e8G}>1Va9|1bSac8osk49>n_{+am<_6gH_y3QJ(QvHZHac|$S`m(>J_o$MhJD@aB58Rw zI%ob1u71$xvKiu5WvB4xcd~D=K6&i-Rvof`yw&FaISgIp$0t?6yy{5#kuf<9JCHtZZ7{oL}LzijfC{c*Bo z&x0ODK1I{-fWPTi{mF*eE6~HNtS8&{ec} z{r$+`NBmh%^C7R~Fmeq4gkdi~O+F%@2IbGdd4E0c;1uN8%h5T*pR&o**DsEEyF=g3 z{F}mG#n+hpDS5pq=yw)B!TYdZ4{_i-_~Z3A@Xhr5fM>{e)8`C-h+hc!0$zPc&olcP z_z(Xx_|?eYuKS0AoHqLc^BWkMHGQ?;>t~e`@WtLB{lAI-gz0U_@5(k z4*5#n&9!;%&FRaXHT^F5DT03&qbImuQ_of3-?JRftKTI4qT|(<$WKiFg)@r-eXgAz z^uIOo$G_W-J}9C84ahHr_dU{+m1jQc_*Z-Mzn1uBm)G;~Q}FzA&GfU*?hRm|{Eh6} z*jENWgrNV)o+^F`A2q%Qe>6V#L-N~d{ZjiczXQ7Ad@$?zx4-|U7VlfCyHPanC$ zit*o&=dm+w8Nbo`Mbs}OZKKyNuO}9z=a~P(=DX6ra?yshA0_m|^YrR@(+3^@7{z|M zZqMN_l;pwk`k?WT?~LOA-!}cP&+CQ#ULQ32g1-g2iwe+hM1Enf58^-kmh4xYml}O! zavP@K@jZ3q|7YtL6_LA&=L~)|1BG?d7mYt^e!hOB`rui2VJi~;q92MrlYydZKgjuR z?UV3-u=qgm8-8m2cNf7Mo@Zya=>L`FpWxpbzX*M03@<+lpR;{P5Bx!R7~*T9p485j zcJl;Wp#E-rO~@CJ?#UAn@(YH10m!)z+Nk@o`COH z=Usk5osTh|V#pKF%Q}(|{?Gm&<`>+n|G{UVufIC~2jfrQ+O>a$d#v`}pOX0V1C)ms z#RvA@pE4M)7(VrKKFaT>?oV<0J=?Her?-Xn@DD^kJF#;j3=-|MIfmfux`5?1wI&t$n($KP5d})G+=G{+9dGME^?> zdNKY5oI@G?oBsgsp}QviHHsxyZ=mG9N53`uMVF`7xFo#OJq1?`4}yHj_50_U)@K!; zPkwjfgYXaTkB7hI-1lxDG(AWBfPDvlH2pPZeA$?kzM*{h(hI9rk_VCe z+R9geer)Ggsuz)85C0&WUz%HGoPFf)Ic@n93Y=>z{ujCC_P;)!{4Mb>{QojOuV5~1 z8J{XZf8ta4@1x)3qBK8i{3;J$QJ&Xf^ih@O{{VlB;cto?RNf|)odXvPPJd|aBmZL# z3eh*ZIvpJ9aohe|{xjf@TrqfbmR&vR@1isAXEOLyeZ30L1*aON>CZa9=6pTppI57{ zos|EASAcJ&Yu)8P<~e%#lD?N5aP}?Ecd8DaX>HZc>CngQ9vb-AswYeo4D$QNh$;PM#0ezCK2TS3m!oZg!@bS(sSGLpUY3I)7~q~!xQJ} z=auDA_`CMw@E5aR2Ytom2VYxEte+zee#);qwqpJ_NuL{cT2MRpaX$d~gZ`5*y79Zb znA7CZ3I3V1&-jMY4U3<|@6*;f_46_MV}6A~+n(3+Zr-Vn$H70;)}MU1hVST~2B)#Q zgNO8sCis{4|HHZ6aB`OU^)2@~{t#6sR&CxRd?z^Jhh^&-@PoYl2KQ9$0M`Pg!yo1c z{*T&!^ppAp%cE15J^}t4|DpeE&gl~)!)|=J;kK{j=e<{6@etYK-}Lhx-%U{>bQ? zcClOaq>8U=xN}_ZfBD?XW$yzXwDQ{ z3-(-bpckSV`CoU=Z|vNxf4K|0<2mdc$YY~V-9Ih-D_B0fY5YeVoyD0A!*lXCSpEQ~ zH@|){Q#fyMFPJ~UYvkw0e+~KBBl{8b8b_;MPJt)LDd_WE*>7FGIPNzvx%bA!-d=Zp z2Yr7K{SNf$^%nMjrbpl(X5}t^I)0aW{kSl}e8IDyr@r!&_e@-{|3&Ct_|ui@|9#6p zfIl_gpncJW@TXYCF3RbD`bc zbK-FSRPd|H`g^9b(iiy7@@Kt@NiEwly*QT@{+}d2yUUZcSN{!hU2)X@kpAoR4f@S2 zm|ms(c>ZJ5e;eNa=|lQ2_#5s6f^Pqg=r-uT!VkqCI(p^))5aEbR9X(-|IpiS!uc%c z#K3oIu4wj7<&Rpk{b|wic0age=g{c6-~rz$KT7n0?r-S+zu9{m7(1`?&hO0oeZS`3 z8Gg)&BB`-s>`-jCmYslP47nV;3WkCiM?%w*EN3I;!zEM4K)MLPqR7@)vXEi6Ei4o+ zr~)ZW2f@-!cUwDELtz{5GG1e;pk6=?RM1!$2u;~yu(qY4EQ?$~;`H}_&Ux;=bM@so zPBv*Wfb{ac=RNOxKAzA2dCqh2PZbwi7twxZpB5Oy%5}qEA9s9}a|L@hsK)w4_n=+P zK83!>$7S?N-Yw(vs(aqbX}`%I);*(MPVym}jQ>Tx73SZJ?N)F^dymzp|8w}YvQKKs zIphfYu?K7R1AbZT-qkUS~p?aU!XFt2iouas8a<5F~_I>&< zyVc%1w{H8u=D3%|>`#-AHF=Ts{7%sqzgLPs!VWO|4E#X*<@EcG z)_H4Jv_}-*ys}sJtIZqwiv3UVIrHQ01s`~~<=<&`EZh5#|CB%XVrxhI9`YIcPV3X> zjqZtKGx=-r=zPz{ANt$dj{0j)=a@Zb`Ml9%_z$uDdt!NK??D^aYERU2zc2cy{d*EF z;`s31HuOw8(65HCIDT7Jv3(w2!TR&-vQJx*+dR*{f3VbmL2=gX4eV?7Co#YCtEcMb z@&WQgo~qdwKG?Qe&TudJK12D){z!Jo!s6+WXBu z-mxRTPy2`@Up&71WsM*9Q@eeO{oA+ipEsPC^U>1!+;x>RK0DI;I(OaL{B(Kye)l8H zeu97UCVqczzv%DjwR8?pVfH)yCx5lIYp3;teGK!rXyxtu_5GQny94U?YSud?il z@xAYhz&_%+v45KP;`6>Q0z2O2S2~|AuJ^D$VseOn*!xWWNIvU%aL>ZZkx%fe@JB2E z4DzjY+War~-wVzuk^gV=NBi^SfAo5q|2gCoSCbDHZizm7y{pFe-6S{2qi5}xep!Kk zXOrA0Q$PAiUKoEtzfEu1_&=V%3IB7BiR{}ihRcS}v>N7Q<_B273bsj^V|2g_MfJ{t$!PR*4etzpW>TEhbC`1C+UTBe(3fV^AFwEyQ6;3 z(s?RwzxjD8`QP~SL;qs&&pmHp|M__u*nhwAX7(TZcEBgG|Mpyke%L>h@Y1)k|5#6j zKHl2?%UQ?cZ>#->JRmQ)oj(mu`kzeNf9#j$@wc}Bh^w2j|IYG!%D;&J=k{MSvj0wt z4`O`ag#Fhv(LZ$i&*T&QCA-e>sdQ~|l|5$V@OP7Noxa(5*kN`}>)Vv?P`#3MpJXTM ze4^;zu9$piHR=6a^5 z_@wge2gZ)eSI~aUp=<_wiV2W$={*Xcl(fi)%LsNKwnJu<#x9l zliimmKiBj(2crEad^g#Dtz#z7 z@2-$rv|I7h(r?&*2V@^M3(FJsA9>Of-s$+}*zSw<-5zxOqLb`DxBK?89xeKd`0`=) zcSO4{o)7Zei}l_cl3f0>kQ(3UPQaFko`jaZ(%AlBH|IQPqBb>$d z_e0;TcmLyr%k7g~b$ig)f2Qq1w+EFUNcdZk_CL8@==Pw?r)j&ehEFBO%)WrWrtLzv z2W@&3^yZ>68)VMe?foj&rkND&Awm)*X<*stf4{m1;4iC*g>(y7i_ z9?>V`Q@79BJ^GLM_~D898hHVIez$+Y&X2D-uZeTBPv-Nr;e2_%%s7tEuVLNK@VhKu z<~_&PpclJ$`%(0x-~V?1WX(8?_fMi<$d85om;FZk-S=PV`?L8)UO#8}{t*91>j%bPTHl1viiGE*-|YK&!u{}%&2E8y>}u_UzPG1% zZtMc{D;@8*{b95(D@8wZ?3-M*{AY9Niu|ztv%h0T@=W>rg?nY(%ie;&O@GyP55A{* z;BpP?06MS5*WasZf%k(ivQO&*@jdKMaQxr&gP%u#S6X)+upT3MWBHpoe|0DO!X-E6 zvh%jje}`}m_(i<^-b3>$$1ZKz`q91km-w%g=lpK? zH6nxo)5iy zPtIFC;!Alh>L1>Z{ktozuP%=0%dhraJ7u2J>x+7`zLe9zix?PvVKvl87$`@T-= zxL#h}4P8KQds2P!`_GBag`n4P@dd)Si*nuiw`lt`S%=H)>)WOv2( z#k^O~zSwM!bjta7uL(aacE$N^Eykq+m|Q&5aGWo;J=T6AFi(Ofkc=S9~3Op!iJXpX$?o#+UeS z8^6Kc1=~kTJiFo7HogwS@t>i}yirBt6%`fBQ{sZ%7{d9l9 z@ng5g%5vRsWBjAkzK9=_f7!;nFC30>uY@zxPREb&@9ZA@_*}w|-z7avesPn}9j)J! zKga!qBAv%!{sH~ZQodl;uS_nw|6uwL|ADw!=rYXsIvY5z$s?B^E$ns4|1w>{yMyGc zm-9ZV&#%EJLGq)q>wBetZG5c0;%bY8ZzMf!<$S+xo%Q_%CWo{iRPsXjvhd+D>0R;? z8UIE6K{>ZXr<8Qui{NZu?XPu4GtKiqC&z0B~eZ>RVt&PB6(pLfO2%HKBo9{Sa}J)-*_eldT=?Eb4et&-toG;ugClORm7c|y*`dVT~7A(|J~3lKh{@uR5J)bu;BxCGRTYY2~_?`}NwNG5_k|t>RY)qVK`aWL(2c z_$cw}7RNZ+zce^ok}u*T{$0<1;`TfEjM?vVZoh{G=KB)|jDNA87f11{=YB_g%RVNf zCyQT(zR)o64fcD8_WS&l{l0C$`@wfJyAFP)p5JP}Z=YK*y|Qh9{ocCoq<_!t_Z_3} z|K@+K@9#AK&FuGRKihsy{NrusnK$hBR&Dfb^5HrB-&V9&-Hxxe!CyQF|6BfRx978M z@Q>__gyXt>*lkw@qQ$KcwTac z_-n4j$#GSjrOB6P;NNb1-(9oun&;B*fqr;GC!PaL_S60He1o| zUf?}?&iYUJF1vs4Nqc|y-jnSj$|LJP<(;%%*7VlxJA1Z?KN9}^m3zY7v{&-9zU%DF zQjhbextF~4_JOZidwZ=*)MNis>W{yFfqT`@_r&j(C3(0xhsNX&?`PfC|d?H`LaT0y__?f?l+(wR?{J$%G$NI1FN%OXwtNOWj?}UD$d{^(ZwWlLojdAsJ zO7;E~^-uAQ&`+avZ`$Q}wY^{X)9e*HkK^tj{V+%T*LmY7>?`AsyAu8#_QZMN{OYm( zN`Oo=2`w4m9y@!aSGQD&6-ItR69^cPiPV(xQzHQiFuK9^^9$Fs=cRtMi!0g?$MrkiI6ie--_iG3KR~~B6Mo-MaT~3K?|b~n?p;@GzI!PT(k^S~bHvwX7N1`3 zPV=`r&fjk7d)^=I2kiGWFRj$?y{SKDKYW4plXx!P?*7gww~1Hq_*1iwICs+QPd~@N z?eLcu_&(=fgO@X|I=>*=3678dgE+r4BfFP=3-|7jCr?-Q*Fk@WsT%F|iuD!QCA|g4 z6MWj^xATQdcJJ#9%BQdAHtc+>&xX$3@%ve_e+$k*qXKvW^Z%9I!O!FF36~|$yxY6@ z7yriSKg9Z;7p|Azu>CbRmA{bqjCLosHxKc>`F^zz{L=dO+0fo|F}9EKRlkr&b~XKh zeeV8VyM5N)OMEQ90gEgCR^@x32m0%I?!jSK_~DT4Z=<}-H9#Eo&QDoH+(lBB(4n2wdud0`X~#Z&_?T zw>Au-JQRMDF+c2=HNED3!d%*iHacHn0Nt}6&FyEueoOiLChY&|^A(Vv*SDVEv_Rar z_Mhqevu8GL_AlJ|Fy~K`%$W9TU(~YM@z5Lh;iHznl<_TCua<{;c$&X?5kA60N8%FfMV07&9QCWW4^rq|aJe)OsiGIhwB|opm1O8|;4!Vxx zqpk@*C>;NEJre#H(77kVxJS& z9_OE{9{rn7p)l$Vu^6#LtJ(K4kuEUDfnMnt$>QBj0WQeSdM0;(GIB z&tczbegpX@ZC-8t)8_fK-J5;J{<=;EJ@9*7EHDkkM<<-a@FU6BdfDiwOmQgCL8PA< z$=Ab8QLI~ia60P4XJ#kgd+3F9z76|ZjsG1-@jT^*p9x=Xt)8lj%LkmU+8yqRmwQ$C zE%sw6dIKM6+QcRBT)Vy^df5$s-C24T{nF^W`_?)|ibHKK+P&;s`4`eFieK>fQ;$<+ z|A?*Muzw4AsQA?wU&{IHtiLOMF4DK#Q+1Nh1@tWZ(CNFT-?}Gpbs;(C`wQNQzJFBm z>(5WWr`7+Nzq<6hoah(2Gx}vdxsK`gnB8xsU(Sbe`{1qU*X#q)?`f<5L(wnzjnl8& z&rZK-{jQm&Tc=mqUrXqRcB0oN(XZ31<=2G&oL*ymz&_5oj`aFX*`G&3H(X@=rw{)h+6?O)J@%?Gz9ELGW>%|KR>vDY*uY90GPESIcjV{WZd66J0nR{HXEQ zA69?=`RQjl%D=x>^z+AWv%Ud6BOl>UTmO@OcuV>rKlC*HIK5bW9`WPupSWCcd1Ct; zWS=H~r5^byr}-ZCpYR3fQ~FW&PDkiR)06L{AFur&_8;%}{9{f(eC+2!c;fo|>TBP& z_2J|XxA;5!Z;T`IK0R?A`BE~@NAps6{iQ{Xzwiz0GM>SVO8es$%KEb6aK0`1i~jKM z)r^$Bi$8DQvHVxEf3QpW;iJUmS)Pe1tlD!PKjU$CUcXgFIbrQ%e26bG`^(qi-M_*= zWq$UCBCOl{O5qHA-~8z%;ajvH`-$~PTaO?PfDs@+bzQH}p55rD*TL@!@O)cW^87?O z_Wh831Qx&eitPLFZ{xZo)IT1rw+aIR!F}pi_lyQV`8OPL5@CU;Wt6Ke^KU$=D zP`=Jjkq6G>cims1-PX_gSLvL)>2=n>={I9Vo(|q~=e>qs+WO!^eOl`|><_HNCcj($Z^keBS9{st!?i=M(|8_n#;}gOS!x!^GZ8#M1{dP6_vGOaie118WZ(sFtv!6r4C-WWP zPt1G1^R$;+e7WO``Qmykzw7)|`RVxnT^D2d>jHd8d^|qCJdL0Fuldn+9mrrC-$X|+ufx0asHF_L-~VOn4fkN$1Swa)4p?S zI_E;?@V+4WN4}TZS6e=MA}2mubmep){+gkDB@D?=e(JjX%c$SfPs#raw!fA2J;wF; z(Wqa;^F`9HhHn^s0M9Xh>*V1Y=Kt(K2~H;5}-x9QtFZ-yTs4_%z+Q0$a^{{s3e zKgRcl5A~weeD0os;SumVexm8;QuaIdH|5{{7T@2zWO$A1Z`ac=*YDb^`HS?x`iFg2eqMMr zt}k4BUFFViZZ||Z7@jx%4gTZf#TdWe_$=vf%M_m7lw(Xi>gNx%9B+ty3}H6ZKg? z;P{ABp+<@$5?NPl>LH4i=BlO_H$ z`3C=hhZ;YU7vpP_b};(O@@I%H#UJpG$vN?Z>`OvtCPThX-`aU0;2hpk8 zCptyG!2j3>rVo)Xl#5Q)KG7-o*z1~~j?W9_>Yull@!u)=p>Y-cs@t)FT9)&I%ypX|TJU;UpPfA6pQsqt4o*(rL$X@WfCP0`Wb> zBOcWAw*E$W4gPkH{Vki-+2J2#*YLB?{kY1}fA;-N^#10j{?&cw_1;f?>45A2U74TP zD5o1Bwos{jvv-x!|;H5qfuVGnG!qWPd+((|2Ks%Gd@+TZTEHEwsqiK^V@u9C;3HR z3lGV@8@^lPU*)Iy_dM&stNIQ96#EDIZR0}iD-Wrmk#o{R_T@um=c1L92aN9zh%ey# z=*PT_^dOv6zZ0ir{=U)wQ_N3(gYozk{GW5%HI8*l_mWSHFZ0Lv&BfmrBxiX}e=E=X z{MW7ZJDd3@4wl$y3=HyE_V3E`X5T@7xwY%b6AQ_1H+u(`_xJ;FCD@vMqdE1Pr6NB6 z#0kq^DSX!IpF0ux?1{q$*#~^$_^8jeoJpeQ^Q1k}LTWqJ6o__(l3IY(CkSfc+b?Rqz}2bA|KoV!8L* zuD6%ze=K+XpnAj3;;5dNkLuH|bJ>yXP3wc-6JKxTUa#EX{jc?B=8}C~mb6RuZ~AVT zpJ$qnuf3k|eg8dPmqzQb*Zx}LZ-4T3_*?bY6n}$p41Y6z_;-lEEsFnt2>cB_@k8Nn ze=50%-M$1N3xC^?er5f58h^X3-`@m(You?%-v+vZzb)$O_yqXdlJ3FZ_UQ`#cHd+< zxXdBlV_&Z5iv4qBvK)KqA>E_bkL!w^c1qU?{OyeH@l%GA{RjU@_}GnzZ~ZO)mh9j+ z;BSrS?QQTkqX*~%`ZD~@=)mXK?Oo=@=z#e%IAw;FSDlXdV8RpM34fbY{3QC{aW}`u&^0~b03Tc!lAmmh zUybm$gjX5<_Uz#?{?82H zw~BfC!AXUufmgZy1%FEUPvg1^lY2IRSCOAK;!{(&mE%?BpJ9JZ<5o1@{5b44%da(! zTSdI;PZqx^`+)QNrg1CBtD<~A942rp(_2*)@hV&21AlV=&~X^YtE`;%P2*OrgjZp| z3SS|(f4yyAysc_v8As&*bq$`?w$1r+xRS{S!C@_v8As?~uwT+QidMW$#b+f#X%TgL?}a%3XH*}2W+=Vnc$MM9@Xs`E<^6m;pug~6o2;h(7`Jk~%GPfwpT@16Kiq$Z ze;l_;dOG4&$k*=+KSl4Zs9o@B)YAzMa(uN`KKqD^7@d0ito)qen?|q9LztWguRnoX zH8u{D_$&1p7k)R~3c4KANvbdWmER4wSycH*zR13O9Ql%oehs%-viB#viv52!Kg@^q z&)dy-@|@-e`N90q?tS*&jVMPPuTp%G^7F#aX1BOpbUEnw;so9C9?jELlh>xd@Xx1l zE1Mtis@D^K9sO;?t!(@quk!H&x3ckPer){5{RjVM{OG@pKYU{2@BQ@gqrd!axRs5+ zx0m>_*Td8FKaIc3VZXA>WBNJDYu0@dZpDBYUghf_)3}x6Ro@Z+FhA3{Rhe)mi?2XG zOygFJhv60Y|E~!@n#Qdhud?yQewfCs9IuM&pWs_lxRv8ohJWz>Y1}Fc?e_^UG5m`5 zP2*Pm@R;FMqw*=-3jECQDzgtnpHsM%<5h-V5x+5wTRC3k>nGE=72{9-_Y2oqU$gUh zrg1CBt6mrVen$AsR@}<*D)N^aelm?)IbLP?->E;1TRC23@ssG!Y23>3DvJ+fe5Y|M z$E(Kp)K=Vz@w53K;ak|Flem@RRW|?dr{gz{TRC23_!RA*#;qK$vhfF>n#QdhuX;J< z-VaVwWE z?~Gp|f7pNT@ncnr`|>z4i%)0&nx6;6p#7@+8usCUzdWtUjcC z>_%UohyL;yPv-4}K9YXm{aW81?eC8MOA&3c1NK!Dab@C{8IHkj%RdDEj$OM# zdv>!g4_x`G(Vb`1>)PZ4xOj{VaOlTFT@jXi7O-jg!R|uC*?tLWquBy;}j!& zIqCgYvg6hNxc+?kRjnV;e`qZ1-obmcuD4J#j;up4ei7f|ci~!`Q-q#%Y+ZmV@rt>LvAkq;IhSt-95 zzlU(ea4_<#63=sd&GM5lJ{9p|D&J9Dvfrz_xpHsi&uM-yT0QdY#PaQ2DgTD-3(CoF zW4~|P#?`*FZqKLr55yFQC?KHte=BE zSI)a0w{JD|>qaamo=WB3zN)xtzmwO{es?^^+gDXrV!7h8ICqZxId;$c?R<_Nac}y) zsMh0i!f&{@{SnBYqPS?kSBm@Mcj(jBp-sMyhvYL65WdKM7N^HQT*F8ndOfX-HQH2x17Uc^g2mjS{EME*XgbESDcUiBTh{7 zOCB4$_xY<77ijbD^KjM5ef}zqyVbiD-=q2CemsB6Y5pQzRLZA8x!EVSKMuMQeJA>| zJnxhAJ4N?S?_>Lf@j-q~$I$LseuyW+VTFC{?c{D?-dqbcYG~N`&c{e zOZJ_^$v>+)F&?g4EZgtd>_M(a4w2vWj^gino!I`a#r6HYm+S7 zo_xvn)eV07r6P@w;sZ54O&!N8+GWStC%JCzeMRww>>u~Iymk|RZzX!S@u7d6*6No2 z5uX?9tAEN5V4KkUEF@K3sCZ<6;j#TSOIzJD&p&ojSmp4WPI zC%;I&M^9vGFLAnN-y^@G-A#OMK>lHetc37CgfTvg{T1yFr_WHt_s_}x_}byd@){8K6)w`0}XA^92O8^dp^J@r&O zeEpVjMV~)PUi~Zo*{}co9D7CVqxd=6_ZjT>k^PtA9P1e8Xz>I1Z?qqKjeP}Gv;*rp z#yMg?UKhUL`wQ~=7_S}2Ietg&qy5A$U)Fl3aOTN4N8#ful!LFEJy<9Es4CA|esj~` zHa^R|_sF5DxFqmC)0DXul>0< z>%ZbC^_=1;->(0Pr=0A+#Z{($ZTWuczv3(PUfJ*C@4vDCinG*nvhUxn|BAPq?7!kJ z{k`Mw%Rhr6AD>6Zw?)s2%fvsn=gLseNS-ABQT$`)iM#%25+9H8 z?XXw;-XGb)6ZkgsFTRR#i;=H)$J?#;#`PKcm*{_zug2pK zKAYxW@=W6>zIwawi?8&Y`04HDU;H#V|C4;R<@;ZY{5Q#0Mc z3N@5J*WBf@%QJ+1847*Jkxxp@y8|_+4uH+ z&N)cmN55cyDc*20E;Q1y?2F5BeDfIJhu&HV;JO|1z$>0c{-fd_yHzZ&J6FM9&Kw{g zo|RjCDE3+1j`5(%TOz(`-Vp!Uuzs;}oq4smPsS(3e`23wUu-IFk@!!K`xKs}cu(^$ zkq_YQ!~64b+~=m=L%gTs=bugSp6mAemkxkPY{k#3WsB=v_(F{9d;@-7$MQPGeZB!d zw|wWseRgDbeBxx2;yn#t!~SYg+^5#v757=^G2Zh9$U^;NgFoUf>~8g#7veto_ZIxT zCHpbVulYWnj^YrB_jLTc?neB)+g=Fgi2JPS(-!aP_-(&^#q8m3h5W)kZFjiG9(DY@ z+rMb`_H6pSu5Z=D>dWzbFxhYY8&+P|>$HRXr)izV@$-)CU;Xa!zg3L)9P>xQ&pR>h z^9}fUXF>9M6!%$oV!Wr}zs#@f4+drw_gPtco;)$a&u!d4e$w`tqB_X;1-n~*4?F)+ z@^=k&|sK6!tCSbpRr+SlSe9Y0t8 zRN?1MwV>;vI>meX_+xM3?cTn>W?n*A<$T>ZUe-V6-~7#qxKHn|mCJus|0nQsJ+F9A z(?8UY{JKKiCC?EzTGa>fPmW}x`s)9d`muZ(KX0YD&sOUg?->&R41Jpa6yMvb4l>Qh zM{%Zqv+(mjc{}{v;%fdH;pY|)Gl8EQzx)-z&n+(IhrrL#A7gy)2f)uQ4hH?^`1uk9 zFZ|rrx8DRmw{`6a{M^>59bW@KA4ngApWFIB`1z9Vy&Sxfb$7$h@6#0=^U!2D`1y+N z!QqbR3V#03s6685$8`^Weo9yH^E0|m;G4tA{{Jn0ehYa&iN88-dxL2{zBZWU`qv9T zf7|#~a9yKY)`8%Iup4~W=+)_O0zWspg&vJwtvurAMz_$v(JlD7(dz_#t!$;Qzj64v zjW6SDBF2(f@ib;k_FR!xzE>dq((hk#KRxiT7|m z!pw7z1jmDW3IEO7tM(r7OYrm0lK-0iY5ggSIJx7+hM!a4&ugE}V!gub&Ew>6#XrIR z35KViTWe;oM*CL&ay`ahv))D9w=~9IqrX3azZxDqjRUhk+3-=vgU2|q46P@wzuG5$ zlkYnoJdFdJeUJU*cPa>WQ4s3Rg_zr*U8_e@^&j#DjId#Uu_a z|AYF_PsA&yabVS-QG7tcgQsy|!+&_c+4tzf2^`q%e~XWEJa_^JHv8xM^?Ty{g)27x z6F9Jy-$?j?#Sh2tYv22D3l98N@xzV--=u#remEE&JdFcS#}7~7z+2*n z9S;WIwfJGjfjxfM@!)A3cq94ujt5WUz~csac--552-t_lw`9Am#->2N(YkJk6b9`sw`;^;r_q{{^ zDIeiG>i;1<@9*96eegxTPr1E!W%9W<=|AQ6+z~zZHvOl3OaC95eD9X;$Np1p?>#>G zob{jm-4p$%+@3q7=d?bf^#g?Y693!n{quQ%e{BCijDNOzXH?H|U|ZjLT=Efr8C(V& z*yz@AU|U}Te{?)}8V7#4zF_eE4cbe8qekKZ*V)*Ec3`P~#`V7vuWM7QXWK`uYm(-ojTtj&CymA&q~dah#t2 ziSJXsW&Q_~^Sb5xasDZ{`B|KN?oH^Qa(iw`&&BmO;bZ8HCF~aIb#PPgQpyegkLv?f zv{xr^U>isDm*JO=2SZ0@A3F|g`Qf+BKlX$0$@IN9ng4zIuH(Qq|IDxB!6QALaA1p{ zhX117LHu-@SI298{2dRbUpB8iXY=Xf@6S)*z&4+g__D^!pK~18=AZF*Jec>|y!vzY z{m+2^COjA%*yh#OFQ?r}zI)So{7uo*_51z(>vEMCz-SOaQ z9C+j(Bs_Q;2ln_6@Aotg?E1&?V8?&`>h&EDZdJG~6F9Kd$G&bQyx8kG4m=n4zkxp= zL++0E|2q!+Bia8?{E^2`b8ZB7yYlbHJnT2|uRhH9l6Mooj`Op$enuQL=TB@sKa2AK z(C=?JKg-U)dXo4S)g%4{T+HH6@SiOX0{c_zpS(ZD<0=kSaE4%u(g1lOA|U`SV#nb9w34IF8|YWi+3k{A+eqR2{J&SpHI$Y4X z9l7S2a{#%jzV?^Ozpm_liS{#()YpF7CC<}w|C9Y5)-JVQ^x^Ht{<^OC=q$Cr@bl9$ z`kDXAM|xVnqz~j^R<7IldjgZ}I1M!gn}*Gv!CM zJniI>&0DksdN%%Le2P}2YsWW2c9wF*zrWk!*E@;s+X1@gTymd3TmOUqJDo`XP1^U= z3YTnt!3WKLQr=F{70dGd+F*r-2e`)kYQ81Fl!_1i6Z zTn*nKzRCSgJ2yq^i0K?AJ70zQV}Gx;yOVH$+4OxoA32s=`}&<#aNWV$yzn5}=jF4r zvHjcnvAp5@;88jL2j}Bj{noZrp89L}jOdU4LGMSkjy?>FYkvK%;%6z>emRprA;$UY z{B!je{d#AK_Lb!gyDvExSihIhi>|hQM>+GhF&RJR`z`Jf{`M^6Th{U1l@Q;{VE ziv1{(E1BXr$cx+{4ubb-s zhU5$RC8Ip4?7DPP<&q=clKe#ey4=+Hq>?LDk`tWIqW3p(f7UM{zfwEthvdww%8yR} zr~BpdA5_7fKz_pQ(l{)#Ng3&}V3*INF5oe!dMGJG!W_wo1&Ul(-w z(khrI_|)VZ@^dzbo}XOnruwb)errGT-|jA(zV*BSeh#1X-wgcMOXo6~-La9+G~L?x z(b~uR`y2G@sbXe!HpZ3MIn&6S?~1>kWPHQH8U)1N` z-|Cac>Zxwi@1MmEI6{6i#{Y5Xt08WpcBcVRq$;T#*dtd%3?Kk>l{^pw-X4f=*iq%xshir{OYNMUJ!tdk{S{yVIT1*Y*Aq^tU(6&BgZ4**LO~-NrZNXGg!x zC;is%pJsfC^H29lK8Je#tm(ae|Av)YoD6#KW`8L82tE_r+wU(hF2~oj4@LU$JBoir zzWMwP5}mcD<`4aDTq zJ}s{@-?4p;(&yoM^Y4D`e(e8)Nv{vhZ*YD7a{t2f#Lsd*+g80E_ot@(#>l@a>2=xh z%5PjHdtCYf{k!PvQZ?n$>(bZK=Qr#B-13{4en+q4pO{}@&*l3lzaaWrWW6$6C^$bi z(Pbg~B-sbyzmtAv+_oC3GNtZuPPMr}cWB_5T3?Irv-P#xll&X~hr>xfhUdNATl@#)->BVb zpNXB{O8Z_=ejxHwxIf|kLsM%U6`vdNfu_xPAm8icN4S4+BjE$?SF}>SmOTePE&K=m z=qCT7N`6P3{0x(?l(!RIchWWRJ^2}<{J7{_wI{yE@Nu(`On%V*z`hne?|z8k*FJvW z6HOJ{5B~Pu@%W|qUXvf|Hs4GN>k}8Qx3YEQ@4iDL{LS)e{ud{+WalBDcwx%FD*nmT zKF;M9C3~9*1-+Svs>%3Ga0bf9 zINs);JO2Ux;THVvw8;<8XE4U^B(H_v(eF3K@1ngh#?NS`=_lk9`p5A=_p1ztasNyC z&yu|L{0PndV`Z56r$;TnJo&q{pP%=AwD$q#FzZv?E=b{ZClAo%5{M`>w zKU_a*{7HGF?<1U>bpyWOd_(0gz|Lm<U2Ii`!bC$Tg?bxdky{EwA$wlUu(Cn znBMAe{XF_Aoe!|sX20TM$@$#EnV}oqn|@pPjn~w^ihJp|TGwLfWWzO-`?SC1&gJLs zSrqPk0l&4bu3Ei@Yt*m*XjAgren+2H_WRPw3VkX+*XqmvRQ_PTTUWHNLO*kj?ZZBi zeyPakfWE4`r^R=?2d5~^5q~p``N!cG>^;uqJ!W~v`sq2--`7xrJ@+x{-?r}= z{UZOW&4*b+T|LVAcc%Z@C(n0IoczA>dqCgde>UEnlMKFqos>oWvy<|7(Y|~?HCf6gVO&g`u$u@{=YQ;t;jFhytlY&-irLZ?H6SHg&!=o5^hmY&+=DL zF8Y#uyo~oj06C<9s2zy!H*wkGTBoJ&Q#i z>8|9e`juUmqWuN^s(jM^%2Ru^zOq7jsrEy6RcgQNZ{ZQ(CwGR=A^+8H=q}Iy7uq$q zRumk^V)!ijgZZyjKmV1J{4e^huYTcw?{;lpC0k<|ezFDPw_)vxNYr=)2wf5)Zf4t85BpLm$(0@OX58qGTc78vz)|32L zI*xvN%L;U}%R^Q60Z+?G0e6XshPra7v6JKZk|Kln*JmBFf)t9`} z`@S#x)#@JiSh4lT>ZJ*znjlg9rPC8Z+i903g@YCzTzF7-`=$7 zzwNJHz|OgPpxS?$_dkvNf_|Pkyx8l|Uh5dUtf8? zhW zizo9^{BZo}x08LhPTqadeV(H}Z?6`4j+uoVH~a0Wv3<8G{`ge(zIAKgmtuZ+=C21; z^Zw_>XT$ve`iRb-mcL^0Gn`LJqpkeY{+;$|=Iiro-`4p&nt$ZUF#poYx`w}(&=2($ zT6}@^r?6#zOJ2oxyS-`Si~UxHv&Qeu=2_$OLE>}akD4Fn@1}|S>Z>O5^9y=E_KD`t z_`1=&a8BrcU7tq2W~Lt!KOfS(z~4U^&u<+*Wb*5k!|2D__?r9;)B~RZFAzV!p!^Zg zU#E4E-|-KcOOZYkKga!#jBn!0UiXUC*FG_t`k?LqkbPU-vU&~mhvZM_wwFb}4_kfY zuk*F>p}vDWR=MLtRkLb*+imOpoG+jF*yb1frtU_5wsULY#q*Zm3BH%^H@8}KCKd(r>l z_x#=g<@p@uk0HOlZ1U;Thtd3SRLe*N5d|6Jm8kDqaVpXPI0pTPfcekX2p3!mHjkxzACyx_M9 zJ||7eCy;-qOuvy&&-i`J=j?BW&%J%l@6K1w=PrMo-^Y9ozrp8LpZRrupXT#~YAYVLw z03XxjRF>i>SYLQS@(H`y{1)OI%s;c|KDn@{_@tR9A3?ULKldIg=$Gt6`8z}Nudx4r z3w$wKHC(UG*5R8^oOD0U$9HDN&ZFNQ=Z84AN&5);8Y9F``fZ};5YKOn|)MkeeyjYJJ~8PnjEOxTq#fT75%=7 zeJs8gpK5=_f~}8OIsB97SFB!#`a|-Dx9Vln?`EGcK8n9k{e1s2^`BnzJiul@VIL_z zNA^J>Ii3w4v^XKY558#jOVP$|;`g!@xs1jev+MJ_#)%4e4GJ!`ROXkNs~j!!viLt4llKK@jUXcq@SYWTH{T**+2AO z=kev)?{I$0S)RjwC{OErng_qX5anYVyHIvhP5HTe_;6jW+tux(x;&qLznHF>~tK@XVxiLesLkLAJD%6dcDD3 zaydE3WBci!?T_)_!+zu{xJ&y3lCRf~8vo({mdW3R2Y*&_ph|u&@dK~L{9YP=_%m$v zb8jyEw$3+NEGx-Jm6sqQXBeJd$j(p@8dsOe%0`^FNON_jMiV`{=u-@{3GbQA0B;0 z>jrZj*%6TY4DaW8>p%3{pNsZ+w(Yd~wWqE14Xzen`BnCJWb}9D>dCxwg<*Z*rL4pE z!vil_Iqz?`iEE*}ZtL|Ayj0B1V5fvVH|u3P-=WMu#4YD)Wpg}0o`yQ!e^c~H{UVRQ zXXVfH9OsW&`2hJJ`AczyVdnOMP^kU;z{j~~o(&&ke5=h{o1Y9nb#OuR$ofSoIbW=z z|1Ma3P?5*`yjN3?<+}H-a($X|==*{Dp?}r;82qbdA1R0*ooT}G=&gFCnt77=%d{?1 z&Z^$$Sw9B9|Ky*r{zra1=+kkhvV7U(uglY$$v-VOuTt;Kn&%hra?AgQ{@Rp3b>D}G zZyo-mHO&N+ePBb#l)A}6F)lt?MU}o z;zOH9f{yhDzw4{KM?$|tL{8Ja_lYT(Id=-42d+}?RtN3)@u1oOm@0xtxrsu)uYv@im zd$sLKSZWzQzgPZWT{GVBYaP_?pM5E-&f0hUd>QO{YZviD-xHtCFN)4Xf&F9hD@*)Z z&qw+WJ5THRJ>ctne{bmSwEBC9gNb~)E%NFAk;=n1efNQvx?S{#__V9)55WJ>|5MQK zd@z1RuJb#2S}dRZ$LOE)?+U-ezhQ}XiGSn$n1AE%f%U)0zbYT|Z;ZRRePBLQzxEwc zeDEay7UJL5PaX9B**X{eOaHHj+loJ=f81y9RlTRtKV0C`Ih}tD{bpI@*O&+Y<0t3C z^1H;JGyQA$|HS{ys@~_<=I5h+>~>kN#7;7N1NrX!*iC#opXkl}OXknZEq(~O!^?hJ zd@B5Oh4SqwUao9nzp`F!exl6}?+(%wzmy$k@j+F* zH~ar_;-}ENvd4GKNBW)Jya6AaviLpOADcV)o%P1SY|Z$dS-Y!yg(gZr2jttH&>uwo zJiqa*$%+0h-iLlhK5laUM>Ct`3VB0kWGBwvHJE8y#9J*hzRwb0v|rCZy_O+ARNn1g zGJDeGFa6K&qCLoq%^mcMc4T)QG&!R7gRh3XD}ExsW^dWXWj3SS@R?z>Z|1KWo>gx@ zXyY?G8%)kfeyz~Ib@D6AuISBUC*Wsg)iE2to5KI$-`+fS1NKB-Gj8a=a@&H9!}p2* z6aKz!+YK8J;$W~tA3L#){LaeP{BmG?$PZcCcz^vx^4gkwQ66o@3z&Z_{s>p?cb9vg z9z=O3`dRtRVdx{;BVmy2kik0NI|BZ_Wc&;Lm_0IWhj_W$BRdk^xgA2e*~uS% zPygW~@B!OD>GsI99rCL3b2C0}kGLJu%}<+r)B7dg=D3%9Lk>pyW>=GMsvov{&77WwA(h}$9C`;r65w-Cq2?UDZWt#-&rz9oBP&h3!7 zt@16KW4=tjB|D_6*Gs-#P<-O)| z{{{Rv#>ed0Giz>t!!r+8v>a_J*x5Q9iOe`pfbC;y2_4@vpXimzC&W z*&qBaInoEu5)R?~*Y9t&JCFxvZ$$o6`_Gv_;QW_O@!$5uf3wNXu=PS(;QZH3<1v@6 zZl^i_x!s|>wl=tN5_uDmz2_Z&vEt#&hab!H<{#sqnEa}?oemeO%j`?I zVsa5DkMI5LOR_&_UIAaO7K|Uqc1AFNz~Yx5$Nt+M`LXMEM)C*De#So!^QU=V*i+A| zA7M`~*%{;?*ZDvp>qUMHWSR|`+Xv|B#~!Sc9bxe$@P8-S4ZU8p8>;Q%1L2!P ziyzhp%Q+C-N619>ksl*_ItM?-b{W;k@hLnCBEv-;!lG4myX{%j_z?F z%762ruRX%z=Q4E9zQ~gHgRcax{IUN8{>8p1u?H8!eJ6wYeex4lEneZ9Y5%6<^^VUI z$7gsCYR}p~>-*voK93Oidy?Pa(=TZKbk5@%627<2IdQ}MpB?yVtG|Z)jBzs_*AVRm zTfYRq`fO+=+&xcm4g=)4`eFX-Gmiw@*G}9+o^Zn^#T);)-v4WRg01T*?xns+x98T{ z`*rp8(>+>W9V#xOm)1|~dX;j{M`wL><*T11{z2mwPIkCTK5BjKsbctk@rU+T6-Jk= z?@7PZ!~r+NV<|p&b;<14!rljN%>D%7DDx>^%J>WV?e_Q{_I0PwccE{t;PnqGegXL$ z`pvS*=K)vAx9GJ_+jm+YxX5>| zQ~wui{<@uITaRV`$ION1^4e^D!`i|7E&pXt?ZLk7b`IKewfx}hHtQes4}7zSeo=X+ zbH(cQkrxr)T#IP}o_;>%gqc`XjDE&7f7ABistol0_p{V}u5V-ZdcxN07+FYtcG zrzkI3yStUH?EhgsC4g^#FY#xEU-M*5e4U=de((0^C-Y_et@+8t&u32d()vgTJvc;u z-0Xioj&E^3jyrVxsp5AI#&H_eXZ;-51-fjSh|6|6r$^(X@v9|w6ra>SYxr!H@Yt8- zU&CL$g!gtkXKj8werZnQ^9=Ge;h_t*50v;h@KnWym*)GMu=`DMK&`gg?FZ2o=2b-SI5@wxr$yyj`*j~U;uD!wwVt9+VsIJHi0 zacHcsxc#d5p@w*XPFS$-SKZTGg+C3Aero70yyq7Vuuf+9a8)s$R!;xO&s=FeCi~oh zcKb?*SBoI!&v!b$z?lit9D5e>XM$tkaCv zx2;`YIxt?}M*dE$Z?^*UhyCaMVw~+e^YHJ?pQ686-y1^Db>OOX8p$8<2irdm|FNE8 z>ou)v>pG3~5Bh4QcpPt^uOGe&f5^W@R{n(KeP|^dz7_rDdB$J+JHxJ;XTGr3ML4RR zo&CCJeO&uH(f?WJs>!>ob3^-2kR!M3>h^aQE~Wm(IG#@vr=xio+uy$#?eCOVIBPL~ z6aMeqJJ{b%vVR8eV1JumF8h1#81LVA=+A0@_uta~KA7z9gUS9rIAwq99=V?J+?(0o z{nN?*rr+Q?)Al#<8&mf8%vSq*F52HsvcDaV|KaWL=m&q%{DXUT+i_K9e@8#K$lj;% zgTJHyTZV|gS5^EyPdL5%zoB@T=UG><^0A%m@}o@lHuka2yX@@EEcw6i=Yquze;oW^ zb&H*ieQxJVa$pbjn!@qD7>D*T+1F-&v!Pz^9ogRttOE+?w{q-n@=h!X@5^TO{m-)x zW~=?3Wm|FiY%|I)=P$=!oWC|D2f^c`e%1Sf;qsOB@66h4!s995)cR7M?BRaG<;#(O zjC>@%6#v|C_d2^|xO~<>X7~2~C#WxfIeYBEP1*5$w^t(%@P}=E4EbQ^JK_&#=%Ijr z+{>;aN5=kfuQ%l%zkxrSh|9kPf4YBcaU6VMF8RssA3J|;dk6lU_K$6SAAC9swc+u$ zt~%i-8~sRr7mPQ0Z!my9Cj4ab56M4VoZDP5{+afZef`Y+T$LnXoaC!HWolk9ip2I#!{_?b+JX${!J>d^$Y5h$5edG^Y zIsJEkxzf)QezNTk0>84nG4KcRZ4oC*e)5=qqhCDjCy)6z`peUP@(;wnj354#@!K^2 z&efMUwSMM&E44bwr|9=Pp}3#(lVbgD;?qvz(;L!HvOl|#Upt+xezMu0ly?%pI!@z! z>h$ArQ*-TQeIGwqc1nNI{D0;Le9-(yJJt^Sx1ILGS$wkeYx1A-bdII_(chDO0{-BB zvE>~w`3@g~Gk-Bq&ioC`UnK8yH`4K@uK2UxP<$Qj-+_H)enpZK?k~H1sdgm4895<* zy^nm*mHe*u{zCQ{_tg&M0(`&OrJuZ?_)p6Zk{8FK->mW)IWf0v{Y8IRefiC-=bymt zi|Y@`Uw%RO`Qw}qo}G_+D~AB-S3S6D?fq7=Z`*^@cJF?3yP+KW+U(cYppWD?lcx?l zO#A$}vi}Ej`_Gg==dY0ed@}ma?C*d+ru}E|6!X9SW91K_-2G?wtIKkM?%#Xp1M+Xa zBKfw;{qQ08ugm?%xPN-h#Ivq zza{_L{c88KMc*s*|KF8={Yu)u;QqDy)$UKbe>3u{lmG4hwA%lN=x_I{yY+eVtNUE# zPg5@cXwm)YCi&5Glxw}j@G<0%>dAiW&90lDjJ^m<;I%Hl+<)%Y(SLS-S@B6L_>Z&Q zgXTB)xyo;Lf7$XgFuqN733?j)%@uJpi}=ge|bEEb6=sz2M_H)UVvH#ql zABXVwH?+T!`kjLQ@Vw|${TOTU} z{;>Pa?k~UaH{3s-gTKOe4u>rH$9eLL>+G2M$s_+*^hrG959}Xzq1S{@tUP-UPV10- zNBGC!7ZiMyb#B8kZ2t!ImreQ2*{)?C)A~662l`w2vV_le_Um`z53m>HN1OkQeN=R= zn*UtLe&^OSXQ6T>4A!pS$8$Tc1knSKYLJ)vcLdtzZ5B z$bV*i`K|ot_cxbcn|U1nGTGzoJBWUCmi*_13%357=Ue^fe9C|JxGlHKH#5ffP5kHD z@V__u&%Ung{&O+qKNEKs5k|GAgencv_)TfEuFPyWdK=N^y) z>(oEE|NJbEA6Xmw&++~T^`CohhJRHF|C0Zl`uFGcpL^k|@#nPv-0S^d{&R0?omu;5 zEdDn6&F&XxMf8{P?>OHxV}I5{^c%BP?7-(8sf{6Z^kd2e5VBBAm7LV(fc6pM~>NXxAqWuzqd7=V|}Ne_1cR z93IDh8tu=B`@?GdO|8$~TzL1L2flVsOY50K_Ft69U;Um*4%_|-<_G`P_AL3i5+#F_+s<}`42iN-vEPZ`KL;)$Kda#{8Nin zdBgHbR_)W4|DdikkHPj=DE?Ucz2(=`)w-=8xgTWvJIGI<`O@>sYauyRa&7XZ(f$l8 zC;qmq*TV(&cPRcju79$>1NmQbuX>GL$z#hk@I349=D%rQ(-P~N6*yPSqe1&h`FHS# z?EBQdP8ydgwUhl(uM7VnU!2*Keb#s7M^)ATME~bvd?xf=meDV=ezT5PWsD#DJUl+7 zl`-$kOW)Q9KXHq+@fw9oPu^E3I!%I;Y! z_x%@DdCcz1@|MM)z)yxh8GZ!*+qC2Jb(!Rd`0c_UlV9q~hOd>)4Xa1qBg;?KDi4~x zvGt3m@P8XU|J;i)PaJt_JFz{i4__y~m%Zx?tbc86lojJYLwtUD!|<+@pEZMiUmoX8 zx(&J=@ksd}E9B=T9>(&s=GobD2w#wY*T&;@#i#r_{sHn%dC?+Wvwyo>xAT`?>671v z{H#@Zn*Osdu3ELbK4l954wbzxuXj-oL{pJr6zw$%KpKMD0G&EH!7JP_s2dXhg}x5yvpnR^EJ!^;2n*Gm3eCjRd&<51=a%bJ-j>{W6e@ggCk~{5i%>3SVJIWjMqvaQF zZz3&`FX#vK%0FH6_!iGE?DH|L2fh*a*RwtV-%37nH9f%kvG!4*-z`4U^})0ru>9ia zFV_dtdSIvOlV7P(yv@?}kzR0paI^kLmS0KwLi#{@L4K#!z~nRQcNO@R$xY%6B*z=})9E_Oe>0^QTp!r_h~%&Iq4YvdJK5*p^I`Fc_-{TR zwVhA#G1?i&U-P%Z{3GA7hgR3x_FeS6+JV0Rmh?07U+1|f?rF3RR;qm||D(zO*xtYC z@;}SZ+P>1jRrBZaU-9kQ|M(X!|MMHB2ebSyOa8;Z6ZzkYw>rO}ScX5b8@UGLc2OL( z@%V1NV(VLVam?%k*E_Dy44;NSu}7`k<088ot4jm+vwf$&a6|She@l|v({Yk7EL^tr zE034-ILWL$QU>Td?ayrj_tw6$v37;*Pi-7M|9qA;rcZOYK>E|y`@g98rpx4C%zy|L zw_T!Nd9V08oH|Z^fT-W=5bcAildjk=!}=H2=2V~YYpQ4u)OAf)ls_Qe+xd)7Jfd=* zKSf^KXdlG*9p#rD+WzT`yoJ9W7GBc%C3-GT=P-U#>qoqw^Y!e#oP&h<#Xi5zvORC_ z$3CmTC#_x;?F#a>-1%}o{Bc{KCjS@-j%dU1!8ZM~aq7hPZS*f!k`IQ@>$~avM&&n> zpN0Og^+gQ8J0A|`4iUFz?=8xUw$J&x)}LNM{($!niJ$d-D{-I9?TuIa7dA8YUzN1` z+Ix$cl`#CfA)HeFE!rFN|IA?DMcfFxjP(zTk0Rty^q}?kA^5Dnk2nv;;T&>&l`Hul zSzrD`qbDlaVU(Nw%lP>FnP+R)ik;tn z>bk{m^ZqKe*W1Ypc~8UsycO0jAT{cRjUU4fWgKR(58J$l_&SRpIQ~D6`)B(^$UjKF zh2f0tzXHEH%mG}JIC*RAt_Loc#)Yw__Pi%dL`ESi$2^W-~SN1n~5#v1k zGUs~KJQ;nLm${n#q_9_z-+BNUdt#`>@QJ-?y+cjzbYSJ_g( zKEK9(R_mwo?<#bD z=762A#r$?XFMjtbae-$JG~uk#;kOfiwcPF^36=N;dc`5s{`bokKiRGokN4I4Iu@t+ z)%!Nvms0%XWs5IoJ{W+N>uvCnbL1u1Y+W4QUtEjplg59|kE?uB@A=ffy6?Q+^QkW# z03WsdrR(kaE)d!u=c@nV0@(CCi@QkIXlRkrNfZnxmIu-o>poMZj25C1ja z*~z%STjSmVCz2n(UG$55>UN+@ns-akvc2J4j%D?iq-vukax zd&Bl8qF;m$;D0Vyd_}j%@5s5?xhsZ0xqNK3Zqdar9~z|ccIzVFv;8Ud{bsI)r^#>E z#QE=!${AnU*GlwJw{9>lzd|0UhVy_eKgp){2h@H2{>%J6WMP8w>n|7{Wbv`cx5#hg zSL?6eQQWJY_kw(~_2TUyCnycfiw>2iNv*VE@N@ zPn>95{c|U}9r_PmN`4&M-&50{;itZIvafj!A3sTdXwp3Arz{zN@P6j?Bk*ngt|4?1 z^I<7}F7_$%rPEsAeftizH@OxUh|i&abDLuYDcoSte?ugzWYCo^zv){8Ox&&oq4&f zFAyKoNS+TA_Z+_)uS@S3A9L*;@k8Y6g#Cv8Vg7Xf*0NoH@cg}JvCn?_4d-vcU*Idm zPbFNko%WezwvYQ>^7}LX$S?l>vGi|dxYO!lCtK$y%KOka_2-yR{)&3;lIZs2c>f{v z1Aj&Oy}eO%(3|Kn<(H5?GybQX^;)X$13zBIE(kM4XW8rz({Fq~v-gviV{W-8JT@oDy|+vKkS(swQjWh!e#Kbc zE3TT}t=Ok2J*)Q(I!m#f_BV6uloPk1_hk1T(EFc2UwMA2ZkP8Gx7N%?y`}dpk>3~p z&c44>c|Fj#v-uTp++Axu#b2Rsr5~lAcJ8cAuaQ5gg2WD#X@0DId>?$?^qR^C+0p@? zXB-E+Eq;RW!>(SE{ZY@Yqj&cm%95R8{w?yOr+x8!ulWDid-wRbs&a39?aR!bTjr9< zWG2^{B$K2qA_Xi=ZtuH7&GF(E_C{vbpqIls*MbAM!`YOsf zR1a#=YEe-uqD4h51*s_3RxYh_$?y9-YwdQ(tSJ7@`+I-yA7_8s?Ad#-?|RntSkdcXxl}VOpQOD;>4NGXE`fe)|_6I+PUqczk@8 z)0t{?Fbq71{oA{r6Zfa1zNo}E+s^ZoU)+1h-yp-GeLqL-6YD~`d=tLjN&468u3HEL6l3`ewk^e_!m}E-fi$d^cnKs^cbbDllPA-tRy;@qJDOcW-<;P0AZv3 z@cK09O^i==?&0rUo$@>H582x;I!&Al3jHRVIVvW?$L3~CDjzw2L+fL@x{ktzcx-M< z;vV4Fjb^jbA6z}jN4v&Ewr2$VWans4mwexpyp_Y{sC^>+T|LBic8<2BB)%ynze9dL zO8C|m!mk@`F-N%mx|%SL5uUh!%6Ay$*W^udd1X2OGb*hn{J5h&QNE;~i0)>YpXSb^ zoWJ&VhggRF7^M&MPi<}T8R_P7X>VWpt?SU9v3>{gonQ2{jqo$Z5H6>-PMRm7{bw|P zk`~!^nXhg)pFQ&V2+nu1v3@BHd57wy!#Bcrh*KQTk>rk-e5jxHW{30F+1AVVOzI$) z5A07bVE)9{uF5BqS!zziCNAho$#AG&w7+?xGcD7dHW5GSrM(OID3uTTH{#EjBV2!7 zov1(i*xb$z8J^k?oxknYe~+ra7Q2_*nd@H@>xa3#pttk;4poot{vr71;_~PCL&xTJ z^vLqz_6`2hnWT2LZnV|g%k8!&HO~1&`SJRwZWUiw&r&YePL)5%SCg{+P<-n~JA5+T zU7cl9)XVx8*q_>IZsT^5ZIbD1^7e9im_GPJHk;)7>%ci_)Gp-t2s6NcQ2*p#SjFqM zTerPR`JVj`@1pk5$l4f{Q~ue z{X|?(vVEa_s_7jJ)9PLb_ouD4SO#KV}Bke7#dPBJ*e_nGBw=#)$?#nrh(A7YL5I0V@t0lf zU#LmdYfp=;|E8vKu1{`14}*UqN1EyTLF)hb?v7t>zx6lYity_oe`a1X@!g-2&#*(w`XxIT`a9Dn z{^OVF_P5IR*=o!B;_(~b-Tv3zjdBMcg@5h)sJ#)M)^E1J!w>@5tsF1>6xs6G?SD<( zGXE_tz?;YBHmP#p_67dr@kqLEJ$I`5=kb}^S6Zb@(Ls5Uy+H0S#QN@Ja)j&M?Ux16B~x4Y zxw%>55~{z%sQ!??=AJt_UgU%0ZEG7xJcKu2GVgCa-hS-l2-@w$1<9VJOo#f9*nPY3 zrj~O2ZK-{Hr*)JQu-`mO>nmZuu{#hy*0;;^dvU%~8`6Vkcm1I4rTT*WZ6B3);d=|s z2eN)}jq5-5*kRH;SpJDPJRj(uzX*AkaTfRw+39HhisFm8=kr+7ekbkoZ(0sz58n?T zeq7lP<#{E`Mj=Nsp3flxK1b){fd6>a`BG927LUP?BJw#C?Qh2m)(s?okFfpHUx)Wmf2QR3I27)HyQPdagc`>p-V5LSw<39F-$n$5& zf1T$j<9+qpI350mGC%YB4bb;Ez34yt&bE|ZROghjKRMY<{Ga=uSL#oWo#cLH`tW?+ zF1bDfc$>~!M7tzE8572Riy&{XzQyY|KtF6Br22$ke~G90Svfvk&-t$p(|7pq2#-*> z3jB1d^npIwpY3rn6u!RxAj@g-XmVoWZHG~QyV(B|`wt}jisX2NbH_REpO6n4V4tG$ zhaU98FYq_^pAP>lobE)YV@?DnF5vVa9#{VF?UeDg%py4e<9E{t zrzb|`kM`F&YYV?mXDD6EMl%?PDZNs@od@|$<{S1UE~jMYHcmgcfAkNcH-Y>oTMil% z!HEl6GBP~NH&|cNL-~e0nxSy8@Ab?YXL>CEq5ZO6iu`t}^sygCq~mGKZ;<~TS8wa> zLA^k3NG7&$I)P{TI@2iWC7}OKK>p|FbPe zCnNQ+52){1RZrYLQGdPoelzN~$sXZ;-_S*LmPz{w{13F)Bi#SHRR46-N$r>Hzmwf% zllpsSr%XqeqQmV6^gFviALZ}j-TuP#zXUw=4#IbN9rWu54^76YeuzIH{V4x#H(zm? zuMQjKjDE!R2mh{advoilr}tJaCy8$tJ=uE<(rdCAnZArY!u&}2kB5Fj;o+Y#LG60k zXtrCH7weZOA2;5nF6S^50lP=Fm*eukD$nk&qpT?qR;1ZAE>e{d}3q@0qlKzQcT{O;`WmPwj2UFZ7-^dxZI-+n?Be{0_8_CI{(T zH`+eyAks(rL(-&viu{!*eH|V29el^w<#ja*^OV#|BKEP z%0=>5=KGypy$4ADBK}VLt6TnE?XrAePvZDlzr*}vB)iX$b{W~PQk}9Mz#qB%$R0=O z2LGPK0BX0kQ9R4ozDfFBdv}@Xbv4WSZEKcz$iIJteaGjv>o)H`jwhWOHzp$Rr%U6* z?l#fv?dAGw?2`4`=pE;9tUscBTA*K3eRZ_Uc-z}$I*#-reTYAqq zxbf5eInm%nyQlWiyoc+(ne}Dj@1)YPoAsGd_=z&fKKcZmkA?o#i1bqa>nI(;>n{k_-NWhO^`Cd6 z{RrQsy7ixJX#c#vQ?2VTO^I{$JYL@k|3r?*LP0U>x9zh*gk^!8L9V( z#~_Guy4>?UjwI#!SDX)r^v}fkgd=jDO0|A>3)=5A`rYI|Sl_w-|FZcb_zgrm#Qci_x-czktdQIvFG=Bv71pGZH_ZQe$_se=^KLltg6zTy{0aEC zW1hyv$AU@Ln?m-jtQV5LLGw(+ABcZ)eAdj8N2SYe^&<5tI{$>@kHJ4K`4w}VJtE`m z8ioGH`U1;Gz?a>?`nS62Y-%g-H6nG z>aAYZw>W*MAImCZU0t%dzFz7%p*oC5pyST})Ya`{`e8r4pILGF0NZcTzkA@%i1eG@ zuuPXt{t57W7mZKg?+rcpj`1Axo(8RtNcJE-cm{vt@y&yLQ+`sW)I;Ptayq{oc-VKL zm$2UAwy&6t_JDErE~UT3ZQ${oFr^%mHKm?|?~G5gUh~kQE^~y(uQqcV%R4T0L__95YpuZ;~7*V`z=q5VD~*9UIla%oibQ)CZ>{J{D#wU2r{gD&Z3R8HNb zzkxo<_a@elxq3@WWGq6hI)`g&EmY$eAuvit%4 zOv#&BYWK)j){FF_9l7%xo(4XUf&8j)Jv5jj(0B2j&iBClUT4oiE*}s0C*jgrJVU<8 z5&uE`w3~Z4d?)EenE&X`-f2ug|DgJz`4v}hYW84Uhn&+w{22Wg^WWTm)00P0-pfXN zNbg5Ix236_O8vs5`584I(cO-Er*>xUVLbPLw0~RqA3{1R${tV; zK1uOsVvt8!J|+9?Jkgqz^_|4NNXoY-F8hN!f8Kh$U&``{bjbcl_OA)#Ki;AGR}A$7 zzvJ}@S)Qzaf_}nW%JKF@Wcj=O)a75z4ZxvX8oVe+ly5w~bU(?rkRM;5^=&wJgzL-G zA^Wvk548TrK>O;5%XSs%micqboBao&e7az_;C9`356?T+$6fv~%=1eb)o5o7jqjZ5!as8%Y-=O#oJ8KS6`-nGgGbVhHccH(K{MORER8T#0`+$AN zL+>HaB@zgS_R)|$$nqeUFUlYKF4upY+7*{yFUzri>7C&58-ByN-r{X#4i};H`N=;h z=4X+|G!Lr z%uFvo{NMm zOY)u_ka8sIndM0LyC)*$KW}6lav9dAB0R}+{QVu^FIb;V=RyTlyjJEQ5rlnG()X+Q zqs~%Z_ftim?Z+Nl(yvo@Gehl#;9NG|eXJ*$!r`8(sW?kKG2Q#{+f zEMIc`G4Bm^^Eg-^rI8<=Pl3=)cPZ@lLS7BbLM0`EI*)r9Hn3S zac;*1?EcYU68iu+eLR1IbAwpEjj4G6ljn=n{4nCLqwv^Q06RXfZwm4{p@n20;PUfK zZsT$+xioad=m5ZHgU4GG@sA zv1I=X?t{I2c(k4E(hDn1N%@`i7u3HizopaiJ=XtNWJlxnc@wQ47(tkYmCi}JlO0~h zhw<|{nty`bz$6TLz+eM4ar|5 zUjd(zc-QXQsn#p8d<^@gE0?);(Z=jJk8{*MOtjDTMv8CUXd~?7bVvEnetN_&j*@@M zMv@yLueB>V$c+#EL)y<1GJid)e0y5QIscq~$iJ=Tom{SvV-f$1QP;lD=R2T%%K4e$ zQLIBiS{GKjld`;7{=xbmmtL0atVkc)i+pAI%Xvip8PMf{SWD*@{f&n&mz8qc^gbi|~7P4cx(^NN^%Ymog4?c^DHX8SqSztZ>Idg)f}m-{E$ zUrUFq*ET+96n5rTS&kSV(7sr{V}9taA8Bbp{-GblsD6NNo^_`zHNfX5A6f%1G!#Osck6h85Or5GJoOzBijS!J(v%n|0BM2qlc5bywv}i zx)49)(#~1PKkCnIA9vCEX0$J?`$T))duS4N8tPYWJ;?oMW1^!`_MdLI9q~HGb)%=M z`Nb|(Ug<{J{<`fEE^p@FSl^db`R+-peA**i{)frFkMwnLyz55Os$F)aWPZ7S7F$J% z?dnKh1GSUWMqNII_3tm>{3n!&%s;O?M83f<4bn52f8UM%rRHDVa4x?_`7!@CmLmY=l1i!JW;3Cztzn``JjHgyT_T{V`}_% z`FVRg^l!AwF3itjfW`PAV1JVJGl6lZo7ZKGJm^t&g22 zvTP4S{i%7SY_^y6d^!Jw^>u3grL|S&zmx4vr2m7z5r3t5d9=I6MwvgiKjM5gZXdBm zncl`$*)CdDd&<%JUEmvMjdQzp`E)F{hx`AzRDPI$jLky)C>PoPPaADZNjfM$mM`7- zpr>)U_5ycKxzA9yRvL0)gwcl1A3E_d}V)0E%2{oDro;UwA(XDfm>Psbp2_w{t5e{q=$KnZmI{IBi4P8 z!?S#k_T%bfF&Yo?h1Hu)dDz#OfVB zCk5$e{mQA^BX;n-Mw$1Sc%cuI9?a{fQNFIe=gwnI4t$PP>AX;V@H*~CfA?0WBzFmr^ln#eKpv7 zAivT4#Be)}-#Fio=PiOt{tg6sss3C4ll3>6ACP*N+kWayDaYabZtwQ15{Xm{C zzLe?5Sie{|>dqH{|04g8uax}Rs_e||u{+Uz*YWu$HqsZ1NdDiV)*-~`JT&lW*#G}P z^qa#nKW@4su;WlaI6+_P8|hRp#|!@)_)h2Fp!^?b6YW@6Mtr-)o!{`@!|@;C{l_Qx ze~jlPh3$?bhkGHvqJ6bBmpNWHT^$Y7j%a>inAcyY>twlhdXI9vSZ~4O#F3E<%Qumh zrHscs1nAb&()m!b5vb;x|W<&6BlWMlkq4@!ESBzIt+YNSJ!e~$Ve z^-q;wtUKWN)7Y;}^3OBW{t$nx&0+dcvcKbfln>*w=CgVNsZ${Q!-|kWKGRb5w z*IP0vqnX2xO!7hQs&pKpNM%7@(=9`xs~(j=KoR5j}0UJ zm`^lmzf>kE%hgT4oBxcOpJ;8plkvStSw1wsCb0ew^EYzdNv*4CSM|aA!NY00#a$n# z`Zd}!$HV1E``gk7d3_buzw$b%Eao?5{iFPEfqbp>l}?)fLB6B3UK;HT<$HkUuj6s# zi{7h#gZfwBcO0bkcZtNEJns=xd^XXt&7gIjM;r_OG1_pxz(Ib_1|?ni4>xF@1^NN^ z-?|9igC9mBNGHk1lOt$n@ZU}In<#&r`)ts>6!QtJ6N{PK0yN&mX?#WhG$}rspUG1D zhMY?FM8XsQ+kN|S`8=%FAJKV#M2Gcj;CWpR!bgv z_lMt2@{#X7)pD=XE#=+g>vw#v+$(Xeyz9!hQ{~=&w0_5XeEm-5rD5=AR~~ftWteI| z#_!U@?4NDwz6^Ii#-IP2{@MQV{0rJI_^*5Zpr!UN1*yLXX`3HZe^Jz$a zbJx!V$qpjwX?*4OL;fpxU5Bq%>@ap=pRmJn))Dewg7zVTM-hG|)}6?^WhL33&hj7h zPg~qGOzDl1T^({=2y(8pkE8ve{mAnbW>#Vj(gnH96O!@VrRH}rzlV9>y@x{PJwm)| z*QiU+Jzv=NkMMrwI?KWStNUpG0o!x#GLU}Ackz&865gGE2-`9pkl)@w^dlZg7w4GO z(K?ZUcN?eAU7z9$)4FZ!JN9qk_nvSsKTG~W`{QMLaZV7w_mcmLckY7yZ5R9Bal+&L zzEQ1@ft?!jsrOO;g8X%2|6(ADbb+tk|nJUCTw3P<&W&s!v`q-fazEh*q2KCYKTun>mA-N zChZqE->;L>1Hb9PeZ0>s*tyij|AFiep*YgxJvP_rr1IH08VE=`1>(p2G0)Gk{VvdR zCw~vu$?qSa@n>PXsH62iz=h!Vi2bbe98~cu|ES(x)*nJWd-y&1`5^wp?f?GU;eX;D zex`On?;Wlud`J7n{$3O98~RbQ+2^}chO_taoyRA%UwJ;vBZnO4p!`nz+_4`E>1Y1y zo*&_uPKw?KX+03`lUQ~nCWyZ{z@6Ba+Cpf8e&e|RvC!%uF!q0D^1m0!F`89o5Lk@}(CNa{>RN157xO0Am@*+~uu{lu7fH~52@LHg%m z{B#ihp+kv;EQfe<3zr}C)0e1z8?kPQ%H4DLAoXJd=kG#ZxDV|cc*sxnD*lA}?&^EY ze}SKb-oMlT*z(EbHlyNsbh#}uh-OCR$=;Q0AG3TsL_)7odRk0=KSJ?S{o8{1jwdMJ zPbPb@59a`_&wfFC8u3S$8aw@u<9xVb<`1!$4A0+zcjZFIFY(dvasI^gZD{=nWC!bH zI_jZ+Pk46F{3(AA#17-@vAG^chKn(Or1giKKHFy>h6ge5AHrdMJkC#Me#iD*^l!^| zjN=c$`5Ms?UbKJkIkXRsKNwuX=?-}B#OIx(SZ_Ibvyb=h@c88OOC0e>`W~#4&&(e& ze#e!4HR>FNUm>J};)nc(_@AKq_mDjS`KjY^W#=g6Phfw@xzv94wu!LPOXN6+eU7v6 z9dsbS{)PD~t!qL4LbLWTeXMhuj9{Pf`;mW=4;p6ma(MS#$$+4IFn@f>M*oE0aej8s z&#@!Da(;b;{Tsml3YFXS7x)8v;Gf|73*vQU>|?tAf&)rF@I=5r;r|2cX!$+Hf0#)g zq5WaZAN}?SKeJr|?_vLWMf~wOioZ(!ao6pFA+Wr|{15h7cl~W#@jskb!2N;wKiYpF zzLfc%SKWQM6TjpBLG9Oc21x!e@t*jcg}d;u{KNJs55J$i+zY*u{D9WmWt11~-yP=m zZ&|&(-_%t0rAR%MH}4PS@7PZ&*9DXP2K>t#cX)j<^GDEkg+0`5N_ShUBx$*CJ8LhYl0}ME`a|im#}7?TF$J zu6#lJNr~S$#K&m=F+DSXkn&d~g7@gp4%t=F@2xsXFDLoiar+JS)G%K&;nE)grT-M9 zzs{ELv8aOIhe8?VXOEKnLg^3pO8H6gzq+~s{!aay>~nRt%NL10_F>Ta9i)Tm-&}^S zA1-?){K;n9dz8Op{zrZ9;PMG8|0GU8@?GqAR{R&`2mTu+{)O~neLKI0KQVr0`3mKS z^91k=xtGRG(3R(h&!}8M?F;y@_aMKA9gxFey&~$7@_tWTNebM;SK@!f#E zl*^g;JNbvgHGmF(z|VYfMg=R8qj-n$_YUdb5A!0l|H2HE_Zs4GN%)XX@C!b_;~A8X z=;dbzK~W#`NX?$J{txd;13_J!#XRTKT&r+ zUjXtWoexL+p7uEqe-HD0_VT~b{&kEGjPuT1?gaNRe~15f_UFjucMJG4?7A7uKhQcj z$fb)yY~Q5$lU>}uUH;Ad3v#OyDzkjb;}`ZPV_pw7cKG%4?BR4{pNjW5|04R{VSWyI zZ{WKt5ApuEThcc8D)$TNpLj+ktopy}-_PUmv3?aMISKMbD3lW0%`EwMg#8ixJrosD zCyR2WavFZjI6)BFVV z|JwYIpqv)6|GU4RfAFu}u6~Dd4WfM*;#~Oe<@Uz&<49kfP3?Oj&Nu00KM{3xd%&NB z?arTLUlHlGwzm%9kWL%=@7v5{r?P)mE`K>LImhS8Ww_^feF@IrHK{%yJmgV!3hblf z@fZDv?X$t)Hl~k#g8V+I^u@cV{&su8KM^0wBY^Rh(itT=7SAqT`aN7&iP_Rl(x~)_ zuP`3=c^mQ=!Y7lr5*~h7difdn*VFvDUxkO<#P2Pi%+C=uetMOCh|cMofL+9=!XN2H z`GUWA)U&PZD4~#?pTPLV4g6YRVAK|dRCQs$R zunniO5Z#@y|1RbC@mUxTc>H7gim$$Y3%`%dI?Cbfx?Udd-w*wf^aG#L59GRnb)%lT zGW=j9n-5@qYXRv;G+tr+^O_Vd*4Nv3rtxQFKJh=(F)3brS8_h@x5KkL{y6qF4sY6f z`0m<6;9vKjIzQG@^VE@Q`zQLZ>t9AF`5FGd+21nB&nD*AF>lKKi^eA&AJm=YYuF!| zuR(5g@Setr0DWisC+Y{~V=8`wb;dk?P&{M@!TBW2f4ue<9ycsg+F8gC=?=)-(tZxS z(hFQWsi5`>dG-LcU#ee~ZcE9>uKdsQ(`aAV-@x-Nd=3)!{Y8`=^iit+hr#ldzT*|W z%s)g}%E!IqM>`3YM8 zhV!AkCh`NmXju}6{>tt5AnG@R`XT!rwO7~;d7O+WIg{%bz6KEK}*n7@U5pym~WqRi=V=ZUcYkK|XMU&whccmCKBa(?Umpzp)}@_KjP zNQ^U`karL6G`~sm>)3Jm)t%oI0ojjpz}uVKgezBveFuSqebl=};*aeWK=d&`&->eGfA2kbhTKc~qYwMHUH;KKEcr(R^g6tE z<>C4itPqikHPm7{&T_q>HGugKXg72>VeLK zIDY;C=7S(_YW(Lye#H31IP@2E3ixl{en5zWCB0>WI5TKFivI_!m~#KLYr( z*G}S$s<)rzg`DBDt~<+zb}%8fkG6rnv7}XaF)xF(Ex|rre4jYi!~BQ+>%V~W*U<9I z_zu7O_)h-yNnV;@|7yFq{d;UY!@s^`EyXx`-35H!BEHM>m*zqKgLsQ`qlOWaVE_Lk zyk3R2V*(_xtrxk zk1fAr{*%w=a^P2e0{+&69{Jq~?qfge82?{n{wid8e5hAiN8?w1*4h4m@dN2+zuSJy zZ<3#NoWIR?_J5A@fj@Qjw+{c@sN>-Se#A$9*7-a5+obQ-iF>X6u%F+6bu9SK@%(V$ z3FSXd#`nVkif1A>jD2PTu7`#Xp#G)*b)pA($C;YD~f9!tcf89UD|GHyK|LZ#5LhPxxQA ztZk^C6aLrbeCx!LfQ5ZT@W1ZyyxjkK5beu{^OPMA`Z@fs(|One?T7t;)A;S|L&the zS3k2X(07ncza0O(7L_OM@0noxg~V;Yz{B_(E|C1U%Ktk09s6IW^E2Ro9r;0$PWWF( z{E-R!g#UG#uO&Iv^}p`5lJs2hDF5rIAIQrm{I9d#0RQW9Un%qt&j`!QQ~jsA`R2RE z|GMo({rw&P>$Y#HxWQUzPK#IHB_9}m4E&$ZpTb6U_P=i1OOcOS|Lb&K&Howy>;E5& zA87yXx&vgcfyNJ0V7$04wTR_6S|6(B%UKT3Jah=>u<-cusPjp-uXwET6&rtQwcFO6 zox7j0+C6ArH<%OWy7m=WZtF(3VVth$@7Nx};|Js;_ygzjaNr;1Q}4Fyb_e4i zjUUJLBd3?keH+FX!qa&#bWY6y+8>VjN6b%6%oEGVzX^vUe!k0`C_F*(5&9?Dg?%{J z*T%TwGmqiCKHxE4u>Az`ooN#eddJ~|-@o{0mfooAOuuFU zJldad{r^}mmw)b}@7Vvq^Sjiqy(26iInGj!?|{?6_FLF4ke+p;!t4A~?Gy6T|0elY z-~QnLfY+~>s{PsA?^25}aQmIk2N5Vhw{{QK} z|I>f}kM&>dFZw6@?`hjlpZn1dUG%G6zb-!elcl{c%uFme=d!o|^$v8d|JDWJfhPi| zMl!5k+`sDOUnqR_MNWcgB5~^FyGXtn|G~?@OvT6X*?f5re%f%d47mf|-RYt*t#}1t zg|C#lL)xQjgS?&i8(k>zpQrh6T(s$hE-0lhyZ%Ey)!^@ay~Ja}i!Z|e7yeJhe^w^G z2ETi0E&g5&{&X2(4gP^;68{WSm+Aky2A`K1tHJNOpcelP4Zg$61ZwbiUnud9SJD5b z1|KE%t||YIz%x2s)%aa_o?3p;h3KlGf6ZuZ`tQ@=56K2mgWs^C7XK{`{@1h`LqmV{ z8*1_2*5Dt&>S-N**;p-pw+8=T)PXeg7p;`|>hk-J2EPRp{W|=>s#^SaHTVLZvZSHk zaFN76!k=aP+k@Xz>+jFg;16r?_iOO~F8gOq{XKATZTi2b!G8?W7_J)pmsZ!}zpugH z7}eu%SyPKARyH;NTVXB2RYQO4+FJYr8vHoC5$W)w;}T!p|9_~#cM${C&|k8y7XKp+ z{^2dKdhtgog2Qw@FwrrdDV;GfdqAJX7opCNcH{xg@>(*GF( zPEG$iy7c(fm(}8buEBq~M~}~3UW?zS!B=2q#8s33M>P0{HTaz;>G2=gP)q+88vG-$ zhT^KBfBqG<_+M)9WPR1)qZ@1SztZ3*ihBG58a(mRsr82yFm%`!b^kx0 z!LL0-kH1ZWe@uhFc0`Z2x7N~sT!a7cS$h0>4gPl;{Qo*zkAFyme?o&_{~A4h?we)$ zKP}~3=D!Cu_*b8!$M3&d;;*T~|6YS{U988CUMumo#ow9!lN$UZ)8JQLC-HYz(f@-6 z|Gp)9`VH@p_^pyW)BmFe?>|?Mze(YLFQZ}nQyTnNr@?Q2mjvEaMgLD4{A*vUr!Tgt z^jFb8q``~x^!TkeNMLpP|E$6Pej5DBch}NCtigZ(d_Db#-&2b}qQUQYogTmBy%JA4 zBV8mv{00A~^4~SDr?0jAcm4Y$FjR$qT7yq4)#JC`EP;<#;h)jqe=!Yy^!*Y@eTFVd z|Fif%HT|DiMqg{wzu*HBPh&1!gvT1O8vKj!J;AJyQ`xKNL`Z>hx})8G@! z_4ubW_`hoKznljD(1#>_*}P=_|E9rTJF2HY7d7}dzClla^{ut(e@TNk#`O4|3SX4baQm6m;NL$D{;7{hV0HSjo}#AxWmoFy zPkdD3Z{W`||Aq$t#cA-qk4bzr|28%FWviy4ukh9MEe-ywzy~$`$M*Cya-+%_L!+%8KhpX_!f2ZR6!9R8Qhc$TOzfpHXg`a1k&j-LM3Pu0@jrJ?`HY4F!5d^LR?egzt&uKa)h>00{tY3OgC2LF`8SJT(w z7oqd$=r8-XTKeD8(0|)B_)&$grmw@#f&EcO|Nc8A{p$ArZ4Ld)rolg~@YVEn_*r0n zI{FJfTT6ephW?6a@aHRhHGLhvDWs>r>vNKRHU2vq`ahcn-}m`i{C73@_rw0F%l}8d zP>bKA!M`S~$J<}5#ow>N`y+b%hA&AxvUmLYo(4a68vHd1UtNAWJk5sd^8fq0YU%6j zuP32_>hRAfd^LR?{@^tDm0ywcQ^#{J#1Az2Z;t8dZ&mne`a1m2r@=pdcP;$~H1z%T zdipOYd^LR?{yWp)*ZrrYUyawz zYqj{j8vOSf_4HHsO8iQB15$54-iHQ4L8i(tTfZ)W=U3q$M7Zkll;V6&yPp2sU6Q^luTfeb($KF@>+uT|zM8%c|FI4|{?qqK`qky7 zvtJK)>hYgZ_-gt({QX%y-uLa=^8dLe|Ce>^@hOF`rmw?4*Q>{G-7V=?<8}7)t+Vv_ zhrd&ce^`_LV|{vjWsk&H^M9TF{I-+z_yr1Ioqip@bwH2*^!>H;b@umN)8N0P@YVEn z_~C+{e)Rjb<@YO1`Ry9i<2U@E7O%74M=N^#-Un*&zt+%Sa*7^5@S|G%Z#4MrbM^S` zKd#09R)gRBDn0%%cIVPn-GBE_d8Y5H=jrj!D13GO>F}REO^-kS!CLx{YUo$y>+#DJ zzM8%cf8hc>e&N>ls)j3;a9AJNc1XBzy3 z!dKJR;qBM!=|BDlNxxcu`iqACx2M4`c}n7|%l~N&emUlkbot-;Cy9>&<6h6;NA-A4 z@2{T*f4{<4_g@|UG&C?B{mh>w{gv{@NqAO6KaBY&9e(1l1XlOI=QQ|VPlJEtNG*Nc z{M8pO)YG5)bS?gvhW=ZZ>+!ceQ;Ywr2H!WT$G`Bb#4nLIAcgpw2ETV2{Gy|^_~$kF z&6t0pkW>55ZO3ZyFKFku8vNYnYw<5>=nswQ>EHB%#8;0WlN$U5 z)8Id?@YUmo4*$Jr@W)=1^jksm_=Q(f``?q(;2U0&_-gu8QB(03t<>j#-K4}<_di2} z53bVV?^i9Ny8r3s&ptd2J`2ZFbXC*0H1vlN2CoICAzpUvuq1v$889$SLg6BrmxU6d zh+sN=CRB?DjT(Fk1uF5?oKlD#4H7?mkt9g;{X%S=O5ec;9e)2+3cusrcun z!Dk*;c(f0?h<;p%J2Ui9b^Q*R($Qa8#>5(3N&p}{`octp-c?->In&^8R(S9Sx(MGU z#9K1-P<4G9^`oW#l*I4C_(B)qJ2mC^WfZCopIIPV`mWm<&UlzwYSRD7fF8g9G1XH( zdIH}k#1$F&c>M2nHUHq9GE=+%8cMMcyKa_2=_x0~M>F#A_}@h#J^dXa*`g@2iKTVVV%OiUHjwK2|hvAGr6V666^6~iJH=x^T>E9&r;*1mcvo-Wz6PpJA z6Nw*&eS~OuZ$?hGgk&CJVeFynJO&(JT@KvY>D4hk^sVAAjBIp z^6~iJyV0q&`M+M`Ctx3#%$vLl0HgXpT2lG`oB&? zf4ETa#eYbH&w{CI@tY-n zS5^8yqDlWTj4wL;ep;A-s~Ufs2LAxY2OWOLdsO;Oj)u#B2Tp9y$j9S7_^)9L zW`-WBu6q|xL;q(IFB)ZF!tc`HH)BxNwV%u%6`nrgBK&vYF*`#KRo7F~;h(C_|NZc( zk*UJc&kvoer@#Ltg|Djr9|{qkiXVKf9>2qojAvIB|JjQT=~MB)nFhZyr0`Yc|Bw*P zQ}N$DPftISmH6QZGKq`I?_sC_8G5L?{@3|>{K|q#coqH;4SwV6roqpb_z5M36aD=f z{p*z1>+$=~RP?SzyAnl ztW)uCUZ%(IzeuGY@-Hpm{_#HPY!d2tPQ4Rh7SgxnP;}(Uls{g;iSwn^rQ*~W1It~6KRT)QkO8<*O zG-ax=^z+5(@c*LnPe5FJGivF75<<1E{4<|Y_^S2?`$bLvIpYm_{Ep8`{BTwNy&C+J z)8O}iLE)?D`*HGAhI4b`&zr~e^fPxWd=>u+<7D}%c>hX0e&v5k{6rPL-l!eF-Z>3^ z|4v1}ihn0G^iN%-r=R&+E&Y^+{+)=QNGNLse#vXcy%L{tU#PpPj^l5yzzfners8)h z{ERmq52{`NyAloSmEymFsHW0ijQV}0_-|_PuY!F2O7Xii_>%$tyZBcFq^|pLpPK$w z@Yh$0|CR(n|{dW?gja;rvA@`eEv%DKhogqV83~#_#bQV-}@)ICr0k z3U>T-0{NK1jdT18u$M$orbXx@vMuYq2sz3_hH;k#C#^b zP}fw&;PP!%9Uo!h0Ye;V?Z0Zx#!Z)8ep#l{pAYnJUbS(2&F0LeOUKFsf&NviS8rUi zY17!IOWv|3Q!36Dhu^qq-KvdiR%iNGt-oaavP?14e^DhfcHxER6boZ#opb&fuRZ6q zMPsGPz)-2YrZkqzkByICx_<29D_5_=pRs%)S6(x?s+1dAwSN8O7q8m9W^D5%>(^`= zyP`NYaMq$ra{0;`XPj}>k|mccSyCPwTeoWc+WdL>G5kAYXr}n>*w(QtHZ9MUDnq3e zb8Zsj@ybo&_SMUa`FwH3oIta2b~@K=Y>nI`8fLG)w8c0#Huza%cB$BGgl}IDSgAO$ zV$OTST5rKzoX_R*DdU`UE@fE)?>WFF3Ep@2k>-|7u)4uQYac#TO5s>qoq6#JPT? z{YJ4NyXj)nYusVHX?*?V7p+?VK4Dxg4ktHm9=jxe`G!lz)-FfxGpA;*E)Di&a>Zg_ zrc}oN0Xz&A>cwH-P+w-K(wE8S@FO>r$FF>@FEa>ltyU3``~cop04d;}Pl`-2*DrP< z24KqgpUb^QL<>;4Un3?nxl;bEa{__>HJ5GP_-53587*XNZ6Uwp?6v0&j4fGv$t5!a z{To(oTy<%t|H@LaQ<$-_jF>kz&^JpY(z#ipF`1twW*6|spDy5WZ!s`4aCM-653qEyUuZ(Kb$Hz?)@0_#_A6`lQ8 zro>|8XZf{g{T)`QAkz7Q2&QudShfoI)r3dmTOyJdq4q*vL~a!!agkNH^zy4t7N0?B zbzipmlGXiN8^tv!jP8p!uS$vqCH(3WSFBpyzy9+6O)1fp>wC2@hQyaQmgWRDt=YVx ze|$|w6gTAhy2aDc!koZx_l8{NqK&IE*+pYx^XCtY6PpIw_LJ%i70GbJ$SCTzBngh*hpPti{5-!4$7CMUQA-(IV>eEuyouVu>&lqO;J~ zEar8u&3#gMI&uS-il)LgQO@Q1TE#Mu*tGdF5nJ9RqAQk(Gm!qk6~>280pZQ~`PS3y zj@;mYiOR-Is867BOYNRZQN>Hn8(U&WayT$&%#I9+mUM1Nbl1I=ekam}i|oK{7v)N* zpiOfJH`}fG&33x9*=~v4E)tQq+h%0GXpVe9-Lc0m@^;ZOqp;#!J6*WeHq*sxZ7V%^ zt?h3tyxopmYddZEYwdLIT6<<1Km6WfR{fPjW@F*679#6N=iYAj9tila&Y+b0H(u7i z7L-MPa?1Jza-VfM=8#m=Y2nrvx z&BbNZ%R|0UU8e|NX-8&>5VzIvLq7cWP(w8$5Bb)GuNAn3!-c9_T^McZA)mTkpUyu7 zFXwNfS7Yh?X|{P@Wqi&0D+kPzm#lr29mHWmb8!5b@cSw@dO@%7rt^(325X0_wL=Sx=Pt-?wVe8Dmz1Hu>hwdHKJB992$f29@qfpgis!r0)IR>+)biFKxR zxrnWX`|z8r?nsAa2fS8i8P)%pfwhG*i>HG!**9HT?T zhdP9Dk`N0-rZNCkYJte+`^Lp3Lui&4ZF-w!oo3|MZ@w}q@*DDKI%1Jnl^eo!+F3?Z z{w(8P5fxf}|CN_r5*OYtI3tCz!YOYP-MPx|t@`|9hLsZ0p*7-$`3nY1h0{+vqZySk z@HTPv>6L*q2P%0OAD)StUBX^2X6A-Y6|wxO;+iuCDuYAC+^NERRy5+)l)pt}^2Jld zP4mwH`QU%q^&3tXsq#lfL*MH}=Z3;NMdG4wIhD1!a$LmAD~-ac%U0J5`)Tjf;^cg; zST0ryrDA1H;PQ>_B0JRAC6c8PVSdHv-8l3iqqlg z7{I&P`O0^kpcpc;>(gz+n`6)2R-RZQ_vT_T0}~Yr#(MF_b7svoSW0de-HT5g?|rt(#5o6O0Gpey_*Ix z2w%2lJRuCfCzU(TZYj*RJWay5*K_&(vJ2En->@(vW|7xTh?tGDUWPkEXu?{iLCz52r*NIbFA zhsBKYnLfk5!xMZM6X_o77b0D{)+5ZgacTav!SVneybVS+SA44{H0X&BEVVs@9xPf& z3eW6~<;%RD`tol)p|^^jN?)63E@eFB)t6i~Q`lV|Q4|r&<7p^;!|z;b_E4Wn z7oW0?Y;W+WRDN348q^_nZLT!nGuEo;Uuf?V^aGdo6?oPE`jwSToEeZn91 zdLl)Pe7UD=dria1`JwJmW9|{#{F8lhe&CQjJD>lv?Tvg>#3L`*M&wkHz=;--vuuCl zGhuI{xX$*cJQ33)8jGgqb(_|0?B4`;u+8A`xkiz=@=;T?h^~COVtOAp8;U=Pcup5~ zyANgOiw`A4=H$Xiu|Mv(L1|RTxyB>;tI>(Oa+$_{ue__ zF1xt@%F2J3^@ERk1}Z1ztU9O3Xeh52b)OK%#m3BBxnIO9BSstUR-<7L7?Iggqjl(G z!aQG?9~1M-CshU_3A1F0KR3K<{pDNw)?G5b?rFQ>>bPilYg;&b`BfjWGP%ASmgpoJ z{I5$Gv%R8{FurT|Y~1wPL}U%}Sm?`~EFx=#Wh^l}Hx<^3P={e&Y6iY)^yUg*GiK-V z|7Do<(U-kJ%8<6nl4J%Q3-k4Qf z@n!?e3#onH=*|xywfJJLF=plm&NLbkqN#j~ktVb$_~YF z!Y{J>FugXccZr$#!eWugKX1$+P*1)vT900{)v#WB5>$p2{`$x@hS{AjUSrHEt@xV& zlj#t3*BFTsNaIUqzK8}Iv%2$x2$3%)&?>Jn(xul3qaJ_!5zDuuepbG8j>uN}z9}LX zqioZnz4FUwL;h<~@5M%MVc>W5>7k1adoVv(x-lAgf3QAXcz-ZOe=_vPvELeXE{x&? zqm$nz<=$&V`s*5 zV5{N%U{kcTClPtdFzhdQXPs1e(lFZnW=2GwH0*4yG)IIE8ut7A=3dM9I;v58IcS)6 z2BY6WBY0B&l%x?aB#9S%4!-H{4MqMdTxl5<`jX#Uw(n-02wMOLHh^HrCY>G5ox!V`t825J- z3ResB%c85?*CLEZW6ocFMn)LF@ilKe6JqiQ{JyVvv-!$zMEF3|><697fH0Rfx0fD^ z+T)?wh1__^tgkr2Kilal3=TMLgNuauBTsYTZMOJ?$9o>eje%~{#DHA-y5or%zH@{T zHD(k_&l=H!8TG#p?0P-~uw|la2-06?zOqadpw^u(>Q}#rMmcngY0atYDI#^Jtj_1Z zC3*+@hRoUMU^e>PV9vZaKX_6hzv4>aftXhucsk(wH>_8jZMLA(4=#_QWpo!%YE46V z(N)Bc=E5CdS9gfWSs~k6<>}9tZl}&133-(hg;wMI7L$R+D(%{B6tB93Rb(y|QhcRPA@r(Y_;6UHgB0V%<;iyQ_G&nDehzG5v zBDmj|(V0xRkdLghEpwR_e4*92I%F;ofs~0KoANhb`G?t5IUtz_E zjN)LfZ)u(PB13#Ghdc$LE;);oQB#1N& zZ8zGAAw#Sv7~R767f~qXPz}NDMy&L1qrJ4-DwL>bBijwDyD+fb2rsnrr6L+2cBeEB zZa11rpR?*q4d@fw!FgLnYiYaDQz~yaQuu*!--8t3NuXb)D%*_&=%sPD)0K@4zMevE zyU{)vGCGGKcM|pTfTTWHrf%ThZa~wJiS)VR<6*L5xG-FwKd`$+3oX@#I*F{$%J+q_OZ^)H*qK zaw)gBwXqEDdvdHlH?+4kT{t;rieEdCpFqGmIfhuld}rrYeAMglJY44u`qR0OwHonK z*dKVlC0>5XAJ`p@SNen%iP@)%c>cG3+v9k%F;QRVf3M$nT`>4{zx|oM&_{v|m2byp z7K@9V^iZ(R({tIy_4RhRFS4Yi83L{_Q|9bk;oKHK3kv2>gOPDDGd*}-OQ50jk+88& zMCQRx{Cp%``ew{-8XCf|);G^MIXAGWer|az|EIcSc~gC~{9-urF`qwlIB6bm(D~D) z0gvTb;tTytSUl-~)%2GN9}-FYPv<@)%>G>YLJ{&sL;fU~bPM?P;FpADZ*T(p!e(Cp zQl9;5Px#7u|HEOs#UP%!G=*a+qLFRFNEJ64z8k5(Wke8n7(wVhgSwdS0;98V%6#FS z-yr^IeKa>vE|iP8O75@&X{5t$%GKH4R3`i%b>`0_GjoGCdyVf4<2JwOF?=_By9#|* zS+m!c^Dt4~FJ=r@xVH~mGuKvb0qeQL4u3c-!ZFby{AH`BK)mkf4WUGG{{J6jl9f&R5(foZM| zqQD|Qw(M+iV2)@Wnu9tG3VvlIOCJ)mi>F)`41_Ke=CV434E-2AB?pNC2+tS&#*aeI zLL7xv4@6+0RV=_(B!UaA88DMUKweA*^?4EbiDiLdZswAs4oxLTB^J0*SZ^{gU?c~Z z8~vqI%9eSL2sG6}41c4Q9(tn%S<)KXR2nEkuvu?)=5kHqr1h7dlWEWW!0F9Z9&l#o z$`{o8A{%j@&0muBLl1X3okp>kM^_0oo883%QVP3CJO|O{t8G2GVmO#8yuQ`^VY(|< ze04O^AGI3>ZbaWX15vU-|V4H z#o{l7xYn?qg|uG!rIhT``F9D+^TGDnxyl`e)i`*E(Ne~b_knfXVZctst?YAYr@vVK zTsl$sY}#|bFxDB6pwh)X!tO4v_+Z*uY@k#=D_&wbOGS**NEG!_;^BFt|S7(h@d ziw$oPW5w&!6sB=#u@Nfzvjddd#YXoa)yratWfkAd!QA&CbQ5+EI|{y-PUE-VY%pi$ z%LuWt-T;{&rhWZ``5&esuly(tNgAFoz(yitq)&hM}RfGh5g{3`NQj&&*t5yJKt-b}OX5p|eFp@i(xcy(Z)d{>5ip zBRuC}n2-5P2mp}n>wT$QuRmS+?-9vp}TW)}PK>fPbUO|7PJz-QbT4u3p=LB{y3;cG*x&uBqo8pkwS zmuLa2Y#Jz`Jl2LGVGR5z7WsY5I=PU)SC|U|>3nk-V*I>7usPgbc`}y7|1|!G(#0oZ zz4WK~Wv}Mbt4*_uCp{S(i6UHGhgml#nyk!;rtu%BIZ>eIM1iV$1=O7AmF8w6GADXE z1vH_J20k6{D)s%rGkfje&vBsr>^jIAcYDG=k4J8g2GWJwqnU={?a|0}rqP)DRl+&h z2%Q;qZt|J`;)^Ve2E8w}fB~N$ja(}X>q#qIYK0>7m5BENuXzK6)XMXo>}9JV{?H&9 znAc^lw}~+=ZWS~X7Z$hH=NGjaXL(^UI?3!Rsbh0hkvMgDWw`^I~E!~}+L7doeoJ9g8f#4*B#0epbgb{Wa31Ni*0RklKT{e_m zM$0Org;H8(*{ghM%V=2ve$NH^`~H7_zh2hu)9Evx_w#<tGbqS+iI) z{qqC+=6uTUYm)D6&0A#`vkYe1c;z>(;qQYl`mRdF)XQ7D?Eh574i+hx;Sd!@V^9x; zb`<1YG4&mx=ooiaOM6pvpNnGhZzvy(@lUHeopL6y1Xw ze8~ERh9Zx~_#wIIh8Tv&4KYUU{F#v15JSTRUeGth0HKSAbm@4V5xs+{{@BnXx>Sdw z=fo&oK+?f-KUAGRw#F$EIzKCchj}O#+R#?xCP<;%+7e566G`-Qqo(q1P5`7f%2T82 zPSRo+;g|}HqQvMy;6aTcf^PySw#%f|1~(CkSFztk^$%k#?))|y{wS^gz6)^h!*l?H zQ>1%|V-or>srL-h;J-K^KNaJJDt3%2nS|vj_b_jkpNav=yhFyDM!8Z&o9tp6311?M zV|)0IM%Fy7Tg?~^u^P9N>al8!4Nqp2t)$f{#%cJ%3_FqvcVMDj6%(`O${6Fo!|OT( z{uZ1N%~Et8K=tZsnCRvGiQd;Pu>Hvrv)lzw)Ba?FQ7Nqlhhj&=>Yqha{;8$<_1_18 zV3hWZ!l%Lb&7ttk4e^TQg>MYS-FhOv&XfrT_qo&q8+N=AdNs_pF+QCLHO-M@%Hq6I z=mS`*CzX{Cfv8Uk>$d}58^+UJk!=QDO^f!(YRYZ`$7!5N(1iPIgnL zR}L+qtFk8<#l&(HxD-$X>}Z-;w}i*tV?Yw03!=zN68+FB64_4KB}`mF)C;M+yh^{2 za=w~`kVSI^$&TKsD$@LrE_0qVFQLWC$R(6+Rajwl;TxUJ28`%2PpF+ z)$5-P1>Ze4(!Jg+()LQxC7q^IqzU)cD!mAXWIs_`-$$1-;cB$2G8F`^4-oQY_-PF) zo+n5KW#3bCn*D$>kK9n1)Xwh&j%KO6HCz!=7DqmBjTU1C? z&bPwd5q>Q?H#VCsFB!?Y7pkzxSBFSx&e~N69lr3$r3c?K7(4XvP-*JulzDhf^`2DbqbiW**J+t_GLhLtm!8;YsHdN);d4f+%4=%nM>QPCxJp?3tJZAV8wB|kt=fH4Qn7d^q41V4h9eAlCl9mxi1>k)bvJ9G+8JTj5OFMEX@;~L#T5ZLmLY6o zHAY9E4RAe{OKOZCr1pw^P=uA_Fr;oeV+q;^3M$82O!IhXES8tEPj9`blwT_&chM#RIDUsGy&G)H($kbf3 ziSK3olD=Z9+UTyB3LdptKXj^=^bVb>IF#@3vX)!m;-k2tNTzgk+aohMesPXmZaT0o z9m8_^2|7|g$&P$hi?SL|q+X%L^cRq%UBN_9{;XDq{o7(0`w_JQ{sH5gTp`+7wQ&cI zbC+nVqOc#n57Ct>9Sr;H)>k$L!(j@BQDrd!aa$W&Oyb^}sJ$WI}u(&gof&#k~)6DoTB${XYHSas(6xe60gorv+SxV@34|lCYluwS%SeR$hMsGenkzuboG46okVF-Hrjq{1pnxJ%WZ0r}R<|CuUdc z=tE+wRk;mA+l3_HB-)6El|M2}vvEIE)Gvfe*)}wm@&_s1H;=JjpIIc&3b+v+U98&0 zBOW-P-jfL)F}TjYEvU!ah;}QX>$4~e5|-6lVd&ioov{G&+a*5Lqq~d6$ zo6+SH_zp%N47MIvLL>b=!q~iQv0~vG=Oju`l)O=BfGExP2Vd7i^?pt|D(+>H`XQzD z{XwZ-CW-B~^F8mWjNI2O>X$RjyZ!^soE?h+sEjjQKT9n_@ zR#r`b0qQR&pa52r@HOx~^rNX%;hD2&CS1B&(4GpaAxk1xNUcu!DWZPK`JbU0xKa>U zZ$CY?S-mB&Sq~#su0-@J1zzi3DZqmpVU|}8s_zPk&K58%>R)nNQ_io+!+tDVC3*-+T&Q$DX;NR;h)JBuTtDVsvLaPXEJZ| z+;;VMy5z!pg-=RL;Pnv^X@n)UC)WBSf6N!?GQdJVcj@NJbce%DQm zw)*ZlohsUhhc*%vL}<0>_6Vwb9Q;KZsCBl6JDBN!^TFXhOw)I4F?6Be7dBB$*9WcsX5!Ad< z{&$-E{y5&!nDUQJ)8$ok-x|_Sl(X8Z46{lYLwxwjR}=mR^s>Om@Gz!0yh0TMuSek9 zv%qi!!=g-Vvuvk{{9_%F0!_@8*%YrD*2c^xiGm1y!-7cPo zIilRe*#=m)7h%%4=++!xPeSM9I(>VuSa>VY>egI{&Ls3q zQF?{6oAyCD=}w?L=Z9|bs2u$+!5c`?w0~%%FA#BeV~<&RuuBw9try;CVtvKQj$^^J zp+ATXo=KZck2NKYi2<(No=Q27LvzyuvZaUA8KsQU19VgFA)y>hV{=Z*Gi|RPILQDY z>&*k`9GK}tAL+|u+Uv`!u-aQlc=~+yAI9esD&@6>l>fw1l?tJU5MeCr2?P9!bxt0{ z8qnnV2@Gr9wm+?@#k55hy*|gUMh~+6{b5EpPv%*@dj`>dm4makg^)`^(ObZnRes1b zlz9spbU5-%KJH%&!#uCsoU;V$Sz=tRgy72GmKRP6Bm7+db(qzZuMDdh0F6I|L)-F= z#ythZkd{2D&=PRi(v2>mfFcTsj?1gJ`dRraG4K$f21 zY7n2z-pG0)zDC#?QTjwyevQP8~HI-+kRyxM<3SFr5wX$A4o zq-_k8gY87u7jUejA{t3>8ha7Et8)_RFpBTM?{pFf*aLDhfUqmaw37m`it|n)LbVaC z;cqZ?S+2?}Y1#>B>??B0C}FQ9AX9-oAyk_$jHm$OR`Fjnf&=f4&^vPSC=q`c2@Z2% zfxbG2!M{98;H5n*7a9d0aqgaDal3i}?!_NO2gOn8zCG7XTCnG~&d>t=#5yKEBsRJ) zH__E1KnDGrrJq+%YOHajWS3uV629n{K1#|@qwWBu=itTM8|4~*4$;8yc&l>KuNm8% zj#vIV9)hH}dxeGpMP5HvdNfgV%j?FrxyGMHlGg3LY+;%`OnO{nC6o`|mm~U0(Bl3| z8o8;tIUua*)fpKSqNvaznl(Sjg(F`tDA~r>3qZt#VF=jYEzrWW7Vfipc<@>)#Y1p2 zYz4N!w+m!Q;wMo486k7Sq2)>XsU#eUy1a6nJ|#HAoCGyAL-^=c19cA&(rhKcFVenYg1aOB%wmsURnJyyvEsf>O^%)Ypd-ZoQqh|w^m z9W>)V!0PZ{@1Ztq)J7H?3_NSS{c)hS{Rh6|hjy-<-;wpFKxbkbQvhr2@7rZ{l>*nq z5LM%0_74>UNOXu+J82B>L$tP%6tRgR8`XeKcZk;eLqYYR)O>6acAwbedxv$DGH$#* zbXbShmQPqcG?EnQm>gz$r55&6j@OIPI?9e>a1EZU&{;Vl1=&v--n+>;2tVnBTr@+2 z1|9ZtU`5~Vpi)kxb2x7k^=TbqvRqcxWo>ji3-Eba726%VUeuPg@w37`j=hc%R+~pd z*XLq9bsNM|Wn>&_v5WgO<8>o&ab=*T7I6y0P4&EXPoQ&XCEt_cPD zS~RGj`Kr`XvHC@IoJcQ$*Pld>XZ)n0EV}xZ$xHnLZ z^orf4b$d`_twei~CCwLE%DFxGnNI*wn^>jQK1RI{(Jao{}dQG==`%mNep>Dg4`p<-b9suBI`D zT~2i3)2QtnZ`fvCr*bevtpMrYNOUP-lL$v-t_&5|C+%!wm5*ar!nIjEgSLB!t%2?i z>aWn*g_zMA$$IA!DONcbu(3FfFeq@b&DPU`jeT|Q13f7$fonqN;`ATk*a}Yfak}}x zr*jNM*o6`7BG?Z=n(K^2By<5TxDt-FbBUO9@CgOZf4@MifvugyKDs5wFCy(ekZIMr zQz4-z`iZc;hKuZZnL!$Hcnkbm0`qA%ge;xx6sWY!WG8(vPLyW8wWZN{uvJfWa(0bK z-=7(ln)yWn8@^y2-xXNXYEvHbMVo%=VOnNk?MrBW6z%H!|jdE z^x;gop|huA9eP@VY?t-xXk+(C-w@1(GHeO*d?Na{Vf`1YLMXHc?6RKhBzlhK3--uo zLbgmgA@%R+2;lQqhH(EVAgiBc0KJSI{E(5w3X;=Hk=-U@i!9htTw)s zq^F1+@01P%C;XidI;W$pV%8G<GD<&hizWkEPXX-bIfWjtyd06w$dZT1 zCQ?w?>y)mZr<_UJjAB2bw+t)WhWYx=jPV#@YdSHet?7ik(_hnBaSZceIcshk7KIZc z`q{(Ttbg|K?BK(or!v82k)djFRv}=G+1&*llvErFef9k%`u>FoJFo3$hvZ@85U{*( z98D+eSrH|YH50`E3eK9UK$&sEM%I^>-sCWat{*0Hmc%XmcL$o7gF!mm2NQK+fLJp` zUx;lu)Rl!q2A^&iHFP0vYq4aOi%SpO+xJ*dU_Qp~GXx=r|Z zft`d>`KBQ1o4`LliWmTAGZ1fu=$k>}n4wO6HKT2YdmfO>$h$agA`A4ct(f=0CB0wB zR$2=peFC)A)+yGI{w2RQKB7UB*qgi_^E-XMv93QZ~#f~oh_&{m&SC%Os4?ePZPjkvUo+OO>7!H6T zIiBcu4-3-1JTi;ZMR81t!jnz#$!5BkzF@k*ZmOZVF8vq+*J$||!cJ`n9Y^R}HJDoX z5TSQ1mCj>rwpmLf!4mUfwLdGbFVC|!3$<0W_i&kkp4D8H!*9K%wb^!%0w6{BWCJ4G z58~Q;oQ0Wo{!9w}2d2wo1;+kVLoe&nhv8uN9%hlJDEnhWo9$Hsn|!x{p9ZoQ@p}dl z_5rnVo*=T%Yp6Oca67a)#_eQ`9+*9Z4Qsl zr)VU5iUBmT;i6j@b2w|Ol!usp@o)%OYz~k7b`lN6_{oIL;o8ZKwbpyhg^D?q#&K%5 zX-}nq6Fs(3#-tg}(y2uqYaJD5438WyvKQ*x(9yFc+gEI~)(h}J=0B|H1%cQd$OYR; zFV7=sk)D=D-E(;SuAZi!YEvAdachPhxd0yPa=D0Y((W2VN;sv`n=&BHgsqJ*FV6=& zQn-FTRN3|ccCdskiaVbV?)MVjZP*V1ss$`hP}QrZOP?VmqcWLBf~ET{s=6Vgn;Bkf ze8!5d3)b4-Q`4XhQPk{9mU8bB*o+jl!qI~xt#$Tky;jp6U;2^7p$0^;e;vNW16MWa7q#2I;pEI#m!!q|+?FAH?baL%$E& zztTBfJtA<;Z^NKK=qnAfj7dIlj?0uKyro_8XLz!BuFLb*5&B>XKVMR*_(%f+H(Gsz zHx_(^BET~iuJT5`@}!|o-#RHJd5rcYM41$P>zEijOQkY`7Cb-{)}moOT-%taT%XWe zhrqp?twTc6tZHn)O2WBkinMPn3^jOz!Ha&tz>8+R)}c_sZyky|hq?^uYJ3uqpzN~@ z-Pe`I&<@|}L(o(YL1dga>N{ry4vegKI{L6<=7(CG@`0|7t$1a`l}{(~1;g!rr35LE z>yP^G7C^#weGA%$lOCeIgo4i8f|I=^ZrGj%;h2I`7r5-JVQC8?o1-`=5@U*ZybEj* zT*v1Yp%R3EZqqcjjnEUPiHJg3=d76~okhsGO4b1GYpocyLxBId;w&Pv?^z?ZSpZ#% zdhHOPBet^U?u^0~$7ub*;SF^NlKD@4*8X%ng=@UWba!WH(e!p_g0s?f&QGau!>{3- ztciY?fu0>4!#L6z{U%ti*9%WD`MiuEE^n;dmyy3*#$TG;Z94a7O1AaV&>ktX{t&>7ZGZMd2Rv$E{lAp#?3eH zXUQOurwNJ=zz(gp-l8|4Jgq@^MDN5tt;1pi<_6B;mPu#3h1#fr5|@m z;WQA&hh3PgljbxM5*VsVU7O}()6$8I<`cpT1dcv<;U3NCYtvfRS(`>D7&C~C5<5RC ztxbpD30RGH!1ip8WQp)T)7BHZkqY-UKsP@Y(@e$Br#GC@2unhIbh2I}b5!J6M6Z=q zeJ=FK{!@djy^LAEV0sx$3&uDN=K3H@*oPB{&Du?LOi;>nGAK_UpX{Gi=$GunNaVYM z;KARqb%<5sP@c`^trh#Fqo58av$cdug~+Z=VmKF{-`AthY-|uFh1hbQwP!Z!{Hbfe zIboWg*%+&?EFHUB-z?vNrm{935=wK{oFkUq$;(;E=e1p*W8iJsf2|9Ox{ ze`*kSr}?pnkHX+`BpU0RX_1{n6v)4Rm(F@C2#0Od0{rs?>e_p|LeEI*nEz|xpP~0Q z$_Ep6q<|CvDQM?lj*r0&V7+&lCVC}KQ^uRh2Eq?WXUq+7qh5kW|BnU$nnhKV9V2Ad z9~%?*Fr(@rf!#D0rhg2NSH7l!+`>b5r-U6eZTu1?la2`HcV?f!+m>6XMPwWlvwIA((80)mvrC)=1qJD4U-d8@s%0 z5+Fc8-q_~fHwk=6ZQSfj=`Rfk`XRLfcwdk^U4N6hYoxzr*{KWMsjXhzdoCGrZ3Nvzf z{v?)h23U_{4&uR|t7i8MXUku~zYbD$fbn+I`YKRh4KVeqoHoFyA%*VF3x`CNf8;>) z4=_35ohjivDO7m)86lsF>8XIV)1k4dZ)DHjDx>K=#}n(H=la%7wA(JPMSRrOO+wOn zphjQ9Slk^qUtde9(5q?8zCB{QfM-c2R1&4 zm?+dvEjom{fySLoB>M6uMu!z{H+NXZaln+o z+X&@i0>29JlJ;sCDNodC-w)CgQ~xb?N$mqFnKy}bSL~TonJ@EC747}0(hoeQF3dTL*e@UW`3hZBqO8gRGyZwwmJX72>6+BFE zpDzQu<+Q1KKQy22mqdGeB0Wd|GlcNz@I+Shi*`%Wo5-Zu&4?W?ELpOlnNO1ID=9cv z>qY*`0%c7z$PieJE1LJPh?#jST7~WS?Id1=|Ce@n(5@*T$6Gw> z`>9B<2oOo}EMSVu2ne^HK@7g6*ez(wb6Wt`cx%1$Eu+`T`~|hgao%bKDz2P{HsRTC zG|DFQ*}o2+K0d&^J;$V>#Y`E9(2d!^&Ut5A)I==bv?1LL(D|>_p7O|N=--z6I#ep& zx|Q+5b z`u<i zT+^m(Wl`y7Y|3zt?febaayl2DGR(xOS$Ccw?CIv1$&;AKmDOS8xvBiyY0-Bv*bfZp z@8UU6s1BdDnod*#Vm>+$s$*1Bcuy;PuC3rYb*$Evx(ja5Q@m@W(4Rx}PMO~!bX3Y` z683ppz#w+2^g)@=1(a7iJoxwMCRuolg+B|?8-gyvI@N-QYyoxlM7H$X>6DPOb%f1pNPPg0U`{?mJa(29vw1tH*OU4pVYC05ZJ43IF8b&|8Gw zA@MdT!1BLqlQ!1^A4pr0sq*82I`{qo{c()Kae2)8ihTsUgjy&6U0bUBJdr-1qFWGV zCM5dh6m?#3@`Za0f`)c!JiHIivi5pR-?bGi@vm)ZmA;|us~JK7@!gMV=|98ZB;{%C zVDT`=gPyb;^Ir`Vjx6-+2Lr-VfgS<}u7T#muwbGk+Vtz%7>mseU*E<) zn*k$Fl7|P`#1I8}c>$3V=I$8^EWsn!^PPn5C5aZ{oio_t^~!~Wt@WVM66BeKt%iH; z46Mru`|KGwLVvqn+yzGr&KXIt#7zBEgt3_YgZv(vwND`-wgmBp=F{yM*P7W1u zF9``YgsmNV&$b4n1R1C?SB5pEz>{J`DIfxb0A?$4A#P3(18r;8k_)uWF%OueKZhGT z&kfL2WpX0?+(6cTZa_@hZ?^LlQo8cqK%KXZNYBqyPU%SEIRHSwk5*3UATCh5N!f=I z?EaEjUfDs0NYXhvkUacPdxM4dg=|SOoA9c&jdrA?&Wdz|>WN?w`5ufwcN6s|%Fb#) zxJki6i;pAv6vlaII0&3+@O~upj1+YF-G+NUQqz2pk3zR6P(GD}jvgS#r$Va=kjU;e z*zA}$>Rkv|#kxm)cpCQM9t2 z2IjK-N1_i6DhcEB9(g`teN4Ejz^>=6<^ z*n80=RMY%{5dW}_7OM0=w2N6|Sv$tb2a7fHU!EjBccAq4#c}J(HIeZb$Gv51^rj@0 z_azy;qbly~b6Ern|Gq=@eF+kEV7G~F_fO|wH~Wj&v)tH>yn)uzLHI7!McZajWp7 zBjG~i$Q961T-`!Xd0oGzMIq-?c77w)cs-II)OzPreLV1_;T=VL4P)dJOrO`a2SWKE zjGr6@cd4XqD3H7BLVKfYne{}OhC%+(CUtMhP7*{YUdwxf#V%xRL_^j1H)NG+O78IAYmos*E~vF;_fqzfFG>3le`N_drc>_ zzi=|Q2T^qh(yyib-{?iPR1{nq*-Z$jg&SMq&ao49`0f(!=`6g3!FLwmvPA;YQ`Gtd zi3>1F>k2)TsaQEkqBHlbyvT)I(0E~p&^Pn|%qVBg4Dhh^u)PIIIfIN~7Hxe+0Sh%f-}egINl zxPlmSFY1x+=By9{?*lPQ8%ukaQMsi}c%VbNjI!(FJ?m}bYKh;9V2TMshlOj@7Z0X4 zfea&>Ahucle5yxt;CBQOXy?OLNt+J?2Pq+Nlul?u1_D(;Y-D9m)nHymNFu5#D7+Nv zUfHUpE&lTdqJYa7($QTPh zYR2u_929yAHIuM=Iy5YtVj2qsMdXNZOFpxHLZiMC2mzAvGdY~c0&Sv)G<4W5;?MS{ zJPfpyq8z?#B5KpSp_dGbhlr3|rXbREu0>TKnp)I=fM#d1&W#E{09vq4M4`Q6fN#2; z$hTuSYKUAWlfe`MY1O+G`H>Vo0U=FPI3=autw{WS`1ujO31X83g*^pC4%Wb_&W8fw zk4scKpZ1o0^b&p^Y`*!3h6Evp%D#6oaD^wM++A>a@-)I`1mF#wg!X5oKOR)?p}Snw zh~k0nm^W37Jo0lP6)t?dNt&+gv!32hIig;6H)YX3;D@$R86Pm^i=2u_@1*=pjPwSj z#VmW8smmEM-!X$~$)C%w)3uYxQG@oUC#k@ZhJy(F#XSAFId42asE<0Ih-yAc->2v& zVFGUjWx!T0YDH=q4JyR{cuCM#wzZ>+q}(K+&#b^$8nT7@|sJ?p(|Q6pZE$Rwx{57%HGMUAjI z?U3~Ekoj;ft;^?j47^^|vK zg**VAmqH*~BZm!}25s*l_DB@?T}||6j68%64(rGR-Gqz8L!XE zSEZ`$-ATC`e#}`in5oL?O-hU9_6*ZSM0nee+t2#a#2kB*7c3WXeQqBOT|XsZ)wRfH z5VoNYWHCb&HctPU4i30u?-Uc2X1>0%3DiXsoi1Q}?{bXU8FhFVW6o5RfjxCNl<+n!3imYd z=Ns5PLiFqY8gEX&KK)%KX=o=0TLo6nPOV=ICV8FzRai1dog$43&iK;J1yt2Am<9(S=;FJ z%T@SS9r#AaXKS2ESzV+-hN#jK%NEe&5w>N&^&0@7t{3zpkQ4O=T=t`63sugNPUT7> zT>-lJ3SuFHTtA@}rOWH22gO?BHeEWArk#)iFYo!CS@*ooP~1a5kgRmg3GXu0;V;V z9VHQPyyl4tY>lsF{y!Kzw-Bk;dA+G_!{=#Hr1cJ56FZ6i6M>{3=@beC_kx==*)0Er z2hA{%hVXr3;g5Y=D^h_*m7#i*y!7aVx{^0#`OJE`x z&B!T2N)YoQ*~jTnV)7sHXelpGj~PZ1%IkwvseZ+- zlsy38`!ejKZTld(<+@`|CH(gpdIr2&{_begF^3%3BF1FWfk9YmcY2>}Bj?xCnG&eJ zMH(L)j=c8-pBV-oY_u;MfP;3kF1^_fe#?Zld^L%$zZx8Lm|iT?H=3oI_A2=9Lx;Dw z*#0QG%mM8j4$3p-xPRb4vsHN(qM4%jw4yFp#TId)3DWS_wEPj?<#LU2?6b6aP}|xW zx4#G{%a7A$%Sb&XosHO{-~JZK)sAG1_6Z@uXd}lk$eA6?&TY-DqilxoUAr{7$aEV1 z7gz||y2SW6EWZpu5BExoHFCR;Qsz}=O%*!|IX=J!A$!-hHt8_g8^50U*x5q)BimUALOQD99cQNR&wB4{(%X9jCX-xE-xNIvk(N=Id6 zKLx0zHHw6ttx*mUHP(#Xnkc_tV#`SVF-cfC2so?5oD;$jqAVj_X0f41YgVPBbZyWR z9*-uC%~8!5moQ05i%oMXDsvm+R_EMU%mQwj6IaN6}*o%C7YH9Rba zG=9eca6L|PT9_IE^-RU!I(2nJ1^57o zT~&+aZH&p-`+*f4!_<0iOgXK7&w0*i_4K#m&*xDmqMaLqzvH~93`oB^2@mAY-q=QW zbA6q?E!N=fEz(;N(zC!bzbrraW%=Hw;yY9UfvcztU4-)@3+v zXrWYCy9ew=xYjxhhwW7OC}7&K6MQgX)3rG9Cx<@%o%A3LR)2a(|5lT9$O*!!aB$Ar zJtxlg)~#8)^irAZkjIXW9&-CT&^wXne>A;|M3nb6OaNU(mH(t=N4t<`*6Jd4kz0d< za@Ltc>Udk-=TeXxd*%Nx$M(VmId|cbrEAw5Zg}$-_sZQ`*FJmeq-$E=1zN^FMH_>3 zy{Bq*hWlk~bP5?ax@62nTFgFV4L^4ZUro}*tBCSk2<&sZKRf?N64I~LkO8gYkg&R4 z6Q^X5p;8T;!DBqxxz3oXse%gmNgl|-P zy@eK?mb86Uz8k)<_mFuDT!gQMo`aLDcyeRhy&xlX)v-z=h;@DQC`EJ{>1$N8p*TV% zgvr^Y-JET9$_kQ~8E&Z7$s#hc{7@s*3YT<(GNf_yg(Jy7MKobrk_oar?n{LqwCH+D`7R01l_DK>dDpCF+XQR#ZLd^mi(AoNsRro_TKlBkp~UDSjUWf^_OS3NmF@{l z8Htd>iIPB1uYzV?DNjpAe+FNRe})<3`pW z%QuhRSFc|}W_5d(=Pl1mx8#7E(dFn}2aBr+pWWBvR33!>#&&y%v{&CgC@mWXPH2Bd zw=v zA_LlAD4j>;krDl?Uf$u@hcfo>UVZflt8+Jb%aG?9sa$z4E0K^%l^^|tv*il1i4@kY zR(cVEob(}yt{6H!y5BJe+)4d_jw5{K1al%%6&?;c-UmPzJ|Kk(#sK<0JIk8rBMGdF zQGgl9SM_u1UiKS$+@wJyf3OGtH+gTm@(&_ka)5da%UApZ$gzX{d$RQ&K%iT`g^~im z*H{s$F;gD90z#kiSR~&V8-!yl@&X4=phVb3@~*v$9ETjR&VYqMr`A~nSEPN47hd3z z??^xJPI*2LPsBZo1rjeGzrP9}LNBfJRucYWxP9H~Ev`_6`R-lL_-41E3;~K~>~aep z){bt;DF-{9mey%@gY5W!h}K38JL8^Jd7Xf8-o-3y@Bf>#I?3L z@$!TUgq-{^zS5ZFdkzNBHV5gB0aYTASri*NT+41f|uwLRkWVS@BTVAdf5TjXCUP$ddxEdm~wbIJwS$Ophq&vbegE$u4cdfk$*0|}bwFYvTtx(x9D-j8p zwjSw(n{!@R`KR2nW?grbtR(TZXB;|=M33H9jl5bd)Kce&(&!7Zj#2v=61^`r*IS6} z*GrHQ?j}K-3d9rZ9<59Rja{A&0_VG=@!@yS-K2UU&_5*1z9Do2sZ;+%lD+k;)_CS) zp{&%6E_x^F?(H9+8n7VSJy~y zMCj&gqthr^BOnbT?L`#EGj%y{;S5o$=Je4dzk-C0WL+lw(^>Z@23^q%R&aaw11<^) zpAofBxcX8{(JBmiT{1? z0m37#$M=?_bhl*n;;jSg4qCSApj^}HHAk#ow`S$arj_+{J+z7DJ4v>+zvrMOa}i_s zkjma87H<4kA|cqLgU|;`)ra3#(_A{jPFUdBLHc~m=+jZKBYV^}7CdjEw?*NK8{uS& z?A3%MvuPOQy(5?jX{itSds@wrKM^_;=7ag~l}USVnO?wX9bxaMq)w!kK^Qclr)b!t zM;pL*8`)J^d*gnzDF~yX*HY<5!YABFZwCMz0RtX4kr3mPV_{L9mL}Whrj5iXQf1zd z*2~w>Dc~6@E2^8_%HOE;DUt7Ah4jClFnW>3kcZ*^RkF{Me(WagE$|Y>U_|uC(!jZJ z7F=bg&H4EoBRN|1%12&`r#)g-5Ik}%jH!vxIAaAxJUxw&;h(A|m{2~Ka@DkDX zTFwra*epWFlCf*e$|Xn;vW848_o*8mTv^1|P-y{Z;;`I7$W)@{3B9hGZqOh*XxQ-d zp$vxC*0ZEV2y1taMt&YM@a8tcntfJLmj6EPd~;~Ho>YPDuBmLjlBJUDD zccLyP(0_}E5Wbjnx_vOgzaX)JAyPfz9W_5NND16joM^H%pYVM#SbU9lX9~)>A&f9} zW-sDoXwgFSKV2FP@P`G@(y3Cb@3peX6^xt|Ok!-4)L{KH*=d@;qsXW7QUZh<1J9PQ z?;`SzAYY&kqTNHG<HfSEgp`aPjgO1u~92HhH>d)*bE-?S(Ke`IC#+iFfj%=bnX z&1>|oG;JdM8?Ir!URM5v$?jt+e@>JID*~_ zh-$cJr94{$z=lU*wpN2^_}J*|F6}uuo~%{sJ{r9j{Ai$lY1q z(Zv@L?)S?#32|TQ$QaO}`wboSWkeR7O4-RoU7>YZ{^1IOWIG8j#u4O4ygF?K+QJGg zZCxKiI!_HuSzKSC$p9F9Plqj7ehHGH6&j4E6&jR|{$j!&$@4wkvw-BOcz47x)!8yG z4cy1{K!(V{eUSqBYj8KXpv^|sMaUeAHqvWAj*mWxK!DH+trfY&5zyVr=!;E3pZueg zwhw4Y*^fix;~lE09TxIMB)q$cd=vKcURn^yl_Y%lZNh^RU3Yleen6sCO!VQ!^zR4> zw@V*Z)b7&IQR? zR_M1L0e#|2B)S@U3v=W^Jo|;{GA|K=v?se@fjKay&(4iE9D6aY**uXrB=j39K698f zJC*3&ht-Zgw2_Z(kX~bG1X)vWAkv}+I!0lTOx%59#2Xy%E%g2wCZS)Ew1?o988SJi zRr-&h9F=8vC~zyYU9D1AgdV*ah)j7-qBp`NL~aHU^~=6fw#$F$iJNz~b$1&lY*v7r zI*D>8mo{w{ACc8d<(7(@4{}DiYfW(E{F#RF>nd&=3@)SG4w@S1*RW-(e8hu?b54fk z_XrUl4YGg^6FTbz@+cfWk0SZve7$wq(pS@2w--9a;{|p_n$N-*G>eGR^>9>wfr!GL zGP3<4+5U$jk9`6`k8tTDv4d45x$5OSdsr1O&(yAdl5_>JtQ{-YK1PU5MOT6+di+|$ zzln5&hI=0WiMUh!rViKF#Rm5v(>KYziT%#?BI6 zM1;EncVcfXS*j)NvP=&_{x-bmX`Q3RoHR#wmdJI2JR;ym?P+^) zGn-n%s+FzmEM3Q*Zo&Fb=`^lDyqLs-ClyFXNc}Go+V}rKLO3}S+=%GqLLvGms_;s& zf){=Pt)O5nf?t4mF3PdcrfIMD_Z@l)X+(;TQXF@KH(`RmbtVhH@4!HTyAsV52YOPg z!g}-H@vX^t<_9M6JM?8cYsj=c{Gn8hqBXG8h{bUozw;l9kTDK5Ch6Tl0M5hktqj~! z(d;rYs{J~4e-y&ljRSiX1&q?q^A;-5pTbz&MF#Otztk1)R=y1-BiY+T%wW~OO7dnR zUD5XcAN7PfUBLhSR4QZGiC`#kG4uE z*jLl(TtQ8ju+o<1T>d!@r%3ScMd5g~vziv_3WY9AP#@;b&;C|=ZKeMaj;TRFbaET^ zlj;36;)$(vOe;);FOXVG5>$su^Z^lYv}3sDu}I~)P{M7adw+B zrwzd41Sd&@z(Ia75MzQkfe1_5w25s|Z}9=SPorN8v>5)Rz=`1@oJ^ok)E*LMwbA{E z-dQG?P#jzp=u6bJO2=_KF5T0{HOZ2BzGV!ch;3{z*qv}6Jig`Lq%a^*=6#O3wxrNZ zI`W0Z{8GdQ&)x-;i?yRezL(OiNntBXd-mcsrVd7Vy@PVb+^OwAI+wZE4;;SHD;$qt z`6X>FE0&zvmdxV#Y*;xaG{Pph9c$XelI&7~rqLHSvo&oDq2m#kDkZ+Uj9pC)hxos3 zRb5Q#FT4coprDBW)^=~J_IE(g;?fMFPXj?@Iq{|8x5Xs~4k!ssZbqHe8GJSARi~-= zwXZDmo*+Eo6SwjV-iLzFW{QaCWi6S}FG|ejv_NBVvn4G{`IaWPZ9dVi0qtI?nNG{B zE-r%-%pTQ(EQIIa)Jyn=7&a)w5evzB*z{c~HnHKH)e4NF_TaQeZ>*HY5OFx@R~z|k zp##`x`$fBQ-q3V?!F!sT!_t86G5G>TTNJGEGB?J};rP{J0BZ==M0Q!c$;*B&ush=N zpHcVrVI0C^^nMbt7k5(^jxeY_4Nam%LkWMX~-bh58Kq zDrrzbJzoGkn&^6W}V^lu@y_ zH5^&l?Pbb3G3s2)kB7p#O&J;Uw+*JgDbr=y;6(;%7{W2urIPRTde~b0lJA7sH&$`S z@ZMHjy&$f(Nt&z)h(%6EB}tj_e}a)_suuytsvy&~jy`vNy>N<9nOk2EFTR=t*40M} zM-g>xJz_THq^!NH+HCIik;E`bU6# zp|ww|*DlS_(BXih!vl(_5Lra%K|StlP-(M-@Pg6aONVLt%6j@dLu|p!^fGog%A&KM zRgjY7<3nv?#3T)f4$zToG9D#x)z{g$zp z4fZ=A|4>H;P{CiIA3)T90K+z>&OZvk5)UW(sjO_SHJT_0c>(-rDfHaI>ju#g?jRUz zpC!f}q}6HLR;O$dv~3wy<}-)&s_crox;|@UMmY=ayVXIp{(5m)T{w%ls)bmBGdQJZ zVr;#^V+mGF9#JP{>QwA=LY;XJ8s!6`kMapyW$9?JVUgG=Ly7!EF^pjJ*T)LQAc8!P zu!5l#g9x}$e;LbX&R-8rkrw)e>)V&!zgmZft zErYu|x3>h%fso%ned2j({pb)723Mgt8{{||#`?V(1AQ64aI>@PWztw{VnK^h0ueU% z{u)$L`S{oN-b^_Q)ryONxpr#R0??#23XksFx#3{ZsVr~5JpoMiT8V1fEe%}WRsQKdgL)$HbPr~FG?#XjDv z_7!^-HlSDSI}r_CL>0d=e_9%l^)Gwbi6m^(VG%*#nGAJiBCT4iR0X9 zn3|IfE$*EI)+00N%KHyjSnoo$K%z1?vGI+(Bn zdeWI{fO!oUFuylfY)7dWi9^n5p!fX1*wH}%%Fuf>BzVqN*#2Vw`5a0{@XqPeivLLT zq4~W6eNB-@QFEGs{@6^7X$C#JiIY3Qu^!ee7UOY<6AvW`_ZCsd1#DH=2xv!w*7hs~ z-KaOCZp7G_Ml{->Kg)n&u&Igy(r6AcH>MkaJx}CIVk^oZB>tuwwQivVZov#$@+lUincqx)HLst7(1CMn9Tv zu(D>rq-e31PP-27+eG)tHA2ib6^U?N;gR0FJK}?*)+A zOAvKCrq*0y0E)^(4p)OvHs^Lw14qx{+RNGTMd6GFPp_l8f6z)P<$(RD-HTS1cx|;*{SDCjQ*_RARLMBzC;_XVVLy52& z;7SW+@f<=rsCha;+6xnnvh03%tk$T6^pEYK?4g)c3liq+gM^OIq6_CG5{3H{)B~*_ ziWU<-`m#z;s5K8jXH7Hnk<|X6{^e$AeL@9V&O}d7#UjzVo+8v9TU}-rK zWn5;t!%SG-%>f8__(jA=nMt0hGf}i5B^U*C<{;SbP2i)gbz(fnO!Vimlt+AaOC5dA zb6wrmVl+>UNM{J444^oUh(s!fjeNT_=JiN^gp0fSV7@k zO?}_}|5hhqV%7GWt;%v+HJ{rmHV5LY1E~X(H&fngMvG&-N458WxoRwA2dtHaA2k)S z7Ydj>cCHrb2!#$FUgGJ9$ILkd3Y$<-1hrz;kM<~c4l%aKM z3tkDTD}Ku%tPKcv@X^0WM&utzA?UcfVFV3%3W1OQ$8n=|IE8>msm0+b1RE)YX3v7% z^5AF{e==^sZW*5hBDoq;1(Abd2EoPuUz;8i; zk(tHe?Gvga$v0ZyG1OPi_ETh0 zaYVVb3XH5m7OoQ&-Z5P#V&hw=x~?C zK|tNfrW?hJ;s@2lYbaX;G|XBe=fP>Hp~DK(df-L)2F+ks2#0%XKxa4mFf!cS(3rPO zy*-~bb<1+xJ23X+GNK?F!gV3tfWC^)_k~ee&O0kkwKS{&MEt3uf5p9--?}P_Lw*m; zAnI<=Q@!7M>Ohh&14>hbRlXVeYm#reVS`KVa8G5k8ewy}V?mPxjzuxir(GzOxksrE zawCVkDbSCL_#JR9(A`nAcf|U-LEyPQ7yYzI+c4b-S)*#WhtAg))}X6uvu9X{5234i zzjf7@4yXIrnEH12*K8j@u$BES+qbj)w``w!;*1uT_f&@``#N~C4-nqX+_wo^8yZBO z?6U_Mk$i##ym4S)hARz^hK&peMOPhnQV{^5oNg4UKkzZk?h^(toL@NHLvbMXnZVP1 z4{7Xwd#KBMD4&FG6X3VU;dQY8fM=l?`HXtYXB9)A$7wv_x5TJ`b5ZZ2s|u@mzK`CO zz{YZHEO&2(MssF~AyGptx*nYP4GDTow2>poEivc@zFmRX0`l5CmNk3N|P3cIbr}EG#*g~l6`fIJyA;QS*7*5gCg)^vadY1*l2YN ze@57Nv7rgznTH$V72S|{;Z4S>o5+*|J=CR4ljsCqJ!MV>9%D`zY5AAsQt#qKOCA-e z;C!D=0*KWe3Zb^Yp@ z!3G<<=@k&V0(7;6;lTM%S2_ zX9xagER^8`{ulT{Medygr14haTr{u+8e(zbtJV6>)yl@z!p_x|`Km8UojEVE(Ng+| z!gcpD(ws0aELIJmGKXyTe6cip$z4D-s7Vk< zWfsHbIs$;m)wAS1D%~xo7kaOb@zW1v>97CRei|7qyf#u^tg%HyD3WZeUROpPQJX=q zMvDQ>IJly4_fU45#y<6#Z;pXf7lK>n+hZ8JZ-@#c&H)8QWJ&wIF?u|^T17#}(<9@9 z`hotoQbn|bBv4Qxm zlSm7?n=cEQWKXD!$iUVI2hzRYO-5XOeO^6l6V~^f?La z?>3dOBJ~waAV-<&!Ot+i>IToIf2;~Y69hsL@dFkIu~8>HR+Z%LGJ7~Ezz_ia#V2;) zpX|A~`w8q_>PfG`_3UoW-K~!#G${E-lEB~`JzbDc1klKFIJDHT!GXsVz9z7uz9DE3itUj?6iP54rNatu4Vsq zSdJpB%tnq7fb+KtfP%M-z-$hi-mMU?BW+FwxjV5^m_fApN7-P){b{)G5b{3`3VPoj z4jgK!yJt8DQn->UMALxPgPnEY2o+iTX?xkpNk!dS>I{8Is(5#cm%EK0DVD2M!y z(3G=o^qO+nA4};u0+1-+A&9G>yz?J-ko~j1#r6rq1Is$P6l{0r zSOt*7YQaB<0)CNzUbuWgkdCCrUrgkE93nmpkbq_Xb(lb&lqxb`1?#Nb_CaJOL-lN! zJ}I#VVx3~S#~9jHur&8t-JqE}RaW;9q$Lssys~4)rn2^{qHhw6LShL7q`XPQ|FMCG z^N`_RySgr)lW4krA*Kij4h;o9xN|m(JD2(73qiZCh5O3Oq+>8fAj*qy^i)YbPgk$q z!?wUtQq8G8Kf4UNnb8V z+C=&qg8}n6cHV;4hP?4F<}jZO&FcGY5KYaPF99?EoeCYjK|YD4v~ueKL0->eVV*B2 zUiFQ3Ea2jweBNYR`zhHessG%By2$2yTjv}ZX`+4!X(G+1Hrn2>^R$?T0)k?Wh+UyJ zI+@9kU@Xzt3KfwcBr}mAa_lM}BI8b_Pi3e=FM{HAV|?1l#j!=#z=b~;WE@9rG9$R0 zJDLvXhYFv=NyzL!8w3C|3F0Y+PX*Hl5=3rx?tUbQ*q>C6es_UgN7ysEuwO38I{GZsUq2`+L|A#Qe^X*_+r7^7FiZcI zSMx&b{i>Oj^Y$BbL__n!+|vT;*9D;6^BJrP^+3BL2=OsZ=j|5_389o1P}4Z28c_(K zyCDmX+*$4!Y`U~Y9Kjz_K;z+BJcTU}S7J+*wfb1N5Rc*Wjr=n(rHF>$N7h5wbaw?d zMXe8J0?l9Ie0>aZ%($(0qddg|e%5>qsK@*`Mca)WLUy-7#d9D%V$JSiNDl2X1olA( zJe%EuFn<<%42bk9jiUJMPNMHL=aMrl0C)F z23dtYr7UnxatsD|_xHqqM|H$LA*z4Ng9#@041$Qm^!|NCsf~0E`BKnsG`k zJ(bX!Zu2hcYt40j2tsaqiD2GIp@-zuE9!1a-wBED)eFz2%-u8yCd0L8OsZBni|gRK z0)|$V|AV01K|4IFtd2gNMYf)n)n6yJ5Jko8Ed-cgra-c}c9J4nT<%|uRvqnD)n3MUz+HWbubZ>FT@4D&)> z)@EI3_-6DiIJu*LWF3b(+n+)u3>m8u=kI>ORi(jDmT>;1G-ch8O8*_8YnB8q@`;z0 z`t5c(>XYk35ql*{-X&A?4N)=$$Lh7H4@t&NR{yev%h4b^{tzfx9;hRMDvA5?fl|JJ zXLg&2$!qSiCTOAG`byHi3NY9w1r*)AcX4voxkNX2iijrXfV8_=gqOwLalrn6rX0+% ziqgnmER6-fR3MW8fClaxWZ z45s~}a=F?^_oomk4P+{#fKw%*TI)|(-Jpr-rrPaPfmA>a*_?Erz2Z`-&B@hC>{+6$ zxYUPi1eka7pj6rnO!nM>yrd#DYXK?i*)|R=AfTLp1F(+>Pl4cz=M4E4Jx>7XZ)?xa zEX3_~)aZJfyhPLk$Rl=6zc%9hoeF0RGe2O&un)N6ZMF0$fnFJq zc2V=VFm#Q_04;YaC;B>t>OdBJ9zYB%na4C6B{d)n!V1Q)nS_2&DZdNv?kS2Af3Avv zImH3WY*W0L6T4I4og-ST{J9(_EM7#k`zq;0WkMe@mLU2`#C~F8C4%~}GQ7m0l=Tzs zd>1-BY&j|$mj*GXPmvnjCFpJ($>Oue zDLJ=1VTUn-e}9miRGw^q>uo9Ke*OzRp3p8-S|U*KVT6j?N3!fMG?kRWO<_JTEqP<8`5YBykx^_N7 zCg&zOp+G#RR|zMup?`DRBM$`=JuDy+>>jvnS~=pz(pGMZG^p6W4>4; zB13XgZL@1%iGsP?YR03)4*rf(LxHb8R3j7w$u~s)S0zKWUjp7aq6q9?HNn19l0z1( zvTm)T79=ls%KxoYKdxzV^L|RJ1ki}5U2nQc9Vd^XBiS#Akg*O3=9h5k0ZZ`yQd}BS zdAwc$0iF(yjrRq=3NtQfwL(SqpE|(N(?s@#4iXb6jT+a1ccsMtHQ(_YojzA>#zl=e zYH2>UnL%V}r=m_f!?y=iN0~i9a%T4k^kM}~YV6^3<$DAP(jI#Rl}=O8j8Xf_lmeH| z#dcyS<{o%FjS9Or)wpcs87X{}>E*KYNXiUtK=tD&zC~cc%GNx1*y+=hks1>$o^v8Tj;W_9;7ocslS1luSa;2q>H_ftm#BTjtD<( z6rbnhXXx87bDvA}I733#EDemBXQf#gpn>X`avzX*)#V(9nr0dsnrsCUi_y?90Vj(U zVSQ&Zmu8Z@vXh^x$4_<2>0$}$@c^|uzf;K|xIMzcLOOq=j#Ot?C!M&_%tHHYVP`yJ zGnQWs&nBJ)__oUv2Q%qxPkbK6yse9w1tzxSkfkI?6RrJhBgyDNA_BUA6&mlP)zBt{ z&_#1+(ghW;G#zJB$NUK8wPx}SOq$Y3M|x%x8nnIBY=PEVtW)1g=;c1d2WSVQ(>53l zh&MJ6hTHJ1r{J6}-O!ZrEY#+S(s%0>i{T0Wa=mHcX8aFS2Rzwgq(oCM@6<5f9w!SP zqcfMAgTV!wvzZ3e3r_VIA})l|Eb|{5rWX>ij*sCr)r4%)w5v4j!jsXq3B`QH6cOoI z_j8i9f-^Xz3Lh+Q@p1`9Apc!S#p4Gl4|ZcBXs!o$k+%-uKe zoYm5|bj24?wtO{2%dJy_$;@jZXnSQ}4~cArh(DsBAQ#uKVZ#VX6XUHAeT<0h0PQ5$ z6(U(5(>Rs*Dt&K=ttb&|xz=~oO*iQKLM-gZVJ0L{3W@QOed^bT_l51}*C|6lJdoXu zFt*ZOHLD0LcDK*oZ}y#xu*FXjZqL8w&!@nkZa=%)>d|_x&cA`cYKh2x&cN2pOW4UnBr!8 zp6D{KK-dGW_X@(V<>)N}{gWZC05Yiyn+SW_AIyGLs;0m`5@7^mnD8H#EOaoGV^i@S zVuBx2__)0bRjBia(pWA(6k7-zHvv#3=Q1LE!;zAg5j+b_yoQ+AA`H=69efqfflhmi z%Ea7t%{JBrheE!|cb(d3xyRyE3epBb?qu3yKr5YHOJ;ce^X4ph;>*C9wf-6s*iZ}b zv!Sf5C0_xmLzKWn2y$2OLm>xg6yZDio7L1-0HwATYF01S>bk0>WJ znn5bZd#+ZJ_R~lcJAYE3hw>!&n%e$aBP<+i-iPBHY7j%tp$2nfgWr^E6!WueX^FMJ zUhWs5@qwAx{`v_?XMa5#R#>{M?|-hkbjBIj+Vh!_Ao9$;51`aXBmfc|53Z|6g2`;HK+IE#XntB>C0C$Ez#1!P&jCqj zkAnspBIJ5tyukLVbSji}^HKpI*uvR@xj;Y-1b7athLVMnUa21G^$EM^t z1{*5Fv*`!Wstr66rxNA4*^yijMCm9UEipMkM2FI}bbe2gTl|~r1yW7?5So6O2o;oG z=5NatenMO{=6kk2>^@tsuA}q?I2R1Gi5ORrOJK3pKx}lL$wwScP6Zpj21@PKM*6bPt6e zE6K#10Ac|pm28q5sbZ0jF~uVRtbyg!t|r zuHS$PDgrTOu=qhw>v=}+X67fTiK_)?ZT3)ov)lVAZOnIG5@O>(bm{CBP{w+9eVc9F zT_3e;1@oy8wQXlzL&E?|kNE(W~1)Sauqa z`A~vuU^lhlxC-NGbr6AttsbJDI_csE zwTpaUAc;R8Cb=wSt|C$_CpB=e<|<%jFt8&p*O&rNZnNXA!Wp`$*oq}BW@)43INrLi z>p+^dx`lh^(L8xsDSG1y)y{`@eKTFkkH>;8BsH_47ObmL@1>XIRRnTP?8a2!jpioA zgDAN;mdt`>8Xicgb5FB*0YsaFbwm1GN34VF?8+49K&yC(T6Jb~3jlCYuy2B^ENZv3 zD60tVt^-D;tFCq4$|LPM*PSPk<73hr673`6BX#9&C0Iki1n3Mm=|Sx!6z_ z2-nHTkbE@nFIIkpJ8Z-ty|4e&zU31WNJq>J!Fl~!=TrD^bTCxhuc`kE$sf0rS>Ngu zV7zLC?y`h#A#Hu`_!5Pl^m9J z1=weSl_v9m6h#Y1mtzBs=>Xo)N+U43Mx2hcMkQh%%_Oigg0dUI zTop<1O2#!2q0)Y|1gSlG2U{EI$YwSk2-&l}Nm@t$iF3vg;jufyg~#ql&b){yXLY;% zz5Odrp0!!E-;9gPedU0hq@U=ST2l|n2$u@z1|cFh8;0dHmD2% ztD7UbFt{2a-&@19tj@PT4CsyTezhWZYb1gqAN5cjY&=+jKwYMSS$RVUm7y6T$Pu5h zl=e1=WtHa62!VYMJWR~nA_7Q1cYuYLA`}wX73s?LI=(QbDrM3CnWX1*Me z1D~|9Qnku@C8F(tb-xijOOaSss**7DsIoJCm|0quY8;kXJggwZ#muRbKqp`oI!91jr1;^4lV9tdB+nXov7(EF%(hp-H7j-sq{r< zz~U!SZ$RX+n*U+Y##7<_i1|Jf8*N-^(!GV!kX`550MA!)bN?e_?=w@0LSf4zl23`o zb4s)vFW@1r5apkRcH2^;m9`qCKkPBpposLG8WlF0$~6(FVn)FHc6mgcNcAfsvD|cK zuEt;H^=LA;8srS#j)=ONuytYaHmYrm@D|<}(T^KyUKx>N86%3e1zQ?o9Kw~6vJ9-S zwUppHR6Tp|!>BWIN~N5niU5{=qtMYv4|^9tuNEpd%#iT&zOZi2(^!x3|H zB#PM^jICUfH*gZ1)iGcEX@t)=a{%plMpQxSr}*asaTi3YjX)m1RifF=C`JI2w1ppM zR{=p+jhVdl>mS2fzY{K6>w!Ohu9g3>^j@=kKD=OebA;P!?L%O-iU;}i4EXWabj08W(Dwr@>32F-T7L}$bJdN}waaNCn_J%@&+$6-xpVqXpaih2&pPUIkVh}G zx51R)6?KlUWcLhdT{3?giL5;Fcr@v+C>6nXp#1UNt6GlePD!Cp+ei72Z?6bIu7BVDC}RIcH;++{!55C6?cF_&8eBJ>m}h7}2ADAtQ$2Emrt3jD4t6$gJDi zhWylbpv%d@eqX(YgKq}L=>c*ZM3;;4Aqpk-c#E|l5N|BnSd?Dve1?*~UBnor*2lRLqW^@3M1 zZ$=`PzsJyLBuewgbe3bh5xy>P5Im_4sLy+d&^2ZAKSvu1R-0E=xS7aLc;<|RKUz35 z8MrY7?Ub8BATAyhR3B@VU$e`sn?rPSzP&HIEkqX=P;p4^A@aEj?aE_4X@9X@ap#i0ml@jk+wJyL+*&DxoABnD|{%qQK&1#m~^cA+N0dQruEFz|;^F|4KhA*6wz z%m(OB{frykz+)kJz@O7{ytGe)ZCM+hat_oV^%HdQY@3B~34l7-ZB|!$-#Sl{I z!VD0fBL&doASCd3h|@r?A;N-?448E7AUNT^HP~jY0s0`j27cJUj_-!>+5Q@o0~d<8 zVE=LeCJ?G{7NE?~bC(k2eLo?ALx%_aehm2iXuCtO%^$;UE$sw*+PtuiG*kYJFj3zF zY*oPVVo$uT2Q_es8veO!=t3D{WJL3cH%3EF7Xd@=zfSr>MDIzbWpD6O(etfU8S zwzS>jlXwbbZ!rZDv4k@9set)O$25RNyUTS<$EZ{#4^6Z<-m--6BCR6dULFPkk@_6y z^)U-We&Ku#v5MC_;_Tj#`8p{6s$sbPh*Y>rqt15Xiep0<5#EZT>Cg0 z2mzC@n)+T!#PcsDlKERY%GnHNURObtO_)vHo{*3)#JhQ0g2ghoCA3>QlKGtp3UT3K zN;ESurT3MwAxa6;j6v$+I5b;qoY zru;&H_0K@kzZCq`!jKOAD}h|(OBT8lW~nR5p)H=;Ld`cCwg9 z2#n-A$W^(K3Hpen?3{stMHrcAvY`ElD!>=wN{eGpPhgcp?h9X+AQqQBxeC$M2iVdajkB2cP8f4eNiyR0E-{UQ25OxZJCnSumfM^(}* zgiw}aT7laY3r`P~u!ZiUUmj2R>g zQxVp=xD{m+nM;YeQGpAMVoCi+iOr+pHIRS#F@Q)f{Qh;KxwtjfXuChy^(U_=#E3nQE33$T&=~jp*VS0H>s`&rP>%{DUuA-fP5#p)uDaxx* zD0-Eek|_xDTEz#F{ubx~_MnJCk$XT|o9RK^zK2L+v;`7DJwVrHS-o-$iCK`Jcd|bn zrQ&W(ga-TA+Vr`ZSd;(tsxcR-$?= zfD=!FviqqP!T+6K8&P5EK~qnYfG=p~!7>sER%6KmLH;ppzA%jWL#=JOY&eMG=x|W< znXSSLZzN}4M*PB#%J8hE%pYqF954fa0lpzv8yE&X+n{KIkjOkP$Q?{@8<=x~M5OJzM}qm351m&SmBVjf%n?XfeVjB;f%TZ34V@HbM4( zTE>o&{TH{=zb4F!Th*dvc$A=A6y@R`XoTki0=c3U=V{Lk%7Fucq=%(^&Op>f8x3|c+ytwFF z8jKf~;u5#FP?TcL4jM~?=C+n@_PL;MYoRNdn8wr%@sD`!2NT)6WPWK-jo}yQ7I1yR zBOZ2rL3Cd{{+9r_1_t%G_k)QzP1tED+5$Rih=R+J4eTt0^TnNuS-&`pL6c+Qu=wKs z9lX28oTWi}Vvr0RxytJvLbn2-f}*DLcnf?v1v~(Ah%5!yxKNPHXS{dX$yKKLi&nzNI6Ht~ z#KS}6aZSP^u&JLoF<#gwm|aaES-1WH({Tg3#0>PkQMPEnl}AGBN?>Ed;GfALc0#{IT_JZ35n)=lACG1>hTU!+@GRkv zKwSi4-8tuzAm2wG-Nl_gNkp|Q980)%>^la9*)(be&NqukDXbgWiqOG#DDAl(dT5xo zv%Ad>yYL|P@wV}OSTO&sNcSk*nfsfdvj0Y#^Kdr7t_})r^!zE9Iyv?ivNk2k?lGaB zQD#r!8GpahtHwx@UhSh6{JV9jlHdbc08uZBqIBeQ8 zBAwol?#rJC2=(JCg*{CUfz8^4XxxL1^iu&F86K}>U0UFoqQ69x^FXa&?c(tg5Ak}uv>)_9Z9VYR zwY(I(A4c>A9O(saL>t<$P9Nq4N~qEa>Um_9;8AY+&XERK;pclW;kWnP+W_vNA!e>c(G6mQjqM1pnH;R31aA9LjMYRjJ zq7GCQ?grxS7+BA{;U?S#N9R6BdfQIgr`?Ywl%_CyZ5G&9Ods!~pZS0Wj#yim&xb+` ziJ435*w-vKf5E9M<}6*lXw8D&xgdRB+*|vlIewAVeaxKs<9laLaO~bO6Q*@fnJ{d8 zZ?1spetyBRO_O_1IN{_ask;yL&RfxIfx~ryJ13V#u;*vvRHrx7J!#y^MT@577A{#f zXE{RX-7BYBy_3%C!c=f!AQ3Y!C;frtd;!Y0c}MFT=4Nx%^?m(MY$z!pA9HK0-OAn? zLyG3%dL|qnGZXA&C{tXAi@%QanGqzJwvhfNtLGIkM86(`$SEt)O5l9n9g|OV!w8qO zWCxw7#Ilzh6SwEzq<<7MHy!Fx1J%LPwWW zM!gx#)myzLlaP=?p*(+=d!h@c_x!+m_>eZ`JyqH1ull&)WPTUJPxp=j5J`$;I zlZm^&>LGm%NCZOtvxO7dr^N$;yOkRTE#CbMU% zEBM>`-`*_$ppFtSI|yg0N&8H7E&t+N{&o(3y9;B&nJUvXPv9cWUQ9VoU4|KTQmhYi#G*w zmU`}zWv8{BxafovpNdA;Mo47+4&>E{^t_tE7rWG?_Ppvd7vNSR+WR-*@$=6<(=v3YrUyQX>b=Dgm=i$Av^xLu7nqXf%FAQ8dPzGz>7E-}5jdX&Bn=P# zx`D+K>=JmeZ$0B;_91E>D@Xow~3wQpZYDc)O zE`+hH%->bzGQzg1;IYE~!esvs{zgDGz#*iEr4Mm5OGI~ zv`^K~uogdQ!NubXFT3RXqv z;O1`7!C%5vwm=r3iK}T_YYzSRpboV?c%ab&ZVFaFWTdH=A#uo|z91fe+(Z-RN#Ga2 z(APl78@e*dh~@@^U!zVCstvMH*Oq8Z)XBSt8`hfx0|kFVxIqtlV-c5*Sy68iYR=HI z!jmk;NmP834R|1^Q=4K4U+Nv%>{og+|CMe+Er)`4wI4Fc=c3BW2-}D;eEceVw1HKl zIqd~_dYpzf^SPMIUTBAzTS?6pqt;*DicLe!C;mXqsfw1&PE|6=!gH}GZ1rGlVn@Mj->&!pmrk#3i#&SYvi-7zehIb;;~D4A%%Ht}C;)aWdcg;Ode!d<%vz zY)(5puP74vTn5tUxx~4JX#W#~P{?Uulj$_- ztU@rX1vn*O1&L&rhJ}ujNM3-x#C}q;;@wf?NJ7_jnr{+CuA%humjb>cYiwuQquDpZ z3g{^j)B!Tig;Z2-4Kd~r>4A}WFDcxH;Wxh)0QD|>Z?yX8$SxED$31ZMIob1uVyxwB z76yR}M}kO(okTHFWGeV7R{E;!uWYu)S7oj7`OE#ue7PUgk6+s=4I=$$pUM%HP*d7E z$#+y~!n?i}nkoQupXrkkJ=s1o?i?4xocZ;kkXPx6X?vsW+c@fYRzSGp`;ke>KmaUjk9dNky4#1f=)5|+R)5tzn09Q!j=ePpz5W4NDA zWx@`rHJe#a1xR83EfvhZu4qrj=FarbeR+LNL43GInabVl4M~aKalsN~% z_8Jn(a=87ccl#k=ctf|oU0^46^G4k+2rb=6-!!`x_^!uxYqE$eX0b`(=2r2hEy<%% z-Q49+axQ!^&5*@L*8@-M**UssObU!cL|y=rx^7kg<1R;Uj$VQ@GG!4oX+iQSfEOY? zfr+Y!D5fR~!r4J6`skt%an8dGTf`MQA1zgZD49vcb?B!~T{-GcT@%0GdvaO-0?MA~ z2Jp`?F|BaH3S^2v*5vQnrEGviYj_ks(+;bkkD{j}z>H}^4C?O^Yo+woF=$zOtxTt( z$Y`Kx4Ie`iwub?c_Z=nD@uP51S^$6ovOq5gEM?oLQ_w7E&kA5-<;}Vu-D(89XzY;3 z3DJ29Vwh59wDvtP&jnL7jy{GxI0}Bb78L1;C%5q7;_agtUU^Q zApTrz*r;1JinnVH?V5M5K+M!X(g=!;dCd3A@(Xag&YLvwpcXQCP}?W*2lb|9c%V)E zO|0;@QP>+q=wh;fIk{NDl2`{K<$$HqVKO~!hl17&EAl#w2M4MUH_Qe_LcZ>1?^MYP zP~&g=_yItQht`B55Bo?1s9*!;+1tW}D;onAsVXc#g>F}n;}4=a_i4O2pDH#d(f?0# zBHfP$&7na%3fb={Jx%H8E1W&5#cq3hy7?k_H67lbqO3h92nWZM*a;Mk<_m{#-eTN3;Cc3R)aFa)`Ow}*STeJdtc#BfsW(LKcwnBIL+*#ZO}tvdzXd1`jmps zZx3|-XP2Qpqfp%B9`qHAet#0~9&b`Fk03-&-Qnl&F5iE!@@ z@^GzuBBe(_u$~w(QFv}KF9az?!`AxfPfO)AyX#AcHMs?6DofA|~zFsZl1}4tk_2vD`a%ta(7dG|s;JXvuaR z9y56hGhyDgVin4NtI)PT%V=8>;eXe8kI-{Oh8W(Bz3O===OAtEPIi0@>>ZVv8;>Tp z1=RMo97Fn??020R{A{ ziGGvFPCA3t5FOPwcW)PVfgiq0V8jhpQFh z#%u&J2TL-QP4VP)WzPEm!{pv4z62*dQus2K|49sNnp~bMlM;Ao{*rj%-!p}VL(O@w zucX$>eIlq4;0j#4i+g&^e@~;;S!?QA*tq#bd~FvSdOH9{C4&%pT9}Iwy_bQtX#!yD zgFul}D@xWhg4#Np?lS@71E&Q4!TY!@#GT3GzGU`tq=7nS3wO?>zx{>{p?GRjv+xfUj*B5u ziCT`(k+pUt%v0(mdM1>-u0;p4ssCybYQP{T%I`Z(jTi0!sxy;MEi{j_L=&?}cx3%p zE>33isZGT<_+y~~e=MJh2A+GdG(T>UkWW>)`4rHQ`4l6!mU2G~(7OXEI9%|<4y2aw zpI-LcTPB%{r_M^c@l?C<>P}xg#aH_fCy%G9j5i6qAGY|*Ks;4}&D0k`I1F`Gc?dE} zZhcH2O+c{JUrSdIV?tQ&uQfuY>`vsUYs%$QYxSCPcr0kSQ)?A1R4N<@R~ERnyQ~IA zuM~qw+`W#HK>=iQjGFRB2cw9_f8zaEJur$uyqFtCb6B-dl?7q$nV8kxG@-QcikZy+ z*a;j><{~p$_^GoJwd)DOb}Hu2okrZ=kTOpo%_bQH^p5jFxk~$Jvzx7^>|VbB3J&kO zumDbRdR>}UO3HO%`fiL{Uy}*85O}`4&gH|)Rbj3Oa{GE2K<4feIt2vVpa;4;OkVHR zMucd$gygii2im9&DTbP__iLpGA{gg{TrGPGjFG1@h_3`H-RsL6v(`Ka(`Q$wFyHA} znbH7+0xpMJysMCP8y+TfhQux2C&=aGeyDA;3k_lU-?hetB735?(rppxN8$E9_xI(( zziQ#{nE$GkG-MW?2rUjFa(%6iA=$-{oO9+e!Ke-VzPvHVhmYTvW2|3QgFNTq(F2sO zk5&tql0Xur4GzvlBD-D?E{20+UxM-YQC!ZYVpW;dgqZ%N&`#*0wf%0R$Xhd+zf?3L zxlfYjrFd4)A?5ixN*C<;>g>`jEP@*=}N+GwDNx^DS<)K=zeC4Qr6+^1Iff!ea z@xm4GXu9f*bfKrKP80rHXW|1AwRP1fhrU8Iy6WV$DPuESmcrl~-4f}SF+@kPBCJj& z^Q%*uhVKf<*`m>u9mS?|&~ycRKC)@GmCj~J9_QfAxbSB3|2^DxyiIc>!adOUwjId3)G_bWvMA+-iPQ5aV@sx1W%&NK88 z+JR@zUWJw`R3MOX6`aPWYYY8Z4>EsG)q*p_z;{p9CNo!oX|AE933@0D*qd)_&9Cc} zN^j~`kk724Y&u4tbHJ>C0_PM02?NbGI29}GztXpc(Wlk+K5tPuy+#$U5@F}3h%AM; zGxbjt=|6njrauiknp5hHD(5QE)awyWw`g6vUHEgIOzQYK>`VC_fO%57BMLvKk~yp; z5Q>Us*Aaal(b`hl0wT1g7(BhppOH>tQYckvUoVOqYh!LCrGhPm)kHFz2-afYjll@2 zKa^DVRhzfqVfkK1?X&Mzu{3upPS3p+&2eTM(#5xmRf*hC0G)S;dM#&hVO^rRh_pa1 zT-4bzv8z9eHDn^bu2GsPokPV8nllgH7?2IMAm)f_KVeF3S3gLeYb9fsDEiTqi>oCz zF-W&3mEox1^YdZz9^B3)K{~hg|B?0HaZc3v|M>g;o|Z|Q-A%ITnIyYOcG)asCX>m8 zrHK>;=_n{HARP-J3!;KbQxp*td*f8Fpdu$06wBF8&vu9PytABosMrhG3*YB^;qE?< z-|vr|Os4HjX6E&Jy`Qh=>-lou#{+}&sBlgTK))tr+%0)7LyN>^k&jD?I*9Z0rT6$``aA_;t{H6XJ>MHP$73-7+Z)c8O zt6_l9nd4A3zJVV5PJ`A74sfN4uL-PSQ#1{_R^n?JpieRDF$6E)XS5vy1-FS3E1_Ah@u);Qo8%Wc=5l?L>R6x0pNCvzf}K#%v4KT&s)(!Wx%%%PQMB>|1w zbR_aoBQMsv%*vGz(cz=3XC-895!c|y*@TGaQXy^(W^4<-V<$0Jsi;kEw-mACJ;d+2 zP(U7rHw;#qh%!`=I;ap9Tni(jze$)0x_S8y+$lIf&t8dIL>P)X%*suuu2@yqr)+ob z;<-EAu8)ZJWB{Q|33qERLYb)nQAHa8eyb45cs|YHpFS$^kcKN+_G&l8JjN-QFxQjv zOOgsAY`O9gQKm$*WqYCM8PMzz^JKC|Z-1&uZY+y=aXYBVCpN23HnGLQm~n$a7X(Fw zFa|;x_N@oi`Zv?$SWuL<)WmhCgx-Os@=irc}MsLDgkFu(sQLqZ-Ax%?1qD) zpaizzo6OPJ48()5bBI#>V*bCl(V_X%4}~e%!9RB_y0r40P8v(F60dE?(WgLd@#stb zJIQgp=xly8IPgR0(BwMwpMF5$?PnohUgx^mr8VUtjAJ+D5hhie@+wOuQ7-^_34Bpd zeT~(7@6odPP=j%FojfducP^Xvura%_EDB+b_gw&{dv=m*8dMa<9@B}%g#D(&4OphpT-u5x-z-9dl?#uS6B^wp({qWo5PIP+$!v%qy_gkx z<2*jka*QO5VUBuQirgnji+Rfhh-j5cEy}Z$DRsgV3eczLP!+{n@jVZz*Wt)eaU<{s zABiFm)6Mb2RYXLv*B_t}Q4kTJA-Q*>$}@mVQ1ddAgZ{U}Ahh4m;{LNluL_Ez5Tt)l z5U`G}3L+3gG{H^K1lJduik%*O4F**g$s zH089sjM1aHy~SOS$r6{;BEu? z8Qo6A$#@m5Ayg3VQ5p<7S80;jryeAsQ2>ikah&)E$n2#&y`)`wTLMAxmpo{fZ^P7| ziX;M8h_Pq2g5uyCD1&WGXST|-2_*&Aid=IUv%$)?qh*&Yd|lKA$})Y_&87&_(?xY} z_xFOy?>=_j-i)f6`>D2egaGkyhR=jvT07zpIYYX(9XrE8m}^J44ucH1+i^*NcKgX* z&#+eMKqI-;(9K_UUbXbA&e$){$%0SAoNoV&uVKG(HmU`R9-k=hZ}EI63kOQghr09oOi*nx`i; zL%jhd5gicF>_E43u4!e+t^;{t8qq$-Ltz3B_kAu4O@&@vP>d5p*enHE+bkDI_gu$I zQ9)HXaC~2=C;oU8a4V zERJs$!YH9DZjyYUQ<~B$9Ez?}y zFGFV%24m7mgln?$%oO{%jy{%?pQP-HwGS7@~#@JCieOk2d4ba;WxwvwR7mo9YoJgrT`4)aB@E^vRp%x~hZA}ZzVZCOS?`W5OjUv0P9ST^txBIuI zi>Cd?a{APB+LrW8-Pn>omrnpv{QoA^_HuPgT6uAZuqB{E3LZ^>g+H~aZu+l z1&)F^aVt3-`Z1NnI>t>9J8 z5_MU?b#q#`oFGd0jdLz?LqencP`o}>y>%s>r1>6<%O9rMB;q%MRM5CV?-?YlpT-S3 z%z#Ide@I8Hr~q8$2ff9xKVsxck-fs)g;ztXZ!(xODtL91@Q~%P9r8Va3NTz3NR{Qg1B87oOIIA_{zIJo!SH}l zu$s751%+)oYo=N-NaNh^whY`KQC{G(>)>b_N3MOWN^5; zqpTOx0`B08X(WGMOrtS_=S99(!9JX;koW6qfeQ6$*xVMowgZvAajLG}hnk-8i~=0F zUncM}4{%Ss3nyh68SOziqFc`$6-i;jZ=ha%Q1(PB`0^k~f<|>%#)Vhua$S4rC{-Jl z;X-k9bw!rdmW*ybBD+I1IOj)YHZnsm8w5)QK|LW=eoSWbGxRTU*Of#%H3LWP$C9NP zL}e-KFT40p`S6a|A`IOb)FaACSX$TuB`*5ICf%N5~?Oz*C;c^zSQdr)%E zUGoaX^=yW_=GBVOKO^=aEv3r&ia0cbQGL`JBrqRO{JGaDqLwL^D(e+td0M(05hfqj zpPAM!RiJU>Wt)kDT3JKU7G?dpa(PkKvq@q78o>QI){oebzuub^;kIP8t6XVUBrz>S zskW;Z0K;<6G`zHM3Qy3&F<+$!zYeZ-m2HS4nrEkV^~RtLS`i$EvtPP@Ms*%p`Bn`q}Kl5mzMX)aUfodH~n z_$fHyey*dG9|?)Q(ur9-tPy9j;+~U5<_jMAxlk6Ggfh=1Tv7B4$zYs5G~wGrgWfrNI7)`bghMk)Y^Kf0%5-Q(ui_WvK3F#~L&v#9Uvn6+K7QDC ztBmy)j+kWbx~DwsD^;hTGuHVbQL{ z&kqd%$J>N)IoT1wN(tvMCmV6X^Z3YH+&9QKC(DQ0&YUbt75I@Vc851AvPS9)BeTkp zM-%@6&TUSXZxGXtyksm+{?I^sPWFET?e6)*18x7jf`9P(c7yL^EdjbHd$q3aM8GX@ zOt-+r&db8ib6-0z+fBhZo6q1uJv7{Y*~6v~^jrXSuX4t2@TL1e>IyI59N4c#L*YR*gH~jt5dQl(;8lF~UmX1}mq7!i>dufb zvo3(2)P<(frR`Y{a&VWs$-haDcH{g2%n-b8`PP`^zq{()8uK4BB4u>^6OX)abfU>H zWia&V0tv4B9Iu3_|QI^$w#C;`B1?Evp{!lq(t76c7JgVOVsy5_vfgn-gso4 zu{Ge&2HA%oni-RhWvr)wx{^QFkR}L51a;_<@Em`>23@jGOZXRG15d7ZjpL-mamaRz zLvQ)X2@Sl~pc7h2j-%`qfr4-HGwK4rfCO_4|Mb&3MviD;Jw^{`Yp)pZ0^zB1pQHzh z2S#g0K}@cU98JkNijV^oTs8!u-|VGpDZQT3HFd(Nf@ddV)3d0*aPMUDv@E6!;3HUl zh4n7Q;GC>i1n+VJP6cwD_^fhn#d4euMmwX9kkR3>QroI~dJ3q+#!paV5s5sE+W=sq zmsw;HqG6uwZdlUqmk@}9GXDS6h#w0&%`#a z!iAbCAi=ex#cP6Vcu5LG5%v-)p35uNia}>{o}LbB6xcM~V=(O<(OG2z z26Fs@f6e2%g)SsAV**P=pb5wlZ?rBsB@jVLs%~8ocGs2HiP{xm8m?Ry)=eyED8C(7 z2SbTW6*q)~wadfuRiKWTMZp~qVz%x= zku0V1+6(pS*-VJoYcEtT#hGjnJns-`RTHKm#{e05gL1kcbv1czmmy6Kob_?Z^&7N( zxQO^NP{hsZ@(Toa4=}=OSd8urZ8_hqjG^D3FQ}J3=2wmn8XGemS^-&EjrLj7cplkwj!z9!}373T|M0&;tfHR#2c=yKCINOZ7^k}+O{mpI;W2HY4}PT z{o0*b!e(jmo&LOI+~rqpAoLDVtf$(%jg&s6F!cTy?57tf;$S~S-x7qbLDqr9t+ zL7@k8=gGob$b3vxL{yLoZ}^W#XM4Z2Vut*V$j-`BD2xA#*P-c17giH_ikoqEULNNH z{t(W4#<>bL!$PoA>M8Oa>J-!_#xJ14@38IG`62@r@Q=0re=02GqO%71&lf|rHw)SX zjHyv}gyqot-(K)d0IujG+nbc9L^{LAR#Wz;ez+x#d;n9_MS%Plkvc2C*L#IXyL`el z4x|n6yFkDif(mz0P=A==K9>p5PP1+n0c*a@i#WZH*CWF0CJ4mrGa9te48+WKXa-|- zAITSquFwoXCcgna35azCrGW^gCQQkLr)y6qrRJL5r2}5+QM0NA`LQH>&fikAA5F5+ zvxKRf8L*u+ROifuGKcQ`sw;K1t7k}eUMQ6=$Z8i8XpfZ8w+~IZpucuGI(#8&5I!hK_RPj5?-aBHx|}an zX6m_8`ICaSk%&?A&&`dqD>H>FNDtfGh}X3;Q{0G}wj9>V&Cc?xbWjMyhx7Q#qSom7 zuHU9h*UZ#@n;sFSg|%;Wfj;D+3zqwq$bqV*xDN>Iw~$6JOd_{ET__mkG12C!r;Upq zVGTA){r*ULtkO#_cI4}-#}Z@ag2h7!nH8mf?Z}ND-bqe$rW#|1&pRbLr95?9d8&}s zwvbi+KpKKY7wg8I?NpqF9dtfkWj7x)oGcJt|)#K6vdCR4R>4l_Ag*1+C z-%r+SU1?x5Rm?@r`-yNtLA#Hv*UR@2qP@Z{hOAi#rFmZtggEGz13~PXnN}&Z#G%}C z`rF!<11100`w+p2(Bic*a##T+O$50&C7{vhjvXodu6a*S*VW$t_VnqCPVBj4{=6U_ zvVdAwdv(7&UjxZ}B#}>r6qIq-K=-Ly$b?!_Gl_Hz1BVpmIa2AQuH!Q918Hq+8ijLD zO%E7f=#+lraB@r<9gui`Aj~FKae?6g3FQelx z=tUIp%X2fp66R(U-JY9aW^JmSWN0ca6p45+?%G}_JmL@9o~Jyfhg}~}S*{z=5Ex~@ zZ=LH(k}w#attKo2s|z9G?QNnc1PvIf1ZsV3Ghb9^uB``82rbO6*-bZ~!*egTFDu?W z7)@wEoq-W4pU3;jW$<1&OT!+2tqwM!zg;R-moe$VkxGIHKLoMJsZ{OZLa$2iaWQq8 zWkUO>cAcpG5_Um{9t9wu`p7z8!!mfnR+2dT2qL%Sg|+qdmAX%~90CF>$E`F((jt|M z2$o1;J4bpr=xEhY;eQ9y+8?nJ-$7W&5%l>rbEJRO?hItz;G$xm4&F~&eFVZywf7Qd znHAHvD#n4qNY?AVI4L$-i=7s?YJ}jYg+-hiv#3ed zokhr&-#-Bfk!2IeBa*zJNgCbcz5N_IQW73IlAVg}%HJZusGcooAwl9bIC-nnN7*{P zVc8%w{v+CEK?qx$1^V%M=o~?MRLq}3T&}dSc0PU|WD~%FZ6@y9NJH&5bl^f7Tf3bI z`HH=U8$Qg!vP^2!a!n`zH9ABgQpq*R9U`3>rz5GhT42JT(s5_CKs{m9%VL2lY$#Bu zdYm2BdWe$naWhDFv?)w)DY$MUv>fKU-G&62p#wVD(TpMaZ3L3kVeygX2776auLEL* zpYHS!d72*s3@@`at^HGoB257-0;O}>aFWxjIi%TNa>Xhh5hZtP2$(Ghy6`fM!viCV zt#&c{i<;y5m#1XFS{YWLQ{3>oD64wN#kNW?_Vgi_3(nVoz5kCBJ{oyr6n+UFwY6LW z>;Bg6;r?9%Fw(Ft^?1dUQ=3|u0AnJiQ2fqPEMA+_&i2Qn*0fIdfw*oDEsE@R1#;A$ zg>Lq+qU>KCoAFO~u>5<`JC?A&D`XS#+~Q`RD!G})5lL49ulekRZVZ+n_43QP+FVJF zmQyRlpBU>C3*Z(~YdHiAXP@MWCBv2R=5EJ?IpsUbqKf2$QO7|w{5y-nk zcneunA)cZ;TjceG-ZohKBqhP&mOt#rCZ+_m(%69V)5_O_6*%0sRw%uovKxEEQuKux zF06anhb_dA{qKIjt2hMCzg1UUjP21h@!;Bz1R&1&}U!>4CYndLZjv2%^1BND) z8`M9yYN3OKou8+X0`?;3Bd59n4QvfHtvs3+fPHTy0z2rUo$I~t^wUeOBalEWKNHjr z^dtD0weL|$S(9|6V5+iyM5KDZpvih(H~tznbwk#(@Ug4?vi@HmduaarLq1m4z1sE@ z6>Z&qgkaA8lt51LYJU{gfs_XiYjF>|9}hhGcy&8iI*e)a=mso9Ei#>o&z&$>`%`tj z${oN&LZ-V9mW5GCzCYDqJ@TE5^V^>~IH*UZl=sU5$;v7hLCOGBu6jE32jC;M~H7pDrnw!hk{Xtu`T8Kq(kmXdEQOYDI)D4gG#f@L%{JE6QuhE0hPl? z68b?*?x<%U#DGKp){ljj>`sWNPoAEVm8C$1nov|+H9r-!BOzup9spbl6?`HOb@J8n zNVH7soFW8kGs4>C0>*-Poi7)tTIsQ#`jNQukd3MBh*tV0pSBK5uRk$fS~!#Ol=Ly0c`71nyt3A%bFuZ zd)byNRYk0l()x?uf^B;r#}5edwer`B7fK}R2? z^cKl>hTjAWWC(YP52fgR5s((J{!=Cl5Zzx5q=UHW_xvNp9+F}B``cD&hzhv^`>~Yt z&xBri4EW{SoW-qS0WxQkJsvDNNp&q%u_S_iGmoVJDF(g$IC|R+ccy2 zcnk8SBrL$Q{g^^YN?M@`#Xm2(~kepP?I3eYE zHOW7~Xvx)_{#&%~lRjuq5-C?J0Y5txX1!LM1O9pElW?!-y(ir1Bx+0CER;mz;dHmu zvsyddt-YKS{r#J@Q)UeaEBypPC=s% zKlo{qFdJ_Q78ABzLQBsIkuFF;5LZD(5A=|#*C)I+l*pI*CVZ?R;#?uA@1{tFXqfh} zO7EuFXG!l1o!L^k)&P*y_e@`UbrK-yUy^QAypKvre@hBhpL_*GYj#<}`+SmK<`WJc zf=R{alb)v%hCt01lN6*QV3slK!9H|D(vwfq>yx_mV$zLY07UE; z4sB??1c9RC2Q$7QP}1@Xkijti-dBYy{WJxh!t;5Kl?Lqd25=hFM5?{eDX@*I2ivVf zfgRR`ozGJtyLARG$r~sTUD2Kt*7btiFgk2=yG@|Ea_AFukbAM zj7$41r6B7u7DDw0v|m$F%K0T#Z)n40JwjhrkV_^7eSb>&PjJyUne6tlq8V@*^NR7>^KiJnhj{eFOu{NAS*f^i8`7X3Wk$X^;PjkmrfM0Jle$ z5qdt{SD-IybU9V84T@t#CfBuDB{acYq%|$FZmvg&j<*McNFb{aia{F5I2thFmRb#^ z=&+}}_&nkaCv-DpPrK*93f&u@i}D!^+(x3qm?#`8CstD3i%*ccrg+}#B>{L0EswbeoQzBlugi26vM)ny6$0)3I1|-x= zDT>_2BqH|F$kUXL2F>H{M7v$O1QH|W&U3|q=*V3jM$}D&oRi=kB{l-=sQf9>YFi_~ zcO3z}j}aXDggx9qp{;gkjX&I-WzA3>kC6g!Hz6@k2y68favOR4Z{3aGL=7WiXjIOLxM;em)=IRlEcFGhma zmWYC%!5PVSk)Jz3JCmX@S~jZJ9%^bJAImNUY0uK33m*~HONxNHD_})9464G`L~+?d zCW`Bc;#NpQC_ns=Xc9jVJ8FV38tfookYFxhIXg8qA!KZ{k~cs zrK7x%BoU4v9kUHM8gh{;{3FDY&47Jxa&u)!kWp_&{Lhs~LA`M6fGEjD zMEXq48piv~J@({0C#0p!d=E4SvmW*m)po0UqTba|0Rix_Cki%r5Mx~Mqpf~E0A&r8 zodh3ZY@)V4j4sI4<>~YxSzR`PzzH>WoJ-i1Ir{t`H%cXL3) z^xD%=wW+lHjG#^Zm)#Y~=GFjOo^T80PYOv9R%Rj7RZ$ z)rS85IX?8g3|Fybk2rfY>s}Do&G~V6v^poQS2hr^nNEpg*s5Zy?pa8OoD$cdRL@R{ zryR^;9Kfzry(h&(#mn%5Kr#h%zLlE#P&8CKCe9v=rfLt?X%9pNmdxShH95Ty;~ZM!4Zoq(n8k2dSZiUx%0_eT$f>i0+gXZgG54_p5Gqh4`KR9QU% z)0DLZ584*|lR--nu3vB{Tn7TSUfU97dij6h`XST51$okYNhenRQ8%|l&*BqUP824zqpYrTVnoo^hPW75dyqljs~7>JWT*h500g~Y4r_Sn*M@{ik!0_+vzUJp^ku5*J!&jELHXh|*~JEqv<1YWJ%y zPl%|8OdRMLI4lfWdjzk#+!{KtgBWc`0Gs|KnLw|O59iQQp^HaosKY>YWLd3hy6mo{~VT4>1 z>b2w)9S`(c6G&Bg3DneIq7baWcbRmm5YFdgqRYcdq7in1Q(r2#b(^>T(1sP(hV)-4Pzp#)mIUYLPRb5 zch|&du>8~jXpDx<37R%BiUUl99l=BmS<_p!y&Zxd3mz_jQulBH8-Q&-5yoR;G+J;5 zzge%n*=FdDuiV@nyH5N+7OZ>zumu}`DFk=vX~jzE<)kPhXUX~`#IA>o zn8A(MNl|3!xH;pfKIJ`TZQ%Oa$x+;_D&{a~y~m|Hr$*6&78BaTt(_WGFyt9W=8;KC1G%7EYfo-b8e?AOa* zj-hC&{N)(-kq=EV+G@@k#s(v+FbAy>3=iJ$_JHU1RU{RV=P|!O7Bu(7=s@b8;~`zt z=Zm2hq#G64qcN#%sQ+Xzz({|mYG&(D3IDGf{hh74Icz8Z_A^`2`4H%*U7SrF$F#0y z!0O*<1t^<%T|06%T>!a$$26ar<-<_7rPTSHk8}hA%b*U?MzmXJ34!uF5KKxRj?uic z37LmG;y`aMV&}mp*@(o&Mrb4!u_h*1zId+gK`!S?#a)cw#mt3*d!HAH~=Ps$I=Bh7!`&WP{zF@?4D- z#a~JP*@k^J^5%Vs&;Ff^1a}>%)JVi*^g=JWZLwZO6CKEi=OITak`I&rIc*g&Ag8LD#DLP)||i-7CG#acsKi%WwdF;Wsxrn{KQ`AYR-7|Dxpu9fOV zFa^eXrqbJd@~rv(nGo)IAuaAsV?&WWmCoDcW76c`Y1hS!-9L{0Mra}8!+gfoW}6o? zT8G{zi0+8zvz@|oQN4P{B6XBea-0Dk%ETtm^_JlBAP`0_OF7mHLEL=@g*Tb$3_CeWs5|{AtWxYdu;qnk)v^);lsdrr>_`8l32XP#tKh#RrOoBLq1ZaBR z1aXwWR%Qds;L-BP2WZCuJGE9IA#iKfUw49QIkE_^Z`2^b7Om8GDK`=ErL!@J2F-S- z$j34do}gPZh?q5N$nRMuBbFXKC zH&Zn$g8x#HR7DhkflqSDBHwNlu9m-QVg?m=H7mPCm^5+2SiQU(cwFVCJ{mre%^KTk z)sAMuKooOY@2=o^7Vcz2=KC5#y*vi25K1uCh%tL;_n+>}Zh(@^GC|$0gL$-F7wXF2 z-lbfG-V^^I%H_yzKE_?HuOK7c{%o_}er8e%Im#aojUGgF2)V9~yWJk+>DSHjk|eG8 z#d8qJ_9X26X6crNT%59er>=yYgF6r<2<{wLlngqfkArArYppnUJXbgWy;=Ih!qAdP zPP;|N;eXg6I62*h6gztq915wo)B;wzJqwOd9AL1f3>{#SmAZ-gUv$L*tet$NxM`0%eclRujj+UeSohk&)x0T1ElIY5-an29|NqNH2fwFyB@C>3P^tZz!Rw%9q<3?U|8& z=G5T_w`nsYss5O|4xs-n=staeu5Bk9bz?iZ#(xu^zd$czUfVe~2$AYrbZ`jkYCX-; zt-8Oi=AYz1U1T)?q)t?J?IIhrJ9MPh0R?V|n!AX2PNEx4+74zq67L%TBK^gsSGS}5 z#JNis$f+(79qB*NV6QELO7LEbYPai3%DzocSdBGwV*d>+O(T(%uc&c(-HU-EAufTB z^36m(5W&<;osk*Io)vHxbPLN+;DwoR%|+J|`iUl2pnK87E&mP4^80HME24w>9R{|* z%YCa6D7@UU5P^OLGX_ctrV)85=wzkiGHRP2jjrZo>SlcKhaR@oUc;EpOb4NX7JKI0joPr92pGicp-&TN40W_ashrVTR9Vx| z)2PhAK)ZHUnr!xIA5eh}px&47Vg0GRqo!@~@ZJdRPU(3<-X~-z)QkXcSOawEnItVG z9kOQV%u`29U>w%iG*t6-XF^)i%M;SB{)S~uOtX}Ad>Yh#AYkyZ{W#H~(mzev3#ds# zk(8b95+Oc?daY5s*(CfwTEkaOGpplIBF`#r2q7D_34P^{1^0cu+4~LRU*U(&7qWKc z-wk!;9v8!#otkzpC_8QKRkIn7v{~JB3jUkcD-dfntGxo+-+=;D3u$lOGVbOn7X&_y z&f&R~=beCdH&J!xvDX!;A>P9*z%9g(I~gDeYDQo?dl41%rcvZd1B! zzBZPoJlBKWdKaYnjM7&L*H*j^2dzbtgWlen#pJvTM zJ81jmBQRhTakj64qDx4p;>S77*V&=dtl8lvxa*5@a<7_wQI6383TSV1u%o=p0mH9} zDnX#YnW5vePy^uXDiPtQT3Ze6C)mu4gmh*jSYYcjD0WxyLstE}-S2~q^*$n|$!EII z25Zn2IiV@3Y;?)n-G_)9y7?ra*ayAhW0dTPNl*`1qDnu&sx)0eZ5Qf4fi7>0K?zYN zJ<7(_UW`tVfHG`YaHg%q@b9l)e4x!V7VGAUzIb!^#9Gl8kLF3)xbOAzvb#o%YP{LqThT z@yQScjPdz>+RNqneROAjA2(G+_xwIQVWPcs7iIs@kp_vBvC+alXlsCc$63(M1{<6% z?31z=c5kTLi@+N^iHRuZ{w>A2`gnd%(Rcdms0N2W+t3$6BHjV~h#}{T11R>=Bwc35 z-{X;Wx@;j*Tga&!)l2%KPtzR>u^D4Wy8B|uroL{k9$u1qO?)MwZR!hcgiU=J`y{CS zoJ2(U>TJ(d4fJM89%#_5$<0&%dg}^Du7C0;wudo!IT94{> zw~#_5K_HAuMwOJu-vDIg^P&{0OS%coNUA#N7)27 z8wt{}Prek1?+Ut%|D&Fvy?l}YcmFWKh5~mg!GVHh@UJ8kJzuH0o=0VnLq@qFynK@f z@+3&8J^}tOS6f!sM8L7K8(Z3)4vLYJ$*T~TBUO(qsOqMWl8%>qQ`Bdtot`!OpMRnW zqOQdE$`kx$I0~{l8-b@hf&X{B)7ox5L8K<`BvmY_nK)m3Rm3Br8Znm;wlbKkh|kL39_!vod5PBufOzF^2-*Q9ter?O*e3o5IN(*B(@t1o zZvY>{!KLJ8HMOqr|j=Pw!^4LUaC)_Z<9@}^VLt}nDJ1Hy&E&zKC ztq_Ru?xZ+czxn)JDm&5MdI?7PYeG1X@<5#bi}`Un0&?8dZ}^=;4i^8RTEb=3@C#MZ z{1Dp&own{x2gY^$M})YAxQrinV!UYM?9g%+L(FRVk1?TpXIu$RPd+)u&xKnpd_p?r zUok)a+m3Hrs~|fEYddL#!wC~&*hfB|Pg(C6!>{5P-vH<ejs&D%T40r6&o!4#b?&z1SQjoM_`APmQ|qt%l3MHz0fXycZSG#)(n& zK4j_4jZy7B822BLnmL-VFCZfCay>8wL`O~vi3?sGfp%wtZc17Fkf7{nWS+=R|6gXAAHundW=BAI=5hZ~*D z%?}$e*mSR=5%UIQdzXTNb3%Ni$r+0MJ^Elsh4i#LTe^AR3s{e`eI8+h^1=&HAAu-$ zwDNsUgMa~jEKJWP+NwKIAYEy@OnW>VgX5VzC>(Jn4brw@m}VHDTR}ZR4BB@fkKdGT zt)YvIZf!@XRQqh8m)07g=!WN$r36m4}#-PdrZXd4YX3vA7;P)RxRf4Q>d)izT!z!is(cUj9fI<7BrjN?? zY2{%BBuVe5o*JjxrO8U@K2^<9*}j+s(z}A>74jWBu{gcBsMu9pTwGE-y|}a^eHF`` zSX|C?McL`a%fAVw_e)(%iqkvN?lbl&i@UJdi5=-5lvRt0Cl*U*I3-5pYssp`I85n` z>TE<-yIl24N~F4|xOfyfelZSy;;E$4)sY@TYF)*yDI|2p=_IH<~&NGT_|*fnLdIb+H$QR;l-Otb#ZZViij^l_K1kXXkG4|^uR?pqc;W5 zGil+TII~o`R2KTUqUtl52IDaeJ!X5A%;z%DZbcs+XCO4V4m5jyO!!g7`0d4^q`Ilmq#`?fc>b#)_>l;%bkRM^`BkJ{7ONnc)I})9~wGlp-r`+p7tQ# zEU+d!E4qiN!d@D+Pb|99(Avq0nkwdshNVKwr=p4nE#wST(S^*=xy@vufVBd9J%}dL zz?gXp=i!9B6?Cg2LBV6Jm1nS)&q6cCsX&^i3JkGz(bA?0U|~kzR<2>}gb=?dtmzE# ze#KS7rgAd1_bxdd0>_aA`|xO%x{-~hE=h_+v<=YT;TS7#b|C{zJl!PNn~ z6kP~8j=f1*{XN!Fva(UeZ8OW5XA>A{qVBv%Y{sst6DlS;TQ(6gmWgMS>3qZed85#y zkv5lD0S%v=seK5Y|!Di}fOzMaF#* z?-g^=Ew!k2@A6HAlPVEq3ZX-~0#6Xm?lE^2=?4+-RddOusCq`M3I|qX$O;|Wm<^*y zJRy?(8}VE_SHxRyzPt}%DXRyh3GGyDJLD@XJU({ z?)bD&{9k<9J%2bp#R(~2wTXqIoLY^kKRv8h$$s^E$fm4T5TUL=6rlo#*#MdnNSKEs zR5}`uZ3&Sn{sGng$u=H}P|dm`bcf3Qi|9ojz$zJm3F|=II0Rp$lu;-)*zez>^ccqW zyAq|}n}rAKla;n%JPhPHkd`8{EGbNz{Mk#LGQ&GSBNHwOPcV z;qzvOR!xXiA!{gqUQF5t+t`~NpggK5w3rx+2(ESlejYk)v?j2fcUG9EEE5sa6bT-$^bM+w!a`LPp(Bb z@-21R$H$;qrL_my@6+*#+sb(P_ot#C*R*6Almq2FFHh3XM}mI{4Am|V_KL7jhB15r=r1lpK#2$R`zTntir*+P0(CM zrH%$(5-Lu=!q(6*K>Ln^z1*9CVnENJ$1zI4ZfENADtJ?MCFOIf;NhBF@>cMmPcCU_ zxy?RJvl9vVm}&3f=RYgWQ{WY6(xaMQfz%i@m|9U-{IV$>bv~+JrB_cTOUC&gf-Lpr z2i!MuKHLucTa@rpv_MW)pC8d^@5_ZM9}aGryJ+<(!dH@SJz=gG{qO*?XzX;b0(cn> z812F8DTaGJeu?!slOe}wr;EH_c|L`#^U$R548~_gAtwRR7zT;F^m#J5o(d;XHFF-l z(4CuYWY1GpyiHd|0VJ-B%9FxmksH13q+3ANH>W6|*1~J<0hPPlHcL2~r%q5$A=EcT zpqD3f*9|G?=sh|P@q#SqLNCqJ?a@e;*zpJBnDNZ;aJrB)Iv#K$)HO#gI^~g=hqxvX z|HUV1-YBbcZogi7wamIR?1za$!me10W8X>XUj$^>y${4FjeG8ok*+fDtStp=_r{u? z>L1Fyx-MwFS_aTho+N-D9H16u7fkYQ_5^A_Xu9=Cp&RHh zYlS#VlnN*<`Epmt|8_vHyd5z0N=y6@($NzCpC{>_KkP|b;vv1<60bvH{!z0;ZFf}o zpa0-sKFI|9j~>+x@VCT~=jYA?Gu(Ngsmf0={)PV+fecYGuOLy`!G-JWmbfd011GC3 zaddZyd+_1>5aS=UZnxoYiL(nMeD{Dky58G@)`=~+*O>4b7hT}?96JkDqt$ND@l#A~ ztrvcZC5@Ii-Y)Jl#>LprF(4Bu10P|GxZpjioy1)qmwt`~j1i5VA7kj~;({jKDo{#G z;D^K-s(*_?Tm^vdFw)Zil+oZk7IR@3c7u;LQME^$yi6pFL@VnV(r`WEDRZoc^aR^fmjU#mGGXdrw(4_V-uU$VGD*2yKX*>d-C45DBJn1)4?FUWjVxEo~gi(4ET)G-uc-MVb|F$e0zkPy5y@2CA>bUE>7zhp^z5LKGc& zl~C&<`ybKP1&a=jfNt*Ihyta-av{ch3PMV*iDMuq$PM<4fbUOH;lnu8bO27>J6zj` z;p@77&?;q+f1BCgwFZ^a32jZn#YjK+f|Fp7D=^4G=c19`H3{}`BLqRsB(j`uH2S}d zv%3uLGn~qrgiQ7~V!tN#LZe5o3jb`>tMD3)wJGslj)T>J!`CD-?B&L|eL2TZzGy@n zSDbyo>}2i=&o=jwr7 zZ3mjYFJ}~#c3}T#EXQ2zu|5nGhHv6lUVsMND2T;WDiFYBil?eLR7#i*s&> z;!QKzioR+eM#qJP9dPC8q{1h>v?is%l?c}irg!&NFDAm7gV|?<964BPf;>Db29vp9 z^>s<>FDKyzGf6ZV#`J8&3s<<%PlHJwutfpVHu=CKb-)_!9z*aVI~!vO&`9O`yzm;j z*(V86lRim2aeWZ|VZvtuF--7Z`U0LrF>z9wl;XpO0ZH)kOGhMy`-WirpzNO6T@)bx zTJ?PP5PreuiFZhny*kMIYnAL6qyxEi;M;?7G~soSt32A2Bx7p_ zc%~+`39r}D>jmw&*X!9HD0&;Sv3qQ;SPE!!l2E&YRHJV$u5E5oWqJb@+r1%QQyChQ zF{m+vn9dPxYi<(qx`(zZ==RB-CYX|k@$9+(2hZ-FKWybkAMi@Y-kiX$DeLivQ}%H; z_bk`uCjIv$VC`2SiF*%7^|1CDj(rH&o(mA$>>es~&l#}$$l<;Su>*57$Fs}lCI$Kr zH+DFTXVaT(d_j$#fm3thhiarRi5{wv?ybsOBf^;p-yVl~A&axep=Y{jiLem~&+RZ? zFod@!x!&>O2Jh|I9m^t^z?&!KPLQaMb4xq8!e0!g`7|1<9FtJrIgG&Kq&1LfPa-a(mPzKoMhUqw9M#CcBoZy}PNZjS*wL zApF?Kj=_n>2vBx=M*GvqYjL7%2+chA3m_$H;A9L0u3Nu5wC_Wn0Kqph3j|8~jxo zmrs}I=9Od0POWN}%i52lV{H}lhtU9MzaM?DjJA&7jh4?zW}H$=f%*7%+BAc!C)t|Sr-zt63z?&%@M@Bf_tIm+~{s`u*Fd-uM3-+gyckdp2w zn|;ZkE??0ts6&<^_jWf44}008k-e1)JsE`KEbQ??*_N3C7uvPmI$+yF)IjK>z!UIK zG=ehxiO}!wCLq45tS0ID**ZA6XFYG$|1MB(@9$#&h;-qj2|+P?qC9(0+WZinO;5C%$aeSKAWU_STWYy?KUH#^$bc5WH2!(xWG`Ue?|l1+86Q0i~aMjrkF zeF3w;m3`&XP^Gov0euAK%^rDosH*U%v~s>0zc_^0wr6^T&r{{s=@!R1OqHLfadNvX zq{wcKaDBW@RX?uBp{Oe1n-pzGBRs7e>H}P??mrY&O)pl1;_L2W&Xj?+aj^j8GijojXKqn~>{=aHEg*5rXlSGzO-HD$UwQ_BdIUmm7kHs;P^^0bi9i#=q(w-!785 zy6(~K&|?PnlK*Os2H{X>_2?}IvR1>mFacEx(T7-1Ncy2v>ck4!KY?A+Ae?GICX#&( zGBE_pDD9I@hEqrbYs&2DnJSzzFkSfOUKOzp!Am6aL)}!}WIkgh^V5+T?Y@S>H~;CA zHPW1~s0rR55I5G4*>@I}v1-1h23xW{mApD{Op897Org9X(x+o3Eo9pD5lQ%h6*ejH zCtug@UDMwvycp(ZobI}p^@DragY6;xfd~pAXC4}m&MsvE_q-H~?$4PVkz`m6`@@(M ziR?dJSyvU_f4W@3o1C*b4nJY9)n+CcDvZob!tT4LovQzhOon)K&-A1{?GgU%Wmpyl zW~U@0-T2O4!78erRvih8JCS$F2;GEYCI*f@^utkL^_yO@WsE*wOAkV}nn#$PxGAE{ z7kVHmA~!yqHjYdN#T{bEBEw!gT3E2A8@HYo?rR#KAEkdgU$&XX{-C(6F1j%&q$;0T zpl`?aYM6=~i;?ai?>ek1Jfx^+&w<-Se%iY0SGjUl#qhTas~Z?Jqzd{L4& zp2H&{EgMqa>?`NB^v*iH&xz(j;#Uny22wkp4>9?OW;BrTwo#K}NCVGH9S`yGmBHi!)ah=7 zOqO#0VKv5CHSsTmxC5Eqnexkk{)JHCn1Z)k#up$~DWaE~%o6hCK=0Y+)i>yUHO3D` zMn61Y?SY@jN8Q5H+aZZYNwUvQZ%0hT6c&71?O_$(Z-!>Y7N_g;t;5rq>Fwc~+~$+S z&zn#-a?zsd?ECehW!IxrQuj8#DU6X78k04QfW&v4HVZB90)a$GG5jE(9)xcvN`d39>c{s3i0T9MBDy$eN zb%u1XOH`P6QwTGZhb_>qf4E0Be~O#oj%yFsW|l30nn6LAN#ooFNLcG8gKf2p^N^D% z+AA`n9owDmOnir6+L66$#YVxOpBVd0OXiO31uuHTi@nT!F*}s9Hy}v5U9Kyyrn{z3 z#VFBN5A^Nxe0Js;r=NAw!ZWABNtgBgb!TndZ~Igjd;7!=YS)*sY4PTE{VH~PX#W7j zOa+xtWCcF=^%6}53wxzYW?yIaKYL*mc0Vv9TrK6UvgTSM_DT8BAPjRgpJ zzIj>n3^i$uN0P(SRm8&~xHg+mq?SnM{;Z31wz5}H{m)XI77grg49C%^!ItT7zzCY( zv@H4tCS-U39zJM=z|{b+EDR2$VYd<8`&*4HnC(w*IX*xE1S>`GrvvnR#F+LYXRksK z3_C48FQDJZ&Piu)WEaOywD5aj+Qe`D=WoHcF#ABTEth*R*lsxkttRu~U|^l0!*ZoR z9fT7bY?^1MvyWRs$B#PWPR0>*mNoC7@{M$JRW@KC zf;|}c94uuo%<}HJ%*%~|?HMs8%kPHwL*ZSdBB^dN-isiDU^kOLgBJ8u7+dbbGr0)- zEdIa(9YWimadQ@k6AbMb*c9RIRP_=H`-vy2I*M}}IhN{qn3oZTMQ>#pU2^(}H`V+Q&3wk!IxEpV)azdh3g{MG!Ndi;q7 zeRWUhm#ce<+nRN3T58NU;b+jKKhc-#%Lm3%)(ECg`3IU|?8Sn-}PEC1l9g8*VCuLC3_b+|J`lLqG`bDB*<6tJ63Kjh#30~{0 z92?%i_%Tu}WpYw2g0zs41`dj^eGwVK)L!kP1$kf()+3x(+b=V{r$D&fb6bMy{C;qL zhF2gCu`-MM1p=q1A*ZXHn*wuHaf!%>!3L#OW9O;Llr}iDJY36{D51;p zN&7V=h=MS?6jWPUp#%}bw;K8N5jBu8tZ@`IfIy%D)-ydt4=ZiP4f%@$ zk=JehTPcw{=NcUEy}-KJw+6&UCT|TO90WFne+npQ;ll!H`=i&S{=ftr@4pd$TZp<^ zlvW#!v!d)lOt#x?$p2gi)A`vwIDVxNLe+K&GN;w)6L4gYj0H@u!eW0%9eyvb3mwj3 z-hrjHhVqvNSs`l_w!q1zuu{OWdY`DzKjZ$NvhU~NKsPvEvw#_HGaRK`o0)<4=^ZRR zV11ohZ5})dPSnAsA>yr$;L~-9?54rt(d4jp2v3onG&NXzy^d2oxcvPF{UC1=pX z@|g($MZ(!TICMGX0Y-8a=j~TvP@_kkG@!Pks`ohp8&LZsHKMCxt3d1}LQ$#( zl%BUCff8L2R?~|+%qi1ACq(@X(AM9+-TaQ?OR=7r5wrMs>*hN!+I(5OKNd;_8^#y$Yv6)$m zCN)NJGWkvoyEdAh)LpFufGCFSp{ya&T!ToIbpBG-P488WqYiB15n+ous_6oLvDSEC zSG%}#5PO+2V!n|?wB!wgFkRKiJ8Zl#sCync6;sF?U6uW4P`BJ?Bg2Ts`a{*=>{J7| z<+4+=uf?}d;Iu@qrdh|N< zZ1$XX+-Y-9Z(p1{5t)%rULXFd1?4W8t=dcjm_u-%ynj98bACAo<-5`$( zYH%KU46v}?Upn>aEHcGBqnWI>+-_ZC`4DmPV z!ch!yzesC+IaeAj!T*0QTrg01nb9WZUU&?BRw5W9f`Lou*2lYo}&3yJR_4;Mq6#gVn z&e}gzhXDk8uKF-eSB}(LV?+KnYv=2S#VuSm+-o#pFO6rT>(47XRp< zGX)-drC-#w2V>>?H!4MTr} z8n`ViVoJ~35EK_yV(ONh9Ks@hX5!;|c;uuEq~ZBCr{7!Iq@Pk*zrdI}!I(Otu(4v$ zIa6n?rET@kT^Ez5;88Q2P2lX04~E9`03ROdI7pmV2N#>jAjom3_4te3l>%3D6A1yo z9hx@&Ih4z%0ZsrDKF!#mLhxy(K0P=#4oe1z8Md*f1`E;uozPs?;vk_+cymwX{y}Y~ zGmm^>pQg+<_&Ox!9VKQM|NwE_16L8HdzrN5RyG*1eI*kQ&QlY#^LAUb>eL$eHu7PrzGqP}!^V z_+jGJ!8!M!VPA6Tiaw2@cAJR@5`q8Z!+GS^(BLBw0ls-W+nUd!C9;q(vx455w_5Mf z&^YI#{A>a!PUTc41LK)a2^$ymh?4$75G zj*HdV|7nnCjt`zZk)5E*ho6eS-y<+@k^b^3E(h?~l~`ai8&(COQNN@rlgPvP*dQwR zyhUj@K$`U^bQJjI$^lv9&&cpbr3fBp;SUZ*9*gLf7EH;{;>f`>_hbRDlC(j7ViP}) zq$p0`8brI3ePEJ4 zg7Y5za~sovGgm7HmyN4+g9qgCA)H>n^bMB=Z?m!nLR~{**EbP^w^*p0*lNL#6%*_B zI(0ItDvpuS$&(xLr`<6pPDU33=Oeji1~ZdIP-oaW?k?Tr@TD7jm+}D%pCkrYFx6r= z(3eF`6r?jb;khF;aF%tFh)U5fojXZjSI`qxO{V<)uH<>}QSZmlMS$7=Nwm40DhZAY zs$2}u;5<5=EgEyPg?J>~J_~>QB2p4#@ogn$sfiyQB_34m9QQci&IwPm}X+>JZ_^R`XT# z*;i%zX4>2yA?36|a6a~s#Ix*?2y8|gutdQu$R;04+|ha(*$S@D7I51|YR$-OAb2!l zriFRn6>C^0Z>eh!X&p}4Ipe7f1q#dR})5$2I+Q9u2zJ!?IRtFbw#=f!|eClR6zgD z72UjUxu}lyH~g_i1JMv`pM}3XSEpjE3;tMBkLb(o`Ol@EpJK?y zlzBN468lxh$bc^SrL~HOE=r8Uli4E+)K2{`>K*S7vf9JM6s8@TLlbj|X=dMOol_X- zS-?27!Xn9`UU;M20~KLtFi`&#ql~6}O+E4<5rsHJAx@FsXqsrC@rXN#cmg&4I_FUB zkvE?@+~d099152_{xz3RZU}hv@o1>aP|LHr51i$ki~(U(ie`=o)gbyhIv4iofcO-p zK1>k^AlG4D1X{DXJXfl@o(JbedUP0B)R7FIDsad;Psq=^!!KVu9W~XuD}#9ll3%9D z9SkXC7Yf+^sPjeWynxP8cr6xSBN<#%^`TrfZPSSbB3IN`7;~cP2##wqk%!MR(pjA) zc;%$%P&%V-WwD{W-WkfZG!uD5HZy$*dagmw*(D;_$3i07=n^D!NA0}Ifs3pZ@V24! z1o~ysNGxuUZr4H#tqg2^O!*s&ED=p;DMnNPbF}Q2wTANkS>P>~!0fd|XgIB_=XeV` zM`WY6M6mj3^1M#O3zpS0fVj}1G@G4>M|uV1nT>&=JdWP4r+^mp-bz>y>er$`27Pxx zwo&07oVwRoZs$ldIg}XE9hE>&$8Ja8xP-a%F@HMNVEm>aziw2A@+Pzt>!V)h^#J-C zKIZrxRq}zf+cixl1|=U5ZzeG)c?^n^%j5%*flUeHmXtRp()Faq+iVZ#_fkI2hL7|5 zlt0|)7Y6E~Jm^lO+p#~9_f#SIn`s9kwe1OGJB+SeABOnjL6JrTWkk-0bJzJo3`c%4 z7Cm3o1JDN6@h_T!7z!*;ESyMc0i=6hb_uwc2Tv>)^O3Xhw=CYLY|TW^_Ss%I&j82qROCvKA-xfiNkY)0%8r! zJh?%Ez#&+%T>*((nev`vU0ZJ#-hRWJ?bp-5k*UX-W?0LFit9@$CrcOQ>7o zKXlts-w_C! z5HB48Btgcs-KF}(Ag@H;p^S&@)hRx_CrbRFU1WJmJ$fSYVap5PWdOu`y zj09aP&YO^{fU~s?ni}Tqt`q|Qy%CPwlWNGWL8_?UWg~n)_3TevM?mZm-eB~!?B5c` zm^V2Y$H*9SVmRRYP>Qdp0W zP~_=UQ}&sZe7A_}^C`Zyci0=?g5T{6=+-VxTr%HyWIEH@Jq*e~<^{~!jPMUI+e;}q zpE@lg+}D6A`qX;bG-ul}Un5bm5blq@s1G{M%qtuL?XEw}cAg*Rn9(Skge(}lc{ z1$e9eR124fywrhQ>&HWTZkxtH3QzWDj`IKrg*TE?L?U-p zmGauSfX$P$ZGNzwn*uQ%I-)Q7FzXJJwT#2!oZ!O%#yE;6AYvH@TQ8x4EyAk{3gt|N znOci+c||j>#b;a`y5(qgVOYl%J{+WM#JJis@5H#amxS5(EWVfVMctu~YL9^=0G!-C zf`89#R{FEpURZ7bENn(qsL(JY13=-=p&N5A9W?D_5oGdsMZ@{lUKW%MEVAoJ>vdHa0aY0P|9$BA}qVI5} z!B`TLPc;Pg!ub)X!hYmog15wXD4~NVz##;`y>G#f0Qtoep7Lc_aOhhqd4uy9YryZ= zYYP8$Jw^j~KzZB?o9gKkBEt;&i4dfD6EK2sT>=tEhQvVKM?#*T>YvXbWiJqqUy$Mr zb>4W^;X!smN^d@fJd9pblt|Mt=%9yT`@Q$gwzU`d$VjLO=QLm1!OAQQKQJNnX5nKq z2_vWT^CJ3kWTyKph3%Gp-WVqDN)5=H0~Yg-YlHiSb~DnbEC(&6&Bz_e`Am4a=VHx< zQ8zRE*C3n{x@ELaY0r+##98!*;^eTzXEPPXI}!b?Bliyv-^|&GQTRIJI6hqv8Vo>o zN3=DM%A>W}XOTnia)iMfB?E&=-4{<>Yp1F zZ?%o*S*`gz(?>}zC#2H$D9Pk?^~&=MmEC|WWvSGkM+L6aP_N2*o(1{ZBNJ@{S!5k- z);xNRyMU-hgJs%;r_Xfg{pEN_G-2BXap#YzogT8jT|(J z)YZt%Nu2k(jcNl(FT0Kf;p_20bE{oID+Ir$(Gm{U^$cIPj)_cCUB~)cNX)Om{)H%9 z4S5Ifl!>>gi@PCR)H+xb5Ez?Adz>_QZ{sHl#I8pEl9bn17GL)QibnyXAe=)H0aVx^ z`xeki8n1-UeR(tOrBpmweYmaC9Vdm}0>9b1q1 zRBd&oJPN0?D3Fe38<7UdSdX_^nU(FWh5ULJ!li5$ajXb;=*ME~5&Ezm#vBZztItxS z7ttt(Cwt~IFG>`az)xJtq93H^@EY;`EU=zMefq+yP~Zi)qzkVEB65>Ng}wDK{@^wG z)j=+ALO$@9fZ!7v8fhz{VjHE6a}j(A2JowcVMGo0Xm#+0l!-Ri200R$BgExpG#aJh ztB{+hNFIdY%V>3N5c_DQ3DL9bS@>nCFGr(3DZf#j`=;eVF^v4@-8WI2<-ri>{^dGs ztnn%vueuKC-3RpOO@~B)UOi3}#M}~oFOw+~16XZOx3GCeD+jHvN2}jQ+*Xx#o)Lm} zkv7(|2!&a=Pr)Z9e_W>Ef=Tnsq&O}PfkNYGk&=fW77IL&qq92^X?qVG*QVU^OVpAfimCckEF=|*yT$7*`YjXZVe1FGblWmawZ79 zcbJPKqR?ZjC97-0g|CECmHkTS|G-Ys%oLWzD$H%6?2PFPx1HG1oEag;T8@=pFsh$5 zs3++8km1w97c%{`!>5LS27aro+`-uN)JPNtzCsh45~-|C zSXE6p#7mh^1`ahW$M_vrKv_=*P{n0>gb!fhX5koLFIFaX8asAc)ZGvRK=YQtevH%+$)+5 z>wzc^p^&}JV3qy9O2vA>u$@IcJPYm(H94d-HjpSBzQ(vz=*~FuMWH_MN#rzcQ&=UU zZ+KrT3!k~!kXLhi<}$Y&rmQ-QJ`hn5<6CCx55=sIXsLk$ay3&L`fC|>jH7C z3vW`;2^_mCAgVeT8xd5VX5sfop{C)62C+W?q~lcx+rA;qt2wuL@NQ9M9-n3?3H#m^ z>bX+>fkrL-!4=pWeILi#8$>`;;*zBKt|iZ4{MSNUE7BbYUBVM)O`QUb;dX&!2KaXU zFF04o{e|`KZ~c{tU&SdO&0lf;5Br3M3+Xtz#RUz1kLYKBWHp${txO68cTQz|kmNW@ z-ikam_Ey%du$2;@qlc|<`9%j?8QX}UA%Y{~pLGg)cuDdX36{2*Z9@ldNg$C%W2MH~ z%3^mQNdH#Y1^x38)iAV z`ycOCVcnucuk02$Z57-H$FTO4@$loZb1zTicUEB!l8Po~*C2y_mAC>7#9&y%;qF9A z_itrSo)mcR@yfhVl*3pdpUXa|;1f_>G?tpzEGi~I!U+2ji+-xG zrAgA;KVr!ELov`F(L7+>KVlJnf>6(3%F8OnLTzJQJY9{6Bl!Lrz(P!`l-tOVjo&|; zDACI{OuvZ&MAlHs^ow4w5fOjafq}AFWm9@lFY=dF61@Pf$hf_gq^dZWIt+yca`}f;uH331*8zUqo&eo?)AEO5G%bHZ?uduf zNbT`ppl7(iyx5vlnrL1gQsq5C9BXS2sX}d{i9x8QDzHXqXW=}-cnD*gMV}~W6PEl> zL&KZlsy>+p=4=gBZeSGD!je76(HE{n^$vy?DkP@qhI7NKnKBp2@wb7Ya$u80D{Ldb|Ql(G87oO`E1ghD}9`&h;8?>ZWOOQW(0yGz@Bv_+*;Ke-;Q~ zI;Lr&Uj?QEe1hMRKLn6lp(R(iB;J;X+lh)O-RT&N9C1lRvLvIioUVn%xij%K`on5W zjGC!VWAb6O!umL^eQmVIqsQ zDpb<7su5DQ=vdLxg|({2V0}eJ`J4WmSJswzC7)jlUb$0g%FWWmV?L{3(TwjxQ4v*1 z*NS*eyeG6kxQrU0F=XaE45}{N>H6le5a3V**J=^CuA3==wDnnd$RPLy=S+AE{2)RP zG9GwCUn!smt*k-S4*gs;40lHSwm9UB-VS=qrEB;wPU3X0KP6_^0ZcY zUs8D;=TBJ|^WGi+{~9T$HA)|J=$?H?f*y3tc7}n}T0uRObo;v)Jcx3D#j58b+%$_c|IuB5!Y!^!B_S7o^7UkP?JUT3AcnG>sIya|Y zQJzo8T3vYnp$7DstR)ffLFWO1{7;1Li&ataUABMD0=h`1RvcW%Ll=V^@CMiUS3H&d z7orxBo?~`p>{Om|?v4T1xO_A&?~dUm`h=7sABrn!0#H2?Z$x4s7t%M^DurA=cXO0( z<-MVE0evLhvCT^FjyL=sU;{raUWDX^%BYwVY{*?F_}e%TE+T0b#}rmajA;Q4_=#No z5>9QN#gXmgvIrI&hJF-%dGwYNR zAifWyiGN4TNtOZo^)ldRF%Ll8qPrTnZCE@+n8w${-Jx9*$Iw>v&)Yx3$wTuFFiB;) zpeb7_F`zDUAY9i&rymgA&wNAyfEqFWgeU=a1|QZ5pi6Lc+V*ZaE;P)}5EHj#%_2xl zT#oBS99zyGWMf%re>V_(jA2D13@h+}|2Xl;{)k;L%>5C4Sgk~2Ya1Lwrw1JVW#ET2 z_@O`<(7+GyNhM}UM|lBdP4FDq!HF}xr*hyGHjn97LVN&Yk4HktSPgtjOoFu)P?1F> zUIMU_NATU?ks|+4FEf3PK_+SHr^q2*KOTSJvR%ko_@ciNf7A{I0RGscyOX#_*W{r% zdA0tGL3kk2NpSAs0S@7>qp%1Y3jY7MRtt16F3GG&N3Q|3;Sx9`F6Sj^7QrC7RiMx! zq|ZwrM!6g+pjw9eAl)k9w6_Exqd)?IX{!M&G7AC-kQoE29xyy^jwD75ClAMGBtec=uYUM8I~0$%VsMk}bqbP64t7TtbqB zmaw8E$q}u0ktBeNY~m4nkxNLE!p%-Lp>8_m2z7Lt%QPP&I2Td|aEVXA{(3#ssbg)lDs@VGW6j7;z7Bo4J@*=CfcaM`^Jo4AZoC})hM z<3dSii=dkc=bi{HLEtFdPzp|lW_*hn=D2H|GB3de)MJ9ngiM9ANj-3VzAx0^Tqne# z^_|SpMJwQ&Dxz4Qu{xBC5n7YLEU|)P_~hge-8-}#5pfZu9C-)`Hi7lh1#uHN78%Cr z!b>P%?cPFpSz4hLry!;Vg5@_7de|Bo}}R|6pGkFP(v*&v39IxIbU3W@=hnsiDU3P$)U6RiL3SduPko3i(P6E1yM?Okd*l+ij|IO4( z$fCkGRnxeZR0_zEk=YC)kv090T6s8rI=v}fAL0V}pOzrmL>e`UW#|kI8UHiAAxpBz zJ&`WpTKEYh1)!UeCtyaWTL#Kmu`^iw26%*IWmFWn{x-BNC#OWkA)Jpys%6@Gs8KP7 zBjtsDpOkFq*`Z)m9Pi%EFg0a|qhcl(V965_q6hRprbMIS436UJY2>auf3+Ae#yfT~rDfLD)Vnl`vUIu zZC5c07=`UA*ER|6?~146^Ly&FQ^I@>SFymjvKF(sf+J~Ct}d$Y6mgu#UzLyzQRNd# zM|DjCg@H2HCS+4o*)0$?s1sUt_o(tI-Tp;F!Jt~%UeN%KSxxT~`nrJSeL$-Rim(X?y?M*`Adm}Wn2X~7a(UfTr*2(NE zL*fgd>zh$LQGp#^E*jV*^vfyv-qxL_V-Jb6A45X1e3cgHpfa(XV%KbyU)l8tQc#Mmxk zOp=?w*c_c5O=V~M1OZzE<5!%l%tQ*m%w?M7b7lv?H3edeI_C)JQc=P8&Z27$I0LCj z5HoXSRPwK9fTMI67y9K;70F|*CooxZVf+@_p6YU^ zz_ECC5pqtA$_cY^_VXeXne46$)p=1qmsmu9PO1oV2Q25#!u`z&r8*nlDs16z z6rjAJb}lp#|2%Qjg z>|*y(!}P%AXA<3|!7hVz3shH~`Vo$PA?S@Ox=Q7{U<*%F7umSHdA^U+WeZ#+FnaXb z!!C1QYXL*T{uN-4Y`2}j9jA2y$|ds@_YO`ZixYr_AV)l%#!z{ft_}9j8utlM2amr=k9P_n=i*MU3g zDvI3UkdT24lA$M9W&X)g`Yi&7#283X|9kL97+$3KE#k=7hL2S|l1Gjk4|b_V{^A&% z3VoGOm5xRDM&gfD8Gle3O>eCxsuSNG)TJwV!-OJ#%!`0OP$yb^e=PCGP}9KyZTv!4 zp6C}=M3ecyAwTs$X%k->9Cz`kf;@3I@irlwqPNhx+%PV_g3~*}8gb>I(`fv`B(+I3 zY1SqIDSL1n4^SC*Y8j;d?P%~r@t*wXXqtQfNjdfCDv&h5VP>|-Er2S_D--ToXVF^M zf)r_+;6Hg0*M{{FO9H%vuFK6NN9K}-Fa!)oOal5Tu`@A=N$gBaVtUlBKQu!f1;0+8 zWxyo~^A};CwgBOn5nt&u(1Evd#Lq-&C4Sx{SVO!M+kV6&J?;O4p@-TwI!fXHa#ZCj zl^8j~)%)eMfqL&$T2efo5dEGFbOQUHDFb@&GGL+M0my#@LhI*%1_|$iLsHKjR~OSC zmCx)xRdvS|jS!pVA}eeWo2&7YPE~i!)6?LQ&8LD#uw;LaeF{be0)tp$-`FBcWJ#`E zhXs4*SduFS@e))p_o+AODF*BNEy7(MxWkD{l$}#B4l;3CI=gF%Di0oqPvJ*%;W3T7 zhRNf`DT~K}hd8Za@`Q2l?gP(=b9>@hIk^a~oj~B!amsIdy3b-_<&1I4&IvK}_{~_K zL*6*f<&d0db>Wbzf-68c%BPk{&Rsr;Lr5VQY8No9UDi41Tc{T6GKnsWY@v6bq*i5n zOu|PMS;lhj`H*8-M2sFcITpf2iU9I*BFSrJ4=rspjU<}z94qG!cOLn@f_r+_f$U5& z#MK2p8yp3)rKJwa;Q~Yr5JMAl*#5E$22j+Agek5PZ&+P;!=f+tZz1PbC!;u6h}}B~ zwREvx()X^}F@JokjtFbGwFj>}UB&Zr{;k5Lh zCx8inYFyn%zaTNvImih0dmmEwpAgH!H4FHWG&$=8Ot_@aBPg{35EOl&NZ`cl+?${r zK(J#MnHf-3Zl9;amhp%a^CjN@lFz*R!8Eo|B$TnEkpTr#1d_#p6aj}65Qjj7@9sz5 z(L_2G?+s5ENQzE{ibMu6#fD==W%d;rJOjDOy-O9Q%O0RAVC(Tm1a>j}9#LcnPl|v+ zXs=NehjJ5mAV(}wJDhmnWgkqyB>`)l++4hUfrZ;*w8|i5zCk4=@AjX@73IjUrull- zn!YZV9V8Jh0=a-nwzLBVAVohOD)Lm(7LFCw{|=8PrA18GRmHpb zXmO{nRuy%!uwJ}NJ@wIw5cPCz2pO=in}lr$F|if3`Q?%v`@ z9o4zK?GgOiBTLI0G%XuCnf&SyU(@0%4s)L+A%$Lf>d>yb3+V1T-jIE9IFh|u{C(uo zbuA60EqhIrRILI^xd&PtZ|5Y=Y(}JcQNP!bZJ;C~luvw7l16S~Rg{YovEA2DNXm#Y z8J`RZ`2Bz)<(2puqJ&iSa@7UVT<(Tlygs^9CG4u+*NtRyuJ)rQ(FdXOnLy0ZXs>tz{(;>tX!^UJs0Sf-C8Mjm!aBar#=KHA*5uL_DsYg zwv)~JGQ`Q|z#>*@qfQFdm~q55Iohb#*^m-+ZP2))-endy>X0k^=SR9K7RaTjVl_<$ zS(RjnyYnCk;+v;vahCTU?d`mgTp0r`!TgAgcEn}n~F4;I0=3qImM?CoJ5bs>;6 z5`$v&EA6SC@Bmcgjusf1N}F^sZfxfqmNw~6xhCKtocIG6fIpJi3onkX;QeTAbGPUg zxYHL9%2fI!A8-m~S`+|U*T6$y1*hOEQ3O;KiuzUg9$z_Z0GPttpu6h4`G2VMyq6># zX&osV5@_c^i;$;WVK{xINjbq)1AXPHP|gt!#8>IL#DTZGF5sjCLW3dQ<1uk!Jun^E zxj9FO_y0DxolkxXLkcEVZ~mc%Nd&gaRT&Z*=$&MoxitzT3QZ!*JQ(o|A-g%>Uk>LlqQ}F`bit00UcS!PTIL zt4LYVx!PfH{I}<7>3ljR4>vM7Y&l>=CMNi=9eSP=FPA|`xk?^~vzZyhAnq0&mnw*D zutmpN9|ptSd_-Dk_b1AgD^Qj2lq(X1?xt-@aZ}!s!*`4FJvu$TxM52_34C#(@VZ`@$=mu#5Nyl4{ z%crxb3GfqDm-cem4+8AM-dNwuIi-cnQbd1M#_xQR!$$ERFryv-_b@WQ2xACAP2K|_ z0AHQ*;2(Ox-}ifq8BD|YoFCe>%MBI%Gv<$2;rOmoh|9a~pcuC57*`-)A#am3!mci* zR2$b$qJi@uqEi~x5=3iI8H9zR4Dv99yCZZJoC&)32Iddgxy$Q#|BU@V4C`09hV`YV zb0!HRPkChh-q?JQFMKrRmwE zaWlykfVf#&M9^^DHdpV0JFsis>QOLLaWGGc58h4&;7$Wq6%1Uk|MDGbr(#;%zVol> z44%(jKm&xSC=ny=-)RYSRj>C6dnifiEOsSTMiErspG>+J=8P1mqr4BH)p6KS8WV*W#$c&UZ@XDv+W|5W(pnS?Oj41|-}*vc|}U%HIpNg0=KfV&SR zjcM;-=O_D{bP<;wB!n$CDbywypQtoC3b_p(^8{KlzyBUX}6ZH%gGI z=;go>TWEG59E4_(N@@5v>cR1@@gHw_t z))J$*XNK;sgbZAreBvrv#SMI&FJn44@cc^By+Bp?;-d29vW0T(qxxf$Ri8;vb-7LI zq+a#?qeu51i%=v#eJ3b?)Xp-N;oog9eKqd=^%a-yNRH8?GyY0UVw*WER`PxlE~%ja zy6}gzQvD6<2RH5tJT7St*LSCZDPQm)U5XobejFn;-Ip#dbNGN9vYtrFzq4l}&7cR! zx{aN8A|Gw7dP!uWkzE|_Qx3b z^FD+sM7|t1row!^#@#rPxQ6gkT|Pjs`n6ELJgxwQ%e371Im3<`KA2`*OG4GijO<* z^~8t5Z@QP5!f`k4`QoO%76*oD+hu}tT}8{?us|;(Q&)@aNfgP;#0QgD?2DWc@rYgh z;6CC6#buM8R^DR_aZH@P8Px5|4h$PXm&RSvr`>_$TOHl z-$o>kJ+W-39`~4m2<~^VEkMNJtM9y8BE9v_dF^g4pd{Sw71~{U)5+4)A zb=|OQRVYbU2k}YsQ@Nqf;(+S7qQXxSfosB03r9V)|Ds(_^eD@ z6N@w`Pr48Qsv&kj91$6UKs12Ffdi|lqpyu@t*mrjE3;~K-LN|ua6Wg0hbfF&wH;SH zBYJO9LX18C%#4%HoZmk0%s0b*<{RBmesSuJ!+Xy+nrAGW-u(HSeLEueKH0-^)+qgL zqwQJzdRbA<*-3F-&6JI;1#!a8-nZmvjbhdQ`IeloDc`<@ly3(;brd4yvNticHPdzz z)0((=L{(aF{8G3H2b>1Q72m|_@j$(C6N=E@!~#A3gzg^?iF-BVJc;%AQ_||67l?=Z z>${cKXI%f=yZc8ctd&q)5xBs@&bowki{u|79-9lDY+?F<-OMy|g=Q)NzygzH^dAVo zoAb{8Lqq%C3*Yw~!q2Yf;iHvGJ<4_+ah}q_!lxI6{q361_#0FD_E9Qv%I9C88cb)e&tv4DUPW18mlQdptk*1KImu zfo}oKTc|vO??S}NG$tMv2v*bA?M7zrd0W}ZOdF2R?ZNd8yE&q%81f!`k17Wtgg^H$ z6r&=)XHle_LR7Z#SG8}huxU46w>G>HF@qbK{>pC7*VLhCTr{{-h>E~Q#4#biN}j@c zH?okpw3Q*#Bz^^6+ue~XST7=>*NaTwvYX51`gAV3lk*p9gD*1ewVmRz3W}J05v|Tj zP%BjA#R>nRAE8|y?QFDr8|^wO5!<+vi#O`k7g>KNgV!1KI%;@P!D|=_ytlg{SG7~Q zf09Hq9Jk4LE8BC0H6ecFj?jy4(5#mP=0yb9IvG6k?oJiDF$#5UldW_?^y3OHkNb%8 z?n(N>vO)pfo$$?G*KLQ``?v}gqB{;R9%`RZMrdvAKyb~co+v#-< z+GPDU@*@dxn8nxi$`wA6TF;$g?PPokDkg1W{EqDuVZI5YyNLxp*`}bO8(F=Hh2(Z> zXyI4jOAMxy-vmSECY(O(X3BBrq;qXM8G=c1l_IN=(F`b3s~yw|&xL!TCbC5OdHmc# zF~N8nXvuwBy|c-So;@o{bAVU#rV|pAFbO=U$&aN&Hftv492>y<_@_+Cr`z+HowCwA zYcMXsodyn!6kWZE#pF(j?C38ABZy7fDLe8RT&%;_=)q4>zGi$4j1HejhNL|}v_vaF zRQW`vv#$ih{IY|RZCR$F6&}%Jc-yha%}%QF5vFd~*XrSV6b`#=3;t9g9Vc>dP9Tnjvd=ns0V>SPt=g}3(>{9ipFuzMD!Ob#4m8tsc83?;1-k7Kg} z+6+oZ)=ULJAs|{zpfboo?rN_567GF0`V2?FWeWuXYbhaDqF7>x9VfI&aNt4)rj$_5 z56YQrXdzpu=9O0M6c^Bi<4T>z|YH)o$!2MSvmf@EJ`?u} zaWhl|Yf2Aq%=;>_b?7NkhxkC_-=O?@oi8crA^)ATv# zq9!ZT$yqtys-Tn06vE?UhA`>xuj3!X;ca3Q8_c4)X8vqrd}%XWPYIwheX>lf_%#6>Y2eP|klBh>m|4S(tmX z-~^@}v^!}XJxRSg8v9aZuMG~hF!p^cbQ6;5OWwj75I|pVe2H+q>`e$HHO<{3_QkFq zR(@Iy-lRXKAWRp78`&eoY0qN1ploX5&|b=Xrr)Yoh|8MsIe}YM9N4`f5#yWtghlr5 zN?3EBrYO`W6{QwYdDIr=&h`_g1fNu5-=Xz4 zk5TKV>D`F&i{efL2>25g6XSYQMN+_1c4k{3lEkw>451tI^6vD>1Vhb+TGzPc`a!HJi>ZQwQl&+qFaBiE2EH zRGcTNe15QV;4K>XWoiKF65V0PZ-L6b>@y|447DVpNcl~pUX4*d|9Ev;B6gN0cCa8g z`HC1{g&hgg&|*lRz%m5ynrPC;%DpOL8}QkeJV=P&iqE!)7+)32W5_pqs}dJ$y3v3y z!+?)&Aav2z$*!fqU3`P~GTPp}rqq@~Z$Dx3R1Wh28p~I7i4R_;>PI`O-0-s3p7j$L z4H3LmiM@{IpRX=9r^s707fFj~_*Mm>?62VEDlq+S12y3fO0W_Gr<0p8UIbroAn_J@ z`R;b=<(-(KZf1?RC~k2(c_$W;@A;in*k{(F7YXi~>2|6;=MFnYVvydD)vB`F$Mbid z3ZJCnaK9_HFH=>1iBOMVV$lN_Yc+t9>nVNbE`h=C9NsPsP(BB2KefB40+_V zlsx%43YT7{w&wB}wOkJ0(UP;jj74t&!eefxAlut8;#6r=+bk$x7N5OYXzF6jJJWxz z>N2+wW2XLG#Si^aWXN`QvFPoJxUnyV#on$c>aS!Iu6c3nyFg-RsWf7jsOr-Tv5iKm z88p8{<(Y;0F2>G0e2{xv_mv!m#X@WgH^fWKAN*j zDcE}#Q|eJVS$iRd3Ln(^g&3l8Y4t<%?!9TsUchKO_YjR=Mxpm;Ava5`TrTKbrke5h zP1l|GeN%%+^Q!^&7K_YP`CBNLU0hvUBEPJR$S+fc5=EAy{8PJBZ@Bemb_v@k_?n;M_1K;6;bX+MJtG6oqGN9o$_{cPAZMyo<1^G{u+nrIp==m-T{srUA&naQ7vX2UW6P#n@5zL zy|1eh`9q3#Z9sPnCupC775L)8a$S}F;jT35JjXwl@sT-qct++xjE$4|{OiKi%6}1~ zrKo&$kcjc>-)qe}lKQQ#s>-jf;-~Z2ZAfcnu1e}(3tg;gQCB6^uPM+L=T}O5qtZyA ze%KIIQ3z1JMnDoEIs78^rUW4V@1@uZ!)?~|z*!f$<^;Ray?N33?oA`>fxFMum%>4N zMXl?!Xdw0qPL|IiOH=j{!H)=c&ZtSt))o;!dRyQ;;0ZmlTLiwSlu#U^q!HX!7yP_} z0$h~SYL(9`5SOAipQ%MX|)y+?7zeh&c>`)!J zCd}!{*tx_)gX2J!+@%M{2?75o^-&~*2H-ke*rp5Vp_D3{j#k^Tjad%6FIcf!r3Dp9dyfLf2}hTN>Bn00txUmKOljrzATgz8w=77q<&t(02}3gDv4BEl*FO)2x&qPwo+yB`|@ z5NC$|;d_eu>T+fX*gG@C9ex;WkeO?v`oi653KIFFjKAPH^}bLM6A!9vAJhIr?k1%< z%+bg+qMUl3=J15|+H+x)y;|;$%mur_=rb3q%cJ@?h&!CQSXmxbzY#hv(RB|}XD-I^ zFA`@jj|On>QyeDVb&zxcEQ53=>Uei%B~?VNnf@K3!<6j;!*XWFQXCgf_ktIu>#-{P zS*9JV^W~w=DRlKHn!NEmoTbb0WN;)5%XQ{~S#d#&KTNW|viNu{E|!{Q$iT9v`W8Lbo7t~`9p zi~4%-u!rgkglaz@)mYN(cc$OBe}cL^3LZw^93eJT47)3w#qgEi&*DqVVFR-OxOkeG zD?;f523TAh1KQe;vGZ?V(svZGPMbS-^GcI#P_NdIcoR(WH8BZn03iQQ+@Fu)C?#vz z-toC`Js4e2EpUl<08i}lcY6L?Vi)}%u+EqhiH7KC{aXpYMPMtPjXv&m_;NrPiGE2X zVIJNGrnFB}B-FFB=nAC;F}xY(Ndy5y81M16S>UT35D1qdbhX_L<(zx6oe zw-vFT1>`i*uBi~02avqbSK!^XqY+XBu|1w5S^25r&1S-yqsDGW9bvouTw3zzGr!Jx3Dnth?${rQ*#}~Ph#G|5gwl@x5 zP4+q(g2WC05s&0a7WZZ%dv+u69azTFV!P&3+=1HS7NJyTkL&QpHuhY&UxA3;Wb)lf zkRUB4MgS;R^fNtL*TSI(WrjWr;sdzUB`DiXLmymi|6ReXu2+-rB_aIg$UFr_ji$`iNMboUxbLj z?>ib>LoiFyoJxZuuW-F|-J>%=4EZrTz#I563JGdylD`q^eIz}gLb(u6Q*;p= z)?6rUjDbg%;jU@lpw^HF5jB1zkkit03UHx>F@GS@TiV#~7GP{y@ zF3UwNfPH8OJZxVoVfzYUdzHT~BOJshq24%ib*~Zy0dNeQLX_qKlmF`uK%vE{XL?15>Bv+hJ1_aB2 z9mn}t`L59(FE|)P99kAp+_)5}FKHyV1v*EvD2(N}kaR~9d{FOc4QaD-4`juK{Yh33 zBYeG#7=eOsW#~IiuiOLiv0yHVkFoQ?F+18xd-7v%y-Q>0uIqb3N){hGKMu21`gkBK zo@gVDN-ihNg>#9wQE=UI0oOlX+&BbUz!9~mz3VAdE=RN=-#{ZGfFb_(vB-ZUe=X8EI_@GtOhGCIa^Up>(v1B)g)w>?(Xo>pR=ECtR`<`YHbl_r_8; z2+tKho^k2^f^5?9!@mwlU2&%C4ULroyQ46PI12V~LHXgk01+nSLTL;90xwirnh@@f zY+G~;NCLRryF5ZaDC;DTc| z5El@S1i>S?3(2s-kMt1OU;8&HDjgCF$ZY>j#%;?NFM-uY56qP$Q4Hp+Uhfy__Me0#TvQ0~YBBCBRpbs0|{GybgS)Yx9pD zPjz957HFiTyDy8knYn+Y*((j5sCE(X;*rm3{`~FG7{YWOkv#Mfq+uy)LOBuz|9>G$ zm_^LtQDQ}IzIFf$i(ZvJwH+vaN#S#M;N!p2k137oPxi=BpfJoiDSZ7pH6+!^xoeB7 zAOYyqj|iaAE8cO}77q}o@ADWsorkNcr{_Y8${)bP*nI;@Y=_u~Rh?s6l)HR_yLJ2W z8+}R<&0(gUxf<~v%iXO7iHl_$5HhGwB`I-^%M=g|qMsW(>jp_dadK}O$AV+<6SAfc z{VYb-;u18%oQ;8$FZrqyhy}l43n6jv@L5FoCGZ%Re+C@q-E||NaJvZ0UoNDlfAbT+ zamNA=^n`_!ADlsO_n#Eir%NNGK27Z^Ec)r#Tl|06eYbzB&)y@dz2!omL*&+j`lsEu z*!n0Y0Gdxa4>A|lgXPehYsw(?fn%`!EI4 za^6zhp?A(=QReflWJ4ic?~FaAeNgunvi8vO<58PWM&JzPi&+?wq9|BiE-}ghG3!!~ zz+AFH^#!w#bO%eUVQsRT+wqYDpvN_st!1ElW}*Tm2Dq%Sc=0YmLm zyV^7ZqgEvSyt}^me2{n7ml9CMAxM4Ys)#J98exV=La6^ zvSH`%{Ov#~@gv)8mH(9N;544M7V*??-y^Hd+a_b+NT{jqFK9dZZIe-5wg};}>(uNj zLg@muB<00(=YdSLp`wu?I=PJ7Qfje4>w_4!;Zo=+mZ@Z+-2k5 zC=*c`wx(EHxZ!~_t#`)_vAeP zzRWmMlJnIh=ZVf9D^1)Jgy%XUe4;bO{Y7-P4o=SAbwF|*`OCZOGtp87LA1WPq?L9c zO~kg*5EGQS%L5mT^rVJ&&H)=PeHa-~%lFwaF;n?JG<8Du`4Y10_sE2KMgd*B(yUBF z5(l;UVhT(kUMH)hFEd24*#pw~J854AVyOZWFiELmN7B1hW(fq2cKJp-CS(vLD6vO- zyKF>#nTvo2J>hM%^_TV(4J@yK7pz&w2ZIZ+&xV)7ykltFOp&tgCgK%rBCM*TJO;s& z|BtaRfsdld{;#8Z?wQWabl;piuZ-!0Vu&^#RGLcKm`>L)D@9+-PQm1Rre%;J%0cFtYKbNSJkUm@71g8y?4w( zMX{ixSXFq{C{?0(oADZTd!nDX+C7tnPf`5d&D;raPje@LuDO$YD2w6s?43HLOlEJT z@y6u^y`caz(Rn}aE?h{1T@OId+zFx+&#u|WXPgMkYIomhJJ@N5wI>eb`>*x?f*Y`v zd!DrS*lN>xTo&wt;d~bymsK)A>!&jO6pFKPwS(i?J>k*WwA%MUEvS6JYD$AH=tdrr z;O62&nuAQZ@F;q}Qh>Iq1!B_Dy+@2_;}7Oz*Z!}2GjLw?8(*V?Lk7b76O2LjOJZZN zUJ2atxtA9>do9hrMAI}~Wzb1%_MdA(Tn|cQPo;(8zvUIZU#Tn@EYKi;G4UNPJ$Bp8 zMv`W03IBF>09P3cdput$%C!9DV2=Sebur+V&>a|KkX7MIYbL?~N3veB2PLzuzwvNI zUNU>t1Q#k=jVT%8k4_-XLFhrE_{)cr?8Ez&3-%woyP}I|*Bw3tKCu3e^Y86lBK<81 zOP^QVLn#Ttc!gM>Y-YU$RPlW3+il35d05xpJGZ3H3CzB_Qv7-5;C#IdubQ?YJ`H&Y2?Wzbc4+3o%_`hM4Z?OY3^F3 zqv&&OP#!F2+Td^?u-kzY?J*+SxfA&7g&=PD_B>?A=35?kX!ltiE$^@#{^v+sUo_JE zrWRA)lBwt6I5^xh@y9>_@a}IF09}I7JhvX4r?QH;5>ULqRav|3z6Y>lh4D6g16&k~ ze3y!wC0tzP-L)Xx_EcuPqb|S4FqXwL%mhDVBZiaHP?})hSJI^ z3y((DiEQi`7u7jH^<~cYeKYW+kl!B6yKv38xaxeY?gO%adCRB)vNtPaYqvuzTJF_u z3>&rEp)cNEN@AfbX8pd1o90)FgEkoc7rdnDYWJapNBLwR;UTS3OM~=gyN1eV-)H;_ zMt`=0-xbSRv!;c8hRPB>`UzWa+E< z@Qxc)F{c>=L6zGSRhp<9yV|weBF0a|Yu0TM9X}=~b$wU6>;mLTPw3siVUGjQe!^Q* zd?!zN%!T;;$6aPa9mvEhWmifRl(6b!#>Mc}o?j=1K=nmS5qm0pxFL7-7(S;se4D~F zeDBRLY#@5OLNrf^zB5I;UGbWxei5&|gH@HA4oJS^uBz<@oS_N`&#uO4x-~cK}j~!G#NC`h#O@1r5iXpe6-3@9T8*_DBwq#zE-Awv&>8P_Wobt~k5| zakwVVjhO+i$wLp_W0vTPGukr)#AdPMh%6W*QWJOa=pDS#M01dbnC?Fcg9v8E(;-Z0 zMF`32oLyz{)7y#dp5Dko%z>9Mo1?=G?#)eFuVhCS;>5)==Rmlc^FIsYF3;;#^m zF&?O(wP4Z2+XKn(!$aWkY7Zp4B)6UuNiQjlj5?wkh!K`g&W@fGcn4JwQGp=PH7+8Se(GuM)^I9+2~KJM{50ta*Xor-_=v&GbfilcyvQV}_qvy00kjGxQ%W%ilH_brfx!71>Xn#@XbP!2~J{GYi0EUrVkbbCVS_7`f6Tf3CQ zAGgZ`vNp{(Scs4tP}J&4!j7JjaKdXuG^|4QRr_ss$|oMnK{T9P#$`ZW_bMbBo?z9t z!;uX2z`rPRTrLCEkWFDh;!eDCG=Az!H1TG;7fnjzb_wl_K19xf%U=(Ya(Ks64l!N* z0t%$aymUZFrbScM(;N^8x$qHBbrG=b;r{>>oq(#&V`WQNDs@Y9OVrOFeV(u^bYs~i zwUa_5wf;Ke=`NB!OZow>FQFeu3eI0bQb1;|u744A2n*%#EGdWEifbhD_vt2Gd>Gyx zxZ>cZVN>^O59L5BAmF+BVfWk{XGjV%z}gOiw1D#daeM)ZfjbWVaj6`!{rigT{o{t` zx@IYSIUF%a=mOKBSwMl9WCT6|&4JJEnxPRdsrqV>(!vic{HGFro!-r3YFZ#EP&$2N zgR!be5Bb0;u{)HKQhH$k=>?Cabp=34;73u0e-iv=CBt~{0hF**%9C2iXGqI=P&^My zUIh+EdQpad5+(Wf5_@O{{ZCO6he8i=*nL@k-Uj2XBB}{1T#gwR&$>`M$wL>L81br^^n^5|AUH7KUF1o_0cuoHqkmn8&%R|J5LJ!aj2WFU9$VVj~H#hKaKT8 zY>iJz9yWF_mOR-7m+LCkQxC~}B<$ghEGJ)ZMPs)$ky0c1f?GqE$4?i}0tsyoJ*KZ! zGt8%~8_V5=_O)L~XweFk0z3pan%H`DeA5B!Y+=B3kV z9_+Y1_KNFW7D4;{mIjx0{w9+8AZXQpBelyzGE8ppIyJGh?_=5++V6l zfr=;?0iTM$s1-MjT5*3-E9#fiRRXc?i)mdYoURg%S3+v1O^?ybU3{FP692m=s*Oxn z8?aaN+Q@XZ0rR$ES{GJkR|&IN0$~CxnJ*5_)zzPdqnPnc{2x}Fm1uK*!SlX4WifG})0A2mj?sT=!QO$1{DF;uDRr)$vxTC5 z;iAPXF?+_Q_{{yklDEI-zcbL9X&b@e26F^Y`RaMS<=n-ZE%OE1&i7^PXog75HTf67 zZZ9z0us!YD@Rolipp^^Z4d2)+nZ}ZTENkxl1{DFw zQ<;^lNxx4tJ2`ysbbs&QgFL>kvkC{`{-hHHn(}P}WvRKJjPA?jk|ZpkWIxy|rt5I< zS;kW){_}sMK^*pDq0V=3O!5y|ovmi_v*+a^nX=xL6zQ{(h2E4k_M0;0JR&)kd2_iK zV7EW`vcH9;+OiUEM$HjS2C{fyw?BZkX9Rg3g(;{184+CT8*XOXhEh_Fl7=EI)&6ka zITRb1p`x}h6m`MkMjI-O4xjKJ&Y;;h@#uO)A6?Il2%_NiE3GT!Ph00(&#QCmIi4G? z=QyR00*PGvKb8UsV?C#2!eKoRUO^VLDg`#Antwg7N|QaQNXG&vBer9&~M;nC>lM@C%09?u2tK>5rrWN4~<{& z$Oc~F0B-vhM&1eOHjj@LKG-y)`2mIY-``E$2dV~kU6sfVrYT-BwPcemtsf~Bh+LRa zDT*E&coop9MlTS_c>`~z9KL)w4Ce zimGuL5M3M@@_)*W$w7J@VsJdSPPZ4X_9H6nXVg}HB+~+)qi--g$|K%x3Q?SN|3)5M zjm90=q2rXAQa176@8JOXdZ&IkjASwTL!6fGFDL4blq2$=1k zo?b+tV0R->0P<)KF?dvW-}2)(Ds(9V9B1#|Q2ePo0?C+S{c=XJm zJfMy!unmm7Rz@M~-}C4;USVzH#(N2_t@HPG&J5Pr$agL&m&VIJtrS4D_1p4PdK(uo z|K1OSj})>}K$S?z!oJ;)6!n5arJzZb0=G2bjfwtF7ENCm*1fsDdKMhcCB z`2cT9aA|0R3(keX>fAOG=WR%M!>3`=v&K@#sag}^Evf0yNQvJn1=k9yp)^rKrJzYl z2|cCNn14&uJE#t!Ubk^RqlRWZ^ed0nv7U1Kok#0`L+f<{tzQwWA^3_Q9Eq6)qz=fp zpEIi1yp`^5-cq!%KyBT(jW?0o9hVrEM+|D;`UPDtpzGHK#oTh(ZWp@_rbn+u;JTpk z3tGuDw0&K$2A>-ERJ`}Rk-(T2+FxsP+m=ReO{+vU_1to(pIH!F_46No{8lMNS^%j~ zIGJ_Qz_B?;h{_}yr>+-1kP&zVuv*0rJp2vMIcf77&YGC<9az7X)tcY&8s|HZ=sRj6 zR}Km|?KNq_LZuXl0^jk_Xw16>O0hwB-H()C{P?X>h$cuOZunK2ZJ`CT77Yo7&I%2l zb^M|Qr}a6#7weTdy;r}1p(lF9`$YR7vUglQ*sC?&+{XH+GHtA(!fc~g25qb=WdTfO z>5ol+a`-bnA8HJp5xQc~$`cmMn%SrS2}29^UPF?sWcu-gj##j8Xx>UPq1Ep zcGTzW#7uhny!kWc?qGj9XihGR3~*73?Fbz?ZRSB8lMWfzk#VNY!xz&Q&FWY*XWp!Z zeK>Dqtd8%}#?Bc#Hs8^4%(Qv4&2iZd{D0Iic9cDD{-smfh z%cU+G+JYmomPwCfHN7)g48tX?7sAIgOfn-_O)5*ja`X!zR1tpl%eB{kBZddWj1m@w z;YnubH~hX<-kW?^EDqG?%rs;5EN~#J%QUCp!J;Cl9no5unZel7zJYuE!^{rz@YVrl z$94Yw@w4q{Ce9zicCzrJtj=!kP5+kW+$tVre0(GC12-|E5f8p@Z-m#Cfed#WxmMPY zPv6|=M@00@=}7*i9?3KFLqf;TUsM6dDbay>^I0ag_Y>7{6K}V(a{G=(A12Mc`m$cE z(%kxOeLi0Smnpx6uZZU5tjZk4N)ffJ(z*gJ5<;?;1$#A$hiXMHj>sm{8GPPMXQ43+ zv*|;O%}QpEn{#|MgXc6X`tgJbhyzROCHPRuRj^=Kh?^^c5JH5X!Ac9NGeMKpIru7g z0T(mNL@hQ7dDM`hg7$+^CWl*LO@Y*#%pk-5{Gwz!&tdh#`%=;z@bd9;8hl^3NAVctL!Sy z#OJGFk{zt!xlB4=#e%h5Y+a2PKA{ws%TMB2gw12YJQP)`1*>vkSBt0?b)fsA8Z=X# zuIJ*Rs^(0lo>ye+c~iz3%k+9Yh%6wZu^ivlCnC!-)l&u+fC+HIYMmA_*rH>g$J$7W&a(x=pZO2IEXA zj4$qK>TY9co%$$&FwZFqZLs|Y`OwCXjnu}G1DZ2PtjM7a%WI=R{X4B+D`jwYP8|Ca z;NM_*{rGCoV9F6E^y_Y;rf-W%ThRwvmin=vnFvLnRiv6J31;ZLDeJZ1pgD0)t?Z+a zZSUVgUo>RB2Hxm9m|#&^-QB>@-s&4Mz0xc6r)nb91qtfJ!{yBx5UB#>Z?fGc_+Hii z{#=xl!8c5Q;B!*4g?=>H)CLm1pMc>GLYP%7=C4_)bU~J1g2ZFJ`GMsP?bm#wwri9VR&H|6r9IT_v@r>Ue*7`7GJYx-3a|4TvXJtsO&W&f% zh5{dt@Z(uGy)-)>X65Petbv4=Np&$S5F#1X-0>h+Q&D zvSm_?hq$AD1Vz`qQU$NnUEmNP0ED~@r#mBCL?8wXuMObb2?&(o>*}5e$Qo#D%0T1Q z_)mU-59gOYWuxUKAF(oE>F)mdC}E<#!T=x@R`1v%du25(@K{Bd)C!EY%S@mP3V zuptdsF}*YQvVKJA;0a7L$MsVX^74WT`RX}xLWOTdRBXO1_IQO{b}7!=Am-mOaYkHU zdMSIB$qN}jl<~{qma1?Y8(=j*?{BiqS}f7AuoS=N zY@gbMzYNjk!)<~+t0m9CK~p1(4iVxOc=6!|e#jFvHh^ingmj>zmfYE^3?~(7;DQR|R>CE89@ZNsFtJcGEE)!8*(EFl zR8T9#e>oR^9pWEd&gCSmqqFet1fj0BXY;DuavV%Zad{aKfwQM7czy~2{#_XwKTSr& zhm+KgKpD9%IZf7CDA3Oa7O~~LEDt15C&mT6Kw)P&R@!K-p94}<<%TeMd`0w;Uh?wO z+}1^ZDM1T-@u%_{vyMEY9a09?Izq&QuQPb+$m0`SHP)jo_mf+^tP?{AXl93Vn?Ly{CC{q2m4hd{U~ z49Idgp8=k55Kmax7Gd#mrC7c|fJ~sjJO_F7ueg+ZB>Az@G40%J92^i)a;TioPmmG$ z>5`wA(1Crfi$6}6dOtIBGq$n{A!66lCH!)E?26tYVv|c52^Ufdp+>4Qg(2c*E)9ID z^Fvq}nxY{W2XJqMng|`D3MMKjrf#zAsM?(@?^lseuI1b(9}N&1E}w!dIdseAQ?S|h zP%ijK{1X=x#3Gd#h1ML#M5KEO~mQp+d4sFb*L61DqBM;=o zyVZkd=D{QgfrhOos3A_5DI~x?IY9rqTnZehh~iT4NdLU)4b5$I)H}9Tj64R^#1TJ{ zBA=z9>4g8N-*V6bnDNicps7GYIS&F1qx`#1YgNPgcUU8i;k3>KSKi+1sdmgA-`|a0`sGRV!s){qA^RI)vCQA;k{fA z0iQM&vLHx-2tozLacuC+0tiwdf)skNhe8H9e#{guw-z7|MQ#<(_wtxS-pXsyE#iR` z21LlI@uq?e#sHrXpNczsd05;@SSZFg9nK#!-Hh>B4|0S+p1W8p;S{d3z@U&|py2W6 z*2>~^ii)S!dXg)~)Or%*0L4}Zt@5NZEgrhDNt7SevLN3+P)4sH-hj-ixfG?>arjg& zfEEtX!XY9?t6gD%e@PI-=^}>5qD~JMbh{ipfVm>vhJz`?<%Ll{)4%cbJ{GIwCu$}-)Rm#16cd&oSR%g0)@ z7x>UjI{hM-AGL@k7CuMfhqjV8<22QCmU#h?S&A!-^o24|UZ`iGizNT}s^l5_<2@pr zYjRdsCVSzm5@&2PlQck`w6p5uSpRm?N_HPl#pF97#_3LPTJ7|vReT~JWTE5Z@?V2} zojiJ}l)hGAf{LpPoj74Hx~Kdd(0G~9xJvpPvgvvjz8b0y^?_H_=l#u$iw3JGf!DF% zsc|{>Y7KapCK^eYr^egh4gegR?c~7`gA>-~2oVN&Usy?lgPw>^iEnaqp$jve96K;% zZjrzya<#-=awm^$mm(m^tLN2HN3h^w9YebJ2k^7K1EnF3u-AdF*N_US=*TSXXs&G$-mc zqnqW=4uQO+-DJCEMNu3RfG|3eisqJ&h!&yeixVfj3>%is2H|lAdIEvSBy{| z#KJ`766WS2VL)he3!-w9_fOtJR2L^{E;6uMm4i$(g{xed!taRu61d<;pd8`g2^Tp1 zra9Ifq^#-jiV)3K_NI7=wU@xSlb>b`5)%06!-*>3ozUih_>71GVyY>&lj{i^J2y)< znI1`gF7ZfWf+P{Jta4>~HD3B`4iGkqV-*s}#~j;4mGMixkrCqP8enl(TwZn{(Zfc^ zc*4F51j%BVUJ6=-hG*sXqrH)Nq(~3(wO(UgQ7?C8bzu|*LUFL+o8QBvcHa1L0)tq2h$ zw=_P;!kkhD{Af@_l{+YEk|nv3d;6Pm1+WJVH4gECYrBUEY&Ag+)<;gvd%Q~IXdrTU ztcsW-U98Fu;oe-rey#+ohF*^2APR`Uxf>A4zZ~b2js!_cQE8)t3=t(DzEZyF5N{AmiEI2GZy+`>?}gJe*A20U!cam1 z6DzSP0)o42N;Qt}8kPD=Z&V6E5qn$^BUxAr4QzoHm{>*sq<;;~tk_bn@n+UFm{}iU z;kV*!iwLaYv1_F0!wHXTWRqQ3!^22;!%u^94a8+jz!(iYa>S$8$T}yz#^cd7I1r<%2<_W( zJjDeX2iM72LkW$=68;8&#$k1G>`+2uF{ad9=5B6`Cq#%%7fZIPqBx_XHFriuAl@~RE(T|84;ZHs3dEs{WnBjO?nH`a+=-NMc(xQc ztc!~)a)g74VS&nB7w6Y1Vt`c|DNPLKIQ1ZMyj|*%LwpnBv6BMxa4SyiaTYdvdwb+4 zpeGSTcNrWil4E-yRalHkEKh6-WK8tV)&HpSf>N4F(M5Sbrc$sYFg4zbL#uo~(IbZA zGO3uF^w2ma>7s#|bnJuSc~G@3IR=D1-YB3Fv?PC52mkhqWw<_19I9~eICSsQ?lBS1 za~B68_NN_tXbtw;z!6(%B8c^Vd|1{pPc6t#_NmENa4{;Z9qUwP_O27B;M^l~%Av+< z;GtPz{)ao@?-@>(JJ_&{W4;c#B{%$$*D>qauhZK1w_Iuu^1hDUYeLf*ea2oOZ@;zQ z!pxx;_*!{lb}Q#Yp~MhlGYC_`h*mB#Ifqy3D0%czd2|@_O`g}^}4>3^)|JB;*-}T zf&=WtwfJ+|PBt8?1pJoIhVaWm3H}tSq8~}v81=GuG7&&snVpCTKz`W6PrrhI*v56PKM_+owq z{UT)WvC*k%@_{h!Q#2SX1p9` zEWn@AEyMQ8=5p(%Yqc-*%h_$2U?b-^o}76Q4~?mm9m6meMlA{2^Nsh319?1uVbH%X z{N5Ly4u#$fiS{tg&q5~$*5FxiKL(SMzKB zj5)E=dIA32E)#fZLWd!j!QDplWg@h6xZJQ8&AgYvC3HS}nZP#YGGQzSQ3u(7Uw{Te zFR|dcSY5t^GvTF|HyX8TNa#<>;4v_F; zszAALDl8A~<3oEZ;F!LU#z)Qy=HD0501GRy=|%!J-AJ`p;MLoCDVzvKRxt5dR7crW z4e~67E83JdMeq#DM59T2Q(IfMfS4cRn%XOmu-q%?j+7dtBS93b2EoIVgK|f$OHGBPoqx+0lCR>}0OY8|uo>6-xhV9; z6Q)-s;%!8LV>RxJMgLkFa~H`}?pl8k;Ss19wTj-FD9*%dy}WW~M+nEI4f47o`9YFY z?mB;fzq^`KIU0Q`_kVFpvDlB#sbZjDCCFi12P}W6^jiBoOpJ1!Uj!m9k`gvO=sLa% z@XAMslmT$h!;gW*RLMmVY&@uckudNalt*j@3jY9-MQG^q#3lW5g;!;poyKomgB%sZ z<2fQGo$`j!+KXWF+wtD)KFPMlt?9GpTp5-3KQ591UPvU&huVFQM6s<&V8b4KB+6Gk zZW!|*rutR92nH>noE;zi+ zr7w$?*vCf$vv2l~5^`7~)HJR!+g1l#*Zi`v9l>)kiQiQ6>q!4BO*&=rz(nvYyr`P3 z{W{XOU`EnB>OOIWtTb;bO`0d(ha1sKYlv^8i9oH7a}E44%-7G%eIBG3F`F8brg^XU zoFlS8aA4_v_^5CLtI6CzZyj+Fx7c4le?bkC6Yr&Kx!;K31SaR-3-ig~g9H1S`3tJW zcM?U#r1Ie8`#GygOvWvB`=3Q0Gk07#l{RrHj)*6YYTkR*LlI9)v)#vRKQfwIy&)|GAugmA| zLJZ?SV0HNGL|o}&aXuVAFIm_j#9`gJ4$oWsb&k~+I>KRWl}}rW4h~3~`u*Z;ilbn} z1YRcR4FQLz?RO!_OkE}K$EKMuxyssmS^iTc0_5R%sAs^0=&5(g(^49YWBypnt`x?- zcM7?#Mw`myKdNNe^2q)V#?4Rfm+M)tL7(CdHY#x1^eMt6&`IQ{P$8ALz(ztyv{X|i zH!Rn$UmhLI@FuH+$-&RzlG@k+>Np$l9CZVeA7~UTVFS}D=;RJLQ-b7id;<&P3<2er zJO_VMHa-*+rG^?Fc&@~rIt=-^InHdLPzj&XN(6>Igap+AtiI|`br2G3%Ls|)WhM5- z!;rwmKT4^VMkH)4i+##K2w(xES5#69IDxn54h=oJe-XdKK2rp)$xLUQmEFk{Z# z7*5PCXZ*3GxC~OmLbZtN(L4$Fa`(u1?!+X*%oXs`?O_cpq`jo`A5x(O_sG|e!l(Kn z3}KZ*6?%U-^ww+4RvwZ`Q2x2RD-u2qv!viC_j9^teIFVZo-nHB%aY$JIn0bTeMoV`5_&hE01} zXX$#wuW?+CZe)=yh)>WTyAER`=w;z(a3f3P9;_#VZDb+#O3*hSt?TR_VSEl_XY%U+ z5OxBeWBv9?iTs@L*4Kk~(W6>a@;NH8>sSPt5)ZCE$At5IT%d;6P{jEh!*)ax1Sc?O zQ4M#OYM-Nr__;a&o%uQQm*>$1z?TH7tylfACz#Na7&Pq-o$XAb0nX|*AF2S{?ikbb zbjn(yJI1F=!pYoZblbj0hf3%gl^l)A5?#lw=zeT?&dx1?Gq=xtd*w|BzX}5U>Wzrh z>#f2PeNZl2A|O!xSmc#)+Pip@yaaD@vKfrX5{yVM-w4(VXIpr8f*2(jlI#+SvVgh} zWx+4U6tdZZU$R=i268M6dw~}GQoG2P$}S8?h1MIr0Y)+La4#AU6fb19sz3_}I$~o? z*law)a|eW^2nidAkBpPUA+ezbrNtM5y-LKE@<}d13#tRuMSu!W{B?~@5L5vYa75%% z^E`~kX=wfI5~3x(cR+qonwwA}RC%@~N3_MY82+B~EDfky&Cr076rrwvVe$Hi-*|$N z@RBI%CAmAsqLj-OfQRSO_7dGp;g4fH`)F8JzTo82&NVt;+iMRwS)yzF>=?vkcrKS& zqC@1YojB+LG3CJHTq(g@l(n^RE@w{(4{~xC6D1}Eo$u?zqmSqk9mgyflqq4J^94qz zAMHK_EWn@yry!63#u7JL>2qV^un&T-k`eqsW&|K4ITDh9#Jd2ZYI`^+Pgq4`@~|G2 z$FHKP?O|QcTNV3S;@)c$i~L2C*W=X@9-g`)64^vk42o{TjPfTPMdc&9{@p5?*2v)v zAb!*;h!5_CF{Fhwe$~}dB!>?0Lk{wRF_n>0Jml>NN96w0xO^1U{ID8@xVS^7If)XU z89=pE=QgsiKPE#jQXNyN4w4b%yluI1>Q0W@V_0_Ds9GKrB(5OPc}zEB(N#2k8R1o7 z`J`xrU(oCST|^%15|Lc)F`a8u!@cdPVL54$sFRwSvSM2_K1t`JS>JT_hh9bEGbGRS$a~&x)q|vpDsBl1{L6w5vw$!&DGv+WcFrUX)xKyU6-}t-hNAfsd>HMLb z55#?q9>mQherGu!#f-sNv*fGF5wnwzBuJtSfCqY@R%zc*#*gTN96(b!W>({AN#TVP zW%B3ez+8AjhI#<~{kf9dmwjWMnwc+TujBjVocy4%8;qs0YA+-#m9ZTwL8Sq(m+-?q z>THhJU|S`}+pw;wL{0F1P2+=o6h?H%%i+-mALQ46EJeUXIdMsJt-y8Iy-8!Oh`|BP zy-95?y`(18olIXB$`d-a3pg19oLds~onsGXqL5Ep9_Zp-mXK@3aHLWtnT!JY+8Se; zNXJ%Is8L;65fSCQ4K7lyA(z@+*xG91Lom@CCO&>bXXM9tW&X!Fq5AwIktJ|=RpYz2 z#8@Jt{L3o*l1qef)62ScRfX(J!0^23;-?_4y^Jy7a(=nI#c*?73>B2hPp{UrWeHhk zXiLbmjOwKeWHU=(7QM36MYc2|H)9`S1J?p@ZRtPzG#y(8nxkPfbFT{Uy#3Yi$RK}5 z(|?Q+w*4QEE)kfR?up`?n0!1Y?}?%nUhI#2AFi~& z4+Bqe#gh?u7I@`eeNbI0-52+8)px<>0d98?f20a;<&8?1(!)6w><4fPC@K-S#Hfx4 zB;mQfF^~LuSZ+`gfv_d~Pvx=8!B6%-!aU85zsTUgf`i{fJmG+PWg6g7MF~iP=zVj| z*f>lP#+EWIfo%*~rPk>Bv9A@yuvp+yw~% zbeD{Y5=9wNf(W6at&p+amDnV9aa^8g^EavE6dxRSKsbDGkXHrupNTqh(KC^^M4^yz zeh$OuPP9-kt)IgZ-mnT+CpAEM1r0|s#)`LxP)y|pDc7>ST+1D-+?=vZw|C zW;!M43Sd9RNkX8xMFI3*0*|TXxJt-hBlyn!yT?+=GqGKhAbDOBjr<(0%(>`(v{W%2 zDkr8xI3H9Dwi*)$UH1xVU66QXB{21}WNu}5&hFpI?MvM(T>hhj;=+Invih(>6++?| z_s8JQnTOLszPzOy&D{n0fD({(pp$md+;@3wE?zcxSUMROmBzRx*FWI3=gl%*IRykG z?FkU!m*DXc3c;H;Y9Q%G7*Hj`9+V*&#yZQzG3mH+5l(j_>4~t6=bKcV>@^7xvm%S~ zt$1~8{ge$J8x+TF&{^2nyF!XTd_eZcHvD%9_{qml6}6-a_6-zL7q>om+h6ofp*&ZR zkCujrI3Sa@@#db*XR&L=Kr@5O!Mi^--k1IYUa)8px#6#^3!HHYErF1ZnjVoe-vvA# zeBxM^FCr##4o%cb8o?hC(>w?M)7drHQBapQmdYJ}xVtJ>i$;#o^vUfdU`DFY##+^EifEDui&@<)V*v2JDk zGTC!PWHHuVb}V9ij1VBUV?=cPIFFFdStSY}PRG;uxB@O9AfHJn;6er1Nd;V_0H>4y zxXFUlK_8V7#D0z&$0CZ)%P|#h=9O4j{+exb3f3(Y7pDtVCBe@?XDA77tcp}dD(p%R z(FrBd<9Vf188My#o{m)&(eYz0B*Izl*QymXFRqQo?SH0MM1K}KEuV(lF1t4-Qkbly zPmF7b1~oIN^^IuDJnv+1re@V+lhEy~Y(PYNQQ*77ZDSzK6lhg8-;QHYkoWkbs z7X0G9x`Sq`@XjkB#UTw+JQR9xg^*WXC!1ZgtyzMC?M{lzmWZ(u`eXE$dTT^mMF@33 zPA=G>n-T350;dBEeW=?JZ8d?jR9`Ho5b+@Z?=cF>T0<0sUZbDc{9XjP4ridD_8~|d zVXAP(-@ByV0aAB<&epNe|A^H-ERUxRSRPsXQS4<=@@jNMn2(&Pj~Qb8u0qB$pG{ZJ zjYuL?NQSv^TJhyna+ONbk|(j53tvKiZKu!n49URT8WE};#_szoS1#Ydl}j!&IwBip z79D=s2S((^8AZrBC?ZEp2LbL)(0KL5{s@$xTFlOmjd;!?Ux2g7Lgw&@+|^#pw8ux} z6AC&4_?$I`J%oD#$61Qt<*&fM(G61~2ugjV8@A*(C1Dxs+muP~Un%Y!>J8{mKCA{N zGow_~*r`Ytxv(SxpZoEs-iv2w3J%Wxu(Tjv$bU@?Ae$F~wG22^!aJ}%D zF4ueoLdmKlirr#8V+)L^(G<0v(Czg$Oj1-lc8V^Ki&Qtd^ipc@vUy(f%Lpo+>p{;G zbnP4udXb>9MQ8;N$6C@x+ZZxkB!QD`dRh5fN=Ut`!6PrXJC=yF#|tH&L+f zy|({*$o6%YQpon7Dm4DtrHbo!_hs=x7!h}OLSI-Ja)VcZ6S;8f z0w43n3y9Ki>I{P6PZhxnUFHMWGw>B<6oHp-=m9)oY5Go@i@Bf&PbbuQnxm&z;JdW!Q#4aaZgAx$(ltnSxtqi)=148*CBu~D|{gUsv ziY6i4$f->J`>SZ)>51#EDm)>xK+*pu$o$K{6G71ya1~7(qI1Ih;Dy?paLP(mYFHs7 zSVL<8A|Tv_6-i2^jWmb+rz(X4Vc-wUFDew96v{ObkbXsF2l+sNEL>W8 zUwa`N&?Rn9g?w;)^A=a)kobJ8O;$w5Fc+x1}d4=(|>MR_=<2cS*9m>A8K6tUw;Ul$;6y3j3y-M;I$MrDcV z0ksn7<~uEg=b@SZu@K;Yb9S5Rpf^v1FK(a*#*4`h&!=`=i4bq}2L{AXSrV4<=OGJ_ zWDTGy)=4fuiDmB+k*Nk`@&)I*%;xf?n7c`3x_pVSA(`F9MEiz?pQ{wp1a~#aL$px(e$nJynnR4wFOF)_a)m1my~OuFTSnw@wy+HofuAWx!^%>qB_i3zYLJ6N-J`#|IQJh;R81=^>4<0!0ylgTAO!*e;R_@J zH{k4&yx^%V2w0!*8s|v^w%|${BtNQ{1XTf@LSh7GNb%g62P*xM1FE7t1pN_&r4D{S zt$F?-J)TzXhoK_iVjKOHa^E?D!1u$-57C^Y|s_xhzNg2%WR(EX4}M zkK06veR)DHv(##!K&t_XD{eFYfDmW;Jg!q$D<0Qf79g&>dsO#)r+pO0`X2sBU7ka* zHPj4Nnm0pFWd1pXgcJ}YM4Vyw0L*j`;F883z`%MJaDB;&_lYW~f-Md!Od%p|22_Z) zk%ys@zlXIS~VSq(YYdO|7qh9f<}UWVwhD`y=E>7a%^9XkIk( zqO*4R3+>8u>;lRcWy5ydI*OiTRSqH*(dr6IEEmhiFyYw$SsU|%I1%&U1H)LgDu#vj zX#0V*$H#g7&f}D9>}^9fQkl>Mgp<3~#6pYKO?(N3zEXP+v$#`-Bw#%>AKMWVhWVsD z_~bOQkhR`CNuo(bJv#wa|`%kD0{n<&FI)G_RUq-)3exIMDmt|h?ApNCDPfA8nOs5#Ippu=ZSBO^WjI8CtGpyC=uptT={AZ22d_O ztZQoy=z0Z#^57Q}W$z!L!~($XVlgZp!He*d4`J@y*1ajmLGcAasRj|eRRQeWL#!=& z^m^Qw0Cy!BYC`iQWB8PA$q@6S-TW^;2=xH=3G@K|th+!l?wS%4wo+F!u-cMman`nc z5_Y&4yF_7AeK)u5rul~z($>em0S=G_qEP*VX+fn~B(216T8@4ZzZE89DsntX4w($T zQR6~vbJZl5#au2*6`)NL1?=Blb|esCG0+6Q#Q`=6Gwtq+aQC*Hkp4fnmM zpsbzK7(3Bb#w5r+S50_}rerdey%Av>dajxZHU_4sCJHt%>jJ!eJuc&W$Z@W?BQNlu zd>~5*Tk_zLK(a9QV2=ZO>fn#*_G=jYeS$J0ImibzMYsiW;W+vHvg4sQM8PRw=ir8P zsKWY59pB~2zpsnlBpUM|K~XGd#ndGh-Xe$u z!(;sdapHQget`sI5)EUI4F~P);HC)!{~XpiAY##mO;kRw`> zvtJ9Oq{o&#EbXv&67(Oof zJdNQXDt1r6g;@+n`Bc zl&&;M$v~Rpe2|rjq*iKvM7;y#oY^F*p%ZEME~)9t;d?a z$F|(V^UzAd6Bt2CU^7ZLAp8)C>PbxWt0oJV<*%BomzhNf$yk05q;n{U1DB)$;ciet zsmyDH;gYqk?DKsnbQU}Zdnn?Zt9x^9?IG3P=G>?KHwnhl&d&bQw&}2dNp@6#;?|rHEi|pCJMnFPw<`ZF{F$Adtc$`N*i<6uAK7RNmF}{SP5BPkP#Q~Zb=lNPJ0_)^gi=qsRMiL$<3a7a#&^xM6JRB3lKfG z#{o<6h#r#_-S$uIOPIQIT|9HwU)01*XHej{nD)50t}-6SD$6WF@^N>S<+72-adhrL zYp#2iDU#AmL*UbYSJbDm!6M7FREUT711>-Qm%aH{J?OgInx5~fBW(BFEur#%S0h*T zP$TlYCtMMwQ!D-F9o-5>`}}(s70QukJm!Ap1~DQrfkctT;T}8l{D0e-@1q_h{H}qp zbT>*x!6@0Mcxv^<0+I{5>=U?*^`zj&gew?078;3PU3chR5guswzN5_Dm#b4NnzzIO z`>Io`0tsQ$BKOovowjM`zNbH}e3#R_C4NX2^FS-HZWKW~5>o!2E(gH*DRm)Ig!q(i z)S!`qI=7N=DI%A_{eUD|7D=V}h!NN(tw#j2S zT6*2P(c>`yqIy5tBDtT5pHFdt-8T4mY0_hR4wGW{0zHrIIj`#>8bwLwhtrYnFiaVc zw>RTx7`SRvC)4p7O*JGNjRg>oS|tJKDH`HZI=Aw2IEyz{mqMAOzDS_3-}+ER2c zoKotzw2+vecStAf4yR`~5Z9=PG%o zC>-6pbB#|`CoF|Lu<@q1c&6WH#`Rdu(*{wg4YfH`nnHKw1d4*xf&SVmn$TQ;&wksl zfZbP3N^S79o>-``Y{bMUw8!o|BF~IF**q=gJLP}T{KN3D>to+Qr)!2&r&cg}0!3VA zqpDpNhgk4aLID?$pRVZ^3wdQ{H$YKG6hozK5}(*B$RdS-WGsH=bwQW=0QcOL!#}Uk z$E>F{)qfS>gRUb1c29xgnd#p^!4>5<=1KzEF}xKO=m^MNQSs$;%mJ{d;ED)BHpEZA z@0J?zmuo#K_F|{0&XXU5;&nOf;EUJgB6M)~?z2mR-%@X{zPy1@?OHX^ZAU(5=e^sG z-#kEKu}A0!T$ksoCSo6cde_#x_!tW-TO}zHyN+(XA+dDA*1)|kcNad7ufU{fGWg2E&ixm*Fnk2}MZ%Ge9g zZfhy*%6YG)0o-!zd5}koDfI;Q^_#=M_^{$FM|>XLa-dBT3W@!NVq;=(ao=bf2v-oq z0V8?Fpe%A!=sLPl0ECOAF0tMw61k(Q_n6rEZC~+-fe3xE@i;j(-orS=^nu9$9n(=KH39#V~GpkT^k*itF@$7A zv_6C08!#j^@42LXTzXL6-u8UbKJ;JO(yzz>s}CEHfpNiL9K^gYhDOPP*?eDK*IUcJ z&ku|GM6Uq=S)j{?WNC^CMrm} zIOw_6;qTTNXMN1#=8_}%*&oXXfAal9B+S?5$j5*qOco9*5eU>-f}@S)AH$M_)wMSt z&BA-LDyxngfv>rCHe(>iFHD>o(0?K83B2Sa{#}{B zlZBI;#RYNlD$vPbgO^6lPU&WicQU<}8XS)XADv7M+Gt1y5`**3enI)W7QK@Va^UR7 zb>Klwp4_L{WaQdnlfcqgyphX$6X5u-BoogifN2ffgAF8~f`qE}mBh&be&~(V;8ZkN z(vAj=hjh-z#=(@4%~DKCqFfc8hR3ZLaWa%e0l68T`O*!WHPOlH?ZRdWa~phwx(xGc zrXAA?TsI>)`#b~4@&j9Gs4cHmw`{Z9Q~PVyO`*cqXyZGBgkkHd^6?HNn zpEnil8K!Dh8$v~colG0>tn4JqUbF-z!+3VWKo>>3+%~xgQ#eAuKaA#w6w)Tf2YtZv z1&rZkb=1{PT3Uj%nIijivZ%r}^QJ!pI{{TLi(XG^ve;q99aRyEejcyW~C7wol-7uzn%@Wq#j3$cBxM4-h%0p5Y(@=9%Q177T47dYN z;uNIAb_Qj#2f_JoD`Ij`aE4Oz8l0sda6`~{ez>(@YFmPd+=hftY#ESiyM&KM__f06 zMz9+8+}7Lpr!-fM5zD5c{p`#~eZ^3i)&3^7AHK@gz*N3O+*T=$WRV;zH*4sh{+VXj z7z0crJICtbI1-+7o8Z2q5Z*es)y!{!0dMeMa2^=ms;}VIlXmkFD1u-8;1kiO z!^Lf8$mjU|$Dn{k>@`em4Y=mIM&JINFPfN`+{%KHt;4fUF0vJeu-A^GAaPOp`OR2J zbSew4q2>90%y@hTmP2=rp|k?he9M^;r_Umz^oJ0Bv%la+?~8{;(d5>H?R3UYZVlb% zOQhEZ<9Q!r?IPTp=J*B%AFSb3H0VHQ6&DRbWuOb2U2$DN{0ZJb$#U{IWu5yk&f@lG z6Zk(EAI5#xibS@0DEWFF{GQkkhT5KCu68n>o(z63oHS>x(%?w-Dk07i#=2fo9;@46#Kl_43U>1rxo|klPeA>%0X&!tm zRq}>ciG*G17i63JrDvP_rDs+6B@=6tRL7Sr%;)shQAvj;-XIuPXth+waqyi%Fdt#! z`NNmc8;Py8Y$%INOz}Hjirt;^&YJH|g|z%r>_-;(ZK_Wu-6t%62g5}8SAZ*C*yI`a zrzAV;^@?W1Y{)+qiTzbv{1l$Z8ns(}@`0y(axzgL3o8xHIUscGGln0vzbMOO|AQG*Ntr`pDR%L z+jX1?P;rz|X)IPw?L{@*fkJsIw6%unxIkL<>wM1|dgw2c}E@-$? zD1BHpb@zPT_~&3INP4uQPC8`ReYQCN{tL6g% zRG?SQM~_-kAVQnrq{GR~D?auf3(wH;!nTXpipB9U|5nqB)aIqO4?Ev%`^&KLb_u?E zOVU2X=lvj8o~&lK;7(4N^83;F*b`~E zF4B$RrcMBc3&7x!@<2PC&!LSMqY3AwdO{!oli56(%%Xzf%CsHmsX5DcF^sqEE#U5x zb*h0t=VIN8?J||2%q}wwt(^7qnF|6(>-;^o2Y+AOgTF5ZfBP}IHx>EYxMhooTgT4f zV_4rz_R3lVR)6pv&x~6s{aej98Z$Y9gup94y$zvX4svhbB1T*3g5~AH7Esv>B4Q0P z@7#jf^_IVAqsm2w8~5m;fjJAm_bQ$=!4FHB7}I^-m(Kt`lJ3d9>%QS-VwTEwuloQl zP$2E9U@i1qDQunSYq~hA%mcha-3D&d#V9Pfvd@(o&uvMu;Vky0jLpa@BF)H#_4`)y zwF`q~aAC6tQ)c1f=);i5l;A|)ZKb4fS5rUET%`RmY5X8c#5n`;%l88=UU9H5lGgsU zT9pgCciUA-?T4a?5MA|EW{aQ(>oUNFA`GOXiLQ_7zOx9XhFkzc)T=6h^FS;x-@?5{ z?s+W3GT4uN7405a@{t7-MIXG2yP~uiSZ|LL)?2q=89cql_e}{th{dhWD*RN|hv^A5 zaBuZUg?0?V-c?eib4-bkY!el6v)1Q^f?U!nz&Ny8OIXiD^(iV#y{)gb6`&0`*th@} z`Rhv+k=K_-#rzma{$q4X)g}34aIUZ|xY)*q8r7Mh2C$Xe#z#*l%j}^sd{81jK?t-M z5HK#Q1gZxb+LKX22W~1b@_9=^hDLdpMYO?`XM8sjP-1}xon7HV_eQ9kcem*Q_FLG7 zwh^;ZW6@-Qjgos9v6Q+Q$e=nc(Z?1L_UA4@e}U- z97p}eUWZdp-u{cO;I4bWtLV`>tv1dm2Mdl^h-~k5)!ToO#RT_qe8fT|d^Ci8m2f*sUpgMe?SMt#a@FR+U7>!#ev13;#mrRb69AK2eNX%{L(D zao(h@n(t~wohe(<;J3~C)e&PSj#I8^!7pv6Fn;}u9=F!E_`9H_b^9XZ={v~`TOBXE z077lk9jyY4nMw5jqkX*Z;7p0$^rz;p}h4(f1)q!pSQOf2m zq4WES%I2&tJkKFK18M#3+dD%@mv>X0K8LVH%FcBh=+sThu+nu zo2MSvcjpy=BkYL&A7fVnCq;4f>*$`@IeT|!Id*{^mTQ;YWtpDtnV#nK02D<)!4q(~ z4@FT96{EykQR5voMifwU7&TsaBt}Ih9SAF<*W^nC(~R ztE%_vy?RykY9sCuS;WoaizwJ53U1EC+K~MTH!m&Xx}0$R;mTo~Q~+Hv z#)qG%2<7J@%TFN$r>tV!K9HWDOT3&m{azKSHsp{viDcKKdaK8HHCHv@tLx|U5|FitsZk&IrR-W)Ehfr zK~yQ|-{|;uz3gV;842X|k60ljWzCpJ0qWM1F@v~61<13H2-pjxC*(ABtQlW?#+68K z{Qc8fpEd6HSmXZkM0av!61%2cEDqt(TVID)Q%4ubk|7+jMC^Sx_6$5;nu<9p?U{Pw z4&FPDCV)FYbUv9Mg_b<;bAv&^n8Q&iSVIAa9##UZ7*+yYKhy(?XJ1t&_Ahu^#?_oj z-ZdgHN6LK~#v2P0^8QRr;)9r2EO{?}9UgdBcpAHi;Fb-ku&0JWaTT(12-O23>j{ec z{15;{Rm~efM^*bkmlCTM<0c*CLr2fmhg-NC)UgA%8QKm(DtH-zZ}8w5#B!`mWjv^LOE&VP)~|2k6;qYCAABc7PRLnWY~# z0H2W2E0yrb)3My}o*2R)JnRC=2f7IuUJ<9D!!68wkTLsTn5808Rt-&7GIXjE9S%`i z=u~(EB<={JN|r3xN4rPv`(+ZyiTG6#u^0pS>&+iiCe%P zd93%*>&A{iaunGkE>FDHmmK?R0VFv{3lJ}UVze&~Vn=Gs$HWCna;Pszj&ieBOSs=eS9bZzFasn9TTb>@xaahhk{UB0 zH9k;G;izMVU9Z7P@cd>^I2x5AQJBSB5{{jTR=Of|);t&!W zh&|kLaxP+_VDZ#@K_nd%fou`=4&5Y2vP#Q6A1xDWz5rK5a7-WHna@fI`>0QR!iI8& z$j3emA~CAI9yOU{$LoqIu6Q3zg3kcH=iMMVb^6J(eKEm*IF(5F_#Fq(qAW*gQS6jN z+c2u>g0v_Z@mJ(07pZL`QCp_S5)LW~xIl#-5V)48Gl)4LpjPw}o;lmFHly*oK95`;@l>0*ZtsB%; zBSn}zzF|L=PxPqxA2jzfinz`tTo)E4h3)e&i2xNENQzRxb#m1CXwlCm^A6Ih<(yi= z7Zs@9v}nWX8%Sa$#NMrH>(M~$@-e}(ZDD|B+WN%~EHJiSM+*!R6@#zAwLjw*Bq46U z$`=ddcf(&+ltF<~k(px=iBDwiL7%~;SOj6ccNvY5=yZeP35ON{m-wO}nBG6Tx|FV) zj>npn#K;@O1hNR8Me~Hb=QuyM!+$XAXPqWCEk99T8{zlsn2I8J?2`p+?1w&YA*EPW0qoy9E zI@vxAfeo}BQ_&-Vgm_Bvtgku!|A2P@tW9&uw=KJ!eU{zqlz1Da`?D`~s=o@ld53Ig zEuD-GB0TkxJ!?=5k-A<(fdSoD+=xyKfR<}ZfLpF^1IVG8N*0`&SA1LP9u0} zyIUnHcwMNiYl;hQJWuGEL4OyJ8voZl#vL3d7Emx4qg-5Bfucj6VkGuCXY8<#-6#I2Y?ObS!8Mmo(6$WY;8~ zcy>HS!UyDg8>j_7Py8H!M+br^YzxtV5$|pk-Rw-hp2)3au`Rd9`e!l@Oanh%Z0mes z*zeOP0#uE^fGg}J3^bdEQoofwm)29|MqOG9kJXCQdHRDEKj%ca-{5)>(QoS z2`PKvJP-D!O^tUAQ>P=pRl5Ez5KqfXlASYm)$%h-R&D!pw6U^?`zovz?3=1R;Q?N` zy&WwZyi2iQkX6J#L&|+IB1w3tprsK?w*RGAimS3$PXMywl^P{Fl*aUadlD7BQzD2w zxXKTxv~QeD%Ga`rzH{yM8}uslBXax4Z;>N~0JK%Ki}^W%fCXiN_yH-4H*|vV!M`U9 z2oU+HS|!h@6;KbH0e%WjFyl_&-Xz)R)G%7-dvq^-XAg zutP&pWRd!ac;dNR!{IZbPzhdttD^N_W$_Woj5Cg=bw|4skkAt!!P;Bp9YL`kcVO); zwH}G(f;XrI?C#%yEy{2fA8OC+-}w9t?F``Iw|byQCa)aB9}fp3p}lg9@ijCTj~RXf z>0fV9?iWanLB8o5zzK}sdm~ZBNBc?*y6oRYi)s917dtZl!J(K{`&-;gm))NiJLSt# zZb<5%Ou%@NLiNc6y&bs3htjX=!|iO=BW(jv%EphE^5-DpoYMV{pDe!P+OmoLvv%&k z@17aEinxAX$`l|p;#^NacnsnLvVlVy{bVsry7E6q z`EzWxEg=c#F#w!tE%ni)HN~| z5Dre!fx(EQPh3wkOq+y@Ywu6v&n)@>_%^cBH@Wa9PoQP@Lks;SM#0X)EtL`5DTc!r z5G^bMyHso^bS&GVRX1WQ>=Tq~MX|xM8?F{rWKm9hdM+`9ri4cEmblu|@|-6a?O&BC zyS*YJZ~;ErWCU4lRkV^3#1@G5nZ&cu`d-}758#U{6<^@J1lr+>?fj{IR)gfnRtzM> z{*oUHZ+XNhZv;snM$eM{Wbbjbc|jAI5)o?c=jl=&g9OX#LlvQUF|rg8<^+hp{gdIS zk2)w#>hZtDKI`s!c8V}wgP6ZG$zS}q>=D7sxwzI>is9IPA~RlB``<@0W@ASZV|W9h zYNU6f%U6xpZipj+ff?t9xQ>r{s8cG`2js|C^yE%nQCX)Ec;2k= zY$m3-YrMQUjs!_veQ9sN<{ic=BY+Hx=p8>d#}W6lkd8QHlPV#A;H>=3aRubw5O#8= zhv_U}x|;X1ZFhx`UmV4YsG1(CIv=fvM!*6!Cw?22L$?vG{K|0RmRLTA!{0H(-KiaJ z=km0?XuI(G3>1=ci_44fGjU2*VNX^;YU5jNY!HKxI|Y}cX8GI%z2-VptbGqKxkJBtNs2I zj&|C8L-fPN`ZvJ4d!zl}Hwc8by98M);0c>L^v-jPlZ&`cB%XL=yi~YikJR)K=m3sT zp@aGtY<%YiV=3+` zIoUkA`7|XRzz!_A(&K}b;DhTc`sGcRYjRWxBd7_Y4u;wD%81D3c8f2K*Ib93qK?T$(9Q!QqjEu4 z10f)`QD^#qd@P`U#QYCHaK&8}04Iwy=awM(b*z8B;OvKFk#Bo&>e9c|8#ff`>?Y!c zRYhKKJ(e@7!3!#s&;$UhHJSy6=6PaatY;L2t8$fkh0`aD4kfALfsb+z9PH46G(53~ z;X^Dy;#?2i-Z*zgynA!9v-47|G)A^fh5K^u$&J*f=sl9U%ZQ#Id|U%pETftK?#F3m zpf0wC!3rwuwm=%l@M=HkBDH|n|6(hWW6t`5SVH^c39v*+D*|6k0MUEU^e6N$CXh^~ zCht0iPo97d5OmQG3{!HiRmG;AgE8H%QT(y%n8A)Z#zs>Da+W(M#E2*O7rQ{3sGZi- z`}4$QmHnMuj%z;=?<5;Yyz`MQ#(l-%dw`nI;bfqqWJ4Y``GoB{c_186dArw9WiiH~ zQTCX@bqX~7d4OEL(MuMr%2kZ^bsz9TOB%GMrn0I$M8mNL-&5Ac2Su@7sl@u%8RN+! zj(;T_zwt!_lo4;go$PkR0>F0U?;A zzU>PR@PM56Ads&rc-$g){+ar5KLF=x$!OsVwH&doCvItWNrd_RPZOGjHZ+TTds3A6 z_Wqplda+aAQ0sw{b#TJv@N5fv2pD0%tE}LNH%K_F8(K6tK`T;0m$^7^;Ca1;yF!F% zRrZf1!oer+HdV<%Tg8+yxKg7`tVGh{>!Zj@bZ|;)|De(B?iT(|pf3MG^e>)2I4~)p z$s*j}gEZ*M0B_FK&9&!$tz?AjqVs_RtsvU?p*PO5)oJL{f3euIa(wk4|$Ou z)b~CQ8tj^$;Yp<|cQ;k;CnfY{31W>x32W@9oEMzWpqzX1%!;*7EaEuY1sLkN;gNg_ z1Z+r}fFzBG&mJi^P=H8=>yMs%W=(eh2Z~; zwsmZgjlT|o;s$43^M?RgV-Io0wxXn<*`zio#-Qj81b89d}Ne2AYVD6 zJmS=0eoR3LUe^ zKk#;)+3!JK_7xkFnV!jHc%(C)3~b)ZBIH1-Bh%70{p9E;Pd^U*6zIq8$ndsghCWUF z7+*3CYtZ5sW%0r&i}$6n6ex>=3)$iq)#8OwE#4Q^qQ2Z>4!4-YE#`2GIb1)7)D})o z(j8J1kft2}y(Ov+vsi~&tivqUVHWE!i&$lgIkG{HURmUTSCWQ8zbD@nCq8)Yl=+ip zO>J4Y1NX5bq8sa-@1JA*T&;4x#X_%y*raHgOE(|#tetr(t2yUXCMHq3PEHOt6i;Q< z2*KN}E`a{w)Qr7b^JnCmZ(!n%f7Rsrh0D$EtJy`Vd1p+TJL$BR1>bFDhxC{_uJt4{ zd)n=rd8f_YC!6J)tIXfOThUrzsn#_qIh64wxXv{41Y;RZc&9+t8`jgy!2eh3_hBG5a0Lu}g6%PltNo$x-KS)@)^; zp%r}{V>1|k1`U1&$l&IY!EMWcu(U%N9=lAeV!a(iH#+?qq^@g;L%4V#g-b=U z8?H@ey2H}hj;AgB4}GqQODe=LoWokrWjpzUWVeXOODsGe58|2|BnL{pS#*PJw3|1` zbm2jXtB;vexu~}%+_yU1ho$@35<4T=LvaPzhO_Cz0Q7r8&}Ip4XNI2;kyk@_#<$-9 z3d&Q^0K89e7+y#mAVj?uzBv&ZAaGF#uSyOOMr%lfj$wHFOK#_h&AdZlGa9^^Gd8UQ z-aL(N<~6y^cqu%ynZsvb0$AiG{O}iGVQl6IHVKK%JaRQ||C%ay_9Kwt~+lt(}o z0e!7PlHEj-c}^%W=x6aWmo5F0rWl0|)?E$}zv0tJ=NRvm*xH)wdicnfY)np=2c zVMxGxaSx_#;l|T40pEZh@c0(q0a=WZpL2Ev6mV6)gZhyRMLVd!-kEUgJ=6hPICh*h zxHm(=8H^p=E^tT=YAr%KMDVRbRF7=o)xfJ0+Es=B&D3PANymjsbU@ld_403=O6-7& z(mCV(M6TqzGN`pt{`&xMrqWj&dEZZfaH$FvD_VuB zRbMzkU!ZCSebEld5_ny?3p|*rcH7kLj$b#m6A73;mm!hp9uK`o!}}iE;MfKij+vQo z`K93&X1q^9`60Mcx0OdM$csGQ;qB`b4rh9J8;`6B<9i!I3K@iiw&VH=9!JBBxE-{& zohL6a;An`(eLFW+0f9pEr#!lyi|Zbtkex7N-Vzb$`-u^8d{Y=fm_D&yEa$S`obb-M zgu!+yJx3U9=aGWMw+e9x1B9##!)Y2yOru^Eute)uaQmIj+nHdpX%XCh#pCB-I9%ih z0xl4UZ|7yxB5B~qA!gwZVmt4YMcva;x0|K9vlIHB5!CJ4s2eR4*N+LqwE$J_=KZ=h zhViXJREGearCO6)*v|D+B7JOh0$AT`{8||o)mXlxQV~7{^omH2?x=PP=utW1&NGY( z&a_*r8caLE2g8}*hX|dp&VY}RvX6L80d{xmV+8%@3|tx);ZJx?7D2gB5%laj6|@5v z6pvuhmXvnZ!)zx{oE;HEx?>3BPSo+Lj92FN%5-KY$Unc68yhQuk48g)bcOmb5*03L zFOAh9=-NAZjde+Tl^DLlhhYd10zXXYEV9GhJ+7@ILybCRq(V@!3V{dN=;lgU*ua6n zB@yu#LO?@xZ^{Iwny-0cCuTpuTTp#>f$C$IL~3$7!Dhfr8n58iXKq5v=(4`dpn|h_ zt&%E_4k51rDg-AqR8<-35fy?;DJ1%sR+HUXsh|JIh~}<2!t}JBe)AnvFTTJQ8B z4?@8DzEW;^jaq+GM0Bk$X}#^Y9$Ad4X>hd99a5 zt%mo{JajCVDyQexR8xNl<6DIU-2t?sp_G2fqiB2{nDS+5n)zv19}FkOxNzT`{W-=y z_c?rvm|t?T(Bp#sm%LNqOV9@baJ{%aSfDVWeTEQFAq8swmppnny(3Q{Idr=oM#z6q zU`B;dhaiNgVYkfoi_V=kzkf7(ezaxU>GS65wjXVw_G8s)3t-x&pB(+<@iWq#e#w5`_RBgYOsX5_&mTJwbr9&DSIZ#A>6GiIDNyLHNfsgv;2nzc-4T5eL_ zUCk~SK4O-Y9Xeu`#=6==&!{Br)S65t@t-|AUioXd(Nb(a5Zot z>z)~UG#_oXj>)%%*hNbzE;u)embO&Mp}`^sF%lw~jgZFTCqe_a-*Cbz$q7^Trh(7y@TlKOUQz zI&a*BgVGb;>IqLcnH6=$IWi)X{h~vlcn@KnYR%5*_RCr4TI*0e{Ra`$DV;l%;lw$< zy5%Rl_?h@5%yWJDOYkmYzW*6NsD;W9f7w5o71c+x3Wz8p(Qef zvDUh>(cytsYj#&lz12D>d>B6a&A_4LWS7E2cvZN$mc<@oRd|Sw@;}7HLH$`*)-m_{ z1_-*Ly=A5IFF4^ixHoP$5AGdq4@VZCHiYhG;=^o{lkL+({5vZqLOV3)v+lX(DezKb zGI*033BMsVth>{EoG9~gg0buBwXAL%S$S$K$XKYuWOEEk;}OF zt}9N0Qv^MBjVkoZ=uL2xWcyVdSKimPM=_>fj)?pyukOSsa`S=9)T2=MDAB}FdE3` z(C#r<*<{BsnM1qrr&rF4XqOwqA~$ontDUAY$Xc{}4CDH3yfL2{Lr0*zf*dbBByzPb zk7cqG6K4vo8%rEZUDFfmY2b}Xq0!2YrEafdN&IyY1LywLAvQBtoq4BkdHy3_wkBtY z7Ack=Hh5~*tb?auyN<3)TL-JUCdz@bJ)ckb}>h;m?Kxrkt^oN6?5c@ zIr7CE`5;GQ9y!GEp;T`AFUtnkfJv=>=f~y0+p$G({5%z&xYk0;yg4pDSfe?Nx2!FL z!+94p!%yfEp2_%g8WzDFv()?vMB6=t2Dg;!Z+`Lc>;VA(Gp_7^Pzz(`gg29 z+w&es-oW{~mBzglwZ0R+E9q(zGdHO5vZqWu}2>_oqM9Q(*;OnOVj{#pk#aNXZcV+RXP;Q>Zo?;Dd^FZ)=9$q0DfLC-jPEMLnv8Yjc+>vy6FRfDC%~+x~mJwK0x-g;a-OgjZ^N$X)pI%X)kxrT-M9%bf(Mz za7WQY90)h&Y&1KM4+{vOSPySvCBhri7V3rZ5&c;Wfd7V8JA`;1$s6+~GFzzHE=SdT z8NJy>&CVe^A^uDy5T}MaXn0K?RTq4`fp4@1&cibJn`cmiL&&il3x7g(IYewFkVOji zK?2K+XcCSna?3IO+P~8qoczfHqT>@{TO}OEbeek?mD-I}IQ0qkNM{Ly#?(}(#VKG~ z&Nm+#mdi2O&;q5FWv6Cy1!gVC+rMMwQ%}^{+t^aS1j>97YCQ2p!ipytgl!Ua9vs7 zsrLIE%s;m8)ZF{LtQ+RYI9xrl7RNiQi#%6LbvVmm@S@0&T zu@!LPko}5vK{9b%v}G#(HaNg1_DigUqkRdE7mLB+Iuvv2jVMO0gnfjnz!(7)$4BLF z(S1=#VvK?!3WSO6K@Q`YYoBod2(2mUq`s9y?xzaW4R!Ls|DvZz?0 zg?@+$bZ??YszO9J@;4Lp2C1 z1__CTsBM{wzi>7ST-+k@`kkwa$y*i`W3}}yymxxt;`-h4QD~oTk?GpLQ{8Q7&|_pM zgc-of7xIszklZ&+dkwy^LAqzu_RpI6B`oqG?_*{@;_|p!(Fj*GT#l{PzGwW59Qo5z zjtW2HA^9wo^f^j$EO(_Ay}!N4UaJXi?8YPQ`ED$JE02812br1tZnA$ivczsyiZ@C!7(J++L zNcF`Ka4jQ*c7wV$1EH)c$91-#91G>xUO9N`qq=`KYu~}Dv%6U>Qi!j#lyUromy{;I`lZr>rf$&OEuXU4~r90{KC$f*B9ebympO`MIJrc!=@hn zjz_v%PP>kL+ZAPPJ?eGFPAxhasCPL)XUt4#AXMs5wB?jkq`PTfzh8$6IU9)BcY;dy zu;l3}xw?zrA7`fc&9KSynq#~ASJ53#Vh!ByRFw5>?VIoqXaZak%T$qv$O#}gP zU`Q6BKl}pHga=J5$i(R`Nn5VROAmHP2O%dG3`-iY{JyL=K((L;>ax+ zGC+GC2*G{Vj}O2*Xkru8_f0sGQjKJys;~(!8QPYz4=Y7 zHn)lPr&Qh=q)9uQ818^%@C8Vua(J(bAbAFCvF;`o7M(~@zJ)xHZem>!B9^7dedi`x z-fzNNi6-zA=l_zBN2GR0sxgo72Ft6Pr7#yoJB8%5_CUMEv`~G{uO8?aLp7~O9&Nw} z&N}>kl-F=5oeFaymWZZ2+!RJzH2wK|%8*%k9oTt7OrLDte70x zKKyJw*6O`XEU+V5y_mL0X!U)vg?V9FyL?dA$#xv7O|0tXn7=DTVw_*h^?P%j;Rm-j zDP?dC+QelK$7gX5~Yy*6vy_&O49%es-%mP6rpm{dyg%br%Z}sR}I?u_MCl^r|v&{bHeaFJuE72R-%rDCt3rO7oWu);RQ%rjdM0_Q~ z4P|{LYqCwxZ*q1ei))V~A8;zuZ|c}sC?J=MT=>heC{%Uvr+EmKy;dRP<>VE3CBsv{ zsEH5?^H0Czt7UJ3;e>7_GwwZ}@wdw1786+VlLd0d&MuQR9Z19ynyYC?4b^Fr8vA8k zU_c!LwdOgXIk7zLz98Xfri1<*i%lw*bCOiybIA4rcEYmHp}wQu;xEWX*M1I$y60d$ zd=7|OkgJL3u=IIO`R47d6eh~G2Dy-`tb0DQ2AT5sM39MsIPPevOne{NMl?V=3;jo>c~szkW@$D7<&t5 z48KAz*LBF%=Z+v38fsjRTo-oqa^bcr`UFN|aV!hE@g+KiLESj&h9H}RY&QVI-^PI< z8Yku_(EBjC_%wpfArze(P}!N6`MF>lJ3a~dLY<d7!U@gf$f~^~t_**EIeRnxL4oChHf#34O zB=#pU(OfvVGW+^r@@DuKzL|+_6_|Y3eT}{5%b-STQ>lp84S#``9v>suWgRla^ z>TT@O8`GHRW#_ul1H0X@N%sdFwJ6+xhWzKp9!~bgfv}sl3p1k-y6YHrtcc!DxgH%9 zacHGE7*}{0ybZ(hd?Aay!9}z}3?*;Fwbom3(*DKa{B7pixe2Gj+wjYEu(EZ{=IU5K z)5;B&y=?f*>|_rj<8*fx9>fygUMgojr_I6p1VW6(kXBGJ``@nuHhBg zCBx-r*4$*jN8Nx0?0Zaa@4{aE9?ZlwdxW{IS&^(Nm3zAQdUTbQXGvBVL+$saVaKMiY+pR zk3ALQyeP!D@wkMmbh8uZi|;qqT~SRAiPv4xk~6=!id-N@KEEpdCb$L`HW2hvtTQ&j zPGcl$5956-ivFb=$+fZ5R3d z;&SKTx;}}n=dfd778LOhMu;-j>^Qb)=L`--3Wrx_A2^<{9QOO%C#8*BRJ5s;8uY6*dvA-ofTV0m>H!eC~o*>Puv_-&ee zNXCAIgIaTDDD6BiA))Oqm>cfX$)|L3qMqz_yBff{+l@VXOWGYCDnLmZ9@01*3`XEV zoJEI+Fde?hKpn>L5ayz1en<=tVOu5`AtcZq7>g0=?>PB(c!P0xDEj@Vx@`V<%$jiD zSth!*$KjrLIqI$O;xlwMKqmyYVxY6CpYi+y)NlkuWX($$ zC^OmhIsTZ$M?wQ z&#qwLsUzU`gm~(PcrO>SDu$bIOLSr>7i0m0QugR_vGl3PGzlhvui?8eST1qYUDEfI zd}BN!7p+5Q8ApT?^1OAJF69xSv|WV*)F*e>x3l;xUF%qxc5jM@d%0k!=yv$s_X6UQ zy+Yl5B+_@R)a2fE7$-n@J1U3atu<6goxi1qW@ftR%r zA)^yKaKfoRvBL;b2a%?x07@8Wh)t8A%Ne)^*UKe#Ld-9Ww0m;dmA)oH3J+j(ZSfR<^t=9lN zxEgnPTktrE+rJ|}miO&BciDQJ^t1p?ZHqK<#gYudD87zsXn;;MFHoUztQzi;<;Xk~+HWM#~ zxC+Zv?c_|E&fS{Sa4y+Y5Z=ggC@we9i>pj(Je&$Ch=1J?t>g0AF7ojznD9qFKMXFm-0OJ) zfgANU?nLm`CMsc~E0&vJr4d0^`$c04&62hCdf;5;0VinC;qMcX)_p*gyvS0FuFz~O( z0&EzL#NJ0OAZaj+JotLjV3-tQxagC&hRG6f5IeB~uLBYKgDZf(yd@$JDJT5pt@K3* z-x|^6lN+?Z8UgTFDe%Y!4KL98$&P%*1F%s9+{K4X-k&7wU1~}SgULT+fVG|N4K3M> z(>%u{T^y?%Ch-frT;t9voiFmczXl;~lOv(uNi@0cFj-NU)iyoGj!9yoE`vgPSUKnK zt=4zdr!yBO1b=;X2%6dLp9t5<=HRWo0RQIII5ua@28&r1;?7MX&ce|;3c}41&!xG5 zOLKlkO`^M$p;xt&lCpe_Fq*^0XmzYbpP|fbMd5Tv2)Xj=Ni)alai4<&h(v>tS~k5lCCfUk?c`LUV??1Hh-MAz)?=p6BA!GNC z!Ueu?kx0-}DtUIaAWt0bn?@MHeaL(>X9{FpyN7HsII zsXW>rD~$w=wL329Hsmsj-THvIhsgpK)Wf9CMwd`)-WP_55aKi5$3eQ1Ndp9}{rYTZ zFXe^R1w#tf5ydKYE1(rbhCrUr?;I)u+O?etD=$Vnqf-g+X0;F8Q>V#=8wg({yS!4X zbbiMH$zig}x!glPhvHqFCIhRb!PKs?tO8wsdVg=Gs74U`+>)M35M@qM@Xm=I*c8VD0gA00;;&yOd7)6i3jwGW$-rR<5^kXYeq^&* zvO6BZFvlf%2FFshNJB1%@BY4Yg9HOKw2is)7z!|3zjn$~2 zv#FrIImK%U@LJyVc`Z9G8F31(jd34y9aycyAOLNwww+k5bJ%0G8f!7VCEzidy;u|S zQJ&ad$=^;C$2z)L(+;8jDlcr-lVGy~5LImE0!5$ACz{9XhKcv-d-KsN@-_6AeKL0vTYLjYi&kh^>!K;2QZgi|_8=;9e6 zMyJ_)7QvL}RPaC=bFoh6$8H2)@inkT`U_}cvzx9}Y-VL!6XMt3>Q@gjWM?VLzoL7! zd43s*JRGgRUDKe1ioTpLVA0z(C@}v~%UQhG0`o$jtaUrqPS;0IDd{)RlA`Bt>CNC%KdmB%K)4u6| zlP+p;H=6X9x4p&PXw3J|@x;>=d>d~Y?a@-Z^(IB9M>Zrw0($*9Nn^A$Fpn)v>iBq* zFm!U~D&Q?(IQBK|7YcYAz%j3B=PBSF0Ha^i&L;pj3TVJwbCHVr6ObSAn)XWqwEHTJ zEFqt}04!F>kCy$Dlfnw~wZObxClB*#XS9?%>Y0anVKgR*KkEZsH#d5pN#dd;jyKXI zacn~(Bv|9QWfv!nqtWv%KkAnzwPRqj&O8Y=Tk*YqMN%6}Anr@bFTd8WN@~Xu_&0!O zf2LoP)J`Dq8GsLes9&GdP9pFejDh=p)!dts+IWJWLrdnrt>2Q=PL^yqNbAU?iNmA6 zK~vmJtLz6gvlVlOn{CBxv4W#5L_w|O49#l^B7{6a^s&r|q*P1>CozVXo^JOvqQM2b z@S6nVTNdiSNf<*q%L? zDZe}?fZX3DWtVf%4YzgChU0{V^@pVV_1QtJb8nKK_UH(UUjHRfBPT$#xz-gP*V%tc zM)@_TX@A0_Fw+Ns=c;|4`-4ZdhoyABUV!63wbi-%G+E!k{zGJI9ESJLa^@2}ad?VH zV_MK-(fc&*>N`@oUU)vK2M0Dz?*624i8OjU?gL33A3R1#7OV#e3LGRntfKUomNGwi zQGZlLVcJDM?7LDn@Q+vWDs%W^?Qcnxk(5u& z)t^pk6D6O$*z>9IEJ0~A8q?+dm+Q|FB&Pn2+znJa&#RO#UrtbO%Y4C0x}gi&m%L10 zt77M0=9TjjLGrnw#sX1ooS)=8;v^@+#{y3KXD3RR-}6V*Uw|D%=Z8}}(ECw5GB~b5 z9)2$#?X^)Y&b>5SXfXeiD2_yIT@nX6i3wk5Fd~AF_E_Z+*vDRU2?#6 z$XDR0A*a(_d6I1%b9AGgxT_<%Uim7CcSTI{UP=_sKJme%;=Z2X*mYpP8@5pH(@Ek5+;>ijX5Mu6KG;qA6Z;YE z-bZ#5#e5VY_nW!^`IlYseX$h~=2_BQ$m&L0#g8r+wZs}|u)y96)EqwS;|c+mTc zd*&P_bgT*)sV+S>fOygOM7+dzEoY%sKA^pS5ymWtxq5zEjQqoy9uWAj^ODu2bZzV+FOOD7q}z;h zEbAaM%mV1vL!4gR!j!$FGD z^>GCYYLgb00LgOz(8OXPDuo{p#JjOH9g2Um05-iDQ6;XjeEhSh4CZ9a8~tEZCdQ+F zPnUcBUW1S}y@TeBdeLmsywP4SHem4tt^6r8U~r+3c`?Bp+j3q^7+X4Pj%~wj1!kOm zAI0eN1HtT}SH zX<5W)itWOPI1 zNOs=x!qfSE!yAukVjPJec$ zmrNV#QEV1n1Y>1JNxc^A+CgOC>exgmI%5Jw2cuq8bUbO%$1PEGz;0_#((IKO^fbOi zJM+U?s02g{SC{nVGgWB%tZFcWF>{tKL%VYmDL>w+V zpd$c^M?a<+L`^+_CVmNlR|BrY2^J&((vW2R)0i3*(TcqdV(WQq0gE8*-Uj*J^L*8L zkShXH;(a_0nmsvElyxMvt6os}ZzcS9PxtUQa4641h0Rc?sM*Vtd@i11DKez~{WQOw z;5vOz0HF6l&i;f$^To%LJys3o3kyY%os}>LAHi6uW{a~bemYz1K8eZst}o~IQ8;+E z0(3LD;O4<^{2@!XFCc#7mt`QW*!fQwSl9(pjjwJX|6nB5+(4?0>PBj3HgF>b9^_p) zQekDMIL-l6h)-?ExkzsZ10`NIJ?}11r~oZ#={whaewtoouAYY0iEfQSEE*@i>E%J> z2?pTv-GfLf=+|8XhzhzNMmI8`kd{e|W}7~vWl7APR855+H|v0m#-qNHSz|%W6?`#g zgX^>>c>J7Hg*(94Y(T7&$7_X`X^M4c_D=Q@`kORdB;`WyOsmd-x89wmw=*|WD8yJg zM>P4q4;kAiZhHWINYF<S1l``n{`A`%H7)#tdS<-_*LD(`|3B%(_MF**6~%MSbTwEza|`%mO)9Bm|2Njb84cv zKI^3K&Jqp zNp8TK?dBHo)=rv2V*n;UwFR?8CpAmt)GU!Joh8uiYLZi{6U+^Lx`@jc_nn@fjXC<_ z!~A*TBOb^$_q1{Pn{QR(*pabrIOlwv?nyTO-AUje;}6rJQhuR6iHANsDd04^XI!+P z1b)9sp~U*zv!EzGGci80-+1s@SU0I{a^U#BX8yyduGefMWI+#Steea64< z-lkFpHk8-KV^3g&FV;$?C#3KEb}EN1ySt~*hf_P0P*cR{$uaR@e_uc;p{7RFmvG0H z0w)9j##{URGNKVABcb;AR3cz3<$R%*Cp89_wmc?lQz2oD0%Q3$l>KxWZMD)N|5=l84a(3DcL8i7#e_fY>2cC!VNY%?tVzKfJ(YtE3w zvS{I^j3=}(>st<7#eY_FVs8%I16X#aEOKUN1DY%zoJy5f}ZJwoarK`IYrY63AIVpp|uyY zcYnHeBkhs*43}6=Fy5Z!iH4X0z0koE&7kwyQ0Jq7dGyUb?sYI`M^absNh^s324CkPwZi7=|JAn~U zsWM}uKUHPIm@DRw+gFu=Y$zMAz4w`t4Q1m+$}F3NI*DKv4d5UUUm3!cRUn(vP7ATz;evfLP@ThkHOktOc4b`W8T-{b1q@Ry`Ldes0wRYe|k) zJ%{5*HcJUD*dF#5Y-*x-sAz5l%H3`2Cfp?iqxnk@^n1g2ed(^s zJf`S9!*Mopg)i3N-u{o{6i+E<%f)Sgvfn2M=e;cgcMeXNK)X~M0ZOT~pj4_S!f@BO zC*v=l2u_n9^u**qkH0{Jl#g{IAXu|$FqL3lqUT?HXM-Jy!MrsaNw1E?rpi>JI1C%$ zfW6mWXcp>7ELIe5*Z~LV2{)(6as^ijw|dxe*I|<&o3XKSt8hA#e5)A*2zvy7^z4SE<=FgQmkfD~ChlYyG#}7A&uGjRd=9Lg zft$$wch?!1dMOd;HRTRXp<4(d`F0-ZaR5lZEf5`{&fr!F%7?kqhKw7bYKJMKefFwpTop!?i$rE?mjEZSwWgau6;RrvIzE><_N zgzOKuM?AL8fuf4`b3*zZ0B)+)x@R+WG%8+#x)jQrLW&1qWt>|ex?p7RcEqwI1_dT8 z2<=`N7@3^l?Sx=p#6$IB#d0i5F=70~l%hlP!g>7zZmR-az|2 zA-Tt!p1bs5v!G~9aj=a?#uUDAT%d#&N|aFWrP4TQx|E-j##yF}y7&&v{-A&o2xI^V z-2%fV^&*J8B-SehvFN1XSs0p>5rwRo!>ceJGia?L>)%zKv_z^-8Uz=^JIKz5qbMW@ zKmI2;gx^Slu!djtLwsMBToP;{I9So`ZQ$Ov-TVnmJ2*kq&}K;iHO!wNu8*P9XnCgu zAqizA2uXkQ1ffP_4Xgm+L=k9}R%rzI`vgHcT`wk6FCPVV&kdd!R9YOwpjqTgHrUCa zvuMwkOe!8{a@=|%706U7(9fAw;8w*mV*3VJkFW>sL)bu>2;0Mo)U@mj98pyS??ZmW z{vQYhD4(|I8Befa+;DGCK|X)hf^J9^9F7pDe?Gkm}a4 zZ7YGmNug2(_1Zzg5tKw2Kptv}tb8D(+T;WNAb82z08m>hTl=vm521xBe)P)o+n^@O z5}T}NWAQAqAC@dyOZIf+O}r230KuM)HwvfIC=7;|WseJkb)UzB>YZ3fMX{xGvL{sg zpKKc}RARK~r=5(Pxc<;)U?KSqc2aCeTAN}ulh%ET`ih{}Lk9x0NbGePVoO-KxQ(DR zRhTltl(dUrwq#A8{m8h2n-?}jVqtq%B@zMc%YTzXo+5f6>k6r%I18)x5IpW1Ra44+ zWUmGHC4rtYu7F|#8ijQGImp*ni(3Q`iWuyc%{17)P`pZ+F!mLSS@fRUkR|JiFBHA) zBNB<%1-l2deN;-c+Q!blNGa8c_?yZa>q4;8+D}~!Ec@DGAp>#jBVe}ScuxrP5ltGdmGRl# zV>UPELLd0wXArcC%v<0yCGzBrf5%b)J~tGkr~Y2lOb%#{h1~n)K;InuP_TDL^1N?% z{=zhxA%c~+r%m&SR4nIa+XSCOf)6+HX@~AfEbFpMh_RHMyS^yrikk-XHiFvG!}B@H z*kU_v#ugqbBNK|xbZVc#Q%N!J_~fbh%mQPTu-ySb5W#`WEhPO&cPF|j=az4gA>^DQkN&R>{QA0TW{pwOpi~KaQ-r#;npxKW3gPNSW-iLn8{LG2F#F~k~oBJ$ej^w zQ&Pv*P6)jLGunXAfEl6~qpJ*lvNj+G+gGob{5(ytyqq@G1GJ`;aX!`tS72>myPMF6 zTxO;+)Xs$Jk;~4MA@&$<^KgC^i_N4R9S?s*NI6cl;A#-O6}F*2uu{CLSTK_*yaU~H z%{cv?gz*(N&~q*w67$^8(;k8}1ixz>_8Or39C&X}iA1!V&-;bHui(<*mCZ@XCK%Ug zW%9eIwmI27=i=(%cMy9+X2{LS9tvDXyXU4#iL2L$)P~GJT3kU#+LdZAJ%}6#S{?Z^ za*Dne1lAgdlA7goc;z}sy`1%pr*ztzp>)O%K}i+veO(QycLocx$R)hQl2=C^$^&Z8Q?Go%*>`}&lyl&vsx2{&+0ueX`|Flk&3u{UCd z_%NwmEsYT*_(sf-2Y}MKZlL2JZeIw&NqUb$W#gZCil=RTnAES9TB|qaw_?n5&WB(^ zT<-Olutvh65siEvRG{-qOGe(t$kXAwA>*08_zqkJiDTsRZ6kkFrI_165$+L0xMOF? zogU$Ki)lL*;R4&x*cqY-xOls%6mUua$Mk@sFglODjG~C74~6u*AJT88)DBfmNayYV z^W~8i7=tAH;rU(s8Y6Ks>yBj}=XF8|)=VDR+C;X$$1!d+k{@0&5@Rc6S2BB+XST?GKSJov@9T2r{VkPq^I=?P zOx*c>D)&YPSBGn|3wOiLyKwi9L&BYeoSGH0IR_fnoxCdZE+^MGi>n0QQaP`I+>-r` z*G;vyMLB#|oJr0IyMI&m1vzQ{;6FbO`QzkCb6e&uJbg;n%&ptSMFZpwJaV*FnY~~@ zs5>j5b$fX#+h?lm&pMd{aQ&%y2#Y+tS1fe3hxhWs7;CT9I@fCz*+DIG6pLN2$@_b2 z*K2rVknW719m9=%T=gxquln_j*>fgOn%#0bF7mQTWtHQytk7gn_+C_ISLNlyXwp_D z=9Gzt@KzjSb3+~HH&<4Ut7oYR@Zfebm%lHQ-QXN&FQ$i^o5-EeUdDGdh4$hOZ*a+c zFH4Af>sXeFy>#E7mp5H~ZmK!MVlUv1!3(gKy}-BzpYZr*{3H>20e6q#8A)9qe1VbA z10>470Fh#r$u;E3Vh!AbnrmQkUV|}m$QcqoekVd}aFY)?UAlO^pjZft8_;pucO zJTI(8$11lYYvIUmE%*YtoFLZ+l*?I*D)X5SWRrygs&mMdrCd1I&JxJw;y=;alrr)T zL6v=oY-R?R_OuU?38hw}4CBQx(;E7=IMzpW;tWMJnE~OfWeNEaIjMg!9EB^`kC3Z? zTqxOiISkLC$q0N{O9ro7z_3U%Ye6zL+Kx04-tS0iR&*^rUxT1^sO;jr2NOS z6N>L`11V!Y>RVy@^>wbK`iis?WLuB=I@b}JaJ#Lipis2t%_h?x!2~451|f z@`F$k_6papIGUP|pKtxX0U8$;T8WF9!NGZ)TWzYBYkkI9>kcTYgpsN z?HG^N;*wN~#xTj{eDjD@UpK4ozfn|XAFRk^Eu5%#ECgeCoH#Pv}vkVMT0xZqj{ zxM1SksH7vc#~5J|N8MSLc21nd7Do~b zI5f^koY)t*s}elZhHO8LL9KY5+oNo_NW6-x4Dc3z<@H#WY(a3Em)ImH>zOYxoaE_W zhlmX8HsHj#apS+mRJ_Nb;?iIY$#+M{o7ZZqA(n;c$Bi^il3>grR^k{Uyc;i!WmE7O z&g>%?!`opnhPQ(=`-!)i_!y1FyxQoXXf+119mG{d=U7otV&uX^Cf~_(_fU z0Yzd+K7;s2=g+53H6H31PJtNwk>b%ulcPsr5;itAW>op>yxKhfC^jx?Jj5u2u^JZc zG)nF;rjOFaAM0h7^mF`sqr{!{h=+-1W3N#{J7#k7lA}_&RrQg>8LHxQSYr2QAT`Ta zqgZX3l2m6w>Z&DRyszWni2wwOTq^jTbZ9 zsKL&b35K9FtC`UosT6-01}Y=Hk&J&NqAd9CyR7^Woi9dAEoQunw#MQ8@^_im2o^$; zeCKF1Qe@YNarJ1OfQ3xoHG&7^g(iKMLM$Nnq&N=u;_G}ai$R>gn^(#xY{t7R!M=>6 zYJK;JvEmp#ZLT5Yw189uHFcoz)zF2j9HJj8*{|G&%lkEB#(l;f;EikK8J zKA|E$QAJFO$WM-m;`g07;t3g_6iMZtszV{0P z$F{rEbmKX_8#2Bn0*8;;5{W?X;J9fA?3$JcB+?rUy^=wKlxf*zS}k-jT(Mhzbps$o zTrfSaO+W`l=I-O)GfWbRtuhu(VI(qhqMX4zWF$` z$<0(k1SMGb7@Mcjrtw|`&v?NL3m8KJ1dXaUQh7YE zO9lmDqeE`GuCzlA%o1C~4$7iCvKf5Yi_`Sz44*oq3{i+%B0Q6nsyB?^xI#YJ!cw9F zZzFoZC9uyLvkPq4P>4}t`sfa~^YeP-5YtAWH!|LIoJ1cxKk}?0CeMj=NexGs{1q~y z?oF1I27LXg`g#lvg!d3K!FdnSYm8ILq#JANbeZV5SBq0jE!{qIlSDZN_$Es#zwIGIX2R5x?>}}8K*Y6@x;F}B%XXQ#xqr_AMob| z^n*VZTw!O&Ms$8fl~g^^hTCGk(7pV;B8Ge#x7hv2-hEkuOHMfXWzux~;rS zR9VmV@J>0(wLcqa;E-soi{qjuo!W*OJssvSE_SG;lcp9k+(Iqp}C<+Q-(46N?*@VbTIVhmwtL8=H)0hDmIX{8*9{iS<^N zuZ>h&Z){{E5I}(~geL>{KCD^G#NS^?A_5lFf$_UuT|Cn%tzbU(GYxjCM$Z}hXNWj? zfatVxKhwmr&OwPkvKC?<8LYOMQvPkDHfNY|k*pN^7KwdpE3133I}*3DkCNHs z)-oCm#`z7pII%nE|9W?|6shij6Eogw^uuRe>|UN+Euo)$LFrCJd|Cz~`0hEQULfjVT>D2Qs7R)*d#B=20}@siZ`0OEle873@SeL3g_9>} zZyP1~3vjqrROig4)B@xy2(znS8pbI&Rdjb!Cad-aQR9q`nlT_sOP&~2UDHvci*Kx; zYZ@FNJgYwJnmqbRL?o!Hz-z=*FZ4|UhY;xqFlIw$6wBq;tpE< zaK<`VUB9J)+zwyd7Tk5bJSq`j1$Ng%X>pzl=NyT$Et=FG;pOcoq;i+IgBryyHD4~W1~I6tTyZ{$qX2f&1Yjne}>2+-c20pbWpN_k=LFeNcktFflp zvWR|-wV*42LhNx@3;F;j)`2z-ACVYwOT`Fbf7r+ndn7=Ph%OI3Rj?6LOCJ7n4A_(H zKG8D082HT`rpJ=Tp(8Z@mlUy^+R9b-m!z0GV&~=S9DMt$G|HxSnqW=M$bkjVT>}=R z^8v(hJ_d?dUJH(k;h-CyJF5%scc3r+TG_qEntK8cBdypUl#2!Bg;W<%ODup8t(%J3 zt`m4m6N0ni6TJ8_;&#(Y8Wyn24cV|xG2Me;I@b!B4lEMa=A9rgtp4dVWvox2`0oBk za*GC*8*4m~j_~7oz;KBt((-|*xOoBx!##Bi?!$bEz051NX#5s2IAQ@l8imxYv`*|c zc7fO(qXQA}Tv8sPh9x)#4{7WFgaYnV=iJc8`0Q3JVh5iQbP2X1sxrhKffpHM;aYj( zI@b%i&Zj>2(EmDO4+TTE5$}o?&?}%~?yKR59W;Q5?S9xqUU2KFPBmnexB%bL0(LOq z@J60c7_vJ7x6BSlDWybv0-&&jT^O;tZ0QP83hd_PLUzMw?1d&R@LO(pk>9i*wX=ZV zNNC7wI1Up*L$t+;U6AUK+hpb(zZ6&mJO+5HW3B!psB;(}1>y(bO&^Wxf zol;3dB;icdFm&A2)W81?cq{hEzBRL$`SNOAUc4XxiyY_qisRa_kCIsK+7mbySj-0m zG#u>Bwskled*$$u?=t2VNDZeGiVj|8@LeAFpG+mbgQAnCBRYz;1?JbF!3M6oEvdM! zsY7vHFkrzZrJ7Eccc>AI*EBA_6Yyc3Dwg|heW+cc6a@BB62tj+z;MaqQ_8L(9dUvf z?DN~gF$?7(#h>(yb^i%)iDu%1V>XnsmDX2UvR=q7gr^#`>WRiF9@16;!kug&pa2a` z`~QN}pzZSAfbR(ZQF2^BMjL;78c>jYZ=ysT#}XxyBh(fajJDF5Q|?yfQK+=g4P0%W*N=?Lf^|to^A;TgX`+?S67#uhN!@|@__(#C#|A?#5MQla zP4Cp!tRbfcdQZdzu&lD=)Bx{25!z14BDp$XJr6?%&p3HVy!MphwV|N+&5;H51*x)g zUho!ln+(1cXI2$5qp6WOzjm_ERzc z3gb2q9~e_O#5<_(UMY-QLi@h}XxtXF(YP%Dg>jqSC#e{3YzE3~LI%tf*q5UR?aNZs zg{VSM_U$A)9xIs<9eFF9MWpX`Vmc+pLO$DGKwfFT{|u14LH;!AqJ9gYl$Gy^6re!a z<;dK?YA+$LYz$2UC9GC*I?h3HGBvBH^UPdm zWtw0-zV#GL?HI~mt(4x*tVexqD@nVBTr7IvVj-1xAf0c5lKXx|k@ezuZ&t%d%UBoQ ziipzV3}Ck7+)kJC-a!wBrsRJEV9fGmf5hCXU}N6DJt&}{@k}ysut{Q?#L;mcM-)iKLud^^{mFcexOdl2rO?HUKRx9KKK$~<*ILE`=w55`0WDbF_*O>fc zWbz@6Z@&-nQ3y4wBlw|GB$+3cXS<10O_9ljJp!dF-i%S&zM|koH+!d23GGF5NgEBXXP4*A00yQ+ri#)Ij zQ%TZ$*S@3IST?;U$X-Md#exN&2(Y9> zaYcUAPhJ6(L*~@KTK;VS#;xz=F*Ye1#%-i|Spzt%FvGLI&7q=K*|_#pIq2aQsv)BPtaeS)E-aI(ZCdO0YRSEYRYyZQ6i^AOv#RoV`|Lw96LjaNAE0r1KCJ z4_YeFdHTnPf$-vyIV{QnQejRCN8$iO&o0jOpcue>m6+?{DFSvQ{`%xF95X9EqYX+DTyw_+^gROFfmq4~ zV^i;4iVJ1}Tk{lbjC~OMLLD-9ut^e{V_zJagLi(=H47gLvD^-Wn0&LrRHMt?VXA}y zOkP0*8-^!TesUPmKuZiBDxsAFkP!LgFyft%8ls>GbY#IBNYHBRPpE&@ibA3Ppz0vg z;L#jr_b#nN2}Oe>A39ht5mk=(qF+`q-44jB1s=j4P8PDO`Bpwec92_8bwc2o4G2gQ zLT#i-fkG-?z%M`v@GvCf)ZBL^hvXo8FuBnL$Os6>L)uO+37`T)=9Rl8Kh)jw(~_xo zksHa~BL7m(PhMKS<6@6Qq-f|s+f@FRn^>R&6+4m%dfYPb;P`%eB$YSFjin0+SpEYG zh7K3RoeU2PkcX3|5aJDGfGUr#JYg={2I~eyEF=`*fLO%cQ_y#%qMVYvU_IzS+HG<< z&dJ%eOHowetN^(<^96^COAZ$|=X*$R%PJ-WFoX#syhkl71m2cEj4t89l~cik@XM6A zTMELrgab)+fN_f6mYo(4z>Xx0i);sg^x`Ln>0v7XLLSn6Ad__8H9a)BRi+%Ec`jHG zo59HH!5y6?ELbwvKQ6wr{v)4@ysMgj-+}*vHw-a;_(^dHl8n-S=!-!ACBck%!Vo0v zXuOjA#HA%@>7E23Nw^28A?~3{^l=C-&>e8qR@uka7tJ@ti6{mc3!2c~!RPWLS`upy zy|woZP5=W%PJ-mVel9=QE3`p}dTZ~dBa4cT5F@1v3%**?g+cQJYtn@QNqZ@hQt^_mRVek0k}jm!HnI(Y&t#Hv2k824&IXa!O6n z@}%Al=6&84P2jwJV0zXLT0W#C*DL3IsQ=`pWh8pROo%tNBUgnCM@OP5CB~XC^oK7wme}}2lp#4c^5L5_!wu386q0fbOAML<> z2-OMx4;gBx0wipd(kmIwfuavmO1!mDFX36-Aw1_>YSP!fgS&;5EH4ynPbD_~N9Q*m zMq;C6-c7RH8F4)Q8|rZZJ!R%6pqWZT{#x-1;PaficfB$^|NB?)J!Q9 z9Ued!!|J?|${38`(En0YeVx4gkAd5B4E7I_>iEB$wnWCGOG7dSoiF69--A|tLOPB% zfP+$e1*a`^oxClIx1ny6D>VS(eMJ%!pX}m;i2?soPMX8ws_x)3^4q3|OanV7nmO<< zI4`HXFX3huTJ-r~Z~|WH`4rXeH5^_V?hJK&s*NnRt6VQr`r-M+wuvt6WC^(NJEAjC zko6sSuozv1f;)#CNb?A=nR305A6T&*Ej0vmiu;xJ4@JIc*tL5NSwMp(X}3+83!0D2 zOyW2-vHYuAW~WclMq=h3MZK3B;&j>bJm|fu{LAkf<+yDyZ)J=8*N&Mhxm=F^wxtGe zV5{v0dhb_*{?0+UTb%Y$cazUWnKL_ClS6IG?}Ug~sl##iO~AO{rTR=VcG^sGx`ea8 z!t5!+?}-%+&q3}Zy|<7Yw-~4Y7&>(#pW#l5ui!P=Y3BETDZT)IT2G?UOHP+woJkur zHO+5xxv|9s+WLxck~dUTG?CL_qV1_|EHE>}b-jSs zf+!5w#xkI`v8Zse6y~zHq!3eiSNTJgdal62~QY*v?YrEg7XW9-tz}k*6g>LsP9U zkPTUMaf078Jw=8NJS$U5e4OZUbp_L)pCw?p!C7ADnF!3p{}upQ>HPT|n&v+lniiQk zZB~h|C0Jpy$=D&}zs=auCKm?o;Pi+FZqZYi{?D_#aI_AN&x~6%Fn3A|$1dq=Ft{?- z2A3MD-Eaq)J!DG@tvd!wd^2!?6Rqz+Uk{qfYLavfqN$Us*15OD=tm8kXh&+sA%7>R zK$|O7SMb&D$bP{<3iVzv=5_+m6Y|R!LJbJ9fe}qIuqZgNp_Vw$F7>YHRnA%A5(9ZV zo#F%!f`e;Y8+Y=rQ2VRxEKXLrR{}kUJKzd>?z{XerArD!qA|eOgqc+0U?Ei<@Lm}L z{fE4!Rv88-dEW_ISh&DC0&>z+zc|e+Oooas7P&L?*#!@aqdY8r4jvXcLoM!MQFI9J zq1j$j`^Y+2{E2k6Q=H~ur;9}Fo^Nxps7-^;w`jZi?8Ug*W^iQg=tucZUALo;MLrQk z;RvRU`X0}z{kjj*d2q;JxH@;**8)09UG+pqaH;`LOzoVOaJsaE+9pS#8o13iVO=oN zATeo32I?+wj+Drd|1{H63J*b&N)_Hv?}{_jyAsHbJjo7zaLH0bfPcYDi|vo!;-#fY zDkjGuFkmCac4S@c#7{-n%D1Hq@*uID_AHu#L<%0rs~JGL_AIBne$8ERs1eHyPC?~CvIIJ>7=uBD z+{597{}6+L6k-q$g+gWqdpEgSN(fgO0+&*-lWdssl9AVJKjohsgw;9&@fwLR%CM}E zp{L0^9)hj8I~Mr-;iUYE`&!i2 zX{G#lf9rR6Sv1_UXuI%m4$hF`P>P3<+4nf@h_4&u+VPs;J ziQ2QaNLI3+6#r-&vDUtDBL!UN}aX=z%yH9O! zVWS8L58QCBKa2h(qG?&d*>PDx?W65>k$XaLR-xdSE!ov4*VhbkpgbnOlbeM!9~n@- zW99$&mfU=Bi(_8(!Thx<7{m52r;Z%G+Cnsjo8(6l;TS9xj-hq0fq^~taIAqRQ@0ET zF_^=|Fc!s&FZQSl%mFr^-b|3qR)f-17hpwZJSXRy0l~KKdjmq`h#>?Jg zR(1)ZkccOEMO9^Ej;<-F!?tCcejNJA(~nC(9{u=rjP5g{M`YHFj}TueN1p^w^hxkU zp9D|p6O%qsuxS>bsFvUz)e<~WE$YcCeqj~Au!>(;#V@Sl7k2RryZD7&{K77NVHdv0 zIE21aB*ZBa;uHySii9|dkbJR{e4&ytc~laqiln@%h`b;r4!-cRh3n=oThw)2Z~V>o z`6`LC#_joDhw(Kswa#LZr*TibjQTiFn#;2qb2)1~b~#-n-;C4p4oln1Sv_8KxSc-J zE{QfTUEIv_tDVjZS(V!pZE$*`{Em~@-)erpdj6XEE4vWrV&v#Gi++ClN2$JnIXQFX zQ7Z;k&R;ihq&<+^bFT&2DN~N#cgE4Pas&G=S;kq_fXC7U)-XAR@vCrr)95p%u=-}V z|BJHL6{}unwcbOFSNBE!#Snr6VJ$R1%JQmX_ss8Fx2h|MW$|0a&)4}MnV8G0W0oyy z;;m~IopNAH&YJgEHo%036BC`g;)tT#M@O|!;iG)BpEu_FIa@1Q*RH#eu?t0IUmvUP zKk?tOAC-0IdM0s=8hZ zV3^yFuy({Ec!YK4@reCU!3U2ZFbT3akKo+fm%q>+`h-3J#ObG_I*0sz9{K&j{62EH z$lq#tdy4iPQpdVICoqN^2XJ@b9-Mc^=|1CTjP`7cmXHTge4-j){5LE$N99x&oA;TB z8RAP>Z#UrR>L0$}vc`IHKjT?Rr_tM4{8`!PJS#K)osz?|v7C!mr{8$LY$=Cxw#Sw@ zFKA9;vdl)j>1hCZ?i2X65ttx)pNRb~GSReqCeSNHDbS)5M7=W&2Z<*L{Ss40`jSK1mj9M6rYCgZ45T-2^zh8D=8b|57TuE{#2$Fiv0r#w!M$ix}7``@AuEShlnQ( zam#5)JnDB;bL7$Rs{XA}oRFbBd1?;A=pt=g9(32>%ZmGA`d*R`((Z+{Q%h4h!5{=a zljG6XxzUHX0QuYCTFYhoyKjn>qe0%FqTR`eZ1g5bn+|q(lg7w&oZ@|p#~w%R{#(f6 z;y|k&-OlT>)7dyTx1HB`7-{oj^0+8<{&r$Yw7uW?J}=*n@rM`q$Hetf0rKa?_=I8j zI%Cg|38?={E?aZ`(JKf8dpi}MCk(dpn1>UTdG*E%DvUi9g|?+P9;((O+c74u(mK5C zcHZjXC%MTG2kIJ{U^@={%5sDYLKh~{^3_M5Ghr_u zP9p~eX$OiCsG<@7jOD1@H>q-~|K5|z$`NiEh2Yl){iqA;bm#)rBz``u{!dZJ9F?ii zB&gpJa}1k_j1Hel3=;fKbilGX4d(vcwpBKSlEBdFq1tKgW!RVeTs z&c)*=8&eSx;4i$v!+u)pU6m2xfA#2lyurjP=Y8brI0dm(MDzoQlkc&Fl^*TnKg1@c z7{9X)3@AUuaQ>aFKy!b>D?a44?uXp?Q;LfZbPR&T@v%k+IsDUyAuxPI(_T!qI~Huh zT=qlUotZPIVg!818!(B;nCgv9)#DBA9<L}*49yuqYK z)s&^yP;XRYAkWXWM)TtoLiBuyXzf6hPwWV3cd7bOf^dZfL^;OCsJ}+*%H_|AHBw`o z6BGQv|1nY+6#tv*aB@HZB;cZ<>>vV`Y7Pr+u17xP9XWUsgZ8k(_8<(buT!J*sJ!Ch zm>AJTqd%Y?XMcmH2hPUVsJ&gF_KRbUsK!9vi8;%~TkU#~pGECJN*Ya?R;HypsQjQk z=w1<`KK^ACn~(@WyU-p$E0IXI=0Rg8HG%wHHw}LDs|V_}b5G0U|AxlL4{jKF1-BxN zU?cJ$@kak6RQ3^-lplurQ|S)dPhq&IR~}LS5sy!Y^!4bCgJ##Gc=L4>&*}}e2j0+N z_(qyN@imLr^~U2H<6Vo7Shwc5k?V)E;kot0o7>`d53d?oG14$umAq|uceb;Kjn3qH z*qBVRo;~U~>{{TB9GEj_rfm)EIdk@u z{b%mJ*FfIO`gwP8ejsNKEM2;C#lXU&7R|@cfNAC2#m@Y^{}?-I&%Kse=9ImbX>6oD zkuEN>$rXCmy=KjH_^U$oc2oSCx*a{l}k$T5H2;(>L`RxDmy z!8w8nR`P#p`!3seUw2^Ou=y*Nn6vBw{6A$EHrH9PYW^ZvmM1g0AK%v+n3W%huv4so z{bwwjHEBSyhAC&UQ%vXR#R~@(tva7C95~V&$PK*89-Xr9tUU(yoiWQ9m^E3lu~P^3 zWT(NnoVEMFtlb~rBd7Qmvo!<94IH_)&pUfh<4FF^0pDM=wl9Zh82ztdn?}xmV3ahD zg=_Z239-pAWwMi5V|{Ki7H2Dnm4nIwX(ABv6ftChE+RSOxvToF1L`e8%LF06y3!h zFei48wFgd)PQzo*Ql{-0tGJ8dmdz%XxQkWigYWNRBGSV~vO4GQxRAy>w;hpdJl@3W z^4)BVn?1cfIt&rKmbN1ZO%EzxFN9J5y;Es zJqVD)rm@x|7QyayYq5LxOxEIcK8T=qQ&=_bm9DeSVdB?uIfB)D4QzC-b2x8vvkMSZ z%3Q$WGiZ8nJ7bqFuvacSqJiOZ1xym`8H76!wH`)XuzW3xC4^Wx8923D*$u4PQ}o14 zhJ({1S?pBK7xhsE?twxq_7TOf&bbZyuzjM{yqmKb?Z)CrlQB9H2AeurpMLDXqLn{o zEoSGbj9trOPcVHQZ-W@)qPnNcx6k3s8Y@utIj}H57XI?b4?tVR&*81u@2&d7Wc=D! z5tT0n&&-&Yv&yP;u$Xf@&{p4nACdDW#ZE&q$2c6#|SJKx1ik@ zG@_OUga8p&)OY4`t-RK5g($W5WqK=bw>>1(4ny8n+2p+ zMe}z!K^45SAv&6iud5M4XEg9xm>y3LV;rgj3E!`W^2XoV#9$qVCsZD>JOLF$AFWCd z5tQwpHJ$XT)*sC~@~ENOKDfGhJbF{Rn&HssGckVCO|gU}kBo@XtRwHv0`vF4RkA-A z9HPUR#h6?UxibrMVQ&@!?ag8^X~Tr^uojSkoe>wa5Qo*Ajo4cWj0a;jV`Hq&F|2$x zX7#fX*l#wI4wUw6Mi()v_to}n3a~hvVRjUJAv2J9C_;xSHjxSh!lLrQC;E?&;30vS znCg&gp`P)VZINO&SRLiFG}FVcyzr|VFhGC+5DF9g!34X2KoS^UR0ca22-F~VLn#8X z5vrOJP!ie~$oWipmh~`vna3HJkdRby6rdJi(D3&~c8fgqd?YT!JSwo~DduC7h zQM(y;dQyDFyBC?G7y>tTK9)A_-R&Ft@0G|w5lqSNu3K|<&kTFO>bWc;?@4KY9F|>p z^tuy9$|jat^z$gT200BRP!}Txc~q{ApzBfBKI?S8sqygel|h{UQIz#e;LKqEh89Wx3;oTR&HT~{AaY~h=oTp zp4(j2*TpKwJ=x%`oWIE8h_eUr1&0x0C?V|fSV;5z1^?h=qptRlmLu1G#pHd^Bb}Ss zsL^Z6Pj6ehuKU2szG1A{>u*Aj_cDF5sJ9Ol;++J9bMnx{m>lp=_6xBo)nl5u>v>(i zA6Jh%U+`9nQCa>4ulK%yfez$+AZL8R^%m3o0&MXGW_pJ({w%!{@^7#bn0AzqJ~YjG zxCQL>oSUYDY7@QSxb>K1tmkqssQUGs?g>V%>$!L`&DU*=ws73=vz~X_S$yPE9N5Hq zyt39qEESr?SkEIVe?8`oYvE_HvZxo|%P|`2jZfro0;5(7rQq1${uVn0al%+NN&wSt z;9`;nrmfh(<)2`9+Z!*#^7{M+Uh%2m6UwO4PX+YE1|G+YNo6qbjSZmILKXvW z#41U|q71YzGH<}~-3>5-QF^lvGGpJ&4?L*@1!)9C0Mo2pNL=syA>ZZ$$*rkW`epM?9#v-62x(V$V2{ih5fJ zFFYVzX)dT$)Ck0`i*LZZ5hx+L2i56VG?ucxtOgBPkAHF(B+*|nm50=>sO9$^7H#Ei zd7?K@^iD|x_3~*69jNAu9lL=?#2fRv7v+iIdwHReDe^38hQkJpftKcGK1&t5s2GLT zQ^QAj(5(V7+yY{;kqKI$NUa!K2Lj52>>ySo>QqIEmOKz9TD3bNwJ{*X1Bj?by;_Hc zMC4`aRu}cf`w%acS}Ij7HXVvyO;%Nd`&FmXAaZwy@kT_tz*GFXu4|EtK6TMt9WF=| zpNR}!B$_D?Jz;ikhK+kDIZj!l7(NFLf@Kn-(Y1-j9B4%U(&!YU>p>&>Q?3B-0MQiU z$HuP_?Jj@{P;>y{9a5OUC{k=nZJJusO}Jq2D=tM*;_Q0V`1Ekk^neYVE2y!`yJ%v^ z8uNQ&Y|}$KwA)0+n%b~kSJej{iZRsgLCLq#hn@7HSjoB;c_7szQoUkt()jg&dj@GR z=IX=llzn^z5T;(spn(N$0qF1?kcpn9F(jTPGKpiJr7CIMqUkz(=yAoPAQUUhMM9}7 zZ(!YoK%&J5-qe-idkrDC2&VygY25li1)dfVn)aVg#!nubGOdOY?zGV5{Nw)i8zdi|vLZM%Y+^-wE z36;2IWsw8)GWqXY3(Qg?k&I`O9MQIL^8hmTVtN5O)IjQ}30pW<6L#u|4hj=In#;Nl zZ6lw6AeSd_xqFAexsR^|9<-C;?alUwL5@%3dUMV?jhr{|&ht^j5x&;ggi$rWh8lYl zO%^sG)!7954EJ-Kszk862@ILt6pE!yp;$r|c^iwrn3N;OMK|hE!1e5C@y8bne4GlC6+evSWAce)g44H z5PV0q@Ft9?JtVT^+n^M3n{bK=<%)$8)t1K*TM|W;FO}jkK|z)`p@%<6V!D8O#TAUJ zie;-3N}J%aBa}X*hDNM@27?iCSt!@%ND01~V=Z!#jgBN-~4zM2n3)^u$NoX4tR0)^%Do zGdx6|LA^HGho=DZz4s<^(arJ8qhdFrHn}MfPn$Smb7JOjyXY_jTG@C_Q|$}87VV3% zq`H-wH%5^jsd*nOkScbsMU8PB1fD{aI>4BxoVd|r*)R&LL1jGME$^Nb_G^;HF?x!L zX1&L9Y*13IwJxldYuA6180^$OJ?vB~?9}0Up;Pm~oCdIXu}JB=!$O|P0~rMI zAxiU224Z=mN?<}wJ2z}vC7_5-X-9BBUK?lU>rv2Y6P*`_)nbo5=$zdsf1E3f-?2s} z_t^+uX(hM}x|HolV=3N-4c|Zs4t}cEZ9@a+m3YF)_K_eCE71CBIG8wW{&>3~?=!)z zG=x`1LTc@h+GmT@x8S2B@Og?@Tm-bPZ51BN~-i%SSnad4nXe0a;r=@A| zZpPrfJIdStQPvJiCx==Qg8D{>+O}Ncz8};&qDfxpP_3JJM6(TJBVq*6Xf*QHF^#iiwHp6QG0+0Pbk>D8ooxc&YpoI8mo=E=% zbylEJMy5h4TiooIe~P`+A!DwNYP*}{XZesym#DOwjRM+Of`V8Ws3KVp#N`r*A&eB@XLtsr z?IZhyB>KVl5hqrLb)H@s)XBBqKbB~RY6)n(Bo@->1)V7mXu{^ha+zqgfH%653)n*8 zh;6ANCIOumP{F*2=(K!e7o13H%gS^8M)x@;eiqXja&@^#lQ;&x$Xwer;|vViKgN1( zJ9iN7N9Y`2{F2p)Gr71dh5+B?XF`TxS0IM@;T(rn4(AhnEPvyZhm-s-&nBLOqjdFD z<2iACRaVDJ^Ay2WR&$AI83VvL*!1M4Fp?KIy^!bxfoD2cTMckNRJIIDfkvk;`x%jJiDTXIrnfKr zBsQ)ev)3LXe`oW#@HFmLDKD_~Lnn?iF?GRK7YLU>3a!<3+If|`xGcIyS*x307i(}n z#7+!&-r`4>iERmT6kp`>8}2bqKJc5}VwZ8bU%9wm@QQnrqoOJAm?}Q%VThc%+(TIY zJWFsWnRZrjmT31o&l2$u^Kw?6#MoIvYw^sp1We+ygz+HSZk%)JGSNm|f&3?B2m-Jby?{W-He5&V<+1!y zfooV0hJLHMHlst`w6Yc7B@nYbzm=7>I2OD+9v!H9m<2IFug6G^K7h|MI70z|_Kb zz?Q?qRPtRpK2vwB&}YA)bvsm-a$X)_-7Fq7O9rp78i20|&7MZo7JtIU`hI|>`pf}V zQN;1^eJVvw*edR@l9wtM#TuNA>(*h_;eJwB??SR?jn;1Nxd$zL2T>Hfg;4_1^E68MdAEii)d3{**!8d*ROA1l z0)&opakYwut$t|pL`x3Mm2rWh<>tNLV9Ennm{oFa5}S>vLK-FsJlHJqE3AQE3-NW6 zWXr3p1xuElTOogOooGz(`>IlA|Ln+}72=WWplo7yR`5kv8^2oc&2I5J0WLh8vnYn$ zztXsSVJiR8Pl!qVS;80{cCvC31U7RE9 z%*(5rP4D?CEFjfcy^+bLXJvoJH8kQbk+gZ$?bs(0yG}zEr%Jr3E(cV;4rptXk7Zf(XDNB5@$oj$k9)3z&Go5Fbg%StE4=V+RdO!7p3ae~TDty3Z$Z zFCU!eu8BKPKF3z<_z$&a>|Yp#tE!z*%y{G@!Dl{=S4Q=Z5%wKxpT=T@g0)?|dH);1 zM?S4jX2ZSJO+fAbN(jc)O>7HKEaZH4MAQvq2Z;EU9N+zPCKjgPB%X*!#Vp~|^2W)m z{CV2&F$Mb!S(Ec31JSnk5^Hz+my1+>#wgLu=9`X*t7=-i%O>KgcHE(%u0Y9y!04_l zdF&6x|JG@%nE2QAe74B+-uOezE^D=UO#I>+HU%-1j=OsTCca){ZFH*+#{AIIw~fk`M8bR~Nno4}Y96NQFdf)8BICKIfQSK@pd2;D}y9%XD} z`Y;PCSld|2J->;{*v8`WXieg*)hoZNbWU>df{QlXO~>Smc=7vcyb$8LB#Pme$=LOz zu18bV`Y_xk16;KCHKuTh%lQ)J@Nu}VKw%5qP|88SALZC{SlPX}(ymHulLAI$<@pp+dn3x_sl|siQ93}=*5!|eBVMO2#MJ$Y591-(U(MeFx zH^3q6|{j8A&LHw)W+ngDISvI`U+~&hh$uwUyTkn=0=k8k4(-(l-~#& z(`;Oe+qarVYHzW`DSFBsXaYjUTWCqTmgX%c7RTxHx6mVFIa*SiA7M4s#+$&KS`r}k z+`kFo;=RfEAD)ceK;{cdcoQYijWkH2YXje8>p#*1A1h>1{ zH?hMJ9~>LYxTDLWV_X_osOh|VLSb}STr6s$B9=th^fpz5F@lO%66y4EOCsWtw75$q zzLD^|E{Q;MVSAkGG{Vz(i#`IKn4F7iNp3(7wkN;&k@2P8p7EzeJZO(;5se?kMU3-x zEIus)G5rGL7^~AFLfj$8d(Jdk87g)avcJ`ju4-`qo(G?~_O!^jy#1yCA2ze{>7t!@ zs(e~Ro+~-}3Z)n=)K~7b2p{A6*UA|P+Us2_*~>8vEp;vW%A`ns^#ibkQDJM_$qNif~r;8$JCVX0{Oer6 zybe7McRspmnaJQdI*hLEKtbDhe9toDZbpI=+=~M8mr?<8y&)9_;`tL}c)O)J=&5?| zcGz6#D9iQojhz4N=SIJ}(uVr#j612XGUl|1k6l^#&7h@qsKXd>Rs-HZ&Ag!a3JF4d zDLTy@h#aR6vK9L3mc{6+Uf0W}g??T+Y>hXCc4QUezb2*&aYYO9)p_M(d=p)DUb(hW zAYi|7UOAk-_KZsL*q_U;liG1Gsi$bMhcIaYo!3b$zEVSdzdR5&TY?25l5efUSl$qLK|s& zMvPPn;p@D&7{B}%u^*Fc!)99INV@k3-CmPw@b@k=?m;U%Xl3nt5u+xhiAhV*M*v{Q zfo;=%LyP_v)B}!w9#$z)!iD8Bk7I2h_bn2n63 zZcMI2s0zog7oS!bdqv6+wgS(uMxoq{E<~|#t)JJ4U-9lW`L$J=hf}jZuaoCJGcoU4 zlPvzL8`@sXDqm0F`w zR?87va;}DU8jBm69+AnMsPPWO)hgEO#*wUkR}Yc9SaNBC6iCKANz>UgT#Qrl=p;@nQo~6(3(&tA(y$vzt8?8TElFu+PC*Er=~9|=SG6j|3`$W@wX2OV;?1HvdgA;HFe3n7q+?pixeGntk-m_7uVC~&uhL-HawLP~846Qcf zs_HT50+DPZ5(v~O_Lu5{1`8Av#U)7K5Aj|vo0}>ty=N-*;#k^0384ZW^s?Fh3V!!f z`rpT9vL{yve&bV-R_w3N;>x0WY>zgMO>!UWMtE8QcC&EVk+D80_}ZtU!7F&8v7Z?i zA&J=CjIU@gS|la_bCPoV)5a1lf_wRJ`=)&J>5O-2Tm$3++E#$f+?*uehm#Uk!w+dM z7SpJZKLPsTSWVtDPD9R>#hfUGA45>4_jm;TEKlMTpR-(_U+rMZohMw+LuojUG(Vo(uts_d!CX zFPZjH!p$i(k87!qw3|~#MY0p~<375XIjdN1JSJ09rH6I-sZwXZC>S#6?|i5pks!nc zh-{8QP$D?u7~#J@3EGjLS%x7CAqV7X#NHn#v@l44Jzq0CQUtVfhYzM`M>Gxs9#l(^ z?YdE#?0iw{OUkJ@{c<{PTW$}bYCsBo2h`vKaU1NG0T=nWTTB!C#e$I4u0-*#2 zUEPH5Y?P8lr3NTS`(QamomQX#c|idQj0`e)IH^J6;;`~>7Z;6UyggK0P}}c+7TSJS zFP9&vn3l`tt$7s&qE1c6qdPjdLEx8mW%x}B`PE0YsGQ)mC$vQ1q}Nu zH8!(ru-}hJDlt3YVUai9AsAnXsd>^^hby3bYgJOm!!r;lzVEJ9z_W1;Et<`(N$N*I zg1T9{NNinFJDN^4J{KhV$0W6537$KGGUu%INo_sBzfCFF-I&yl4+3W9)V16vg8MN4 z6IlA`PM#l-@_3cb4~vV0Qh1M7aZI3JB2tXUtAzMroZZGN=3wI8xd0u<*ep!90#RG( z?KjSd32bS0PE8tpxQZ)x_X}xrQ&KyWP}Ka7T$`JlhuhsrMIL_QIgMHl{DrdZfV}RMpgaC7`0>G zzg|JlE6BBete`&!kb9GYUR02myH!CKs{ZhtI~4RvN`vz%RVMEuP}`O=7J~xU`WaDR z&%-6@{lO*aUsb`_5aN*@b`*~3NpV3He~FPYnTLgsuPf0N<#>B?PL`4|@^X+c(X-5- zRWN?;fWB?AF?YDE%8lNeLJsD^aI(&Um*Hi^sMuJHbVkQTR1kWKMnM5%pbNpWD%Up$ zAw(}7i_gKC>AUwP<*(-%XJ}DbcA|b?vKVn55tANB$`b~#8u1QdQ=PF<-;$Is%?-iM z~loR`rdN=j%d&lWplX75AAy}yMXi}bY2%t=F5A3sJlDx}x&j^^& zdn_5}(L=PylFg>Gr!eMfb$rAj<>1DfX$ZGrE6{D4#uvrGkJR|Rt23LBwwHf0DHl|vSCymo6=AipTQacS-KgSXM?2@DP-z0UsCg8yZ z`frOs%~ASOMd1Fm0RZKu!kwuU*l!eJDxXu3W~Yr4(B&RLzs)lr5k^XOXD}RljL|8b zpNXAaiv32X_)9!szYGS3kOzy-JVrM=O4EzjKb3?NjYjP+7)CAUiy08W5W%9fh3fD? z2#;GuXobM%D@%X}R+Iq86oB`rS2ivWl3>0SXu*IT8Dj4Md)x+u0h@6N^-iFEpB|## znc^`$MBT%9MYzX{c|~VRvn0+41d;=os{j<9-H9;4K2-+1lk$?o@ucCS-(Q2kTtdDX z(-fRB-;C*U?`2`?$5&G-_Ja&2Y8$T%vhriDLLy>h1_eDu;Rc1QEelikyTUk1G@=u5 zk`7sXOaw`C_)2p4N^;ElF3Is3_GAo|90?FY=F>ztE1v|{MNZS7tT3J&u4(^1MS|&q zi&dcRjE`YjZakS7F}PTT;tSHdJx>CQkydPT!JCQ!Dde?0W>Q5?@~5;2_VObb#Ti;0 z*N5YIiV7W}0-QaSlnKvs;$_CFx1IF48%PU zU@_js+ft(goj|kHiC*3&j?<6So~*#h?BO`nzDltdqI|+gJOXSL+^s^UsIT-|j`Z5c z(0)HCYCk%nsQ9pDAH=9{&Sg(62j8`O#A+eik(em59j@d?6NQ(nJSySlB1Qw>)e+xm z@|S0VW-y*mkp-a`0l_mHLR3;A%)BNaI30QAo%@z>9&RH(AgNdn$8WO4d-~o~;1Oac z*2|c;!OQX@P8=3gT^_0q<{Bjk1Yi0cuego8EQM|-*6X}iSviNbD{V*e6TFw?-#Z$A0C;~fPy6s!h4v=_LPLoV z57bP};1H>~fsqLUQggMZ9#b}^mnGiwA0cf=toKX}xTkQh zNRCdM@#6x7B+UW_z#% zx=bfjcX_Z}KJS|NqGst%ET^>HwKxV(CR)7<755M9XAb-;0A$4Cm#j>H>B2b@nr!W% zJSyN4?)JPJMhmgZ164}httdJ_CLt4=YvRk#VV*T8^Nhp}T$(g3%7BpqEAxM~5>Ww%OF)4V6^nfS>!m z9v?wgXloY+3XwdrN5LaY)+JR%9$7*k_J$812$>r#q^V(Ulx^}Yl6Jb$C_FjTxq;gIOYWpq$iL$={&RUYrzpsh)bGp~$ z4p^esOdh&PsfJJ;Pu zdJcmXHYV>bFr7_`&WEA{&+%WZ42(=L-CqyY{`WZ&w7ybwg^3X~oxX(7g!(cLBczuV zpyf;SVYwAVF{K?rX{*Atj0+ak*MyM1ZV959W1gsT^6JGHyoi6JplVm?Iyg5mw0+#z z9$1@$nog_o{}PVh80I}QRtLiuI*`lRtI5AIXzFw>@gMEeo_mq_4^N^dw~n?+=7X#slucniD|PfWUN}U5H5>|rE2Zqlq}Vpx z7|mGWHg+r+47ySbcd3}3Lmc#gH+`RUV1et%mXMDT*G0u4`-2Ag1Q^Q$+lh{S2>fjU z{Avb)&lJFurU9gR9j1AYFOjL-ev|11e3=vmjkFyJHnK6pOT^TiF;I88BI7wle+n4S z_46<^`I7D(84rO3lsDzmionDy>+i4f4g{Pz^n2QwN&vU@KpzwN26<&F%!h3a0n2mb=j+PK0g=g)c@W}FmLvx5fg+}eb z!jevZHuPr}9V#B#H_e9@d%gKk{sU6h8Nc~Zk;)z4fEq)FYj!-eZop>Z4=F+=0O*Fe zA|Te4BL&$qK9M;k7C`zpN@&o05o!FIL7_2ER{NoSmM5WsjW|P`Dl0?FI1Ulsg^;TvZAWQo zf~pCshO#1#jMP#IL?v3^_mw#hfYja0MFHa$LN|K4-& zotXuaFaPI(*?aD}r@r;P=bZP|)_qcvb~r8z?n2ADS|djw44*~22H^Vjq;Vl(Wa9~~ z&M+47vUDxd__&xqB;7MY+XLs&F={V=N?NNm&R^(#ua>XJi{W6vxQats4??w<3@rs6 zkQFe=dTI}$0$hH0>!hwZOkS!s7RnVLpn`VQmr8te%@KY_K!;TjeAr2c2Bt>fXTXpS zo`U|U{`)C^bUWsGBOzXdJWrE@nFVN%B%$;12#QAIPzGAW0HW1WzPMT{nrA^_p9}GD zj1B~P+Ox9G%4b?UD~rNsZRIxsSYVwcB%?uKFG{rr8pE+sgGi3LiB#DTc1V>C$QuH! z9jRPv8nw(P8NU4p6hHY7M%pF55GQsK*l0ypi5qs!f!TqUE(I$fNwwN5lB5?;rMQ0p zftYa~T7=ci*|Q_Z;-G6M4y0pG!6wS35MnTQYCru9W>Nmk_bYQUq{c2kQev=}z&e$* zPX$cmc}dM6t_3rTXGp=xi8#{5>|)`-zKN-p_TwnKXAKa25h1EHn7t|9>GqlY@O`HGCM7>`aE(}%d1XPD<@^A z1-?npT2bEl-BT188j|n;=*!4b4sbVZEdD*XFJ+PXdHzD6E+kNmQAT~rT#INxWNSHt zcEm2)1Pgn5!Xe9_N_^3j1Pds{2RRYV)#lb>QZ7Qf$ z-$}u%?tGb+3Q7zNFCHOA`L~3uinM5B0dR!#cokR^QvxVq8bdMZZ8QWgUV^b$SwQi^ zpER!mfV=Q~U(RMNl*O1iK8ZW%E${^_-qiW=e1jEM1X?*KvgY9$=`)_02gdmb(B zUD|HoC&kO`FWPHlEiN~|fE2~WgvI_!5SRZ!L5dPdNbigiadjRY+*yu?#Snl#{80fC zKK#{Y0FpIkksKL+cf4ow?Ci>sDaIp7-1<}I7{ccp+RN}6f_|ty2Ht6lyVOdch)0KG zEE!;fl8TsC!e?{`J}^9V9*VL z0ci8f6x4t>mf3GTdyJv%F<@IFIoTQZ5V!#!$i8kL+W{)8b?o*=LT2ORk4wZwJO7X;M|1fr2sB#6_SM1p^~jpSke?G}=Uq33Ul4wZ*+LRB=! z+!ym{kjydg?*g;&_6n-lzcGON82Goqr4c6tDy;JQ39>1}NIyl`x>J!@+*we24)D+E zQ7cx3o-6_B;#4inaGpX+n{NdKb}!Q35RnLDuD9Qg_0^29M}KO4_4^qAsC<2;ke639 z1oFfuEkfP@ULrOEg|{kpw^jNsxfI1Ma`$|B>La*21mYL)ShRYMk6 zIN`FREteneEp7jeFjN~1Lqy|H?lCk~;w1o~if*cep{)B~W%VW22swG#AB&nvnK3sw z<3d6(Fz1pGEH2N9d(;#>m4r8z%fQhR^FOgrFo^gz9za6SRYGuHTy6aokGK$BJu@}1 zh8Fi4ppJSp+PF)ZhUy7H81=yTgH1oR!Ej?Dux0{@M0EEch2fQSQMJENw&O>Y1Ur7- zxsM{@dE0@0u!n%|OxLHoJkedB3uKTu+OnM0hkD#1*>%BuOh;RerQHWIACn?_7#Tu| zU9A{^XS0IZY#+KZ6pOk`gon#i;4Vt~kv6w88Taq>P}9aqSzImzrIIzk4rF9G)s-uv zG<~pul0C*(M7=XE1oJh-amkbmm|qy|_R?N8Ou4sl*fg*U+dW6l#{mxpvg@8BmPCo{ zvZG;?F+Mvi{JTnh9>kut2)=8yd5A(!s#IIL%`<;h$MXT2I4<>3tXxfx<2*(rXd3h|v?)~#1#UGPg5eyI}2-1Tm&@KR+6 z4q+aUU<~Kd7|;M&br)kj zYv&eYJHj>=%P^bCF${hJ>+X+_AV+L!6d7bm`7a#2G8ao6)G3Ytceh?pB$&Y^1eU-7I1a> ztGM=BrDOy8MOw6&$QZjV3Z;z4@?n*STb^IRRCBztz6DyHwYNTv*Xow>V32o5BgP#HqY_x}S*ZF5W!fd3gZNP?%GZi>J@t$&Iuz(D7L>9Q9 z-N=)Bra+fd=aj~>Z;GFyf_G*2BEqcH+Ljq#VPi#B^Op(V8}mSDbU!q6k^E30^!ADH zOo;gHKiYRhD75Rdeu>GD>bEcS653>M7}sDJ@K6nOc7Uhj5K0KY`hMvD3HSRnxj)fl zA?(p)#v*K9i|u&ey%^{%jbLUjs27Bi??l? za%(A)OzS)F3f`1EKuZ}9EyaDfyp_v;%hSe~1#ooIm>bXJKO=HCP+QjdPTX^}=6uKZ zV7M%(cZZmE=L9~DB`!f(7(6b~czlpD zv7UTzqy0OUY&Wvs!MCOH9qw3zh1@wPpCXs5PcdlfPvJn%Q!fQv5A&k;4-cR8kfCU zHsKqbOZD2SG53nALj1`Zf?YYjP-6xfv)r76p;?#?LKbQ(W!}KZ;SOptFwe@JTM<`+ za=fFJFa;qTLTTt1gLa`OXYIpqW!XFj7e*0fMXRwd#wmBiK8ZzEC9pyMd_`oU4qqbK z*Hg9ems6vhap&+oY%6R0P>(f&licwI{?ud}0W>R90rqrfM2v^Sh3{8Rwar4l2~KSt zis*ANOFFF1X`(;4A^n6(S}IwC%kz!qk}9C=lByQHyUO=MezsnH;@LWRd&s>HZx69= zc};e4Rih1O5Bb7@HSqs%sg&PN6RWkjTT^X}t|$N3eRY=MHsjy_;10M zn!4fT0W$8x8sAKo!wS`Tg8uLjWJs%PL`qH&7w%SK9h=`F4 zzK-Kha`DTQSj-Z5_)$t&VT`46JpwspQhYs`|`zOp6fSn#lhPK>_@QJvEQ)e z%WLVD@3G&+(#HB(8oU$FqANA}_~BAcovvYpFjK&)nCbs|Bx-vqCEsGbJ=Qy<1a>g} z9sk1dJB+=e({1PDsGckKr+VHI;#vAalhEQ&&u3H*(lS+;T*2P~cOJNrrcza-jil?j z3Dk3S1=aHoOR)Du7}cB&2M4MlxDr4uYov~a0yqQkE_wqW5y^L{ zcc|oDmXOP(L?t6N@f@W!IZ{$zEDe2$4}P1r|CSbC$i(j?cF#iVnZA56v+SImL8zeo z2=eIwe-(8vS59rg8f#Q+_m<>q+%j|7$8d@~_ZXb_k7xQ)=&OqiD&)j77q5 zt=K5zcsRRO?i%K|)>iHsPUl<6nKJ@j5iraUt9-Z@!05)&yj3Cn#ZVtITf>L~ZM25N z;4O%qJDN4&6;MwFAk82{%4#{*Fk8cr+X^-ey0z09=4VBr0RlRCy0+Q-hg3ytSe#l% z&~f*`N@Q+b=z_R-$lU^_X&9J*a=u~_Dg%bVf6Ps5ac&mXqn0qz z{gaSQo;x?=CV!~Ps8k*s2-2t`u^HIkNE3`)@jt@|(kOGuM5KjS-0#_16n z0C`(^i)m;A;2}pT3QEiSh-6|b`T(PB24(v*C=!M~q@o));tgA?YaWP@1JgzBD_-%Q z!#}Nz6zS(Qvy1MA;GQ@DROlVu007Aqp)dec0D$tQX*{iqx!;fVlGBqerXK!}^ugTH3trWSUYhRWMEGea7$DC3Y*ZC{*x1paK^U$@iI71#i#qvkEZ< z(Og-$BdlLT#m$veyd#VqaeUL5f1f43tE@84uGak0lvKJi%qCQ! zav}S4>OInHPKbAgLkEerZm%nd2{rO>Ou&}V2~t7KAe{aPLk}y0VZ4JBuBjRYCn~DVOOMl<8(6GG z$Hnf*O%3Fg0Z(v|xCizvIw0F_#XHl$Q+)xhs_D9TmudQ$xCx%I@CIRJ@xduSPHvF- zT-MxLFLGQzH5^02MPfp*QQeix{h(g#O(#V%-VqEW4_2qO=p0^s;j>|4p-R$GW!9L$ z$y%{c6U$Tyx_VXbE*(afQ*pn5j&+|Il}ICGNe*1T|2mvs-dHDbfBqtk_)5&JN*)*9 z&4fSoy+v!Tr)eH677c77WCsMn4-zz+`ron3@j;J7td1xY!h1B}o<`3Z>mE(Y0|nxA z-=m4MdP;(zahQsAjbJzXikz7T_ z8m0Q6@zK$fJyh1j%1}OM7gVAT&a#-+<(N;@(08_1g-U4Kn)Sw-F|fQXsTqfZl)o2x ztISrO*Qf??USmi+-rxlqkDu4bmp1s6NWr@0wGDpA(z3X>cn^UcW&E}=dIK)1y7u*H z1U$xBjKcM4giGynRaf%na7yXbN%S)BsswPIdRfS=O;Of)iBKxHDyFFvZjC7*R#R3V z&iX-rFxGQTr8Tn=ovzoHRO1GJ0Y&$RLxX+y9fg+|EJC5f5Qk8=MYbRR(=cAu4$UCCHSWGs6xps?1(B}WkT`v~ z50S1~!G?n*38fIiR*10l1L3am<2XZrHDz(#nfx?B0{(muE495RgeG-mvb`|ekKdJy z`QG6!*a+!xmpb|7-IBwNalIE-!;6j!%=>wq`wDKb@{T5bSF9dKMZ*bQJ8Po;Q!UbM z=MuU+V-mz{9qwZpwvA+Hc`;cSl61_3?w_!HS_^52^1PLtD-i)A-R+_-81#ell`hrQ zyDM~nO#iw{W327|R8e9kpU~sHsZUGj;{2=2V>dsR#*}sAY~?yF#E*=4(VOFsrNxYl z48iw1(-Ave+rTUE>gr692;=KCF=sEB4iSrhLN`l=C$`a$M$`W5Ey#)M{0?G}j0729<<{I34IVFrNqB9#;XGUL z4pXZX0-Ys7+V6&AkO<4{rEYI7PbHhY)I`%H>c#2XV&L?&IXj9>;IVdGT2bMnbf@1| zRM<^eIX>fh0m#Gr{R$6p6Dx5HyTcy{Scwq-D~7TX!dnC3k5veJa}ie*h#<^f=y$1} z&?e$Chva#u&48vKChy!0(2LfT!^gTmJ3@CY+y1`r0his%qC9orN>(OF47?%F2)@QL%viEbki zofj~DB`*d{mk&pHKysqp%x&P68`Jz2Q9|2w8h#f*H!-CGsxs>kA*{B1bX_tB+SMj=Wn9?Ub z2oW4c1OkNkC-p^~W&3In8pJmMUikv{FM#G{`VT?VPsV-koRM&+Q zlps5P`@O*UYU5$CBi&_;bsFh87A$Gw;2V{3!r6Ri#qqh@w zu16vYXKj}-(<7_2tw=5)GP_JDV!PTSGK9hKWfWJy7{}oNrLSc`dJm=*YxNYy*fqGpb1LYpt?D2y=bd!&$NB8$1CO`N(gT zutQ%cb?a9uh0dgbYJBDANW#AXdPBMUeo`hF`G|k2Ow+?~e*Fh3)30d7d(hLGATZ=u z_>WPvht5F+_Rt@wpopQXILN*<9&r*&ER|UOl^6)bhB=ghB=)%lup!Y6V35vPlz82W zlc5z7cCx7)mKcd;;HzdK)u938KDYAtJsY;Yqw+^b|uZ@c-El)Sl=6DBw>4 zQy%8c0?rT9xhUfDrsQE=ywv*_;35j#Lu-l4;`$HtN6T=2+R+uUNnS`N8{pd240;*H$AkSffFCRU@*UKmW zx)M~qKO2dIlZq7kaA=aGU#@(`M9{}rO3=TSkF_9T$~no(TlgnD;3Opci01*3bi_I> zNi~;PoiF0JyAopz66~Z>qTmKHlGvlGI1y?h;pgrs{5W5=9+Ci~7?q*5QU+Ajuh6%% zq;Qt^A9wbBR`MHvokT|1pWK4|FX(jU1-FQ_x$+%SKTzvXWwWK6_Wq9q7|O(aR^1iz zg(Q*zUqoh2-WPp2Koc_#xi&tdR1ZTjjs;akMrgZboFi>}d{8SF+&VT4sq@npVqf{u z-EgDSB|!tcxjaH>R1 z|6D1Ygnx8o3$m|}H_%}oTK3q9g(BC#$IrGz)KYDQ7|8986)1l`5Cbsylum+nON5%mGeV$LQGX1k88Eg{d^ zf@PkZCC1n}NV^LwiqwaNo-}Hd@KC}pSSo=aYMj4RHfDV_5*|K*ra?ksrk6dlLJMrHx zly{5_`cEWBD*;7vg%Xv?(?9pc1ugSVID@ohC~pO%WZOTH6{N&zA9xaTB8)90y@_!^ zCjR+!;xSUu9bs*uY@uiP<`!80N$oTh>oET<>!_X2<*n!V11T9>NO2>>VU_u^Hbm~> zfbPnmha~wfJh?1|n{vQOU)Ui*Qw(~g?=sK%Lng`h@zZ_+>_cNqF@Ag&to2M(fn5P* zVky%>9;q&pUP3{#-aBWn3W$7U2^YN2RQHr4<}=l)z)nmt@Z|o%W7+GuFPFS zAm@T>tnfm&mrsZA&7fcMISO2p35XQ0#3hRO5X%%4qKGdJFMoIrXbd>11^4ZSC5cQey4Z;X{Q6J?3n+LJuqIKYK?1$8Bm-_z zC%YyFQ)iuWR3iw6o@?=pj{7;a)|W@_G%$p+7aj$jRWEkBckp? zIjyyxUgCEbsXC;(v%Nvqq_V79tC+$_($+Wc0EeiO<8Z0YN*(T184#rfEQZ}vv6P+J zZ&#*jtm0~rOfYHpMqaTpRc)2a^UPIhEj!W5Dih36|qp;nr5^D9MpXqVey9K(hUMqF{!4%A3Cn2`A6Cg1G2F`c$%rG0f&8|3o1ec4}l z1tj9MvgH(#zf=cjtsRzwf%yb-BlHOk))#yKO#(3A)5`ghv(E{1pt9wl4e}g^(~{)| z7>BeVBDtdV^VREMG%Pc~AnwHw1I&X1{EZNFP=&NL)+dXBWlA0@`3rPI=fj^Y_GvE| zhxgte$99P_vn{CREal=(~A?%P&0`NyJAOlRvcI)*HZR(#a4%K300DzyWLkjq_)4bA`s6d@s^+hIRVF3|< zhsZ()c!xutLoG0OmaWE%G`CZmEp%woS}Za?PegcOGQsTSOG1rr%aR^?(h^Z^-8+WJ zN>N`!V1g;%S@15D2PT*s8p|k-mJ;GjTUlUeB_Vb*0=1EhCL+}5n^?%uE`B&V$W%hJ zf0Uo;*c)tYbRP0zdq<^e z%)s)AX&cw&?!*prQoN`G73Cfzi4@nyeI2NAhz`V0j|ZfewqBcu$pPtA${B}x#6n$5 zTQ#%GQ~!HVdFry6Ncqb_nV9A$NQHZLA3s6HiwpMj66J!=-I)cZ+c)7pSXu>o10fCq zRw3sc=8L`39yVd{y>yRJv5>U&!^vojSjf<2;5Xy_4w1I`XrU}&*ky@Nb6#Qx8?HRQ z$IA&sUY^ts+=3r!y#2DY0@RAcr&JG^UzG9oMHAkjT6+w`rZ{4XVe$5VxuBl51WzYLUnw_^-S_{nM{%QpLHfhiaNsVMXEw!a1>6HMN=j3dusum77hAYWBm)ISN{ z-XbuMT|L~r_Y}}!rCFmz;18A2-lsir8JT%$yH6aX_`F9|Y3o_qh44wy-*))Vgh|Ul zOW8ZTWnid(kta5TWniB490bhp4KD;x_($Dt^;D!iZ?g%O7m_VymKTCMSq*m(dV$&G z|6k~pthcn=9xMj^WfN_+(}0Eam%4VN(U~#`*xQCJd~nwNu;)e#g_QR zmgr9T#s7>^63=!#s`J)~u8n%4HjicmUF9LG{31Gp>?r41B%2LlgV|UT`LV$myYNzWX zWiIsAd4Z}~si`O0TOfg#vbvi*ql%Y0@1Rnuq??sXZK%AS)FwGyR5?BC%Mb$O08n6k z$*HB%|7EzPk=Q5uBPm&5AoBPm+5_^JdJ2h3A}`om5I4`IdBwOO^E_Pg6F!{0oKk}L z`X}!a&qNN{Uebq`+g^Hk=BIj6cMKuN;;p#5E;!M7;%v@35%$3<);x6t?;G0W#6nfoQp_19|XfC4)# z*OPjWmrS1}#=G4*uhQqPp3n$V=iY;W!M*`N*9mJl2vBUbg-8q*qzb{sl z93|T)_%ZA(u-yXcpAKCpk;!lep-0OALO3u6xDEh^^Ajb!EU^slvr-OmMa**%W5fNp zH8=ERi{V>XwmaGKS#l>`CyYJ6Wv85j&b92E+;&D&fJp=TF_cXVO-;-XvDtbH)nHq* zxY1yc!ttMNwZ%<7>iwqnopOs2WFnYof<4Z=D$o}RH^($+}BEXMrkG{WL%dy#HwPERfYP$|5Vy1Dch7Lh_C7KAzoS%5w8d= zfzlIiq@sCG|6ewUp(u;-D(5~s$~jazWS7AjVp^e%M{j#?@5&<8m9%8FJi3-E%WSp% zK$)fw4sy1-Mr*@J>&4*h*1tD4LlK}@tz!Pbg0cWedv%^Sw zyA1x3U8KET2Jc`ilErhJ2(O2vGG~&PXk3SayFcb7dp$kGwX^vNN5*@9cW+eG1#9h=E@!d zYcm<+k*2i;l*j*+M#O?0KJaa~v>#L4X27ZQAeHG~B}QP`gnQwbOISJsgG+IvAtbiB zWjGP+G+^l@u$9SgUJO#@+lg>86=s0Vq6QtOG0{c?EeXi9P8$v0`23VVx}m9B2(%&l z2|#GfL+VA$1HSZ(wKOUu$XKxoZVqVmXS-On!rY1esjUWY<64<)`N6@R0YYvykice( zGcViOY=hM+4r=3QkKaWa$Iy)i4=~hq+Gs$kw9(*Y(Ktvm1!4LJ}H=$?{UN+MY6@2#d6h_{^T!85~l(egZ#Z5y8SJogE;n(Fw}#X&cJ+ z^7x2g2hi?rBx|SVuOV39txlKuYuG_CRU(tbVpFIn7S-_=@vjW2p&svPH%xd}C`!c+ zl>`>h6ap364QpsNC6PmOr!>)Ek5FD-1LoCk*vQA@o_3DJXa}X?x1F}e0=qD6zrQT; zadn}&RZqf6!wSYrR2k+29skDgq9NF$<-+7yI;sxXNA~+wSC9U^DqI<=~Ld z6!wmJ0W;vKpTOmEvx|?uh-F1o=#uGW8vOUQO7ZWG`UZqpG{03@bQtTKBa6+J>HtOXBvePKaPC%i?4n6-L zq@p@;+vk$)rSde|r3|dKWyk;I4{OEZueoQf4gY-~I{a5A&}rsLtt!~2^ZU0%@@N@l z*CDpza?dxzOYqHL!Z*WB@?#0-45o6<(6P_p;G{{mHTZPumXcS4L*O}5N9npeo-)i` zYT-U=b#69mv}Q9l|J%ct%^iFEF-vL~yDAc@V6C}vxAExv%*-ARrzBz{uc)qS%F&j3 zJ<~E4{n+&5(2q+$dHN~TGm64SkN8;AKW17VV#NkeRK$BnMZ70f#GoQ7Z5YKTYQ=j; zt$0t=ih44OCCp+8vsl6`mN1JYtYQhPSi&lnu!<$DphU)|?%TzI*u{a^#evwxf!Jyw zPO%XuXk?^=M#9zMRK7YaFHVWi9=Uw}in&V`j6JD8{>BGz#n8q^JN-6ehp^NNlZBrP z^Y6)M0e2!DR%;*0noc~DZYj3mcE8Qi?vbnkFGkzF1tj_-ZHpGRF=wgWdkG?6jEgkd z<0AaAH2bLb_exodATW5 zPMEg$2{Uqo(+*$4S@mF^r3cMAIfe17aSeLdTzv{_Xmbbt7410c*f-cP=P|~I&kcXW zQuZwmA_9S2nY(Z9*cHe6el4D1{H7590~3cb^9M^7jNt9d7Hs@P?8DL)0$%4?L+=D! zVRUBmI_Fd-u3~!wYn=hkmWz(%D=uN|5>YjKUsf}4(zmheqkXw?lR4IqlX)iGfuj}f zFIcZ>JVw{(TNzu#_+yxo$AFTL;e_M98w+M}P)=ScC4gU@RU8(41vPq>)bilP7WOzIq7W?U+8!!_FMf1toQw7v1uVL!0t$ldr;ul zf`@|0gCh1qc%osA8&9tsdNp1&*t_FC?|9K+=f;cS`SAjmSle-lQs{$W5uVQY;)r~k zSG>lD8L#mS{xiN6;ni9EHQs2yh8vUF*EqcRRB+TV@V8fEF`g;B#_>K!y?BkseuDdX zIrYY*7GL8H+1)Ye>J8eaH?jHQ9ut+-;B9Ztc%AcuDnhv7_&Sa7b)Fn)_P)cDuk&Hn z>m0$BIPWxQDqiPJ4qnjrh;&hjnK*zqIDKd@Pp_;j_26|L!y60L;EjRy!mr~(Fg!MR zFZqRT$A;9h-J}wfm*lW972oW&9E4r)f+V8YdsF8G4w!ejDZ0H1xkZ=F!%)CQ4v+OhliMaj7o>!Am~Cg_`<-Ln`rRVLukle z>ohVo9U1bGK}~Hy<7ztGU^-T7qg_l#r-Pr0*)cghA-%C%H21DQ_vju~#6rs$J`(N8 z@EZi;H_(`C>0H3uS&}!{25wVYf1{VqZa8xECXbnT{BERWatwa_}+!a23Hnr|0qK5mA13BK6#kHpCZDk0gqZ$> zP!G(1VfYwP#hRFCW<&(u@WJsu;T0e9Vbt2cQe4}Gjd0h*np`CD>BOArqEFg47=0Fv zmo&!3mn~e;ACI3BAG`3F70XU)Ilg(NJ(z{!lRdtdPHQ=%+LL^%BW7Cg=pLuS)JAQKf%$`3i zUAAyROXt$@pqL5$HLPmh;XMZ~TRuK-r@y{sDFG&WoVjYnq3TgLvZ zJs!Kw`8?M$cJ5J279G=KwTzvYZy7w~ko_!kaL@f_PMN;nuKNr+c|?kK7dnGEV{p-; zqmLS#fBb^E_!-1?YImVM*D3sooxbNjOH5@OJZF9!1gEMx0mbXkPtY(J| zo-}ye^4ZOmeb&HIzU@GB!SdOKH!DBrta!f@?q3q}{PA%FuP^MznnvWtjLhWEVa;$H zz`$!JvnKk1*$+?E&L7&+%eF?u^j+B|)@DLw7qf7=`CvW*fu!AiqaB4@maz^N-HWy7 zdNZuXele;g`s#D@8C%*Kog3N39yFqTqwK-`BfH~q+#)7k+?9RK5_hq7t9Jzbt+Bl- z?qcF0hv6KR{UENZxwE<@KV&)@ioMr0vQU`T9j;@1?4S8CR)69ROpcv|ta@XBiQ8V{ z`?6TBOHP;+%Cp!B9lZVJ(B-VL(8Sv9-a%0{=KAW+CC98{{0jz8bNsid*sr@r8u0fs zy5P)UweC2q)n<^xwHB6~!Q>MZOAQ{z3NzrJYz7nS8$v1r`b{TG;Ki_dNYR$I=uFH3 zRNCZBHqu5G{??f@p(V~_@;tCD{6Snn^}g1gNv`7X#=#U*hU*t_XR`S9T>K^xQWeP& zXnZC@)Lswm3lHMxb}s|+4UHq`-K;7 z%R7u(RHgh9WuxYIzZspyqziD*3Whz44RdF)_^n*r(HUxE709PygP?{L@cuR~wl#Y1 z0d36qEH=`~&0>jtqT;GH%J?+u4H^}hC~yZCm92gO1?pKWatBXLi;B}Te*Mn?(x{(a zPmhXEhWlSDK%@FX?_c6=h5SKGHe=B{4)XXQbXI};AS?%S{qR48fx}5yE2}IGycXad z?O+b&`M`4mYuU&_RNKM3yWpIg+{5T?$xd;`6>?^Fyndu5#n#Zo1!kd@g;QoLyzC9I zHmi35i`QYw>X^tl^yAV`o_-3Tek^n7F-JcJ{h0XCUuD35D&jp+5${PAF{y}3!?8s0 zWEG#N6)%@sQBPK}gjFnI6-z*V2HzD+*u@fdv4mYLVHZo-#S%`jgi|cx6iYb85>By% zTP)!gOSnOaZkI~D64FLb?J5}QG@I7ke$0YhQu584`K(mEIV;5y1s*#$J<-S;hcn#kUzdtqo2oKSO@W(^gIlrTyN+d1a0t%f$yZd^(hIW4d}oOD2OSF>v1kugyDf zPQ`I9e-{>WaNp+|X!9&q2|uJ8YUDaL4vr&-vsz;vW4I%-j>$)F=BQvAajzEK>4FEt zZ8h9sF?#xQO=uUmgG3Kq^e}N0MgSjy?scrTu#UwYChkaq=f|&Oow=Mtf5o^I4T@47 zrdOoix{k#s(+##?PmE8Givz3SBdclI(Nt#}vTE)Ple26QEZ#k}!Hui|x@O z9@4?)CoHh66SS23x@^q3a2U!%6WDO~aaL0}MS}q*`4iSgEI$SraD@)1q;&;|jTY8H zzCA}9(4at+HSnOA8%}O8$>exzgWNYU>6rOrkN@ZJ)||Qf%wreWW{)!fGes?YaE;6l z+_fjWtzvSvx8-D*p}JY-lu1lW+mqNtqsKs4`dSAAuomLd?n2gPWARddirbJfe_TBh zVY?|J(=qX|ot&Bwt!zmyYvpao1+j;&%^}BU2QtNI z3=So)_W4!Lkox;$Js~4u$($>w+*lFFMz73OG{m^G%cEv6EX`f!^$MF}HVK z@3P+Iy(@Z;?>(XS2mLMY@YcD#hpu_DYtkCQZU zTR3zuYjAGIN;`i5OZ<%5YJrCljfu;`K-dN#Y^R-@sUE~JR80S#Cd3B`ZGgO(jMRoB zfY(TE+tiWy>_|;_B&+V3)5S)ycucgJy+^k;80Sf`VVJCp?PA(yJSJPAeOUKI>+N`K zjBUl?wG{(T#$yd`Jl5z8XL1^>DDhZATs=5(ft`=XBDLg5FCJ^R?Hi(PE>K#J$KacE zlKL*(X=MFu2N+)mWRGps!kf6fjW@d@Brd4OFyc>X;@Em(5D!Mh z(e*%aG$E$dgWn`KYGR-I5DrFz-MIgyhiVq*jEkZ~!+tqq7<8;ZiWU|L=! z5X4Gc+%SgTi1SHR#S1J>0j*Fp<^CNq6#j_hZ~L@^;Sg7Jx&W5Sc~9j?ad#TP!W-?` zNHf(jKMlhmY6s&TfOZm!W-@NSM30<)oZN^;W4krW)%R&%Mf5EZo-U04N9+o?WDSS5 zL@K_n67et}#S&X0;;^u`B{JFpdy;ib|GFyCX5^McGS1gkkxs+Fw0~X2wuRCjCqh*k zHYF#~hsY+6fnQg(=WRg6B&ckOuqkyCP{DT#;mc)9BqScM1M7)@q=_@@2qy4`wyqAN zZ*cc#ln0=o7mwBvQ0~=aYmNLqX>rq8odu|%!cZOXNxu(J`Cc7CpC zuL%tc4S*$oKXA2>y`SJxxL-@aU2T3#q@l1VB5tY$P+|be*uO%oVjM!e{3k#~5fQ0P zu?bSXc|SVVn4QMLABq@0dEq5|o7hDP`{nS#@HmW<7SrVcjIz34Mpor`Db9Q`Je$S- zm=GVl2!$V6a`pp6Lj6*XG65OfweOcBGA2MX71k`kMsA73UvCok{xSSj1QR8eR`6f^ zF?vO$-rf=!<6zD_azV#keEFs>o+9fpx*U?{)b}|UQG_G_a`>1ROMnT<-K#Rrn|hRJ ziNu38%OfS~(Qe3!VZXq0T&|&xR}$`47^BL3NEWT$pHg;W-U}o6qEZt;sJ(kZUHXt{U8@dfyD+` zOfzR}iD2^-aQRV_Pb^(cG;1i^X=Zm91l@C+P)U4(6rD}rZKI8Xf(!L(6@8loT<&QA zZzF0k9Z(B$Zf~Gk#!Du~G=N+H7s=Ogtlf~;r}79c1%iu}CAbt6$>fP-wnWnT`4Rak zAC>D3sOHhfiE3u1iE03e+3B$hT>PDx#@9_Q^l{M4n|e|nGc1Gm5%k>y%;S%h0HeVf z5-3JxgP;gBa#mDyYAwsn-K!$#*^5oY$?!0`nK;?KTIew;a5KrHoByTJ5_oRp08e6n zC_f(2JWmq@;GmfHeK=#tPG@3lGlVsb_TWYW0g=t36oJQv{!hz1n%Tw%4?J94b9Wf< z0ce`B-C_VjQ`o`xf}-Mvm2($v>{nE4dFEoPhE`GmStKpOF+RxW~~f zmv+$zI4?Cp%rq1L8#927)jSk7d92-PK|bZMq3a(24d`VA@ilNXP*H+Cc(S}-Yj6RR zyt6$_@_7#?TN)Ki9=irGiJu2{3AKR6QPreClD4{sNx-D4Nj!R`@PMK#z=Ce%Qz;EV zF*Gn)k8CPY3Q&=^tqgfkf$jI{QQM}nvmOMKs{l8Hm1TZJK#jbw8ZOngM8aSU-Gu@O z=Th8~RfO|dXzYSK2+Q>CvYB5mF;cGArU}~W`YnsuZn7szwqfjE>T?CdE z15g%TEEP-B4!#&>_WLw0W?u|RgH?p5*<$Wec0e-}IpR=obqj#e@54M`I_?{lYI*>g-Pr^hOtm%> z9zB@2_Z(jj5Qjk6oD&F}{7xw5^h6&)D$#C{8UTt3cUs_DO4^)V0*!`?Rz6d+Kv9(a zYLHF1_Q5cprTwJ|=Km8rh@)Lq<&%xu?2}C(aKuZigvZlrVm?n(WYg$E-hgzd#uCve zdDBgnGIY(OnuXlsXaIW%ngA^EqzV{H6#$fy?JmH>zdM(hnPqKHIF?f+9J{(HWxt~l zqb-UX(2WgNrrr9yM>e)?8{3hMP_O}$oe3rz&<*i9h#M^XprAo3^Y8_(L47SCbb189 zN!gW69zPS}MbT}$pqmR*KHYqf8oQtXy7_yG=%%n8-5>|U@mZFg2ScOPV8GCjtEh_j znOy)sBfXktQg1H8rX+3v6HnX}f%E4kpQqW)zLw??-zxGnkWR|pDNh6O#JcLWSN|}^ z0Xry)8##)!0eD|4kq)4eY|ooSI-ha^j%#iY9M>KS97Q{gRsbDhv>xSTYJFuOpYx#e zWlbPynrl7EvF*I&LFd7W4CXz|rpF?RtBuH@E1;aqR{NAgx&U~ZIA0Hh&CJFo`+S^{ zZ3HOB6t*Ls1ayIEfi8giW<)nOty(boc^8l&t_8?wxFhG&jZND1n>xFt$|ozpMox+K z>Kl8(-rdxXOEZ%8|`m=cmY%V4j*e54zW`98ywOm@pD!O${|=|L%FC1 zcwn)eEGUQa_FPRG9MorNR^z~m*m?vKjo9{qxS5&(P?8-5{Km&G6cg77PksI#u~m!% zF8NA+Ir#{bJ104XI z7IXvJq3RYLHUFRKZ(ok~$#uTk7EC2dYYKL_if^2fQmy#0A!3VLgm>;(wW~*z~~R4Agdc? zZ~+l9fJg^GDuWIXP#ge7LtvUCBYYf_Ti%tCsE$sEBSfQn&i*NK!OfzTtV;YWB}TI( z9(GNIShOdX15DtTgjFTlo!s#_C%~#O>+s>8U{$Q5xdampA#wl|l?_rtb~}P$ktx7~ zN?yqs^igXrK_%}&CG9@In}NteHWN^mCdHvj%HZq4=CMxxOe^JVYr?W7J_odtCtCor z28v+0h-igu0eP|oAZxNBl_yc*mr?Cdrk`z%$k?wbu)H=ZY2|Pb2yiI?F8P87mvKe7 z6mlM1ngEynrj+w0sb|U#0BS+q<1okLnpnzttf zP3Nv!PyR@3*g*qu^8k+hIswNvh+e56Q6i>*TwDM~^=!{-&BT0 z3z&2(H)!%_AJUpL7nlU7B|{LOBeEeaKwm@f`3J!VzkrWve>93!T^>Fml5)pt+yl`B zA4I}-jqDx-iM0U-8d4HfenV`U1PRx$7gM zU-|^pE`0*}NPvKvvDfXQb@>Jk8BP z)_gN6R8E>T7SD=-QmZ})(Jn4XFNK-XI%aH8%>QU#oE2ttCGXiAO#X?{Ts|?HD`Kj+h@OHGoxN>P>JqMLa&| za&mwSaV|w#ARZ5JAT8o+jsd=A`+RL!AZ^M3BiG2`&Ns;tSk6(xW@!>UJPgK>8@I}-YH^&zF+NH{tM*HW=Ab_bWi5t=Z^t%Zxd4Oeiopn`oU~jC8U3y0Zd=1W5 zmAnavM#6@yz~b2=;uEEKmlzwF1oC7OK;=Hk$os#dRp*2z+s#`ZXWJ#5ce%X%X1J#|C%{jB_OTPw)@4i%qw^FgKG7{?D{ylEZkc%Td-B26 zkqRC$FF?d8FJ4>)PVrUXWLE_aSzS{FOL_&@_)Oln+^FE8_AHVz|5xn`+P(Xh>0iJ( zVl_`Zz{Gx4kuO-~#FW^o`uPQd!x>*Ny#+zUGjW{A{eo$HHL5YcVBvJ`3v6C~LHmBH z4jck+V+pHWoKO}1g2B5g#FtIM>+qTL1#CSy_o8h z%(Kr$N3dab&yOShXJdO3ODb$W9v>EOj^I!Kc&w4XQj@Rha98~44f69fd;kY=cTI{v z>00we{IVOO876+Mhj1jT@|8FOsmy1lTgdOjTkY&iiD*;{J#cnxxJcy>&EUiXKXFai z#(aKNY6&lMpnpS91$Zt%H6U&mNmkDa}jjfHm2qNiZT;Bkh_ z?1-OJ@i?aLaWKUo4B+D|qD{)+XfPgNaQa34I5=8e&xYmKW8&7MluM=7MU|ZkHkfQnBCQ03muA zP1{R4(3n3XSl~Q?u~nt8bN5?>5^&8YSdUu_8~FqZ{+3P_0I%?$W9!%}Rd@oYuVUhHH6PT} zMjRQ=J`;{3VAN;>J&EE)4u6?Avl{-8o<;}rsG%nh%@eeOS)@`=<5Iu{kr;d`KaFBG zT0(d93$Zl*j7n{iY;+!P6BkCr71cELRA>_lT^NZ%aW%7z`R5Y(ypcz#i%@DFCc`U* zH>E(4L8*%((Kg5FzKam#33LOKp@0$nTw=z)e|)_;Ord!h!;zv7!D z)B6f4qiuW(5u${%=NAr%VY6MZ!b*~LPbN71gF>}W0^cc>FxW7Z3PTY*?va@LGrzm#y08YjK4p?I3&_^S{ zk`2HT8*gy#4KCVQehiCeQO!T^hCVo>0*ui2o`Oi@Z zbq>Smaon1wUyFOix=r)|!2ts#@mn*mqSh?)%M@;FU`iaClBxq!fB~ z0}FRJXp3$Yp}l{l8u1Y#;-J(uD772xUtTFxmbfM&)8IfSEi7R3Zn zpO`qpZwj&)U9`$E1hbg2u8B~f+HX^%9n1&Lz^#Ij3sXsw26mziI5z=CYyF&wcEer3 zS?5Fg37dxrteUYF@0}WYY;z`dauetGi?-$V$xYV0!iE-b}}v)&5YnpPfyA?>24X)V(E^Qaq8U& z(dwA}@h(J2KKgEc7uO&3J~j-te^1UCXk)mL*9IJD#hH>qwiN^m!(cugs6ob9TP!?DC)KRPSuA> zv8NokTFN14~a{;_~;(~ixUwWywSW|Y8e)K zM7B8tAH}r>I>XdLXP+{;gTG|*&J*`4WUc;LU&{IShIXT~rnM}-s~l-(zm$nR?-sX> z0^Acnkm8ZrFv2T-6B4(N68$W(pC-)O$Yd6?#-@z-?uTxcJb@*;G(_L=g>2Fpn>E4cX)4Pk(Aerlqh4-GbSHdh?NS*tSAz@ z7W8o~m*V*-RVC;>T1V(+YMe5r*CGS=aL}ZNKxWtQX8Rop9TH3CcVtA|hYO+3I|%#` z31g~UOjTurthK8;yQ+GtW+|X)dWWjYrK%bQ7dAJ# zK?N0C0a--ZK~WIb5m8Z*am8^%6jxja_k9#_!4|zPTCUtGs~sBPQ@zxrnGVRa;QFRjM$v#cnX?)c0Q0A+ z^5ucyt+pAJn2Pw7U;Zf_j^g`hWbcBV|H_Y`u2Faa#;VxR;o-juU{ z=hMDHgj^QIkvtqPJm|uWFa3drsXmyhi8zufrhkF`XpH<9@Nv^|4eKFbu_Rc( z0o(2&FpKuz!$&^E?Whg-EbLbV+aeL`a(W91QY@M6oT|V&g8CyI(RyELBG2_7M3Bmo z|5_8H)aud8gv5zV_FGMKx%*`LYHch4f3!+oDSYtj|EY=Ni-{(HhFJ<2;hiHT+s%U# z+YNdvQDYjp-^bRdi!spw8>j|+?5p2~f<8VX<_r4J;9^F&yqdKe*^m!CQtz#Y4G(W& zyw(o;^r*l}=;?^hA4SBLjV0+5*bB2R6BW7{&={A&I3?*h2%m^xl@dAv8eYS)Yn8OO zlI(OJCG8W?4$P!&v!73k3WQVj#|!rN>ASe5oy?*iMfpnZ^NOMO!4n3}_4U#8Lqjr_ zxnPDL3Z|{tL{kPf(D%ni&C$cL=7zHu8zT8|O5`(HT#~YBf3_^FMCbVU4tHseN1>fO zR=PWCo*t9I=3ExXJ7%(R42w4Sk|+!BQu;ex_?q)5o}4quT`DGNLK;$(kO_BGzXW?| z6eyo($9R__ANkwiB;lY2m$uRcY!vh3Wf2sB_0U-q;fP~;-xk1!(vz_Ou84|qsU7db zN<~q@-&5;JXkTbasGT<+kAh+)AY@00(N`b>j7k#Lr;vDa7UibI(~eMyC^t#h?NAa5 z18F$M(D4FSR#Sm?aqKR}+OtT)bg9uyU?YyFs>}Oe3sQSy4JMFclFIfPjMV|hwfKQX zwdNeDn{=E9#K{y*dEh*iqqQ;%j&-!=0s`z9Q2!{$ykXJ+U>}oVxRIm{E|l6e1j?W+ zF9$jF1uN8{Wa7Fg9G9sf#LC9@&z~&9jIG4(k z(oGN8&&_c0kMLHfN;GG!hgk)#g4R)q0l@Fup!9&;VnPFQVVehbyskXF6`lmCxzeD- zvszqnpDc-shd83PD5XIx%yLt&Nh6h?shDMIP|B^tNOqV8*9GvjjPvJqK)H&(Yk_Sv zAEne&Ffu^*9@N9{dL9b}4alTj$P>sA?;Mj6MD75X>#9B7queD#LoCEW^4MU9cqa#= z@#7T@5w{Qx5!E17iO31MC(_5h$IXN)s2*a99wEOrMSmZHt#I~q2_;|wD}wyRyq&IW zOz+9^G(FcveZe6Sye0JSyMCuEYO`RZksTT5>76AUk}_Z&XaN}@&6Av5l*DJg2sT67 zUPcC|J?zVqfd#65^!X4rNX=T@D8}NWQQpP=y`)9B5qE2{*>->~n{!?>nDN2j>kStf? zYySb3=K%e1lknKf^5Tzvb_$D_k}vD!c^CG0sDeE~1fa!OD44GV^&N)GLW*i0+FC*= zXO;>dJ>Q$cFM0}90Q$y)0Vq+!!5-@8vvvXmW|xJJb6q-kCIm}*)HSVg7p*|chM+cPkU?0y7e zhotA#N_^&FOvQtUO;8EcUhAsKeIFtN_VUeJPte`-wzxDerw!-O`)_RG`H33Rurip- z^8`E(Xt7y;tk<_N4D3KXs*(MWGJ?Xe|3TW(ziMRJlYqJKC@EzU3my6xF7@c8rbOU# z9stU{lyOv42yG@5?jfFhn;{YYJ@b|5pEu@h7x1s%MJoTc9t*~)BSLqu9-qQh_tagBv{mX}qJG%ZwRO`94-T}Tw(7dok0dl0A~ zNIRM)l$CIe@`oDkaO@z@zaK9Hy%)I#dXxW{QtH*pgGpTmksjKV0Kusjqp-}^71Q^CH)BHz~6YK=hD1$3AF3> zi?Uw7DEK$5yG5X0`pXhfE12KA*0F)$H>|~-+yQ!%^2*=7N^y*8<~(Be(aV;!s)~Sm zTUBb`PG!_WzL{j{RAX0`EJYFZ$u~a(ugiucTR0rXh>PkZ~ zIpX(@13iS7kdA6&9bd=AJShoNPsoiSc##{ER|8LKRDcL3Pl!*>a0y09znKn+AMNee zts2vbA+Iqd7n{#@+g3HYKyc5~X$5z*1trAJ<$+c3+N1q_n0kV?RP_;E9|pQm3_}os z%AKaL#A(;IPH^-_K-O+86;_uD$CnD@TtW53MCbtz@93%)&{Y+S4?tJdDTZoLu{6rA z!<5&4%uw>$v!va>?+5L=Jyj@`PHpP)(4F-9sYT+kgD@3Hz5G!w@0$pM6Mw6t2Gw`z zL?B#j80I-Kcw=$UD9>q8Et`Dk@L`z(jG#T)MV+i7&uG^wd8x-c+6pBX-FEFrlIsih zH|Rl7-R70Q#tHWQ*igzRD(keAkH7nXZXs}KJ&i`CXt@#f>Vsw#Zt+DQq%ouv!pdm0 zz)tymJO8>DY23itvfhCi0}zzwc|Bkt z{z{w%Xp&|MRXq>9H`#b&XCzp8h#(@!ifj~p)S_I@NN|c?8h#LDuuTSb2fNfFBWEl) zMJ!xPnJKbyGAmGK7$(5gNRgD>n#WJFfVVvijcNnnmbIj4G>UKo>K|lS`%LLPQki|U z3kvi@>jl+W{j*jJr9%P71mM~jok-OF-(|G?Whq}XrUp1}4f?KGyc!movgAg_igNBJ;1i3^;ed!m23hIq(jof^`XH#P}P6~`vw z=t5ifM)^funYZ{9#iP}~#>XaGiW4y9M1%{FwMcb;ib)gR%uv-tr<6#1wgiA_=E50j9 zS@TV=P?v z^ImyKC!Yny&w=9i?b0CLbmksn-5#Qro~Q5I<*Ur9YqiHuko$H;8}a4JXvDB2o`moG zcyiW2e5AYtqmqy?jYGXFcz!c4e-QKj8kNq`BsMBe$veH)=Ny`!1s#v*L`jI|ivj_E zL?<4slK!PsmA!kuR5{8Koxw)H9nW##UVc*&i`Eo1j!pP5px#f@FNVgKk;ZlZVBmQ4 zEzn?!bRXirR4zDJRAe8$Is}y-0&gp4IvQ`ukzsHKA4i5Tewu{BF~0#XFP|B&CuP9* zN*Brj!E@(H%hzne)S^W}pYK4@GMlE_(M3S>fn7c%KONO^P?`NXl02}hywMjN9~Qn7 z@Se#6-g8D!$gLs1ysHcfcfl2#b;ex%L5zr5P_$}TEvSSVRyA}~Y47gU_}EUAg49YH z{~rpiIb@3utxDZeqN_?sKqy6t!WqBt5MMv6wY?T9KU0AmYm~TvKEx+FFq_f^v_XJ| zdU1*r4UD&#S=TP%Cm8>a6d}BpfczrqJBU$ob?m5H)1cKxAD^T&tUPl_)6_86p+qN# zk^%VKVlpzq5H5A6$Q(}U*`7=z;7C{dW9XKL<&>5RymX~3EVFVKfD0eve|m>F2d;}*O< zCTJ435U}J!)$$MOz3TA3a(mR_OreMeqJA{t8b2zLBs|_m9#A?BJswRqIhr(tsI+g$ z2tLgfGw>yI^oUwqj#;t2Sg$mvvGPZgB^YzsQN=-|b9^IFdc=HIKtL-&`jMqb|A~M? zcnUt!GXyRu0IZuX))U#iRWW+|5<0l0(X{(%sO|g1eX*eDlrdni#O9Nv zX~MN>dAPPcT!)^3lanDj&v}L+x^Xnlnh1mP_YS%2QsnY`ms~UqcSDs9*nwZ)OiBja zJv`5J(N3yHT4i=7S%Nu$pGmE!IzfiQL9Zld60rwY&tfg(!hpL;aKCp-8@4z*pL95%bS}O)&Hdy}jj;$XCy5xwNiCe@r6Q{$zer;B zcaJG$^&2#PonrM~kh$~%g(!OY+M}1RRW$_ImFw~eNkZX+2<1egmlHiy|2zq1#5_^} z-tx#D{Z@lMvA#S&l#)zi4$Ud1oB;BeI{-bWq35yV96h6Ru)B=(jvtjs65Bctuq9ZNu(?#Yd|n6! zsk2qb7e`GNc`r5|1Fry&wUqaQUMfMZ1Y|D75DzJep=J-71x3;DZ@w4k;`(u52~s+> zrb|oUEbI337gI!J@7~K~O9u)Mg=1Wx7wCx`K6K_mAm_jvH*CUf4S3Ba>i{-`LG_(JgFYfJm0;7 zBeyN3h7CJHC@)5}biC7Z8i4}PI(_*kcwwFZuAKNfwojl2^86B3Kfg;JfOY&Rr(0ev zO~+CiuHMz<^*ICWDLLIDc;_rRu`j^aM6ano3omBl2d)?6c1=O+rWSb+dzegs!U*ra z_ul|Es1ejBkQ?Lij3kLBEjhqmMLe_0;A7Gf^aqxyp|@f1A@SCU z+$Vx?>sv?aCN5b=G=rc2p(NLN9(zAg0(b2^jzOqioW*8syc!NWrh2;!Lj>eIkLg&; zvNG4pFWMy~l=43nFfi2U3vHRDM#0b>B|vyR2CpT3?GXRD=PN~TE8=|q{T_fT?(;x> z&pqC`uDj`o9GD{Kti7`Y=cL^P;XL3QKokSP13F%|#DBTQ^lZz1`A9Z<7B4wJ86EP(dgk zs8F7;OZuf(m2%9#6jJ6w%<&<=*drY8GAyps%j=jkP!0#?CwX8u#=kOB1--#bCr%57}ukj*Ww?-Vug|YR4Yp0lAroX?W%nvfH$kxqPLa% z|7ut^Px#)be9D2YsBP@he#3fo?mKY(N1C4G0-f4CYD(4gByHk`1p2g|0&n!VNN7H0cmk12KqHrL6j{i^o9t8sYvvRf0@ zZ4Z{SO$qDZhuCc|%ODHwe^bKRk<*&6jN9E@9@K=u*s?8m$ILfUzWX=x_9lPZZ3# zu(&vcZF`BKEOh1rF)RCwe%1p&9+vP_>?Tmx0>D8iFkJT#oF%? zG4k2nVoq56RYSl8JK+7=+~1J&?Ntai2|a_O!cFpSK_M8%sgE$MY#Q$#fKbrFK3J&* z`$N3SWbCiFF**VqIs*HI;CU9s$&KKC?D2q0UVc(z&oFJpgFMa3o@cfB=b8TFtIW6J zVr=j5Jlc@l^Ax7loTs~lz#f)zQo z(vs|3RisukttPB*W&Zkn2G`iHVTUpZBit-~= zt69bKZDj%RZ466$q3(oTbV&(15 zZ6WsC%M)$ReKzjf^$f>)R`?3>0V2HY!d5hsDOSj(-TSl;WGeSQ-f%1CeR$8y%Z*x{pq{%wdUD`d7Y{k*Lj-^P4H)DyQMAPeW3cOq)0ES4&Kgp%g++f-CvbAbxF z4G;VX4_t$VVz*)S?DR*nwP0*xp^q?mANMlt3SX-5v1I&{a{o32sCsdI+gMcl7@?+@ zZq+m%z+r0v1qyvkajjHJ!!4zWrxnpcPx}*Y+8zjF;gmn&o*asZ0_nr4h_7PzxKHq? zK8pj}dci_BeS(`_41|0m=(U2|u&B`VJ0xy<3Gs4QB~UpdpGd6Zjb|bD(}Bu1rtOb~ zwxN?$;U(NUs#GH{k&~LjDr{rnSFk$KXvb;+`3XY!(y!pIN#0$gk0WuHaeWo; zD*Hsr*cI9~Hrz-Tae}Ae#*s#vOvPTAMz{=b!*~W%fWiNtz=R?{n<A?f1 zdk-Xx%-qRh#t+k_^T2oOIjq?rot@q<-Q~E^0#mQW#+~H{C)%v7{fW9h~+JS>a*&cVZOI)HBb9MKRcZ)>)Q4tm_@GL?Nj5E2vj7hlM5Q}O^K zoyCjj=kH_*w5*Ni6#+u`eSx>f3xx;g(_hHeEM7B-YxGO-xDOAc$02a$ z-LAlPR`y0f%o#)wac)Z)Z{TrPba;g%ja62VJ2RUo*Vi?>YH}*xbezh_tjn)>qjB+F_7Z^Qg}?1G-77^S4D7u4dc{J z8149P0rCaHS$`V{`|hFQ=?7s^(QLswi0x-)tkz3c>DRp6hrf4h;8!mX%jJIcawu+Z zuNb+64r$%FcfS~E=Z*WYcR>C=%&@qR4X&eu!hNg^VRmp0@57n}@6{sy5Yqs$;MNwT zZDE6x_`x~?TW}R^BZ9P$_DU^6yV0q@5>V*}@iq^#dNfuzG9F}Qaoafv%O}-kkG&F< zbwBzad8NVbc=*Qve2tsoo-@%u!uUE+jl6^G?BYr+t
    EMcA3gN26JdKOy78=m9b;7e4W7t80mM0#-|Kp$?iXhVQKr)9vL$poG%TgucO1;=3`Zo z6hch});2?QDTU+7YJ}jW^4OoCCO?|#$5RL=0`|}2HLF5jfm|<_!QOvw6*Xds)*blPW! z7NEzQ(>*rb^Oeeu@(668SW{esm9;1Zt1YQ}w7^YBz*0d}0GvNeq5x$Zu`JArcG<}X zqzj4H%2C?e6w9Gdrx7exi{N6mWx?I>erl^zL9l33G3wfzNf>j>B2h13RMLF zjlvcR*hC=d7TKrprPQm&u`yQKHWqMw-yUDWICC-FUj0!SYqoP(#LmP%G2*in&IO;K zZM`63YVjndkLeK!;|01n_%xdG=Y)nhY@9!!M<$HFsPoTai3}U->IF~G^n-h}O5>y; z$K_bvqmV{E*qwb6%|yTzC=n92A_33SLYuihu?LYjhpFqga`JE#zmjf$1EANC#tX za7$31LQu^t^pAu4iLJ~6Z9%=8POX~np9{O=RPX_?E2V`VfHH7fBQ0yCPo=l~MbP)B zfIMxH)~3-QPttsjB%0MgpVIO-^-7w!Ch0pfAa^bBQtj@5{LGa!@sDa>N3ZNlnl+_T z{%gN`ZL^eE%6qSLp|GqcX7@yVZ~39JHYpM|s^ux3<>?6fWi77q<^6huzBAYfzb}IC z3~GGLO8?oXB$~aFG`B0kqK`kx{6N!G;h-romqz6>buz) z7-uNZ1xUSm_!=CrYH8K5*?JWg&s-Yp#p~d0mM0_eC!55zijz#{`uE zre?)+H|m%kr(fJ7ovu2Lv?{}nW4;E>jpOfEV?qnfN5py}O3zA4WobI%rAuh83F3$z z|5^9w$Z2II5ivY2HsBbAyz2F>}Sa;kFhs5Y~7E-qqwF$(x#C40m=A zx+eGT>?L3lJYSP~|RX;*ydd=J!C38?igV_=dA^GhcMJurr5 zBVOAMyUVHuC_8|-GpI%TOFg;=s`|ktN2Fps{3=qn-b$Cgy1*6BXd!W@Cmz|nhj@C^ z9^#)H@!Imf=tv_=nh%T!N7nX;OAfT2I$B@=BAi1}*d^ zVO1+$Q8A(fWn39EvZDyfd4h8BTzJeLTtjBro6J(2atjSiSw!&0w`Fzg(KQOpClt9P zhtkPQM!Wj{dNFDAh%tMJXJBbxWgI8<1Sz+BM%qZ6CR@3j zgRkEz(a8q;SVHNw4#+j^IzzH!!>K1C4Z)l{|d_%;BA{_u03rVpwyO50FoIA1< z)Xr?^@WW_B8_^;vKe`2@KZHG^65CM>00^aF ztum!U1@J{n9I%qmVG<@>V(BpRxZ4%v_-A@AD+;Z7WUEZzu{RdsD$cNVTaY~1v{K9^N4CnVc8)xXEpN69xU|(e8cC(%vw1WUUBx9UVYYo zNyVE}#J4&kpkkx1l7`bFQc-ChTeSYMmpVkh_wZaVrL&Y&JfV#^$b&ZG{D)a)X&EG2 zsrk`dqBQIXEdYfhmD$+O2wgLxkpQTL5C#7E? zkH~}|;j)ByeV*ejDrWig1V^JJh@CS_QYMs=$*5zU%i4&0iooVr5hz<)0;urBSfG3; z<|_-|YY_nj8>CIbGs+h;?(=!-zeW@ZgxH0Gv@n~AZUE4g`jK(Mm_7o!78~QxbqJ0% zlsQ^WqH=4i*j?sL*g?UB9&p1Zq}bJf5(^A3yL}|G(gxr>M`ro19}gufAn3EAS4xTBttxlCz8nIom{4m)WnlK2UJ zN5x8#3pIMX7G4bYDD`S4y3Eo_CzZcL1P*kUUsL=>sb4{`{c3^do_tL3cH=z@MP7#X z)peOY+DVHns=kopC@|G ziHXOEOCE5Y6U~xv z&`J#vKFOm7Ih{((E4!+wXB@?h4~npUL$Nl>95Y@}hvZLNw|Znv{H^ZzBlGCx+^Rk3 z#dEvq_4_z}2{}$Uc2wwDz#bX!Nv;NQTSVO0)6<3Z)kRq2C}9+eE{QqNyaDe(C4} zl?6h#x{}v=giT#(P>Wo23$AsXWD@O1Az}(BbbD5D8Wv)ZAYY^+t>_Wtd9UvgThDO; zE-s!&<0tEjZ@RumiyJrW4JuZSiR(}Ufz(!(c+`CKTrd)}sBj!V(P45W+&`yR;LXQF zphda516soTW)`|ekXng)Ftp`BJYkHcB6wXK6eeb#^Q1%EI9&E5sklI#Offx9=Y>wx+<(PKbjy)q-Xb#ZrDRwIRS-qEQIZU zk8-6p(z-|D)VC}xgJhGMh{AD>WtzzSz6P|eH=K8J&Z88J)9JR@g0Xd8mlr36DY>2|HM+(dF&}K^)D&{3oCTHJ_~Y^ zy%Oc*NH_q*<+K9>1F-r=dVo(q9MOaewe~`OKAU=(|Rnna}{ z1MsOEw_<(|-$HYEWztlVzE7vG%G{?DHzDokOLCu1Rh%py<_!}fe=n3%{}rk4T$-z? zLaI*fjpPjeU2{^8c+yp_ES`Eq>02%OSM+CyZ;)HUe4)!f0PD`=a>oF%1=Rf+$-SoMoNE?#-|9^%HcC}ZRq z+$S8lu1CCh1#GQj-%m{8nTEBFi=2X^D)VJ}o-yZbTMw(b%0Xb9Z z1me|V=8}_28%|uGz#HLx#XD*Q94m4`5l^|Q#$0}wp2i5VBm#YJAVhM9#>aKZDic3A zfe#SyPjY{Bess^>{sc|nq>0L9Phb)U{!&a8 z@=cg;borVvt9ZO#2avzfr9rs4TE5|gIhaj8@fcXeI1wP9K#7Umr-ih=M`I}u5 zsQ@v$^i9MaU?pM|TM7DX;QWwI6pL8pe<8HyktrPCMml=2E#8s#NXeU z@4ZS*LyjUy)13HZaYn50=_qu}-0Mlq?oMG=Ea?`@D!R&s(y@RmR8ChV%=eVKcapk; z_*4cx>?~4B9@1@~6k`eWdlbF-zY@*f)OuX}--$#iuwWxSCvsy?GI#bYUYXTL&_^DS z%8f-*!BLg@zN>4@v8N-bRK8CzzT@eq9x;n zvQb>gJ1Ru84)2b&7V9Wb5DMl`_`Noh5XEozy81~JOy2G(^f;ycpNNC^O#LsSqiz}O z3P(2d2s=l>o)zTr{Drd+)}U`FzUT&0_oq~yRD)S?)QeC0s=@3<^RcdS9is7hqSCbz zRAWkJ_}7v=wi9I#Kjx_TlbHe;mf&7mSr+leY`Nty4NzZpclNRB4t|FY5 zqWWB-jDI1qQxt*BC5BPSi5wi2;;o5192Juc$@RV1U0gKz%5LgO<}aJYufD4Y^qY!6 z$5EB}l?!x?8bTQWFHi{0Cjk!+$;X$H%D)vltQ<1%xaasz?6`{1DLPlktly`f}9(RY$EjF;+)Lp;lBRV9yMm0hkMMtwQ<6BFZpX(GjCZz zfX^V>;c69+IUW&ao0j~GW|RNb;T05EeC8(}N6#J_d9GTjAS6us1|0w5@k$*^CIRr% z3E-y_+}%d=bb|Ehq#luS!!XI!!M*1wR|iR6`l9(xn~4QIkay%}0Q{C&+!|E`_{~Lt zCkc(w5(h|g1Wll zUTQGak_JX;d#RL-xmHl%8x^E$%mTvk$L=Qwngs-Lr?-YSHJIW97v{9o4Rm%l*hA@Z zt>TtuSCljQl9TC);@}#*Dn!pe$r7qJ_22&F&B|ZfAwzU>57-&g6Ee2qE~y(<<$gVCGiQ=k?)n=2J>oS7j=Q^**iC*=3pix z08Xxt@>6c@5m!lqFbEuA;)5WR^Z2*nYd{o9s}W?F3r_$hQ*m&l5$ITO~-Q8lVlm!Po1KgGkDs<+5=C!LY6q z;12j2iAW$22x-;^k&HO~QjaM%DCYQ7;hUJmksqmrvNw?O9r?ocJ+B|NU#|?NNvMU$ z$b|T$35?&?lg}F#98$v^;r244CD^)+G~PtzQj|iC8hIz)44@)$_^vCVl%Fr4K)`+* zxxqyj934zMdt0%h;V5Q(a7gf`3x=h;;ZX-iX*x<3v(C7WRINHQ8Gsqne_T&RrHsrcJaC%;cl6>YpW}YiOw6)01YFWXiBqbq z%mg@(YUwfWX;2nC!`T6?%G%V4#QzU6z*YvtQyuquoZE^$PW^V${$~XFVfoxBTAG|9 zF!35OYyWFV!)jF^pdS|=V5P|hjv=VWSt#vsV&N-wreO(h<((!E#L=P9QL;HS8E7hb2SAF#t9({z0C zJK(DPZWf>OI=Lzm{(zOgqX@P;0C%gSNHEmYk&3h>Py&rI`Pf)JA@B5%cJF z7Sg4~VAX|{w?^;isW$qufkyU@o;u@>9(FGa9=$nq6zu>SWYzhj7*Da>LYloF%S=Hq z&J=bF_N1D=c-qjD=Fh1Fl5XETFw=3_t${C?k)D;tW}SKOV&9Nmez(tPc9g z(NCU!3e^nbJ83%1&`*|r4E*T7V_5Z$ZgGz27UxLaV$dy0Hs}`T$SfYwQ=D`36m?`4 z?=XvZn8iEH;vHu34y$;FRlLJ0-eDE*u!?us#XIcc9d_{!yLg9PyaRKZ-SXv%cjUY~ zut9A#^RM$YTheU>7T$Hg zmB|_>vOcGrNLy$PVts6jC9D%!5+_+nC8S$)Pi zb7u@)IBoH?c?0f=&3JzA8B>luDwCbJ>t24sz4g=6Q}3{Wu2h z_T#BQJ!dCi={0QSlzjrby z*F2pfbP*qNHK2Dj!ujGnW#E5c2JJsJhK1j_6XEv@MOo`zjoJJzp0Y*@iYskq;nAW` zZZxnuL;$~7iE~JBi~8BfHs@xGTq2?e;hwm-2G2<4DO=j>6xoXE zsz4XCgtarVWKua7b|&4u?wSDh3By1&CaCU@NR){@nI6j`H;PJYB5%v4CvqMN`4I6i zk!t-!l)BJ%1dmMQHTFcV|Kc}Xo{v{E&IyRq=;l;zB8t61NIR41e(p-j8z&H&kHDCT z*i)*2yf=y}TowJ?&;OHh)^L|Gk(Y^2`d|}VTwR^Vvut{@GG^IC-Y1J^UFyg5hKx=d zQcdKcZp?ArC~(Frb>7Jt8ALDhYkvzh88}R#kP(?i011cgk!30~5gdm->!6X#{OrJB zke-E;LfJ9!WJJms zW=Y|{Q(mk4($zmHZ|Ie9Uu&Z>9~M5J$gzo-Q(oK@LA`OxOUCP0&ShQg(2Tj>--qP& zD6XxFYj^+V7hZ8~x45C#!hLPmbSUis{w5Pv#LDBy)pBwTuJ`LLQIs_zA1)$V+u&gR}P8GY* z-F@m$i=A;yXE~;mam~d9UO0m2B}c~u0c>U^S-z4j!p z*m(~YRQ(+LVIwf06%7guczhM|!iJANr`W3YA#*-%CUhM}?k86xcUA1XDt4y(*+r$r zrs|h1seVxRQ&?DnpsaGfA?4((YF`cy-m~@*I0~d|X-2W;Y8miP)vw@{x}^F69fx9R zsGn9pdKuD(cyk8TK4cizQ7GubL$lG{ctUBB@j@XO5f8$4sxV@Xj975stjcT-aLnV#g`0W>RM}SLP}p1i^6>x}51H(PT%#d3*StEx`PW;i3f_V$h!eN?;j7K9)9h@n z`}3nH-}!YyUqJcpk9-X$-vaWz-7ov8I!J{Xg^Z^(BI5|&A%_>yM?uBE8!|MLyWL-h zCjk&xK2Kj-r)g1aAp!&FC)XiRdl}_C7CC33-#f)%LS5T1)-Qy0WBCo9DBQse~#Tk`z0~sc|*{`iG!}cFk=1Hpl zDZ|y6$mU>FkzXA{Rb;bY9N7=nA=3%{EM#q@yHD<7w=a!Zw7H zx%{q0HZX0#0DS^V{Y)8V<3uN;`J2pf0HM7f_= z$Hgfp>!TU>Pv$L|03BFAr;{Qcnh&C!-0pxQ=WZDOY_; zl*P^U-Bbzh^$RRAKADd+(;2*}zFD<_auj8LDP_Knv~osWLj-vJBqLGBvv_c%qqet@U!jZH~u0DlxZH3mafWNC* zU<%hCMBcZOI&$65nw0l#DDxYb?twB-;dQ8tKgxVZc=61o!^7c~;h{6#035d+l8 z>cgQ({=ET1r_G%+d;S1(z|iUW&i5Z0mKpuR9~Nb&Wb9M+(HHU`4>e{inbNW?TAjh1 z#nXmL{d|elfAfR;`2Z|vlf_od&zr#-bc8pVQl4@F&d#)lhvzR?nnc8Bl7%jKS6+F6 z?8mT%%M5hL-!T0ZT;6s;8xkt5SBH`ve2}T87)3 zQ{p;n2lHRZn=|&!TcHK^nl$7dO&ti8=b7he{3H%0h>&< z&Gpxr{aAgzEgu}zo*Bip$7x-Hy%~ZO{T(o418Yua4r5}~AU+&jW*l8H&^LfZ4kN2J z(BCSA{MR9@}MoTolJ&dZaqxBy*`^AxL(ZHt}!ZCqbAi4B3ngSM87 zDK+kcbG;dvB@af=UOfP_F=zy$ zy)`_dqQ23qRtfahl+j_|I&Uq`E0fM0$b}y|AUK)Hi(%`@u=Oc;?aA05I+LEv!uN3T zrQbJ*MJF@Nl)x>M8QNpm8jE)r7({`rY&{vayO;C-C`V2(wsQl$H{D<(qx-q|%I9Q+ ztv*sY+z_~*hvx?6`CqyDldU6@fhl@0t{>-K@4Pi7v}qMhX(JekXTQ-;6p3aJFbGA z;Y+3;7#pcSME~7rDTbGioM99OGJo6{2sO<-8>J2rK^UW36n zZ9|R!%s3i4BZ=jNhG*Ge6BV*PlYQqO^|rZ$#b+Gv=PhePXTq6UTb0>Z%ks=vf(g_} zX|Lp&wUIhjZ?(OI$x{J&v>(eN_GcqznC1moWu?6qtjy12z7ec8H!2{vuH~oJ%JG$D z8$;MIs*#o7&f-|fDrqcc{7vaU6^#cf_5e1RRzZW~+(Akl6KJu(b6U#@l zvJU1fEHa^N@PfrjCN^^rTIiEH+4mr`EX8`~x>{>8meaa0>N^I5)8n-Y zk*az*U3TK=zH8);7Iuaodu%rEMp*o!qu;_<)c2z-eeU193KR zdRr%J7(U>szDrJOn?8I%_>>FS(j~ZV+VBBav$GesO>0Y^l1~fff0doR6#1l2!8Zgp zVR(4SNz*T6lNTf7rJd}^rT9B-9u z0=o?vB9rOU3i-!ba>*6U2M1+e7D%(;nXG2%bu72EZE1g|y~N5cXWD_BJ-}~Gw=Kr~ zE5qTCCaMZg`q<}Xjnigem9{HtIDUUy&Ceef*jI?FYtY0uWrs`p$grsIL=hdd|0%~V zn)_ExK12=hxolv=;?Kr5Em`{bF%?rVI6taAws`FI{u`5V3SBJxD=E&dfs+&2UlXU-Xh+~B_72MUp zV<=JIPh(WQr(>^t~;a1c51dTR(X!}n9y`5S1ZA(fl~ z>ebkAYe+nq|I*;yI@1Xx=ho*!z$35>R@c`SWR|-HkJqReQbG<#|p=!*%>VKp8;`m z9Y0lukC5W}I|OEpF7c%ZEf31GY?L7MODQj14atvQX4_PaP$kk}w6lJ$o z_QTZkwerWYslxIg3XVe77M4gvux4_!M_FWI<$MlxO{QSnzF^MyuSwviV&Ay#dRP z!TdhxB5p2&zA}qr*p>GNST>o(Cwv2%8i~2)q!{z#eO$}FQ{!3|2gvDc!=m4 z&}JIZi0|(kVAwiCnU&60)ebd{NF;7{r(o7lB%-z4*f;ZaMch227L#ntB0}zSBh^zA z4rvwYDsEy{9GU3hh+sov{%&m0Sd~K5pfahoJQy(H=PwU7W2PfMvfuG=DDfOsW%KoMzNVQlsP6bp`s>NYEWU{KJIJieu(@!)$~(MTp33-t+UY*p%p@wa$6XUhrSEdv?olaoaYxWhdHV# z(q{W9?K4!<0*nc^{S4MDe1>|OLis@l5sqq#3*{9WD^^n|03WJXpqkpgQDn?70}ZzA z)Y3~dvL)_lu=BqXRI);{-L%Ui_=_?pb6r>g?sGx!noD99QZ&MlLcH759vBARHNm?` zH0f3KOC_bEl7`RIK%p=vl1A3xzOo2H4>VL!y)4ond(^<1WANo+MG$5|`LGGW5)8i= zRs=)uVa=$&k&lX7ch^w;T;bHuWM*(sd?0))g3;X-VsA+m6xWQ9+KONwIDu3@cUMGY zSu&N|T@h$7h*x)4)aSF+LB*@cNW*L#)J~O*%8O)XCS7AwS+kx!t4r+pQ7zFf?AhVj zQ|YD*UE_jd&3tmGnLna`+=Ob5#DbM+e3<)ftxyIPmdmY5am2ge+$y*fRQS_sh?8MZ zIJ#IC_^AHSjiu}fduhT>y7m-(lMd}_%gzbHoCTO0tb6`pvBhOi`M(Tkl?SK zlo^n*oP8&e?uuaC>PTWCiSmfN;7%B{4xSKEE`WXgo#oL8B~#6eMzpPWw&wBFxMd|V zA0ZMEzTe*|!MEpd3j+n|{1LQ!4cUSPw?k=sG zQ(~^EJ;yQUI*ur-cGr&#OiM3RQ)0}IJ!1~{jMN*S&7~cx{h_Me z%7JR%t|A25@NZEy@v1Udo>EL3El1r9MFY-d zvFuPT;Rxl)5lZE}@&-{}G9MhFA$hQF5_L*!3%GXtOTej^gRqkz3(sy5)wSSMZ1DDz zMiVvj>6&3=*s^*v9hR&SCQq-=?rt7w=yb!z$m9^D@wyp%2f$;b(E z+RX;)$`Q|&RL!5*Qh~hS7?Yf!g6jm420)gjH52_eIDZb!t^~vju%+DYgDv%=Q7?0| z$&~oj;ucJ#Y$@V)(U?hA13itzZsVwz^>%u83%2zH(Y8Jw-QG8DqkT~Arm*d_=@6}r zdTA5U&VHPT)^UP}Gi=mMJB^x&D_pMK_&63+q9hxxM}{gU(#Q`Yq9s3w$o8nmkwz6W z7*b?wf^2oK*ue%WQ*(~IpbT2j@UnyDVNb%K5z1CkEj66-6hQ`E>US$-@YH}`w0*PvKu42yTW6<1YFgR+7ph@FKXZjQ3YA_H0B(@pgHu)P&o~9go>)s;a9 zLIyz1#oYNG&ANWjz+&YzTtDdB$~GG;tBmG4LZ+&nY+@AtX&Kpbf=@ARmYCLcg#0uq z5C)a!KI8g9rt1e)VMtW*>__Du&*qgi@e6Ajux6gTAd}kA*)0|JzLf#T4JtOA&z85^ zUb|WNSGBWz*bEpc0#hm%!QWtkNnuOF#&ok1FUaz|APbe(Gw0E~Wr+oI?tbpSBicQ! zS>gl{%86%fG^lWb@G+fXvscFlDzzo`J?#=7Xyu+h5Gv=eyz+ry(0^-6=t%kOAllh2 z?5?T+m^M`FGObrRWpA6gIMHqs)uIL#oge~Irov%bRWlXS<`vVL0G8{}A_-J`4#$^8 zMYVEDFqNljxuuG#Wxm%3LV;mO6sS3$L$%Dq?Ljk)TIg9)uE&&R<64~iWNd}jpxYq~YHMz#LW3at2Sd>=sH_J@i9mI4{f%6^1bYo~&s zQ+&VsMbKAi?ay=;Ln>B&E#tBJd~P<4ptWEiGpMb`Y^zm4E*Ho9<`+bLKT5GOPE0%0 zCr*x2tBDO6Cd8=;%DYZb*(!9_!~F|0Va-)x>Y%tT5V8};hKXmtK?mg*)IkZ=*I9Of zJRsbZe0i8%n2kNQYd98E#izsFTEA3bF;OjkwRmov#;-@{J{;7~caTRrn+6hU3>5E$ z9nn?6`doT(3w9d#M?j`ufi*)%$arp`;##`rfLF+=T@{Sy#w6Qv>10ICeFgS(d?1{c ze|dRmE?pa;bn2tre-QOiGH`;_P5UM>8K(wyvwer+TGt6uX$RFHtr}LHtWoW(j-X@Z zl{?r##cD2)7nFf2YfU_AuO1>>DvMBEPQ1dQ80yAw3c8%<1;q=;m#qdGV1wxDU|nuC zrXj+hSfLn)WpY4rWG01GjiGVKpGu_L07||1sF66gW6crw~slS$unBm zScZKiLaT%Fj#r6qSL4yclKgfS+KqW3n)pF^wrQU@RC%`FXkwyrg}OBH9l1hbx?zIi z+ubV7b%y>*&JePV=fyqkl#C#DkUXN*LG~Lpj8Gfl z()Ty2s1{rztnixl3LQkDQ9$JrS((+r(A&%9EpL!ZgnY}@$PktMI8kSv*%HrOT;^XL zEU$=(jxyRf0|%Ft`Bn#8vEMbVC9hY+%IfXRKLe>u1=$UYE{7{({Q5T&E0o=!8!Xdq zz^p16wOE;TO^aAn+p@%7(;}qEUpEmLC&FzRkKE(D_<>lw9-lYa{ZzU=F7 zpV2>#Rm909BFd#vZKyyT?x(6s2E|>@u#inI5t242*2R=xcU*|fxuyl3awENlD(cZm z?izGI&!9C>{ zVi%Y-=v}ADCCXc{tOc$9^&QuuF{-5~9g{|)HJ@um^6DVIEP!*V0@G_8r3MmkFt)bWm{HG|)7=^>!{qsg zQ9}c2{1(?wbt|ZxQ2}du4iRP9O)2HyYNGGAe$ei6zdY*ykoMjIRuyOe_>^;Q-Mfd~ zyM2MXz``!O3*39kEp(NlMA!ucR9FOrwILvA&=|4BuGkBx7(3Qjv4esNs0d<=nwW&B zZ!|{K*jx1bdFGV8VDfvD_xH!%J#(f%^OS!o~qXg97W7pt(2Ger%N5pl{VT$WQAfkGz z|Bix6F`|=p(F{FD6G#3{K)_wqA`jn%YdJL~y7nByp2esE&&{}v#=i(WRII{qW=JN= z6fi%Lqw{TIx~OsG`|fD+@&c{rtr3xC-uyfS7e#1(LPzb~NTSo5oFy2{lu2_h2bM}x zbNV~QQ!|(GrY4z7S5x!07O^JLvMhI7i+t%Fm*I-H-xUGB{mE#GxrB00BBBu+vkRxP zC1AF5l|*FGv5=^Bxvku$#*F4BVj&V)zDR_Ow*-?@9SdF3yVocy<9v;CKI66)P2Bwl z;myr4{@lcAJV=B~Ei^Z++c263BxrKZ_9y2EpWTXtKRG|r;5xp(gkSL6aJNi^+UL{` z&J(-M&-2;sww*4!Wg}|oXtoxIfQWOYBJvqPojsx&VjBiiuEhyExNVVGbQ=vO8im0m zxyZ53jX*raRGg_KTx1R=XJ6B9fX5PVcAEcUcD@>-+1aB^Ys^{TwrYBUn_@(*ypzTJ zR6-HW-sNRD`KBcnvsaDi+7_|A5+k~{Mb`e!W40rUR?we}sJu!iQU6sP;<@6riZu!=)BrNd1AL19A7G;p_x;Q zdkNsScu(`QRM7m))6ozjI}xcEE+R3aBTjbmd3-SQhZGD~m$O6Qw`zWNHyT3^$pm$!ePvdrP>SU@{8BRE{KRfR?ASWaRC_am8EcPbTB>cWSNPF zB=YyNQAYk*w~Q~~Dm%Z9iQc8*FIedh<)T@&?h72EA-ypprfbt<_+CPVT!uoBpA57C zr(fX9(eqd&5YWXntY_h2M@%XWeZlbA18s4IZwo|+gDzDGio)?6QRb8g#`D6jVDQM#<}%X__B#T%_1vs z|M+RfafhLqC7#BmuBS0AQ}neR`JRTql;y?{2e!$=eKYBco`q|h*fY5B@eDpkK7(92 z%JmG!^%)kA_Z3%CAB|_o%Ss;{?mWYAY&-hlmZgQAWun(L+B5Vma3k>Xy@87cB^$9H z&1{4>HsA5jMh1saID0WSvM~SQ-tx8~@IeQJB2NklIX+ttWQmQ~_-thH>NYxWLv#3C+;rb2l@W=6u$<3BS1?Zac4uvW-xC+VU@nBi$+!lC3vXBWy zr|_TS>Vj$_jCF5R-l3Y6qdCe3S0Xvo7wPBZw;~r+i&q)sWPDr;2R1Tr&QP6TxfU%$6YVL=~Mv( zv4|i@$Z-L}?HS(24~~k>Jv@Toi^@hiZ`>Y=$roe`g@_!+rSNa|ChD@NiFv$f%|lX# zv>8+e&uw8iN4ooImx$39q;WYijV*ICwdB#=_~l`7TbWxGH87RGJRE_4V4JE!d=1)W zT!CEI4Rmv{)r}GK3x30J2db#5D=1smp={`4HK+k)A&`-kH{$Mf3Hn<=%UfXqmIMaE z01nu36BG>(Te(aY2`nOrjZCV-fv6Czz!@Y6P5$NZ3CDwojoe5Rv2xiwDx{zy3AOWy zAlu#$LFWpTDW54&CJ!O1uGW^pRF~X+duT6&faLJkfeL8rOxXw`FUY|r8YM@rb+Zj! zt8HX(P*e;NWCQ_FU*Cc`;t$;;a7CEO3%q=b*HU%G5OJ#`jFjh|+<;s(X&jd%Om09v zP*^@e`C?au z1pjg`qH`H*6V4cN&P&Kfk1t8%D&!h{$B+Wv;l$M0RK!M*OM3|y{0ACQD`RH2Ars!6TRAAzoe9bySyaeTQslN_4w4t_OxI>%DGSpldfi z{HiErMgIHp*zHG&!*9o+8f(H_9$1pf5h*NCD842vo{hVs9O{=t+i+*&w2HU{B`Bn@ zflOi{YNA|Nh|xYfU?5)m>^0#iJXHQrj(a|vXtg}24r~1;a4Q?!D!vIj11ul*jkqQY zcOf@I8#G%l9&KP&{n-l_FK;{Ys3VSy52!df$@-pxTk6o96sOfUIBgbVv+GmQ74@92 z6MdICE9&ieT}Sn*6RceRGS82!FE^u4hWDwH*Ois$*0$n_Eh{q;&tu^{O^CP3v2cR* zMx%pdp_c`7(ZhPhaQ`Boc|sUhMY;H*7cEIEWb6r%a-M*7@mqBRkF`1c;4faD|Ek$2 z^ww--J*$qjv6u$+J!pB`X^p!}OkBe~d<~it8rS6Jp(%Q<&Euz_ahwZ?A=XSZe968Z!n?~``daBoi8xo*nAi5h^XfSKz-6K0eOF{GoJZy!;2Ms|?t$E%u89w_ z(lcy4eG?OZ;c)F%pKri-m_=LJnJjiF2H0GOA%&!NNeqR+0n?2w_aOy@<BYWn5BybcU_2G zz|`~DDj-BOiIwm{yA|opFrN#4Zk(ZhF*vj~h45avFV!LK@{APEQ0`aO7t6z_oy{ zE087BLu1D>Tq}l52LEuF)Z|YtOaA1Na8!dE*IM*0X#CuTBi+A8$X#6}UgK)97QGuR z0GF)E)gE3~Ysg!zN$oDyGyAo4Z#RA|!?KIF+4k3xpUpxbQx0Tm8y0(=@SHb$Mc4q> zo7_3LbYSA>O5nKNcPDqAx`+S;*P8r7jBX?2ymLXwiwzvgWe{Pk5V|-#roR(nX&!3U z3|uE|cFb@@jKFPc2GcJv#r%F)Ob9HCh`g?C3BxdnP?lj}!uEFMjWp{Ti90JSU+!Wm zN)sGQ(!@!4(|*3d_V<&+W%HA|^ii9zYsRtfp8ANK#Pl2=%Vv0mAJVJH&gwm>t3 zjmaUyVh^K5`Lsn2?tdPy@v>HM*cRMy&=7l5DL85ojdb zZ8>nyg296tSuMFVgFRPeu3NdU$dWgFZ$P@z;@i!QNz`8#cV) zt4>+|Cvs!Es6xg}80U&wD1}V_Q{W$&qCoFV2w#!Bm@CsofnN@B18rFpTa!f{A8<{> zrQ_C8{zMXt!3BU(4^6pe8&mLk zz)r)F$Po#?mb<+z>*~`7{$OFISP{Hb&KQU?$ZG!t*N+yOjgae}?|~*a&JF!(fS2-> zCQMm?uqb7re{sqMjR;|=AS9x1&sR}n$o3`YgDjK}pZ74`(WdjNnNKXdpcY zY~!;xSvt=Xu=gW3ejcuIPfn2?GZ_g|Ida}oKzbws`O}ZF9(YAq$469rczPp5gm1Ay zYH>n8kMMP9vG`2_D;g1g*j;Fr{7r(ta5r_Qj>Zd-CcX&hFz>5EDV6e#)n3XYuJb$2 zFI2pWiih*m-uh6}L4LlJqvJ5*0Hn+B*dRh3PHKFZfzPaCxMmKbxK03ETI19XSZ^Va z5QyPIkqg5ayi&!bpDZfnM^a zvEE25900)c@bH*8pbqtQ172$c#!#ig7cXC-=bnbF6d{w3%LsM z@3&xDfeJ3NQ#M9}&wCoJMN$=#S3T=ybVK*=5nASjpxKKC`M{TNut6qGzkJXdaCzR8 z&4S4j{cm~Ur-5W^!)2r1?cGrPo_pcJwP6N?~HNj$W!K0>ad)VeA@>qBstBOj#!Nc3`vu4Z#LtC7z=La}qI z$ZgIFp~>@9_!ni|<2ADmqWC4Het3dS;q#TVR^mlx(dr6DPrL~c1F`_USWXOyKcpcF zx5_*|Prxezn&R{R3JWiyF2VUlebwsG%}eCsIuzqE7BROHl=K4pcRf&z7m#n27A1Q* z>LzO=)c9y8k!C;%Cbx?K$g~RV1=|IC-cd{CSN&ujcI!RL55LK!ynwjs^B;1-fK>dW z)$k4g{3DL!9_B5r1V$h4#QEeERihkFCI?kuiHW?1li)@mlh@n~9b|%k@4JbTMZ5;( z$mL!vfAbb1>1isn&lbAZS68aZfok2Dmk∨LB4t*vh(k?+eJ&9ZwJQvq2|~k)L)={DF{SChPW0Acer8EV6I9#?ozEJ^Uigfh`{aCza=Ysn=YDpV^gp#wC=XBn(6#C&}A@jH^A{J=?G z0G~K0nM+{BjBZ<1lx*A8ZlI0Cq9T~n0@J;DP=fmv=aJw}JpIXwKxxkxo#kU1B77=K z(9c=^n!5gc7y1$=gVlfte%ATO>a!SPY*t{jq4 z4NSK%bLSNlZC*GelOyUsM?v7+mvzol(PbBU(mRA1Hv6DhG0rRU5Z;$0#DRt@ zzLj94QyV^?!;sWP946-|`B*U@lHQ4!LvxD%0N4~N;M)n(_B_+0^eN|| z6ObZF)FG59LFl;CyjV@eLVzbh2n?+$PtpvPz@h2VTZa)a*vH<$_k^0u)PpsZxDV(K zshHN(BB5Mfd{z;RKmAn^p{JjT05YZWG(6v&;fDB$XJU8)@dw@jQS@Gj@7_ZwzV4(w zz@M~?=t`{R+v9u+_x-sKZgnQG2e-LpnLjkdZG7HBbk3cuc+2ljN23DXviFMm<*A63 zE0*J;69KyHH1w3%i3+`XYH{evQ{0gJ=v4Gh$s*q20I~q;!}7$oidg#9+K4=1&PP~T zSI>i$;0|gi_TrrdV0wEa>f<-`3$)4)ynIp-^)tnRE0-6=w&O3Qe`xfUQhs6qiM*wh4B-bn zMhVhBKUZ@&;4wNrp3{gZvE4l%K=Xp7R4Wu{WfKo5p@!%J3W}Kne37PdDKZOfnDX{X zP%jYFX>H_lqKLw0P)~#*(EVhqszh=nx!`-hT6J8mKoDO^l&mh2rl5`p zB|@g$V_5{j;XQ#<2|;wWW2Was(C;fd&^LtLwUzU4wjjHlGJ(7a{;n_l_wh|z3M2R3y71p~NHfYFHE_^Vlk2z~>@+b2R)kB1Q$CE(-L8 z9mFtd@Z&DsCkA(cUcwW-0FDPzdNnEr{o#_Fj*7ZHq!ayn;zaW26UkTOuOQeQt=xMl zU)(=E1U5;cC-FTJ7)Nasic-OLHD^>5!^_5Hbvq+(F@zelwMmvPvNdx!mdVFM+|Nn zn=IESJ^G53^$|J&RunJQpX`9cLeNV-={hONpxp@a`#dKlE-@|m5-{=eUxuXB4i}uT z@u4U$$u|r>WCyMVT*{NZp`IGH4*SrdBpt~p57FvKW(=K4`WRP-lc2nkecUs8V*8Ya z7?96wKqB#`cOXe_L$9jx4!pa2%Z1`f-d3Vq{Ko|I~vf}X7W^?%8;-0 zj5Aj`l^z)l=DACI@_b4b*l{+X=;_PmE^%jr#oO&@8-e)$5NIo)RPwb6tZT5PnP@KI zZ|Ff26x2^tP(KS$Ur10lz9mj`+7fysWG`6gBir%CdJx(@qK7|eq!9&^SPw{E`UIEj zJ1_y|eFXNf{uBWU0bhnkXXTFLa1(=wo>y>w=Gfw(C&JIg8GwrR&Le}cZ2n}AY!ZQLGgf&O)BoQ>98;zu=t)D$5qCLS#XXi_#)-oLAkN3gF7i>JSYm+dA=LF zI`XFhOZduZ9f$ihbLugX^;iEbUTqZTYCn{U$PV;<4zK%hzIFgpqd zf@cd|+iXaL=Mw)m_93>iPlt{d3sr*d7qaZvp!89Y@No!^@?Kl$2Bn+)B3HskrOl?* zgcHeh6IKp10w$|R;A7L%JaKY@zb0L*!H4>d68;A2vQ0$!gub~0jUdu{AMBbGpLxRN zGpLU6J`z3zP23I&LP-;^f>5P-=3*4mosw!tNRDieGy(Le$pwAs&4G^rVlutp3n^>D zdE-hze!24b6>1a{Oe;qoye2||$-&VBz6^lAb@`?072E_PZYh&3c^V-~RKNi7UrJ*W z2ubwWIEiSF#SqVHtK@d-3a9>xXTW8w;{f;x9U(+MlQ1T9fP?<`Arw&Bq(>&j#Hgdu z#o7Y8I3K1@Ebx{y6XJyfUA|t{HTYKw=UI#i;T*QG6lI{^PO^+g-mb7N$G4+JM8W?< z09FW^;JqZH=q$-o4B=z|eNFWQnO;~(FCZVVsmvvy^=S&{%5_G7Y2_mZbj8IXcx(V& zVGM*QOr&;MYBs7O7q0OI1=5=s@{L ztEBQQj14AYwgTiffqa%42A93eB0{?_T=r7*V!0ZM?iX^&&BZ0i6=%|dih5{vVXxSY zcX?)JlD@0xsZT>x(uL-55Wln9eFd=*L6S{7*vikoGV@Z+oC8>Am!c zTHn2$NBSnm?xlfQ?ngHWK=G8-0OC7YVj&#A3E4j0MDE7AS`E--P6X4j?*mZWsHoBLMqe0;gb~myiz` ze<5wdo90mQI=Wk}qc!L-AB|ghIDjO6CMMT&?{g}FO3bVBcA#oLv?nP<>|>sZ2`uKQ zFB(daM={;ZWf4sZac6kQQWK9A=C%PE!cQn?uoy35>3^DC#M0$A3BE=_Tz#*nZ>b%t z!P7a_O5&oNn{rn|`MFwXX!$43^8Owx=rM%rCzEbU{y`E;(jHvraop|nM@ifag&hir zu5cLFWE`KdoXlb z=Pxt>o}V5h68zy^7##k&E5H!3J^n(Nl22Fh-*RfPT11JzWQo5l_c6Vk5WaT^{gJP~ z9VA7NpP>Ys<;04R1@Zg7?Q#|oS>45cP%w80<_^K!@nG&@3@~5*CSb1Q8zMYDy?U%= z@3r*!VwCR{=q9r~-WOr;kTm@eUKa^1aw@J)fgZl6JD;c9V{_7ADdBV$ITZ@rCD}?Q3yyAGML@IcdblK@qc8@^&SplfaB;pN*rpa`r18J)^f%B`# zAy_TQLNM120tBcg4cEyaT2A~$`S^reK{TF7dUm_c?ktaX2QDrOBuzvIQCa(o9v3@)&7U&j{_3%2VADpT0pVUbzOAYl{CjPP+Ocn zG&ljG?NAHUQO^gp1>X{&eEfriZDP{js}+=JyM90sq!qPmJBn9Omyy#7Dw72Au->59 zO436)ybPkRMQr6-wJdf9i>MoJY4#UYH~g{kUrLLt8@_fjmQg$=@q>BJ-wsoHj3P9w zE;+vrBMta~rmq3#fBMnGc{Z5Yo{SEvxakf9O%xb@~%nMk}qB$wSg`6J1VE&1t8UPQ)?saK7t; zAHL(l(EPly9SsDBfnE>7xRsCJq8F9c=3nDlwjaO0mG(COZh8v4<)L(J6kxCiqfLw+ zyHtuP+ND+xn|719cdZs-?D?DKEjWJ3;DyI$wE;`ao{as#t{UBciP-=zcMVndG!2XW zZEYXN`qW|#*T%oT2}%_2GVShdP!WhVFj2y_X6RMIjLuJm7pBjfg^y7r2(=}2Y&7mg{efzetj+M^L6!qo_qJJ7T zy^T??z?gLgW(2S?ESQDD`L~BZhH}d&h293A=Lf$C*nuN6C^;!+;XX^mF;f1|`z4^G|)ObbDA1hG8AX<{YElC!jl$%1nKnLFb}h zXWJbtJ{k($+<5&JRP}`^p|COv+tX2;bh-vAy}waB)R=dW=JpL5+sL$OkMJ~$KM&Qj z=b7(43F zRnoK`JLAntscWE84c*Mb;-ov6$&Ae`DqmlRY_ZL78dj-ork-zscIfK{2CSrQJ%9Yj z&=%-EK(%Y2QtjFT<+DO&3o{->rCXT(;VTT4Zh_@jy!-eSn6^HuCyn(MAYu!PKe9nQ zUPl`DTTtgSa6X16wC14XHBf1ZQpWe7$ZDZNXnDN{P465Y@hXE#VRDPK zt5KDMX3pO%cK7g_slAWd7Hn3%({`eFQFQapwQ>s-?kJzq5T_iVH*qp=;za{nN6Pwz{{8w!wZT!bpaiczDRIi+!y} zK&2gFInnS&4Yb2#rn+oD8zCgOlgZBs%klT6O!v@;iVNPBo2$;6P%#W=?A_QvRj}P*8nD;-H`!`hTUqRH(r5<-t>dae!T8^#Y@8h0 zS_F=*0LR||atCP}bIu3IMvoszV;XvO-(-BB{XnwV&Z;(x=89q@l;;Czu-<6Ic=Etx zo5|u^A#`tL#!SG_s;(gz{v9ghY19-zgL3^HDy26g*Tdr}S8OZkd~YSa*R81)9{_$o4zvd`+#RhVGUuDI!~093~|`;RFyjTgv(!s=Ib5s%y1C zlUfvQydLJTP2g6BPcUevB8y@nUTstbYBMPtDvs`!#z{MQ(t4Pqd#H?$pBP4MZ-hnD z9<{v@j)s1@6Fd)OfvAtl-VAddI}qcR*a`-Mjs*Y#MX;c4g|z}zmyNn8Sc?W3X94@x zhhWWk%lP*3L`!@Xav8{0Fc470Hv3kV;Gxx~#-fE6>;x4TFpr8hDAdhAJaX8-56ASC zJE7fs@^-ynI{P!WubpvPuR7Z}Xy>n_h>Lnwl4VuaWEe^A4FeslKJy&NXb#_TG#JSw zD4j;DM0vVOln&o9BwZN3S{cjK9qEkggpDx6Ly#vHLA5pE-opcJ30mo^}wtPh0&LNek+O^jN(J z>Z&QIn?iFDa?ls!AePY^4T&H8HY0Qa1Sw0sg+u7E0kJk<_*Si1oZ}1q=()pd9p<= ze_9NLsTm=@<*^sq#AH_C+z@AzNu88*Jo8vuwKnKOp`{2{<)8)%Ur$oJ+JO0~%@X1m zeC|Lqoy=4kkAsv7BNRMW3epRuaOh|7#@K7tDdb|+c4N(~Evtj9>EOr~R z{6l3?s-#&`CA}Gnk6-s9ZPC6;krd&kEGd$X-64|JJxeHNs;5Vq?0UaVo635mckV33 zbi(J)Y91Lg$aMw+z1G~ALA+lfeI{il59QF?C>e{feCJqwU@Ua}2OwpO18K6}Sx5S? zh+QXZbDv1#{w2K3Y57cB#Es9l>zKU9LAo^_mu0ZH3LAdp0|p-2NIUZ>to@{&8Qv(2 zFDYquDZPFgwjWaMGH^N+<0L6@Tc3TF?tE%>a-;YvE_GJ{jk)h5>ERaC3xeDYG^- z`HG+67Vp)k{X+|}M%ztJY|5N z_Oqm36_y|M_tR!S3u!Mj_ArmxVhohL(*7(|^3C?L>_(}-9)f|6Ht4WqF)zQ_?hQXZ zC9MYs>3LEN#n%Np8PcKe>9}=$q_jQZEP_5Ym|NYDdpq$K6;N)}2j*L zxkWe>=$X^AaOG2_z7?xuz9a1m6QVAbVDa_gmNsU%iIOH27asY3GGy&w>W4V?_WY^N^~HI9huHy z>QM!8of&z@Eyj0`c{ul8vJ}1BE68y(0_+%daDK?ah>t(oUY2{MiY~qlJD4uMC9`v| zqY65VrwNvoqkBM5)WS^zMLw8NMC0mE9cYP*Zo2$pDcu8d14FHXOJ#~Fz;=a8WJ>nP zGaki*0P+mCVN^!1&MAWH+K4^t2T8A5te01#QFuIGQQXx9CAzCyK)V8xXNztD8GXme zyq%@H{dDmvSER23*;<#|mw@15xz8pvN!z}JPw1-{3wl;eaqu0a9RZ@+MARb{QAc(M z(QWxaBIQN8At-vnl$Qb$;@|`YF0RjTb1`1PCtxr7(ARRI*2(=^hd32U@cz76+Y*)KW&_Y#1dM zf3u|fg)0@n>C)91irh*MGy;HsPebqqf!R20g5=wX?!Fq9(TO(?E1>7-RxRYeG4W_p0X1%Ems;7K znt!Rb08Fb$y6g7O?VSDQ#V}H-j_p^>Rcrz=TwR9VQW!`7iZSjo9iZ4Dh#yQ-nI8~b zX2ysS!n@-T;%Aa-CO+39Zt!B4=nCOKY!@pQ_y{)%;Xn8Y$5)(pjRdUh5#$s%$+>I- zrVNRj5HdW7|FM{xzye|rGZd!hiUZwzrqbD9)D@s{OT0%-TAzCd4M0;s<`q7;p(z4} z?7r+$WCp8{1ap<{sbfR9#jJF0BcSfd&m(W2BmB{zS134X&Ayq?{fOcvqJ0gKZmc?~ zc2_zy_K_v2Ea)mauR^5k4?I&)b|`oc*dr(&K89HNJX{INn&`E-=}0e(vV#bc)KUqNfaVf5xsx1S}JZMCYF(+Cl*h9 zqC?JogIf?p;F;dq2?>~rI$eE^2lF0CFcSBuI}o5dn724}0NoI#X{^|{Mc`&Te8~V$ zNz3W$vhPwcpqEQI$m1k_x(H6?z)OT(>5@)`_}U&QmDmNv$$Lv(=E2`8#r(pjOtd(N zd@|%l4$IMN_oApLp%k}6j)%!O8xjf_cpl%EL1(rD`@`wP%iX0Af(fy0e6%cDFJ0jf zoW#AbPrQXPmRmWACi?OTt!4aFPmNGd?zLLBC`JQrkt2wY_AvWzL;SA2xD0f*NjYI!Qv4cEgfUxdNuElqwEkmy&ME1XxF&$edT4 zr1ZZF7V&JcL+B?FAt9BBsr!-Y31kBAn&97~8ktl9V^JuO zkc)9rA-TbqN+>P}@gI(b4obkjcii|W^i(S!M1+NK$xqfv7|cO5Y|yE7QYP(&rPvUPqdYkVcLflFk6c6_FN5gQRrI`w@Y4r-OHu8B z<~rE7L+slL0ImlB$5Yb2m8v23?LC6DG)I7Osu3Y@PpC|F$GYMD?KG_qK|F=g0cf*f zERg!?XHe`FzV#RaI$oC9bCv$)4^TC+zdVvitVV*Mj%fB}@1kQ9 zS3nFFP2x641d>cB7QbmxyCRQnVNG^Uw|vy3hkVyh*_L3K*#mwa^Z20?r-?hiXIb5jwBd&2Hfu&3NOO z0PP5!baXeTk#$FP2f%0CGEy00Ewj21g`vSGOuWYNmkW4#CXTVwp@6sGsm%U(JsqUb zKJy)gm&<+G#KtVAT z4UwY`gqu?E7VV(}k(76O2$nKD7kyPjK+*EH!}bV{on0Ipnjs`1vB%G=vjBT|2XyB~ z#$ZYX%v{dFx^ISq&W3kr2fzX<=;1OLj3+IU>V&5jqvNb&<4C!>iVB=Hyh zhT_04ivx#v0eG_MhBxgmb9Qk9K<$mw^p6fw)E;*b46Yc6F0&5~lr{<8XlR+eVSTW8 zS_Efh$BZOKb&RO?Ovs99HU$(8&I&=2VB@1!&*BZH60T*hDK7Q(3hF1u#tVL|^ssK) z;00gUGkB{P>;|};J0aXa)1pB)ra^abr$(1F8;XxH+}mq7X+#pbF!+}a*`O{Ax=I1H zc@^U8=t43{*(zv^Zr3aA(d};1|1gBxS*?~$%|RhbaQT%mA_1R^5RuQKo0`z3()dXe ziJhpOP2@Wb=@9$!QUbRkF6}m5#aUWIBUnT2UQ2wo@4f=zU+4%m=;9CVd7+)f^Xe)O z=Ge(2_#jw`d3Z$E$8~58IS7T)sZ8L-;RFQ1ifhf!_DC(qAycEx-@L zBOyx0-L(ci9tCI5ISsJ>VQ1C8^CV_O1GGnXz*GB6R5R3*OGQab&ZRa|(}J4!hB~G(N)d=EznZHWh^fhT159Wp`iwLu4t|$^JA$6{$31iDYMU>sDbEs$;z%HL0qY7 zhCy_Cwe32ehx>0%Rf&|e4nhwx{k0Tj9RM%J=)Bx8i8u>szo~#r@;w$)rGZS~l63&L zMHC!Q$lE)31+ebLf&lWNgfX6mXS^D&-Rg7~uOp*lC9xgitu_p|F&!s{`OI9nG!D9n zr%HPpmG9ma1Yy-(L3hWg0*Yk&5uy?EzXpm1V?S?XaOVfurZMxdooFfHuZ!aQu#BIh z@O=*OeKO(OAU!~P@CEcZ7CZdEU*K_Xx|$29djesgrRfUlir1jKNpwj^@1G`WJr zD`G5r?Kf4+Fc~NAOZzJpsM)Wnv?^C<9y|h^w>+;!A@I?J>ku#`sL-KMu(;?U4pOIy%^UTIsky z#k?E$Fim34GS0>B^AvRtSt)6T|EZzHdYS#edb;c#!p+#**B9T6jT2XiQzQn!)n7vf zu$A9+gqn5nPROVuO~HJ#&f&gMiDR(gX(H-Luoe3lV0vYNWomH1^#)%7ljM))^dtQUGsL$Vl8YM*b*Qrk8<=EUe ztIL;J+J4sADqtJ|ZZfeQNr;>L9|Ex1Pfb9zJ`YE&-S?1t<5c|8iJ{)^wePdljo1WT zI##45t&ynE(NOT6wd--m+r1F$_rDRF_&mB7YzH<_&9oGNcAyvR< zDd?GaRLDv&5oZ|)eyEE7{|;UZm=`7fNs!9MAT||1v62K}UT~UW=ffW9!93yj*T7Sy zy^E?;e8qA}EO!yCVZE$b@e-o(^me2n#`1p%v^glYCa37F;oBy#knr)17J!heC+eU# z8dGLptnjUrGhu;;-m%1fG4GNwK4*ZalfY=MSMTj3tr+=+l~E6(51GFbi_(ZcZi$r$J8>q;8iJq zK^N|P8>K;4OGzGgXix~;Fb|+8igBT1pTpV#5}&|_5w+D~NgUEZB{X4ag3{s$|!X z+=Iv9C6>)^6}5L0wIevb1~qqk0QZk+ePV0+3DkG-@Xvw|#|XVVjzY^K(v9UODt;b> zMZ@Sl;zhx=9)x;;a&h#cFc@ftczBokxCw&y2ndd+O8YyH;HA2H0+Ho+?#gMoES-Ps zt(`TjcK(peBcN!#OVX4gR+Z1aQ21*4~%qa ziu4~;&^oA;G708AXbg6g(88H%l%Y&S0`R_4rUiZ<;VQkiZt~BRav-fiFxU#dg3t2+ zVAj*Zq|fu9>q}TRbIT$yENr5|!t}mBxLk)HtM>IPptfM+2k|E>g%JReIIXxqC=*Te zF^TXbFW=zv@eFD$DFeuF>*6aW63FFT90r+X0c$CvIhak+bf?UYsl< zHU3{8e#wCm;evJj%YP^J9~#g6Xb@)zxqB2JE-XT~mWgJk=_WGjr@64W15 zD<`SzYzkJ+TGEax;MF~}auOql){(Co=xdVTO9gZTzx9+cL5Lq+u2M1?G(*7UFFwh`A^~hj@&NPQu+6CV{TIA^7~lUJ7LpCokV2Ha|<`B!t5@ z3oG3c==&Pw1n~qlN3EK)yaB2Hm7oB&`kBQ%B5%-{l0| z%>nl=Ljfp&@Ijvpf6_MZUZ?-HW=B?{I%XZx{K(5cIOUgE~~JD0+Us4+q3&WN?p{Uq~zFh5q{a??V1U zs}ds6MoUs4qHy?4FpJwktU`$>Xi}N|oLVrIL|qGx0T`3@KX1KM3g44-+y?Be1aA@p z$#4X0*0~S-7NvqoYmfN5D}fW=lFwDi-bxX$c)3)&%sRAlX$m) zT&6%W;FZPL-Yb9xk>x8mTB&rdYQ+Y# zuY5VYGN3x1DxGF(6*vkkj)6?d;+Psxf=58lH6A@(>h2vvvxsXe%CG4jAr!u*UGbGR z5{ILhaNcLmT)HxtZ+I$m-kun_`Ft#xg1@flo+BZU1Qaxp4L%|Y`Uk=}z4~icAe%yX3+}; zbff46kd9#~da+UsoCo!)9pd=~9@NFFB#x2PizOV6P!%IcmR65;`=*hns%O5kO-W@WON-an`r0hZtS1)jt^bg z7ffXt*1v}WIA?+&d>8k?^>i8u6`d^n)?F<34uNF-%=B+@=aFU&40S*tuZFDhRu{ki z4q3zP}bjUi?FKvp^T?kZi(I2$jUM^;dE#wyA2+wpnf^{ zghfYHK;f?J-aeV3m#q!&W>5)Db0+Rt8%>A!w=4pWN=_9MsVx2E=qFD&1ii!ply=ftR+%}5)tz_@6Z1l%FRRZwP@6f1 z)#43q=@$@qGL$@Gz@yF*r|mMX{4Y4_-2N>D*&`-&Z#O+Hvz| z9(HKPJodf&`4RW`o0sXlzasPbePxH`S@N)9ai=FxebTLM<;g+47$*Z#~ z7{8AF3>v-JPR_0!*tqQY%b1+Gu6+JM>qOgI;Wm~Ux-Z9WWM7^N_v010n;A?MtY@$a z(FdAU?UXZzCC*w;{!%lCY!X}7hBrddcj&LVev0U6uVAo559N?mz}_km*UI7N4S(VJ zWoPj!uyo*D{=5EeIQ?OuErwY*FsLD^mHL>(0&g5|N zs~Vfc>*$q}nFJZj%#@&pd}sP*)L^JL7S%9`*P7#4$=9L+W%SA{mwZ=TZ)93Kyj->O z5?DE!#^de0$xh=dt-geq5@SQ+l%DF>!Wp*mH{1+3+FUUqGG z5HoOHn{3ZOons2GO^=6WjcBy3DZI^0PvP>VO6dK_DKzn?pnR+CV4j%5!?%UuH((0q z+OxcuJ%!h2rf_3Hm{k7_4&UXS&s|MLPoZ|B8p^#Q#2+h1xv=<+IO7(f4X`>}FDY&?ks_yxttd?4 zrKK_L?viF3k170>KyBt=UNVI@IiLyE;|^aObO0@kYtUSWnmfSmoPD8NECAy-HwzNq zBKkY1Jh3{YU7l#7M{IDYA8EgH@ZDm@7y99 z9T0SojfQEvpi_ookh27nMvYrF+6TknC^zSoOBAPav#P<_&S!t+H#qAxIQnX=XVx3I z)ggI7+@mjwDFJVD%cWvk5?qWRyv0|C>d|<&T-DxO=U1og)!tgGd)QFy-7yzuDSL3D z1p3!Pm0N{MaN(AQ?&G?_rn5R!r`~{Ic(0nA?`%26Z*tCW^6Rmlxmz&#rtn_KBS%r; zz=V-O*_9k+)97VUF5Yl{Tm={hH5%zvqjRd!h0e~C_HJ~>9Xvt~22UOu^@xG)(&Td| z$LbJdNPqBRz}TV^f-#Xfk2VXqVCcN$1i#Vw?nc+=F@Q9$+Nf=EcZ5nmveK~8>?4Fr zk}#EyBzsIfRkSztHXT>oXqtLv(bPkuBdS<5h>CqB_}qgwpR4dWv27Qnvk3rLYw7u%;P*tH^^LbVmcV;bZ+E0EmkGZ5K^qu@^( zy@GA^g3C>fgU#Gcq53Ss!(bQuZm^+j=la=hp~Bcyr&XJy641UpfR)@0zKQ1E7J@H8 zA~EueMxjTAyh5pv(P-^wo2j+8Vfx|4Z6OG13+uG3nd|)UP%3v(oiG+tx%;79%Pkiv z6L*4bY91MKV^HvgO>V(e`RN!cbOoN3o6z1nG5_!e3VUFj$Jc3E0@lqi2FB0ppozVl ziXM-mO;vP70dy#Ukg#6iwt0UPy(x^MOYoA4HTDNGZk5inh|7 zKX0d^%VdnOufwWHB#cl4mV$cMuZ>I^Pt3E7`%4GqR*w0jW4owLLY9{vqVx3KBc zwqohS|Ft|kgB!mIL6<*Ut`@&re@3OBQ^&=5gMm68n!#H#1<>RkQRU3wiTfbxaScTy z-*gl`jGS@8OJsFcz2I85tydn28mg(}`#_Nk>NHXJq5SQ5D)_=W&S(8m!FdLR5tMtc zsLG+-`$ICssmU{d<{4Q19B!c4$o(N>W`dR5t2=25-XG%41JES6ugaj4#=UC&lVhmp zONk8G?jc6m3%doJO?Gy9K2TyD4+oeh;9ASXthK^g}EsE55lE%wTU9g8m5gyq<*8(~ z49?*7M0u2J+)$^<&;BGX$y2evrZ(S5ZJviV(>w&BX#kP(RMRE2ad@I6=`^1#4&#YK zcvbEYa)xWnM9~E(6vy!}f`w;t;}I0TmI#vT++%hLvu>}Lm8thiXWM#5*;E*)jH}_9vhOzPaFYGGRWD2`d_^Ta~IiRqs z9|eb`#};-qr7{oyC2P*iWEYG!mhc~^TJx99tlpB4nUr-h)a8FJqq2HLYz!3U$FTa| znQ@s^{v6gbg>?j*&HY$C{ou3@Pkphact=bQH|7f~!_8Kv_8oC)ob`t3&fG0w*l|gt zjbUiJ^vkrRpu;^dqTPyS9nP5E7MU0xkvq)1sgTVbmKh!%kLRIBu*QP*aV&m6>u0z1 zX82#>z;kOOi`>t|c@fsYYMfUr_}pF$9}*u&P*H7e2&*a_WrwgGU2{1;b%btZ{NwLs zZx{jUgc9_At%btT@A8Ac59e95HY0alE?2R-LOlvTHqm1cujqf&qB9u(lF4C=um3Lk zx`q3U{o&OKUWF@jL$Md13OB7#w=aP@`9^G#rZQexmOugk(8@%h+D;UBIbsP~o5K~UN!?eZ*WOA$FQ160am zH*;}Zqpk``4C}}NaKCheGlUpDJ0{e+wtDU`@EOla?@AAxo~VP7pGLAYAT1U zF~q0A$UtTqw!o-Lb(>r@#$oESl>c^29rIZG(8l|9%d!n;f76#96VJ6 zY10_oxAbA9-5syQaKq|0hV=r#oQAci=a^G_jWZ z9ptcs9Cnby3350=4kyUr1UZ}_M>fcj^>bh}YM7W2>gQyy8c<_imTaOXy>n$ zMchD@TnlJbFeql@thdss5oJIVf89?HWWtlf*j zm3Jd+vGYf=Mmi#jKg=rgr?cq1it@~uO1%KyxQ2-XDq-X^_WPumP>Cz?_(Ys#jVAKd zm={AvELdgVHWR3Og?J-T>#N_4}W=C%}a=vXZ*UEFdWL+l5IIO*nWW91vvx>qBjc;Hj7qY&@;iF*r zbv^W%SnaS%G_Xdpw1y4GP@067$6K6CFPNx7v&7rKlrO~_7ae{PFE=;N$jo=lIp2hO z)XK!SybqJ7>c(gW?>6|E_)Vw}%q7t4RiuW%l9_dm!92cm9>4(aK#Z#FxfU z)5;E~8k<=3un_-#f8(&w!TpX~_>7SGWMdle>C=Dd3pY0}JO1=T%VsvR@=izxFm@sA z2>+#s%@pF#r9gP}N)Z~$LN`FlH;1_`h+QSb7!89R-HkolINkx9ZS6FEKpd)$Y5KvC zGwy*!x58u=`!y5eH56oA0Y_P5HEkv=>|y=x?_lMv!`J{Dh`d|~(ORK(;`5<(GnXbT z`~gf4;#*Gztha@};$mQhoS=^|9cP@bodDV3W32{{gB*LDjtSPpO2+B6xp8_NJh%gv zV#evQeoii=_r#MJ%`j%hI6czODU4=4^LTYZh5Jg16DsuSqr(_I6Ag*oC&c6m0&-mR z&)V%QK2DdzH3pgDejx@|=!f78kyYiUuowz4R3Q%t#(E^fvsmm}y?+iXCGv>ZlT`kL z=++xaZ8ko!V6mBSbDluj5}fG%DnTSJOoO?g3`mS9hoX!-@TFsE8YITu?t@sU1H-7XV`6~6 z0WpO2ON2YIj$%_MXKNMt$D|xhriUhJ21ZB>;4otIi4;quK3+>)6cvl*;Q3kn?~vMf z+@QgPkyXsNC>rmZ&xf^M6jf77y&SJaV3lVyqfCc+Z=^W96gD(p7xLLSM^;s`nt-mEC%w3MZ9U)HK&tZ>6oLq+EYHs2g2^ByEIYG*HNiw}~i^j@QcR zh`0}n-i6pqDOwZtJRWl-=$Qoz7HYjV4*IeL^*Ki)I#a2dy z86Gk}yD}0JzrgO3NTdz=dPt@)UW;0mnHkMWR^m?BTIxSaE4RK#z%|nALhPo&Ckk&P z3P(pm4!9;k%Lz65BcI406Op5%;^o$r39uaM@2RS+HJF&6Cctf=QVqs)d4dDNsNf^$ z|5^LQHLf2HgQ9r8L1-3?-;LJ>TJ}>?RFrxc?%@$x_P27tFtQp%V#4tG)S}vK2kURA z0b)d5=!1A=f=Ilb&aL{}7GR9XqXHOb6GUO#c43UDl`0A_7F#6|I7cuZul2KmV{wuc z>k^s^WU2Am0&x6ZjBpI9?vA;{#2W%~&INJ`{fPB-(qXM<4rKl25SOfA5#aSi=noEd z-$?Ne=L^O(QCwRw6gt2_jRU`oyRlA~O8a zfu(0XmX2%^8uZ!va!pQ|LOddC6NT+e78K4ppzy^ZkHSZXTo}WuRbEk8?iAojMB zQ8)(*=di+1h0v9E*~E4M3PT+R1kTwmfiDgSyexsmu?|}(ViU-PVfO&MIzjZ!yY$u9 zRSB$p^Apme?nh+g-otS2UtstnHe@~s8i$TVSdo85z$5Y&cmxJyRw*v@EH!{+F~4+> z1tuXn2|@(ne@EJ-hJ5cX;u5Eoh^q;|)aFYF+lsU&5PsF>q7vdXLGUWlUOnE>wAJ5( zwkZdsWwRD0JMVcp`u`~V4lpUItnIq@R&|`|Vy1gw0?@z!GcbX!uBxtXaz;c^1hY6G z41%O_0OOi*MHE4TqN12}mDM$e6%|kcv#yIdtODw)>$;}ZUG;y@t*Y)G!SDP2=h2~0 z-MUqE&wJ8M=Yq4Xr5~f5UQWG2}Q9#F!7&3#8-4(UCSVL4MYLVFB4C0BEIHa!@zFe z6c~q9fip`n202a*#Bjoh_d`7jzd8mSE-wL|W5O+&f$ zE8a#9t+6c%Lck(%=3T^hSY5uMR0DG}U~VGwcva3yJNsiU7rXC*^(DwoAjn8=A1kG7 zZE0BE3e%O_hY1RDZ)?cCfxEV4X7(?(=D`f8RI^ z{rmk2Ze%Z*Yooj839e;BaK(fG=1A3} zWO8#}>;SXS3%eoJZd5c+Dlc)@$+&i5Vrir0wCe%bg^yS_2eHEg;jYffy88QjAS+~V z9|*hlmR}xjwqQcat^2~@ZRG13^{IQB9QalKqec*sx&60>*dg+r(kF{}nmGG!4a@w% z*|;^7lTFAHYjMggSewm(wX?Zr6sD5}1@JHmX_vLFJTJDyT3Ff&d%vt573h=87O@s4 zq1=|Xwi3avjl6VI$n~l-??Hm|+nFf0uPzl+6*m4J*a!^~gK4KsS9C33bXA6vm@Loc z=Jq4H$Fc#$?Fj1HQgqen_rg7(1wmYLr0jOG2gl%}!jiwps5n~*WB1q{_co+*8+f@b z?Jk85w)AO$zmx4cwRXLe{b4jHy;{aLY#BO~+r{?5jnULT_cf;AyUK0YUfTep%Wc;_ zz_8G(fin6Zrf>78sKvKS8|*Nvk^g1m}PeqWU>)<8odnS=o$A7Narx_ z#1~QM5Sd(~-g2L^e?c})&q$cNClQA54W>(!n11F-wFf}5tM9|HW=plTC%|rY$D90Ak8SjcR(lZKo8?A$=|6p zwoM5>sq9)=M!dhdlnh12`U4Az!_?Z0{e{HM)nxd9W#S9?UafYJ3GfrGBy$OawGIt7?o5_t(N^cJFb}%xtOxNyb z{0#6m^ASMDCFdf&-2Pd{W>W$PdBEE#s&bd)?K1H8-^5$L`!+@8w@TLD0oGnpO04~v z_o0DKRN|Xt(Vg&c_e$1gjXSwkYglJgu%{kGPEP(ipS!Qgwod_fvo^Skx~EfJ;_hE0 zcl{0=N?!80dxzxiB-je-zqy~{ad)}o?n&To4#6*#9bQ75C+;3zLJ@>b%$=epa!&{` zf|eZ}tLk_^ug77L&i8^p9t})UW4DL+Wl@fF^Z2nhs!hS7Af%U8u^97q1ZTNyTNY%Y12EX2>8Zy(MPL7-Bv zN3bg6N?qlz42P4$FdDHpZC!-%D#Lsh=VU$N3Gd%L_HuFQBXG9#*uV%pmiYSt@z?LZ z;h|4G0!EcUcpsv!MdY*^_3cLx%b`l=5%_#5yjM#0o?63uj^MDwfA5dH#(C*|Tt>bb z@Rv_fP0TI39L~BN=HfYq^BBGtRrVCM*|0haZWMezL#CSsSJ}Tu@VE+YiWQHLWgy`- z4ar|#G7^j7!Z%9kT^no4m|*V;8UEhRd1=IBZ`YAvFNyEtQhaaJMcJd&v$(B<_Z=w^ zMW9vqa2R=#-wm?+MspMVMA>~q>GN0wWZeuF4;e`;woGENX|JuwWh@I4yuz2@J$VVX z99M#$klqd)-ktBh+0=c*Q$O%U_)*E@3v2j!Bav^IiXN2DAq#P}Wb)D)zG5VpOl6Pe zdAvpP*l}gJ*3P;H;?h##N-<`6t8) z@h6S~PbHT#X_yFHSsBAx>RTj}uLP6HM6Bw-6*!yR)gY}72ce!sSTqaWwE=xT) z6#a_Ht82vXHse?p68>T)`yIGRe19y?dMwVuPLK`uSoXE@HbcBZ|?udU&rTf2B`+6l@L2NLyBP~%AF0R;y8ufxj6&|qZfxp zl{?_DlLCiD$>S6a+u(27&ZMTO?Ay(OXNB#goYgFRGAnm{G3I!5PFf1l_Bb9L-h@Jz z$LP#qGzXysJvqBy z63UQ|AA?J@Rdi5ZO6BbLPm~{j6@*Kes9MN(9xjZgqv9u5@)? z))9#Wb}7x4xeMdE^!8oo0q+7@yA)NuS4VyoysEd6yNZW@4yxa55re`FhSOc?V(dK_ zp1ivvCy^r$s{ACumQGaOJieqx%FvAQA4lZLO9WzJ6-_{_7&r`)_t}o+^w|Aoa;>$R4MJ?kEHVh9Y44@dxI2{eJ z3xQ?llUJdrymm#};1+_j146t)s6vUNPZAj4{L8S~T z;eUm{B)@YD&ciUa;Aj~CAc8GQiTYds>;6%neLAPS(XEC@Cmnj1>Aedtr;`Zk<+(TX zt_M*GUlUSicFH*x-io!LsDz3P1D5Uw;t4p$1act1FVNe@tLcs)1lV~Rhw_5%f;T5o zomdS<;!``7hww6-S5Ys|y`h&qjT2#TFOvH2sqF9APYWE2x&;A2YAaecvV4GJKZCPO z9CIsg2X!X#)1w;5bb8MaayaO+6Qgh#jJzjZ!QX+=^lF zAmdNPkym9WJ}-+WG-UGvvQ-K6&fr6E6OL*)?@R)0D`xU=WhJWF2~g1D6x2>MIsM zr=r&7sP&mwt6vV^Q}TI28C@3i+Vw0_)Z>$aCh|KyEBa@^jY>RPUyTDe{!@;%b|tu) z!|Myu;k_)k8lUK7uIs^4|HjI8Y-vNaHF(>9@ivEAmczsH@0M ztVN~EDw?U1=y7ZS@5&1Y-X-vf>C{@(8ubIi$B-0s!3Q;`@j^E6SbQT;uEbR~_`l&I z;V4wx^Np+sMu+HO|D$viYF+eC?;~ZUUyDa%ZBPt3&Jzz*8kROv8%v|&IT3xYtUjCC zrs(T%_Q~Gknw{)(LVR+ZwoQ@2w`)GOfgM?68z$$sDdAejejcZVgRD%W-W8~K%v5aW zdmc}~R#8yIUqwhcf(kA;YR^e}7rsJtr7KZsCslfZDrHeAFCA3r1yrg- zr61q(D`ik=Jt|dDr57Q;X}rH7?Hi75FdQ#}S@@t3TlW@raQ4qSco&|mUxjKLsoG0; zR~m0G2nW6EB~-&#hikK`mqg^_Zes7NDr#MgS`VUDPS(P+^0Gn9$l>j{CB&b5h2BM^ zWX3h9)%$p_mI<~Ngu{E6iCgimG}Qt(yWo3}ws{*)x;Y#>9PqM!CN4LadBfq>OPU+- zHn!8_M+jd{Px9=>HrNfk3rF0zcEf)cJ{#|{=w0|JD}h6v;XtL_Hms!$@}oMFWO$XV z)bA2e@e+=KK&cqDiB3Z><2^MqM*{!}HJUKhbEd%Ke|T?xNd#b5aV!3BQcWv^BJ zGOTLmYgMf6ec}2&{O(29tF!kH6@Pt0J&fy3VaDfl!}{e497qIuRyP4r{hBAIUWv5< zcUKL}8pbu~y<;gc?mVQjIct2utIccRh_1nxe1R=f*C?8{oNhEXKsq-l`gi3|NPbYj>W@bw#%fZAHsDSKvl=&nZtXJSL*%DPDN{3`3^`&r+9`nI{ph0eiX zLhhs1MJbGgcH- znxEr*j9dFF_uxnkL_;9{&>!nuE7M(ZrpLwo`3DTFiS|&s!t9{7OrJ`Vx1zkkm#)n?~C(- z6utZd&L(ctM#Gs*eQ$1sdFr`|)CY5MF4O?dyHjKqJ%{mMqC6bHZ~X!V>ja$(6jr&b z^sKGoxW8eVt9PIFhu-g$THC2H5xiX zTgO71F~ntjz{4Bb0qjym{fkNm;e5|A-HaTaCEsI%N#i+T;{Rd)R*)j?r3!dhwoNHN zvu)+pSw^PEyoIMW&YpAP?8{Uf?3y?;uJk&qaWK{))GJ3kjRV4Z_L&tOKOHv>IxDj6 zX?>#7WLS+oEM>r1kqej-&yGweWdTHXU593~&U~f2{bw9;s?=3xaDw3GC_nWy_I!<~ zCw3|Kh63HtWnuh#h1#2W_!)&wsKLsLzdjRw=o#L(MxCzUd?MvAg;yZbK8=U4X6E)o ze|TA&&tq4PC+I)`BH;kitEZ- zVHMX;)0Eqc=xG`j2EWFmr)zvi-{3nuyxokOm-Gi_Q5_*+`gDAnp$momV+ft7q;FQc zDub2S$!d4!bPX`nS7x6;o*}I{nL9?yLYj`zaH4V$Ge>N(5;;bL?Zd%GqZR!ajq}$y z_8}ZYxv6{(;|}$Z^T6Suj+6P8u>+rF->{x$=8AG18eC_lh`ZTZg;!c*0Tq4(*F}@| zGkZ8YWoKXxWFMD8cf&EyK`vN3g_|t*ihiW3@)v5v@ll2o#lF*G%?e*qjZmH+@SKA0 zX$HG9)luHvqj;y>e*%H;BmA3Z{bK922!A$DW$%gb>pe>FjS2O#2tOrXnwcBn2N9JV zv`BQNykgC1W2!1Sl-?>zKGN7#&x&2)vWCOo)K6Bb*d=$Dv?;N*5lCr$(mF@g(2-~$ z`K&h2Q4!hxNW!UK{xV}-d$FCY1T$iw# zkxB_;-NzECd~fNe22m6?4R2Nb5h3Ggyw%5KW{D6E;vUG$L>5-B5>B-;Yf+?mS$cLViCPd39+z5;A}b^(&Lp{ZwC3IJe7Sb z$j_oD4X_4X4ER?BMQlTqIE2{d?O=E;j-)i+3F;4)C6(byY>^V%5JG9cWcn%qZ#NEL zY>5)NiWZmrEZK$Y7+iUXl`MRN@9bNE{rw=8!i5x!cA#+_i%Z`R>Wf54+^GIk{UE3< zM*kp#>F7%9!=So^7K;8eqQ;G?Pt`p^^;Dw2j;QFxeiIR&1l7~&!gun*_Yv_~P(4#9 zZpu1wS{Lz;pn8@^Yy4XU2V$z{h+bF?)kQyx#j35j`db#8$~h>4^%B zoy&QYq#%;0V14@Wx1=;DDmWKuWfLozDp*5IJpnqaD3g`wcfq=p6oOp(n*g?u0)IV* z;ZtM49ufifjG$#f?A40(p{|>kST##$1a%D|R70}c!U;iLLrAfL1A>%=$V4PyMbiHc z@+{MTuST#&{Kp`>vy9>FEM!c;((wNV+0;@dn~i*UKL^TdB|Hu=Ms&F z*aPxV1DWXx=L(<8xLb;a-hmK*R|9_*ch)zED*X|Nz_5e_IUB?pfRF1mbc#OvNMEE> zc`~qr*i{b!zf)D&e*)ZXFNL?!Qo>BEcBjseGlB$(dHsw-%q9g!)qnb0D5#thWDe^L* zr2yY0)q@iH=3ry9W#AoT`qSHxL`Murn$yHUeQaD~NgwsGafXF*67{4tO>p%ERx&Qm zH#X%lk4zKl)T?0mhhqDc@0cP=W1Pb1d}cKAV9Ip5Hl6*H zLTBKqk+?7EAjNKd25B+nZQF+9HUN)v)x>wx)o6$T_>0uAxOX}l!A3I<@ z%t`^jRe(PllFCw^?JY{1I1a^(68bpw$clzE{Ah}5YOf@k?h&E~j)TY(KOIm+>>cM4 z2tO!i79NlwY|lx+Xk3bgnN&+Xk5F%lT@feD;bSG}%?Jyoi5ygOn$VQZ4BAd6Y?^=x zbCtb4&P2+BvX@T7S&AJ#KTEovO=Su8KMvMHL47JS}NxyLZ#D8AgCy$gL_C2)?{4JN!xK89>CZ$1fYkI_X@wuhIk;pFa|9W7Y+8v zA4d~8Z;(fxEXnl)J@TkgR2m!TA}+**BZ>Yx>q`K5g&~{{klUsQIm#mJRSOWPJ?izT zY9;%-RRW{GMcM;>OG4#69H=`W4{u3u?s$lA0pd?(fOrXx_V_ST&=nYnQ8&eHB=MTY z33CGi2h3yQ&=L45sC+UF)P+5~n3_J!rP!3=lx>Aw;Hj~D?_)!}((tuZTICuG_Vy4^ zT$~Vg0l@EG=cUw^$JjLg01ZJFVP8IQ;)>Du zgNPe9UW*3tH{%360$0HEW;~fDT`s>WP()p@0Ti24?pb*fdU4Q|=sMA@;SG2QTP!vE zVU_YyyNYgj>Egj9b}5w(NDtZoN52_fFk^VIx1Q+!FSy&%3^91>VYtR~>$P^LkRaX~GK-_GK zk~A*GNysVp7!04124BLB(u67TZfwrjcs|s<1LFPkQ{tMKhAu5NA#w_Ae8ltYr^I<8 zy@8eD+KPhQQUfvsc&8iyud|`>Qq!MXt4V*oAt;bc)U)PY)enryJs=A*A3o1Wg)s>~Z%^Hx}dI<2<7d z0#e|c`+@YKo)oAX*SiF|edNqndd^(O5B1S2-7;6N8=D=o1I|gCJULM2Hz)bSXDdsT z@HD}y$~{k>0a0rjYbDNsK!=aF3Fp&?mxh9DiLB8?&h zA&x&J39~(YR>dpSe(1Lww&7?g-2LEc*QVo`19BJbMEZW*gS%f6%#N`BtMN2GY|yXK zuE$^sDS+YhH5%1?)in{EpIU z5#S$=BfyiZeIKr0Mn3%btY9~+qF)rbjUDUbZTOMfLxcU>uE@c-ODEpTE&`k+T^zYa zI&l(oFK~lAOOq_Vy4*#W)vN;>_>JTIC|v^1Paj!i-Fd@MpTd)PXUe=P5C0&k;&)|G zn9LjVY*E-2VOLuuF1_|uZ>TX+AU7(~m=oUb2l76g^RFi;`-|G7iX3nt02enCEE4dE ztMLn}o3sh=C)T+X+k6H2Vd>~m$ZlIl#;M@K<;~2$`QiywN}i1Foi>&zMC}k(qRU6Z zO&Kxi!t3E`z4$FB3b>fYu_0ui_>D#$hGi|7bA}Z2;RB%SoRyW34$~oC zI2nz4Xs*465VS)aDi{d?E+M(DYt%gtPp9>zaJ$!8>t{kGF-v%nT7u3Qn16Vw+gC&9 z3{>Aj=M2;)zjG%2Jv*z=H-q#H>c;l=CnlnA=92UJ`fT!icq$Kju0!YsDNY@ryt7{) zUVy#IhPz%C^PD*O?poV$4f~RPRYjCfA}3A(1>ufuyLpSvoU%}!5S!K%JUY89?3N_6 z4CtyYpaK|(Mhmfs~9f))Zf-@~ph}Vl^HvThX*pj|a&_+WJEIEaI zxP_oin)aD12yPm7kujSbb)jHALuk($T^zE}6?HQ3mk~XpcQ(dAsLm>(jv}-YN*>H* zD5Ndwo~>Aert&TlV06!Lq9Z`$i~Eo!gXYO{aEZS-#;1Rm1}*+|Jkk-v2J*8HBXa2! zkZ|N;`Q>zX2S<*c#}zRdxb;oq)##$-q9NsyML7JV&_mBhZW>$cMQ)_*N0D(y2qc}k zopUko-ZAbW9TBG<#Stt76iZ_uV&UV>fB;XiSv@J1#uyo`hnvM8=KUdUTXn8j@p6k0s;& z(T*v~2=((Xb_w5~8^002u@OGx z2fV~8kUvL`ybMwlcL{O+)Wo+rqsX^405!7&kRkYo|z-NTNgownNi#q<58JO-4k~H z&Pejs=!yx~v!9Un<#-M^2f3adn*qo?JW}k-J-EHl?O78HF3V1j?;E>OXof?OSOM_j z@wYz&FlSL1e*>>xo2eeV8v|Ej#EEX~hBio(PVodVrG6Q&nFQJOiO&yql~|Uvk9YN! zv57^3ATAmYNivob=-`-P%@3H%U(pI&dS=?7qA&mu`P)-k0M^@a1A=JNSe2 zLM{~|S5Emj@Z=6=ondaGXyC0bhk-Y70L}qZtD19m@fZvafoc@&q$vVVu0KK}EJ=z5dQl1URNy{mwkT$)jPo}=s2Jk#HuHM_`sy~4qSk;C$dg7oh zpxZ!TNfE@H;u<2dWZ(;9t;GW`_4QaGK|`(0SoA=nZsz|QwPlNZVrh+YA$KI@8hMB_eNhu4lcQXx9pT%I*(kr_T56X zRjizc<1nG)+7FUk4KfEZ@ZW_nyJDS3YQM!V5Leb=gPF`%%Qs8j%uGj$Ocs*LV?oQbuk$FLJwD&#TCQR`rH&;>fS>4Z6`N zf`ptxRKhaRrX`GuV$3Uxh(JvnTIxxI)}0zg1T1;-p(eJg-}F2Ipem?l>@(d6nca+1y31b=>d zpdpvRk3=*Ne5#f83PRV#FOg_7uSnV>q%tvRYDP$Wu1ze#sSIi_m- z+Y8lQ@kWw#zw#=KxTjB=uS!~uKRg~ZFo$rVI|}!bJMQ`iw?U`I)w0|_XxNnokWY=5 z<&LQK{5!NB`K3}DSjnkzKFXV6Yn+waGlSj6$-g(pV&Pz&lMM&;<4F`wmijM8UL@E! zwL=7l66t|$TAu0*$`uJJs{rL<>h{vu`IiJsLK*}D z9Uf`z-BMQh0GgC)w$1$lei{J|yXOLa8UVl18+c91Avps9UCC*2{zZi^!@0dP__fo} z3id_?0Pkz3!a;mOGyJ;^P~CZRIU)zZ*)e4132}Ec*1(j?NGTWoiGETDXf)RArPmv2 z;PIeq?`4BQV5z17d*6`^3?$|GRjC)m<4$4_*oATr=xVT=59x+yt*rq27A^pTiak65 zztNjkEeS>IvL@iUeMQn!d5L*FI!l`n(gi)xL+RGCTsNKnBCRE%K80g$0;qd)6F@!P z$`hr8`sC_ZGiTj7Ace~7h+QRMKvPo(5tu-4A0jY_TA481B5e@0iSFCl18RNu0}xFT zmer)>^X9vhx;g>KG15+zXr$fMad$vY0`5>JUD~YuM02ObS=JkX#n*p4gKrar_W9jP z!$Ee=Tn+l&f;qKC1f#x$ton)aC&7Je9&XuBBe+LNxaB-MO{(EiE^QaZb6L{HhX`*> zs*x@}&q^9X= zE}f&}3{E51Pnt_-(;$k$6d$ggLD#0pYu@Q8m}o~Kopq26@quO<$F5)no}R->S38pk z@sHyAO3bKbQi+hj@6puQ(QN|MlaPUQ4l&(m0)4s!9VNdm*8IDDn6r2kJKy*3{jwIw z71F<_2HlKFwPygkW3F_k&ruk`es2f&tZXQP{dpJm=fU4kFzjvu_U99u(Uw*DThnl6h zPF&mIP8^&Y$MTboQC+%2RG0f|1{)(CdAuPO38J$W3F@<<=x5KRQ;9N!X|;v(p9aE@ zJ0t`b5a3hi(&13J)<26gq4ahv56$6>7kO8X;D1hwt3Y zKbUyJF3{ks4<<&)Vm1Y5R1#f*KPXq`$$6E7+YmFk7f$siT2%DZ@a&1**fYc&QB8ui z*PT}z0eAik7EELf4{_WXt;^-W%&%|NXHmZ`hhXkC7w^}A_g9UI4CW%QCD?N@PtUFU zVb^OpwkF-LBG$<}!ZEG<9&&`@iUFkO8Ney+dIpUp1tr8MLe=x|7ZZVr#0GW*LpyQ3 z0)Jdk-QHR?o&os1RWozL?o-qo3Gc?{tRKC3h%b})>&r0Na!W(6EE%e0arR?bA#_6` zI*i6Gi;HnlE++;du|Lk>NA@7o{&c!D5@f6AYLQ^lI0=wnBq5ha$H*g+2EvY?Oqxyj zA`LRY2jZ~y-X$EU=AEcSr&P@_fVeo4+9O_dF+W0L{wgrHfO!rFoy#(p3>-nSk6T?* z>v(gX^bI@d^!fQ|Hay7FaLdzh5qpRLtsjtsF^D*pV#k1eir-H$n)P%?H{be6(|Z=;osB&ZH97e{ATLBkKgLEq~-yMr}3?!{O?r zg0PC2?6PvQ=%)@Ou&91}E>7z~R{NYV*iy$TFK%-!x;Bm4Lxy`A`SEF<-tJ3vMww^Sac2c6w;mo)3QHw1$79$} z(s0qNntUw#_6{id0QU3eF}!1<(ib`63v1zkJNv6Q087B{^~YbmwQvNx@a7Ak<0Ug$ zi8SiZ42My#%cdhicvhsj!g`0kSlfI}R^)8YU?VdN*>`Ee0jz|5LMslw)Hgyp%1&?% zJ!gZ$P><;S z3(7NBhw-efv;1xvp2pYA$e*)F0>*dH*q#qPW5d3RNz;x5(1iY*CLYLVZ2C3&{dA~0 z8%@w7aErW?U~_!q4h?54+sY8c0sTS{H?5UVuLSz#xfCaVPLTz5)Uj5kV9@6jS@(f9 zxqK1}*!{p9Uq(P^k|1T5U9&3p0W7eP{8a(=J5B=ZM(mGn2xs^qoMF(goPj`X|BK<4 z#d&SUarJ$1eiSxWF_V2HBe>FW^`nr^ z3*YqHaOHuXA;fRezZb%{dV|z*$UstdZk_;@<6CW-OdWwi*psR0d`+5Q1RXe;lz>+@ z1Lc!REZp)>`+McMpB%;U-S7iyfvH(Zv3KMcb~TCDuiUv&6u_aIhWL&5UAuqCKV${S z>;1T$+<2`+5gY{J`}|BrZcZydk^G@pHG#}K#T9Np4UHw+O#Zx`K6ZaZpuO0<%iG9* zXWXM}rC@lgW;#0aCKvF2o|4C;E3d~W2Mx-Vk)qR}T=$t}xmRh`Ytf(_#dk&Ks{2eH z98KQ*iHT(3AC%tQBnyA1wCi^Q%_bq>Idrv9#rJX!DV=IIRfj4 z>gl4uEuy~l71@uQYWEK{=I6X|I9T@lIGh){8H9Ozp;z19${r)LC`L{usMGjPQf}=` zUv1AM(|)FJ+V`P4qpZlA%W5PQANA10rhmKcJ85A7uN$kQ$am)H-wfUO<_0FwriD>U zeX}lSQnNC4V{&OH?~W7NCm%uToy&UaeZP#{EW$G%xn1Xb^L~aOxh?ZA;RFkS zO%g$o+xdpAP}L<TNjS!BV z=PzrA+rGgcYLziu&WqvBDh#!zX0jpDnb#gq&fH1CnOi2DIhM*mo$rM@-|NM2DssMh zzFhXpV8Ai>>fJQ>1d7|qrss+RIPB-anu+q(ycQZm_>5_8yf29f-gR-yDz^U*SoJ*C#`y?ppQy zP6kQ(dT#lHZ@&)S@*5d|_&ysM&_O%$HFXAN%oGG~xtZ*XNB~Mc`nA%MAnTk9lmzv8 zu;|OA6ZcM8B~%9^Xn(TN?~U0My$wdt{_oxt+usklc)TY?Z*(oy&5hn-gM?V$rgjeT zBL?c1V>0#1HUZ)<(vOdVA9v}Sr5^_!xU!9-yk|2haH0HP(vKJDg?;l1j=P6r?=5@@ zEw00fh#|hYJ4%y-ZpBc{4yc7?U+(Q>=!}lJW8;oLdnnq4-Ufshbk|%NUD!$c^9Z z)N>psdD3Qv*>W?(Y!Of%XS{^5QEWzX~ zEtYvAj!A@Qe9Z>Cwqq%P}~4?Fo6!3*sQHD5OJnao{V* zxuS09J_4JUoJ?;Z#PlmM%a%>y_XN3xg=X0-P&iEp*wNH+Wfr6ygp*K;$t408=E+Gn zif=0EL8r>w(VOKJX4m&QuH-xE@^PMP-vsEf84mLiS9+sxy+h&g7z=Z5cvJZsfnU>X zIT)4M>&~(KLt;PP$NtNNxB%OtCH9%eR9RGc>v22?q~UcQs}7>~R*jH-I7~lTb*$P0$Z~Y1q(8;!c`t|LJ%^5PMa$O*x(=` z(}BM-^u!mQ zjGIcuACPorW5N5M;sNmqQaX{qM*kFNmqfU$^w4$eYuLzQxOhjT@ZIa`kqrkhUlj@5 z^PjlADUEsd8!fCHY+c;eJa6%*YTveWS4BAvxodH)>_eqWt zSg*9EadhvjIqQ{PR&G7c#%a7wQQlQ5Q?q{VWoItJ-e;vey+$OK)F}USaK=E(F~>}_ z%$D&Jr;Isl;)sJG;!U6ys?-{D&Og)`>1oNTuk2hE|Q*bbVLv69MHk)x*1JgDWE ziIZE5-1K?4XZqsSmc?`CwJvH>%Es3#--pJGIpxqp=Nx*d)6z0~`n*}`$yN*g8#7p$ zYR_9ZeP&kS=O|@Jihu5eQzn}&lQS&=<$SZ{unBV}k7^N0^_XSKCbvd8rsedO znTwDU@|-UGB*qBrYgu5Ds7^0IhV(8-hZj%3u9{0S)?;kcOv^|iQ{u&{@>4hD4(w`v z3AnywzYKlli_A+o;Fkq{;VLA# zFgEB&m{w_&t0PS#W1RhU1=2?-L%Dvcs)(oN@VQD92Xv(GQq@z{L74eVBEbwY*ubIp ziLEy^)V%_WO3HR54@*oyc87oD%ELhbr?2W+|7~S;V2twuy{~O zIWk_yry}np7dgCgC{9-W31VbY+R&enRpcj`hNhp)VD*!Ngi0lNF8_)0H!-EpBkD6s zROLuh^o*jv8c@`m-e@+Qfq{W(+j)jk(ID{xQnoyUR5Xt93?htYpg($8Y)8Y5?MNB2 z9a^y+@5|wRCEMvBrtLBpO+T5%YCB%|OkccE->!s})VO$~p+r&5+Kv+x!%A8D@1+9Y zxg8mj@x%;r(cpw+ypQUgnsn=hlpoJiQT_Mf3Uk*Ij+&JSde;lRTLceijRx^TB&6vl z6IoHk>Pr8G(LLS^!yjS~A$?|+*s>i7Y4Cp*DbP+Al+F*e)DN*t4BsA7t}esdq90)o z6v!lQRM-{6@s%YXVWtP|MZ@tnnUZEZ*pdYslKA>?Z#(;uK&C5~E0`eMf%jRY%{!3l zY==x&)K8`>+JV>Yrd4S;!SHi$XE4$`V}6V`eN6o&RC+GR)cbIP(_;7B@j#1mdExLYy?{!0-Q-n@d?NH0(WI-JsY#!pGY8HTBI?ZDP*mq7 zyr&{ZE47zVcLE{0CDMX@BC5?Xi9y)X>1GMV*Oj8yFq~Qujg^Q`#h`S`*$Ls; zspzjzt?^Z;^{Eg~w+D6>NykoL_9-$N*gKU7Qgr=YAUoFIML#2jdani*bLnEg0sXALG3&@`cdGebBBiAo$M?3+_~+h-Z8BB{^}c zCCy!U*AWMCJl4qVgjpwkydGqfFbQwN6%&nZkQ|Z5gE*1~N0Rt-yf2OS5m|}5Aapx@ zm6!%!t!Ne2YN+G{ zB@$TCg}r)#evl#(2I6%5AJxjc3`|?bXVsyjyY|W&Z}zB&ywam*W+3Oa^RRNR%pQM% zSl?C4brvA+>RfP!_lJ|BsND@CVgNx$X<7)#;}z{c5qG9 z>6WznCVT4NcdeS7Zoz+3x=uK)W#;^IFf4eEa!kX?^YF{IyZ7Zx(5j=uAw(@9PDvR*_$PuA<}4&Xlc*4#HI7P8$`~;#7yuxvb0K z#DFBu6H(#VQPRq(laAEjYG)kY0!xc~lszF8MOSh@4_T0LVDpVQ)1Gd@2jKb+dYF!5 zwH%x+fFx2kGZlGrspJQ$f#g}?KXY`Tcd2aJ`tWy@UJDHW4kN23x)rrZfb|`(we3G8 zD9zR;MZcl33-UIV+|Y>A)?)u`L`Sz@__C&w1DALC_<3Kqz)1=?!;VoRlC;9Cn$IPO-P$HKZ$-rXe`oI z;aEtu3dcg~x8U-E?sR#)MrSA^716zA;s{#5h~NB?Zd5b@ML6gYCo-YN!J5hsk(UqF zu(kkqRhf4&3`yb!`PR@OxNd<8(`EeN;+h(I%p_c=7t8DP13)w@!O2=D^RUs;$y)zh z;~PBkVJu-^tCeSV$3jtLw=^c>b5l{lwDF;&vsUd!EF7aMu@eUpi?MEht*Y-<2VmX4 zsSU(un_2)+bz-bPl-tzsj=w3y(gCBmKo0jbkC__SCK-yLuO@Ry#vM_Z`wJGnm6;na zR$q!JkCyACm1jqX+375PAb~r8NW}c1EOrG93`RwLH|_R(>ubXXvL=5N9*8Yt zUx^YWFxoV;_5|M3Xs8=2H|Pvg@Q)HpXGsu~nfp|v-ETBW_^R#uR2BqR?l^!;Me_B`g{MV0g2N*uSqO>l^?z&j3h$mAA z1qHkDV%o1k>vFNQh4yR6%^9=}i+14Ab^Ra=Gv9iVzoOToW&IN|q@Z1fd2u@>k8nBx4OF5W49H|)rx#U=Xz5ghU zPiPdD8>UbZwBI987t*HZCUS9%kaX1^;YH; zE}=iaf&@W7ze3})nqA-{=U4FC%Z01)_$}I-m4{fY4Zyh?4-*xI)_fXux!x+4viggokUDhf_@ zNfYGA92u=BGY3YXG^FLx3a-9s47IWtKlF{G$0{0z6N7Ie$d8BR!%BFOz%P6P(9w?v z-dV!C13{u-Q_&kf+(hMUWRxT^!Bbq(msHaJ0IR+HI}@PLo+cc5NnqQS2lkG*1bYWE zXKc4Tuy@4yF_s55ev6?Nz%FeQ>|mak+6dJDCtAV6&b$?H*JrYSt<@)D;SX)Olqs-8 zCGD@9giRP(tjCs%^s}^seiCIvp_Cd!f%dZ(Q5FSULUs&ykv^21EeaFL6Q`eUl5)Yhs}zmX%3|GoxTlRc!N;wH>IWC3+% zAFU99I{`JeDM;PM3?a#?3-mzSaq*L=AN>=x-4lU-URodq+F4Xa3E~Md`hQE1@Z(1O z5dMwo-&~Y45U+vtnY4>?(rgohbi(-Zfd!18?q0xHJ#63*oB;!jyF~IBlSWe-ANJv< z(tbfFW2KFo*dyXA#VQJQN)iFl#72ZdV-9904E59Jt5pLW zlPtN!x<9f32H2%TT}vKCHozG7v^r5CL|t%b#)L2w8NjMRm?W?b1d*N0Rfaxh7B1a*p{u^wUv-`bHP)?q5;6XCY}QK}yJo2BjAPME zG42xSwjFRq9d}7m;`}k;%qGb-^{*l0k(BW>FP4RT!5wHenQ&~V+n)*FQ-R0UI_9^8 zv&L6!q}#puA9CB|+#IrZ$jd>Bef%PNS(`ft?Ah=F*y8*IU)#z~S0cdi4eTnHCY->2 zIxxgZrEzt5kpYChKiY}beLVG$YsB#_HY7+JSNA>gr?_SgB+VFS&{`R_5TI^X6G@r0c&d;9g?gmytZkFpj)A8G(Q- zJbsYM$DSU94mKtTacPLjf;-S`zVu|2{4Fw4Ic827ailpzL(pRUUw;!YZqa)N#QZ_;r1 zU^bBum7d!1a7R)?lpT({`pYu%)a1o!JKYE**n%pHQ%S9ZqRT2MmwM_Y$t>A#m&*Pq zsT__#^6Mc`b?Hm+yg4{2~lnU-qC)mMPb=L?t>h# zW&7%MJ-hJ;3cp;n#xX&m+Rf$0b;AL8QDA258<6M2tFGJ63O1FBwXAZ*}-S&jUk7vJuA>L zLJNpYoKHO)PAH15cGeqX*%22B`!+`QyCm8HbXvhP)XX3-E3=MU9=u>YR`9@hSIVuj zP+i~y8x4vUs(AfxtmSd-Hf&kU59f8!eXd9Q&Sp>@t@OzA}qKGy? z=ACvuc~?F)-?Ku12D-TCMKpR|t{cbd5|HP~+YyB$u@^{eqchNN805Nb&h9@iwq8ZZ zU6;ho;WBIc0f9@#EAMx3-Cu@e-vx1+Sk=ToIp1^LSl}XEcM^beHex*X8j`Aa?5UEr zh#r594dInQlyEP%u2=^F3jnbk^#?0SbP2u`dS!8|`_F*0h@Q3LH|bG5aeq-cB%$0o z>~K6B^|81oIf(ijGHf&au+5NRoAK+gZDgQG^S2-6b-D|28`*cjq_CDZ$cH;=srRDH z()&Q&z2xGu|0TO!gtF|3S7rTf7a4lmKu!HG>BHxgq9%)`X}AS@ae$5I#Z6N6#snCG zu5`Ke(OB2R`}EDDI?`3cKo=Q#;<#_*HEHsF6ORMP(FWRQ1rf-4B7g}o8M#s4Ho{H} zg4@biN^(W(_q^DxqX68y+!KHo{O&hmH=a5QroNOSbFq)+l$%>Fb7MDPLo(36&=W%o zkL-&U05aHgP|x=)rdD(>rg*hS0s3-lTW61wz-OuV0XyJ_>(tNmBe&;Bg8N}y9g&+D z-N-sISTEB2j)QF7vvBGi`;>AOPrnbysapu#FjqjGZ^~*0L(a>r*+0OQ%iv6Q!*T5Z zob^tlY!C!>{_j-}_KY98UA)wVojPU*m*SKCj#(@MLOk*#2EZtMyFfaFJUN(_G`y3qc{?VNG5Gj7?*o;-!P6k z;V|xi8Dnb{#@$fV30GJ0=G1SDteyS2tJsh}Qf%?c+4v;rGFFa7H8$ofS3@Nw^xqYg ziL(iK|IR$co;;(-{U_5D%uQ&=oq5g1ScDAb%zcBo0@~-c^1joG(0);CvS9Ps;_|$t zqASkcms3&4{Dagxn}vEiQoVEJ!es(+Z)^?w=8pIEJf9E84d!42b{|$0&G{Cc2F0+T z6N9P!DaK_FGk<&xqJVChxPCDjN;AEHWI>BpC`VKV9OqJMVJy|afPfd>@YX5b&E80= zX<$TEcFx@Hsyn#WdH|RvCUA_mRAO4GTOXy_%sob~p4Q)Ebj^hub};<>EPl^SFNk}7 z7E72%M{vs7euvjOnY`Hxa3r1EUX!@ z7pGCuF2#-EK(nKdmFRU(=g3o040}08aYld%B`qKFmqMhRXvE@tKV9}^1I_So_gjyH+qBS!(=_jn(dCGY#5vo zyKNeG8T$0z31+WXp5&wXGM*A=Re&G+36F zzPsmq(rE&}k~(OHoFF654#e3{^H3-wHrtQb*8Wh4*j&rpzCez&k(`V61=z&{&+T$$ ze4NQ|DWt9wdaxbKTlPa~C~LtIYgyzGfnYmt3K20HJ@f59YcBC2 z0Iy%@66%Ku{k4e=!(>8JNGx)pcEA_>20k+YwQRHJz46=QPrlq`L!MNF?W$iJe2H6o zD~KLQXzvBujcs5xNQw4)!8GMmrSbE06V}z+COE|s@nW<)yJ&aDnC#?-g$s7)3LcGk zVB@z)KjMMiUKmr2f?ZNOPI)9Y6fTg!l3<5?utNm)|CQ>DJMjbvi56;?c}^t3u5N=d z$1F5hhO&hH5h31$1@>qadb-}s*t71;*t79~I@TX?dp2I1PFE`N3?%m1xKQU}@7=G0 zH8g>S6^2=93yAl1GW{uk)giPc9&Gop>*E05 zn#1WADRCuPa|v>$c({#jvYw{t6WoN976q?ufZ4of1zB)@8Vi6Blpa=}fqAdvdJ(<* zhym?ZxLqr^hKvF&mO$?_(0kr}W-+Ns2BOs4P*e>jcN|v*T{K?MH#cD_T& z`R}6pfK3w(n^jF+>zQ$a`#lD@$qv4ZFwI&QXg0IJyQ3W>t>|P0B;M$DNxYGz42>nU zfHyBY5MS>T|2nBaXc2-2ou{n!E+>*mwe$ircs zyUJ_Raji^VJCf!^=g(I2s~x>qqV;Nqs!6Xi3{Rw|#+rJ!L4%$lpM7F06QY zyRb36l`d8FJc&Eq(m*-s^?cbu!;J~6yj}GxA41b5DLji^Amh6)D}?5>;bH7DqLYK} z#pKvtOpax3o90Y#XN2ALZU8qpjm3Z`UF}XnyRY@(PF65G?rC=t+FdJ}jnvZ}#@Fl+ zM%xH&ozTWCf$f^{I5mjCijx`tzfjobgmf42b}s8_aWYxr^8{K7Y4De~NJ9NQfhJ)# z6fMG#qBk3wlYv^UI8cke8fVLBVvNF$SL34ALYx-E#Yc;##?S)9lLULV0n0LT>4uq1Kg}Mk>62f~2BryVlw2>SNtix@`9e z>@ITI=nKi`C9>bRSUWaiv_Mo&f+CM6x{&O;opNE?(WK$jhrFVd-_hR-(ynM_re)he z`>i;uig#!Lji(K>>O$f#vD0rSyPLL|wo4R1~ zZe_lIA%P1TBESmA3DH;eL#h%wR2Cg*nkT5$1WY1Mk>fxI74BmiXO-EQ- z0J;w~kgz4xf0GFG@eM-@O!|^vV2G&BH!$gA7rKNhA#Y?qyr|olIQhrH-oy!@1n&Ly zx3Cj(x;KF8j-YrN{uVSmW5Tcl^Rl8LUhF-H#6{z2VicHPF~7>kyg=p%^p0epiNqf@ z2Ut|9HWjHjbyCr#NAX_hcn;WWhe;jZ>+3is6-dPm=wBq8%Ya~CM}7nA2MKE$R0FJw zf<;(o92e_biUv=?EK-n8R=tZg)X2pet6wEl&F!#W&BZGIn?#_Qnn>o`TgmDXvUwy# zD00zm!V~~mbHk63v{2j%X#D zjsO$C5Aw7W``bYsDXlcM5%CD<6KE(k>CQ8Olz!aJIlZU^h7y4vmDAW-B|Yo{>F4Ea z89nVXB9Ym|_2Y=zU*ir^am_uQ)L=~3MMp5Nzj=v!4cz9-#u4z^6J za~?;l!Sg6?C!Eb%?$@-@PG6>HQ zf8VE#|Fy^9!?e9U7l*$8pD>+k%R9=Ts{yIeyj()62jU&Q8`381|6{5XzVt+ZuE2Ny z02xmLLG8OzA3+Hf1|aFCZ#=nPwDTb zMUehy5M_jhogZ1|FS#l@le^)`|CdUAgQS5H*n%JeAn}}NAmg6*tt0&TIXhEJd^zwd z`1KiL-GL?WPZHRX0O0$y7yraAKK!`U3c6FOo(x&vrV~pJ^-v^LFFqa7mT-*{i$HYW z2Yn(=R~Hg$P=KfEAp{N^;JqU0A0Qu?cs|3IZTCc(x|h(#^qZ!O&kh0bB+52T=i%!@ zr0!2|Qvn1!EyNAZyD;$>&vy*e{S`^V{VKx!K=M53Y4X6tBUe{s(D7kKjga@`g5Y1g zhMWQHG>7tFN1#7q%cA(NCW27nUmvwlmRpDS^FSviRu3MluUlxn67q2;Gj23puaXbX z#a_K)kbibZ7J2;}NJHz3|LH=>nAxIuct5jO#WJjot%HjQBuyZ0sNArqD`?x}$G z&?lax%L(4{D~vqtC*EY_pVY*TP3??4;+77UVtfXMhX5ni7j+%c2!d`j)*-A9Q>Cd< zvC>p|xHNStM~Y|$J*%*me}M8R1zS%W?{ zmx(J1I$3)w$l4Rf|1ShUX23^ugoGd`W{mT1H(*%#TfGSKjQQSXHYjHqPcT}yhPcPN zn28e*WbeiMSBfR$iwrOLb)SeGybOB3FAU+53-`dlxtoj|CoOA5b5J#8&*@J>p^womV9b!n6M zLi<_p&(vyN$yEj7eYIMLrFPQx1qgm+>7Sv1S6;+1hZpPhvU=RgB=^#4E=Q9(CEdy2 zjS>)DPWC4FbQ#`rbVLg{Cb7FO@uw1k%;Wv33q_^nJ@D9n>O$#1ko#5WQ!(4cYd|Vr z>_({yq%h39R~JvhBft()7Y7?|kP3JUfgif)Jzw7Ah_P?@#rbtg-Tzf60?7YE5rC@* zfV=_0@YA01C-tC!j@JLs0xgNl#u+@cGJX|nTP4A_YTWWCHr_-jWe_q=N7$@*Z`jxH}0mAuzAU*rFN!t0?YyF}hl{!`)I+@*6uq$!DBVxP4gdYkA3Eh?4YH zGdh@l&Q+M_f5d`yyBS5XZ~E(YjzuOw+Wl7x7Vh8(5zzd*qmuJBWWJc53P4`0h@c+s zhpojV0KN1|btQ#BU+h`-B-)YG78B;ZEb}I&xZ?Wvib<06SNfQfW$$2?=c#yG8F$nM zY`c+SP;F8WUdyloZ5eS6^Fixs84lz$6zw;MD+A6l~QhH+C1c)!u|X-g@5;@!4R z{U1`D(EVxyGJSFBBHj{SvWOSD_Fc7J8yI-Fbeh5SQmjVPE~|VCE_u{a)aTPh@fySD zFzx=XR&q+OF`)IdIN@4m;r(Cum>HPpm$uD11!dlWaW!Z7I{A0H{0aG4^V+sTC-S}WwRKrrPt!_xdm4Ovsg7A^fmBB z+8z+8oiV+ZS@W%?m8_>@wMJ_2Kd)QPI_TTxAG7e7IW6#B)uZ>qY3FzPs(iwvBaK|q zlNa1|9dOW;EcxJqdo9EBi`8+G!_t$U*5xoJu4Q~B*N3s{T6^NZqjj_Ay~Eflu8rbu zpVw0S28+@m_6<2}c;ES}fmIi-4*$?+NX5)(%=6TZ^A^Ii+5#kL4I=19fL7dZ^G zl|c+E7ZZ5r0=z)1VF$t=TVWz+i$vX`#VZ+GDLPD;zO z@OpHOz=3C;vG9N7SUQWkAC3|Y_zUaQv{2OKYw%_EbG+Uk?hxFjMi$>+bg}mr85b_F zGX zdfWu7RJT_5e%$rfTY3|Fk=oo0);VgLzhHVUQf{P8VeNYa+<73b-B$6T) z$~a?CI{swbF(}4`DCi-8CDOz3|SGH)0Y`+pisa{X2++3`!ZQSxn~64_F_!kS*u z;NWM*9K#dXZc(MxyQl;fA{9(%Qo*?~T)!ra$(PZA%L=3r?+s&k8%oXxZ7vLFiQ7bP zI1J&b>%v-VWdr?$?+~7>H=2&*$uT@~T^QEf7>LHbaNL5$uM1<|9iiIrQ0TV_c(okE zW0QqnbkJx^70o;C#mDfnZgGBc2e@a^yxu3_&+kZ{Lg6={a5T+Bky@Qct8YZBE!AqI zsAP*8ZTXFk-IM5w2bC7ud~;a4p);avqB$mtNrD(uxt-Ai8XyluDi@z*@W0n!{AepS zXt1e9nean&F5vebtHN)}lmz#9&Al1TMVs2tLp}Pyumi;dwd zjt5q?P(#7jS73-yP$s{3Dk<*mCA_g9Lf9Kc|8W8peRH@5Rl_(#H}IDVPx1!D83P$o z>2}cUPvSN7U~x47Y_?E{$A>6v7)pOc`lSc|FQ3kr4#9~GfL47z{T~>)!$1%pIC6Sll;Qbvm8=f(Try3A` z4?{`qb^@9vKD^E2Lt+Tl2_B`Gc6KF7OA6ec_KL?CsN$PDdByXJE?{ESa!0j%c&ah) z`Ym_-5s!Tm?~2L-C^uF#WU0F-m@nxg6}!|M#EJHAIFX3NRilko=ZOW)6C;AM>0Nt9L=A)Cji4iFdj!~GPOU(|x!b~B@O1|NOZ^U^X$PnJ=B+ZW z{{`hPdr6f$j@Otd_fDWVjw1l_IIevJZbT^~G1QT6QWYCnk2dGW1>87}cR@WFdukV{ z--&WZVJz}xJY(D`r2dZ@ttxj|sxO_>L%EeM+IweMZi&z^queoQZkHIEn;ggc*btlho@@t#|nK_ji#@ra>t@vV+4G+irzT`1>X~vy+i&$ z*yB)gOU56F910qTg3qUd?*S){6q6P%>_Jq2#)p ziJ@>&fX9X?=qQxDH13y-alivEFQSq+f(?=02;RD>1|cFRVu%eCjFEsc+z(thj`z*F z-cS&98^hYwiH02Eg1!YVkU>*qoZ` zo5e9lA3J{gdx=APz>zDCJB|mVPDhisC&VP48qYgB?_9evWY#l@1sJMtuIEySJryt5qT(#i_g?-vS3D8%;jGr*?D1Z}JH!_?uo3w=^6Nqse(HSXndU!GUNo+Mz#9 zEj|G)&ZF4P80YMt{c(yM%MtyKJSwAxH_{XUFzL5=i8UIRY-MLMnVh0_-gh{sQfw@jbA zc;SgXj%#FHjpG_?8{#)LcI>gZpPpkKA!TUqv`@+THzN|}k<7@-UaUcA`pNw-h z>zc`*&A^3tl(F`~F9W|i7IybfFI*K7r`59*uQf4)g@3kQR#SJ@kh4FH)VYN$V|6S# zg7q?*GOWUy8`W-Ytum%Ec3M;P(#T%Uq}kK9yjIwW8;x5+9MJe&S zm>e{(+&zm`yBnDJH!5LO*4RAs;I6#J;Xe#MhIi)s7};;~(ayMKmDl9y^Jqc3VlVmyFNJV`+Qsz8cseR@1YXTpr8ab)(b3r0nE9=pSTFa|2j+HM>>rH;(sDJ zTuuMx;ptPo>22onIL5#dXoHCg@lH(cfWA?#I$c8(CK}X)Pf{o$b{MNN8+c!{Fp7m6 zIA*#HoP7}vqo@WhPE9o%cw3*RI*>j#)neou;8?g=h4?G$h9{z_zCXPY{L=w2j@i;m zs$pFUn`8~V3jbqs->V?+;Hx% zif?k%g-{(;FsQbP9#-N1z7{ILZuOjSO}-oJz1*GuP zku}CJ@l}650Ipo|>)w`750)H55cj5kE8*-BwmZWzpZDDHpW|cD$KecT)_bz#;Z!a% z9L_ow4u@y;!sYo+){K8EQF+!Vs?Q>KX2I~+gDSQVY!aG$peV_Nf5C4Ur!*g1@z;n3- zPB`g%JST664X*bb9j|AJBUrsd75{~cQJwvY?Y4sQB^6_VLp7)pz7r9MprmHkd(jEC zQbF(3q9C+f-XH7l6gyog?etQ=)8wd;vh0=oKXw|OuuH2h>9qYjou>Y^>vSB$eZU%c zpM=Lpaq?;qHiijHJrHC^Fd8POq}TP-YdlxIc1xE%Ev z{LmiJv2c9?tj7ZDW$5-;#v!xDviO}`d>szeveZ~sPgvvM&bhI`dMshBo-3@!0=v67 zf29m10cB(;;T`BNz)hUWtzPEr1y0M<86 z{P#uR@1|LVeH!?l+EL#n~Guc+>0wvMTi&n?qxtHQsO3+r_KY^bF-m+>B0Y|bqU zvpHe82vHS24)-(jzl7!c%PNh!YUVI=5k(RxpSHe&Ke{YgLwf8vCeMq=*TV?n)}0NS zmd~G$bnHUi;EO}3MRnE%6jUo>C4He>RxLw5}dn>DRA)nYmiMn|Ut8wI( zLyE;dsNv5ome|oUjFE65LYdhIKgC89PbjW0i5f3#*?uLZLo7jh#*NR_i#&)y5~Sk|y;@v@^kOz6b8(U*1O z(JwoTpQnpcMEocr{#6O^Vyi^Bm4&b85VixnR>a{zcUvVoSX~$iufy4qEdC`IchT2L zRDMOJHjc3aS|fMBLN-US__B~#LNE0z1QUxZwFz`-29h1ldTZP2i|nQTR37Vzk?FoLqhS>QuM9|D_hwS^bD+Lgycq?SvER^s;n8IW-C7c#PrE6%}Z2O>QI$A1d&s z++0$D&lA6JdHYEeh{EpAJD7Ke!vwaNgF(_M=wUV;xKXER_ za&01x6`BA=Zq@k5Cq)2?VQtl_9F#JAIqFPOWk01Q9H4L2JSMbH)Wp9cp{-iVj*DH9 zmT3k2`(;Gis`V{^|70ho+wnO6_j2O81m$0-25BoiNjIL%hp?oLICo#el8bEhc%hY!#X>CkxC0N^fgmg>)rG(kY{Jlr{S6wKPg z8Go$5o z+fVCl+8^=wlduNMXwZdL>p9Rm7PPi^|a0Y6t9+2SBJ)WF$UL{(=>~6u_xA z`@@d2z$_TS3*!)5`p;N=?w<-xVDZC5?>sCZ%9TiYxCrrDl6b`hEErTAYXd5lfnP>$ znh99pb_=#hqCuvpIHm$jk-==x&vJD=bw`uVkVq$dymZH8*(|TF? zOSR+;F}eE)8kKDt_Ie=#>B;+tBgRcs56Q(R6SE|x{4UfL4`lZ*(7pJ`i1-d3cUc1U zZ4b4W1-!XnGAUEUi_4m_0D#KEJ5DFR`e zCdEmqfK6H<(Y9$=#cjb|C40<(jtj3mG_t=YR;9ougadwH{3z4F6u5*c#Ul@hRVlQz zCa;);UK~o_5)3003@%`B48VX__avzpz`#z4g(0&XFh}?>L9bp=uYQ94`!@xHMKEl` zrO3iNyxzfx#@2L^_nz#7u!}%Id$30f$~#FD=ZVlZEp=l|oGUoU9|fK#kR7hAJ=VA} zmZ){JmulT?d}Ao$BpBS>5JtIFXH@?Nq&ytN71WJ5WYgu;zxb$#xHRP>@kh#^d{KzA zQs9bMb6T9ZTY@bxKE@!tDtk$2Lzau9SS!|ZAhaO3sEbYCKn3dC1(!Pq$fFsr{f2U! zz1+h?$Q`Y1cytC-{I%9pi)80LNMg&{Uz0DnzSMeuxd(@kvCm0pq44PEC>%md{P`11 z$7-NKNM?cf#HW~n01feJ7))US4a0`KLd{2=9H4P(ETWi#JrkD@S14}my8=iN94{mx ztundAVO*EVqE$F)3dYEp+caEF#+R?W3zIX6AI6)S#~Am8TX9OnXAE4gY|j`N?G54n z(||*quReu?F>Z`$J>J508!+bm-XckbZ=Qdh1`EZ?cTe#VQA9|HT#>?TFaBIgoc4-< zoI+Rr{7)Z|vlSwbR%+Y+*_;E_h~s=g#Khbbm?L%oV!OWNy&9ojZHE%6CK=U~r|v8+ zvPXje9PzK=o*rGmRu_09oo|B6CPA!mWxyKv;j_k|fHmUMXN@a~bd*ZBNTs9rktqZs zOjpS>PJu?pmImOkNTK7^y+!6YRWXMJh3+%Q)*^GfpqPX7IWdO?b&g025IJa~xJFGo z@MCwt9m;w$z#iAeefIbv-ZIU>@ctM_{=}>*ab4UOQniKLrCL|K)9(E%_R=82dKIA4 z35(SKdRP$m{}u~$F;MBKTP9lag^DU|`u!3b-6oCxW}GxS-u)cMZM2FiA@4Yu6uKQK zbi8^Xj3EPW2ysmqk}6qICBHe@7gTbEz=D&~=aEOM020FV0E}{{q6%)FZGdsD@a5Dp zT&?ru)b+xbQ^3cQQwj`UnFmmy2=Vr9#28TJy&Z&4*aH&r88zaMHw&l>G_({7QsXYE zal*pQ0}B_rpqiv?dn}+XYx_*$?13pp^ZtZPqL=GjN|H?GQaA!nJn`MNK2KbI zb-)vctZ2%+l~vlL75%cf0ii{|0!PFkqlT^WI6~|GRdd#QQE1n$g0_e~Ua9T(Rg()! z5koISA!W$>=_vpK{2+fmg)0H2bvPB9@7skGUta_a`jOr%w*rO`+VE2mT?9QDf2!Q3 z!M(Hv;Z$z@FcmsG3J^M7AUtIeaDU)5V+c~(IVf!sPj8;ulFLCn z9az-aIp}P96Iy}O%0F|#ek+}(oz^CuptE%dr#j21tP0(DnuKsN4N&g|{k4l%V51!k z7JobiqKVW++UbvZVlk1yYnTw`&aUbly}}&-dJq%d7?TM z-uV^D*Z>SEPX4v>wn%xGTa{I=m3RM(fch0rwCQe$CksWCTOJ&wy9>VVE{Z3)AD7S; zGixjhd)SI8HgIA)Pg{@;6)5ilDenR)Zz}UQJRzKTt5tydRwfkuUj9Z?Oo#<0lnv#L zu`joBN@|nxwteNj+JEx9;)#@Z2^JVtQr@1b0B8JbS+fl?fvSKLugWT+y}ndJJUPDV zCS&5!L;%Gz2~rirz`dPq>bhWTfzT@)%-UFhF)O>z=1|&7%l*mrls24J1cubbsO2P0o^xR6MJ;txOkQ{( zPH7~zYvPgvLoaLLgI!Gpw$lF$y?v-tJ^|5bUPI)KcEoWkh6AQ!XEqg#?p0#0L#EWrDe2CDDHX>zOB_g}#2Z3(I+jeSXDh`i4w+J~ zYx3J^I1PbJ;w&c&K{Yxq|2~xj6>?obx%4-oEo#;5BA3O(HI6u2P`&b|V@PvQZk+<5g`QFH&DG`D^VBvm2Ty^3!<8neE7(|sMf z8{gfmbT@t=Y8b32H2W~Dtg)H_E5ICYXyWZ5i5(Qm1@ZNEXf^f@txExL9D(`x4lQ1n z&t0P>?~RGSxrn}~@6e)k`8>e5FDBmhpGa69{5TfxEXD20u-zd<6RoHOs(Xhfu1~cT z@{Lturwb@B|AFehE=8&v?@meKq%qzJ-U=(KuNA0nygFL3-`fDAIYp`)Usbij4o5qr zxWp4v{e@`75=?dnP6xU;WLsWntm20(kBrvD`oNIF4~!x*)fY@mF;Fs|cxb%Jh&jA@ zIK7yLmZAhXWhYJaNOc!Tb>q#Jq7k){popJbBX8WWhP*j4DKzq2T!!oVCLKF8#!#lLHjWKb3RP<#@{5U=u+M)F`5Qj~} z1)h!2-nMg%*3G~xjJJ=4lO4)ZcygcrM2ZQirh=VElkUY2hko3nCK)p#y&c+{LGA0% zMfK(uWzoJ{StvM|dQ%_I1r~TE*nzAvK05hxF!HY zV!~Gd7Oq8DxcMqv4>m_@y91gx|wVjmjC)EnXo?=bgPrS{f*i6wXK3?|Z8ZjQu*rP{O>9P_+`gOiIS`O*cedEM z!RYU;DbnXTU!SWkou9%1n885jt(}Ap^mz{YoN|S}#SrR*PAf4=7YEPkzV*PtxL#X= zPG|HPzTOQN7M6Y6ELs%-t2_{}3VtY7L9R(^(gB$9%wv`ZsJ+2_94{86T5NN0mHhBq zVir>Ac~a?k^IX6z;xdT^tN6+q*?U)$ZBWlXDl*H5ZS!&PN}g1D9#SWUBG26A^GYh< z6)dyVxL}o$(r1;wNS{^il*B4Ik5w}0U%Z!=%@nQjiN9!ZAmB~vpa+_2; zUKIghm-{pF-VPQK=~XEnB)lBM6J9m6qU)GIhNP=N)Lc(`1&A>DOQfG;`Am}A1CwY` zk4dyTr*Mr%f~pM-$MHnh#-ivd!J^4_52}*MT{Id0B4y$1f+xD}0Kwr6aR=%2e^<&8 zyL>f5NZ=Ld_F|fiE7^sGL*kBecX`~w(@raBnhkKW=#ad1SHK{SLL>I0klS`aMhtec zCfK9a$=cF!vc_nw+))fd%evZbpFt3#*;W!v_TP>2Nr2%iFo>F!8>HJIQylP!W1urL zchf?VYC z8jb{?reOy61Ix0^#55K!XD9il-HDeWeJ`1=zs#7J$@}G;RUql6mvIt@ARj;AN&&xcGqt=a(#H*f)EbiA6YmXTHqB;$wkL*HuhRNk)qKRXoj?5h*zLGSg>; zHPbQiE$)({2>Aef=^|BC_-tAk3R(t~%)%;2o0nNj9xre(2+c?B1ypLGcJbD8Xg%7> z`MD>cdO4BF7wL5QC8K%EYtinkvwPw3kxxfqi3{hzae}A1us5tB95Nl9$^9akxF$8o z$r~>%mN>UFk)?*?u4dCws;G*k;W*~RSdH~L z!%aVk?tezgorgJ{1$g>UzV18ygoVEhim&F_B$-K}(lgd~g6-|(?TI+1u|vRr*Iz}( zK2I>VGa(yT62AteBIk*I7GxK;xu8+b6A|sGP_1R2C-jFHtL=Wr+nalXSFIe-wvEEd!qv9%YeUM)v!jt&U|phP~3qu=M;GvQfy% z)MLQ!F_xIxMLeUjJ;ownQ`k8gah6C_iQNfmCcf3~ z$0on^I75uhsTovfBa`zuRss>(8Y|siCOkwGYg`uf^E^!_sF1mrnSE?O*RkBk$?8Kc zlXB6C^5o-K_`wqjLW`R^Dqpx4H5tp#sI8afY=IXQ{H#Jv8MKNaUN^i_J%h`YHj3$I zBMvQq^=o{F9ClKT`RwyuTb%;Fs6sk}mSau8ZzeiRfoO4vpd=UC9!(bt`yvxQrUA*| zfAFuL32je|iwP|q3<#=nvM+?=@) zjtnM|Z)wLU`h^hI*tjhAE8|=qiJG_%h(^+IMbYYNq}yphiUN@pIm$YAhuYFCWne))_FCgppzz%J!X~Z6{@m zUmlTf%<+jtWizrjr4sU4WU@DbX*OY-7MX_4MJu0`vSDs$6H9ziNk1@>n-B>5S+vnG zH?dgSPPV#^<8A_`S>#)Vd?(KB@3_x_Oblz23UiLFY?Y5fg5#S;Jyu~HeoU)FsVZFL z(N`lEu8}+L^OOtqw-E_y)1Jq<&whH$G;I5CxV(&dqkp4F+?&8^lX@cC-#{ce6o$~# zelY7z5F+>{hti|G?C0{PEQ{mk3&@7=d>YvVA%eP!G(vUZiyWFA>jln1UBP%yAW?c?|^XH3++jLnkXHLW&hu7T)Z!@}Be z)g9bSEc(ck;pH-Iy;mP^T~M8$@(3T=pbwgJR1D#w^SiqJvUm7OI5l8>wOcc>lW{5R z>JT2iUY|C*CB(V1D)(*Av^gZ9f>h6q6cE041J|&UGCz_w{~AZs+^XDKEp3*?#k(9) zp1b6GFn*mTC%VmM?nvx---jT#_fZh&UO4cQ{{-a@j=|Jo%LEQziElInole}zusk4A z6eU_;@jmO|&P|n1K*boYg3nK-m>+Wb?54;vu%?#piEi4|D+p!nzb*J(xdK4qA<$?rKomch-A*2x_SOCvW5S*SwUSCHjI={|HI1y|{iCzgWoD#r`v zJwRybQ6#h}Q=T%xl0qg*5lIf;;K3td;B=5PTtWU4-pdNNyZRCu!GenuFuP!}M3AO{u6_7|}~9N=Z^hz@b1 zD2mY0CSpi8Sh(Hg1(7Zw%Cvqo_Q{XvBBv!pe;)ohlK zdr8l8-3FDgsJrr&xV(gtY=o=-PbAxtv(Avzwb+A6y{m;Y>yZY&|3r)Qf6+ zG7j|h5wELm;1#a9HnH_QHCfi@n~L3FQ8RW zN<-rNN;X^pT3v`o<)#tAC?SM2(x>@p#G8&s`Aou7->4yQrGuA4lK#gcULQhwbgP#} zG!>+t9f(wBz#3rxP(+q}lAz&%poqhNPktZ@?`Ysw%_0@wsB94{Lv$d5J-1E^u@xM2 z%9pVCI@&S&S&bK72)QiW>=xE(IPF>-u0#}vGzs~vQO*iEUdM~W>nus`3SK%syNW(5JH|bgOr%rJbzT7Q38Y8oyf@1WWzok+J zJThk!QAB?}2f;-A5RvMgmXw9Cdk(Zc%la5#Af<@jk93P44xxaIbIsu}}<&g$IJr;o$R_TuJ@m`{EcmzQX~$ zrFlxj@c{6p^i3wx@`=?jf3k>WS*?=sAo;UFUl#!UU8ZRIIo zULqNN?kIQe)61F>3`Ic>uj=S5@FK`V3o^2pkn=KVyZ=VMcy&o)jGw?rLz?4~f=4G8 z!%Nc-S9#Q+fp8y=G?!hSCISUO3hx$NxSuRtu;OGH!um@>i75bHC<4x9=P_dG_W=A? zVoEvTbh6-S#_cOYVC{)u?KDBDfAuq%_V~+*X$kx2n#f>_LMV6q>923XNzPD=T$Zt5V!vFnr`uQk)ODm@1$1 zJKTQiq&DQ2PijM+7RxsB6lmbl5_1mRP8?J2tc#F@cTs_o@GklaG>P4{W@=Nw;a{%y zaL(lMDvduLf$+G}@HpnI^5G7$7s<{~8OojuRC+~Tv3*lZ!D_G575a@z&`%)jA++Kr zr1^aA>2wnGy)dokDLni#UZmdydZA+Cte*lg-=_c)P+b2Z!8f?z#kca+x02w5GMpwW zl<9P^kGo5{Ua5Hcctfk~XpCJ2K@|x3&D3|<2(0oX#NS_yck;D#Mx}0PmpV$N26W?( zD%*yXzZ}pF&i|DtBw>nVCJ)HvSyV-P`7X+?CGp(=*9|1zT^Hg#KfB9s#QX0Wa$t3g zlzVk13T#Uqub_!I$Go6MAXl(kuMW9_bO1-GT&3 zcgIh7EZ&5j+?)~n{*f(VG1zF!%S%kR3LoZ~;dYHD4}v^(TnbE{staw~N8$Wp z58#|JW;&7|)RhE1v2(}jfSoO%=?VM?X!(Jx_5!dE3^zW^D1+7h=;Z{%u-?jSH&y{@ z(W#dBo7DF~D!rx~f)eYSq$bN$dX7@j^!~{!==*Of$(*C~{wn=M;AWTPgBanv*$t5Z z6kQT13;wprbSDc=0p6Iwt2o~n0aJ;K2K*ZD2F$G?s^uF^wYCk`055;r2^=0+aF6ol z+;1&7#ToC7i5h64Mp9E;kn?SMn)Arj7oj9@ce%S)L>`%+YUb~TkCn`V* zeivJQR4+lSq{s(eh7?RAPlO|)CZTS6YcW}N#wW?Tl( zh4#F{{lfOroR$~{J9$`f9MNpX4F~MPDL7EwFesq4vEp46)gCF}@KK<(Fa9H`d9v{0 z2trPJybC??Z8-R0ff{#mZEAc($W!C~q^wKnq>RLS0TdywZzhU>K>v898Wt2%qQpsj z%Fixn{bK^41I5LGHG*-v0O8@RZ?f#~yXKg4{Jd$UiIdA;*lIi-X4a*4wMU z<&$zp8E z-g4{1UrQ~95cGu?WGnzO$(-IR+>$0F0Mj|J0Baru}(f_?pX(@I{G z;Rc&MQy|WN^@tLdRRawTB0NqnbZao!?Ugv=ci&W|?6&$0xCXN{8?*YODByJ4 zf=tn550NT-?`Eh%T90x3^_VuL`(5(w$s~FEv+pKb_xKT@rpVPCOg6aVh!%K9)aLKtShlHjCXH}MrK={ z*5F9NkL^f!lf<`5*5Eo|zV0o;0gr=7o5#GFndqjpIjuHejKodd0$dl8IV~3ZxT>`X z@qJN~ue*reK1;Gbqa+|nQZcHi%c-o|1j-8LX}&6Nz>x~l<)4I!s#flq(fML{-P+?C zT&-v}erFBN`8cfRXh4(LTsBbqNnr2YOyWBb(Qd{HoscQkKFlj;RLHL@lNB zGM!-G*wK3vD0Jg@EjWIYzwkED`fIkf;+?t>ofHC;5H(`LV=Eze$G;&TZGtZusIe1ZimOnKGx z3@rubDH%Q$nESje?>gBdfQ$$v}FMBZ}!()(T5MFYFGY~7U3=qVRih*$_r+ z?P}4rkxV!azZPl*jx6?ZqSS^vzq!2)hw!HWxUI1b@iZlRSs)}xJD zKbR_>PQX_(zbjGph}I_$9tU^Jj=A}>h`lKgDO42+>tOlKk39`MNyx(|ybnKOrYc=7 z4#;I~WB}UW@pR6akB$qq02l3)v**JZp<;6#u?Q=X7I+&hx{Ba|w+2`8g}2b2O%}gU zt1S?o)!A&jDP@WhMrsKh>p2wvq*T8F;_((t7iwz3amNWbW=j#^v!w4AdMfGbF>8^ z@0qP8>7@&>3QR>Ecw4$ta?fmR+TzPfk9JDldL?<^N_pWkU~>8IbwOT|`o97`U%Coc zz=2U@_-K)eKt7a}EoNoUds|YEgX5bc0uH=sQ*}LAbH8|-s_S9RohABZ^Z4i#7SWG}ZeO67pCVAJ9aY`H5}KN;&BOVG zgXtwb;zNlnfV|+%YXbry?fzjmtj<(BNzB;_w5tZ^uu(oS)qf#|AVlMU?(h~k$uCXc z9coKsoaDWr0>eP?6g6yK^3fhzI``$DLwJ41^#SY!q*ks)Dl>rQ>VJ)hvg^F1IIIi6 zoEyD1jOtz}FF}2ix6`tz0@tmsky*tn#<3gok>LP(Lx;Y!}uS_f#=l#&mXB2obR4 zfDAxKz()^scv|vs?GHKM8i0&Ms5PJlFM)0WMZK5+o!}D{3&q3x)e^k%k}tm*-N|AX zp*`NqJiM2sHQs!!w~rcImKIZLOHDar4Nv0XirRo?-H)cS9*t-|KfV@d*IQ1Ef>O6Y zs~5noI9j6k+sF1uA6p7{0FVK9gVOkm9SHcG()mOcr1Jy4j%~82ypI??f?)vVBY~rX zgrORh|BwVhh`qWMKlYM7z%>|VybMwp>r%x|aIaNxX7C2VEe*W?F;@ci6CN=Xvg@&v zdR!PxPWuz!@jQ5(BqM?S7@Rgc0NdY51=zXi@FxPzC_k(x4!1yN;BYLvqL)63;Q`dk z0MY@3d|Lv2AUQx_4+zNM@gCX;3?53LS1X~^XU_p~BB8DHSi4}fgW6k$1JL6A8@-tt z0iEpY10C3J4%u&46}6K4@l=5&Pas{`7qkMT)WWN|#?75tEeBo(~MT zJPCILi!b}A&(yX$)?+dx2k5NCaBqI@f}Q34N}xBo#C`V%FsmWhQ_>_NXnWf(S;EIK z+Pz~mWafftOQbn)#@<6@zkX=KR@% z_%@yb*!~tOz&5ADD-wa7TU*wG9aLYM4-9}CNYZ>@AkC4gM5+YtJtn;4GMMOlWI=Gx znFHAc8u8$6F1yy-M70AO&Q>;@{oic3WoeF3UFxU@8vn^uzLy{=zW0rU_Gz<151o_A zP6pgdW+A4HzKm4(@v|u62@DlTbi}zSs7Qts#H;|k51^M6?+7cg$lyd}Yu-c%BnoSZ zyEYAld_`0~I$OUO$79^2RuSa~s%>+as9qW`;eX!+$otNh>f8UCe6|O+-5dvHonD-& zt*J!Wz49hzYHKR>q1Z}$3LEFPd9k-~j#k9sw97)Ci~E(p{+uVypThuuf^~LUhI_7p zU%@@l_2()CTiqnHxs^^WXhmDl|+9bu3GX!V$fbZ)PEwq9bKK&UqBcBbWT%43DRN!Px{$e^Alf|h2i$g~rOv7+6 z4Hi2>A$Kqt^4^1E6#pJPA7;9GAP?!Lw|$RP=-~MX-i^~TAd*A6@u$48!AS87sVp3d zyBWJHPl4GT!$&;_)NLzkWBm5MRXprXJ?@^W; zZuSB7SR1ztn=bB}Osw8}04Z@B#S`c_DdXX4Lx~?kAoHCJy*-3_dkFQGK*!6_o)a(i z2(==tp!eC0Xw!;0p$f(7Hxl4YElyyx`H-Kh2tYqK9g?^7^R^4lP4lCI4K=k0m#0Oz zbJKGFgb0}Z`>A4V4-)NT1_ALt`9hqcRA&*T+5$_1f&g9(g{xJuhzV3;>jL815#DgS z;0HCtWgI^O65`kKsRsBQr{I9fi^S%U@DcNcO5hm(P_Xq8imhJ+m;Y{(&sN|MMeHl} zHQX)JYL34LQGrl|C-~bfH5exGk#{;~C`>lMU3R~xrCkt4qL1xXVE6QhQXb#op}hku zUH5e6o({i7sLpzL)^D zsh@r#ZP^Ln?x$RMz3>um^a$}WD_FJg$z#==zCqNDVekCh! zmO`4}U7VV`avJ}toWy!~zf?TJFCP*Ha~}`pZajdb`ej&DyLn&w1zh>@LwyO}*Cg;s z&Qq*nFE(|aq8BQ9@B`M7Om{HSV*5~l9g{=b$#m>?;??)VXs_&9EWW9?;@Q1@^r{KH zQG+N&SWlu66SV_^w-_YxzB)6v9&yVqpG$9#s`qwIJ>Hfc*jRf5XY-0I29IMVvlvGn zy-AtEx(}B#bV8LkGtWXFJ6$|@Ke(H0HhKY@E$aa8Hk%D!e3T@(&l^E-8)zxG8<~IB_#ll}Mq5|0NZgOi~L6WQv%JyQ)znNW;UtAK(7(GL(pe=DtYxEH`ks zxVN8p`+M3XXgmH^TzJcq;WoXv+Uh2!@wrN#8wU}0yIF8|j<~zQ1*Et|0nnSZh!WM3 zf5S+p2f!-nJ!clZT#NGq7knRD2-A(kffuokG&zhBNOU&~i4IsHpm><3VKZqUW|ENO zXV5gvPZM-wg2gx@3i$y9K!N1JOeGIg@_n$wo!!9>+UGxTrRYE|Sfu!w(^j;zxeh}=2R|tQAD@BgB z<6VWVn7z5|4yC#qaN@{YhBK52XOx<7(aLEZ-S0d4?2b2T3l$>ZmEw}CTRDvnQ^>D9 zj5K*6=QI0_q{&q*YUnBw*^0GqM9{ihKns5elsjDN`J&z-3$8VawZjqvE(flZUwD#z z0WHBDs5JKi(%kr?UiQz~gzN$$1Nlu_UqD3RrH<}al447JBRxdJTnto6Td{z%oml5B zMv3i)$r(&HQGfZK0pHgLyxIcD=L;Wk$aBtzPKU)#*4y|tRyl6Em_dqA){Y}yCyPRf z_CQJl<+NQYz(Wg5wfLSBpk+B_moF?xwBOWDwEJi`24CMk*Mh5U| zmzK);Zx$hyDVl7#Qj?88FpmWLO}+Mv_Io^7ZG#psuD1C$TaIkD?QQefh0}R=TBnlR zClS^r2u)#4_9?OVauVyyOZE72>RQ0xK_ZjCPll8Tq&L7?Xe&G^?r*-%ih24zP~^Ga zwb^*bU=Iy!{87wjZDq7Mp3%l-8?E-4CO$}mR=J!?fM0M>pvp%pRlWh>KDTdCmIp># z&Ntfli*8Z5ml|yfZDq8H=MHYu={8%a*_R3Si{N?L7}pzSMhy178Id`y3m<)81fXRtA?_f+`u>EhHGK4<3$>_5=O zg?1(zK3SC|zCL>f&C1RsrX^YK{UWr_B(%>AlsHnANcl?qKcqrudP{AJWaPI)!4FI- z#8Ie>zN;@0)oSKp{;v5Z9`480)Qrx)T^R^;wR7rv_S@n%iJqOt*D8sA@A0I|Z3ns> zvuarC4gpJ`=QYoM^MthuIIJdQG+T2i;P3`Vj4-p=z<#4p({HC}W~QcN15<=LE-ir1 zQl!T(ps~1sM$Dg@T|fd}J>U~WyALE}dfVqng)X4ssUo6in~=kVL)x2~<$XRcHQ!>x z&8%Ud`mx03HG`1A%*X05%TxZ-Gz46+nJE^I&t|8JHX{? zLZ*~BS*nCP8S57YK$8-`uvDP$F`=$5hzj%DH_?yqS^gOr>Ldz;V9N|xB53}>aeo2& zo7U7}vmeT8a25)eR_O`@Ot|6|1~S`U^iQ@b8;+{;oI6&?1nL{E4b762b{z^ zB5Eh;3PUoY&&HmbxmoFQFVr;R;mlT{rVGB}?n^T>3P~&AJrgS5rcmSwgc~1-X*#@) zsKuB8lJzliouXn0*Duwgoy^tqIZ~cBUk$MFK;XdzMs!fWxD27jobFNmLR?p~a^0ih3#C3Zp>;B^pWkRSd5KCSMDf+{roOmk7Rk0)%Qb}!ng?@^t(zjwB`YzqFqiYS%3PlGsl0r_-R972jN;vUoN^*Vz zOU$IJ4LiIWSThle5<7!eq~$Fihk|Y-mo&f|1gK!*(o{`^|6^8o)!+4#q2u3CI{pc) z!VieN!;%7hQ%~@^xVox7hO|BmivP~}a!<+NTL)!%GN9YrAgK@L;%gZ5>Sn`wgdu(f zBw(4}dnABX#9hO(Zg`EoOEl1>?5!sU*%sU;&_L?{R3xx2?32Kk6(ESS5nD#lK;a=c zzH>W*1X2&dAv$jxyi*!fw01cvkt)#ThB~5wGHv60^pgPG2pwQ4kujeTVFbD~#fRDU= z)t?pm2L$NM`drmcfb zTyRhHfaHgZpmhF(j{6{1@bq4Y0MhL!+?9uW+QF=6A>WmWm6|y%pNk-#(|{{6Q@E0a z#F*yDm8?q^xgF&0Z@O2)+s9mqe5orDu~>$#gu`D%EUC7ShD?Tca&^x?g&z;|@X>JS zv}|Z_QbF2p2Mq$`RF5$XC&VeEL%`BRa&ir{Rv zDlc1%m3^q{L*e)+liLioa)_;v%fBR3sXpM_Q;gb=RUm8e(;Y>?g8|`w3<es_|eZr4e?K;{yd!HU{44A`UK5JDdcC!qZ6;D zjPraXURN-KiqIJSg$ReQ5LFLfnnyiF8VT~e0Dn5}2I^64GtuL&~Y6Urp_fgM9t@!BTzExt8^$rSl=MCT;N(9BXBo39A6(THrt zdF_XUhMmRDOs*E_ZumX{&(1{xY0LQOg_JSAnF85(Ikn}Y#WX&Vyn~4Tnm`N;3QCXh zTh0#Z!85RP}56Xshd(6@Dgy8g10>=3Y(1IZ=mELLJC7*fer_SyKB{_A{(4 zEdHs~x1nFns-7+ILbauYI<|lgKb5%BgAeO$>oerBw;*uL76h+BMV~_#8lS=UQUmxk`t42Tcmm@4~9?=uo zz93gw1=I%@RG#>tTwlP!7Wxy1+sQ9vzuf=h?7IW3Dz5*h-23|5yPa+D*aFM;_ug&q zE@c%(Fd|J*6cLeP1BC^QHL*kl^{YmWCdPs##$M2`H7cOkO^oInyJ90njj_d&7=NEL z_ujW}CExEKzdu;snYq(Wn=@x-&R~@F_y(2?iXA-GFUEg25PgazVbY#8miWUjmofi{ z))q_;TO*9T6y-MFSyY3AdkuY5I8oXoXw5{=(HgqbnfHJc8kq4ixbfC@1gu0S`R!S1 z?d7O=qTO#T(q;lH_$V&6PZa1Tf%T}}cm<;NjYldKWJ3pr)JNDFnm}t76{3belE$lO z>m&G^R9ioGBj}_R^2bxq9>549Db=L#qst_!`(-#bBmH)EVULew#(FiH;M>{>7sftJ zuPp4tM#B}r5vxY9cN?{-Fp8!!crIN0!oPSVRX1Q-F22<-#0AEESR(S%5qKxyQWmN9 zuz<(Eq+UCs-?Y5HH^dHUYAHBxj;=}kadflOFGTAKoR+Jym(Ar@H0k4OF+JcK=Y37F zF(bwPwJJ{4vc^jLt7c>%hET1Im`DR7S*6KFB)4OFvRX%uHr{Ot9@N~eX`ka4tzLmx zSmrf|g%z*Gu6xVKMjMf^a_Q#pCP#0T;+0EerTR_ z@wm4&A)HYoo~=cgt5+!smi*z^+3U=F@45pbRraS#JC|Ckj7s~G^AS50!7dYsCFmTnrc=!*IKw+W$mgx~)TZDPy@*c+D*jTxskJT^SA^0`- zWwIt7kaSE0#40}k%b$TS5mGCIs93TVf1pfT@vG3vj1hf;|8BiL1xqWq0$c}4@%bol z*Lr;~iix!she>;Oq{ntnqbGjR>S-K-3{T_QV~Aw-BgR|p+>a=_Br1}d&Vg@6+swr# zM8j%>( z6BY%rDTqMj;1$t&JhN$BhvbAxo~C1`63;J=Gjscs{=^rc2fqISGVo#};(z1&>AIAS z=TJ4%k&M?WHN0bqr9FM^;OpoN9aq~?7=9GIIBML6D8b)#a%9ZX@!4%0j~N&gQJ;!} z4#=3J^OfbvIeMqt{jz9u=jdn_c%Gv-cyn;A&_K|)$kdo|kv1}8cMP%_xojR8Kp)nv z*^4yeU9At3OJ46sr}KIQB2mtHCxXf4b#&=%M(Dh3vXDnMvz#c)>xiSOkO`}<(RsjD z4g>7T!~}x2B{uSyXm;Gue!#1fgMe3vf-(*K)`nnYE&^GhAw;>Vb5?+Xkp`1@8Z#)~ zRl&k%mLCDjScHqO`TWeJ9DlZ!j==xTE1YJg;l9cEvj;4k)TG;@*<_MVckLbQ7yUV* z9lK!wervTyuswk2P=^>(qhAxi{>{=K`;bKyiR)AP!339E3r{mHisPAP^PPDAI1^7E zBgWMf=tsa6T^CMKcWwq4{$piVxWt4R=PoS*kv56(8tl6?et!%bY=pL-0&NG6VXyKu zQvcdkWWwb8api53w_I5^0gqP+ZByL1NE))fOgkyAUxe#*ejoQ&fTPChW^+E|-=s+? z0Ex64@~0RTa@9ch?9jLQpkK!o1h8|G#vh{jvU^h04j5-|Z4) z2T73zzIvMpoUU92FHt`ZH#w^$!g+=wl$^Z3?>6}0>U4XQ*KgFT5Zh`x?$xC?;;=O; zq?;BNUBgfp>w*LK<1D&^Gabi2D$epxVv|P*t;~S?@ay#`$uHf{fUgkdcNgMNoo)PF zi^;>&S{KaufW%UMdY;}D)86=M!1Daz0b0Ldz|Inm71WU*2SG&(o)zm ze?wBPD{B7&)E?KxUgIe^3is(6qIP#o35h)J`t(F07bdmtm~pWz^K28>&$WwX#$K4z z<>~*@zYpmbOM|ky&PCSufj-M0qRQ#B{ShiaJTk&K9os{1L}6s$wst>)&HP>v#mi2s zQDZo*MiX2d7Dn7j(Vi0IBCNnJd8K`Auh z&JsxOK~xXFEJ6cL&S(4}ZwJnp;KZi$VyiI&=X)rqQ4rsX?##_b z;Hm;$r=iQT9v#pIA7Eo2SvP{}_F3WO8#N;Rgmo$XOKjH0olHN7K9Zv75sx)l=d0YZs~wls<=Z61_v^1!w zMdw0|g@CvJ5FlT+0%eZR^o?E8|7?$DU9Jh)fQTIeKCye1oaG3UGsRfE4)&8?_D`<{@gYq`BLe3Lk0tS0S}G zo<(U>kah}*u;PH#MeS~dx29vbb&=bBi6$RgK!Uv4pShLd);6D=AyUgZ=Oas7{I!Cr zkVIO(U0g|ED4MZp zCf``3b&d=*QUI&Zis0A5<288{>FGd)^FM2~B-zm61)}y*L~Zf<+n8z9K`xq<|Gh!w z3GX|UD?*Qa<3qgfJA8?Y2SFZ*bnRzB-uf>C6%Lmx={z`INr|7kGEm~y3yr%daYbzH zf*w|s?du~$wAQv`Cod0DzZ{8_8aX5z^73a$hm+|*W*TlCDB3FJ+)jiJ#99smt_{e{ zm%W35;5aW?9v4gg*EiI-{5tr9uNFs%yxsl?_RaMbl#NyhZM5QS9T`UJ_v1s7t-s96 zK>iWKl{l(l{I%bL)MN3M7|!oxF;}-cFuOCk**G!ZxQWD>CTmjAYO*fCLL-%pr5Cd1 z;iI1gCYnEy2NoJ%69*~eJ0#grdAgG2ch2T}{gy`4fU&XJfkB32mViplGa!r|S;k!@IHVF+R4Ku=UyPmU?E$W**4m}GUJoKQ1$tjfCVd?;uUuDcK@8qjQ|p8p_a zrS;>}NWgtEAC?l8*0di{La4y;#X~1h!n#1CBVqkE4v!AJ@tk?Qzn2 zWTV9^tdp92dz^0=Cf*;%pzFu+kIy7q%$IOd=jTD4A2M^em6qStN>f7e+$+J{joBCE zFUQ=CUm!VT2AaLn%Jide5yb+4b~vTbynHEC+vh|63XE`wVtqC(F=3i1$Y+D@0jxs1 zW0=qAFL60p>*E+( zVZ_ha8*ISY56WZU0*YUSW4KDL;gh5(TrJ6m!cEg^OtHbuWU*!FCM}YrS4)R9;Pit@ zc1~cJg9*6L1d7U+HjoSu(jjnzbtH_u&Me zd%L;>tOf}69$0R11;i3pM*5?^ z%SAa_NZ!@Li!Mm3`>^#+V6{C$T3zV?x*|(@f|g>*JT1TR(l6w&bS(w|-VmC|?+7M& zAH9pWqn62+A4mBqD0~;agS**uy8ASN1 zk_FlSLUg>sy`0#c(|jMS-ot4`?d4 zVYOkepO)P=t*Djces?<2bC`RL=6NDNpK&Vk)aH`)DSY z9cRMp1yXuAtp#w_PkgWnX^?-p^^7pvBnn<}x)1i}$$iB?3?h!JiJ#vZT);t4X=199 z0N1ZC0Y#hYy8(98ET5q<+g9LNxnT7l2y4@0~yApIbWC+ z>3Ivj3B79M3KLzEXyqMv)y%xV-jc7MfpLq)#RKygo@g}drQoBF~5tT zJ({KLI+Y4PH3QO zaF!ne9=UQYZc`~UE~EVAO2FZ9p-5$+gH+DE-2d7$$$KU1uJC7fx(NVq;L6g;{@`x_ zkvcasq2ZQrtvsBnavuSAOC5Gg zl|*cElZN&ho*aTW4+K%GXyXJ7P;{-13tX!>k6YqkBR&rtY`Q)Oax>px(+Ba+k3JX@ z+|UPQHDE9_mg#`>0OHr;6fR}d;1Ah*b!CCvlM3XoBtnRkM2SLII}6x^fP_2PedtD% zs)PTtc%!9o9Zs%PFItpuQEl}g?)-3j4Mv@O&xY5z+){J5zdt}~9d`dRD3sRR>~?-Mo@iIk{76R>GZ<$x+-%HM!IL{q2fS z(K|(t%>Aq)pUju-E@ebfaPSzKzcDxrTMizBZ5|Tu$e<_zHHD$TpNgz%%TMqZX((EQ zgkpItVm&)g2K>3u7B>7Zk*-x#-MOKN=lyL3tZisT?m`vHd)FE3)J16g$I5E_y^@+5 z5d5b-%%=U3L=E;w3>i^-CHO7hxsAQf(+_FfF^UQ?*%Nr6$KGyC61=|96El8>S$t7a z>xt?3wFvZ%4$2}Bi4KY)Ff3;X*b}Sr{J(Yovv;7(#~tef+B?<8o3P8>9{AV(UE*JJ zlz(kX;9pBTRVDVQglL!SggW2zuc6<-7~{Qnr8}d%f2H0TH8#PSx(B0K`yi0Iz8S{{=<+iY#0xek$mvC?*pk3calg9Vk2rN z(N_bpV}p97b!knc1UlX+g$_Jm2&%Eda;Sh#&10;n1lxE1?umk`op*`kJ=hb#uyAZX zQ0Pzl`(jU5MYO#_ujwpN2wz4yOqb_pNjf0J~ySV$e^R+bocMYyp39 zcWWkXjDfZ|-T?0^l(izWudG$vu_TFoxcD*_fIB9BO`;CM^LxI;ufTHaw1}L&{^r<{ z6u4FbP-vMsDXO51gLIKymUBWmDA4G2F1p?(gGV%y=N z(%sMmK6QxX@T3NFI7lv!7X0U{;E3USm*{oyE%Y8} zZstMrcH4odUky>u(j;yi3}UvaUl43WLJlo9mo`I@gss!ytHZX_P70Db3efI8#g)dB z>wKNA#top)azRF*0peK%HHD%;r!PrKz+jK!3LJ|tKtujj3s{z$NAe#MZe#JA$ssnofWbyDX<#6+mh0Ynm^I`?yixB#C8z|>}4>wOx7CH{C1>b&b%Ukhjf zp$nw45Sn{e*`8KH=pTnpR+8r)(^N#xHN2#e?Zo^&ai#vz#!U7aP&&Ud zikoeVK1<2Zj>#V# zV{C#_KRTt^F+M$Xf7cgO7U+I-O4lj}k%=#N0Sn00D+gteTbK#qhQAEpR}k*P#}IDB zDOI4d&3D4pQm}2>HF0dHb67rT)$J}NcE*?L45a#skkpwPUX=)>I)mNNDEK8wUKldn|4o@nQnuca0>OXl8 zKTCX8m0|15AK&l(bEc{_CZ{3P}vwrl*3l6^8@jYOo`vUd|@lZ5!a2&vvgoeXKI03vhKAl|xf z3W*M=22j8r!yvtBkV2T`fj5-nw<)bvkAVWJ_CELN?%FWhBFS)D)Z@qOM+eok14+u^ zL62XuOdRb5cH1S(xM|tsV|x`Z`otr}y*`YAoCpJ!?Q}t%yZJ7POf?&K9bMdCRFSC= zGZPnBL1wzjfgg0awLtgW7f`&C@FKKFA*vR{c!m9&FQFgs*agWs0vp*eu~)T{a}XS~ z0?}!Afp%4C-+j>OJ`y9yoV7d6N zKal#q8oXMw92djWU;v|T81hJLnk{FwNKe9X7lmm5cs{0MFo+cNezTQ9T%Q=MmZiyhbHs*=7S=En*W18hF7tLvN-Ut z#;;l?j=U|9`&Y4t;*jeN^q*1UV+H-OmIVDB3-m_-WC;E(*h;haRZ@N;cFF9?^i#0{ zrcR#$a2E?&UPZMj2CQ;$2bvT=@BpSj6hg>;mEA+b7rS%ffEqwhdBRuqYf_>X2^+4x|G#OfJESBR!YF{Fu`X86bb7%p1x4t8yw$737-|dt3jP}0wthKy3M%y3?-n{ zB(8G#sR8<>{^Z8OXCipT0pp<^q;bZKJ-t%)MocW$nFg$1Mx^R#u);qj=~TElRROdNSPnTAnukX|#WAne%^8#D?G6PZ4!O(P3|p9?3gji1%@2k=)2P);-LNU4NPFXO zv1?mIG!EDpJh-X&4d97kyE4-Y~*j zq$RPmBFW#hK9Kw`_ax%u*vR)x!XokO4i`uLu7voD@B~YKyH;TzKYR)xc`3Jj!7o_} z&Y_+XS?3V9mO`*tXvpDuL1pa%V079E?*SE*LuTQca2;3_djWqnseg6LVHfqU^Nq_j zbz(B{YL&S5(4zXsRC=YJezmH?zPDuk4-O#j1#XnUB*bO^RLZH5O(EU5Z}xUGr?=(!RaL&5Lknx6B2w1SphIY zv1qnqcq;UrC)uRDoqJ53D~9UF-3wFmO~OQ9jc}J0SwK|V`9!a0!52_+KqU|z;s7iP z^#w$BvH|>G!~hG30aSVb)dB(o0LoajFeuF%`Vz@19E$poPnfT^Y{~XTIsLS^gSCOc z?gTM`y7aIs6I9th9Ooavi2q?(g?-A9`Ue|K@Y$f`=0oV&z*HRX;QYciatx3jn5K*X zKPuLvQE`i5j75MHng~eOt5qTCdJ2N$bIMDpk~oOI8o&-M(C#{$5C{ikha6)yxCCoM zdx?^2AF2j4lovp}rxto288!F=R%oT?&HbpwY9)A3xOYdZX1oD9jQB$q;1%Jt|F9t8 z&)6R*;(LntViU^0S_u;MaRb7a zexmPE>N3%umV`?~z3}~<;%DIvh#}cO^FPQwxwC>>5WAAS+Fl(v|48`vUNt2ARrbFH zA1Eg`@98COUW`Mz|Li;&f1OrAyaBokeomnOB|o+35L#DEJE}M(kjVeSlb%fx(IEU- zyY~<^?`?eWZSp9fe%t4fb9@{LhK_j=P;)1|4Md6-iHP!PVsNrR{CF z1LTEK-a7cdI03(}`VD^)2sOIuZ~#QqQ2$eoKQ784#eebJkN{#BDE=Z)I`1ndpt=>| z(_Y{l1=)M<_wBtq^djm1?7t&)i!fKS-ST3_qaCDt|Y=&vQRlg=;4l_b*nDgjOm z&=zbV_9XK#u=)M{4@i1cy(0M?PD#z!6WQYP{Tq#MiTqgBg^GVT`S%Qcz(oEm?*0uXVfbA;CX$&z_SJG%DSq_cr{3B@ z=&Mqw7EpZ-bVW|3T^IN5dLJ6u=|lQjnAtB!s zfu{d(nK&aISbQJC;k(B5(X)Ej z9dl$gV=oCk&6;!lxA53sn3-LUw?7)jH?h`ycNyJOZdEo0FioBlZT$E807`s39x zL<-5$&m8_3e`gx}A;n)*#80Cl{x4M|Pel|=8=S!}YQ;~ZR{USoiuz?1OPIwHX0e1> zEMXQ)Sj7@nv4mADVHHbQVTp`Q-M5Pav5Nz-ivzKX1F_XWoMIzR*a$8>)UilKq_R*E z(KaXfiiY==tX+KM(%ut5$s<BH#ypxe z9)C1Zum#uJZB}I;&FYcRY2%A3dwjIz@MSH`US)S*$eO)uf3(5wkMg#YSh?~0Rf`7~ zuk1z8tI=Zymo94kd*y;f2j%j`@L!1WwKoO*Lf|e0<;wZdv?>-ASk`{dQ}yBGJaJ+{}6X7vn{z1{3ZCJtdH z0<4XKT3#A|s?~O0i19^C6z~j6_ars}{+b0mhVT-XvwaZ4%~{CV8qv09?S+h8D9RTs zV66+gFB9==W4*clJvg?0_u!dm8=ls@j&+;)N7z`myP4rJ@FqkScm$032$O8lWcer} zs^lMqm%INOe7l7=SwE(bZ3v6;OOYx3QY5u1g!RC`=yE#Fz8B)Cbn~%Z_aJ=gTRlNy=D>$6i?@?Qdhq-OCRYzJ^e`fOvMM8=xUQ)6k%CN&#dc}U3N7~L3? zx<8vYdPp#F1;)5qV54F-j~^s5`K$2^XP$Z=osC@q4>eyc#(4N_q=SmxpkfylBQV_o zJdKLcN(Pm4Txd}hi)X8&b9ly{gMOPigNwFYc0V3ph-k0Zp?1^UlWDQJ(74lB>Q^w! z=kjiZ?%>*9Rft|b7o!7^LN5>E>A8G_GZ(#_%enSAx-geF<^a2M(d+Alv~szHeSe9k zxbbVMxDZtAqT(Aw4ZceMBciRY9_QgFRg!|Fs9K|!MQ{@swJKUBQEh%MH+~txqAXX= zaV&Z+E|#Q#z#CAn6?WM1>-A9Yl@UCjGtR?LL?q!Undin_j>Gz=N~B;AOqyDco4qo^ zt%@kdgT=<mUoik<5`;Z@ ztnHTWuuU+AsyFO$Zis-_Mffe%Kr+$Gnw(DYF)i{So|?%|zmFDvzex^}fU{hqB%~bZt8Ro4`?af{ zPfK@LUeNPGfbsaB6HRC=q~!0){eDx;{0>4mBwS$x{5M<{iT6B(YjoNoS@fvWUfAgp zSpYzOXsInvRCI}op3l|_ z8&`A%*g%HD#vu(pHpKgF0j}x7R0UXMZ*<#9L(yk%5`zEhkH%h1#123l#viccEn-aG zoX^uYVE?ZYJ(u$#0n>>~ba4nz&xcN(&yDH8_Gyi%KY2r>(MG}z5h0Fv!KlO(v2VK5 zvdg$}8|ps(MOF8F-eCTKrS1SF=kuOIc77m{C^!q~{&}19t9DcZm#q!GZvK`?BjAj? zq){4o2u+&}lvrh$DDDu__@F_nL$JwCI>C*4Yg}~sj)<&J6S7guT=aNNB zdQ^J{#1Zfvh(vwQbLcSF=ApwTI!yImO7$LqdUJlg9_qb2BG)AXRJile-w!kBZ)!dt zYhonW&zujP`V#6k?~XK}EilJ?Xw=IaG`);>Sb0=^Wdp7{T}5>-K;5__n!E$iGVxiD zmj^P`q=-%(j9&jP>i0T&Uj+OxAG}ACVsbvD5ntRFk;b(RT6KOQI-T=7jY)AY2;+R- zne|l7V@#qTJ{_a`=*VEiB#a8ns$#Sn2qU`s0WEh_)iV-Um?cT~zPU=?=4idhc$)lWX@WraO=~;1p$Z^~_cOaL>W-#6=^w~w-oAFwcNIF z7CtIl*sOhnb36EHtVN&C;{hu2ep3Mf4}|lh8=w3JU4DqVycS({Q0>En=0^w@Yk>=r z!OdcT8LMaNnAX&i@oFCIHYy-b1XRa4@Dm=c3ppP*WgLys-g`XrE?y)i&?qCA;; zx?!wE)IAK7toVNn)~fb5YSE#nf` zc2taB+hycgh5ThlU$z_J>@vB2Hg*I8+rgOVXZ0BqV8)_9HvMt%=P)AExMqT7Rxz=nZ?6eh=3~d9OirDUw+j7CL}hk@nH|qs z6Y;|MFLI-M7q2+-@MA_>qk9i4{C~tXewpnEBO2$XOh2+PcK_o-s15 zDf1UEoxbRx8T&2Dd5c%9ICjb6waXT*J#xjeHKRGh?bR0krS^Y@GiHY}j)(dV4;^#dd-5IGi$1`ihsA??4@fK}P9|cQXC>6#iDb zD7-cmxsye{ir3k#R$sx}YDsZ)AL_4j`xv4C&a$Glh`(IR5_=%bc6Sr2GaqE4wWrCO zmJ`n<H~Vh+RFaSnwiMMlBTz+WS8S{Z9EVgXVv#kIkh~H?#EIVAOM2ErL-duIA#3cFj*$gGRocL&h~+oG~lN zP=lV!^lLbOxt40OsHTTv{-{xtjRMzk@yVE=fFku=2BVoJN5#aV@qW5&z@X>i8F^|M z-+xvJzE_k+7|a_@d0|4{$h1bncneFGZJE5U2d&us5`;^$;Q;nYtXf1{Ahsum*7OC`_ z@wWRyhJ>XoQHxNmwTxpuU&}-$M}Hva@B+{ui~iX3$Duzi{ur+__#RXdlZq(Vq$2(= zD&qg5BL1&J_{%Dmu!<$DVhO8Q!YY=qizV!03A|KNp#TIOn7;U`H>sRL&?U!FPrQq@Y;}b zb7wJ8w+T`D<;eY=HICJs5hK~CTm$CJ?(;PH8zx32#Ba;Mxcy75ENVAVJ63HHThP^+`<>;V)QGo ztU7552+EE)Wqe}g;-v@kYUg0Q8c@R%oxIKM9?RkvBGS%T#)WcLm3N`6U;T_GPQ6T= zNiW{8SN5q}yY0a81+}cjTR4ivUyR7pH^_gI%TTm%y6thuhUDQwOfKi2UKV|fi^i|MmFS>7eUk8C1kFkrFqo>!XZV4I&q(mWe9Ii%9$zjRodXa6nHkGPs>&d-@CI2pU zuO*+`HZ`c#L#<`hVzvQd@H!jk=Fnjm6+b1Vbyanp^X3N65x7VfqGs*U6adtm*W3={KHu# zzvuX!lHchW{IAFeoB-rrHC)ovY^&o@#g@tC6sU6QNHa@(r?V;PsE_E=(?vvg79chO zri+yl`TRIR^7$_ z(J`h^L+bC;+OWT_O*I315MNa@m&*k@jMEN&e=jW?>aSPqZ?eh+7W`^=q2AMp7#hK4 zeMLGg;J5wTcRX1`4yYu8HOuah!j5on2SZ= z9$F=0IA70_tMR5(eiG3TOSnnEbRnCFVA7sMk~js9s;$OSPvb z@%RtL_*@q6Lufcdc_J`UMHQcfiV?mzb+V8(5k6Q?OT$Uv4aYQVP_Z?MYfV&bL~JhO z&s`9E8(aOkNqki9WW;4pYn@cG0YFy{!SvVIXw;0}fsB5a<)J*85$v*5Y!WX!S%}?|^ghVRqBB>R#8V4ZkEz-YzuM?nE9=+W z6%p%M-x{k6^}43lg?do}L{#>oGd|oJXG*CxSi$P!9l5pYc1{YUN-% z;TLL05a%SmJrI&O6{`dv(_Y?*B=4=32aeV6tFCo*E|*}v(^PBRSIy;#W5?$$gvW+r z!IM3;1F40<;~`i&V~L$9G$5?YL|)+?knKEa^hZa?o+&MBavvTMsppl;>v?m|OGU6~ zj2}|fYUK~9(r(pcg7arMbRXaM(o`B0&o;7TYedY8MAE#+%%(Zp8lh(pjzT~P6Fx*U z4`+`ymiA84Tx(WOhopI=3Q*z-O5P)GC$XLxQJZ{3zu-Q zzP2@Q?}?*WPvc6Nox_Zjz+TSPwQ{{M#_Z1I^bRzaUXN#i*NbE%svn0KgX=}2%{JEy z@lM2ekny%I`@_mk8@q8MEbPkRA7g*Q1!tCe1W&!>9$~3Bb@`I6K{g&?5pDMb&ip;X zqS!pzQPyeOTi6I^3!>d`K}{xNg{QY*9^b-}<8^VUrlZgn6nZp{Q*~QdtlEA!(P_IV zQ$QJ%<9JHWFM~upRRTfD;8#+cf)e;9%AdC@yZcyt3#^kY${>@sQONt$7A%vHl5C3$ z9Nkh4>8(y~3!)X_PYk=4KZ$h`9D4+V-olvNfi1yDaBa>uQS6Kcc}{28zegy@7Fxqg zC+-&6>EMGAfDL^gCSU8s@#ZbKg=3??^b!RaE*RDp6hnt%`c-wEPJjsrI4nB6>)OH6 zTd_9AKRjb2E*I3+R^VbQTs-(B+Gb@huI_Z)t$5pKE3WNt1>Uja*TGWT=(g8ZJhp?! zIWSEG<+h=mxfM8cepKG!pk4&<+{%n;aW0o)W_uJpbnLAxISrvvx!;)H=Azn+vn`U4 zkK!ps0Az0(XW(U-TO06-#$!|ntq@JQ$AFsLPVe`@kd}!_0S`x@P;u38dJqyc~40Rn8G7;P_f;B4v)~` z5m%fYl~*>93~yyRcBF|b{wtl7kK>qOZX37)Zx)_|LJ=zTI29^vE8&W57}w*t1L$pI zasAuI#HImx=d~KjoEv5GvyR@p_k_g%Na6SXmK2&|3Y3yh;IWo$g%NMdM|*(O5<9>PITOvn;la!Aq7!vGY;vw2odg`?QpcRcl4&*v2$^-H6;f_!Dm_;G2Gx z5Pw=47ogyYoBe{D+VyRCmIqU=ZzoVcpOyppoV5*4L_K&1HJLy^0UAF=xoW%(gUaB- zaxlCihY%*8#)%sY39aQ-Ye32fe1z|TKVNffgXY-A5;!6E*_bG(<`>K4FO0^-|6Com zML4+#ZGG3~w}s1&z{L2mc&wB7DrhTjs1cl^ZTX1@S2A1E2MV`icJ{RLbq?6AHdRT8o8xpB} zmHD_76wAQcfw#IE8}ZOltU<1A)_2gLx8kLcXnExVI3?e1Fyd!ciwX34n7n(GKIhC# zyrYrxb2u!Sjz$Qw-O-r93xpdqysv9~4vu}l5#8z3uqea<<4j)Tvdzun7obsy5{F;5 zhL?*s!e+sbsP@}B*3A+KOykBl9*c+CXu?`B9peo+2$!*9T+`0SLsA6P=kN!gCHX?x zw+26A+KBqj<>o#qIpQCq!Mk zZw-FL<)QVght-ci?5yb2k@CW=iFdqCtDjzhIhx+FISl>&+BziuV`e10L*ligD|26E z_&b?M#H-A2e3sW^!FLDFgL{7*|J~%+#W=rExEa^gb{mAti4ACR522*@!J3LCp2Ldv zZ?$}t7JnvIl|S)jZ31I>0&A}SN=;*aJi|6eCC;|7Ci`3jId%(s3H=O~oI=a#RYIJ~ zVxyV(s3tm&C9Z9eFW-#kR+5{TCTgnPR-AGg&$QRrsDi4dNkcWG>`fP!n|I-xD$vgvF;PDL^Ef<-tHCqIq_d|UR*d9qZ zG*j}0CZfG?JQ$bZn}14e4XJZ{#FsLmzGCpH*=w*5IUbfR9^q(rU3`uA8KmCIOX`vB zCfY~L3ejH3;m3fG;HQ*^!`!vlz^_jPd*6XRLx z3WUk+-h(Ah7^pJetbuKq8qXTsQ}tdCzNU)&Z|>3FzzZ_@tk7h6JMUq}TUt3bMCUT2 z0)yGuf~3e+I%0KW{8zef)fk7mYuGAeIlP2PKwKfxowjtlIR)l0|9xi3=Ze~){PyN{CH5stU7 zYGt&500DS!>KHt^QE>k!%1y=(M@S_w#_kASeQ-p>V)wsGlIuKteH6a-?2Cqy#W)jN z7RC{v=@X6G>ZmyBTjp02`x!TM9CbhO2yJHR_ZC{sIB2KN?TLy%e^K%|)JUbZxn4^~ z#Z#YBdQ8fiLNeOj<$N50`Bl06fCw!dlak@e#}%R}mz4ZGsqKkvA;xN$aVNZUSYjvt zB8)!9>bzHV`M4OsrJY`chsvA(t;=f(^m;)^_X3161e7-^)65;M%Y_8Glxgp!t22Z>pa)Z4C(O7FT z))b0h=V3F*_?yIoFW%dlI6jUIwHRvjP{jBcUpwYI8ebPd9I`!dU1rHcQKVnS@#u{E zt|l&h2t`tEpZ$KEXQ{YOzL4|!F4U*i_zM<6sI&P?8|17>F* z8QZCegYMUMYW#TJsFqCJ$$DISrv{IFak!gtzsK9DB|Z^lFW~KgsJ>H^&%xzP=&pAG z+(-v~fb9-12k1;dgzS1$BNx*N8-?qgnl=#ta4lr*7PP3<1N2FT55M3O?5w#{8{zCE zyz7H?@tGcoM#v=`6ePB`(Y^+>TRv9<0M_jyqJedrm>TSZ z_JDS~NGl-SQM7W2R$uTg2NlC7qp&Wk@{50xMnCK#^~->?&#%!>t}=E+HPP=i`rQY^L7j0`2DSTV%9w+U+kyf@zE3n2?;K1W!jBQT zXXAKf7OaJv@jK~Ic(oL88n0tCSf@Bx1FT+$z5(ZDeHb30=sEbhPc|^W*AeY*6ymPa z6oi(+>SDLE0AYVAOseM#E^=4IcWQM$yK55M zer1wR=0i$vr^eb{6U+|8iinbMic39iFJ2?Z}wgk0fLW+`gj+(yaL1&6b110 z@|5WR3FyIM7h~E2e#J!kUTjQ>zig!R`aou&laPFCN}O|k8K_D+3H$j}4Wak<*d_TH zeICCI1`lmLE4C6};E2;@-~xX4rJ?pAUXp*lR2;bp{bbQ+;mvp*8Ybj(c`)yxPfFMe z80Q_tiqI~k+m+HFikFF*fN`VD(B!+$|ADxy#V zL$Z#P0co7mE=DWz@l%janx3%gD;zW$aR2@Wj;t$9MAZ47CL+9g*r3OofJ5@4N+?Z4 ze4aY^+)Takr`bM-<6}VXqPR|pk=ZVwBBJ5RR@Ytyh2dp?9 z{R_1V&_UWIoC1#G8Zkc9$GbcF7q>F-7{fK*cLO6i=5%L0VeLJp0A&qD}xfYAd;>74o^ zgi!$H<%K6S=oK|Xh0IQzfx{g|+Cw(SI+#W?7MQ(IP?MRjTH0wUBZcD?XsQy=R1YAV z&`Wcf;%X8~{s%E!)eEmca}`tz-d{8@LefMe97spw&@BV_fP^E!E)F0g`S-=oso8T| z@wrk(U-;=>L77LO5zHfe4leieN0?A8zi*3z%T3~PQ*k-26VqoU{H3%D@m#1~2uHws z$qWef;uNhFU%PmqvBEkrHsVR4e4t$bPz?c>7nHdJE~msImw(QBC>Ml#l(#mQ&Y(ia zYea0fE(VD?hXeeUukGVjnF~EFSSps8~E@>-Z=~moWrV=#&VDeo>)!+x81w zdxqmKlfPsDkK+mNbT_FG6vOz!*;CopNcFHehg7gQvN4VAjZ=eIl^LJF5OLf;X~Jgw zDD^089S*PohLRz{IQ(M#g3#)EA5jJyffY5LhmBv0 z`yZ5EFh4FS08NAf*C|c(Ntphr24b7d-3{4K5m?UpRD%K@4OM;|7p71z z_ohvG-T#-Uu)Xl z1h@LIjU^FwgmT%jKJ0y`VJXb^W+{$`Pq=Qp4G+^XEd4-|^+t7E*uuF*tWJeK75nfm z9+3Mss^Mqe)O4W1K&VlvZjrjo_D3tr_&6H+FW`Jw!+Wy%5?D>Wu0kA)b7$dwA)%GN?B$( z4g#e8>Tu^2TWxqj7P0uGa~P@oI*?w{y5uxt~g}(PcE6U~kV#)adnIjc(u) zsaSRpJD#O11YF@-IBeq{vI$1$sd8z2C9y5w)$5TD$P%YeO^(@wi{oU8Q=ATWq^?~p zjCqEJ#@yT}T{~GA^9_ydGcy6;05X8+I}bo!7>B6u3MQbm=yH(?{W(fE5X4Wu%z7vT zONU}dM(K=SvP|0!)s`En;aysHl+Jr6Z65 zPIk(BSWga}#1geQVxYbr{YwJ%IY!U315+P}fn1KTO&tO1Mb{0;NdLn;!tkvek@|?V2}=J0={x4)dl>XY6C!Ty zJY;-{jQm`mBq%_{Jz_2q7eAsC5@P(nVxz$C7$$=7YB$Lq`lOV}?m<{LV!VXHId32& zgWF*)P%v@AF}S_p5*MRU;`aLq-`5=oeCXiz2jN9JXFeeq=>CnN%li%>O5_E<$q!_a zqdL-pe|~Bl{O$k>`JHmGhA2{>`29~u6TiFQcTKxuf8rva;Whmz=`+0i+dMQt%;j^u zdZxOG9!fd^y$F~N?@Nz!NIQVHwNroSXN3AmJycC4maWt0bGciZzd9G{NyKl(C5JXy zof}w#79?&>e0&_z`8cJVj%fp9A2Nuls$4v2ZQ7s%X`0ia&g=dSEX&)|{Mtbv9^1k| zC{9Fz-yPz2NAde%xci3mkjKa&M*I$h6Td^%h(lt8RAApCd=rs%QZ=MP6hi~~z%c*o zk!X!H4FQ)OK>#$3qbR175Ln$QQVgt4i6N_N6It1b^;klLjJ|kYV!P0~=L?_HdGE4F z5$pWpd7+vi9w{PSVy^R%+d)c6?z?xOPhwBvHn&ngXcC`uC=qbKulbew!JsG|Qw3^( z?-?RP&jF}!idlqPMOWwB zEy{Jeg{&qupd4!qbk5f?xSI#;eIWRRgP}H*@&UgOm^o7RzW%}f_vTroag_eS0hvL9 za6cH80PiyEXHq?RA^$d0eF`Cij_ERys-!q%d6T3MM|8s8p#NiCcRP%KC>e|lNDhPi80f--vBZDr=;DFp8>gqhZjRcBqlc_U{C+P^+SwUBQ9=40M`AL%_96KNNY@lh zKu-YjXI22$2;(6b8?WxG0XRhg;=eSsqRsb#hUt-vuABa6C+;f&l!*`(_-4eN^M~H8F2kK!1gL74Rswba;0~sNC}|YC5cfYNCv( zWdYVj%a4K`LtG){bf7%Kzt|_DP!2HxW5}-Q z;ar-dx%AibMP=?SLA1E{I|}_(R17!H7d5%R5^@nXaJn#JEBD(fd`1 zLg@AGF`C{#!>2{4l!&1z{V+;zwetX}nt30E{7;-D&iP0+j9+zyNeOZPXkzmMu{qY( zU~?S9qVGZ$^Vyv1RWng3VP0ttVCq95>qt4!$vJ>e2%aVoOKCvY2)S;C`V>`x*X3M- z$N~a5Ur5u>#IQ6IXW<_KF+Qfj1OF3j;-rw_CC8~S)Q@#*3H}k^&jZ7c2gA>sK^*)? z9oWZv*QP?grq7=NF{pCW!Mvt)FXW)#CZ6FFk^#TtJgCC3h72^yPmBa8R#Pep==)Gb zLrRIJ)E=OC&9G#6f{D76@k`aP2h_*QH7wxBR3eL>m`dK6mfL5PK{A2&=c2J8W*6~g z>;#q`&Ss=s&?!*9@S-4IaI*xAGg zC&Z+F(G1zFw>hSP?RcCq#_iDqunav^$km@mT6FR8M2;}}2av6Y^k(S$LubfVox7}c z%;5T`kpumC0F;mVq)iuVZl(fdP$lDUj-rSK>~5ZcE2k(z(=Dpe5_fUKM*3?rkrIO>78H^g=H65R*c<1Sk9&8dow^4R*ynN6+KDy zFqa8MEgWbg9B)>B0DON+S~@f7d&2Ql&}5-%wg6}}bPPOq___lW{RzHsPfUcIJ{7~Zo(<3-_k?C>M1jbDIoHVa0 zD`j~+h6j{{ItJJv9WyU9#{oVo_zwtFEfdpk9#TL7-jAXF>OS7ds|_H)d$-Dgil;`}Tc-I2-(!7RmlWAWIz@wQ3 z>t;+M6e*^FAV8DWKx&^97HK9*$9E(&N;QGkVJ{WGC!xW{2@1>yMc$%uw0b%4J1E%i z<%qPT+lilon$S5>mz$9gcdm#+L?x;7(C~h1pL1s}sCjwc^ZR7(X=|^u_S$Qg zv-fX*y6)`~V0P#9$nB8QT&fz}g(D2kuq0BJ*W0bPYZxCPvYXF#FT|zKMT}=g@&4 z^zRbxP}6Tf*+&1)Z6%uLaya;SaU8~X#lai>KZeGZ&;OhzAOtS%+9^0PAKcvObsQF3 zvjZ35mHS=azcv=pLK?W>S}9AIa=1jBR)5lVCP;!n-!nvSsV(@f^$%!bQ z{w)*wCBg*947zi4L-i^XlsG(zh>&?D&BJl`@Gb+#E9W3A>hgiB%iIwWKF5n!n=|(3 zGD8WK!oF(Y^WfRDF2H-u{;2K5fI*;P61S^VF~lh6eZV#tHo^}0ws~(;!Y{K&alcf( zZre_dCRN0X$p{ykOg4-`a=(-XOeDEHubx-v8Dbm#O&^GJzeJk#B9j>UfUy{Qm+d6b zWHYo~ijp!Hm8=?Fktl;Ps!>KfPNGaW7~l*) zFed2?k9%Xu;-Keq)F=uCv7Mv8yAYJGZ3Yo#o|;3zb8S^=%QX8zoT=%pN}PFAoL{DP zMeHO=foe4xG~eAP42c|*f|m!s!6>YF^E#EAefy4TQ&OVuXnIEf6mk^Yl*D_AQWZQeZC7czxC?u_JTJP4LtgEAtK^l09Puc#+~uwKeolP9 zLe0ttR?7QSUjCe1+A z>Z&(ezCN(Kj8Ho3%3uJuZ+aahJgP&z@LDkyR;Lrk`OB^i&;RF|(A{;Pp`mLF)eAql znrwo%Dt;{qKXrBZ#LHI&Mz@g*oGMNn@r?j$Bhy8Z!q3Eggwx(t_V27LLLDdF`6@%kAOY8W1<>9a}$euiX73+$bs*C-X8t6immAdw~~k;a5I z0lRF-?aYs_ZMwJsB=LdTb>enXySljKyn2qi-yP%btg#54S|XFZuHGK8T|K!_zAX}* zUnel(?YMC2j1K9nN(Tz>4LhsibhS=~w=+60(0P(D>0(VVHsCBjFeb@SSjlcL%2g}b zUUv{yvN3lMRI*GEzysVcBx0+sE?w1fol0~?1_ous)Bh}<-d&as)21TBHqFM>ff3K9 zJrfKoieX`u1Xb)nv*n#ImekgW3wDd2hQ)@} zX`ykYi*L92DfOikoA#eZ$;FDRV6PWln~VEPH;#Lx%SuanuwkR?BkV;&kJW6zRQc*q zw>Ui7;qVQb@VUK&YGO>ypnwb!RC}z%nA-3YHY5u!;83j&Hi*Ku%?B>r(72Iyw`)RG zyQ<MmPVWRF5FW%I4?xjQt82HNB+TRWA>rlQ}3*8^uL^)es68N^==jmUwn_= z=fU)*ih=I__g{eIB+Dk%MJoQKYVxx`gRVL%pFcQ0V&V0l=-f-@T$TRry_y;F+o;ru zkF>#2)zg}iK%ojJuqse(1xU33NOepCkm~u$etA#hqKlt1zq&d46Drf`Ki2r>k9Bu+ zly1#mBN)}C0^MP?$KFaW-lDt8w`lWX(d$w6 zRvyZLT@^UOM|DV^tHIQHjPlOr4O@qT&{noYmlGj3c+9G z&(>|l%~Y5FnQ5ua*2A+uu=Z}jWqNaXY>uuo%%U&PfoGP@%+cx0BiehL5qRiAkT^N< zs7KQ<50VlB#Im1>=s6m8fk>XiH>u53>SrJvvvc4a%wg~r-xI<7PU<-cGu1jvngI zp}B?h01hUS3*1veQ2HtZwWWXj6@g#|b)C+0bX$HimbG04coH3__&n@D6(YNW($r5* z^e|Czt4CSNtHmBC#5ze??m&_#-OOR)drY#t%1~shTIV)XbytBio1^RBiR#1BLd--( zA3cS2w-e*t;OLP2EK8K=HX!-TXb1XInyX5~2fm=HbiS&zkD>EO=GOYNqIQ?zp`A&o z4z`h)ZWy*sFM2FQd?wF|cFKvfqWFoka=Cwx^VYX=*6G{AYc-gpEes8%@}RI^ogv^t zBId=%w7somO5R5-cL!oCl6jT>-=0-fw-BnExG>dOxC&|`FD2?0h9OuCk>f-iYj^@f zV3lrOU?B5MYdp3c*(bE#0$4>;%x3zFr^lwS=tEp%6XivBVAex`*&XBOcA)o|*&$>V z!qCm{fb?Q7purtrLhhi``#i2~*RZL1zpkM(%kgHC;N8L_2)-zQ@fZ0u_X~(3dI%?)5-es-P*9m`BAf90-X@y1m#7v-~We`0?~oa zBKfI6GLq^qirPMhXkFNt?uOiWSPMK$QMiocZX}=Aj^vA?=Dq|^rY}b2qEk87A3eUR zaw$}~t+=`BDqT+r#1;jA2kot3Q3;QY2BG(WH82)YY|A!YgHzhR&_M_5(x`bjDY7p^ zcFF0S@1K73`Z_-gp!Iq)mPwPk{)(u#Y6v|%tbqYirn?K#DDB9=WI>RJsU0YQfx%4r zdc*AK{sWJws$8zBoZnn^mam63Df!1*gRlUi&jgfCMQS9ARlP&iaPqQK41YzGwt@&Q z_FsF*`ue^IJT=Tc?z<)h`NN`2VKPSEvpqDjNSTZwb{ac1pSyyxN9L7CCeXLk|Iz_f zeJfS3csbcsL9XN-a%}>+;uXAToy}-Gh@ywosYtzaoRiuq$K1=loH&F{LHx?4fWHzd zD&oc1zCF9Sstfb2M81I&aAMP0Y)~8(WE><&1i`Y_;~d!Z3JPCUvU7<_f8XLzUjeCp z2hpITUrkQVW^OQ$Ab}YFG-@8QVhYH;#UjG*W;ZH_iWVp<$W^sw7}(w<0Nh6!fU-KS zG4;cZ#uoid{~>$Cr}AxGvqpbYir-v4$**jwQn#2f`P^LLrp^tE-&~e$V(6VmFg3n@ zF2&EC(E6z1EM`q!9W_JJF;4LVO`*$35xjc0K)6XS>F|d6GwUb%WoG2v3&gT8SNO}` z%Rnso3A(tBX?G?NU34e3J#F%od>&Bk@FD00m~<|=IKP9@gZ}4s5yAZ(%s1q-mC__dLt%4OtkOfD|%MK1K%{f3Cff{}f#l5W&M;`;wH zR|M|`A0xY1RNfSoi-_K*V@$q+Ju3cOsyT`v4{nCednM7i4jUCP6lYk4HFZk9a9h;; zfUn>>&5!QvejT3e{iB)kU6H+iht{Qk(U37*?jYZpZLS#ZI!9z5)&cRZ57~0LJ&)c;cEFtAfoW?}^Q0UC zBb`TWg65B;Ouw$5r(<^tftgJ#T{-0MN*&{tJEJyzbca{;i~VPBEwYd8(6h2RaS|?f z-j^-hUcvo#bIfR-CKi2jk7`xG(vJk0GQ`qYkbg%Yywjz-@1v{Raodz8n5PS2C_h~%A-yv9fJ-PD8} z-;Ks+ba-BaW}KoySiqoDtNLaUdWUJP%+n1WqwJS|5MU_J?1sAi6HvDf>l8EYjMg_# z#idhAqWTmirdWdD^TiaE{;my0-wQGGNwb`p=jr5E$+}BA#?hzH_4lx$x~#YsQ&bjW zgWY3C+vh&E^gYmp=Ck+?TuZrmOJy9STl_pmVk1LDlt8lyz|LGhL zt=A^&u10IgzSv|5)?uf<`^Np#vYQ^Y;*dNL(P6U$BD#GZ zi0FAw)<2Z#&h0nVf)I^#XLOe42L#b}g0Q|2*2HP5D`1FLgdqwUO?3-bG@yx6wRDay z_CNT#xgn-kouKRCPGw(w-JDw=phQ29>AvH2MyW9>zLk*Mx>ZZzgt+%^r7a6i^ovQc zYh&9KGYkB;D@FdCom8XfU+fLGvres2sk>EAr5EPR-D*rF6G&m*>EkIiQneMD^J6Ri zX8FY3c{83wm@49k^m4dOr>gnT`{_&NCHy3zfJxYxmyXLa@8Jqj12!2M!PLp$up2r^XaO zjJEmv=>ij|+g0*DZLi&4j{;m!IaRfmS?&U6ue3d?QzIr0dZQ_O-FQ2auP&7?*0J$y zdjW`Dd8{78juUgWTHBKz^UnO}J!*{Kd$N1j|GkQyK|9gEPMiAC0Jl>7cx9wudah$y zeW~4@SUiG6<;v9Ivcv%7(DurF+KE{1GQaL1O}TnfJ6)!U*&=Cf-p0j5O1I_4Q4O-F zm^SiKt9x4G?CVnK{ZXWO%G<_%qRj0rEP|Vn^$RmgLkX#TF#0Zh%IOezz8jzdp?C7h zBjATZB9*1t=F@Zps3{kUTo4p#j;A24?kL!fQK~LvO7eFov+_G&O+vf~&I?SF^Nvml z#$DMr-7I~}ZXE8yQ0SEMQs*>8+yl16LX+}N0>|7*C4ZsK*(13i0L(0$z0^*;7&GsH zY3&rG%@y*pn?oJFQAn$tcUVrI$ngZo%;-(9q%)kCUa;JMI6Y*!|7OnTIq!g=++PUq zzgbVrqk=i3GfcV|CS8!E3pGhIa^aE~%1oW)&Gg9H!zaqY`PKpt6iM5z;I(&B9L5*GEU$j-mS6NIGfgdao@L`k~T&!)x;zrEhv|&X>RWwL8kB@Y4}t3N^1? zMul=I6WEE|4lG`hq$@Q^um9Q?$XiGr)x5S|5NDXo{w0_d7QFXdHH`T+$y>F)dZXxQ zRmb&KcA_iKReBgR`nB-1J;DvuX*tb2ygRCQyO*9zYiQs4_S|1n=A{P8662l0OEXNmy1^S> zmzpO4*5HE6>UjWIFCa^C8%KX_SofuwRZL#~wI;9m-u8UGI*YAcp8QT-VXO2%Hn!#_ zHEU5WKT0{uYIp7jTe;z>-J-9;DJ*Q2xn88>br1Q%yi%Ix2@i=1`HNRD1q*KIvutH7v42Tjab2O_@iV zQd?+qbz_mOeXnsq&V{u=&ep^_K+ZpQ*x3mOLSiPm&4*$vbl>a?5 zZL*5!WFO)0K$EyG)#U%Bfxy~unlZODFfMYM@k~o|#rG?3YxD0W?=)d@_8GIP3Cduq zPnev2wM8>{FG!k&msebMcpSI;5V%))hNNYcr z1H{$=B)v8N5ID|IGGlc`|(bTUb1a$Z+0-sF4Mim4A-7&0rhz-yAK}=3JsuRKq)=eMw?1k z(jzz)Re(jNj08oKkTj1;rXUD6Y`~H3?~*j!(LQqlJ8?bvt>H@ zNX#q`^{^d$JE$zvo;h1^ZhK>pWxD=2Yktux^v7jbj|VtDtyRpi47gt9N}WE=24v9G zak7&&ItUsR9mW>?Kn3$kq}MO}bvQfap(2Z5mSK-V9xW1^HrWwd>SZ9o#OaL3P^OLJU$8gOuc^D~5s+J&tck#{p3j!sT%=$d0pu62&0=LK`289B0)fkq{+{ zk@b}>bHpO&vM^mGmjzaad%(rUVrGguP2sXb$(iIY<3NqV%(;Ul(@rUSwo08cV3Q+< z1vW{D8UYcr8}p>>FXN&_fE>jl#R3))tIma1odgG177G<$TS!}Uy8*ox=!T$lA6kG7S&fXW7zX4+w zB}%-M^HNdb3mdwI8RhW~Vu%t-GA1PXQYxTG3O6P1lY5NuKAgpVruc-bfFy4)Lq~bg zH@?%pj&G=$ZPCCt26Pbj6dib*s(X5OF#;}*_G=>={D^l#Lpt-46=gpC1zCZkU<&hs z39`b1n<=BDHFG=kfiuJu6`mMg!6geFa8I!W|2yt!P)v@qQBi}F0r*t(DDyVXMa3yz zCA}a+%3+3}rR1Y=MB(J_xv>=tO*!V&emZoCeWkpLEhs2;gQmE4(mJLvH%|(RNu(!- zYr1lh3q7;Lgq|rGvWW>Z1mbTO?>C`>icD!lzvjw*jm%%bEisqaqE2*hMZ{GS+``Jw z@hY*8wks!lk7#qo$i$=CK08^Esz0>$&7t0JG~CkxR2mQ-`*570o>Q$uswPjfK-V(M z1Ey--a_!A2c2|yU^mOY&i(pO+UuKqTeaG(ga#QBWMwo1b)1mq0I`L?{DfjnYRN`7w z?vq}z3-{VtDtT0+oj4`BT-TpzZFY(|rpt+%sF^;wk(Bn{DR7b2ET;?pa&0zilg!~qv?WkNnTuo@=8qcf z{!=5%1vSe>zI{Mey})*4FR(TIxC`);m(Yc?j@g>JK)B4jZVApTdYiqP16_<_MnBI!&+v)%|eqDFiBBf zcBPmEsX;iEANGAVaoeA0i%`CTa1UGm1_tplh%XG=3*g3GV1)D(hg!7BA(n4W8=y_1lS|*N)o8)1()a`1 zxj^Ytwy0a8`QA8L)h}UM_Y%t9L6BlEfE3#`edMttuTpB4LxwCKshSr*^zcoGW&4g# zCX4H;X`s-Py*5*|GV|*smQ>4#^o-5`01G@=|* zKK(+?uP`XP8zLxEbHUND4^oQ}vSs{R$+OxbP?p){&qSpv%g7BXFCAfhZ{iWa0~Ic`*RKIV9}`L}IMtp)`7xV3ztg^VjK@R3Jim^K-Ka}S<)ey; zNGKD4V)c=$s&LPufICr3=x*Ib=&j!biWPh-_rwwL8)?9yB!}s(6WV+Utgt9dP)Ca0 zI$_3!=?S)UTCw;WK(Rnei@akS)KEdbnzIL<0Ti41am;ML&NBjvWj|qgiZ>T?2))&K zsURh$)bi9elk9`V;LRK$RRFF5C)VL-+YsUqt_N4sDxpE@^q4uMY7d}}?w+{Ltk6$b z$c_TQMYb?p%};smTVb(hfK`3*Pdt>|b$A(OHO~kiwJE7~nshZS&PrPT*V20M_wFfd>=OG% z@7S$s4Hlr`9fEp|>HcS`-XWA*_i9g~WSMN9_+N;zYoCzx%2n?WEsqZ$bHvy|9H=-x z?_VjN7XV|+AWqu~AVdWidy70%1;(b%irN1R7s{-lN1qIVu|1{2Q#N&E6Fp%bf*3o* zf0>F}rC`Qh_*a;*eST&DB+P>WGgk1guiUSnMn^cKZE#B+HTM4e)Li*#JDu67AWLhg zvCKpktZ6Hc9eS_eM-z}vg>5U;*e3tguBkb}#@>Fxw_;=K@6xbND?YST*slVOO%{0w zXsjs;qP7Ma8=_wY8B12kQ)m;1>naFWh1UkpeS9Iz*wn#Y&Hlk%p;c;_v76jj<+zGn zgc*B(fk`?4of+FB%veX~b;+UZI>cDVnts_)g+bfu=|2*zD!CEYM_(nW#XlZtHu(`+ zId1HvB0xscbKKa;{s39{Yv9=F`3xzw0g@GNtbMHzJohzjtYh2y#XVb6<{3*17TYcR zAvx@xx_RKKZw1G0b$)1)M6!c%SVnW@YbBB7EvyPRHlIm$*kcNjw>U@jVDvBJAve|> zJx{&aaq9jD{h)WBefQpH=ix2KHmlLc_Xa50u9oV0)tH^bXyjf>`6TSw=U+|92LT3(=S=8<0%6}7PRbe-H`&V z8{lMTHiS6Yh3$=tw@$`q{v@__j(ypFI-w$!33t_e~3w2)3pf+wA}K&tocOf2{c>oopFt zJJf)YO)#RKr-{*#zgn5et*i`B?m1Ow&thfW@`>idvq_A`*!3#K-g0lWnx9*w_4XyN zxJ(~%YQT~mYxOUW>BtT;h4Bo4+gV zNV4f2FE@H&ouvWuqa+~Nv4zY*YTD%dA?$onTzwuGSv3?390Jq!(_SF4f{!)P72F~} z%=Pu&N#|%5l%6K6SNv7( z<=>yq9g7KYqio&+N1mPH2v&S|Lk>1va_#X zce%A{o=jWwjaig(Q7%)#|nao@P&^2E6mA*<^0L;Tfx7ACFS(ZcUimV zfpU5ePP0Rqz+}_ExXXIv7H2nxB`d&LnsVHodEG>Qz`k9Fd80WmX#$f?AA6hiHg62>loQm{sxvl3P#r6ai=$kkuAaN3P_H5D6*j`F1{_%*j_eN-`m*Z<*$6?O^8%7B6#wd(OA>rZ1v^`)fN^xBuVQAUr*BCD(1at) zd6Esz=ieTbuFJ)YOE)I4)3O7}x*#AVS$2c{o2TwS6fBrNqyreCzU?YUl2v9(5iTCJ z-arO8*rPv)V*`FEIJT0QoK49b91Q;w^dnd|3w5w825(0U5IhF2|=Tn`6^x0m+t%84@$?^M$RcSM0(B zPa)SKjATvA{3_{AEDSHUT+E_?F*-PJCKfPpfL9~Ykh?asN$cNNC7HMSh0$oLlHfh2 zzk9zmuesA-?lSGr;#ZAUKj!YAe6KYxx(lo2!k@XYbeE8?$;Vmb99?gwohp3IVd$6I zd#O2714win*`pKst+P_tyarahM10$!2ch>)$cuq6c`k5k4um2bcr^!DJnx*kKuR7a z&x?`ed4cy9T+t|s2uxlW$S0x5a+0+OA&+f8NRQZ*&z3Ih&A+aydj~{h#$VWi3BB>+ z7gcg^DH9kLx*BPQ_QTZ~tqL-Ntv71UQ%$+kUSv+1&jf=7Ks=XhBOuk>&B9M{Tt|77 zGy^Q8(16K=5Fxv6syRtj?iUvdwZZ7)vcigc>jOa!4kBcm3JX;IiaI^Y3g!?k|S#R2oc(2cqDR|Asrrx9GJ-^ zp?nUo2RD&j=CFGW=Mz5}Uu2_uVGou|&Vi~FS$WeHaPUewUe!cfXK`5&je&tVFV12X z*KwXKs)9Ey=Sfpgk0nr#EQ{tLhewrSDx^oQ2L?{R@GGv1D+%c_xZ4FJM|6}#S8+EJ zFkN<}pOU-9ksQucXuXa&c*Y-Uh=b-qJJa1$^(|TLhKozQs6rmaG`M)tMGJ8%VaOH- zqQ#FLuoS(;ytw#ayqQ_OA`+@7Qx|UV@G>VE_zOM!Nhps<=F@I9xIuX=vPZ{Fl&y^T zxbvT!;D=-I{=}x(8uTZr4mdfj2F^>cDN76*IM0d{F{+qR9Hz!?+pAHiEKz9ife8|Y z(n}shQg+aBp*%v=l(ez98Ry|_;Uiorl?zhIWN(s(#ErsB*#Da;vWxL9Zmab!2`(sz zt4ob4-X*SH_N&e;(Iw}ih6_A_=~?QH7@~^<$Cd@2D$%7T@PxESDjO~dMi#+UCnuZ> zax#R-n)`1C;XJ;Q4?UcyjsBsByV^`Vye!ek!AynHtyw*dc_k7}aFJ**Dum{>>%}4_ z;}emlyeUNpOm|a_iwVxO zr{XVBQ!Bk8E?Ei*z8+M6Ok2WUn7mSr?u3@^iUgC2RAv%df+KMr2`%A~NFlTYM=tEF z(tQAo0G0je{l+=}LI12uYS`Ut`JQ>vCV!&B7=nc`v?BMe1rnEI(KaN{|_7 zt%O0Q;=)hh>1Zr=#?x!sJ7JVz85EZUCCfXm=jrQ!WH;wilz+2H|Alr7G+HR7d6j<8 ziwR7V$xV(@TJdWrrLgK{#|y!fR*E&4QZIfb#I;YYfHE_ge|Uo7+@HnjY2l#CG^g|z z)&WEFAW69f2nN;~T^OI`!#8Sosk|z@l>UV$C-MNT(%1Kh$gKalT$3f<-*+OJ%FFg9 z?zwF7tExzUt!Iao*Lssn#kH)GTs z5(T`L&ku{xO&b=hcl^2P&6lBptrV_ofPrg^uzhZE!(LHT%^aI(kC2@JFFrz6w zG%k?RLa_tfXoz>DEz7G5Nv)XaikNGwbjLO(7YW6Y5$fSAy%lchrGmr!zdZ%P!Tl2j zd}&8kk(+`ij`2E3*1N`# z(-7kRQ(>T?qi~!=A%Qy}0ot8@Z!sCimv)XoJZ^IuM>O$73W&$?r$Id(01a-+4n}o4 z9vvij2;gz^d66dqq~=wE<4qM+##m@IR)IX`}G zU=`Vpjx~}FP>M1-aBX)e-V5E)?zsSvp_wSS%@-v@KKicU!G?^n&DooF6UO0Zwh9Qt z!Yy+Cllk(<(elWj(pKfx3RhynNUm(=u3Y0#vZw)CQ{A;4Z(Buc_7sFQxL>`#ZO6g) z#qwgQ5bwwb+K}!j#%{;hj_&A_4}7TP2-9CDgxIV=BZcpHgOD~qn2S!BK7F$s?dgtS z$=)VM+w3IQge8mUL6)p$VKw6EJ`9vRG5rPG)Uag5m7dxL+eh`!wjO{yiiuy`Ixs!G zX9*HQb1Z+OiCIETvi8xfFqdVG=rLQ0fgSx(9Qdv+IUnKtZyZqYb{2!&xV_}<7n^e- z%7tr=$KwN%BMFm-5@$d>>Ya}hNxO^TFW!zvs@Y5Cd^1aSA2lU|j&xE7-k4b99J2~~ z6z2x?I8xS0)1Tn|h4koW2fX_l_DK?e=>yx4BIeh(ZtHH%iFeNnE_&G?;9lsw}r!P~3e!vTiFO>tg*9V*k&T@bx%bZ7v5jJ(Ac;2l8u_kb0SPdj@ zR@cqR`g!6Ey=IBO5`+q3;?DYRUkurEcxZWI6Q?%}PO}zSViP1;ViTtUnr?f%Fv!g4 zKSGjBpCYW&KOM_EFpG>LfFyQflawK_O&p9)-B{MaWY1bv1Cup}YT(KB>$;i58WfXQ z1JIP&q0Z>E%_Y2uS4*ssK;3~%i8W%zuYM31+#S4qq#Oh+S$*RX*ebL(s)+!?%)Up| zl4J$pP(QBD?ARHsH8y{K9HsRAgCJR&^YR8CeqX%ZdwJgwBn!P9{Ub1I_~RD-ir&4;Omoc;Jk!*nyF&krDLo*|3AbI zduF{>he&9n(G*yn>BXGCvwl`iyv}?xNET<8+iFoz;_P{hU3GT!aU5AOwS*vvGadE(8T`&VghWZZ0RQ;T>Z$E`%0?B-yNxWOZ>y7~u6+ zi^QkDKLfMJ^ud*Ckde@2Zm5K4&1$X6xDls^7s8M{0Fo^SrX6UwgfR)45s91RG=Vcp z*pJ`NK)}aiY*V(|lVpE5DP$JXa0)$IfV^hu_$sncvQ;?N=WL3{nOu*Y4;+16jI2F` zPagd#UbTi*ETJ9Es`eHG5nNJ2kqzs^Cyg%jambuSE<%xA8{!+JOdMzI!vVelA$Yqz zJ~$FNzOjA5tuFH5@E1%FhZl;kThtB;Os>$Q7zlQF*|<_BWtJbShM1>=}bhf9aeU`vlF7A*r0Y>jLR2-Lq zNzRWQi`lntL=G_~{n%`8%WS?9m{(d$oIbNY{lsk8^m!MN>PLCz)`Z-CXMO$CLX&j} zS@qWFEKLVaP^a6>w(|6oU4P1O;Jdt_?3pEhtFXtN$rcT^<=9l1t?Z zzAjD3$#AFU)STu4c2$sgFTvXgWQ10gpccaS4H zldMN{ZSR3s8doV3$s9&@qIgCCGL6c>Hf}EH*CNibzHwIxEVfb7kt>*Dxo2tBitBzV zm&$U9eVPM~EF;6>y9hJ4vAQXI##Ibrcp=7~UX>Mgr-GJ}T)8U{1xvQO>@q?!*X~Rr zuMS+HwTWcNaJciczfU}Dd zjv^a0S~$Sh*|d@HQWERp>w<@UO;WF7Wbbze__|!V)ExvA+37{edGB^cA?4l9*b|hn zi|BMv%XConeKkNHG4;9INP{VxnSrt2nC*=eUrdiA%G~F8rrkm@D)QOt!)>ZCBOCYRHs%88L}e;rD{Utnyb_%0<4*^EVQ^H)^fXvuW&a-tmhiyXV z%u22bNA|*j3$(AtJ1CEO=qJemD37*thXoi}yLN&ZXg9dpbP&5Hq%c7tg~I{P;zU~_ zOXN6bWlS!l*!gnc!Jz67FjJCMFsNn(S(OzjFsM3%i)58VmM?@NTPb8h2$gHLmua?d z6ExeUS`{YJ5QkpN3WREbm{~kt@Ly%Y4u*Y2-tV9)(Uft3z?hMEV1nXAsoMsvY$F+w zGXQy%d3xa!JG*==9cj`d0A-d-;=c|fD;5MJd&)W(*;|9VF}+}98EfZm!N@ukWixnL zTG;5@UWn}#KxB=_468_Yp}41MDRh}B;&`<^R5(;L#|Ir=d>Z4k2Fi^Ha0C&FZ7ikh zgbi~R-&5CV}Zb0!r^czX${RfsGN88B4(%hX`kR7}480C4SU zkx;ex(F4G>GAY`-LW>W2uXsz1_fE=%b|oeS7eeO^%ZC@a!sSpUhrwY=O|Rte-XQdd z;XuL=NrWL=k(i`T4H&Ydy?)WThq=+MA<#;mLAy3?V-#e--`N>B0Si_*cQvCR5@FD- z3SE-`Bq8Ryuqn`-x~1gkRcnn(iM!*>c_YPVaOsnv2ZV< zJ3G4ocH{+XyAQn6__9w`A_Q5_{-q|&Ff2)vLBfgnhW&GE{kwA_ji+>k#-&0d$W#fk zUi^949MAcYj4b{o2LM1x|oEM^T`A`#2)ECNf5(-bHo+- zej8i}gVH1yl-vbLIe0>D8J~r$W!4HnmT##zdUg@p5M&Dr9l3Xd8Z0-C9{JIb5fz7! zWxE+}c2Q=)oAGl%!)`p%S>3Tq+Z|TTIlAKs3PBU}muvR4i3re+A#U?F0csLt6eNSe z;4WQMfjQT7A3&RK!8FZc6{(pPFJgcj7Xoei+YoIER5M*e7nK0qA+ce!$CbMzE#Vj8 zcw)Bzp9v20*suIna=3IT|%bH7KY^hrp2tsqTykk#M>H{I(xyXd683rJY>p~VM zx#mKXToAt+;5$0d;AZ_bpg{{1>ni8-2o0S?lcIMrHd+VRNFU z7>+r~NGbm|a(f`j)vNnRMr<#R(31t>NCbkYdF{;t=L~tWTneKT#*e2KtKmJEz~N-m z(-#rkY0PBMu*T7(pDH1w8fsjfNT~TL2sJ1nq2`}*B!iJ05^Ht{E{bmxYNiB72$8xq zE=TM-!;4AXx^gfM2}hQ*HBA~pP1f`u(4Ku+LQJ@W$XeH;iB6J*(T>bM$|3z&!pdh9 zT$e!r=el0xF{u%l;2Spisx226n_$Q~6ei|U*90t6f)=mlD6-Htxsbj(#A-4Qz=h+( z#*s682$3a$=8Chsr`KLJVD^(-j`)r)E4lwQjI8%(%LvrEPPSg85g(ICQymZB2wx9J zBRL3s{p%Q6R0=9p0?*%TYt^TMT6MD2a5WHF1_;)rdy2Dv14P!fWZntuRU*8+;ut^w zhad!p#zitn6)&#ZQoBwi3&LUgRe3qp%S z$I4KobMt^5%c@?zy{>lf%qarECb-!W{EE@2#2+)jl3Z_+gy^J9|k(9#P5I{+g#etH59#b?u7Un zaM{r+AjeYoDyc?mz_I0OHChR6>w-}Lj&-*aWL!kQ(nULB4wV~032yApgWTBeJk1!d z)noVx7q4+ITwL1W;g%b&6;5cWjs;*XLQ66Dj> z`GP7gK0u8HwT}AhKx1j5*vO_*lKu-dHfXu9<4h3bZP;5W93Z>CNSN4QAMs`p<*>2l zh<#Mp7~~sCHGnv9tT}(LaGRO|D)vZ9Ix${a_xky7pvGbnT)jaPFvab~*Cz#-WM1EGEEA4I4n`J-CYOz6B+OK)vF>1q z3o|qw!w(=lBV&&glL2b1cY^CCb%xumm^=P2cI?&m&$pPkQr~-ekG&2*c`N9MJ2taEJGL=9UkN<+hFo8gd#4_8;Jz(PLONL>vgdqIx4}Q- zooYWjfU6K$G)`x zQcZ{F6nI(hiCCnflKbCjj@`(7Uv(b!eU=!2T6J{UVn~-Q2wk=)blFIiE?dqF(q&KC zf6>%~7aqFsfP>YL!VYGq`3rW*`fuN<7v0&jM|PJxTeAPWqj5o54O!sd9Az9~uY2?h z&1ulHll}gtKa9(>5Ob_wxc^CWy|QaIG#=#H;=%FsqR*5)p}L^g|*lB3-F)oV`l*- z-J)%DBNc#WZFZPl4?O#0z_VaumDziiolO+V0G4F|3F&+jd-l3(gfYsMZg8`97*twe z&vwYcej7ICU;7VWRqqX!*n$)l_AF!O0mhYs^x6TeZGfJ2(9r?*Y~58NdOh}R-Oo%b z1lamFqV{`@f&oP?+}1&eE8Nobw5axSkq~JsCx%4njyWo7q5p_)B+quii)}&B*TJ*A zdq716@hYz%yuB`dug9H*eEH@j>nj{$XTi3DowcubqOj0b1MIADTm?HT*wz~!)#fGh zE!f%3FAU_8>owTfPO!6Mh2Se7*YjFJTky6acUJ4``@}k&3G)w~*C)^3^-bj2lt6gN zFhS2wYYhcE^lULySu*cBh_>`J@r!Rj&$gdkRk;Q|+XZ^oW!_m)eMJ+%M6pFco-Kuf zQC29ygXG!K7V>QRZ1T^6XHDHZcE4`~&(>W-{(U2Nwj2Ut;e@8kk88c!EvEbi@a$FJ z3Z4ZUD&X1s9Yq<$D5B~>R0nuiA%6m%)m_aj(o900{ejSMYss^Acs=_ggrL!42pR=F z+X>WmtPe_5*t36eRNH_(Yfc*(fJVppAW#`v6OgNvK>@i!XB~vk+EIuuhoWoYvx0~n z!(7lo`YgX4eRgjXfLw=(AlS2dpH@*E`0Vc@{|kIpu(qv$Uj@4Q@(}nL0$s)QQU(Ky zKwwReMew;pW!WllR5>Bo)slmwej9vND6uXNzs8<*z+9-d!z2$UFf-xqCeWy248g{V zVX57dr73!6Y3j|T-n`vA+p9NSjtt{Wh{`v6fK0_}*@ z|3sh_lxrSPD+pS%(^!!lAZP=$EtuGG?CZ<2G{RqWA-YFIry$i9l!)g3^dX{kp?`ot+nqgJP_Em8at#TzOt#fJvDx|r z+P|6*Uy(Ewis zL94$rRz$;~y+HqeVbDT^g+c4R@3CkBUh5!&7Dx!dS7FfV#p6Wuw?k;tXNx&@g;5NI zR%ov5ALJ;s59bCcwB~#^Sr;7dFi@{xX|>IdpIRuupnczb8-unxdyz=q9Ybdr6b3?D z00kRBXvfRXfI&N^K9r31!k{%5j~DlV6noZ?kQDnh2CZ4WxtJMKIR>qubAkB^g7)!= zg9uuE&!mv_D>(>))|@&n6n%N)w?k-`t_Pu|`xHWG+l1o_f|g~|Teq79x^8DZu9&Gp zXq$2uj*~Ud0flx}E|Z&n@Rx0BZsIa*+m==@+Me8{f?QGSPOnkZ?iZ=gdukRO% zOWv5iZ?;%`b7OSe=J_{F-<#>;n@K%NvonMmqtm4~+t^=21Dst1t%$bBoAGYH{3i1} z7i_)tiel^hv1g|TMj!Li^orEK6KxhId`afhBY(Um9Lxrp^jjiUm6>eD`(hW;@xNnu#Ma~ z)w`wAlFcdaJL3}nmz-ni(1WyhO&FMd@s{G(l0GhWAc6g zuw9~hd@#6eg_m>c)z-GmE&0amW1q!4rl()@z0sN8pP4kUM?0!xa<;rc?%i9Z_^y*{ zQ(kvo{wc^mMfs;B|CHsQN}IBLES8^H{z-qV*jZd234X~V!7q6v_~jm{$RqB!;t%|i zRDyGoO7Kfk;g>au@21-n3;H?kmPh`(V(#JWKqA?JM6v^kWCs$-hKcYMY~Trh;0b@= z34h=Tf8dGSz!SOZ6O(d0VXuzb;d{rAn_SK=$o+HrxP1QC(_ zYVKl>8})(mN~)c`w`9ZDro!W^$0tTq#ualHs`lb!2KatEBk^Ege48=JOH`z}$2=TY z2Q=EevQtM+EkYc|H(oRLavW`VlOIzoPBN$ET|ah2B-866X`nUN>F&msCr6 zl+`b>E~T3pWTlV5L1wn4m-(iN9x!}#G4l_VJEE9BN!e37fTYJ;R7>fL5p~ZieXNSS z!e*5(3^ml2>A!z$N0t1iH`m7wRZqN^_}2$xO1aOKeJj~sd|O3|9f=XNSqod*`8|j1 zzgn4lRBU(~5Wb&4sk(d(vygu)%iH&;OR%L$sr(jGWlJ68Kuh|NG1{yeI-+#9;G^#r z;MUPC($%?JC)D2}UQf%kV*g*jag1E)ZPOb4r7}B@W}923OrZ&Ie(u@JuibPBl%LNOplOjdDr&R^U#%s z3*nbneIA&?VcYO<`FRx|RVc3**>UJKYsZyK!NcY1!@{gX8l&Vq4N-(~kl^X2%JYg2 z=<_Nj7{_e+&~oKIHLjAmPbEq8>JIQa&#Q>}Zd$q2+j7qXvH<=Fkk|>ZEGv7Sw~*wE z`5$yt4z2k2flLn4&sWoTXj+snl6--uOI79n^xmvRd0r{z=d#5ij7=AKx)?lNsy^)y zygZGr?Pb7|%Mx@m<=vZjZN@T4d~~rQPnUU`7no8iZ5ubcB-tnZsMwf-|DKB94qjK= zf|{|Y;4}2Mds1j}o}N%Bc9^R}=l$(xEh-itk0s41 zo_@P0{;^=4Kb2>+UBUEE&pZ(iWN5QOk0`E?+1($jimRg)n) zb%qYCf?}cw_wq3VMdm5fpP06&yh5koseH_&8l*7CyLcy7xzjUy^;!2iYz39n?@Wnb zu6SH-ikQt3p-o7?nn@pH+PkPyL`W%Dxyu9FjV8HJljhRJOOuy}85F9*y)0x1Y;p#w zROEG#!Cz!le36m=7#>{Z-;x!hD`JzoSfrSfTwcMr*`b4qbW(s^<^)2RAMmk?(66BOc4ksAufI#>!tv70mec`}P=mWLt3p9Vqo0ZLGk4qNg_BZe|YgB4mYtGP7bXkpU-oQ5gYMs!3 zyUuZu)+q0FNj73GY3myOHMDQgL(M$gtl_&j$7XT( zKH5CkqVs;@DkU$%T~RxtWl$FgT@wYrC|Y~((i%Zb&M%hUW!^=NX^kPFuUhP?BWtX} zy(;-Yb7%I~&CS^do7sR&-soK~y{tK*cDUb)j65$?2(!oB)ZCZN6|M>$W;IaITbl<} z0c|~C7BoRvB9|-qA_WWCmvG%R(y&u0mWXyV*C@iRLMO&7tF=9+XYM$`l8b5zB%AJfb}% zhRxR)R$LUD*d4>yaW0D_mHZx=vvadNiHz zeaWwX++AN9W@b&$$B#@rAYkc=qI#{Tewx+H#vc4=FAig1qVSpWJa8(PHgsn`gQ8r# zd?p)!#NQuoPmDBX_v??r2KjD;&4cyPk@|#gE**1M>aNgGA1P}Y#VAD$+o?6r%9bje z=_zDs_?4-syvD-RiU>P+q&+8MUm6+x`$&5`^&X@A?W%>TQHes2Jv!2qFZRSMTHmE@ zNfon&!haND&G?Zih2qRnwitm_-;sMjwNxgJnws^GHRiGwJvmbM(+)f1xb%K}>MZ9D zWcG0tAUP{r&YlZdwwO5=xNrYVJ+_$r5XAfM;U1r++e=oP4I*AykdB9OEk7IS%%BI2 zITLtRQ9;0DQ;17P=^MTDWutbUbl9H1l#f_+zhZo^Wi79FW0&6h#Q2NKyVtF;H=Pl0 zLo=yZZS-{KCK|z15+^2_j^ad<`XXZCYLj&nO>|7jpJRtpX!>2HXZgzUVdJE7 z7M*@V{raqqnbU_c29wxPD616GCEBu~Tfl@ZEuj_CE$vK9vqVQB3ofBP?|)T|tz`L? zFSB8GgsyBQHO`JR9x6bTt&m52BsX!53dvg{;BMH(LkxpFYRV;oR{l8FQF*LRM*ALM zKOaE8odC1SI}%k+mUzQG=DcZ^v4us}Ep5r4Ol=89=jBP`J|d*B$V39kKI=_SC# z^Qe7^!WfCo;IxT5NkkGRn=ww6VQ4YS&lHwuIwzTf(lGY=lzj(_ zEYXq3g(~^|A@&^ljQ`ah%y3d>iB2xE=Bo@p^ljTjd6i4sdi~6Kdl{9*AcEM<`hh{V zYeS0^St1Q*u?NW$%jI2<-Eq>P{V`m+3LV3{hcB_B00Rix^lutvv-Be{ga7A* z`K2#r;KXKaQeybAcBtsUqEFdC2Ke;;iWxsL6V$&)!%%m1QRwbuQ z_x}82w(6PaS9Xv+RtC16$qmCN+j75FX4Jms@NDuyr7lcktB&G6vRTGRw)|1alJY)L zU6~KGNi{{zgdq0{U5i&#BHHK8Kh=AMlFrKE>lUg0Ef@kb(Dh%!? zhuBk3HLvmEv0Se6wqj98{sP&w#>^ZtWykE8eGhy>sf=Ym)5(Rx>P%$OLgLyJeOjFs z+kmFT5HrUlGsfIMgnC#KKUd0k&N` zWMALUP0sf}sLcLD^i6F3YxNnYrC$@eVK5X=jH>+SW>J}0{q^eTY;&H0X;LWx)qEi8#q(k9!N~04scTE3#jZR0Bj~61|x%Nhb zYLLCdoExzA1g9kZ4HVk3#WdFi3PnAn6tJogn-Q{6b7Z@7n~HPxkMd$G=U^esYL7YB zOKwM+F|(|W@fTjr{Hl&SCKs|OB!z*CUOtx*W9QlvNt2F1+0QwL5_>1ok*3_(meAl7 zc9(C7z|qM!938#7l4kSzLA|;QUCG4gVlEwN&81t}w4`cryxci}xuh8sJ4q)3FGmnw zj+v@nj?6J23v_x!GOnNaz_E%kxOg`UGB9}OfJ&i@$JM+B8+gII26@9`t%qZ*?xM)L zY9V+j?6;T9o2XIj%V+F>`3-Bni@M> zZLNC7E}neU$ir~SErglB!?{D|U!(MkBh1{p;!m>a+W#54eegn-vb`#S+x)Oz?CaUM zy0}sD{B`i+%)zq^a&D?U?^kRI>2C^px4=KSP1%w8NDI1mQyud*Y*x$$>RWTR*Oa@y zLEn%DrFC)}WtE|O5XsH?{q8YOcwM>2=R=|$qec`?JEtw%cFy$dg2L17<4XCb+Y>Ts zf8o{(qEn*H`D1@+u2!A-E2$&49ls!P5=Px?%iSZ5vC;X07dM}1`-gVD*WEjzL7i8~6nvOnrJumEeZf=wIXMwu zB%6ohK8qNpdSWCjUVbIbC-r&}?Itd|k<~?RfF!)OZHjAbTd^0LA2hS0WO^^9)k|?w z;8(&v)nxWkUB$haht?ZjT*0yyxtKI9DZLj{STkJBhgZ!R&64V;I$_V1N9#V*W}Bu^ zu9?s%7eCX9@s$$SKG){5@R|(SOiwe2j8mc zY%1E$eF6xEGyINiDsJ3p+M}R?>*mYQ>yA-9{p`ei3fv{CQ#u2mC~p&`ldsVnFptu* zQ;C=An)BPfX10p)P;yJJsd!<6{>J2Neuj+vzOGmjllz@+Dz_?|FqwEtqJpS6{rV(G%g37EOSjYaVZ*&^-iWPO~S0ZHjo=K4lcQ3T46V&FYwmEQsC3vVj^Of9Wwc)SbPM$^tALhMp%19bV||Z?*T*D2o7u5HD(0I=2uOaqM`8* z`k{E_0Ii;irf0b}&M%`7jMML$1Z`4#BHzr^kla;?^xxS~q+C1^>qL2L`*PeqCpW6? z&|j1+7f*06gT@B1-3j;~bl7Qe`(AW(p#ltcv%FYmqFmyoxoY$d(Fpe~=Dv37s~8_y z%2uhV+^5Rm&Yc;%^6wdQa+5iO&R*fmq&fET$Z;x)fO{WSo8)uF(i6msNV?O^5N7oU z4XuS_dRj6un-7~brfGF!c|KVE;-{wna{Y-iAKJFXyIro&Ry5M5_2CLi*V~r-eitS7 zzuYW8)qHfW`eM3ym9`Ls5;9g%0Kh$uHN;Ro7s|$=}T$2 zO}x@OD4~nnB@Rg#|4NCaha~6#vdyPTznqBcMOVi5rfBaiUsJfaH|74aQBuhER>`*F z-ip;MT$7!lxZlyk1wn;T-p?9W##````U>_~cKUA?{V2CrYGr?Kjw z*t;p^I+gxpb;NEgXK_acdBL1gmZmehpGyCoOF#KVWLGJ6bZ}sv+QXxETEw24O24x@ z;!RoY?JAFTmH!wYM_&-IPl~VoE%rF2Z#|=7fw85gnZ;suY04hOM;et{XuMObLfwVN zewGdjVh|xY@uwRoiBtQM!?o>++U98bid4Nl+-WvV$oryMxi=BDTcy%h-@pRP8_-P3 z(92+@H)b3=Vke~1S8!$O>QHB4-pcFzD?*gByR3%sOiXl7sm;2RyAyBn+NAR-umv-{ zpgS0d-=v^-MAZCNVwO%C5q zG2j{R@f5T9Xoh=hBi&`5AzE?48hcC|YZ$EYym#4iM+!oj^m|KE5URy4vJ+HqQ^yya z;E@w}q{1WY;7WOlUz)H_x9QeY@|2lu*z-}{h|15C_F6v3vVBm>Zri4Daef@!hKqL= zC>+vpk-|~FUD1*6EZt4hGGukwj;k|Kt>-&_E#J%)aKdr~>l7#=G z=`5=h*M6L$l;C!U#B68GQcT`SHrR0y>xxN(JOf;y_AyHRDE;d4i@E0 z9W|?v30Nq zeph+f;lu77Lr`$`mA_e8{e^5}& zlu=#9+u}{7&Rz-bo5q#*?v1p^w@9X@mwbO8mAW0<9^WbT0&{9yLx&&9_WV8|HZuPY zb?+S}MU}k)-%!9K-KErVsKYoxg~^^LC*N=F^>VOr2``QYK$WP!#EhLcF`wmm?{N23}~_ zZ}4W$i9z`umj~*`KO!aClNWe1#{gDO(&d+twDW3G)1E#XuW9C-kNNRxQg%`juYCX< zNIPA{pJ|5@4@$~x?|1r9!-iUgc2@FgvMk>TU5Y?MnOqkH7sC0p(=B*;zFVND{P-Zw zoy2-*^u4K52~kQ-^&wR>)q8|qgJ@R%3UhIVtO%g2xE4(g$(bXd#nz}T+Wdrw2DC3D zU@uI8Dog=?iP2ii#7>=3$gRC(HyFX<#L?u^Qn}qrgY#sewG5RijlDeqiwxaAz$!xx zf2hQpKIz;`0cJZn2h(R~(0DmgJq8aiN9xTwZ=JE~qA~ae26TK7;hziPO&@eqo6V~; z{ni=0I)r1L8J^2o6=J{r^*Vo@iF5}lb7R_JY5l8Y=W`9p*!x>r^112lWAdm9Cg<(! zPn`X;iQR7kPmUD0mo#IjT)N%3Q3hIa<_CjG$Y0*fXKoLi%Gm0#@}F!UK2%=3J)QeB zjxlXP1Pui%t03%Jkcy4(21$8ki#Bs8JP9*Ihj>CtZTb*x6%jG*A{!>cDu~MXB|nPD z9?HirMMMlkXj>b-e7ucE4-SaSO0}6RHh!qM3fyd6h0m`dhuW78At%KRo?Kot7?>xj zu8j|b@g#E!0zthcwRr>OWt53u#taDVxV(nHXr^u9-_R8zjSDFf+mp+O$jmq5_Ir>C zsynm@c_=UZ?@?Fo-z>#yObf_cG*yK@17#30fGd2!O$7Lb?#8`6W@~2EE#d z58;Tv`<<=?1^YWaD#z-4%a5Ul5K_*^zwdP5pAH>pKm5Zx{wU<^=(}k-V+an>yutU$ z=W<;LAX^%SoT+<4_P<~s*dr{r3^X?C@v8h24UppEL*2}lf!f}>F+Qwmr8Nkshbb0< zYi!rWd)%m~Z(^E=YJ3kP)J5ZOoNZ~ERwn(Vhl83n(eOxQ9F3&CN{UGvf||T7>It9- zQ>Zb157%chbfSj#h5HJ*vf5ay#c>7ys48tO*|TXybyrqvheFv)2%<&ms%f}DIdQU~ zsT3nphi(;shtwK8xcP$Jn^J(+Xn(viYZ1QI!g%R3tJxi$#y3?X()rzRH1xnhF@!mL z5a%~ED8fD103{N6#H5}Z=50bK`82YYV#b45!yb?AR$XPT)gaYYu;HU3cX0A&e^*LT z%gtPoRD5PyccqA2?h4QyUg{xjpn=Z_@;;yGOG4Bo4>8rKCjo{79RDjE_O%qNq-|<@ zmU!**6!98dW+y?b65OtSH9?$)oJ#!oD5pnXg+gG64xM%MKWBKACZVhmXsIDW-sw223-CM*acc^h)0mM;kT3e&-6|LSgkOkUlmHrzaIMp@e7VR~ znGi0V>)c1V_y#xv2#HZ{0V$XsI9j-zoYJ(-V#WhWkutwOU0%zKF(?=+yN6W!G9r}3 zCRFa0&@!yl-5xYrIMW_HRXZKp2LZo5X67+f_C{#Tn#IV1i55~rb7%=dc$|jb;8&&l zlxin>bEl9afjBA`J!roym#0Ah9Bv#y-0(-05B*X3vVMmwt0F)UHH+!bCt=>N2-F%Y zle|4^Vj-uk8Pa1(aDL=(&HNwIUok5Jg0GdS!si-5Zmfcvv9pHCY1>v1S-?oAlzf2I9mQk#QOYzxDek&T1bptdnQ3|IM% z^{1q^8+MUQc0WZqZ~E5u1Yc1mutzw z`f~Y3QeUeX8z`yZH74!e3#2+Xtb>SeB@vg_I49ZGp3UCtf$b@k*xQ<*;9ooWTNK}! zCc(X!1luvH1)2r6kF|JtTPbEiN3LLBj-V>J%RR8IKN|6Fo6O9>kbFC79Hqs<9GO2R z;KZbKsF`^;sm-TDb}R&c*BR4BD@=si5|Vt*yW5i5v6T95kWwwnOWmSUt=wlxZ3(45 z64WNa$9-lNlQ^|+S=ZwHsMU5PGrmsBfhOb#{hOq5y%tB2S$AtfgQD@b4E1XeBEC;* zD>Sy89^o|9E58y494|Gre@uaDMioB;s+#}Y8Bm|4?R!vf7WL}k z6y{num4T5moGL(1ajzCj=0L=@CVo(`mxuy;no%5zHke0FB*KO^X<}`S)=e}lY|@5g zGMiv+U^v;=QWL)i4tt_0V~ti?mH&arS5}!bQh_y^u}M+KMgP$?zl!BumUZvZKNWVKv%c{hk=OYo0TU8pi zgjB0TG%J8+_9m^?_zWQYSS6-!i}6@xRBI@>2yC(vzTXQT;XKu(T#XuBkk0l<7uiJ7 ziMkm-GaVb5szOOH>sOGTpU;lVktsgr^U%nYcrXriesps?`~{6fh51N=@v9HhPboE? zZALSrXX~R<@{PlcU&~N+_Rd7qWF^5ezHDk>Eub_ZCz_^hb)@9YQ{lLLHayc^bS6^3 zu~_d(thABsl7vW_7oDb$P070{+nFIBt6-cu8Exc~x6GaW;BXo_8bg7GoL-Dpb0kF8bf$1sZO+7AO zJ4qj#1S^$Rxm}ozy8LYvPYg$n{mBT1tjhJIw8M2?d(tip*%Q{~s-^mzlvaSdxH6$sHmyvFA*SG77mXaPB7XN9&br2(Es9Hr87-V}kOo6SCC=_jVxRY{{Y)!uHKn-v77 zkr{$Ms@xGk9_uWnwLf!nE9z?Kr-saTlJU=-z?R=q#%+SmUt*5hx4dslNOghEz)r`vq(6MiTZW~JXSIou0Q|*X38E^q02Ll zL512H9K*#EBFKAVVo=h13%sOG#Fg&@>ORauDyy$F+EVR^ez6>oYXbmc$vhx;zc7Eb zxNd?;X66|+Ld-O>|+?UeuhIR=P*BbY5oL;aL#p1&d8j?t6 zVC?;NJ{i>Yb31C`bVSj`MxRyt@m^l+FAJ0+aU@hF$)|Rr1Vp&*9rz;t5!K{}zn~)o zy4AS@l4u5>PuUSk2Th$qTpN}p)KgO za35nHWZt$EZ@0lLG-(a9Dyof`(3&r-)F9n@Qx@MOttKA5G0b5b^Vkev>#>=IFL9LA z=d#GSlz22ImZwG{>f-X0d^3neExJ6_QYb7>VaP`%7&&M@pvTyj(DdmuI`Cw}UstNTWP~)qQsnjWOFuZ=JzaRi6p;15!c>N@DkWP#*zoKkQknIu5 zhN%V(1pW=fMSO>si+b_{peatUnq1fPc>&? zefKpBI3NnQ+F-^vb;XQ|?-d)KrW*jzk#^n}meP`3V}aQYR|%tR*T=#i!S@J1jFf^( zksto#Lxp`bRyQS}fxP0gp8}`{7>h&f2PF0Jy7Ds%590XpO9(gcasBsisximX4wzYA z{uQ_e_^O^n-CRrtTCz%nCiH12iQv@@qrK7x<#dj~m5>Q-Nw`x(pxf~H)GD<~IT?U! zQ#K3Abu^3jr}&g3Y<)I35&=Pht+_sI%`0rp0_$2#5;5{cXl2;iQ8(7Wb<>$G0UujE zJm_?A2^XuY?XLs`p*FaIpuz#TibHuwiLS=iaD=~RA7VO60=(*L{xU3wyMa(b(bQGq z8B!(OC+-3iopAV$DxjB9vmQooLP=j{C2{sc10N8CfP`AtuSnQeM8nv5fUFWW9FGyA znd4ei9m!>&nXDNFOsWFe&<>N()j@Jh1Gs`_tln3^;0v6$YBim4^1_!h)upWp>wAwVIr;KG%zeOz3r-WFOi zS43BpCKoK}zakOZ5w>cRmY^%NB7vX^T!s9Az?J4D$`$8)j3=%gR8a$YmZ+icxsW&w zNo%)LMqfstBys*6;xr^J{DqQg`pM7;_)&$XVvd4KXpZuB2l(j2YplrzuT|%PueOh` z9gCTS|1EDL;PYB&%wo}cFwt%J_}KDP73i&aEj%uzpE8yKHgypsZpOVfC~<#YC~q8# z?p3>En&fq*d~m0JU8!;XAYJd+rx#-*)wy1Xo!J3kA?(zC+7sUag!wUy4gV6b%7^8P z5+1Mz{vZ3p-1-ij9Uy`B=()Z?t6;7Gm?MZ4iwdBN{4M1I#EKcMsD@C^wXW9TK&f2% z7<*oakFi?ykzW14*a!)<{V-PWV>^J7eC*-zgP1s}jf%dOiU!VV{}_x|JHP~jddx-C z55<#MJD4)v*ijT{DS;RrY5Z5z=RU-~6(!{Xvf6!B#jcP42=4050pJBNW*u>jFROkoOXSWPj<~r*MR}? z;fDSqt&lxo;!B9M;+8-WH;5%q)6;p9R0qbu&LouKLCg#i-$A5(w-kI=+(xOS@tl$h z{#R$s@F#&wSX&g!w0SeAGQ!$CNf_gGe#c={5UpV(&90k)C!8P!QUy>YiL-gahvyY= z$P>o+ZNVIn`#1zC*Lo?{mX`uU2%#+j6;j#rGcf^1cwpONOs$HgNEy?a5-)2$YHZd- z64Z)JtwP{Ck9s7;x&YdAp3lVzTM{nF_NPQxCa2Moq9oXY!i=~yDt&At8TQq<*Kvql z(9Q0HyqKo)86~CrfS3l~AQp~FNxMMVkvQA#?;47*r^K=2eUyz4b3MpFAWQ;QTAENQ zp1hJgFePL?&#w^f$sxkJw!cP_K;{6N@sXe6c-Wj)QnN3S;pW!zl$nO8RKWg>YV2p=jeZ&`x;$|JO*!-NCesmv>c#St8jUVKjmzEJeSh+}lIVe%US zAcd>*ev6VCYOE0|p{P#410)ZUUupU9lKkD0ON)|rAGWK@Q{e*QLZTuPUNJD(cPQWS zh}xL()+D2Ewl;Z0Va1MnA$MrZ1bGL}DIkOL4 z<#Q66Xcy>Ow61^}*Z_Ipn(tE;5P$KrXA-vJbH!iLaVcI95MKH3qamQk3-AKPqPX&8 zVa;o|GNTe@*1S&by3%x(koC)bkd+)pLwao~WVa<^CW{R(OId55);w%=3t12bSp>G% zvqN$e+?*?Mj+Dy~4sBmBB`@bHA3um0S4n*sB>=Vh=@fv}&?SP9erdObpe-eB17*t* zwn8XS*ec4b$BW=vR@f_ssX>kO&{ab0?v-GnY=$DB0DQ-#eo!3Qr~yND9p0xs*d}#^ z5>BsH!Ko^}?oh601e~n=IT71AycmVYul;2|t7l=ujn z%l08`Q;xX4zL}R4Eu4S{+&utB42|+H!@Y7W`@61V5RWJ$gw5L!V_nN6F_zAWLX6dp z7==Up2v85Md{Zy2^5FtrzlkFQr}=VbuapSJtE8!MxDK@xP#Mm)`!i)FF=e4It&c5% zusHghMtTT^TObl4Ecn&}#Dd(uu95bUz}WxPHR8+~Ql2lS6mJgij znDNrVMKOa+KAyHfoPvY>1RbSS9&|wAh}Nv3*0hDRNpMDvZ7hk4O57ywfHo3VEl{#3 zEPag~t93V_A|>HEPOp~L+r0bYnM_(+C==jA4OD>OgUX>1p)U)Nprsu5w!f-*>PD3W zc??zT^A`32&?NBlNvMODa|Ks?>wEN6)b5x{h|c>6Vxcpc5xG2etJwF(Osbpd>VE1DU&BIDsLj()4g zq)mXQtbD`Yy<-=k1|F!&BX6i?7S{y7-;{F7>qrq0g!`>e1c9_uEwhF^LD&xXgQH1> zxt%77%(~zGv{^;uFaMLbHpA@;*WuK^AK9v3@>>IDgWb4a%K0z&q*f~wsUm?SBP_`8 z-oDfH_D^}WPGM0GM`wzO(|lfwVx5{g?caDUHdD0jON48zCtkyc%Df1j!C=~o^7kr$ zx?%#IsV0>HQ4LN!pfcd|d~p^&xKmU5$+LxCdG?B3WxLlq;EtTsv#A##+d-0neGw=} z`T!Dolh*H_M{lIc25DAKcn)$V7@5Derk`R#B(3+KE#|Wz&&r3Ng$PLuZ)SkGa*0lQ zLKMUw@6c}o0zi13XyJdDCEt_QARvGHxZY2qMeJT*QkBCV>n(XoT1!}WU4fz%nxh5; z^LfoHpJ}B0!IKUmpq(6RHU(Nswx9T*0XHO)=EjaJ-GWYqT zX%ZOP{~^;3Lk#0yH6uh?{@DWJ^ePAt)C-btzrGVK^OXm3(UZRP_8-cF7a#XHHJu}Y zmXMD`G(?&PKmcw%p#!=DiXP!98I|q;#JK(ukNs)mMxi57+w%aFB1&O6J@upc5E=rk zEvg?q*)8o7()tpbINd|qe6|m1&)=8}lU7<^d%U`OKc|H5LNQUeo4t+s#;+T6g!k z%{S+SZtf8`j3I8jVhlJ8{$~IeWYF=JCX!+M?E$brc`X6LLTQLqiMY#q@KypPxY`-; z9gVk*ByHk#-sZr2nslAVC2Cp1!KgGQaacQ!@<_%IjpxI>|3tuDTAigkv60+e-|nU3{%qt8wYI`0TQ4K~6PM0f$VSugoc!sO}}c zZdSw<(6%VeY{KLtSAulCoQ9Q0aoRUpk<(~5Fq?J*{2!yEn-IbU?1t3|+X2$eZY1%R zbuN#rNQrtO;CpCA3O>(Qq`)Pk0klVV>P`0=Hw*&MmQRr@lyde=srKa`k#;t|76(j8 zYDJcbmYuU!q~u=!PWBwqr&0g^HrMHJYQ|_QGeBJ0WI)MS9Y<~eX-Hsd}S-C z3?NHDdCY%Dx&`C13ou^Gsj#Me=2BrSMZWW{gaA+TjkE^8Q<@U|DmW%}gu3gjC$&Mb zjk$cl7sZH3X#$XHHk(7r z;fOs&DQ}au6zpcu!>YprNP@yZB|W*nmxQn%1h7gjL$Ww)Z{#9*R{W_maA2Pyhay!Y z9UyzaMx6~9AMLYAMTP4v-N6!n(fB0DX9&=E}K>Vi)*FbAO*AaqG`JnD@QBEveMEH<0AE3A zytqUnskc&jxJvS|*%P3ZWJZh!qG#Z>Zv}vs?C4QhkGOO8zZr6xEE_y$Rf*@?eV+3z zIecJy^eKZ6)gXEI84Pjb8dDrZgVNMdR5QF`hh+NQ-DoD_Ab6}sOOqP+qK5Xfb-h$m z<}Z()gu6@5@i8xtm5IqO5+p>S>tfhB#A>8Ka1Znp2&6WL+YRsAYDC0+<0KDe8`ev9 z#|>dGfv6|e>Zyw_{gcc^I4>SZsA<&By>NHV#yIVAVS=cry z8_MvRVs)!OQNcvGnGRtdoc46U-+TgO-!CIh+j9@%G*785?mj*=E;WQG#vg4B;qNUS z(t}tBtd@30Cpe$qsb61e+&D%8a2u?EQxj|Ef*f))@Fov<)jqtX zHA|KNi}vKo^aXSkEnU5t2wkfV^#s}e8ipsKmwn}s-fV=g(G5NbyVn$jDT3E0mEr(U zsvWe!Z`^-_S9N@WP6jxjv)90>0L0HVPa~^DZPE!CT^9meZ=s@^3VDF*GDQ7cF$!`n zt$0P^>#>z$s}>rN zJF9u9Xs`sdlEIQs9aOR+)tJqbw!pCoTAf{>Rn7{dxn%W%1=Z(x#egt-0W`Jq2eoD4 zwGq&&iN--7DoL(Lko7$tn)NXt4i}j7Xqxw(Ng!lZk{Gf3kPtpsx>y$|4qdEKwGo2Y zZ%PPZfUC6|^@R0y$VY5q@<|eHBV@f}G(kjBMk7VR!4;GQWYsr<=K~vkVMdw0lrXj; z#U7XnejgE6z&aGG;AUtTU7QL9uojiskae5v3}`p4itkb4b30z{83MQ0ySMh>WM{8L z(Wj90F~apQ0vblN1xWUNOm#okPsNz?0FYnEktAAu1%mMn3}5#WXcFiWvaZ-r1PRPj z|0oO!m2djUis8w5Ady#wuL2e$d<#PZ=6?~C$ndqz@Jl5ER#B-WqIjExKKS^4JqQN% zf&5`Tq$Y7;f{XwlSz;PU);^+O608=0S5a|+q{XP8{pQvlrp4264Af^T4BgsO<}Rov zgqT%LxS9+RuJ&3BVfgY%RwypuKnPk^3P4DxJiXOONwB!2-RMB$%AL9$}X;EtUSD%4>~$(OYl))_{U~*}D)6 zX^@DVxA~3nRw6R!f@W~VUqseI(e4Fg#qno;OOS-uBClawn;hb`RdJs0JB-24RrbQK zQiQC%%50KeLm_?irfL$xaK*y|)||5<)t<9QC(5!5I)h_20a>x1nj#=aKmVL@cSdq$p>3;+@K}bD8tOZzjrwfLv zLksJGpV`#L-og$1-aDJ|&n9)oKP}2f z$OxA!KZj6O0NPm!!c;uRnO3$hUnrC8#6z$q18)IO2POkh6{zTMG{ym-?fq$u9dIzt zNfOCOPgX!%05c^1pzwIp=bAYu@fN*1Vv`@0o>Mkz1hr{wk1jF2GF-=c|MYM4> z8`CBUv2bbSp&KD0|d}pfM}#1?uXC{s(ASX zG6(=UC=2XgD^f0hg#5pQqjSzIuqh!XHmfkR@e~ zb}TrY$b|IvkW01%Wvwi_mlSQKo>iN+oBtfSQsL5gL3p)bX1<=M)9dV*?4NwFpEWgdvC z{l7)RuiVlBPhup-PW;IeV@Y{Qb|+8R)n@Ggv(YgG*p{vaBL7!if_4MRk_o#7LEVL?wxG#aq*AvE;Z|tkRoIvsR4W6oi^b=$N^RkVkY)y7S ziL%R?Z!aFx<1+AFXmaq*2(A#=O9@r-yb4WQzjXp;g8wI5bNm`1p@; z1+#+7* zs^iKiQ#+YDuLRqy?FqIgLnzIv*Cg1gr^=0OHjn@hAeWZ}!S-ZQ8Ss7>F)^CJ3QWlc?MYzEul^;j)Ut!2G>A#u=)t9>jT)l6`C0>Dt2R-nlN#78 zc;}PwZoGk6Q19MOvTd)tQB*T3@G#(uT=x){1UJlBQW|In{nToc$fRUW5}7E0(Dq$l zcvWKUef`DS2a0HmEhFPEZ~z}|edXJ}SR2>w+kgSW(NE*P4SF)G-jgVOAK@v}4z3`d z@w7g9f-NOotdjcc5~Qk=(k3Yw_SZ@*t0YVNavJ;dQcw*y#8$xmMX=$*iW3Fa7H^2% z-ovsk@oVIdVSZcEL)*~pJxTYM;R3jE%Lyde;%+tox7TP0SLPsu(iqqnd^FlnIs`Pv zxc6HO;ihllOapK4{}$u^z_;KON_vQr9_~}L^vSmJiEpXr7&RXosSD~n3$fZ(U$!;m z)Zng)7H>HG2(P|!$K6GrKoac3MR6L(2l0T`&=`6tKC3DFmpab^P8$LsQLI#Wb_myHy@mLE9w*{CE$p}#7HN2Za`=|~a3?S7k^bWm{JH&+~%e(g`wLv+; zl9Fat&IeH%A;!MQ%CZYPwd+gMIcN^boc9>*=CA35fEygA1IAaSHL&)rq?%;F+Q<~1ZXc)8`eFzm0D{sd&(i=DQsu&1#i{cePx2T)_ z`hS3~cSS-e4}d>j*D_AucC%Qyc5Lymis{>bVzy7xys8$GOaqkkj_(4w5jxp zBIUv4`N%~5$XNuoMFknLvZwGd%|3~?sXzyk8k+eH#l;d(i;dbYW^$5g3nbGncCb`p zu;1f2+;ZcK42M25i9TS187wu7#;F4hHvP{2x1C^ zCE2z0V`2xS45ySwd@)ibJwj+lWXvi8_dmkwoiip%y+@fm`&X!%7IP5oJ(5UO0u`*D zR`^owdnDBsljM7zRO@fz6!on0{Pv(JduQ`GADHR1Tb~W30Qz}06os)ZSe?LW%7l`c zDPFvwS2OFIP@vBK{(`>EfVu_t!e22{`)+|jFH7=0|LuV!(*7+5(^usA7vR>L8qS2f{~kKh;4C-F_g` zl{TQb)rU-t--&E_x35<1cQIlk$-l#vDXz zhZw#+mgL)y9CRIM%j2C$!;NHRMrhB$3YILK8T0WLA(AneN_hatAmstYcZS6Wt?;x5 zaI;tM!#imYTr|eh9_VswDRg!uLX)DlJ&gLGJfP_yZ`3?(9zX(usFKWxXRb*CY1`W^ z{{k4|EdRQ;QSfc%>V83mj@goRazt( z%s}huok{KjgA{gL8 zd*I)+2N(&V{@eCPJ>OS8hC-?D^ikc3>4HC|XZ0SlO8{B3S z)LHVI6<|JK(*nhRj$&RS3C3Hfs|MN`jcltP%b`fr)i0Tz{RLhv zRHU6mn>!1{FP?-%x4M+h5Bq`??kmu?px<>ctqJiMVG!%Rby&O(R>s~isoE5ypVa}Me%YKn#=!ORRW8cC)eh0#F+!TvY+C%+WrsVMNdxn1U>Nq zXiiAb3s0Ru3eKWc46lFd=L4V__?@!X6s6W(^bSb4c^B~(pWa;5DZnRHeZ{7XI}&_09cv4MgpZkWqDSKkq^)$@R7HLlnG5)x&;Xd zH>LZNfRqU|1)xm$+TYfNAt|3tdlSC#TTwlN&XoDyiM7ME0Gg6vSptt zOzzcvkt(5At!AG}*_1B9B=G}t;Z&lhdQD=kdaCIab3sEd33BeKo}AmKg6uPr9ZqE& zzKfB}7uUpm0s8rhTk--zcW?C|&!p*uS5fT^ux_#)kZ`BLukcSKhe*afwTEQfyUU8g zN3X?)?ky1AaF~{aPIS4nsEH(1Ld_>_q)JeVNEZM}FhQDx_cvgHpi^AC=om?NL zz$g_lkk~Y7_o)&dBvk?(#8-E1Tj=--LH&asg7!OXTC~@la*`T~-pdeVN~e_*A5Bqc z&5xAcO*QNh`%7#lRuMQmP*yThQL4LP&~+bP)+ejUizI(~Ll9>4Q+y2;omKh+DZ4!x z*Y(WkaHueqd>x=-P|Fx*c^d*a+3;|63nW>4OFtQR%g4lI$f{BvEAHsAQ1u$fd`c?Y zWOhynz3@fXIU%fS16eK39;6`^lJ}Nkwu?waXmYH24gnW8wkZXRj%OY#su_~miBwv% zlSMYjx7sazdIlgYFB{+~!TJzZYTy1>fc=&Lb_iXLNaq!NRw-O`?6Gi9Meuo-kFrV* zSH2ja9gy#k(z3~MP`v`#8sFeWN(9dp1Lcy`$R;OO&v7(_WLwffsLlXlwGRZA0dZlR zA1nZ|{^<2HjL9c)Q?HRUwnghE099@cA$SuQ{=}efNyp2BN#_n9E|@C}uIr(*Eeu#d zinPmiRV66JC&6qHE(9*efwlZ|2*-cgs?H&h2z⋛E91(7Js~l{&4^O$72)30?~I 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%0A+7oJ*x7<{}l+I#jN#Y*-(q-Tcd}94hN-ISi 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 z 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 (zI-u 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

    dI2BM|!v(fqkp4)Czvq!^;FG9$q21 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

    ?DA#wF06k}@Ai59)A&pAp25$~uq$mZ@GIj} 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%0A%vzAkH@n{Jqrc|3BzE9>E_GF~bH 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

  • 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%0A$nhV`rFUcDglDeS<-w zd%yRYvGf@`QY>WXj~@ZNiK^7sv;8|Ck22pE^z?l^j_>72@7phU-$EDo54~x)m%{9g z9EsR(JL|@31ntfryapc_!_VZ<>)(<5!2Y@vqvDfbh|D$6^m3F$v7D2AM92aw*3bFz z1!`(psuZSuLah-US8Eh}_g%Odk9^$PBI@-p?g!^`*=_dmzX&xhLda&Pn~l%j4=1!Y zT^B#DdkcXUsn?ovdfgUV_9tuy(FUBQBh?`~si~^e!HYh+$WT=)G02Hn4Ar>+>_K5Z zmGdm~V?Q(Svh25H3BbHm3em#?}p6*Tg#mbN1N|X zd)s{H0d^W?^87Ea@}#EoykOW39w-K9BVB>%a}+W}92WyxtwEL9RkX{bfK2v9?hp9h zhjNuqi`g}bKcuzDV=YoEF#cz}dtUr|Mpwc)Z~*av2DeM2kx>vS2CQB_-_XrMF+bf_ z0&E|Y5nb1)W&!!INPtEZRWz$Ud9l;jE>&5*DnuOB^-=!2jKoLzcbpBvaT%hIe(+79`BqkuCB6M& z8N-~l*9qGRfqU0^33QMp%!7X}iN=OFzi0m4rw~s$rw`PMdL&RX!YtP}Sv56gn-zux zjFyyQHvT#-mYnRiHTUZKjB}*e^p=5v5n6=ORIfzpiDAb_rw1ds7@Y$ z*q<`|;ePN|IIQ)&4ITlYZh0ezIs9^dhB^G!H#G$eqU3@rJ{msUtik%HHCEiZv6XxLEv5fVwXOC_9n`)C@71 zk>dl8*sr}d1E>X_m~}Q9aybA{@1A1-RUvo*sCt8i22c+fKo|tNP<*J{Gyv4m+G%tH z)KNegeZ|jbtgYN3Orq@hgv!mnlUwwpb3Ku*W&;r= z$B_<#)v|s4#J8=r4oa$Z=$hqkymC@&`|e4tf`~0^g)$q<0AKr>iJN)NI&|goH`blB zvVHrcRqo%68XHo#@K@&wjC{_~V4vFkn06yg`$!sCPsg5oOkT_h9^*Yi`RLw^G`$~BfiDv$ z8Z}{q^Q5mM%*)ZtA{uGp=*Nc}Qt5NH$74@KmosuBF`+;T`JGrVHJ_hq%#3HKp^p|V zmfM9rB4@w2)tRT4@u(>dVD^|E(sDZ`BoU}Z~CBR8e$H=w%-xD_O~QH^PQ{yuBx zdh58Qq%8)TD5VVk|4qnOV%Y;rBjv2tUaNPN({-Lc8^~d8@iY9#Y$)E;Fc#}~?)0wI zz^Q}IK+`-4!?V-pY-xR#aI+tjq}B)*X!?5pKyzP+hS=W8xK>T$rY88%QUNw$p)>c% zH=sfbbT0MTP6_+Fd>2l-Z?RbtXPS5l-0gK%CGhY{D><7Lep3Lvnkma0V%b;8BN96% z<705vB8Mg4u9YeZR7y;g!B>rO2YKHVWB`C~vWU9rS`17r=jM{TW#ex)G2I;nrA*g@ zdFl*rU$7s6)fKd?ihoXI6+2XwZCb|rwDtH|&{CSPols;##;H!ntYO5|zc%+%OR31*sX?IQo zbRLgDvP8atYybLkKS#sS+vwB+~mF)uQ?U zmI?tJVXRdVBEsCWc+WX`n1|Q^!Kn}(%9!P$cI;cA^>zmmNlgz+FWxF(mB7&8dg(k1)4f| z;y$LwIbUly-!q?crSHFO*3$P zZFV{gK6bYm{2#B$FzNe2L-%}4vd~kCeO7zww$z6y!i%;#KQ=lpm1lF>ol3h>w;4ed zfg?2{0>TiyK0HOKKHK;NHNJ}i{3tcFD4XJuhWU2qmcz9wXoX**Ls#X`%|G4r!->&k zLt(m#i&ANO*x^tN@B8Th#AE?={d7W!AIcZC8&HcH^t()4O7x11CKuUKX3zO=8? zRV6|lNe;wxY+>KRo}wuTNM`2VTtIi|adK@0?f@e02e5(cikZ3uN@Y)d$=?S8X{9E0IBQ|# z5dZ@?DAO(g@dM+Wfz2kfztMT5_$mRJD@BNYBEd^wtT*yQc(O>gj`|W;Rq4I;!kJJv zjFKg9m=U_ucu~l9B7B8h^CDfZB9KJ=WdRgB)wxU9h{F8}gV9R^;h7SKSNl|!eL4QT zbF(qEZ1DU6eDu@oe8c~{@v}}mUR3+viJz0s`2PidR-)#83Vt5XF5t89b4$%Xh@UN( z4$}BpUfKhG7D&I&!OvLG!_TLU;K@a1@bg_`7un!!Fj~QW_z81Vl}e6;|yNm>PQW=HMsb|36x^k7zN5YAd*;){l`l_BKCYJ=S zDhVW?q_s<01aD z_+4*)vlXjx=AS8%wKU_uU#lbHWjy5c)jHniNsYeMeJZAKU&oSH@X)gCS`^<2^g7~p|j7P_f4Uz-eHTjTLHQ#Z-E&n&Iy+f6;}&le|s z-LQCZ{AJUs`$zLZhZl`BSd8nUGX>hM&I8D2=XFdOy7?v41}e1}_IE5%a^js!Wvv3E zHe{I>{52DQKb!CQontEZ`L`c`f8J+2KkYM~AJy~obiJ`52&LGCQp~-yjMt)kY! zfj-U|r|Q>LWQ9-(-`II!XigC{p{Xx1dS^PqYcw4p`;hTuTDW)c%)}9MhswFs5B2k7 zX0o*!qMVHr{CTGHzG5dkSExag^YL1IVaUAW-?MqMhxPtUcn;HM z(GSkS)c-LSMb?J zTq*2aK8lpT;9RHykzFQRCdp3(XjEI}n8MoFdq(rOrsYWD+eMUNKNSCR3H3NiD6}2! zvg}#g0uO(C54kv_J1Hr2-}u-8hy=jozT7g5fAH3;QiN?Sg>()7o2ePp3T_^~;K`>79>J-3+uGU@}o8u7U= zHr#o@INO$bayl))$MEuj@*57x9zju6B;wlVm3h!*$%RLUa! z6tPbc-sHbiXU_yhX9{(4^$p@h!>Yy~N!~ztluh~ZFGg%^mEB(wo%-uShi)apK6(A% zywnTS4}YAkk^a|Up=VK}JQ^5jhFvXTiJe}qiT2USf--8S#81$6tz|5)%lO=U5f`q0 zfy7N6An_Mz+M64tk?3jxzf(_TB?kM)|MB&>lHKvAt;cGlTy{O4#*3!)Xod*?o7Uq3 zI{fVQctCpFKd~MkU^8+Sozi_hw(z@$^|)CG{Al`^UWJTf;>dU+VHcO8j)+XovC7x` zC--6m-!|(4HVY4X>4^hUjkV-7?|;1|6Cu@`UVvQ zw{uhPM(uM8Q~%}DyWCSp;<1aGfY865E-Yrtz~K&mq{QM8kz_$zUH%&pdt_mqO#05cxazgHf)7}f^ zpfy#SWM1beX2jnd_`F=E*#2(n>h`6T-%4o@AFEnHr~)BWe<1wGk;04Qz+&v$_@eE< zePG>94M2?bM`++eH!FG5V)Ih}9ah^L1y+8Wzh3AV{j5HE2G%XS24HaKT%llnBUcxq zcr;8}%+-HZa5d#luC5GmHT_<$X4P|bO)FRPr*JiI4OgSD;mYdd>idmetM%JBhlSuY{}m#avxf!PTTYxtbc{YRbJ_T~*K3^j5BB zPvPpCHC$bH4OjCzxoYy~74qlxsE-&&SmiHU$s3i$g`%kSU1~iFK=r?Xb=(?gp!HDA z)lz-AIr}ptPmfCTBWp<-V<_`QI9WTaB(vzBGuus;wa1kg#@?zycx&$VW2Is97%@tfYW*g+B^ zc&3a6-F^HxQpj_Oma{zO5O%ELKSW0*_Jxl?B5UM zyYOFBcepq_7e3r2emn0#e# zFkO>_!3UN-zYsg`Vrxm4hhYtx50md8znxiX>?Wbmr*qWs^@bCeWpGHfyljOGOW5dB zf#%zwRM-+e+0;oM9(I=_-aP0sJD2v@cnJ)|M>L7FGDA8w3Za9k>A5J5+MA1Z5}L~c zNRUHo79OF=#C}t2w~l~M=PS1`ddS|?kC;#SYgV!r2I=&!OJ26T481P~ly^F_zoxaj z7*@t=kO%9zw1Uy<@1)@!=~|2+?Atcbz7+D!m^&G-@AFYqyO}j6W3lGX4nU z%V^}w8_1Vu!};3~FkuP~nZ>wCArbl|IkVl!nLz`_*@Fhu1Xs-3?7k&BNdztX>>Bb% zktzt~=-IjL(O6CXil&WSO?wLiH`VYy*Oj<>yP7%>S_AXP*#q-~I}uvSjr8n5t@(kQ zNOauSjY!1y(J&feAJoh67TQ%rfY!8_L*&8>@oT!6*V6VEd`uOl5Sp`#4QE7~2=a3Q z6gaQ%^&JNbp?NyaNdm2&B>I=Sebh!Kf-g#K+Cukv?$sm?WxZoo4n!hKZJkkm(DP3 z5SSrlrEFvv-BBz4eQjZj*n_hx@_j%YSrxRZ#`^nTBjEHR4gDOtlxplPM3Ege=r zBwD^HV!uFSN2F~}uV{Iv(KYLZ!I@28vfy-!1&jng4BRApcJ|}C{I~tB9|}P)f#~C} znC(Ut-g~clh<1R1=C}2kzY8p&Qb^mIy_|Z0V}x-B56w>NY4cV=>6m1H>KqZAZ`a{4 zEcgzF>ixx)&sRENQX1;$0#5eI=Y;xX0TI~G(F0m@auUITuQ-lY5#-B%nf4CSPFn6| z_J>3Ky!JZmgL z%Z__|u04Zo`roWa@BV}LKi`q->vWQ5UpAtvGb_3#c>lxVvnJ3yLF;61$9zJ{Yqb2$ zNbtQtbEknwe^m9hSu^E?Xer_~LgXq}aTfN>z7e5BvSvVWw45kY_a=F9MS1b}Q!l6Im6&5%c(m^~10BxDW2HMyEv#Gz z*+q7Kh+!|v8D9~5jrK!VMG~0L>nc*mBi|B}(J)?(QF3q${5hgSDOU1DB)Eo(bM|YI z;Ile@jLLq)CKScjnuP%?u+ZUA(2$*1zUb>|M7!JTK@t)ThjbJXAbJ(39&Lm2;gt_TZ6w=a!?Yek6v;(2uENmSEeEv6M+X5}QNSV}HMj7QlKmH_oQp=s0%P(p9iz6>R|X-|OT!C5e_ z2-a9b=YfawiPhkfZBYU}O7vbC+CI@5CAdNH$x!ISx%sOibky93`N9jWLo}3O(+g2R z#3T9B`g?}~Cu=PvOrZHNbu(1~N}z0VV2H-h{!U*b2H$}M)-w)QKj7KjMmlRKWSaGH z?(qe(m7}i3g>p^HC*`0(27fi<=C1*1*qND8>T;i+$>;V$8?{PL@WHzfQm8wMB1hgQSfB_)kiO)LEz<#6x zvBBpJu%YYhpH z2t0gxiF5zzz5Dopmc5z8pZ1wF^$=ku9>MBG3ND8E#5NeB3JWjin@dAeL#G1237x-L_Wj+k~z@MZ}Q@RLc{RBi@{76+# z3my{3tVD)XaAaX@kPcu@(+9lCKkV4kuT?5)RB`<8W=n{!etsF*Re*M_Ro6@bjz4ut-fzJIZ6{siPbgE<0cj0 zDk$8>&289<(K&*|a4m&)pBJY*)L8;dV2%}5c?#^5wY<^FUrIUslK3Eu5I<}M+3?dW zt9;co_a0@?Uaj1h`aPlO)N1=*!!N(V;u#$K7y0G;;BH#(Tlqck%PFvdp84e==2OZ0 zf0JJ(VSi>0sn6z@PyHE;jk0#R{1PUash@{d_I4-SvP7t8G&2c=5emw;HQ$x(1)<;VXU7=o`5U{wwbDv(TE+WUvnj*$3X12iG;Ns;ZTWT% zj4cc-y54;JoF@S9l?rThcq!9sBR27>!M6g($g!`&nhP+Xniy}(uuIIkLDW2hD45A6G>i^A8G3975I*U zyZydG%-h^v7{w!4^!l)I$ncx?y)%pWZ&C>Zo5H}R@MB76``(6g@8q8gTlwcd*+Q+1 zzoc?&O>gXBLqa2+y(7tieX$sXcC6?fyOf;pNck$P6)GBFI_YiYKV>DO0VXMY2))cf%ms5$>^mT?*ff-A z@!tmqYw?Wf;%jyGg2HINgS8Xed$&SRJ=t^0p&{&4?p!v-i>U!q1VhVHg>rW%cYJ+@ zE>d@5_teTn>@N5y;H=atsJJxh-6p^}@LcwNeWLkqW+@Et1^F)mJllY0EAVWX2PkJ= z+sTzBc+LZ!YvV6P>|M-!&zR)EL-AVl^I#h7L!@&j{(#=V`Isxs#kUj*%Ifa_HL9LKpMv{h$ z+=Q8P9z(@W@~p9wWcLxqJP!0}AjeMfsIjeh@=4mRy~$-U()-1&ZkQjST;(eFZFA+4 zfD3d@O`{ftx|>6?^WBA9I$wZ6F&np|7z_Y;gX})-}6SMh`GvGEZ^*7*+@yM2R1E1$xkb zffZ49KH^c)uY67Ja)T*iDg~vnIa#)(BMWX)8nHTlijGmJ#gSG;@}ChyQlM{<_nFDi zm!^lP#XPy79*s(}mNbFmrBH|wxe@t#tfuNh6WQZwaq0bh<*L+Oo?UBsAsb}^hrQ?S z2?!tItKA-d9QZyVV=gHhsXu#s#d+X!=6QE{9Qd^T3$Yac{Qf24?OzK0{R@oTY{I8Q zx(94vS{YJCAW!|&4GjC2^gcYZfB6qKiCOmDgFIey;=$zc93h?AcGx}dUjp6sFTD@C zfBEE?bVFHr%(v?KF1=gB($v-XllinHtVsrHf* z?PYqjm#j!*%D-zbsXIDny|R3+M|(-)H>_9xq8``F->Ux4(odrpp|Dsi@Smrj;|x$g zZU2v9uV;Psj5Io={!RLM;;5YUNCWjC^z-putjG07eA;^a1NNBnj10%Zm}`%DUCc7+ zSs1YwVqrXj*JO`@Z5MU3$l&ewSX#U%mbMvzlv$E%K9!|;^0NoKjBRi|V52Ye zU=M!T;IOw|pUU4t+JN@R-!^8z+?XqmSg$NJa_zyr4rULY0lV@98}caoZ7zT7m9_`p z{R`IX0<)G@?SIf-BDdEokiih zE2{UfZEdLTB=l>Wxk(83hKT*G16@v`Ox#z-G~S!Sp3(AMSmQB;_p$uIoZhh2j7tiq z`N#y*fNV6)%u>A4*tfBdZ^ zO`GwD7=Oqgzr*;08)74f8q%KF-e%>0;C-jVl-L{fV;{uUZ7I8|q7hw|J&*X{`HBx# z1kQjE@xk*H=M^`82*qWY=pyG!0g+uyV?=vD!`o!PAI;wwv30unoc%5GY-Nu68B6!4 zzPZ#VKAm=ZDr=!zFx0S1i(=+-y?&3`u%av(mqrGcAFc_s{%E&X`> zXbF$xjN5@vriiWV*ZdJq&SMm{{8LoR_^hJ9!*z_W){JkVHHe282L^;Vx9Q{9IYi*G zosmDs(mF8S%sPa4GMd?0IdR$xO}HKY9KyenISd~@z0~;uyFqVvkl-|A zTmSK>4%7esi{aUW<-a&J2YVG7HWH81OSsVb$p5)r4dRW;2jNIb3?NC_Z$50?^ zQVY`_40cYKPe&2@|0Z>SUrM#I-e=vxdjFMRfZPoz>rIwcHdM2so40Y*aR@>%tKz(a1MUzrES}^T=oH|B$I3f=M|ZqKyJ zeP7_VStnqne~3*vc1~k3&m2_<9;Ns984Mhf3GwQcW}ZJ18l>aBhmh0<^L!WP`R;+t zb4ZqXnka^$Ooj^G%8|fn9o!NdoVIiAF5-OBr9>OF6#$wr-0j8qrc9Jj9ioox2Ox&3`bCUC_IRoOx$MuiVAXz-QQJ!3W+y#L5Tn=I#%f#RtHp!H0`4P~;)Z zz@*_*Vbb8kL{S|lGB1E3NE{a}{|FO|NFcv`ap2)fz(FW}TRyoU`>f!m_>oP(q_ zxgcACg%>f<6D+E32Nuug`}P)@SWNxyG6^FGywdyyEv~IrAK)H+<=r@tKb(^{O;uUdj76YSliH7_|?TPMXAQ`w;uHYbU1ON zD@}MvPp%|%5S$9CJ;CW9rq(2ZtfXuqbM^}>&FXI^W)w#e=WgkgqU>1l#(3ux9XQtc z8fWMJ<81FXP7^nZ?*7^1tV@=@fCWlnrCXgr2BETHrPI8yQnH#%6na@sOoAsLvd%r0 zh4FVdwwmBaq5B2nXlN8XvO%zlPw;|Z?_wbo1Un!n2sY628}25oGP5!^C#14E-Ijw> zyE|ytEs|LU`96=>F)zS&_PJiWr~2)73lyHJRp(_jZJPBKzFX5&3tx`M!#zAZ?w;dW zsS9G_V{_wKXZ_+Jv8?hLBYxp zQPHm{pk>h-xf4wjHS&;L#zI}ltb2-EEpngX#hxNvFXaAy@vQF11MdmquFZXGNp^I` zMdVIq{ZKsKSqxX2hCK6KLc_Ya^g>)YeuMf0PC3ldc~EN1O z^CR|@1|M@&l^fqv#UUygL&&Bgs(D4@s0 zcO(neSc&Pdib;4Tn@bmiyO!Nt+Ni%6Z4Wg`9E1Dm?!~3^Fl`Wk^a!pSW8`T0Iah&) zC*&>sq5tI_r3>|C^6}Dp`MaWkik*ZB)m!%CrFWVK>Xv956U~v^cc!m39Bh}<*NYmg z326O-dR0n^j-RvaJ4%122G!V#0^CZ82mKx%FYPoBerR5ZCZLAvOD#=qo9=@kli9(pLTEqc!|BVUabZQ~dAr$oZkZdSiLj#3@}L!tY9Kh+!LU=mNPCpKq=P^6#pRCZ_tkDK?bBB~MeNWBjxn{id~AT@ zgdU^e#wa~a_uqrWnoAe*!$j!SDK3QoGxB2-Gs^1hJ#~pV0dt>_9QzIy^FZ@i=pDYn zhM3Bo&Wj)JQHWECQC5)I>u>miv6VMybB`}Du&9zR2=QB}({&6Z@hs)e|Koj$@qv@Q z9DR9Iw=Wk=;sAp248s!0N|fSgE4J!I#a10j1S->wQH}9Dubtz)x60e8mvF;iV^Q$O z&>mRyN7NMC(I|e!l?qIi0kk54s72@2iW!$hgTRNAQh39hQ(8xjr83bDi-m}G6=3+A zmD)oD7JiGDe7%QrzSw|ma1!Rxyi(z`>OKC zom=%PaEFNRF%wY54~`O=_!PYX`%BGM${Zm9vNN6<`!0&_Fs|N+BY%8F{HE$xC^GC4 zE71J7Kn7`a>M68qm^8IQEDje{B>^_{B3MJH`P-erPgBsS*|cfSG;JaxscPvX>%S#xKx&b@&FZik-7*KDo2cT9KSZGRpFb67IbY9{(kD&5MXaVyKf{|~5{fGO1Xcsm z=yJPZMu=klct<~cXzKTi{%=i7zuV2r`=d~^47X0Xl+*puEAF7X7AmIr4~FRX`!v3a z$L?$%CwhGR2OhVL;_-Xidulwv<6r9WGkR<hL?K0Nz;DT=-sB=<1#MYm-X3`sfSVzq~V{bZ_+SN zbwT<#2_O|gBu$ra03F)puRAVR8!2a5_PZn zIb8PW*btGZ`!nwNcwt(2E&kio<3_L7V{C~z{*@Oprq)ZK0Fm4McT9xru+3yN7YA?BROuC5P5rb3UJkE zNW^hN6x!h8DbcncuT>=28oNOqacl_;7oj|lr0OnCndRVTwqJ9_5c)Ng(Gu-d>$wp+;!%kE$5 zG$2(haxx=!Ac9Yv7qpIVra)_Gg@=koVP%6F$TP(@Du zuKi;&P{$=oj~!>1e%@rD8eU9$MHF+Yvj>pyN(qLdu5mVX7^2Aw$u@bbtFHXzn*3+$ z%AZa*sMAg@yP%Zc1Wnf3tHVugg<}#01IO3}M}>p$&w9@SsoV>AEsf`j+dN;NrDHqr zJ`pQ0a;0TIBY&yOc}9BK4-~uyvLzv4=vi+TDOGtV#4^ne9ML zB6{i`t@9rDaayZM6xlm!?Ey83@fCY&?eUd++_SlDFk*bgUXBMEU%A))3b$%CUglE6 zkVhuQAF@ZY+2b}z&ZdHd+(?6@J5k^|DX%EwufA)V(KEsV$gw1~V z*T0hg^}fD0{!*e&dx)Q0jAZONzUYi?e%JqQKEo56(+y?gCy7n+mSO+=FZSKe^-hoW zXXsG>`=5=++xA}0g8cLGc;7RU{!`W?57F84di*Ah3jc0A-dEF8$cgtlSUl@hO8S0} zL;rI9yZ@KOv(~0EOZ893v$_Uny>$gPRF1+8RgXE&HEub$13c}%6~Q+XwlHil-0EtplhD5ETu1EHj52M z`7;qZtE1(fom}VQ<;Lltfo_x1$rpIS>{)D$+vBgG2L`dbk@38oaYXR% z%h2Cv#lOyBl}_&LPJd~tBixGkJ1URd_?`@HIgTGrG^lKCTren)qoAQFc8%C`8rX`h zw=f7{+ilz3hhhVT)Riny6)>Xn+Ph8}RUG)vGyGNpdOfK>99x}tSY96CRq%xPs<+Xi_Jc)qulGng(nj}C=Ml4BwIS{mVJ`|xX&*%4%_>~Z+lb+*?((VI z>Rfo{S2=~qmxbd?ueOrc?5kWyj8wF=o>po~r#l;# zVI5%aT2IFmKV$e(%5#ptX`WGtfy06@)AV7^eoRm@0xfP^Y%qCFiE%|WiBZMu-#y^; zath(YrfvgU`u^g)I<%t02_r7q9TZu&*CkKBxh}Xh(9E&6ntIVWk>scX1~r_TE$y*m z*?%w_{=1Z-z!(33l@NC5^RK|MNk2G#y9Su1$f1RY=_b7x?zlZ~ye!3fVg1ICvYm^83k z@UIzry!?R#MZU@g2OYggn;9JPi>Sg$S*;MY%sKghiL*y5U+-5HSeD7~`~!>A%PU-` zf>m{s-%(b|YI1mCX`THcsffe?uCdmFe4s<>2*b}J8~|1m+`J&V{Kol31%DO> z7R=dX9Haef?Ja>@uQEG*M#a?6V@q|_hs>h73y$6QL*QFuSG0ExT-x4sREVs5(^kWS z7IvEw8Pm!r&=NJS3t`;^wrMy&e6h49aMQcAO|zqlwHEDNUuz58!Wp}SFuopsLU8qp z47g);FWJzEW!QPUZr?tww1?0H^?}f#@WN4hti)W02LncN{>xlUC$nigoG{e@Ol1P| zv}hzaz#=;{%*G@hYTtc94a>V~D?zCYkveAJ^aUfkNTAI@C=z87@}XrKpUUVf@IOB0y0PDXyK3(Zt;iZre0?@irITZbtHS|;+Z zz~zHU)W4`VLZp4|*3HDOY-4^iCw5Y?w_}tUnE)}ai+>wtb~4IyAaMYp0Y;J&J9WRI zlVtxQW%0vpG-i^Q36UK~$fTFg%A8IKFC0g@E>q_V;K#IZVKWshqE4)>+cYlcjBkz5 zz1j%G5cb;}s+@7_HMuza4H$xd=_Rf$WF3r4t{XRK*^YJfz{9W%J|?PJ$uS=)NSKW{ zh&qWn2mneKFrj)F-iIV>*wuR+Hv%f$D6I9c67*!y)m_GMcf9F#ypF!xNNu&nR-)3f zD-z!>w69UX4!i_1aUclT=S!jqylh_)<4G2rONP(Q{GCI$kpeDmhALLheZs}}pXFcn zO5wdhe^B2g*p6qwqiJgi0hCVkZ&E2KD(=QAy1E3f<;09YltdYeXm$P z{>6t-1|kYXmi{p|Sx_PC8BnOV%E{rBeZOgUL158W`@mwUea4+4t#_f*KfT#d2p#v@ z8213-2SKbp=NB-=z`d1?1~KM{%Y-RH4sSF9$F2u`cugOQk*4`!p);KJJz~*{+8P4 z0aYz8%3#HVdOfII2b08NntstO27YOKqU0sca83;u9G`j7XWi4?3SQFsPoRkNi-D$P ztN>xEGmx;un_QhM>+!+l0>fXLK`OBnK_G|6%ylT3A^ICIvMaohN+-dW0?qRHP=`ka zM|>7TrI9KCa~XgkdKwz@8OVYL7|1v=kcklLfGgk^9ah`EKFi-~JAMWE)gDWUO1RF& zlw|O{!-E5_Uj}rq$BdN&-Pc|RPYfIB=pP+616Zb*NzStAlAsp8#-!{lKzjPCCmyu> z0s^lXCycl2l=ZyB&pG!-pnnufQ z#>ceb0QTbkfd;Y`2#-#8J9j;A_%f`^TVhwI0%~@jGcsxSfPtlM-!A2;Z+C7tJbXf- z`#_eieN>XKH94q7SSkm^7Wz_VcPE8Dz2!_66t};8^>XpB;!4WCpgEZJtw>SwuZFLf zMt!8IwLh8%g#?g-S#;?d=~})L`I7K+XpBSZpmxht?uF zjEYf$O0mXDj@YYGTWwp;!K4vcyO(oFl(}H4&=Jja5$-oE=RZ!2|8XJMFbO1MlmO2# zZ|95}7K~G-)@n?}3TQyL`Pl7E-x%PpwI|N>ff#pLTmK_GR)ZsJ9QWAf=jf#$BAZ%L+pI_EiS~0w+MOcF8Ax2_a^X^W$bAGgQbM&A$bo7KfGgMuv4WJ5{#{Ae72eI+i`1?p0Ij3;UW1<*O8bR}hJGEu#<9z28-09~H z7`?!zQwySTQ{fbNoi-L+B zYkPz0EK4bPoH|8vv2p%z)Va|pyN&ZN=ITsybv;)$+8q_`8?E5#K=Y~Q_MkkfMT*0Y z;ina(aLOMMc*L%j1RkD88pl$cV=)WdvWinDc;hi5`iM}~bF&X^?V{C z0%6mvMS$L+(|X?8Zs;qxmPpFgK#wX<>r#io-;`WHWv0Vx62ot+2@d~pj6~J75z-CR zR$cJrSx-dm+D297iQ1DFw(pvGIT%p4nDY_pSJd8)(%Mj3s=JH1x(tmV@q}=~O0)<` zz}9_h2+SyBiAzA9lJ-w#4!-u5L-P20^!NB%M}As43%jdNB=}71bP!^amHb9AIMLKv zr1b=(gdEO;?vY}xH2<0#5d@9B zCQ`lzA5Tea0DPsSV}zHI$J!Pz&gSQZI{aen!EN|?gU@hkCAwY2ep;MUPIWXqC@jJ( zoZmcymmmIWr*MxtWiCemR+%C_0fs93iu&#iebATd!#WHEK+sI0Ov^Ux9s=ZyC$|;)Hxt$;(kpLk-+l?W`JC0ZwU2eQ4{3vtqzhmXtOoN>mLRmYm!C2E_HJ)ne#VvSb%Qr1^xtAW*_{2_|E_({1rYbJ-&6UQ{%Ur4R-t_bN)_ft{?YcQ)iFs?pdh^N%QV4=;11)8|X;H1-YI~Q$ zX9KI+mtMf+lA{fx7F)q*(I9|^ZnO0p4JZe2q1(z9(ru7_^c3Bm#O>I8-I`}5Z)wzH z?#|QQ%eZ^f?cCwPo!$fQC(kTBgWKv^tN+aW zs|n5?7`T<#VQ}sJXu{{m6jXu@ua2<419#mo34Pe>B!<=4yAxwDsZ^un&2=6(1}~2Y zMGPYTn*8hF3u8q5N8j-sLoS13{1qOyT*UrF)YkHSxjqxs*7CMp-}-3zTdO<_p6#P< zbp=X2sa`0RV6ZzLkQ@AOoF~KA!;B_7QpQn-d}y|~E4~8_;_+@x^FjBz$=Ve5<1vd>`2bU!Jz7PUewIDRk8(o;<26 zYL9{^Uja|v5npZiuhezZ@0?og2jJ3d1u zPrpz6cRLE2&wtm5{~|UG|DEtVIBon+j+DE1MeP#k`#iSK4X2C$#_#1Swm<*fw?<5t z-NMS8II9?rUA>5B+jwkB~6|pYRlhS-=p2=S%<6NQ(Li8`^!2r@{?1|jCbPx|Q1`L>3 zEIeviLQ{X$qJkmLSDuw3Q(Y28X~~j=`!n8YoG)CwTY4TN@_zj^_g9N5io3UXx2Cu^ zav@#7trTp1)c-_#HN(8qTwAEWCX4!`Ak1iT9^ov{1)9H1w{9#jih>Ym1k(r-VWBENW5&ZNRxHBXs*fw;hKc*Gf| zo$P58H%=b>&eui!r^pzwj>&XG0CPZr^w|fcpguRW|%!T0LyEhM0Rh?37q)~uM7IKp_T z*cUu2{grJ|p)-#on~hPPIFlByPS%@L!nJM$vilkuj`Z;D#@&41c>NVE>*h^mV_~BG zpL2%ut-VwMDnHsSI4k(Ys~zPwg=db9g}nj$Rjs^sXy$3i*a$?qkU(t89(j zD1%HxLx2m@!K@m)v&|W@pXVqoFU?p2_H}%d`n&iNHFpm-)W;dj5>xZ0%lSpqE)2@l(OgqIpkefE_E+dm1Y8u*W3 z`>wzu2?<_ZXwFf6>YQR)h@XHL)c=}*dwrc7eH&QR>VGYX4BKGTiX>7&;-!(m zsI@{CQod)0I1D|cb9IWGm!LMCtHaUZ@#D zS7F!5+BkxgPy?q{!U^6>6Ge+MvARz-kUUG%{44)7@E;T2w%|S{Yb%Ub(QA!#ok#ns ztjlhp{a4rVQu< z&5CpImX%<|7;j|eua`>vlQzb17D5B8YMGRI*h__t{b;-lU9m!b$NHh{QRjG9{_05i zQ-l->E;k*)n7FQ7Wj{-3Bq6q^F{CqtYiDhBKR}+K_rlJ`)$<`XYji=HVyy#Rk>uP- zmQ6hxIO|62wC__+v;4Vqt9$v>v>LWo((Kqo|Gs1G{)f=)7WYk_fjnmAU8;ERL;beb zg&A)mT7*{vI}(uJ^rI^C=;u80 zK#S_bQyk|b{y-*MojI#S4x8Af+Z{w8I2+seotyxq2!ZJEN~);x&tweg(PUkbie`KC zp`%D`L?g`;U%ewX44o3bA`fl2!rJ)(r%}8hotcsz{N?aQJBYcVD9YPS!Ms?(7`y*+ z%I@=NoP%|4AbaO;*ptp!35MH~A@j>oNOKP9WYh?xj!_jFd7b@&dm+eg{3mUxv-t3< zaBydy=))`Enf$BhUvi_i%qfz6&&$i4VC-@moKJ8*WVILYIy}*w5RfUVpgK9!F@6ua z_6`upv5rB3m95V1N3b2p5usD*+ao)7u)Tj#!xPU@)M=@X7LY}wS?B9;0)XbrLZ*(V zKZ^rd0oyzZ%A4Z_HkjiDcIbG4%Ot*o&&2=k9WQWRQJlIeOa<{mq`Y?^f^$6+^q64$ z!3b-S9D&?i7h|{>bJ-*eJW*1XJuQ?8BoD}sezJ@#Ld1?Q|x?a}_{PCOb#5vf)d7IUW%RjHycVE^>bGw1E9mb8CFKj;YZ}=ZN*I zDyUg%>e?gL&=u*XxA|!kuM9lNPp>X>&oPVIXoi736Kr|csg~wqI~>8Vla9Km+)>*<9!dI&YulC-HANbzyl_Zq(?ZM4ztdSoX{nsE_G||Ag z@xMrXkaq{p$UkExj){VPPjJ~NXNf6V@6jJzu*mFXG*@DWJ7D-E?akD7A!@&c^7=Y@ zR1DLs6f-Yl%wjS*vN!1LpHlb-QVM@V%d*??;_svOCpwM%3bk~$7?Ri0R%h>HYAJS7 z<+_$uD-hWf4OqK{WjLa-=x_25B<5(241bQ=Z$!)A$Ew5_)jp}M+~>|T zziN~+;ZEgR_b%dZW<24ER&rFKr!&JIJ=UoM0%bk^97GdMT*+o+P8q})Rc-sRK=vc_ zMLJW8WuRH-Ii`0bERAIoO1AM)p$SKtK_!JiuoxXHt0ndKrTz@S{7ru!@*rPi*2LLg z9}@qTIwh?URRvDd)IBaOd;U{yNB8?3Nu&IYQE^_ef|HA5xP~`4-nQ7-ZG!lMF3!)<+p6PQD~ZecXX0W`hRV;U}gUl2#av z;4{L?9^ohJbGqOO=9ea&N6CQg8v8O_O8CyOa>3Ll(FZnonTq8%l)tZvLpUnPykJ~d znegRd5yO7caEYT2LY6(U%h;CL?_qwX0DQ)uN3&zMf&b_>FSYMlK%zX^G*}HZkVxRq z=mi$4w9^aMB~{~b^R-6S5>v5i!I^Z_IYv-Tp1zb;Mi$B@6u9{(P?v&t=J$&i2G0)M zYV(`dBD}s_uWCTp8?URkbn<9&j3u~X9Eg=piV)T$Dbv2|CF;`+7)ym(R&u3e9IU?t z*(FGvO!QJ%81_kOKvrLwQA~_r>|CNz0O}1;Gp^Fz=}kVN2CqA1e=)Q;g!2Zp#cPZN zJ8n3}1Y|aVepoj<7A&c;yP)3tA~t6Y%;5Bm&GA3gutg>3jIHX%8e*7Ejs~yhsJCWS z`-mj!keCzDZgGy0NfpaDQ3uz$fjIzfY z?qzIupl?iS$7nG`2A~IwcPwJqB1_DIYE`%8oG9rx#EWQ=LDrKrO}o`S%GcLTL`MQ- zR|e_XfX(?22;M!NEAe@=!Nj+T7gXai4ikpzUg1A~(qd-pcb!+I!Py*AIIjdlo)|Y&x+g;%vDg!E=(LV|5*!< zAn@}6)I#w|^p^_8RN@?OD0_C9dndCNj=NNH=kw8E#tqDb&IpYzK@BT&rrFxsatA{a z)lg&|mlpEm1KwCZ=WhVB{c<4s@vU0qjufWvWhqE(u5*p)5xK7)O{nzyjrD1<;g8t? zJ3Ay_`E1o<1fV%ng`?0pPfE^Wq$0Wr2YKB1o>J3w@{#PUIeKt&=_DS&t!1QN3UF}@ z9KP&Zhfv@chdC~z3;O(sUuORtA+#=kJt={L;B=JT_D>p`OIx*Y8OI;uWJ%kf(7EuM3Z^;kNlA#66_ z!jEt=&e6mWkO`-8;;e|ikvb+p?=k0P#Ei~*k$XlX<42(R7Ysz zYul|eMAp_NM_}820eTBJy`8VH(n$UqWCT$|6@f*=0*K-3ODD1MCPqd2ua!Dw+Tz4% z!Bee3-Shm{0Z%$!BAH`jpJ5~oSklNYu&*s5hGoG>6T5Z+8;Idwu#%(TD}#QnGC7gt z#jg*wBw>{&m*SL~`wT0zz-3^+tFsWAMg)nmY| za9@QA!H@|7cqnSOrEc`>0OC7SFn<`@AN5BqI#>?fLYsa1US*tihY#Ve!TM>iBy*7H zVnyHL)ckJgV$c(kM&#nm{BCI@KlKAAzAl+M@|;6E2&FzmGzh%VHzKI#(~u5X*lfC#b+5>@rQQ(ve)SElhUyVffZOOvF>yQO zPRnV0Zzb+1)u=E}hhPz25hG9dRY{OmZ{we$j-!QMa`vm(tdV2d%I6(h2l-jbnf5^g-_GDmoEf5eW@9R)H51!y7W=3v^aN0 zzeL!Z8LjeXH^`6p|<_i`K=y~lt%rAmMSy}?9xTpe9{zF~SeRz)gH3;f z_X`ZKc@{zIo+-20Kr2F zRGO@18zxgL;b{RGGYT=dTG;N#B_Zz=fB8A1_cfO`nqk6lg`!rf(%8dH35b|t3!?sgD|- z^7*dMirl519-RFw&|C*v<-qw)2AT_J7R!h8ndo_faak@J8}7u-P?k0A&z1TKm$FQD zp%{tbN?Uqm(D+_@RokJ1GNR98)G=5*iLb<3HBhnD-nS;@@EJ}iVQklzhTPw9%hT_4f12Vm zk{d0gllXjvI9r1#t+`bq0c z45L{4avF6$_t}jV9MD)4ra5hKEeDyZp2nip%=KU4XQ>GXM;k7+T#k75h!;$myIV}*y+iWs8ZEtr2X5R>E)M)-|L-%%% zCFt63Hy4lZg+hHiPLo_Ne`l|SP5E7xQJ$3ZSYQ`Fr|-ARZD-;?($3M~mfAT??G*Ck zK)HU-Khn-5V4`-G-9tNL_;Fx6Ed>CH=6TiFjKt7R1c$edJM6bjT;T&1?Lw^0g z)V&LQRMpk@pGd%XJyB6(t2JtDgIW!()j*gk#V_s{1;=3MsK z*R|LFt+m%$8y!$ot<4qrgt;IIU$$_(`}7eQqX=*5oaMUU*i8%ma|pN&pv(Jaf5nNVl)#heT~)mN8Yq zvR|m)3Cle*wwImpUO#oK-KG*M%+Ji~)z4u2Je9EOqyiF6(&Mn80<#rAPmhwBYGpP- z-rUbCvSP=7{v~^qx5%v29_3UB{NJ@lIj^bmU$#g2#m_aO|AIZrkA8-BJ@~%9?h!?; z{{fsNjebJ*DDA&BI??lPNej@(rAXMNJy;f=ANwioc~sxh{@ab|`|tMOzhlpHq2}Aa z(tl_Dl>WQtdxie{6J1&8zlbohv*+oMWI+FY5y`n<|Jm6nY+^9eo8 zTF`!QT&C@Q2X1q&X#XIuaYd?lEx3-RVLXY9v08Sv&*tvXz5+`j6PuiM3XaTVDQ!n* z!lHD3>Y(R*8S8TL?#$p2rb%gQTM(DA0a;mM!nEGD!Z{SFRgMc+Qp0qGnYozkjy0En za`2VgrPzsM!eqNn&W=fTIWk?M?`(TjR(@D7nd#CO^89PF_Dj!{+Ara-HbVAG+Sd4t z)dba~mHZfEYh|)O_lFV#rY~rZudc*^$xL+<^BYQbJJnxizhqfyL%k}vmkHHa;@fMBmskds{Ow5ljCVu|vf1tFDrVnCxpEIa_iw*BtP#~shn;qZ3 zX|I8Aae$P4T5IFuvQOLm`2O{~ea80`mKbND_WAw;JkG5!eFwPD_-f<)ar(=RZ)Or9 zw8Js(YE3gGCSj4vq3(@yW5@fc6G4=CiKI?s+%@PYvU{@1VydI@DQoSCprU2EEWnE- zq=KHNIz2KieK21msF6Q~k+&Q&SC=O?R!%;c!_zC`Q&{tULpVzx_mb9X9&Hu-VQQn| zgf>{5(4#iwZnE{Sjq~QPK#itatD9152>My6pr1Puq4UHVg|WmXw0w2zu#d1%C3o+- zlPQkt;j0J{npi++&ONs~F16>jjT3{42!Hg+26H{CoL7jq zI}tuf3?2)w3*W)=2m8;Bu`dKytNg^g8r~_s?w%Mdz8tHeT+Q6J~rZkJw@AOd6t#|M_5pk1?;zM(%y87c4t#jSBN-m1EG%Sp-^wSBG(ld`rA8B@=!&mhrW^p4H z+v3e0jRzb+m3`)dSzz|Ztl)XvdTS@?BHn|T0iRUAs%3O}rI%dFx0x{uk1Y4D@8OcF zs1P#i4oiq;?oxRYf=&_|NGH@(zcC@h9WS|FH|cbzZXT>hi&Kv?-l~?%mG`SWOuW<3 zzLv~ouWMbE{*4NVW`6U6o}_M7Zgd<=XTr+K#LE?iDY?I^jZ#JNdc5wBN;mV!x_r9S zAC%967R+w*bsAxHid{NzePXA$x?I^-Qjbrlz;DT(?g%Sz#rVw>?nZzS4Z(ZfL6E8D zbs}FC z7?SYAsgQ&>l7C+ke)LWiIfEj_+y=Kdl*Qxe#7#WBr`_v#h~E<0`c(}@$A}PRgyTrE z6_RW!C!l(yeSLlWB7ZY<9z3pYNf;G6dN*P(;=evqB2UF(*C!y4ws-){nyRiuoA3a0Kjo#QHAa-DL0aCG^RN4Wkva-^3O zk34c8ucLyp#j8X5awN!}3&7_x{)Sv8B*N^?JSq}NPhuwbWK`xpV^6m%yK|8*_~}Pi z@(3mu=%;+yJ>~2bZ}m^q0xPn`i{?Mt%4o}#scqMFcI;&}iW=Eub z<3X{rOR4;9eN0G&$?22HdREZ9I zWG^DiS+1BS-!IoNziPVw zmV2}N*~!n8&+j_x<>lSauDHjCpLch!d!zerFTch88{Hdbj9*TWnmBgi*Hx(&YcA{u`gO_it)UTpnW_~|q7pCj}s$=(>m#l zd2u-}=O&hy`>S8D5O+(m{+Dmmr~9kw-5;#DaRN8p*>#=%@P*y4Uh*`NPgIy%vDenE z*emkApRzhVY^~+RuAk!!8oupRt9zAnhl57*WbF*AhaU8FzxVP*mECW?ypM%r%69zr;&6M)9HVL>r zYxu_YX|>xQ5%F&836`_xRRF5#d}nyc+qBA1g!(b{Z506TFKcS={i2urJ9k{25j&p0 zpho#Mam7OPYpzz^AQ51em;4bwetOPI`xywzY+URR1%WFZ9#hmYNrA*aE^l9Zurqvb zUkm&)kG8eoujQ88cQu+#51+wbB;p%p@ylmUMD{atG~~g5(U-Z1aHFeHRs6K}IRY?c zvEyC8hD+FH<&LkCLrD$GTtR!1L&;O{zFQx#6DwJIOHzd2Rq@^p4ZPKX(b<#AgT3Ky zg~YC2uAH4npLs3b{p>E++j^D#LE3&@IiDr18;|Ul0XU>PMfT0#I11l`PELUF zGrNxY?2t0Chd;});j3+_`8M5BtEp0iR~M$537$FlU@n>aL@RpzgMB;87YsVPr@3M` za$nF~S=-aR{qA;Ib#PDfP_B4deLzq1p1NMpTytPgbM3BnSvRVu`JkQcvVK}m^PyrJ z3z{3Y?P)&JUD83#ExPP!o)FvS%I*BrAKG~)dh~w%q(?5gdTSQSw7M}I9PKFGm5|DJDC!-&^G1xW@)ECE@*}%Y(|O5f z?Pk}*_|{J!wqVNEWy2Q*qw+GE3B;*HrxIlnFX$&_DgnR8)I2<(EIls^0d0J`pC0_s zx5%w0u~N_ZXDhQ!reN?jA8$OP>CCfG#-EI}r)iW{b=6=g3+KR-Y*kmp>)2PTkdGr0e)-E(-o z79v7W#a_dw#ycmAxuibCr5=A6c}3{7fmc)mcLc%}m&)y>Ljih+zdU@={I020TVq7D zQ)Sz*zn_pfvZj08P8B<`?=d3|^q7vf5$A!ThsHBYz+*2^SOM}(`b5YR&X-Mb&;JPP z7jaMaTXa*A|E8WYC(9NJtI;mc!1!loSPlEw>1W+}A>^fhoYBIP_7{$Qdcp5{eNgVY zygXde9u?8XEd8hW$6@1<>D`5Y;0{G;^TN>oDDRK^vGY7quq-n>-uwL0?JK?>~^sc`g`7YY{k(b<-v1rT4k@2NgMfY0ZcfF5yjsuf!@lOsomY{#z_=m*v3UTb#Gi`rT+9{Xc&KERo5Uw8nXY9SWfiW3fovx`qst` zu|2tvX9B(`8)Ad?O_eL{Br9zpSY(gIIBihY^1#IJa=u+Kpp8eX$s z!d5maIra7DAF*(;b1MT)h~`X-Nj4t&d=t9OPE7_IDeBxkbwcyj(60Yg@HXLYd9 z-zw)Ewxd>rZJv2kpEhTI#dkhusERz*V^Ato<#k|j%?S!wj%=nhoWRXlC^*38ZfTdq zb6BDb8p`bYEo`?~SM{Uz3)o*No&-=(z=A&~;xBTDojfY9-U^)s;6DmWthVb$m@z z;;8Ld>KgbTAz<4Kzs5_x%=gj89PwR6ig>f9)@lPLw@ZkF5`?Wv%*BD{h1l0Hbm6m! z?g^cgC&DCGD_Wvh; zzKyX+lcou1a0+O`Plo{wm^*%EQaxcnv-{f$+`^ED=i3yig);(=>4Ge96MMBH_q&iU z5EQ&ly+`=I{HXZ!!dP_qr_u|=Q`iW3(_M6;_T5rrYqZ^VbWN6HcR3ZOn16VN+xD%> zKYKj=0M#G96IB23)q;X$E(G3eEOJ( zqdtBM-ktt|iZ`nRXGCvH2qr;uy&JA2zr>NX+xeNVaW1O3aYMlxBK~z$HGtI@&NwTS zlXz|Ie%>~yi@V9W1+KlRH+`Cn{Y7vs%~Qu`uU6IJjzG6-4BM2J5IZ<%Fk&oyD2{j7 zMQ?;11=0_OqF3?R@O}so8te`v4Cyc5e^WN;zX^Cd;w?rWsQV z^8?lUu@?3GghJ1I9a7xW`&070-_AYjrhGG@yT7RaBgOt#9`VQY+J@)%{fFnLA-`q) zug{OrG8+v>=(yqty(|O^xPID@Y-x>R^})@O{rXhXMrzJ$`H@oY!33>fc`M0_`|MH8 zvfxYjxtCZiF;J_H*@MVszh$Y=+#YdNotGG+8=ONG!~>lJ0jga4N7NI3K<^Y*u#tTo z3$5cu)r}tkG9rw+**TPqdPOaf3Q=2aI=GWzBahLye7@Pig@4$>!tWz_Z)rE5=J{Rg zG@o9|&nMA|pU9Ql0LMOWgFC8UuU%an*l=9(;|k~BbX>a%YG5uB?8 zkO4ux54%85E%W2-sWF2|fG3gK1pW4@B?oUCMJ@{tf{7Fn5Btl+FHi)p^bB8X?BL+# zsRCQfC3pL{-ChD9#HoO&KYxqWI=+-fYo(x=J%m>HC5gbOH8N>=%O%971sNkSVqv;D8uso@6ZTxHOEBW!BT0@1v zJv}sHH&v)u!z+TpdXShG;S0rCJB!wZ70j_1k{|r$tZL<_txT=g#jm454{20Uef^da z7QX&(y&)`{I_pqt-VbbXg%oBIafZw96UXCl_w@kdv6mH8 zIv(5cMEfEC;&>F+!~QJRaY!*sEs0=xhaqg;)7m)`Uv|eo2V#*zTH^x=WvQ2#<3m_Tn#&FbPdk!QJ26y;Rhy^6WVGqJEgr^`F zMGGge2+u&Jgnl2P1#ghDPy`iHt?1;_gSm^5n#0Zbd?E)pae1`B&GZ_MKy!uD_HhpV zhA?Cg%Y!n6?G684ro#1Bm^;5_{xb}^j+PYx(XqB>*7ogbqQtBD1wfSNdm-Ri+J9l} z3i)DK(R=%?tGOSz_YM!ab@M43bLb%o6Lk4ozgjOd0Ar~DokmAix#x5&(m~kO1{c-U z+5eKj?*Q*j(;Yb__1lMXAg57N9HBhj_YFKdbJ)c%_MxevTC`c8_Dq(N6Z?yKe~qVO z#y3jVB5Pk?d%|nq)h2|C$9;GShe+1m!E;%UzlPzWm#l&~+EQ;~Lfx9VtQ01!BWjlugaljct;AD1m<@)4`QRw1-?aFGVFQ3d_@pb z*W&6mX6C^>az16 zC@MR3f7oIs=JeWG+N&mROy&#P zp3>5A-X!+rw&_ympeJ~Gihu2T?MuauQVVHl_9W5tEQ{&n1hR!$8SmwB_3Fj;={^f- zUE%9ELE9W{l*lF5t7ER6FG}iT%hApQ3_fRf6Dj!X-a{vk_tR4+q!!RwLxZ13G0soT z$Hb=NOB71OVMQaCoy$%KiPWJrLDx4$;&T;yBppF>btpkr2@}7xA|$5Z&MQpmh9J+$ zSl#-lJ~9(U!w@v$TE`;#)39+YviZp9Ia`+n6Z_N3I*sRRcxVy<7&vb+C6XuG{Cv6;yT5VeGBu!Y*rLf!AE?2Eq1Sjd2Q#5E$bzAC* zwqffPh`Ve3*60@o%Od~gUjl&j;n>!$H@8+Gacm(8e%DsM-cME3<{G4b;&{h8jPbqX zJSxGBZ#Q3|O59Aan~QXlSkZ1Lp8kZJw#KU}<7kOi#rDDLQYs<*D}yghP}DoG<5*G@ z=ab%|TdG9^wm^t?b@2U3)VmSqU9W@i0W`r51@YS&*L%sEc+f%}hvtTcbb`BPg%x}` zujs_Kt(v@tPQlWcKzLIp1b;eqyEp& z40bJM5aVbD*RvhJASV^1Vsqay{;5lmVaHUell$o`(rSEU+wI1t<9t3+DY+l1iCooW zhmuz1+2b1(C?2=Yh0*XhOg2J^9m1#(D2r`@{oPf0yg|;&TI9_&iws~XLWDip5si(5F{JLmnu*CQg*?n-yHhpFZTfUl-pj4@_9aCNg zoEbCoC{27jbX#Ym!I-ZpGUlFXvx|)R`D=#G>d%j#pY~qM%*Nbf9KY=)U*vmc=T@za z&v?mI3?@d}*qKKfKHy|u4zilbo_=N$WxW>LgH6KJlkR2wb-m;x&MsneCw(#-5Etq` zRuN4(<~4(yUH3Fjtc*>Bhu5g1VncP6T}b1LoyQ>$`Oe!BDlANicY?hyD0Ci2%HnXF zW5wH0SP;C9-{T;jeTzRXEFr4aY@6~fWJo}u(hQ$Gza+z-@-F*zaktch>=FEW9ov%C z%rRxzt@!mizC%{J!})>&`tjBHmx8hIH*uj!(v;l=JJF4uD7Wf7Zu)-_`(m(RB4{AQ zIsNl{Ehtld;LzXb&mV*yUg;ytiarYR^h6d3^Zz(3%&$~Fz48*3Uyz^=2rkeAL=;KT z&*Ys#_M-@sDUac8eq9L@-IsgO^4&yU&Yu@zxcJ(41E^*oe4@Q+;geUl1fLvJpT{Q$ zRyuq_T+iGgiVKj3D0ib2EP*IdAj*=f5H*LTpFBye!v6Uu_+&eWPhJ&1`EwDUTme4$GayUa z>&!`-P!6BWQZE@ksSEQ5(Sc8@b)ph`V|(hXw005!N{EJgJkxQsEa;~b^c`y~I}|!| zC;;f-X@r^X)H!R9$Igs244ZLU5r9;00zhthT6uy&rg+JdSzKjGMJM>Fq`e5Ch?hK- zcMgthXVIG_=dzmCS-|VaOw&vzYwuL`gb4WFqCyE%q~`Ku&)`p&iV#O$cA9|0#S;`Q zKy8ku?=}P*T=R92JQzZYyFkQ2fC#wgOX@5D-2F;SxW=(6fVgxiZo+_(Us*=CEc= zp&zBi!fWXr=}OpcV`Kkm20XUCBEr^bYVVTpmpyl3EBt zovO@OvB-=K;l80NMbib{D13FhcCk40m?jswL=^?eDNoJ4*03{D?iz>+r`qB1ObtC7UiNg7x` zh|}aEmLweQVg(S&gx5Lb@1FecuEAj~Kllkpa>0(TnF zS`!=`y|hD_Z+#V%xlNz43Wozck|z=6MVvfBjJ;n~GYWs-K$J;t4n5bsZQhnZiX5n+MV;SpvUVkcVrVk7EnG;I!Xd#1SF@xA&)YVqx z?c}7ARBUdR!_z19!K186icQ%`E3+3{M<|{f;aSEKmudz&fjpVf)9PdxpG)lweS%A1 zn2He!#XI(wJ%C(@tT-0_iV*OR*cYw6MW_$Xck^(`QNsFO@_1F!#De$Z9GL@O%I*jh z%Hwv2mp`XIwKhG#fYP2wcCBC#(U4_;K_h|AC)8vwaxDfrlj5)3$hwPRUSVwn!eZ3GYBz$a1=JcfeWyH9lmZD(E9qF;4^2a#k@5H-JAWU>O(cY&TkPx zH)LmEN{qZ*f*EFrG)wXGPk>(`eg<`W$ta&}7C*N%teyT(@N*;I7x44mlr}Ja7Bc=+ z_<6hRGCRty*g>(Y3J`jCgU}1CtHT5mK{!Yt--CW0^oBk7!s&$`^pXei68PT-MsG)H z*-?t&6|T=doU<|;Q5l6?KZMRo$K|@xT%YA-_H@mgj*AF6C8nDl&xO}<6Pf5P$*+L+ zP9zfT_L=?huLOgT@Qm{cOrL5j24mDgXQ0_FiM$c0K-iM&ZufjtRxBU!34IOr_H(WZh z=>&ny^Cp0whjQ#du#d(}*b=J&u%&?t;fX_qEz?_LqyA<~>aC4qYd~wf{jzNR5H~uO zPXA&N-{?5ZB|wdeqneH=^KLdZz_7KgKo8EoMnAZ8#^3zL4`P)KL%f^k*w|i-USMjy z>0EAPBwJ=Ol`O(Vt|j$mTk2iMXQfH1cYThwfe7Ohh-NTRs@s`ps)7rcT*A$SW(-b0 z&Dx>WAmSP_6ulV!!kCeu_M~5A*>;x^JCAfm9X9>XTf^+WNkY1NRMpae1)fZi>b!4v zQr|HR|L|^d=Ej7U_{#!T`*LY5hvtO_`3+POEZnIso#YT{m^_6;@dlO}Ixg2tXL^XF zOV; zI(|qZ=$g7WrQY>ZYFi$dGU!?pgRaBZZ=|y;rR3DPCZUpZZPb*UlLSobg1?>;5|Jr6 zF~Oqi7s;@Tp!N!FYM?ZD5HzArCBkGu*BNPdq|LLK$Pq&~%E);STSlCUGO6?E|&#Je0yyZ$WP02@?&_c_ItVRvI$*x`$pKAvrMRGi&V0zbbbe;%ZqSOh|@?J?UgOFARisN!7O}tBQl$!NDgx2rB)lnN9SZdoKL1AXbFV|k3>N#V4SZS0lL7H% zA%o8sGl+3qSE%lM2%0XS%UfLks0yE~@6_>pLT7n>C!npU@8mK1PK~nJAR7fF)}rq` zUW1lci@sB1sf8qdxKV=%7Y*2-ZfbaKPGO{1(C5i0sbj z2i>||g4Z&X)CaGvV4*F=Ykx&8_b=i#q!$jT;d|jV4v6-W+fW)lw5HNrQ=;#jV&_ML z*LqV=xtC7g$w$(6g33?Es=9|%&wI%$m1AmZW%g1o3jGuNrbBC2pwW-u zEn-uKlU5!tuGp`@*jIzzuL-mz`9zGN-~0ITpjVlI#eShbgZ1ZLp)%8~K87}9({Jt- z?)n`oVCnf&?Au@aZZBmFgtr2ohj`1}6*j+l`fHAfahs<*0i-tFJbkUNW>TA{hfDp7 zLXFMS*2WdF(a`MXH&5A_1n2bCOP21Nl0$sxz{ zqFOS6Zn33jpl8u38qfAC>;lxC3A*Roee02AWpo37N)gt|)l0E<7@!@->s?4lHjQhBvs;g7^ zTNb7VUBx;s_2`}9V|L7?9$jXSn}HOlNHbAYTsAIr3K(KO`%xs%(*b;;om+8DsAcj5 z;5u8!Xj%cg-h*WTw<^_xsnrl1Zj5GRq#00kU^Jvc?U@?v=TH&p6$12o0?Jo|Aw;7s z0%j|qMT5u1`>HVwt7kL_Cs$1y9+H-0aOz24%0~sxUvA8hU070hCr< zGheFFXyf?;EAq0-!_R^~rs<38iCw|&>-R(C*=~g3RH8M(*N+QF-;ifvdmYoIe%jCp z!QoURnwfw$biO)syme7a?J)|;H%YrFDbAw2q;^8n%nCwI4RH|krBU?O`eO$y8(tQ?YFG7D} z>i~Xp;L(lRf1eJiGj7mQup5;Mbzs7yVe5v6t&29Ub89O#*>2bdo{#1Twpj{e2tv z*k|*-(xDTasZqqXbjdCECv~OzHG8kCaKv8kO$AL5M()=(ql6!Wz8BN24*G8AuFB&( zi#LlWw>4f?=_U74$ETjmF4Gtri_j+i$n0$(vpoMQ!L?74ybrG39Trr&kAEiLeIl;i zv%p{a3E$^ z)?{_s+{X-*GP%Trg5$?%6nWRt8TH0|ki}`fm@E0jA1;20ttZr#|8i*YOD~D45S!-$ zG|ujBm2)h?1<{5`0_sL#t&zHLwXnF%QNa+5#nG}-CFP0BX?108r;#=NI&Bz8A=UA&F0kum6ya3z+*;AuT0S2wS}U-)T8~>( zQY*rom=g_H`vl{`#V+n@5l;wSApyD z-d31C&H@W#hwG%d)LPadtcQ_0JFBt0sb&xK*g&WL;Wyca#$SqN z&cz7+z1Ww~3}ZQ|jp+0)e0K)l;f|qiQ)Bt=WPLY|?+9v+I{2m5^2epwVa;3}ywfT= z!y|weR<@=cP?7ncPrqj;FzXy0ah`OS zyGd$PVBGl4KT<*q_|3}?QeNNmsxr*|x2@~j*Jk&ET7s*OCg+EZazs0gJ?zEzl%{w7 zaG8;3yfC;d_-hlXT`ck6jp7o^=d!q`gV-yBJ9!rzXp{KJ+TcUh>>O}ro~FtLrs`W3 z>;U915;yf|I)%{Fd7~bMTTP!sxQKIzJh4=*5svyMj>w9DdH~^(jr9D~AiBGmh3Lmh zQ$k>Ycb)7|b<+8MbbFh+T){UM`{mt45W-~SVo{Gydx&%VBmtfppNt(5Me&{La{bBR zZYvriT8~n;LT6V)XWwF6pA((E51l>f{P|l}G8oOc6Gv)9u#iMPAXv$SZN*XgJwmEo zNe3I3r$Mot5^&TDm~*@Yd}ZLi*X2)Fe1*ni{;)YyXHl@`^uB%o=5lm8fYug(Sk|KZfTYLj}$Pnun&I{$d8)p=60>idkj zHRkbC27VWITxO0sD)`P(ntCgOMk?X#_26T}mnvYNCNe{}^RxM(yPY-9@O0>J-!F{+ zI5ZeLABF}4-ckux+4FpOe^9L&cEmzUUC7|R(j67X_VXF8-`Tq+Y(6j4HjnR z-#B?ImjuSOdbE!^Kh9?0;G4cg>`?MakE_i6k$J@~Wuo`0I8_*YIj>;%RRpNovn=+? zg{uiEJ}CCwqh&~pg*bAF-pO9aRU(h{;E4O6Cig^<1z$Vr+)FNt6T^xY=z7uwPNcW% zuU~TRWnS`ryFTx-*cDz<=2O>>qInm&xIovA`o^!GMzjoB*N#}B{-HmHU#V1X=!0V97MEi`2E4+@Sh9n37U^uNBY~s>> zRGW8~dL3q^njSnu?-HH$*=^jLbG?qQx~5&=-bAu1Tz(gO9Y?!2$GJCSv(LIWmv|iw z?#*!bW_E2y# z?>hBv4T6|axYpV|w4gK9ili3XJ4hP3FMSx#1>aUmV5{NWD}cbVA6eOSDiI!rXkq?G z-a9li4)tT_AV|E@yWyvlD1~6zoCtsX)R@ZPL7{^5DXeT`P*=X>FL@`*5vm+0{R%t! zllO_HKFZIhISSShTyH3X{D|Gs`1%zX?(No;c#};O2s?9~lK81pSY5}|aQ<*D>+cvq zv|XH1#SI2SGnMGrOhrJ~IWb8(*2cBVrZu zT4iuT1c>rpFhvN>;gmm__H0@3>{ryFYs!LyNP?f6orpn0+lonV36mZHt1Zr_);yB( z3YHIk>K_)|6g9k$=OR=0n0o)fV;Zn=0HY6T9Y#3Utlza}kZd+B;Lg&Ge%EV5{PM+k zlh^nMo>ql$K8V|BBj!slFnjRH1CHWUTnQd+O|6kTk7d=>njoC-Nv@Y`sJpnPLnrdx zNddQs<(1(;0;vX5Cv!c^b+O!6<;wB|4WU#ObMRU z1zPrKrgl^t7WLPO-xJNKBDh=NFg>|Wac%^hSNcnWw#=bm{;+&B4vDpu-pw!bg<$d^ z$pq;U!K18l(bNbT(o2h$YOX#ZQ+u#KIILw&tAY8+(1}%C=x!m2EpXc0a)G;s?0P0h zxQ<4Lt@f9!fEuw`V6Brby>Zp#VJdt2RF#_sSW{5$c1JgJgfN>PW0fnj^A3*7Ogk84 zM{0bgo)6A)sk7%pRbIy##z?5-F}-AA?n$j(?~dezru|2R>#x_LZ6$DQYidY#PkrU| z<6g(-iqCiBG8p}3Iv_Lhyt_czS3-WSKBqWO#WxiVkg)1yzKnbLwBa z5K9uXdG}DdFT>f@Xe9MaNwKeRIw}RLFva#t*oBTlMmtz3YV4I6vLz?wtnjls^U1i4 zc`f{y{-NpGqm9m9*-KtGSb6YmD`G<7douIe2pW{xlQ=K0SF{c~s{sgaG8(R+6VIzj zjMxs3$J_3R@xdV*i&FI2G>UvY!Gs(e)WHloF>HO23o ze2j+H1II8C^D!Ehim!>iQ_dm+0NvOE!y%YZYp3JO*j*ELp!`UH5|0 zvv4w=x*`D$=!_j-tT*9!(s-?nm}K={s(Ql*i%(VWMXEQF@xqdN_bQq(^`2C7%>kPb z;4q4BO&wY*0?gBn^;3StkvFZvCFH2e)rovNCbGOr{X9V!b9`Il%J`SFpVf$S?%q}z zewBogyTFHy}+ikMGY8}y9)8<8=Y)v=S z`Ki&Bg<9QUTXX5rs2VsaJ9z<&hMuOd_>MUoXCidU-?@_w3R+3o&sVpO0Hx1(8!@dl zg%;zD_!}~xK`1|_rqzpXVD+lA@PVVNtT%#fi_J72ILEiFJ-gbJJ)z3<=&N%(YhEkF z(nsoQMpXoPG|f8I$aKc*G>A3GHF9f}jqeD=ML-!LxOQ(*SR z^;aXW*=bq*6)mQpdCX>EG4f1d)^z-t_w3eWcO{>Ef8z=vJZo&1%|qp-e>VR$%l*`C zwVbK}>E33HL6hindZ?88s=yEI6EPWM33pj0u!OQgx*|&m-PYj?Ur_@r|DL03_=NI~ z1~HU0N=J(qd5bh7@?#f!vKolLWbf48K-hoDu$pwOtS!_Z%gMLcAK4++d?)YtnIBpW zTQk?dhh7RUK{p{zl|7v-jW0LDyx-<%zh3JM#v!N#SFsJ$>t~vQYDvepVek)AOlt@^bnk_db@x%~9FI-5x|m1p_{c-JbihKS~oe5@9;<*7xHsf%u~bp+eVGv1(S zQa!$vdrh;u@$a#%?Zq|wI(ANS?DR0jvuSA@-470>Nb*9NJ6&8)M|0g<+fK9QzrJSQ zd4!Qa6Nxv}yJ4mtgLS!q)7tqO!t#@M&(odLZwns?;^W1+B3Q|tn7Akh0 z4`+mxoy|kBm(T0LrgOmKF?=`sh^0qY;Ah-o6?~tampr=3J^>N5rT(6kDVhmfO17Nl z2a`*a4I-J?3`mHqg40UhZKKT^m`+((>9A%ochZ%az$w}g=UwSrVJv@tbz8XQvE9$; zu>SpnYvo;%SdiuJwN3D4d>2i<9{lM@p3>UIR8d*|H}|qDS{5Xj*h>FB{rRc>Jike{ z@n4}-y5+ltzz&Wz1P$nh^735MX{jY3(?Y;h;)S?_4Sgr-pv_G^>knh!K_MLp=h?C~ z$6Hsx6JMCz933{#Uy@Tm*W@B(xpf59CBop`N`KJavP352W#VHh?gRzR7ghWvsln2N zva@(|;jCyQl2EVjHP3^%2W^Fu7sBh2UdJ1}JvMWs*4;7`T=pNo9gkwEQF0B_UbGwi}WC2+iHKX zIGqmu!WSy1M>Y29Ol4^2o0`y~NY8VLgsk3nzf^ag(!fF-d4jm{by?Sa;wvEfe^O5=I$MmXu zhub^+ZHW(s{F*)?VqpvsT{9;Jig30+EOJKxtkmRwV8~M29|(|Y2s+?)^}U2%Tz3#+ z>m`Z(wO%P; zp5?x~NytdSDCMp^V~z$O*k}011ah2MBL7lTRt>2Tw0iUvgf%8FgyW+|%zyn=hKDbj z?L@$QdxkGHgQnna1U#8OD46QV`))^On_DOSiOFl`8=QD|T=&}PJLEpMHPxJ>Rlh_) zgSaG}UBX79g3r{57zRI2QWOC1+oSqmpD${xZ`GG>4+FdH%%k<(x~+_%wbZVKeV5*0 zN+|m!82=98!fwVr@DNHWu+jK%=xiLJ5eumgC`lbMozf3tUT_>FF7EI+uXC?z0=7c^ zFnNa;^6`PJtzX#dliTX26YXk^8hflYwx}|uzVt)b^v@r(g-u^irxzOYzuok)5K!Ny zAJ6nFVoj~XecFG*o?G7jljy7R5|w%1_8+*V?f=4mvi3n}}_fHt_uh=x+f~N0aQ0PCz>c)%V_F;8rvrpM?yi3P=1#Q~W z_J8dY+i%l&OWI%iAEfv3;<|m?&sO6nwEw={w!Hl>?fOaMZxp>H?ceV|*?w`|zU@b{ z?brVP^Zlbwpn-J4GzMDcS=O=IEm`cpul~S_cb{;{`?68?7IeY3`~C;J;4CrTK3#Bz zRM7=ET8IZY4rHRWTo5NRbnAh!jqf_Z*89;ULX0#ZeisCNAHnYd0W`6^ToDYIFTNtv`+B`}fZ~8(sD5-@`~==-=wS{x|yf z7Nfc?>)#7CqCoF|vwv5F=ynVH_fB!qKK=V+zY+`3^U@hx zlj+e&zH>tZE)%LH_?Vz3xvWG)i-aPl>|vaIRsoDL`RqH$XWmTYvwc5HU(h53S#7|E zQtaN;fx|>hij9;=vB%WA`0?4Pj6tyr`nMy#ww-6-J?> zmxica%qH~;x{|u!p*{8OqvBQQNjNcL0m=ZL+-A5#sTk}tGwI4MLW?H8vDyAOV-MFKgLc`pKMr75t$%;Kz>q{U&Xzjt4|V6=P>=Nm zogj5*p--%rf}b09FGf+iQ%Ta+HR^)qr8nj3)h+-&)n%vZ#!DZEI?22Hwoi}al$gMG?8vX{O z?{&yJiN@u}Jy;;3N&iM8hpt>d?i`0Ceqwl1^DiH{%62_R#C^gvxcY|Mnrql6)py06 z2}S4~c(bz*kY1aeL@*-gWJT1w@16W+=TvRhCEhDXm8&e-?7W_zJo$x$*^+uS9D|_F z*koF1wZ+&@|3Hsds^e{_G8JyaO{bF#I<>(c)Wp`tO|^HDE*zt1>YH>T2HK7yMU2tZ zy>8e6MNHWO{E1z!!uTahb*N{YB=D@XQtJEtg(Dku(&^Hg52oB)vP7s48ve+9i7T@RA-BEsYFZf#c;`YPW_- z?+`m`0IvKlOv)W&`#60YcIyXlT(OGp?U?V@yV*<#Up^DQoW@JC9#Ynq3;&4>nVdc` zrK_0SZVaYJZ4ZF~ZB5KC4?a*o04nPAv_{jRNZq3BqoHaU_Jr)l^#IWWXf=kjo~$kydtk^TJE)MIhf~YmiXUlj;Z-r6 zjN|iIC)*GxB-s#kvo?}X%xV|M(OEQA!yKwqhWcLZnq=*gVK2&Lw8NUU%ZaFY{#Mqg zSxQD$vjmIM&x1YJ0q4v?`OP@r|8Qt{abW}(%(#a zqdVzM&o!kUpxj6c@{_Y4)aEkG&a$Df%>pfr>W_;#8VZj;)l){cle8yyzq{EA!*CYd@6Q4P^Z^Vte~G=Hu+w~m<-@EsdE17t=@u4W<^B##W4z6 z9lW@$#*rBl&dp#P53-qFxg%+B!0r6zhbL3JRj@T{EW4AvY-SLLy^;-07U`s`Q06;k zxs~}J>E!3X-sJUA8CPkaUGwFtbXYmJ7ov)I$;lcH*BB@->!Ryvu;C|n@=fqMT`Tv( zA>p9=i6{BM&58VWU9h9cM9h}fi=Uw@L!K|g3oX7E6Ckzoj2*lk+)kHinwJ|x^8w|!U(Cym(u`uNT)E9a*|8P3EXWDO zXAawQTDa?$XQ07ccm&J8t2wqVuo56w;_8)0E-(aWxQSb%C$!71t+YXhn zc5-PPCtFL6t@hx%$RvLH@Xn_8^);~rkC}O|C29#{g14{THntmv-waNqiv9eqY(@Lp z9lYB*_gQET?FgbnogmtbAX=5*B9l>~TVK4{A3aiIRe5{kVywV(w})MPYbb(M7Gznh zV5dW`^*DsG{24y>E!C4a3|ro?CE1@F28;r=RoA`7#2BymmQ!*WD+e%MFkP{)-q zOd|1L!Fj1&xiNcpF7Z=gOKwv?mGIn2^HZVC+S0Vc6IxSmcdxfyCwBYKudSXx@5Oyt zR$#kht4z8Qvl%}oWS`my`!nxGN9MnNO+#0?eH!r(9NkcIvQWWd?P)(nAkR*3=EQI@ zonp0>U5qWgX8-dLWFl)l+AMOO!a@%^t`;|(AT`C5;t2RX`kpP|&Z?eBuU!&+9ycs3 z8nKR`9^)GPhx68R;n7Afm<0${1>}WwqcaT9w~UBepMqy9H0WJAPA?IZa}1wi6umTj zRdDeR;ftFrI$zVO1?{nlro>xoTL?U43ob=R{EXQ{EE7t+lZ;jMhQK4VAT+3eN`Kcw znDQO^Mc^77Tp>XO(Md~^j3(OowF7Z%p85(1LAn{iBN9~bF4JK+w9_Rl9EkHn6Jw^) zPnKyWysdG!)9n^tGkZD7?viGQQ2GI4tm%VNdy8xR-hN^#UUrpJe^!iwkG9Pb;q~ zllL-_*3%W`oE{iW4Z+r~ymGUcLBNRh1}NI)1I0F#8IT zLhxG{Isq=4v$yM^*|DYV`#LZArOkZ*P5T~?Q@0){V(Do-vPRSRtWKdW9ltodYgv%o z{o{>CjKSyjK+;25Tk zhP6sWq>Jh?Gf84EvyX^96gCJ#I-z|(<9QgU#7|sPgZimkqDSU@X{E1`P3Xo`>eRY# z8Sov$uwD%Jrxbt0#ghn5YJ$pn=KL8wa6faw=owQjT4O00g9NZwpOsYBJ2no;2|8oWY zpK!7jSgo}5646Z_z+-4k^Mvg05M5^#=gDWZ$T35_4>9dGubyx}gN*P^#^>m1(G(r^vr@-b$e*5Sf2*?XqTA{BHq ze;i$=Z`C@;!Mv;Ha+2aCXxf@|`L(aL^PIDjpkO-cZ|jEO`NZ2i-gEg8plzj!IjWGK zafid+||gDnO`a3HyggEHiaHaVTXjgnR7Yhal5zL_S|Nx6-pCIr1e-dy!R0 z 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 zÐ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 Gw)H=~!WM}D diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index d2394f93..772f9d7c 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -23,13 +23,13 @@ public static void main(String... args) throws IOException { .setAntiPrompt(new String[]{"\n"}) .build(); - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; + String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n"; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { - System.out.println(system); + System.out.print(system); String prompt = system; while (true) { prompt += "\nUser: "; From eeab57aec6f08adafa8fd748b45db261958d1aec Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Sep 2023 20:44:19 +0200 Subject: [PATCH 007/384] Add build script execution rights --- scripts/build.bat | 0 scripts/build.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/build.bat mode change 100644 => 100755 scripts/build.sh diff --git a/scripts/build.bat b/scripts/build.bat old mode 100644 new mode 100755 diff --git a/scripts/build.sh b/scripts/build.sh old mode 100644 new mode 100755 From d3a64171dd771839f1fd5b66c30b45a2b6e9d499 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Sep 2023 21:15:27 +0200 Subject: [PATCH 008/384] Add early exit to build scripts --- scripts/build.bat | 4 +++- scripts/build.sh | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/build.bat b/scripts/build.bat index d2811864..277fd1de 100755 --- a/scripts/build.bat +++ b/scripts/build.bat @@ -7,4 +7,6 @@ if not exist "build" ( cd build cmake .. %* cmake --build . --config Release -popd \ No newline at end of file +popd + +if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index e51f9fd3..a4c8a659 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,6 +3,6 @@ pushd .. mkdir -p build cd build -cmake .. $@ -cmake --build . --config Release +cmake .. $@ || popd && exit 1 +cmake --build . --config Release || popd && exit 1 popd From b5b91a0830b052056f57b5bc156985e29f31fd4e Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Sep 2023 21:23:59 +0200 Subject: [PATCH 009/384] Add build script parenthesis --- scripts/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index a4c8a659..2dbc3f88 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,6 +3,6 @@ pushd .. mkdir -p build cd build -cmake .. $@ || popd && exit 1 -cmake --build . --config Release || popd && exit 1 +cmake .. $@ || (popd && exit 1) +cmake --build . --config Release || (popd && exit 1) popd From 35091666b096f687aa15284aca247c51d068dfea Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 21:51:35 +0200 Subject: [PATCH 010/384] Fix cmake output directory for windows --- CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 392151a1..a4aa7257 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,8 +60,14 @@ add_library(jllama SHARED src/main/cpp/jllama.cpp) target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) -set_target_properties(jllama llama PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" -) +if(OS_NAME STREQUAL "Windows") + set_target_properties(jllama llama PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" + ) +else() + set_target_properties(jllama llama PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" + ) +endif() message(STATUS "Installing files to ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}") From 4410080b2f091107bfed1f38222b26abb0ddbefa Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 21:56:42 +0200 Subject: [PATCH 011/384] Fix cmake output directory for windows --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4aa7257..78ad7c89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,6 +63,7 @@ target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" + PREFIX "../" ) else() set_target_properties(jllama llama PROPERTIES From 44a810565a1776f0eadab3334d9927f640db54b9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 22:26:27 +0200 Subject: [PATCH 012/384] Fix utf8/16 decoding --- src/main/cpp/jllama.cpp | 29 +++++++++---------- src/main/cpp/jllama.h | 10 +++---- src/main/java/de/kherud/llama/LlamaModel.java | 17 +++++++---- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 024e40fc..390e9c96 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,14 +1,11 @@ #include "llama.h" #include "jllama.h" #include "common.h" -#include "build-info.h" #include "grammar-parser.h" #include #include #include -#include -#include #include // classes @@ -357,13 +354,15 @@ static float parse_jfloat(JNIEnv *env, jobject java_float) return env->CallFloatMethod(java_float, m_float_value); } -static jstring parse_utf16_string(JNIEnv *env, std::string string) +// Since Java expects utf16 but std::strings are utf8, we cant directly use `env->NewString` or `env-NewString`, but +// we simply send the bytes directly and do the conversion in Java. Unfortunately, there isn't a nice/standardized way +// to do this conversion in C++ +static jbyteArray parse_jbytes(JNIEnv *env, std::string string) { - // this only works correctly on platforms where wchar_t is 16 bits - std::wstring_convert> converter; - std::wstring wstring = converter.from_bytes(string); - std::u16string string_utf16(wstring.begin(), wstring.end()); - return env->NewString((jchar *)string_utf16.data(), string_utf16.size()); + jsize len = string.size(); + jbyteArray bytes = env->NewByteArray(len); + env->SetByteArrayRegion(bytes, 0, len, (jbyte*)string.c_str()); + return bytes; } // completion token output with probabilities @@ -1129,7 +1128,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv *en llama->beginCompletion(); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); @@ -1203,10 +1202,10 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j env->SetLongField(iter, f_iter_has_next, false); } - return parse_utf16_string(env, to_send); + return parse_jbytes(env, to_send); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, jobject obj, jstring prompt, jobject params) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, jobject obj, jstring prompt, jobject params) { Java_de_kherud_llama_LlamaModel_setupInference(env, obj, prompt, params); @@ -1245,7 +1244,7 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, j // llama->lock().release(); // llama->mutex.unlock(); - return parse_utf16_string(env, llama->generated_text); + return parse_jbytes(env, llama->generated_text); } JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) @@ -1308,7 +1307,7 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, return java_tokens; } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decode(JNIEnv *env, jobject obj, jintArray java_tokens) +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, jintArray java_tokens) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); @@ -1321,7 +1320,7 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decode(JNIEnv *env, jo env->ReleaseIntArrayElements(java_tokens, elements, 0); - return parse_utf16_string(env, text); + return env->NewString((jchar *)text.data(), text.size()); } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv * env, jclass clazz, jobject callback) { diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index b1968a22..ddd432b2 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -28,7 +28,7 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode * Method: decode * Signature: ([I)Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decode +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes (JNIEnv *, jobject, jintArray); /* @@ -58,17 +58,17 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference /* * Class: de_kherud_llama_LlamaModel * Method: getFull - * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)Ljava/lang/String; + * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)[B */ -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getFull +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull (JNIEnv *, jobject, jstring, jobject); /* * Class: de_kherud_llama_LlamaModel * Method: getNext - * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)Ljava/lang/String; + * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)[B */ -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getNext +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext (JNIEnv *, jobject, jobject); /* diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 92358b14..6fe0cc47 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -1,6 +1,7 @@ package de.kherud.llama; import java.lang.annotation.Native; +import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.function.BiConsumer; @@ -70,7 +71,8 @@ public String complete(String prompt) { * @return an LLM response */ public String complete(String prompt, InferenceParameters parameters) { - return getFull(prompt, parameters); + byte[] bytes = getFull(prompt, parameters); + return new String(bytes, StandardCharsets.UTF_8); } /** @@ -119,7 +121,10 @@ public Iterable generate(String prompt, InferenceParameters parameters) * @param tokens an array of tokens * @return the token ids decoded to a string */ - public native String decode(int[] tokens); + public String decode(int[] tokens) { + byte[] bytes = decodeBytes(tokens); + return new String(bytes, StandardCharsets.UTF_8); + } /** * Sets a callback for both Java and C++ log messages. Can be set to {@code null} to disable logging. @@ -135,8 +140,9 @@ public void close() { private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; private native void setupInference(String prompt, InferenceParameters parameters); - private native String getFull(String prompt, InferenceParameters parameters); - private native String getNext(LlamaIterator iterator); + private native byte[] getFull(String prompt, InferenceParameters parameters); + private native byte[] getNext(LlamaIterator iterator); + private native byte[] decodeBytes(int[] tokens); private native void delete(); // fields are modified by native code and thus should not be final @@ -164,7 +170,8 @@ public String next() { if (!hasNext) { throw new NoSuchElementException(); } - return getNext(this); + byte[] bytes = getNext(this); + return new String(bytes, StandardCharsets.UTF_8); } } From 9a1ad155b2cf15ccaaa138f691f17634d113c7c5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 22:39:11 +0200 Subject: [PATCH 013/384] Fix cmake output directory for windows --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78ad7c89..4ca2e014 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,7 @@ target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" - PREFIX "../" + IMPORT_PREFIX "..\" ) else() set_target_properties(jllama llama PROPERTIES From 42c181ca733384f1636f70a1bf43e683d8ad23a4 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 22:52:19 +0200 Subject: [PATCH 014/384] Update readme documentation for version 2.0 --- CMakeLists.txt | 2 +- README.md | 118 +++++++++--------- src/main/cpp/jllama.cpp | 9 +- src/main/java/de/kherud/llama/LlamaModel.java | 4 +- 4 files changed, 66 insertions(+), 67 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ca2e014..40def08e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,7 @@ target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" - IMPORT_PREFIX "..\" + IMPORT_PREFIX "..\\" ) else() set_target_properties(jllama llama PROPERTIES diff --git a/README.md b/README.md index 08c30ea0..31141b74 100644 --- a/README.md +++ b/README.md @@ -65,9 +65,48 @@ public class Example { Also have a look at the [examples](src/test/java/examples). +### No Setup required + +We support CPU inference for the following platforms out of the box: + +- Linux x86-64 +- MacOS x86-64, arm64 (M1) +- Windows x86-64 + +If any of these match your platform, you can include the Maven dependency and get started. + +### Setup required + +If none of the above listed platforms matches yours, currently you have to compile the library yourself (also if you +want GPU acceleration, see below). More support is planned soon. + +Run in the directory of this repository (java-llama.cpp): + +```shell +mkdir build +cd build +cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend +cmake --build . --config Release +``` + +All required files will be put in a resources directory matching your platform, which will appear in the cmake output. For example something like: + +```shell +-- Installing files to /java-llama.cpp/src/main/resources/de/kherud/llama/Linux/x86_64 +``` + +This includes: + +- Linux: `libllama.so`, `libjllama.so` +- MacOS: `libllama.dylib`, `libjllama.dylib`, `ggml-metal.metal` +- Windows: `llama.dll`, `jllama.dll` + +If you then compile your own JAR from this directory, you are ready to go. Otherwise, if you still want to use the library +as a Maven dependency, see below how to set the necessary paths in order for Java to find your compiled libraries. + ### Custom llama.cpp Setup (GPU acceleration) -This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want however. +This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however. In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): - `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` @@ -97,59 +136,45 @@ Look for the shared library in `build`. ### Inference -There are multiple inference tasks. In general, `LlamaModel` is stateful, i.e., unless `LlamaModel#reset()` is called, -each subsequent call takes the previous requests and responses into context. +There are multiple inference tasks. In general, `LlamaModel` is stateless, i.e., you have to append the output of the +model to your prompt in order to extend the context. If there is repeated content, however, the library will internally +cache this, to improve performance. ```java try (LlamaModel model = new LlamaModel("/path/to/gguf-model")) { // Stream a response and access more information about each output. - for (LlamaModel.Output output : model.generate("Tell me a joke.")) { + for (String output : model.generate("Tell me a joke.")) { System.out.print(output); } // Calculate a whole response before returning it. String response = model.complete("Tell me another one"); // Returns the hidden representation of the context + prompt. - float[] embedding = model.getEmbedding("Embed this"); + float[] embedding = model.embed("Embed this"); } ``` -If the model runs out of context at any point, it truncates the saved context to keep half of the maximal context size. - > [!NOTE] > Since llama.cpp allocates memory that can't be garbage collected by the JVM, `LlamaModel` is implemented as an > AutoClosable. If you use the objects with `try-with` blocks like the examples, the memory will be automatically > freed when the model is no longer needed. This isn't strictly required, but avoids memory leaks if you use different > models throughout the lifecycle of your application. -### Model Information - -There is some information you can access of your loaded model. - -```java -try (LlamaModel model = new LlamaModel("/path/to/gguf-model")) { - // the maximal amount of tokens this model can process - int contextSize = model.getContextSize(); - // the hidden dimensionality of this model - int embeddingSize = model.getEmbeddingSize(); - // the total amount of tokens known in the vocabulary - int vocabularySize = model.getVocabularySize(); - // the tokenization method of the model, i.e., sentence piece or byte pair encoding - VocabularyType vocabType = model.getVocabularyType(); -} -``` - -### Model Configuration +### Model/Inference Configuration -You can configure most options the library offers. -Note however that most options aren't relevant to this Java binding yet (in particular everything that concerns command line interfacing). +There are two sets of parameters you can configure, `ModelParameters` and `InferenceParameters`. Both provide builder +classes to ease configuration. All non-specified options have sensible defaults. ```java -Parameters params = new Parameters.Builder() - .setInputPrefix("...") +ModelParameters modelParams = new ModelParameters.Builder() .setLoraAdapter("/path/to/lora/adapter") .setLoraBase("/path/to/lora/base") .build(); -LlamaModel model = new LlamaModel("/path/to/model.bin", params); +InferenceParameters inferParams = new InferenceParameters.Builder() + .setGrammar(new File("/path/to/grammar.gbnf")) + .setTemperature(0.8) + .build(); +LlamaModel model = new LlamaModel("/path/to/model.bin", modelParams); +model.generate(prompt, inferParams) ``` ### Logging @@ -159,44 +184,13 @@ Both Java and C++ logging can be configured via the static method `LlamaModel.se ```java // The method accepts a BiConsumer. LlamaModel.setLogger((level, message) -> System.out.println(level.name() + ": " + message)); -// This can also be set to null to disable Java logging. -// However, in this case the C++ side will still output to stdout/stderr. -LlamaModel.setLogger(null); // To completely silence any output, pass a no-op. LlamaModel.setLogger((level, message) -> {}); // Similarly, a progress callback can be set (only the C++ side will call this). // I think this is only used to report progress loading the model with a value of 0-1. // It is thus state specific and can be done via the parameters. -new Parameters.Builder() +new ModelParameters.Builder() .setProgressCallback(progress -> System.out.println("progress: " + progress)) .build(); ``` - -### Debugging Information - -There are some methods to debug your shared library: - -```java -// Returns some information like "AVX = 1 | AVX2 = 1 | AVX512 = 0 | ...". -String systemInfo = LlamaLibrary.llama_print_system_info(); -// I think this returns the amount of logical cores llama.cpp can use (not completely sure though). -int maxDevices = llama_max_devices(); -// These two methods return a C bool, which is a byte in Java (0 = false, >0 = true). -boolean mmapSupported = llama_mmap_supported() > 0; -boolean mLockSupported = llama_mlock_supported() > 0; -// Returns a timestamp of the llama.cpp backend -long time = LlamaLibrary.llama_time_us(); -``` - -### Backend - -The `llama.cpp` backend is statically initialized upon accessing `LlamaModel`. If you want to de-allocate and maybe -later re-initialize it for whatever reason, there are two methods: - -``` -// This method takes a bool (byte, 0 = false, >0 = true) to enable NUMA optimizations. -// Per default, they are off. If you want to enable them, first free the backend, then initialize it again with 1. -LLamaLibrary.llama_backend_init((byte) 0); -LLamaLibrary.llama_backend_free(); -``` diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 390e9c96..deb49619 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1331,7 +1331,10 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv * env, j env->DeleteGlobalRef(g_log_callback); } - g_log_callback = env->NewGlobalRef(callback); - - llama_log_set(jllama_log_callback, nullptr); + if (callback == nullptr) { + llama_log_set(nullptr, nullptr); + } else { + g_log_callback = env->NewGlobalRef(callback); + llama_log_set(jllama_log_callback, nullptr); + } } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 6fe0cc47..9bdddb87 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -6,6 +6,8 @@ import java.util.NoSuchElementException; import java.util.function.BiConsumer; +import org.jetbrains.annotations.Nullable; + /** * This class is a wrapper around the llama.cpp functionality. * Upon being created, it natively allocates memory for the model context. @@ -131,7 +133,7 @@ public String decode(int[] tokens) { * * @param callback a method to call for log messages */ - public static native void setLogger(BiConsumer callback); + public static native void setLogger(@Nullable BiConsumer callback); @Override public void close() { From 30c62c4a1b8bde5b51560ca705ea38561e11ed13 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 23:00:28 +0200 Subject: [PATCH 015/384] Fix cmake output directory for windows again --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40def08e..b34c98ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,8 +62,7 @@ target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" - IMPORT_PREFIX "..\\" + RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" ) else() set_target_properties(jllama llama PROPERTIES From d96526fe82e187fc3056abc6cb00870983164542 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 23:12:40 +0200 Subject: [PATCH 016/384] Update release workflow --- .github/workflows/release.yaml | 92 +++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4baf6cf2..afe7f173 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,12 +1,12 @@ -name: Build and Publish to Maven Central +name: Build JNI bindings on: workflow_dispatch: release: types: [created] jobs: build: - name: Build ${{ matrix.os }}-${{ matrix.arch }} - runs-on: ${{ matrix.image }} + name: Build ${{ matrix.target.name }}-${{ matrix.target.arch }} + runs-on: ${{ matrix.target.image }} strategy: fail-fast: false matrix: @@ -17,12 +17,12 @@ jobs: image: ubuntu-latest, cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" } - - { - name: Linux, - arch: aarch64, - image: ubuntu-latest, - cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" - } + # - { + # name: Linux, + # arch: aarch64, + # image: ubuntu-latest, + # cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" + # } - { name: Mac, arch: x86_64, @@ -35,34 +35,42 @@ jobs: image: macos-latest, cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64" } -# - { -# name: Windows, -# arch: x86_64, -# image: windows-latest, -# cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" -# } -# - { -# name: Windows, -# arch: aarch64, -# image: windows-latest, -# cmake: "-DCMAKE_GENERATOR_PLATFORM=ARM64" -# } + - { + name: Windows, + arch: x86_64, + image: windows-latest, + cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" + } + # - { + # name: Windows, + # arch: aarch64, + # image: windows-latest, + # cmake: "-DCMAKE_GENERATOR_PLATFORM=ARM64" + # } steps: - name: Checkout Repository uses: actions/checkout@v4 with: submodules: recursive + ref: "jni" - name: CMake (Windows) - if: ${{ matrix.target.name == "Windows" }} + if: ${{ matrix.target.name == 'Windows' }} shell: cmd run: | - cd scripts && ./build.bat ${{ matrix.target.cmake }} + cd scripts && .\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - name: CMake (Unix) - if: ${{ matrix.target.name != "Windows" }} + if: ${{ matrix.target.name != 'Windows' }} shell: bash run: | cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: Upload Artifact + - name: Upload Unix Artifact + if: ${{ matrix.target.name == 'Windows' }} + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}\src\main\resources\de\kherud\llama\ + - name: Upload Windows Artifact + if: ${{ matrix.target.name != 'Windows' }} uses: actions/upload-artifact@v3 with: name: artifacts @@ -73,24 +81,26 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 + with: + ref: "jni" - name: Download Artifacts uses: actions/download-artifact@v3 with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ -# - name: Set up Maven Central Repository -# uses: actions/setup-java@v3 -# with: -# java-version: '17' -# distribution: 'zulu' -# server-id: ossrh -# server-username: MAVEN_USERNAME -# server-password: MAVEN_PASSWORD -# gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} -# gpg-passphrase: MAVEN_GPG_PASSPHRASE -# - name: Publish package -# run: mvn --batch-mode -P release deploy -# env: -# MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} -# MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} -# MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + - name: Set up Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'zulu' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Publish package + run: mvn --batch-mode -P release deploy + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} From ef76e8ef76471a54420734c0972145a1489c2a3d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 23:17:19 +0200 Subject: [PATCH 017/384] Update readme for version 2.0 --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 31141b74..f9fac87b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1170](https://img.shields.io/badge/llama.cpp-%23b1204-informational) +![llama.cpp b1261](https://img.shields.io/badge/llama.cpp-%23b1261-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -8,6 +8,11 @@ This repository provides Java bindings for the C++ library. **You are welcome to contribute** +> [!NOTE] +> Version 2.0 of this library just released and introduces some breaking changes. The underlying Java/C++ interfacing +> technology changed from JNA to JNI with a focus on performance. If you prefer to use the old JNA version, you can +> still access it as 1.x.x in the [jna branch](https://github.com/kherud/java-llama.cpp/tree/jna). + ## Quick Start Access this library via Maven: @@ -16,7 +21,6 @@ Access this library via Maven: de.kherud llama - 2.0.0 ``` From 179bd9f230a3bf4fb43be2ec1cd6e11e19c4f0f0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 23:26:36 +0200 Subject: [PATCH 018/384] Remove old workflow --- .github/workflows/build.yml | 106 --------------------------------- .github/workflows/release.yaml | 3 - 2 files changed, 109 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index c5cd7a3f..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: Build JNI bindings -on: - workflow_dispatch: - release: - types: [created] -jobs: - build: - name: Build ${{ matrix.target.name }}-${{ matrix.target.arch }} - runs-on: ${{ matrix.target.image }} - strategy: - fail-fast: false - matrix: - target: - - { - name: Linux, - arch: x86_64, - image: ubuntu-latest, - cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" - } -# - { -# name: Linux, -# arch: aarch64, -# image: ubuntu-latest, -# cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" -# } - - { - name: Mac, - arch: x86_64, - image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=x86_64" - } - - { - name: Mac, - arch: aarch64, - image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64" - } - - { - name: Windows, - arch: x86_64, - image: windows-latest, - cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" - } -# - { -# name: Windows, -# arch: aarch64, -# image: windows-latest, -# cmake: "-DCMAKE_GENERATOR_PLATFORM=ARM64" -# } - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - submodules: recursive - ref: "jni" - - name: CMake (Windows) - if: ${{ matrix.target.name == 'Windows' }} - shell: cmd - run: | - cd scripts && .\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: CMake (Unix) - if: ${{ matrix.target.name != 'Windows' }} - shell: bash - run: | - cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: Upload Unix Artifact - if: ${{ matrix.target.name == 'Windows' }} - uses: actions/upload-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}\src\main\resources\de\kherud\llama\ - - name: Upload Windows Artifact - if: ${{ matrix.target.name != 'Windows' }} - uses: actions/upload-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - publish: - needs: [build] - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - ref: "jni" - - name: Download Artifacts - uses: actions/download-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ -# - name: Set up Maven Central Repository -# uses: actions/setup-java@v3 -# with: -# java-version: '17' -# distribution: 'zulu' -# server-id: ossrh -# server-username: MAVEN_USERNAME -# server-password: MAVEN_PASSWORD -# gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} -# gpg-passphrase: MAVEN_GPG_PASSPHRASE -# - name: Publish package -# run: mvn --batch-mode -P release deploy -# env: -# MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} -# MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} -# MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index afe7f173..2fc3d070 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -52,7 +52,6 @@ jobs: uses: actions/checkout@v4 with: submodules: recursive - ref: "jni" - name: CMake (Windows) if: ${{ matrix.target.name == 'Windows' }} shell: cmd @@ -81,8 +80,6 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - with: - ref: "jni" - name: Download Artifacts uses: actions/download-artifact@v3 with: From 05bbd6d3b87d7b894bb84f2056b7c7df4f314269 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Sep 2023 23:30:37 +0200 Subject: [PATCH 019/384] Remove old java doc --- .github/workflows/release.yaml | 2 +- src/main/java/de/kherud/llama/ModelParameters.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2fc3d070..7783d822 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,4 +1,4 @@ -name: Build JNI bindings +name: Build JNI bindings and publish to Maven Central on: workflow_dispatch: release: diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 9b91a134..6ab7d658 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -214,7 +214,6 @@ public Builder setVerbosePrompt(boolean verbosePrompt) { /** * Set a callback that will be used to report progress loading the model with a float value of 0-1. * - * @param progressCallback the function to call ony any progress * @return this builder object */ // public Builder setProgressCallback(@Nullable Consumer progressCallback) { From dba0bf33cdf0d9d926654f2b402b88308571e901 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 21 Sep 2023 19:45:27 +0200 Subject: [PATCH 020/384] Update readme build notes --- README.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f9fac87b..eff4c740 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,28 @@ If any of these match your platform, you can include the Maven dependency and ge If none of the above listed platforms matches yours, currently you have to compile the library yourself (also if you want GPU acceleration, see below). More support is planned soon. -Run in the directory of this repository (java-llama.cpp): +This requires: + +- Git +- A C++11 conforming compiler +- The [cmake](https://www.cmake.org/) build system +- Java, Maven, and setting [JAVA_HOME](https://www.baeldung.com/java-home-on-windows-7-8-10-mac-os-x-linux) + +Make sure everything works by running + +``` +g++ -v # depending on your compiler +java -version +mvn -v +echo $JAVA_HOME # for inlux/macos +echo %JAVA_HOME% # for windows +``` + +Then, run the following commands in the directory of this repository (java-llama.cpp): ```shell +mvn compile +git submodule update --init --recursive mkdir build cd build cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend From ce74d52ed2839d118b37e155b7d97f50d4cf123d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 21 Sep 2023 19:54:31 +0200 Subject: [PATCH 021/384] Replace readme code tabs with spaces --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index eff4c740..f2af99ce 100644 --- a/README.md +++ b/README.md @@ -30,39 +30,39 @@ Here is a short example: ```java public class Example { - public static void main(String... args) throws IOException { - LlamaModel.setLogger((level, message) -> System.out.print(message)); - ModelParameters modelParams = new ModelParameters.Builder() - .setNGpuLayers(43) - .build(); - InferenceParameters inferParams = new InferenceParameters.Builder() - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt(new String[]{"\n"}) - .build(); - - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; - String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + - "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n"; - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { - System.out.print(system); - String prompt = system; - while (true) { - prompt += "\nUser: "; - System.out.print("\nUser: "); - String input = reader.readLine(); - prompt += input; - System.out.print("Llama: "); - prompt += "\nLlama: "; - for (String output : model.generate(prompt, inferParams)) { - System.out.print(output); - prompt += output; - } - } - } + public static void main(String... args) throws IOException { + LlamaModel.setLogger((level, message) -> System.out.print(message)); + ModelParameters modelParams = new ModelParameters.Builder() + .setNGpuLayers(43) + .build(); + InferenceParameters inferParams = new InferenceParameters.Builder() + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt(new String[]{"\n"}) + .build(); + + String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; + String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + + "requests immediately and with precision.\n"; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); + try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + System.out.print(system); + String prompt = system; + while (true) { + prompt += "\nUser: "; + System.out.print("\nUser: "); + String input = reader.readLine(); + prompt += input; + System.out.print("Llama: "); + prompt += "\nLlama: "; + for (String output : model.generate(prompt, inferParams)) { + System.out.print(output); + prompt += output; + } + } + } } } ``` From d82b8ea773a54e666dc6502d78ffe8e2f7783bb5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 25 Sep 2023 22:25:41 +0200 Subject: [PATCH 022/384] Fix unknown model bug, add log statements --- src/main/cpp/jllama.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index deb49619..622897c9 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -307,6 +307,8 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) } static void jllama_log_callback(enum llama_log_level level, const char * text, void * user_data) { + if (g_log_callback == nullptr) return; + JNIEnv* env; g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_2); @@ -512,6 +514,7 @@ struct jllama_context std::tie(model, ctx) = llama_init_from_gpt_params(params); if (model == nullptr) { + jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "unable to load model", nullptr); // LOG_ERROR("unable to load model", {{"model", params_.model}}); return false; } @@ -536,6 +539,7 @@ struct jllama_context // will be empty (default) if there are parse errors if (parsed_grammar.rules.empty()) { + jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "grammar parse error", nullptr); // LOG_ERROR("grammar parse error", {{"grammar", params.grammar}}); return false; } @@ -545,6 +549,7 @@ struct jllama_context auto it = params.logit_bias.find(llama_token_eos(ctx)); if (it != params.logit_bias.end() && it->second == -INFINITY) { + jllama_log_callback(LLAMA_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail", nullptr); // LOG_WARNING("EOS token is disabled, which will cause most grammars to fail", {}); } } @@ -577,6 +582,7 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); +// jllama_log_callback(LLAMA_LOG_LEVEL_INFO, "input truncated"); // LOG_VERBOSE("input truncated", { // {"n_ctx", params.n_ctx}, // {"n_keep", params.n_keep}, @@ -651,6 +657,7 @@ struct jllama_context } if (llama_eval(ctx, &embd[n_past], n_eval, n_past, params.n_threads)) { + jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "failed to evaluate", nullptr); // LOG_ERROR("failed to eval", { // {"n_eval", n_eval}, // {"n_past", n_past}, @@ -897,6 +904,7 @@ struct jllama_context static const int n_embd = llama_n_embd(ctx); if (!params.embedding) { + jllama_log_callback(LLAMA_LOG_LEVEL_WARN, "embedding disabled", nullptr); // LOG_WARNING("embedding disabled", { // {"params.embedding", params.embedding}, // }); @@ -996,6 +1004,11 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ // // f_memory_f16 // // f_f16_kv + if (params.model_alias == "unknown") + { + params.model_alias = params.model; + } + return params; } @@ -1084,7 +1097,7 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv * JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, jobject jparams) { - gpt_params params = parse_model_params(env, jparams, file_path); + gpt_params params = parse_model_params(env, jparams, file_path); jllama_context *llama = new jllama_context; llama_backend_init(false); @@ -1095,13 +1108,13 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } - // LOG_INFO("build info", {{"build", BUILD_NUMBER}, - // {"commit", BUILD_COMMIT}}); - // LOG_INFO("system info", { - // {"n_threads", params.n_threads}, - // {"total_threads", std::thread::hardware_concurrency()}, - // {"system_info", llama_print_system_info()}, - // }); +// LOG_INFO("build info", {{"build", BUILD_NUMBER}, +// {"commit", BUILD_COMMIT}}); +// LOG_INFO("system info", { +// {"n_threads", params.n_threads}, +// {"total_threads", std::thread::hardware_concurrency()}, +// {"system_info", llama_print_system_info()}, +// }); env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); } From bea27ce7055e06bb39ab72101e98e3d4d4a2beda Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 25 Sep 2023 22:52:12 +0200 Subject: [PATCH 023/384] Remove uuid from extracted shared library (#11) --- src/main/java/de/kherud/llama/LlamaLoader.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 4bdcf98c..d1331d6f 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -26,7 +26,6 @@ import java.nio.file.StandardCopyOption; import java.util.LinkedList; import java.util.List; -import java.util.UUID; import java.util.stream.Stream; import org.jetbrains.annotations.Nullable; @@ -172,17 +171,8 @@ private static boolean loadNativeLibrary(Path path) { @Nullable private static Path extractFile(String sourceDirectory, String fileName, String targetDirectory, boolean addUuid) { String nativeLibraryFilePath = sourceDirectory + "/" + fileName; - // Include architecture name in temporary filename in order to avoid conflicts - // when multiple JVMs with different architectures running at the same time - String extractedLibFileName; - if (addUuid) { - String uuid = UUID.randomUUID().toString(); - extractedLibFileName = uuid + "-" + fileName; - } else { - extractedLibFileName = fileName; - } - Path extractedFilePath = Paths.get(targetDirectory, extractedLibFileName); + Path extractedFilePath = Paths.get(targetDirectory, fileName); try { // Extract a native library file into the target directory From 89fc49db078bcf4aaafebc15918c3b4f084bb9c8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 25 Sep 2023 22:53:39 +0200 Subject: [PATCH 024/384] bump version --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f2af99ce..dae2270d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1261](https://img.shields.io/badge/llama.cpp-%23b1261-informational) +![llama.cpp b1269](https://img.shields.io/badge/llama.cpp-%23b1269-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.0.0 + 2.0.1 ``` From 450b2cbebb1b05560418bfe146d2cfcda61fbbea Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 25 Sep 2023 23:12:17 +0200 Subject: [PATCH 025/384] Bump pom.xml version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ab2a6562..d41a7fcc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.0.0 + 2.0.1 jar ${project.groupId}:${project.artifactId} From 101c6176f9dfd18735876166bca746e37166fa86 Mon Sep 17 00:00:00 2001 From: Branden Butler Date: Thu, 28 Sep 2023 10:49:20 -0500 Subject: [PATCH 026/384] Fix linux ARM64 Github builds --- .github/workflows/release.yaml | 45 ++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 7783d822..d433b93e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,15 +14,22 @@ jobs: - { name: Linux, arch: x86_64, + docker-arch: linux/amd64, + docker-image: eclipse-temurin:11, image: ubuntu-latest, cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" } - # - { - # name: Linux, - # arch: aarch64, - # image: ubuntu-latest, - # cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" - # } + - { + # Sure do love the many ways to refer to ARM 64 bit + # The platform passed to docker must be linux/arm64 to pull in the right image + # But then we need aarch64 for the CMake invocation. Maybe we can switch CMake to using arm64? + name: Linux, + docker-arch: linux/arm64, + docker-image: eclipse-temurin:11, + arch: aarch64, + image: ubuntu-latest, + cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" + } - { name: Mac, arch: x86_64, @@ -52,23 +59,41 @@ jobs: uses: actions/checkout@v4 with: submodules: recursive + - name: Set up QEMU + if: ${{ matrix.target.name == 'Linux' }} + uses: docker/setup-qemu-action@v1 + with: + platforms: ${{ matrix.target.docker-arch }} - name: CMake (Windows) if: ${{ matrix.target.name == 'Windows' }} shell: cmd run: | cd scripts && .\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: CMake (Unix) - if: ${{ matrix.target.name != 'Windows' }} + - name: CMake (Linux) + if: ${{ matrix.target.name == 'Linux' }} + run: | + docker run \ + --rm \ + -v $(pwd):/${{ github.workspace }} \ + -w ${{ github.workspace }} \ + --platform ${{ matrix.target.docker-arch }} \ + ${{ matrix.target.docker-image }} \ + sh -c "apt-get update && apt-get install -y cmake openjdk-11-jdk git build-essential && cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }}" + # The above apt-get commands can be moved to a Dockerfile, but then + # the image needs to be built for the docker-arch architecture, + # which means using the docker/setup-buildx-action + - name: CMake (Mac) + if: ${{ matrix.target.name == 'Mac' }} shell: bash run: | cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: Upload Unix Artifact + - name: Upload Windows Artifact if: ${{ matrix.target.name == 'Windows' }} uses: actions/upload-artifact@v3 with: name: artifacts path: ${{ github.workspace }}\src\main\resources\de\kherud\llama\ - - name: Upload Windows Artifact + - name: Upload Unix Artifact if: ${{ matrix.target.name != 'Windows' }} uses: actions/upload-artifact@v3 with: From 7b768769b71e2584605427044d825536a66a20b9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 28 Sep 2023 22:57:22 +0200 Subject: [PATCH 027/384] Implement llama.cpp updates --- CMakeLists.txt | 12 +- src/main/cpp/jllama.cpp | 344 ++++++++++-------- .../java/de/kherud/llama/ModelParameters.java | 14 +- 3 files changed, 193 insertions(+), 177 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b34c98ea..311fd43a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ endforeach() # find which OS we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_NAME) - execute_process( + execute_process( COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --os OUTPUT_VARIABLE OS_NAME OUTPUT_STRIP_TRAILING_WHITESPACE @@ -44,21 +44,21 @@ if(NOT DEFINED OS_ARCH) ) endif() -include_directories( +add_library(jllama SHARED src/main/cpp/jllama.cpp) + +target_include_directories(jllama PRIVATE ${JNI_INCLUDE_DIR} ${JNI_MD_INCLUDE_DIRS} src/main/cpp - src/main/cpp/llama.cpp - src/main/cpp/llama.cpp/common ) add_subdirectory( src/main/cpp/llama.cpp ) -add_library(jllama SHARED src/main/cpp/jllama.cpp) +target_link_libraries(jllama PRIVATE common llama) -target_link_libraries(jllama PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT}) +target_compile_features(jllama PRIVATE cxx_std_11) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 622897c9..ea16e36c 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -78,7 +78,6 @@ static jfieldID f_main_gpu = 0; static jfieldID f_tensor_split = 0; static jfieldID f_rope_freq_base = 0; static jfieldID f_rope_freq_scale = 0; -static jfieldID f_low_vram = 0; static jfieldID f_mul_mat_q = 0; static jfieldID f_f16_kv = 0; static jfieldID f_logits_all = 0; @@ -107,7 +106,7 @@ static jobject o_log_level_info = 0; static jobject o_log_level_warn = 0; static jobject o_log_level_error = 0; -static JavaVM* g_vm = nullptr; +static JavaVM *g_vm = nullptr; static jobject g_log_callback = nullptr; JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) @@ -215,7 +214,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_tensor_split = env->GetFieldID(c_model_params, "tensorSplit", "[F"); f_rope_freq_base = env->GetFieldID(c_model_params, "ropeFreqBase", "F"); f_rope_freq_scale = env->GetFieldID(c_model_params, "ropeFreqScale", "F"); - f_low_vram = env->GetFieldID(c_model_params, "lowVram", "Z"); f_mul_mat_q = env->GetFieldID(c_model_params, "mulMatQ", "Z"); f_f16_kv = env->GetFieldID(c_model_params, "f16Kv", "Z"); f_logits_all = env->GetFieldID(c_model_params, "logitsAll", "Z"); @@ -240,32 +238,32 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { goto error; } - if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_low_vram && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) + if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { goto error; } - f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); - f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); - f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); - f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); - f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); + f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); + f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); + f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); + f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); + f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); - if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) - { - goto error; - } + if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) + { + goto error; + } - o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); - o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); + o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); + o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); o_log_level_error = env->GetStaticObjectField(c_log_level, f_log_level_error); if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) - { - goto error; - } + { + goto error; + } if (env->ExceptionCheck()) { @@ -306,18 +304,29 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteWeakGlobalRef(c_error_oom); } -static void jllama_log_callback(enum llama_log_level level, const char * text, void * user_data) { - if (g_log_callback == nullptr) return; +static void jllama_log_callback(enum ggml_log_level level, const char *text, void *user_data) +{ + if (g_log_callback == nullptr) + return; - JNIEnv* env; - g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_2); + JNIEnv *env; + g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_2); jobject java_log_level; - switch (level) { - case LLAMA_LOG_LEVEL_ERROR: java_log_level = o_log_level_error; break; - case LLAMA_LOG_LEVEL_WARN: java_log_level = o_log_level_warn; break; - case LLAMA_LOG_LEVEL_INFO: java_log_level = o_log_level_info; break; - default: java_log_level = o_log_level_debug; break; + switch (level) + { + case GGML_LOG_LEVEL_ERROR: + java_log_level = o_log_level_error; + break; + case GGML_LOG_LEVEL_WARN: + java_log_level = o_log_level_warn; + break; + case GGML_LOG_LEVEL_INFO: + java_log_level = o_log_level_info; + break; + default: + java_log_level = o_log_level_debug; + break; } jstring java_text = env->NewStringUTF(text); @@ -329,7 +338,7 @@ static void jllama_log_callback(enum llama_log_level level, const char * text, v static std::string parse_jstring(JNIEnv *env, jstring java_string) { - const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); + const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); size_t length = (size_t)env->GetArrayLength(string_bytes); jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); @@ -361,10 +370,10 @@ static float parse_jfloat(JNIEnv *env, jobject java_float) // to do this conversion in C++ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) { - jsize len = string.size(); - jbyteArray bytes = env->NewByteArray(len); - env->SetByteArrayRegion(bytes, 0, len, (jbyte*)string.c_str()); - return bytes; + jsize len = string.size(); + jbyteArray bytes = env->NewByteArray(len); + env->SetByteArrayRegion(bytes, 0, len, (jbyte *)string.c_str()); + return bytes; } // completion token output with probabilities @@ -451,6 +460,7 @@ struct jllama_context llama_model *model = nullptr; llama_context *ctx = nullptr; gpt_params params; + int n_ctx; grammar_parser::parse_state parsed_grammar; llama_grammar *grammar = nullptr; @@ -490,7 +500,7 @@ struct jllama_context num_prompt_tokens = 0; num_tokens_predicted = 0; generated_text = ""; - generated_text.reserve(params.n_ctx); + generated_text.reserve(n_ctx); generated_token_probs.clear(); truncated = false; stopped_eos = false; @@ -514,12 +524,13 @@ struct jllama_context std::tie(model, ctx) = llama_init_from_gpt_params(params); if (model == nullptr) { - jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "unable to load model", nullptr); + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "unable to load model", nullptr); // LOG_ERROR("unable to load model", {{"model", params_.model}}); return false; } - last_n_tokens.resize(params.n_ctx); + n_ctx = llama_n_ctx(ctx); + last_n_tokens.resize(n_ctx); std::fill(last_n_tokens.begin(), last_n_tokens.end(), 0); return true; } @@ -539,7 +550,7 @@ struct jllama_context // will be empty (default) if there are parse errors if (parsed_grammar.rules.empty()) { - jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "grammar parse error", nullptr); + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error", nullptr); // LOG_ERROR("grammar parse error", {{"grammar", params.grammar}}); return false; } @@ -549,7 +560,7 @@ struct jllama_context auto it = params.logit_bias.find(llama_token_eos(ctx)); if (it != params.logit_bias.end() && it->second == -INFINITY) { - jllama_log_callback(LLAMA_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail", nullptr); + jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail", nullptr); // LOG_WARNING("EOS token is disabled, which will cause most grammars to fail", {}); } } @@ -571,24 +582,23 @@ struct jllama_context { params.n_keep = (int)num_prompt_tokens; } - params.n_keep = std::min(params.n_ctx - 4, params.n_keep); + params.n_keep = std::min(n_ctx - 4, params.n_keep); // if input prompt is too big, truncate like normal - if (num_prompt_tokens >= (size_t)params.n_ctx) + if (num_prompt_tokens >= (size_t)n_ctx) { - const int n_left = (params.n_ctx - params.n_keep) / 2; + const int n_left = (n_ctx - params.n_keep) / 2; std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); - std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); + std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); -// jllama_log_callback(LLAMA_LOG_LEVEL_INFO, "input truncated"); - // LOG_VERBOSE("input truncated", { - // {"n_ctx", params.n_ctx}, - // {"n_keep", params.n_keep}, - // {"n_left", n_left}, - // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, - // }); + // LOG_VERBOSE("input truncated", { + // {"n_ctx", n_ctx}, + // {"n_keep", params.n_keep}, + // {"n_left", n_left}, + // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, + // }); truncated = true; prompt_tokens = new_tokens; @@ -602,6 +612,10 @@ struct jllama_context // compare the evaluated prompt with the new prompt n_past = common_part(embd, prompt_tokens); + + // since #3228 we now have to manually manage the KV cache + llama_kv_cache_seq_rm(ctx, 0, n_past, params.n_ctx); + embd = prompt_tokens; if (n_past == num_prompt_tokens) { @@ -609,11 +623,11 @@ struct jllama_context n_past--; } - // LOG_VERBOSE("prompt ingested", { - // {"n_past", n_past}, - // {"cached", tokens_to_str(ctx, embd.cbegin(), embd.cbegin() + n_past)}, - // {"to_eval", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, - // }); + // LOG_VERBOSE("prompt ingested", { + // {"n_past", n_past}, + // {"cached", tokens_to_str(ctx, embd.cbegin(), embd.cbegin() + n_past)}, + // {"to_eval", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, + // }); has_next_token = true; } @@ -630,22 +644,30 @@ struct jllama_context completion_token_output result; result.tok = -1; - if (embd.size() >= (size_t)params.n_ctx) + if (embd.size() >= (size_t)n_ctx) { - // Reset context - const int n_left = (params.n_ctx - params.n_keep) / 2; + // Shift context + + const int n_left = n_past - params.n_keep - 1; + const int n_discard = n_left / 2; + + llama_kv_cache_seq_rm(ctx, 0, params.n_keep + 1, params.n_keep + n_discard + 1); + llama_kv_cache_seq_shift(ctx, 0, params.n_keep + 1 + n_discard, n_past, -n_discard); + + for (size_t i = params.n_keep + 1 + n_discard; i < embd.size(); i++) + { + embd[i - n_discard] = embd[i]; + } + embd.resize(embd.size() - n_discard); + + n_past -= n_discard; - std::vector new_tokens(embd.begin(), embd.begin() + params.n_keep); - new_tokens.insert(new_tokens.end(), embd.end() - n_left, embd.end()); - embd = new_tokens; - n_past = params.n_keep; truncated = true; - // LOG_VERBOSE("input truncated", { - // {"n_ctx", params.n_ctx}, - // {"n_keep", params.n_keep}, - // {"n_left", n_left}, - // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, - // }); +// LOG_VERBOSE("input truncated", { +// {"n_ctx", n_ctx}, +// {"n_keep", params.n_keep}, +// {"n_left", n_left}, +// }); } while (n_past < embd.size()) @@ -655,15 +677,14 @@ struct jllama_context { n_eval = params.n_batch; } - if (llama_eval(ctx, &embd[n_past], n_eval, n_past, params.n_threads)) + + if (llama_decode(ctx, llama_batch_get_one(&embd[n_past], n_eval, n_past, 0))) { - jllama_log_callback(LLAMA_LOG_LEVEL_ERROR, "failed to evaluate", nullptr); - // LOG_ERROR("failed to eval", { - // {"n_eval", n_eval}, - // {"n_past", n_past}, - // {"n_threads", params.n_threads}, - // {"embd", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, - // }); +// LOG_ERROR("failed to eval", { +// {"n_eval", n_eval}, +// {"n_past", n_past}, +// {"embd", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, +// }); has_next_token = false; return result; } @@ -679,11 +700,11 @@ struct jllama_context // out of user input, sample next token const float temp = params.temp; - const int32_t top_k = params.top_k <= 0 ? llama_n_vocab(ctx) : params.top_k; + const int32_t top_k = params.top_k <= 0 ? llama_n_vocab(model) : params.top_k; const float top_p = params.top_p; const float tfs_z = params.tfs_z; const float typical_p = params.typical_p; - const int32_t repeat_last_n = params.repeat_last_n < 0 ? params.n_ctx : params.repeat_last_n; + const int32_t repeat_last_n = params.repeat_last_n < 0 ? n_ctx : params.repeat_last_n; const float repeat_penalty = params.repeat_penalty; const float alpha_presence = params.presence_penalty; const float alpha_frequency = params.frequency_penalty; @@ -695,7 +716,7 @@ struct jllama_context { auto *logits = llama_get_logits(ctx); - auto n_vocab = llama_n_vocab(ctx); + auto n_vocab = llama_n_vocab(model); // Apply params.logit_bias map for (const auto &it : params.logit_bias) @@ -714,7 +735,7 @@ struct jllama_context // Apply penalties float nl_logit = logits[llama_token_nl(ctx)]; - auto last_n_repeat = std::min(std::min((int)last_n_tokens.size(), repeat_last_n), params.n_ctx); + auto last_n_repeat = std::min(std::min((int)last_n_tokens.size(), repeat_last_n), n_ctx); llama_sample_repetition_penalty(ctx, &candidates_p, last_n_tokens.data() + last_n_tokens.size() - last_n_repeat, last_n_repeat, repeat_penalty); @@ -746,13 +767,13 @@ struct jllama_context { static float mirostat_mu = 2.0f * mirostat_tau; const int mirostat_m = 100; - llama_sample_temperature(ctx, &candidates_p, temp); + llama_sample_temp(ctx, &candidates_p, temp); result.tok = llama_sample_token_mirostat(ctx, &candidates_p, mirostat_tau, mirostat_eta, mirostat_m, &mirostat_mu); } else if (mirostat == 2) { static float mirostat_mu = 2.0f * mirostat_tau; - llama_sample_temperature(ctx, &candidates_p, temp); + llama_sample_temp(ctx, &candidates_p, temp); result.tok = llama_sample_token_mirostat_v2(ctx, &candidates_p, mirostat_tau, mirostat_eta, &mirostat_mu); } else @@ -763,7 +784,7 @@ struct jllama_context llama_sample_tail_free(ctx, &candidates_p, tfs_z, min_keep); llama_sample_typical(ctx, &candidates_p, typical_p, min_keep); llama_sample_top_p(ctx, &candidates_p, top_p, min_keep); - llama_sample_temperature(ctx, &candidates_p, temp); + llama_sample_temp(ctx, &candidates_p, temp); result.tok = llama_sample_token(ctx, &candidates_p); } } @@ -793,7 +814,7 @@ struct jllama_context // stopping_word = llama_token_to_piece(ctx, embd.back()); has_next_token = false; stopped_eos = true; - // LOG_VERBOSE("eos token found", {}); +// LOG_VERBOSE("eos token found", {}); return result; } @@ -884,27 +905,27 @@ struct jllama_context stopped_limit = true; } - // LOG_VERBOSE("next token", { - // {"token", token_with_probs.tok}, - // {"token_text", tokens_to_output_formatted_string(ctx, token_with_probs.tok)}, - // {"has_next_token", has_next_token}, - // {"n_remain", n_remain}, - // {"num_tokens_predicted", num_tokens_predicted}, - // {"stopped_eos", stopped_eos}, - // {"stopped_word", stopped_word}, - // {"stopped_limit", stopped_limit}, - // {"stopping_word", stopping_word}, - // }); + // LOG_VERBOSE("next token", { + // {"token", token_with_probs.tok}, + // {"token_text", tokens_to_output_formatted_string(ctx, token_with_probs.tok)}, + // {"has_next_token", has_next_token}, + // {"n_remain", n_remain}, + // {"num_tokens_predicted", num_tokens_predicted}, + // {"stopped_eos", stopped_eos}, + // {"stopped_word", stopped_word}, + // {"stopped_limit", stopped_limit}, + // {"stopping_word", stopping_word}, + // }); return token_with_probs; } std::vector getEmbedding() { - static const int n_embd = llama_n_embd(ctx); + static const int n_embd = llama_n_embd(model); if (!params.embedding) { - jllama_log_callback(LLAMA_LOG_LEVEL_WARN, "embedding disabled", nullptr); + jllama_log_callback(GGML_LOG_LEVEL_WARN, "embedding disabled", nullptr); // LOG_WARNING("embedding disabled", { // {"params.embedding", params.embedding}, // }); @@ -931,7 +952,6 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); params.hellaswag = env->GetBooleanField(jparams, f_hellaswag); params.hellaswag_tasks = env->GetShortField(jparams, f_hellaswag_tasks); - params.low_vram = env->GetBooleanField(jparams, f_low_vram); params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); params.memory_f16 = env->GetBooleanField(jparams, f_memory_f16); params.embedding = env->GetBooleanField(jparams, f_embedding); @@ -941,42 +961,44 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.numa = env->GetBooleanField(jparams, f_numa); params.verbose_prompt = env->GetBooleanField(jparams, f_verbose_prompt); - jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, f_lora_adapter); - if (j_lora_adapter != nullptr) - { - params.lora_adapter = parse_jstring(env, j_lora_adapter); - env->DeleteLocalRef(j_lora_adapter); - } - jstring j_lora_base = (jstring)env->GetObjectField(jparams, f_lora_base); - if (j_lora_base != nullptr) - { - params.lora_base = parse_jstring(env, j_lora_base); - env->DeleteLocalRef(j_lora_base); - } - -// jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, f_tensor_split); -// if (j_tensor_split != nullptr) -// { -// #ifndef GGML_USE_CUBLAS -// // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); -// #endif -// jsize array_length = env->GetArrayLength(j_tensor_split); -// GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); -// float *tensor_split = new float[array_length]; -// env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); -// for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) -// { -// if (i_device < array_length) -// { -// params.tensor_split[i_device] = tensor_split[i_device]; -// } -// else -// { -// params.tensor_split[i_device] = 0.0f; -// } -// } -// delete[] tensor_split; -// } +// jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, f_lora_adapter); +// if (j_lora_adapter != nullptr) +// { +// params.lora_adapter = parse_jstring(env, j_lora_adapter); +// std::cout << params.lora_adapter << std::endl; +// env->DeleteLocalRef(j_lora_adapter); +// } +// jstring j_lora_base = (jstring)env->GetObjectField(jparams, f_lora_base); +// if (j_lora_base != nullptr) +// { +// params.lora_base = parse_jstring(env, j_lora_base); +// std::cout << params.lora_base << std::endl; +// env->DeleteLocalRef(j_lora_base); +// } + + // jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, f_tensor_split); + // if (j_tensor_split != nullptr) + // { + // #ifndef GGML_USE_CUBLAS + // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); + // #endif + // jsize array_length = env->GetArrayLength(j_tensor_split); + // GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); + // float *tensor_split = new float[array_length]; + // env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); + // for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) + // { + // if (i_device < array_length) + // { + // params.tensor_split[i_device] = tensor_split[i_device]; + // } + // else + // { + // params.tensor_split[i_device] = 0.0f; + // } + // } + // delete[] tensor_split; + // } // // #ifndef LLAMA_SUPPORTS_GPU_OFFLOAD // if (params.n_gpu_layers > 0) { @@ -1005,9 +1027,9 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ // // f_f16_kv if (params.model_alias == "unknown") - { - params.model_alias = params.model; - } + { + params.model_alias = params.model; + } return params; } @@ -1050,7 +1072,7 @@ static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring p jobject logit_bias = env->GetObjectField(params, f_logit_bias); if (logit_bias != nullptr) { - const int n_vocab = llama_n_vocab(llama->ctx); + const int n_vocab = llama_n_vocab(llama->model); jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); while (env->CallBooleanMethod(iterator, m_iterator_has_next)) @@ -1097,7 +1119,7 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv * JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, jobject jparams) { - gpt_params params = parse_model_params(env, jparams, file_path); + gpt_params params = parse_model_params(env, jparams, file_path); jllama_context *llama = new jllama_context; llama_backend_init(false); @@ -1108,13 +1130,13 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } -// LOG_INFO("build info", {{"build", BUILD_NUMBER}, -// {"commit", BUILD_COMMIT}}); -// LOG_INFO("system info", { -// {"n_threads", params.n_threads}, -// {"total_threads", std::thread::hardware_concurrency()}, -// {"system_info", llama_print_system_info()}, -// }); + // LOG_INFO("build info", {{"build", BUILD_NUMBER}, + // {"commit", BUILD_COMMIT}}); + // LOG_INFO("system info", { + // {"n_threads", params.n_threads}, + // {"total_threads", std::thread::hardware_concurrency()}, + // {"system_info", llama_print_system_info()}, + // }); env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); } @@ -1215,7 +1237,7 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env env->SetLongField(iter, f_iter_has_next, false); } - return parse_jbytes(env, to_send); + return parse_jbytes(env, to_send); } JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, jobject obj, jstring prompt, jobject params) @@ -1257,7 +1279,7 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env // llama->lock().release(); // llama->mutex.unlock(); - return parse_jbytes(env, llama->generated_text); + return parse_jbytes(env, llama->generated_text); } JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) @@ -1274,7 +1296,7 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, llama->beginCompletion(); llama->doCompletion(); - static const int n_embd = llama_n_embd(llama->ctx); + static const int n_embd = llama_n_embd(llama->model); // if (!llama->params.embedding) // { // // LOG_WARNING("embedding disabled", { @@ -1336,18 +1358,22 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *en return env->NewString((jchar *)text.data(), text.size()); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv * env, jclass clazz, jobject callback) { - env->GetJavaVM(&g_vm); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) +{ + env->GetJavaVM(&g_vm); - if (g_log_callback != nullptr) - { - env->DeleteGlobalRef(g_log_callback); - } + if (g_log_callback != nullptr) + { + env->DeleteGlobalRef(g_log_callback); + } - if (callback == nullptr) { - llama_log_set(nullptr, nullptr); - } else { - g_log_callback = env->NewGlobalRef(callback); - llama_log_set(jllama_log_callback, nullptr); - } + if (callback == nullptr) + { + llama_log_set(nullptr, nullptr); + } + else + { + g_log_callback = env->NewGlobalRef(callback); + llama_log_set(jllama_log_callback, nullptr); + } } diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 6ab7d658..c676b4b6 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -19,7 +19,6 @@ public final class ModelParameters { public final float ropeFreqScale; // RoPE frequency scaling factor // public final llama_progress_callback progress_callback; // public final Pointer progress_callback_user_data; - public final boolean lowVram; // if true, reduce VRAM usage at the cost of performance public final boolean mulMatQ; // if true, use experimental mul_mat_q kernels public final boolean f16Kv; // use fp16 for KV cache public final boolean logitsAll; // the llama_eval() call computes all logits, not just the last one @@ -51,7 +50,6 @@ private ModelParameters( float[] tensorSplit, float ropeFreqBase, float ropeFreqScale, - boolean lowVram, boolean mulMatQ, boolean f16Kv, boolean logitsAll, @@ -76,7 +74,6 @@ private ModelParameters( this.tensorSplit = tensorSplit; this.ropeFreqBase = ropeFreqBase; this.ropeFreqScale = ropeFreqScale; - this.lowVram = lowVram; this.mulMatQ = mulMatQ; this.f16Kv = f16Kv; this.logitsAll = logitsAll; @@ -107,11 +104,10 @@ public static class Builder { public int nGpuLayers = -1; // number of layers to store in VRAM public int mainGpu = 0; // the GPU that is used for scratch and small tensors public float[] tensorSplit = null; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) - public float ropeFreqBase = 10000.0f; // RoPE base frequency - public float ropeFreqScale = 1.0f; // RoPE frequency scaling factor + public float ropeFreqBase = 0; // RoPE base frequency + public float ropeFreqScale = 0; // RoPE frequency scaling factor // public llama_progress_callback progress_callback; // public Pointer progress_callback_user_data; - public boolean lowVram = false; // if true, reduce VRAM usage at the cost of performance public boolean mulMatQ = true; // if true, use experimental mul_mat_q kernels public boolean f16Kv; // use fp16 for KV cache public boolean logitsAll; // the llama_eval() call computes all logits, not just the last one @@ -147,7 +143,6 @@ public ModelParameters build() { tensorSplit, ropeFreqBase, ropeFreqScale, - lowVram, mulMatQ, f16Kv, logitsAll, @@ -277,11 +272,6 @@ public Builder setRopeFreqScale(float ropeFreqScale) { // return this; // } - public Builder setLowVram(boolean lowVram) { - this.lowVram = lowVram; - return this; - } - public Builder setMulMatQ(boolean mulMatQ) { this.mulMatQ = mulMatQ; return this; From d5cc8a81ed7bd7beb54083a69c2072828905501b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 28 Sep 2023 22:58:30 +0200 Subject: [PATCH 028/384] Bump version --- README.md | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dae2270d..dd0ab948 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1269](https://img.shields.io/badge/llama.cpp-%23b1269-informational) +![llama.cpp b1291](https://img.shields.io/badge/llama.cpp-%23b1291-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.0.1 + 2.0.2 ``` diff --git a/pom.xml b/pom.xml index d41a7fcc..f7037e9b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.0.1 + 2.0.2 jar ${project.groupId}:${project.artifactId} From a2929b0d6dac7d07c0540724f6cb2646abafab6a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 28 Sep 2023 23:16:24 +0200 Subject: [PATCH 029/384] Fix github workflow quotes --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d433b93e..27e2c5e6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,7 +15,7 @@ jobs: name: Linux, arch: x86_64, docker-arch: linux/amd64, - docker-image: eclipse-temurin:11, + docker-image: "eclipse-temurin:11", image: ubuntu-latest, cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" } @@ -25,7 +25,7 @@ jobs: # But then we need aarch64 for the CMake invocation. Maybe we can switch CMake to using arm64? name: Linux, docker-arch: linux/arm64, - docker-image: eclipse-temurin:11, + docker-image: "eclipse-temurin:11", arch: aarch64, image: ubuntu-latest, cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" From bb3c5aa8a2c2d25164d9d731fddfe8701db1a58d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 28 Sep 2023 23:21:50 +0200 Subject: [PATCH 030/384] Update setup qemu action version --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 27e2c5e6..5d0a82fe 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -61,7 +61,7 @@ jobs: submodules: recursive - name: Set up QEMU if: ${{ matrix.target.name == 'Linux' }} - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v2 with: platforms: ${{ matrix.target.docker-arch }} - name: CMake (Windows) From 5e2a73158338592ef335f2fc30c9d6e433731357 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 28 Sep 2023 23:29:40 +0200 Subject: [PATCH 031/384] Update setup qemu action version --- .github/workflows/release.yaml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 5d0a82fe..47e7b786 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -61,7 +61,7 @@ jobs: submodules: recursive - name: Set up QEMU if: ${{ matrix.target.name == 'Linux' }} - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 with: platforms: ${{ matrix.target.docker-arch }} - name: CMake (Windows) diff --git a/README.md b/README.md index dd0ab948..e9f14cee 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.0.2 + 2.0.1 ``` From f84002db8be7f38501bcc406867d55f6d951de23 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 22:51:18 +0200 Subject: [PATCH 032/384] Add cmake llama build args --- CMakeLists.txt | 5 +- build-args.cmake | 588 ++++++++++++++++++++++++++++++++++++++++ src/main/cpp/jllama.cpp | 250 +++++++---------- 3 files changed, 690 insertions(+), 153 deletions(-) create mode 100644 build-args.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 311fd43a..414910a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.12) project(jllama CXX) -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED true) +# todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? +include(build-args.cmake) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) diff --git a/build-args.cmake b/build-args.cmake new file mode 100644 index 00000000..1081d35f --- /dev/null +++ b/build-args.cmake @@ -0,0 +1,588 @@ +cmake_minimum_required(VERSION 3.13) # for add_link_options + +if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +# +# Option list +# + +if (APPLE) + set(LLAMA_METAL_DEFAULT ON) +else() + set(LLAMA_METAL_DEFAULT OFF) +endif() + +# general +option(LLAMA_STATIC "llama: static link libraries" OFF) +option(LLAMA_NATIVE "llama: enable -march=native flag" ON) +option(LLAMA_LTO "llama: enable link time optimization" OFF) + +# debug +option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON) +option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF) +option(LLAMA_GPROF "llama: enable gprof" OFF) + +# sanitizers +option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF) +option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF) +option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF) + +# instruction set specific +if (LLAMA_NATIVE) + set(INS_ENB OFF) +else() + set(INS_ENB ON) +endif() + +option(LLAMA_AVX "llama: enable AVX" ${INS_ENB}) +option(LLAMA_AVX2 "llama: enable AVX2" ${INS_ENB}) +option(LLAMA_AVX512 "llama: enable AVX512" OFF) +option(LLAMA_AVX512_VBMI "llama: enable AVX512-VBMI" OFF) +option(LLAMA_AVX512_VNNI "llama: enable AVX512-VNNI" OFF) +option(LLAMA_FMA "llama: enable FMA" ${INS_ENB}) +# in MSVC F16C is implied with AVX2/AVX512 +if (NOT MSVC) + option(LLAMA_F16C "llama: enable F16C" ${INS_ENB}) +endif() + +# 3rd party libs +option(LLAMA_ACCELERATE "llama: enable Accelerate framework" ON) +option(LLAMA_BLAS "llama: use BLAS" OFF) +set(LLAMA_BLAS_VENDOR "Generic" CACHE STRING "llama: BLAS library vendor") +option(LLAMA_CUBLAS "llama: use CUDA" OFF) +#option(LLAMA_CUDA_CUBLAS "llama: use cuBLAS for prompt processing" OFF) +option(LLAMA_CUDA_FORCE_DMMV "llama: use dmmv instead of mmvq CUDA kernels" OFF) +set(LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels") +set(LLAMA_CUDA_MMV_Y "1" CACHE STRING "llama: y block size for mmv CUDA kernels") +option(LLAMA_CUDA_F16 "llama: use 16 bit floats for some calculations" OFF) +set(LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for Q2_K/Q6_K") +set(LLAMA_CUDA_PEER_MAX_BATCH_SIZE "128" CACHE STRING + "llama: max. batch size for using peer access") +option(LLAMA_HIPBLAS "llama: use hipBLAS" OFF) +option(LLAMA_CLBLAST "llama: use CLBlast" OFF) +option(LLAMA_METAL "llama: use Metal" ${LLAMA_METAL_DEFAULT}) +option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" OFF) +option(LLAMA_MPI "llama: use MPI" OFF) +option(LLAMA_K_QUANTS "llama: use k-quants" ON) +option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF) + +option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE}) +option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE}) +option(LLAMA_BUILD_SERVER "llama: build server example" ON) + +# +# Compile flags +# + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED true) +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED true) +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) +include(CheckCXXCompilerFlag) + +if (NOT MSVC) + if (LLAMA_SANITIZE_THREAD) + add_compile_options(-fsanitize=thread) + link_libraries(-fsanitize=thread) + endif() + + if (LLAMA_SANITIZE_ADDRESS) + add_compile_options(-fsanitize=address -fno-omit-frame-pointer) + link_libraries(-fsanitize=address) + endif() + + if (LLAMA_SANITIZE_UNDEFINED) + add_compile_options(-fsanitize=undefined) + link_libraries(-fsanitize=undefined) + endif() +endif() + +if (APPLE AND LLAMA_ACCELERATE) + find_library(ACCELERATE_FRAMEWORK Accelerate) + if (ACCELERATE_FRAMEWORK) + message(STATUS "Accelerate framework found") + + add_compile_definitions(GGML_USE_ACCELERATE) + add_compile_definitions(ACCELERATE_NEW_LAPACK) + add_compile_definitions(ACCELERATE_LAPACK_ILP64) + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK}) + else() + message(WARNING "Accelerate framework not found") + endif() +endif() + +if (LLAMA_METAL) + find_library(FOUNDATION_LIBRARY Foundation REQUIRED) + find_library(METAL_FRAMEWORK Metal REQUIRED) + find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) + + message(STATUS "Metal framework found") + set(GGML_HEADERS_METAL ggml-metal.h) + set(GGML_SOURCES_METAL ggml-metal.m) + + add_compile_definitions(GGML_USE_METAL) + if (LLAMA_METAL_NDEBUG) + add_compile_definitions(GGML_METAL_NDEBUG) + endif() + + # get full path to the file + #add_compile_definitions(GGML_METAL_DIR_KERNELS="${CMAKE_CURRENT_SOURCE_DIR}/") + + # copy ggml-metal.metal to bin directory + configure_file(ggml-metal.metal bin/ggml-metal.metal COPYONLY) + + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} + ${FOUNDATION_LIBRARY} + ${METAL_FRAMEWORK} + ${METALKIT_FRAMEWORK} + ) +endif() +if (LLAMA_BLAS) + if (LLAMA_STATIC) + set(BLA_STATIC ON) + endif() + if ($(CMAKE_VERSION) VERSION_GREATER_EQUAL 3.22) + set(BLA_SIZEOF_INTEGER 8) + endif() + + set(BLA_VENDOR ${LLAMA_BLAS_VENDOR}) + find_package(BLAS) + + if (BLAS_FOUND) + message(STATUS "BLAS found, Libraries: ${BLAS_LIBRARIES}") + + if ("${BLAS_INCLUDE_DIRS}" STREQUAL "") + # BLAS_INCLUDE_DIRS is missing in FindBLAS.cmake. + # see https://gitlab.kitware.com/cmake/cmake/-/issues/20268 + find_package(PkgConfig REQUIRED) + if (${LLAMA_BLAS_VENDOR} MATCHES "Generic") + pkg_check_modules(DepBLAS REQUIRED blas) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "OpenBLAS") + pkg_check_modules(DepBLAS REQUIRED openblas) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "FLAME") + pkg_check_modules(DepBLAS REQUIRED blis) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "ATLAS") + pkg_check_modules(DepBLAS REQUIRED blas-atlas) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "FlexiBLAS") + pkg_check_modules(DepBLAS REQUIRED flexiblas_api) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "Intel") + # all Intel* libraries share the same include path + pkg_check_modules(DepBLAS REQUIRED mkl-sdl) + elseif (${LLAMA_BLAS_VENDOR} MATCHES "NVHPC") + # this doesn't provide pkg-config + # suggest to assign BLAS_INCLUDE_DIRS on your own + if ("${NVHPC_VERSION}" STREQUAL "") + message(WARNING "Better to set NVHPC_VERSION") + else() + set(DepBLAS_FOUND ON) + set(DepBLAS_INCLUDE_DIRS "/opt/nvidia/hpc_sdk/${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}/${NVHPC_VERSION}/math_libs/include") + endif() + endif() + if (DepBLAS_FOUND) + set(BLAS_INCLUDE_DIRS ${DepBLAS_INCLUDE_DIRS}) + else() + message(WARNING "BLAS_INCLUDE_DIRS neither been provided nor been automatically" + " detected by pkgconfig, trying to find cblas.h from possible paths...") + find_path(BLAS_INCLUDE_DIRS + NAMES cblas.h + HINTS + /usr/include + /usr/local/include + /usr/include/openblas + /opt/homebrew/opt/openblas/include + /usr/local/opt/openblas/include + /usr/include/x86_64-linux-gnu/openblas/include + ) + endif() + endif() + + message(STATUS "BLAS found, Includes: ${BLAS_INCLUDE_DIRS}") + add_compile_options(${BLAS_LINKER_FLAGS}) + add_compile_definitions(GGML_USE_OPENBLAS) + if (${BLAS_INCLUDE_DIRS} MATCHES "mkl" AND (${LLAMA_BLAS_VENDOR} MATCHES "Generic" OR ${LLAMA_BLAS_VENDOR} MATCHES "Intel")) + add_compile_definitions(GGML_BLAS_USE_MKL) + endif() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${BLAS_LIBRARIES}) + set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${BLAS_INCLUDE_DIRS}) + + else() + message(WARNING "BLAS not found, please refer to " + "https://cmake.org/cmake/help/latest/module/FindBLAS.html#blas-lapack-vendors" + " to set correct LLAMA_BLAS_VENDOR") + endif() +endif() + +if (LLAMA_K_QUANTS) + set(GGML_HEADERS_EXTRA k_quants.h) + set(GGML_SOURCES_EXTRA k_quants.c) + add_compile_definitions(GGML_USE_K_QUANTS) + if (LLAMA_QKK_64) + add_compile_definitions(GGML_QKK_64) + endif() +endif() + +if (LLAMA_CUBLAS) + cmake_minimum_required(VERSION 3.17) + + find_package(CUDAToolkit) + if (CUDAToolkit_FOUND) + message(STATUS "cuBLAS found") + + enable_language(CUDA) + + set(GGML_HEADERS_CUDA ggml-cuda.h) + set(GGML_SOURCES_CUDA ggml-cuda.cu) + + add_compile_definitions(GGML_USE_CUBLAS) +# if (LLAMA_CUDA_CUBLAS) +# add_compile_definitions(GGML_CUDA_CUBLAS) +# endif() + if (LLAMA_CUDA_FORCE_DMMV) + add_compile_definitions(GGML_CUDA_FORCE_DMMV) + endif() + add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) + add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) + if (DEFINED LLAMA_CUDA_DMMV_Y) + add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_DMMV_Y}) # for backwards compatibility + endif() + if (LLAMA_CUDA_F16 OR LLAMA_CUDA_DMMV_F16) + add_compile_definitions(GGML_CUDA_F16) + endif() + add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) + add_compile_definitions(GGML_CUDA_PEER_MAX_BATCH_SIZE=${LLAMA_CUDA_PEER_MAX_BATCH_SIZE}) + + if (LLAMA_STATIC) + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static) + else() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt) + endif() + + if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES) + # 52 == lowest CUDA 12 standard + # 60 == f16 CUDA intrinsics + # 61 == integer CUDA intrinsics + # 70 == compute capability at which unrolling a loop in mul_mat_q kernels is faster + if (LLAMA_CUDA_F16 OR LLAMA_CUDA_DMMV_F16) + set(CMAKE_CUDA_ARCHITECTURES "60;61;70") # needed for f16 CUDA intrinsics + else() + set(CMAKE_CUDA_ARCHITECTURES "52;61;70") # lowest CUDA 12 standard + lowest for integer intrinsics + endif() + endif() + message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}") + + else() + message(WARNING "cuBLAS not found") + endif() +endif() + +if (LLAMA_MPI) + cmake_minimum_required(VERSION 3.10) + find_package(MPI) + if (MPI_C_FOUND) + message(STATUS "MPI found") + set(GGML_HEADERS_MPI ggml-mpi.h) + set(GGML_SOURCES_MPI ggml-mpi.c ggml-mpi.h) + add_compile_definitions(GGML_USE_MPI) + add_compile_definitions(${MPI_C_COMPILE_DEFINITIONS}) + if (NOT MSVC) + add_compile_options(-Wno-cast-qual) + endif() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_C_LIBRARIES}) + set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${MPI_C_INCLUDE_DIRS}) + # Even if you're only using the C header, C++ programs may bring in MPI + # C++ functions, so more linkage is needed + if (MPI_CXX_FOUND) + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_CXX_LIBRARIES}) + endif() + else() + message(WARNING "MPI not found") + endif() +endif() + +if (LLAMA_CLBLAST) + find_package(CLBlast) + if (CLBlast_FOUND) + message(STATUS "CLBlast found") + + set(GGML_HEADERS_OPENCL ggml-opencl.h) + set(GGML_SOURCES_OPENCL ggml-opencl.cpp) + + add_compile_definitions(GGML_USE_CLBLAST) + + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} clblast) + else() + message(WARNING "CLBlast not found") + endif() +endif() + +if (LLAMA_HIPBLAS) + list(APPEND CMAKE_PREFIX_PATH /opt/rocm) + + if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang") + message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang") + endif() + if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++") + endif() + + find_package(hip) + find_package(hipblas) + find_package(rocblas) + + if (${hipblas_FOUND} AND ${hip_FOUND}) + message(STATUS "HIP and hipBLAS found") + add_compile_definitions(GGML_USE_HIPBLAS GGML_USE_CUBLAS) + add_library(ggml-rocm OBJECT ggml-cuda.cu ggml-cuda.h) + if (BUILD_SHARED_LIBS) + set_target_properties(ggml-rocm PROPERTIES POSITION_INDEPENDENT_CODE ON) + endif() + if (LLAMA_CUDA_FORCE_DMMV) + target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_FORCE_DMMV) + endif() + target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) + target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) + target_compile_definitions(ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) + set_source_files_properties(ggml-cuda.cu PROPERTIES LANGUAGE CXX) + target_link_libraries(ggml-rocm PRIVATE hip::device PUBLIC hip::host roc::rocblas roc::hipblas) + + if (LLAMA_STATIC) + message(FATAL_ERROR "Static linking not supported for HIP/ROCm") + endif() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ggml-rocm) + else() + message(WARNING "hipBLAS or HIP not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm") + endif() +endif() + +if (LLAMA_ALL_WARNINGS) + if (NOT MSVC) + set(warning_flags -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) + set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int + -Werror=implicit-function-declaration) + set(cxx_flags -Wmissing-declarations -Wmissing-noreturn) + set(host_cxx_flags "") + + if (CMAKE_C_COMPILER_ID MATCHES "Clang") + set(warning_flags ${warning_flags} -Wunreachable-code-break -Wunreachable-code-return) + set(host_cxx_flags ${host_cxx_flags} -Wmissing-prototypes -Wextra-semi) + + if ( + (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.8.0) OR + (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 7.3.0) + ) + set(c_flags ${c_flags} -Wdouble-promotion) + endif() + elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU") + set(c_flags ${c_flags} -Wdouble-promotion) + set(host_cxx_flags ${host_cxx_flags} -Wno-array-bounds) + + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.1.0) + set(host_cxx_flags ${host_cxx_flags} -Wno-format-truncation) + endif() + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1.0) + set(host_cxx_flags ${host_cxx_flags} -Wextra-semi) + endif() + endif() + else() + # todo : msvc + endif() + + set(c_flags ${c_flags} ${warning_flags}) + set(cxx_flags ${cxx_flags} ${warning_flags}) + add_compile_options("$<$:${c_flags}>" + "$<$:${cxx_flags} ${host_cxx_flags}>") + +endif() + +if (NOT MSVC) + set(cuda_flags -Wno-pedantic) +endif() +set(cuda_flags ${cxx_flags} -use_fast_math ${cuda_flags}) + +list(JOIN host_cxx_flags " " cuda_host_flags) # pass host compiler flags as a single argument +if (NOT cuda_host_flags STREQUAL "") + set(cuda_flags ${cuda_flags} -Xcompiler ${cuda_host_flags}) +endif() + +add_compile_options("$<$:${cuda_flags}>") + +if (WIN32) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) + + if (BUILD_SHARED_LIBS) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + endif() +endif() + +if (LLAMA_LTO) + include(CheckIPOSupported) + check_ipo_supported(RESULT result OUTPUT output) + if (result) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) + else() + message(WARNING "IPO is not supported: ${output}") + endif() +endif() + +# Architecture specific +# TODO: probably these flags need to be tweaked on some architectures +# feel free to update the Makefile for your architecture and send a pull request or issue +message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") +if (MSVC) + string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" CMAKE_GENERATOR_PLATFORM_LWR) + message(STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}") +else () + set(CMAKE_GENERATOR_PLATFORM_LWR "") +endif () + +if (NOT MSVC) + if (LLAMA_STATIC) + add_link_options(-static) + if (MINGW) + add_link_options(-static-libgcc -static-libstdc++) + endif() + endif() + if (LLAMA_GPROF) + add_compile_options(-pg) + endif() +endif() + +if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR ("${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "arm64")) + message(STATUS "ARM detected") + if (MSVC) + add_compile_definitions(__ARM_NEON) + add_compile_definitions(__ARM_FEATURE_FMA) + add_compile_definitions(__ARM_FEATURE_DOTPROD) + # add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) # MSVC doesn't support vdupq_n_f16, vld1q_f16, vst1q_f16 + add_compile_definitions(__aarch64__) # MSVC defines _M_ARM64 instead + else() + check_cxx_compiler_flag(-mfp16-format=ieee COMPILER_SUPPORTS_FP16_FORMAT_I3E) + if (NOT "${COMPILER_SUPPORTS_FP16_FORMAT_I3E}" STREQUAL "") + add_compile_options(-mfp16-format=ieee) + endif() + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6") + # Raspberry Pi 1, Zero + add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access) + endif() + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7") + # Raspberry Pi 2 + add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access -funsafe-math-optimizations) + endif() + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv8") + # Raspberry Pi 3, 4, Zero 2 (32-bit) + add_compile_options(-mno-unaligned-access) + endif() + endif() +elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "^(x86_64|i686|amd64|x64)$" ) + message(STATUS "x86 detected") + if (MSVC) + if (LLAMA_AVX512) + add_compile_options($<$:/arch:AVX512>) + add_compile_options($<$:/arch:AVX512>) + # MSVC has no compile-time flags enabling specific + # AVX512 extensions, neither it defines the + # macros corresponding to the extensions. + # Do it manually. + if (LLAMA_AVX512_VBMI) + add_compile_definitions($<$:__AVX512VBMI__>) + add_compile_definitions($<$:__AVX512VBMI__>) + endif() + if (LLAMA_AVX512_VNNI) + add_compile_definitions($<$:__AVX512VNNI__>) + add_compile_definitions($<$:__AVX512VNNI__>) + endif() + elseif (LLAMA_AVX2) + add_compile_options($<$:/arch:AVX2>) + add_compile_options($<$:/arch:AVX2>) + elseif (LLAMA_AVX) + add_compile_options($<$:/arch:AVX>) + add_compile_options($<$:/arch:AVX>) + endif() + else() + if (LLAMA_NATIVE) + add_compile_options(-march=native) + endif() + if (LLAMA_F16C) + add_compile_options(-mf16c) + endif() + if (LLAMA_FMA) + add_compile_options(-mfma) + endif() + if (LLAMA_AVX) + add_compile_options(-mavx) + endif() + if (LLAMA_AVX2) + add_compile_options(-mavx2) + endif() + if (LLAMA_AVX512) + add_compile_options(-mavx512f) + add_compile_options(-mavx512bw) + endif() + if (LLAMA_AVX512_VBMI) + add_compile_options(-mavx512vbmi) + endif() + if (LLAMA_AVX512_VNNI) + add_compile_options(-mavx512vnni) + endif() + endif() +elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") + message(STATUS "PowerPC detected") + add_compile_options(-mcpu=native -mtune=native) + #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be) +else() + message(STATUS "Unknown architecture") +endif() + +# +# POSIX conformance +# + +# clock_gettime came in POSIX.1b (1993) +# CLOCK_MONOTONIC came in POSIX.1-2001 / SUSv3 as optional +# posix_memalign came in POSIX.1-2001 / SUSv3 +# M_PI is an XSI extension since POSIX.1-2001 / SUSv3, came in XPG1 (1985) +add_compile_definitions(_XOPEN_SOURCE=600) + +# Somehow in OpenBSD whenever POSIX conformance is specified +# some string functions rely on locale_t availability, +# which was introduced in POSIX.1-2008, forcing us to go higher +if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") + remove_definitions(-D_XOPEN_SOURCE=600) + add_compile_definitions(_XOPEN_SOURCE=700) +endif() + +# Data types, macros and functions related to controlling CPU affinity and +# some memory allocation are available on Linux through GNU extensions in libc +if (CMAKE_SYSTEM_NAME MATCHES "Linux") + add_compile_definitions(_GNU_SOURCE) +endif() + +# RLIMIT_MEMLOCK came in BSD, is not specified in POSIX.1, +# and on macOS its availability depends on enabling Darwin extensions +# similarly on DragonFly, enabling BSD extensions is necessary +if ( + CMAKE_SYSTEM_NAME MATCHES "Darwin" OR + CMAKE_SYSTEM_NAME MATCHES "iOS" OR + CMAKE_SYSTEM_NAME MATCHES "tvOS" OR + CMAKE_SYSTEM_NAME MATCHES "DragonFly" +) + add_compile_definitions(_DARWIN_C_SOURCE) +endif() + +# alloca is a non-standard interface that is not visible on BSDs when +# POSIX conformance is specified, but not all of them provide a clean way +# to enable it in such cases +if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + add_compile_definitions(__BSD_VISIBLE) +endif() +if (CMAKE_SYSTEM_NAME MATCHES "NetBSD") + add_compile_definitions(_NETBSD_SOURCE) +endif() +if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") + add_compile_definitions(_BSD_SOURCE) +endif() diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index ea16e36c..4fd30066 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -442,8 +442,25 @@ static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) return ret; } +// format incomplete utf-8 multibyte character for output +static std::string tokens_to_output_formatted_string(const llama_context *ctx, const llama_token token) +{ + std::string out = token == -1 ? "" : llama_token_to_piece(ctx, token); + // if the size is 1 and first bit is 1, meaning it's a partial character + // (size > 1 meaning it's already a known token) + if (out.size() == 1 && (out[0] & 0x80) == 0x80) + { + std::stringstream ss; + ss << std::hex << (out[0] & 0xff); + std::string res(ss.str()); + out = "byte: \\x" + res; + } + return out; +} + struct jllama_context { + bool stream = false; bool has_next_token = false; std::string generated_text; std::vector generated_token_probs; @@ -511,8 +528,7 @@ struct jllama_context n_remain = 0; n_past = 0; - if (grammar != nullptr) - { + if (grammar != nullptr) { llama_grammar_free(grammar); grammar = nullptr; } @@ -524,11 +540,9 @@ struct jllama_context std::tie(model, ctx) = llama_init_from_gpt_params(params); if (model == nullptr) { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "unable to load model", nullptr); - // LOG_ERROR("unable to load model", {{"model", params_.model}}); + std::cerr << "unable to load model " << params.model << std::endl; return false; } - n_ctx = llama_n_ctx(ctx); last_n_tokens.resize(n_ctx); std::fill(last_n_tokens.begin(), last_n_tokens.end(), 0); @@ -537,31 +551,24 @@ struct jllama_context std::vector tokenize(std::string prompt, bool add_bos) const { - // If `add_bos` is true, we only add BOS, when json_prompt is a string, - // or the first element of the json_prompt array is a string. return ::llama_tokenize(ctx, prompt, add_bos); } bool loadGrammar() { - if (!params.grammar.empty()) - { + if (!params.grammar.empty()) { parsed_grammar = grammar_parser::parse(params.grammar.c_str()); // will be empty (default) if there are parse errors - if (parsed_grammar.rules.empty()) - { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error", nullptr); - // LOG_ERROR("grammar parse error", {{"grammar", params.grammar}}); + if (parsed_grammar.rules.empty()) { + std::cerr << "grammar parse error " << params.grammar << std::endl; return false; } grammar_parser::print_grammar(stderr, parsed_grammar); { auto it = params.logit_bias.find(llama_token_eos(ctx)); - if (it != params.logit_bias.end() && it->second == -INFINITY) - { - jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail", nullptr); - // LOG_WARNING("EOS token is disabled, which will cause most grammars to fail", {}); + if (it != params.logit_bias.end() && it->second == -INFINITY) { + std::cerr << "EOS token is disabled, which will cause most grammars to fail" << std::endl; } } @@ -572,9 +579,60 @@ struct jllama_context return true; } + void loadInfill() + { + auto prefix_tokens = tokenize(params.input_prefix, true); // always add BOS + auto suffix_tokens = tokenize(params.input_suffix, true); // always add BOS + prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(ctx)); + prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(ctx)); + prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); + prefix_tokens.push_back(llama_token_middle(ctx)); + auto prompt_tokens = prefix_tokens; + + num_prompt_tokens = prompt_tokens.size(); + + if (params.n_keep < 0) + { + params.n_keep = (int)num_prompt_tokens; + } + params.n_keep = std::min(params.n_ctx - 4, params.n_keep); + + // if input prompt is too big, truncate like normal + if (num_prompt_tokens >= (size_t)params.n_ctx) + { + printf("Input prompt is too big, truncating. Can only take %d tokens but got %zu\n", params.n_ctx, num_prompt_tokens); + // todo we probably want to cut from both sides + const int n_left = (params.n_ctx - params.n_keep) / 2; + std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); + const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; + new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); + std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); + + truncated = true; + prompt_tokens = new_tokens; + } + else + { + const size_t ps = num_prompt_tokens; + std::fill(last_n_tokens.begin(), last_n_tokens.end() - ps, 0); + std::copy(prompt_tokens.begin(), prompt_tokens.end(), last_n_tokens.end() - ps); + } + + // compare the evaluated prompt with the new prompt + n_past = common_part(embd, prompt_tokens); + embd = prompt_tokens; + if (n_past == num_prompt_tokens) + { + // we have to evaluate at least 1 token to generate logits. + printf("we have to evaluate at least 1 token to generate logits\n"); + n_past--; + } + + has_next_token = true; + } void loadPrompt() { - auto prompt_tokens = tokenize(prompt, true); // always add BOS + auto prompt_tokens = tokenize(prompt, true); // always add BOS num_prompt_tokens = prompt_tokens.size(); @@ -593,13 +651,6 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - // LOG_VERBOSE("input truncated", { - // {"n_ctx", n_ctx}, - // {"n_keep", params.n_keep}, - // {"n_left", n_left}, - // {"new_tokens", tokens_to_str(ctx, new_tokens.cbegin(), new_tokens.cend())}, - // }); - truncated = true; prompt_tokens = new_tokens; } @@ -614,7 +665,7 @@ struct jllama_context n_past = common_part(embd, prompt_tokens); // since #3228 we now have to manually manage the KV cache - llama_kv_cache_seq_rm(ctx, 0, n_past, params.n_ctx); + llama_kv_cache_seq_rm(ctx, 0, n_past, -1); embd = prompt_tokens; if (n_past == num_prompt_tokens) @@ -623,12 +674,6 @@ struct jllama_context n_past--; } - // LOG_VERBOSE("prompt ingested", { - // {"n_past", n_past}, - // {"cached", tokens_to_str(ctx, embd.cbegin(), embd.cbegin() + n_past)}, - // {"to_eval", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, - // }); - has_next_token = true; } @@ -648,10 +693,10 @@ struct jllama_context { // Shift context - const int n_left = n_past - params.n_keep - 1; - const int n_discard = n_left / 2; + const int n_left = n_past - params.n_keep - 1; + const int n_discard = n_left/2; - llama_kv_cache_seq_rm(ctx, 0, params.n_keep + 1, params.n_keep + n_discard + 1); + llama_kv_cache_seq_rm (ctx, 0, params.n_keep + 1 , params.n_keep + n_discard + 1); llama_kv_cache_seq_shift(ctx, 0, params.n_keep + 1 + n_discard, n_past, -n_discard); for (size_t i = params.n_keep + 1 + n_discard; i < embd.size(); i++) @@ -663,16 +708,13 @@ struct jllama_context n_past -= n_discard; truncated = true; -// LOG_VERBOSE("input truncated", { -// {"n_ctx", n_ctx}, -// {"n_keep", params.n_keep}, -// {"n_left", n_left}, -// }); } + bool tg = true; while (n_past < embd.size()) { int n_eval = (int)embd.size() - n_past; + tg = n_eval == 1; if (n_eval > params.n_batch) { n_eval = params.n_batch; @@ -680,11 +722,11 @@ struct jllama_context if (llama_decode(ctx, llama_batch_get_one(&embd[n_past], n_eval, n_past, 0))) { -// LOG_ERROR("failed to eval", { -// {"n_eval", n_eval}, -// {"n_past", n_past}, -// {"embd", tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend())}, -// }); + std::cerr + << "failed to eval n_eval=" << n_eval + << " n_past=" << n_past + << " embd=" << tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend()) + << std::endl; has_next_token = false; return result; } @@ -698,100 +740,20 @@ struct jllama_context return result; } - // out of user input, sample next token - const float temp = params.temp; - const int32_t top_k = params.top_k <= 0 ? llama_n_vocab(model) : params.top_k; - const float top_p = params.top_p; - const float tfs_z = params.tfs_z; - const float typical_p = params.typical_p; - const int32_t repeat_last_n = params.repeat_last_n < 0 ? n_ctx : params.repeat_last_n; - const float repeat_penalty = params.repeat_penalty; - const float alpha_presence = params.presence_penalty; - const float alpha_frequency = params.frequency_penalty; - const int mirostat = params.mirostat; - const float mirostat_tau = params.mirostat_tau; - const float mirostat_eta = params.mirostat_eta; - const bool penalize_nl = params.penalize_nl; - const int32_t n_probs = params.n_probs; - { - auto *logits = llama_get_logits(ctx); - auto n_vocab = llama_n_vocab(model); - - // Apply params.logit_bias map - for (const auto &it : params.logit_bias) - { - logits[it.first] += it.second; - } - + // out of user input, sample next token std::vector candidates; - candidates.reserve(n_vocab); - for (llama_token token_id = 0; token_id < n_vocab; token_id++) - { - candidates.emplace_back(llama_token_data{token_id, logits[token_id], 0.0f}); - } + candidates.reserve(llama_n_vocab(model)); - llama_token_data_array candidates_p = {candidates.data(), candidates.size(), false}; - - // Apply penalties - float nl_logit = logits[llama_token_nl(ctx)]; - auto last_n_repeat = std::min(std::min((int)last_n_tokens.size(), repeat_last_n), n_ctx); - llama_sample_repetition_penalty(ctx, &candidates_p, - last_n_tokens.data() + last_n_tokens.size() - last_n_repeat, - last_n_repeat, repeat_penalty); - llama_sample_frequency_and_presence_penalties(ctx, &candidates_p, - last_n_tokens.data() + last_n_tokens.size() - last_n_repeat, - last_n_repeat, alpha_frequency, alpha_presence); - if (!penalize_nl) - { - logits[llama_token_nl(ctx)] = nl_logit; - } + result.tok = llama_sample_token(ctx, NULL, grammar, params, last_n_tokens, candidates); - if (grammar != nullptr) - { - llama_sample_grammar(ctx, &candidates_p, grammar); - } - - if (temp <= 0) - { - // Greedy sampling - result.tok = llama_sample_token_greedy(ctx, &candidates_p); - if (n_probs > 0) - { - llama_sample_softmax(ctx, &candidates_p); - } - } - else - { - if (mirostat == 1) - { - static float mirostat_mu = 2.0f * mirostat_tau; - const int mirostat_m = 100; - llama_sample_temp(ctx, &candidates_p, temp); - result.tok = llama_sample_token_mirostat(ctx, &candidates_p, mirostat_tau, mirostat_eta, mirostat_m, &mirostat_mu); - } - else if (mirostat == 2) - { - static float mirostat_mu = 2.0f * mirostat_tau; - llama_sample_temp(ctx, &candidates_p, temp); - result.tok = llama_sample_token_mirostat_v2(ctx, &candidates_p, mirostat_tau, mirostat_eta, &mirostat_mu); - } - else - { - // Temperature sampling - size_t min_keep = std::max(1, n_probs); - llama_sample_top_k(ctx, &candidates_p, top_k, min_keep); - llama_sample_tail_free(ctx, &candidates_p, tfs_z, min_keep); - llama_sample_typical(ctx, &candidates_p, typical_p, min_keep); - llama_sample_top_p(ctx, &candidates_p, top_p, min_keep); - llama_sample_temp(ctx, &candidates_p, temp); - result.tok = llama_sample_token(ctx, &candidates_p); - } - } + llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false }; - if (grammar != nullptr) + const int32_t n_probs = params.n_probs; + if (params.temp <= 0 && n_probs > 0) { - llama_grammar_accept_token(ctx, grammar, result.tok); + // For llama_sample_token_greedy we need to sort candidates + llama_sample_softmax(ctx, &candidates_p); } for (size_t i = 0; i < std::min(candidates_p.size, (size_t)n_probs); ++i) @@ -801,7 +763,9 @@ struct jllama_context last_n_tokens.erase(last_n_tokens.begin()); last_n_tokens.push_back(result.tok); - num_tokens_predicted++; + if (tg) { + num_tokens_predicted++; + } } // add it to the context @@ -814,7 +778,6 @@ struct jllama_context // stopping_word = llama_token_to_piece(ctx, embd.back()); has_next_token = false; stopped_eos = true; -// LOG_VERBOSE("eos token found", {}); return result; } @@ -905,18 +868,6 @@ struct jllama_context stopped_limit = true; } - // LOG_VERBOSE("next token", { - // {"token", token_with_probs.tok}, - // {"token_text", tokens_to_output_formatted_string(ctx, token_with_probs.tok)}, - // {"has_next_token", has_next_token}, - // {"n_remain", n_remain}, - // {"num_tokens_predicted", num_tokens_predicted}, - // {"stopped_eos", stopped_eos}, - // {"stopped_word", stopped_word}, - // {"stopped_limit", stopped_limit}, - // {"stopping_word", stopping_word}, - // }); - return token_with_probs; } @@ -925,10 +876,7 @@ struct jllama_context static const int n_embd = llama_n_embd(model); if (!params.embedding) { - jllama_log_callback(GGML_LOG_LEVEL_WARN, "embedding disabled", nullptr); - // LOG_WARNING("embedding disabled", { - // {"params.embedding", params.embedding}, - // }); + std::cerr << "embedding disabled" << std::endl; return std::vector(n_embd, 0.0f); } const float *data = llama_get_embeddings(ctx); From 23a75b76611235cbe7c5f9ea1a4c36860b7ff8e9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 23:02:35 +0200 Subject: [PATCH 033/384] Separate linux arm64 build workflow --- .github/workflows/release.yaml | 72 +++++++++++++++------------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 47e7b786..21ce702b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,22 +14,9 @@ jobs: - { name: Linux, arch: x86_64, - docker-arch: linux/amd64, - docker-image: "eclipse-temurin:11", image: ubuntu-latest, cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" } - - { - # Sure do love the many ways to refer to ARM 64 bit - # The platform passed to docker must be linux/arm64 to pull in the right image - # But then we need aarch64 for the CMake invocation. Maybe we can switch CMake to using arm64? - name: Linux, - docker-arch: linux/arm64, - docker-image: "eclipse-temurin:11", - arch: aarch64, - image: ubuntu-latest, - cmake: "-DCMAKE_CXX_FLAGS='-march=armv8-a'" - } - { name: Mac, arch: x86_64, @@ -48,42 +35,18 @@ jobs: image: windows-latest, cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" } - # - { - # name: Windows, - # arch: aarch64, - # image: windows-latest, - # cmake: "-DCMAKE_GENERATOR_PLATFORM=ARM64" - # } steps: - name: Checkout Repository uses: actions/checkout@v4 with: submodules: recursive - - name: Set up QEMU - if: ${{ matrix.target.name == 'Linux' }} - uses: docker/setup-qemu-action@v3 - with: - platforms: ${{ matrix.target.docker-arch }} - name: CMake (Windows) if: ${{ matrix.target.name == 'Windows' }} shell: cmd run: | cd scripts && .\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: CMake (Linux) - if: ${{ matrix.target.name == 'Linux' }} - run: | - docker run \ - --rm \ - -v $(pwd):/${{ github.workspace }} \ - -w ${{ github.workspace }} \ - --platform ${{ matrix.target.docker-arch }} \ - ${{ matrix.target.docker-image }} \ - sh -c "apt-get update && apt-get install -y cmake openjdk-11-jdk git build-essential && cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }}" - # The above apt-get commands can be moved to a Dockerfile, but then - # the image needs to be built for the docker-arch architecture, - # which means using the docker/setup-buildx-action - - name: CMake (Mac) - if: ${{ matrix.target.name == 'Mac' }} + - name: CMake (Unix) + if: ${{ matrix.target.name != 'Windows' }} shell: bash run: | cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} @@ -99,8 +62,37 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + build-linux-arm64: + name: Build Linux-aarch64 + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: linux/arm64 + - name: CMake (Linux) + run: | + docker run \ + --rm \ + -v $(pwd):/${{ github.workspace }} \ + -w ${{ github.workspace }} \ + --platform linux/arm64 \ + ${{ matrix.target.docker-image }} \ + sh -c "apt-get update && apt-get install -y cmake openjdk-11-jdk git build-essential && cd scripts && ./build.sh -DCMAKE_CXX_FLAGS='-march=armv8-a' -DOS_NAME=Linux -DOS_ARCH=aarch64" + # The above apt-get commands can be moved to a Dockerfile, but then + # the image needs to be built for the docker-arch architecture, + # which means using the docker/setup-buildx-action + - name: Upload Unix Artifact + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ publish: - needs: [build] + needs: [build,build-linux-arm64] runs-on: ubuntu-latest steps: - name: Checkout Repository From 0e7f9fb57501bf9d89824603028a5892fa0e48f7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 23:03:22 +0200 Subject: [PATCH 034/384] Bump version --- README.md | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e9f14cee..4f00ea90 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1291](https://img.shields.io/badge/llama.cpp-%23b1291-informational) +![llama.cpp b1354](https://img.shields.io/badge/llama.cpp-%23b1354-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.0.1 + 2.1.0 ``` diff --git a/pom.xml b/pom.xml index f7037e9b..9bae8bbb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.0.2 + 2.1.0 jar ${project.groupId}:${project.artifactId} From 89631624bd2530268e4b9c5f430680e1afa2e61b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 23:10:23 +0200 Subject: [PATCH 035/384] Replace missing variable in build workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 21ce702b..ab549525 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -81,7 +81,7 @@ jobs: -v $(pwd):/${{ github.workspace }} \ -w ${{ github.workspace }} \ --platform linux/arm64 \ - ${{ matrix.target.docker-image }} \ + eclipse-temurin:11 \ sh -c "apt-get update && apt-get install -y cmake openjdk-11-jdk git build-essential && cd scripts && ./build.sh -DCMAKE_CXX_FLAGS='-march=armv8-a' -DOS_NAME=Linux -DOS_ARCH=aarch64" # The above apt-get commands can be moved to a Dockerfile, but then # the image needs to be built for the docker-arch architecture, From 960bee8657ed0f7623a18bb8c0c8f5cc2bdbc393 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 23:27:51 +0200 Subject: [PATCH 036/384] Add llama.cpp submodule --- src/main/cpp/llama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/cpp/llama.cpp b/src/main/cpp/llama.cpp index 8781013e..db3abcc1 160000 --- a/src/main/cpp/llama.cpp +++ b/src/main/cpp/llama.cpp @@ -1 +1 @@ -Subproject commit 8781013ef654270cbead3e0011e33a6d690fb168 +Subproject commit db3abcc114d5d1790ba814aa1a80ac673d4ccc3e From ca23bdabdb615d994cbf09d8c07c5021bee0b889 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 8 Oct 2023 23:38:53 +0200 Subject: [PATCH 037/384] Fix macos cmake missing file --- build-args.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index 1081d35f..91cfed98 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -133,9 +133,6 @@ if (LLAMA_METAL) # get full path to the file #add_compile_definitions(GGML_METAL_DIR_KERNELS="${CMAKE_CURRENT_SOURCE_DIR}/") - # copy ggml-metal.metal to bin directory - configure_file(ggml-metal.metal bin/ggml-metal.metal COPYONLY) - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} From e90a0b1451eda717ed6dac5f6eea8aff7fa10e12 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 9 Oct 2023 00:00:26 +0200 Subject: [PATCH 038/384] Fix cmake file extra libs --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 414910a0..c604e5bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ add_subdirectory( src/main/cpp/llama.cpp ) -target_link_libraries(jllama PRIVATE common llama) +target_link_libraries(jllama PRIVATE common llama ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) From 3a58715d967aabd2359ab76aa6cada10e7834d5c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:02:50 +0200 Subject: [PATCH 039/384] Multiple fixes and updates, including infilling --- build-args.cmake | 17 +- src/main/cpp/jllama.cpp | 501 +++++++++++------- src/main/cpp/jllama.h | 40 +- src/main/cpp/llama.cpp | 2 +- .../de/kherud/llama/InferenceParameters.java | 2 +- src/main/java/de/kherud/llama/LlamaModel.java | 64 ++- .../java/de/kherud/llama/LlamaModelTest.java | 180 +++++++ src/test/java/examples/InfillExample.java | 26 + src/test/java/examples/MainExample.java | 3 + 9 files changed, 600 insertions(+), 235 deletions(-) create mode 100644 src/test/java/de/kherud/llama/LlamaModelTest.java create mode 100644 src/test/java/examples/InfillExample.java diff --git a/build-args.cmake b/build-args.cmake index 91cfed98..73e432cc 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -1,14 +1,3 @@ -cmake_minimum_required(VERSION 3.13) # for add_link_options - -if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif() - -# -# Option list -# - if (APPLE) set(LLAMA_METAL_DEFAULT ON) else() @@ -359,8 +348,7 @@ endif() if (LLAMA_ALL_WARNINGS) if (NOT MSVC) set(warning_flags -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) - set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int - -Werror=implicit-function-declaration) + set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int -Werror=implicit-function-declaration) set(cxx_flags -Wmissing-declarations -Wmissing-noreturn) set(host_cxx_flags "") @@ -392,7 +380,8 @@ if (LLAMA_ALL_WARNINGS) set(c_flags ${c_flags} ${warning_flags}) set(cxx_flags ${cxx_flags} ${warning_flags}) add_compile_options("$<$:${c_flags}>" - "$<$:${cxx_flags} ${host_cxx_flags}>") + "$<$:${cxx_flags}>" + "$<$:${host_cxx_flags}>") endif() diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 4fd30066..f3938497 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,13 +1,14 @@ -#include "llama.h" -#include "jllama.h" -#include "common.h" -#include "grammar-parser.h" - #include #include #include #include +#include "llama.h" +#include "jllama.h" +#include "common.h" +#include "build-info.h" +#include "grammar-parser.h" + // classes static jclass c_llama_model = 0; static jclass c_llama_iterator = 0; @@ -142,24 +143,25 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) } // create references - c_llama_model = (jclass)env->NewWeakGlobalRef(c_llama_model); - c_llama_iterator = (jclass)env->NewWeakGlobalRef(c_llama_iterator); - c_infer_params = (jclass)env->NewWeakGlobalRef(c_infer_params); - c_model_params = (jclass)env->NewWeakGlobalRef(c_model_params); - c_string = (jclass)env->NewWeakGlobalRef(c_string); - c_map = (jclass)env->NewWeakGlobalRef(c_map); - c_set = (jclass)env->NewWeakGlobalRef(c_set); - c_entry = (jclass)env->NewWeakGlobalRef(c_entry); - c_iterator = (jclass)env->NewWeakGlobalRef(c_iterator); - c_integer = (jclass)env->NewWeakGlobalRef(c_integer); - c_float = (jclass)env->NewWeakGlobalRef(c_float); - c_log_level = (jclass)env->NewWeakGlobalRef(c_log_level); - c_biconsumer = (jclass)env->NewWeakGlobalRef(c_biconsumer); - c_llama_error = (jclass)env->NewWeakGlobalRef(c_llama_error); - c_error_oom = (jclass)env->NewWeakGlobalRef(c_error_oom); + c_llama_model = (jclass)env->NewGlobalRef(c_llama_model); + c_llama_iterator = (jclass)env->NewGlobalRef(c_llama_iterator); + c_infer_params = (jclass)env->NewGlobalRef(c_infer_params); + c_model_params = (jclass)env->NewGlobalRef(c_model_params); + c_string = (jclass)env->NewGlobalRef(c_string); + c_map = (jclass)env->NewGlobalRef(c_map); + c_set = (jclass)env->NewGlobalRef(c_set); + c_entry = (jclass)env->NewGlobalRef(c_entry); + c_iterator = (jclass)env->NewGlobalRef(c_iterator); + c_integer = (jclass)env->NewGlobalRef(c_integer); + c_float = (jclass)env->NewGlobalRef(c_float); + c_log_level = (jclass)env->NewGlobalRef(c_log_level); + c_biconsumer = (jclass)env->NewGlobalRef(c_biconsumer); + c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); + c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); // find methods - m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/nio/charset/Charset;)[B"); +// m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/nio/charset/Charset;)[B"); + m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); m_entry_set = env->GetMethodID(c_map, "entrySet", "()Ljava/util/Set;"); m_set_iterator = env->GetMethodID(c_set, "iterator", "()Ljava/util/Iterator;"); m_iterator_has_next = env->GetMethodID(c_iterator, "hasNext", "()Z"); @@ -254,7 +256,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } - o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); +// o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); + o_utf_8 = env->NewStringUTF("UTF-8"); + o_utf_8 = (jclass)env->NewGlobalRef(o_utf_8); o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); @@ -287,21 +291,22 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) return; - env->DeleteWeakGlobalRef(c_llama_model); - env->DeleteWeakGlobalRef(c_llama_iterator); - env->DeleteWeakGlobalRef(c_infer_params); - env->DeleteWeakGlobalRef(c_model_params); - env->DeleteWeakGlobalRef(c_string); - env->DeleteWeakGlobalRef(c_map); - env->DeleteWeakGlobalRef(c_set); - env->DeleteWeakGlobalRef(c_entry); - env->DeleteWeakGlobalRef(c_iterator); - env->DeleteWeakGlobalRef(c_integer); - env->DeleteWeakGlobalRef(c_float); - env->DeleteWeakGlobalRef(c_log_level); - env->DeleteWeakGlobalRef(c_biconsumer); - env->DeleteWeakGlobalRef(c_llama_error); - env->DeleteWeakGlobalRef(c_error_oom); + env->DeleteGlobalRef(c_llama_model); + env->DeleteGlobalRef(c_llama_iterator); + env->DeleteGlobalRef(c_infer_params); + env->DeleteGlobalRef(c_model_params); + env->DeleteGlobalRef(c_string); + env->DeleteGlobalRef(c_map); + env->DeleteGlobalRef(c_set); + env->DeleteGlobalRef(c_entry); + env->DeleteGlobalRef(c_iterator); + env->DeleteGlobalRef(c_integer); + env->DeleteGlobalRef(c_float); + env->DeleteGlobalRef(c_log_level); + env->DeleteGlobalRef(c_biconsumer); + env->DeleteGlobalRef(c_llama_error); + env->DeleteGlobalRef(c_error_oom); + env->DeleteGlobalRef(o_utf_8); } static void jllama_log_callback(enum ggml_log_level level, const char *text, void *user_data) @@ -336,6 +341,10 @@ static void jllama_log_callback(enum ggml_log_level level, const char *text, voi env->DeleteLocalRef(java_text); } +static void jllama_log_callback(enum ggml_log_level level, std::string text) { + jllama_log_callback(level, text.c_str(), nullptr); +} + static std::string parse_jstring(JNIEnv *env, jstring java_string) { const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); @@ -365,7 +374,7 @@ static float parse_jfloat(JNIEnv *env, jobject java_float) return env->CallFloatMethod(java_float, m_float_value); } -// Since Java expects utf16 but std::strings are utf8, we cant directly use `env->NewString` or `env-NewString`, but +// Since Java expects utf16 but std::strings are utf8, we can't directly use `env->NewString` or `env-NewString`, but // we simply send the bytes directly and do the conversion in Java. Unfortunately, there isn't a nice/standardized way // to do this conversion in C++ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) @@ -460,7 +469,6 @@ static std::string tokens_to_output_formatted_string(const llama_context *ctx, c struct jllama_context { - bool stream = false; bool has_next_token = false; std::string generated_text; std::vector generated_token_probs; @@ -477,6 +485,7 @@ struct jllama_context llama_model *model = nullptr; llama_context *ctx = nullptr; gpt_params params; + llama_sampling_context ctx_sampling; int n_ctx; grammar_parser::parse_state parsed_grammar; @@ -508,6 +517,11 @@ struct jllama_context llama_free_model(model); model = nullptr; } + if (grammar) + { + llama_grammar_free(grammar); + grammar = nullptr; + } } void rewind() @@ -531,6 +545,7 @@ struct jllama_context if (grammar != nullptr) { llama_grammar_free(grammar); grammar = nullptr; + ctx_sampling = llama_sampling_context_init(params, NULL); } } @@ -540,7 +555,6 @@ struct jllama_context std::tie(model, ctx) = llama_init_from_gpt_params(params); if (model == nullptr) { - std::cerr << "unable to load model " << params.model << std::endl; return false; } n_ctx = llama_n_ctx(ctx); @@ -560,15 +574,15 @@ struct jllama_context parsed_grammar = grammar_parser::parse(params.grammar.c_str()); // will be empty (default) if there are parse errors if (parsed_grammar.rules.empty()) { - std::cerr << "grammar parse error " << params.grammar << std::endl; + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error"); return false; } grammar_parser::print_grammar(stderr, parsed_grammar); { - auto it = params.logit_bias.find(llama_token_eos(ctx)); - if (it != params.logit_bias.end() && it->second == -INFINITY) { - std::cerr << "EOS token is disabled, which will cause most grammars to fail" << std::endl; + auto it = params.sampling_params.logit_bias.find(llama_token_eos(ctx)); + if (it != params.sampling_params.logit_bias.end() && it->second == -INFINITY) { + jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail"); } } @@ -576,14 +590,26 @@ struct jllama_context grammar = llama_grammar_init( grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); } + ctx_sampling = llama_sampling_context_init(params, grammar); return true; } void loadInfill() { - auto prefix_tokens = tokenize(params.input_prefix, true); // always add BOS - auto suffix_tokens = tokenize(params.input_suffix, true); // always add BOS + bool suff_rm_leading_spc = true; + if (params.input_suffix.find_first_of(" ") == 0 && params.input_suffix.size() > 1) { + params.input_suffix.erase(0, 1); + suff_rm_leading_spc = false; + } + + auto prefix_tokens = tokenize(params.input_prefix, false); + auto suffix_tokens = tokenize(params.input_suffix, false); + const int space_token = 29871; + if (suff_rm_leading_spc && suffix_tokens[0] == space_token) { + suffix_tokens.erase(suffix_tokens.begin()); + } prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(ctx)); + prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(ctx)); // always add BOS prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(ctx)); prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); prefix_tokens.push_back(llama_token_middle(ctx)); @@ -600,7 +626,6 @@ struct jllama_context // if input prompt is too big, truncate like normal if (num_prompt_tokens >= (size_t)params.n_ctx) { - printf("Input prompt is too big, truncating. Can only take %d tokens but got %zu\n", params.n_ctx, num_prompt_tokens); // todo we probably want to cut from both sides const int n_left = (params.n_ctx - params.n_keep) / 2; std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); @@ -608,6 +633,8 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); + truncated = true; prompt_tokens = new_tokens; } @@ -621,15 +648,19 @@ struct jllama_context // compare the evaluated prompt with the new prompt n_past = common_part(embd, prompt_tokens); embd = prompt_tokens; + if (n_past == num_prompt_tokens) { // we have to evaluate at least 1 token to generate logits. - printf("we have to evaluate at least 1 token to generate logits\n"); n_past--; } + // since #3228 we now have to manually manage the KV cache + llama_kv_cache_seq_rm(ctx, 0, n_past, -1); + has_next_token = true; } + void loadPrompt() { auto prompt_tokens = tokenize(prompt, true); // always add BOS @@ -651,6 +682,8 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); + truncated = true; prompt_tokens = new_tokens; } @@ -664,9 +697,6 @@ struct jllama_context // compare the evaluated prompt with the new prompt n_past = common_part(embd, prompt_tokens); - // since #3228 we now have to manually manage the KV cache - llama_kv_cache_seq_rm(ctx, 0, n_past, -1); - embd = prompt_tokens; if (n_past == num_prompt_tokens) { @@ -674,6 +704,9 @@ struct jllama_context n_past--; } + // since #3228 we now have to manually manage the KV cache + llama_kv_cache_seq_rm(ctx, 0, n_past, -1); + has_next_token = true; } @@ -708,6 +741,7 @@ struct jllama_context n_past -= n_discard; truncated = true; + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); } bool tg = true; @@ -722,11 +756,7 @@ struct jllama_context if (llama_decode(ctx, llama_batch_get_one(&embd[n_past], n_eval, n_past, 0))) { - std::cerr - << "failed to eval n_eval=" << n_eval - << " n_past=" << n_past - << " embd=" << tokens_to_str(ctx, embd.cbegin() + n_past, embd.cend()) - << std::endl; + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "failed to eval n_eval=" + n_eval); has_next_token = false; return result; } @@ -745,12 +775,12 @@ struct jllama_context std::vector candidates; candidates.reserve(llama_n_vocab(model)); - result.tok = llama_sample_token(ctx, NULL, grammar, params, last_n_tokens, candidates); + result.tok = llama_sampling_sample(ctx, NULL, ctx_sampling, last_n_tokens, candidates); llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false }; - const int32_t n_probs = params.n_probs; - if (params.temp <= 0 && n_probs > 0) + const int32_t n_probs = params.sampling_params.n_probs; + if (params.sampling_params.temp <= 0 && n_probs > 0) { // For llama_sample_token_greedy we need to sort candidates llama_sample_softmax(ctx, &candidates_p); @@ -824,7 +854,7 @@ struct jllama_context const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); generated_text += token_text; - if (params.n_probs > 0) + if (params.sampling_params.n_probs > 0) { generated_token_probs.push_back(token_with_probs); } @@ -876,7 +906,7 @@ struct jllama_context static const int n_embd = llama_n_embd(model); if (!params.embedding) { - std::cerr << "embedding disabled" << std::endl; + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "embedding disabled"); return std::vector(n_embd, 0.0f); } const float *data = llama_get_embeddings(ctx); @@ -982,45 +1012,52 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ return params; } -static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) +static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jparams) { - llama->prompt = parse_jstring(env, prompt); - llama->params.n_predict = env->GetIntField(params, f_n_predict); - llama->params.n_keep = env->GetIntField(params, f_n_keep); - llama->params.n_probs = env->GetIntField(params, f_n_probs); - llama->params.top_k = env->GetIntField(params, f_top_k); - llama->params.top_p = env->GetFloatField(params, f_top_p); - llama->params.tfs_z = env->GetFloatField(params, f_tfs_z); - llama->params.typical_p = env->GetFloatField(params, f_typical_p); - llama->params.temp = env->GetFloatField(params, f_temperature); - llama->params.repeat_penalty = env->GetFloatField(params, f_repeat_penalty); - llama->params.repeat_last_n = env->GetIntField(params, f_repeat_last_n); - llama->params.frequency_penalty = env->GetFloatField(params, f_frequency_penalty); - llama->params.presence_penalty = env->GetFloatField(params, f_presence_penalty); - llama->params.penalize_nl = env->GetBooleanField(params, f_penalize_nl); - llama->params.mirostat = env->GetIntField(params, f_mirostat); - llama->params.mirostat_tau = env->GetFloatField(params, f_mirostat_tau); - llama->params.mirostat_eta = env->GetFloatField(params, f_mirostat_eta); - llama->params.seed = env->GetIntField(params, f_infer_seed); - - jstring j_grammar = (jstring)env->GetObjectField(params, f_grammar); + auto & params = llama->params; + + params.seed = env->GetIntField(jparams, f_infer_seed); + params.n_predict = env->GetIntField(jparams, f_n_predict); + params.n_keep = env->GetIntField(jparams, f_n_keep); + + auto & sparams = params.sampling_params; + + sparams.top_k = env->GetIntField(jparams, f_top_k); + sparams.top_p = env->GetFloatField(jparams, f_top_p); + sparams.tfs_z = env->GetFloatField(jparams, f_tfs_z); + sparams.typical_p = env->GetFloatField(jparams, f_typical_p); + sparams.temp = env->GetFloatField(jparams, f_temperature); + sparams.repeat_penalty = env->GetFloatField(jparams, f_repeat_penalty); + sparams.repeat_last_n = env->GetIntField(jparams, f_repeat_last_n); + sparams.frequency_penalty = env->GetFloatField(jparams, f_frequency_penalty); + sparams.presence_penalty = env->GetFloatField(jparams, f_presence_penalty); + sparams.penalize_nl = env->GetBooleanField(jparams, f_penalize_nl); + sparams.mirostat = env->GetIntField(jparams, f_mirostat); + sparams.mirostat_tau = env->GetFloatField(jparams, f_mirostat_tau); + sparams.mirostat_eta = env->GetFloatField(jparams, f_mirostat_eta); + sparams.n_probs = env->GetIntField(jparams, f_n_probs); + + jstring j_grammar = (jstring)env->GetObjectField(jparams, f_grammar); if (j_grammar != nullptr) { - llama->params.grammar = parse_jstring(env, j_grammar); + params.grammar = parse_jstring(env, j_grammar); env->DeleteLocalRef(j_grammar); + if (!llama->loadGrammar()) + { + env->ThrowNew(c_llama_error, "could not load grammar"); + } } - llama->params.logit_bias.clear(); - jboolean ignore_eos = env->GetBooleanField(params, f_ignore_eos); + sparams.logit_bias.clear(); + jboolean ignore_eos = env->GetBooleanField(jparams, f_ignore_eos); if (ignore_eos) { - llama->params.logit_bias[llama_token_eos(llama->ctx)] = -INFINITY; + sparams.logit_bias[llama_token_eos(llama->ctx)] = -INFINITY; } - jobject logit_bias = env->GetObjectField(params, f_logit_bias); + jobject logit_bias = env->GetObjectField(jparams, f_logit_bias); if (logit_bias != nullptr) { - const int n_vocab = llama_n_vocab(llama->model); jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); while (env->CallBooleanMethod(iterator, m_iterator_has_next)) @@ -1031,7 +1068,7 @@ static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring p int tok = parse_jinteger(env, key); float bias = parse_jfloat(env, value); - llama->params.logit_bias[tok] = bias; + sparams.logit_bias[tok] = bias; env->DeleteLocalRef(entry); env->DeleteLocalRef(key); @@ -1039,8 +1076,8 @@ static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring p } } - llama->params.antiprompt.clear(); - jobjectArray antiprompt = (jobjectArray)env->GetObjectField(params, f_antiprompt); + params.antiprompt.clear(); + jobjectArray antiprompt = (jobjectArray)env->GetObjectField(jparams, f_antiprompt); if (antiprompt != nullptr) { jsize array_length = env->GetArrayLength(antiprompt); @@ -1050,19 +1087,29 @@ static void parse_inference_params(JNIEnv *env, jllama_context *llama, jstring p if (java_string != nullptr) { std::string string = parse_jstring(env, java_string); - llama->params.antiprompt.push_back(string); + params.antiprompt.push_back(string); env->DeleteLocalRef(java_string); } } } - // LOG_VERBOSE("completion parameters parsed", format_generation_settings(*llama)); + llama->ctx_sampling = llama_sampling_context_init(params, llama->grammar); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_getSystemInfo(JNIEnv *env, jobject obj) +static void setup_answering(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) { - const char *sys_info = llama_print_system_info(); - return env->NewStringUTF(sys_info); + llama->prompt = parse_jstring(env, prompt); + llama->params.input_prefix = ""; + llama->params.input_suffix = ""; + setup_infer_params(env, llama, params); +} + +static void setup_infilling(JNIEnv *env, jllama_context *llama, jstring prefix, jstring suffix, jobject params) +{ + llama->prompt = ""; + llama->params.input_prefix = parse_jstring(env, prefix); + llama->params.input_suffix = parse_jstring(env, suffix); + setup_infer_params(env, llama, params); } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, jobject jparams) @@ -1078,39 +1125,49 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } - // LOG_INFO("build info", {{"build", BUILD_NUMBER}, - // {"commit", BUILD_COMMIT}}); - // LOG_INFO("system info", { - // {"n_threads", params.n_threads}, - // {"total_threads", std::thread::hardware_concurrency()}, - // {"system_info", llama_print_system_info()}, - // }); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "build=" + BUILD_NUMBER); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "commit=" + BUILD_COMMIT); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "n_threads=" + params.n_threads); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "total_threads=" + std::thread::hardware_concurrency()); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "system_info=" + llama_print_system_info()); env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference(JNIEnv *env, jobject obj, jstring prompt, jobject params) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, jobject params) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); - auto lock = llama->lock(); +// auto lock = llama->lock(); llama->rewind(); llama_reset_timings(llama->ctx); - parse_inference_params(env, llama, prompt, params); - - if (!llama->loadGrammar()) - { - env->ThrowNew(c_llama_error, "could not load grammar"); - } + setup_answering(env, llama, prompt, params); llama->loadPrompt(); llama->beginCompletion(); } +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, jstring suffix, jobject params) +{ + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + +// auto lock = llama->lock(); + + llama->rewind(); + + llama_reset_timings(llama->ctx); + + setup_infilling(env, llama, prefix, suffix, params); + + llama->loadInfill(); + llama->beginCompletion(); +} + JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); @@ -1132,48 +1189,44 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env size_t pos = std::min(sent_count, llama->generated_text.size()); - const std::string str_test = llama->generated_text.substr(pos); - bool is_stop_full = false; - size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); - if (stop_pos != std::string::npos) - { - is_stop_full = true; - llama->generated_text.erase( - llama->generated_text.begin() + pos + stop_pos, - llama->generated_text.end()); - pos = std::min(sent_count, llama->generated_text.size()); - } - else - { - is_stop_full = false; - stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); - } + const std::string str_test = llama->generated_text.substr(pos); + bool is_stop_full = false; + size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); + if (stop_pos != std::string::npos) { + is_stop_full = true; + llama->generated_text.erase( + llama->generated_text.begin() + pos + stop_pos, + llama->generated_text.end()); + pos = std::min(sent_count, llama->generated_text.size()); + } else { + is_stop_full = false; + stop_pos = llama->findStoppingStrings(str_test, token_text.size(), + STOP_PARTIAL); + } std::string to_send; - if (stop_pos == std::string::npos || (!llama->has_next_token && !is_stop_full && stop_pos > 0)) - { - to_send = llama->generated_text.substr(pos, std::string::npos); - sent_count += to_send.size(); - env->SetLongField(iter, f_iter_n_generated, sent_count); - - std::vector probs_output = {}; - - if (llama->params.n_probs > 0) - { - const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); - size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); - size_t probs_stop_pos = std::min( - sent_token_probs_index + to_send_toks.size(), - llama->generated_token_probs.size()); - if (probs_pos < probs_stop_pos) - { - probs_output = std::vector( - llama->generated_token_probs.begin() + probs_pos, - llama->generated_token_probs.begin() + probs_stop_pos); - } - sent_token_probs_index = probs_stop_pos; - env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); - } + if ( + stop_pos == std::string::npos || + // Send rest of the text if we are at the end of the generation + (!llama->has_next_token && !is_stop_full && stop_pos > 0) + ) { + to_send = llama->generated_text.substr(pos, std::string::npos); + + sent_count += to_send.size(); + env->SetLongField(iter, f_iter_n_generated, sent_count); + + std::vector probs_output = {}; + + if (llama->params.sampling_params.n_probs > 0) { + const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); + size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); + size_t probs_stop_pos = std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); + if (probs_pos < probs_stop_pos) { + probs_output = std::vector(llama->generated_token_probs.begin() + probs_pos, llama->generated_token_probs.begin() + probs_stop_pos); + } + sent_token_probs_index = probs_stop_pos; + env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); + } } else { @@ -1183,75 +1236,109 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env if (!llama->has_next_token) { env->SetLongField(iter, f_iter_has_next, false); + // llama.mutex.unlock(); + // lock.release(); } return parse_jbytes(env, to_send); } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull(JNIEnv *env, jobject obj, jstring prompt, jobject params) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, jobject params) { - Java_de_kherud_llama_LlamaModel_setupInference(env, obj, prompt, params); - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); + +// auto lock = llama->lock(); + + llama->rewind(); + + llama_reset_timings(llama->ctx); + + setup_answering(env, llama, prompt, params); + + llama->loadPrompt(); + llama->beginCompletion(); size_t stop_pos = std::string::npos; - while (llama->has_next_token) - { - const completion_token_output token_with_probs = llama->doCompletion(); - const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); + while (llama->has_next_token) { + const completion_token_output token_with_probs = llama->doCompletion(); + const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - stop_pos = llama->findStoppingStrings(llama->generated_text, - token_text.size(), STOP_FULL); - } + stop_pos = llama->findStoppingStrings(llama->generated_text, + token_text.size(), STOP_FULL); + } - if (stop_pos == std::string::npos) - { - stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); - } - if (stop_pos != std::string::npos) - { - llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); - } + if (stop_pos == std::string::npos) { + stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); + } + if (stop_pos != std::string::npos) { + llama->generated_text.erase(llama->generated_text.begin() + stop_pos, + llama->generated_text.end()); + } - auto probs = llama->generated_token_probs; - if (llama->params.n_probs > 0 && llama->stopped_word) - { - const std::vector stop_word_toks = llama_tokenize(llama->ctx, llama->stopping_word, false); - probs = std::vector(llama->generated_token_probs.begin(), llama->generated_token_probs.end() - stop_word_toks.size()); - } +// llama->lock().release(); +// llama->mutex.unlock(); + + return parse_jbytes(env, llama->generated_text); +} + +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, jstring suffix, jobject params) +{ + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + +// auto lock = llama->lock(); + + llama->rewind(); + + llama_reset_timings(llama->ctx); + + setup_infilling(env, llama, prefix, suffix, params); + + llama->loadInfill(); + llama->beginCompletion(); + + size_t stop_pos = std::string::npos; + + while (llama->has_next_token) { + const completion_token_output token_with_probs = llama->doCompletion(); + const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - llama_print_timings(llama->ctx); + stop_pos = llama->findStoppingStrings(llama->generated_text, + token_text.size(), STOP_FULL); + } - // llama->lock().release(); - // llama->mutex.unlock(); + if (stop_pos == std::string::npos) { + stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); + } + if (stop_pos != std::string::npos) { + llama->generated_text.erase(llama->generated_text.begin() + stop_pos, + llama->generated_text.end()); + } + +// llama->lock().release(); +// llama->mutex.unlock(); return parse_jbytes(env, llama->generated_text); } JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) { - // auto lock = llama.lock(); jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); - llama->rewind(); - llama_reset_timings(llama->ctx); - llama->prompt = parse_jstring(env, java_prompt); - llama->params.n_predict = 0; - llama->loadPrompt(); - llama->beginCompletion(); - llama->doCompletion(); +// auto lock = llama->lock(); + + llama->rewind(); + llama_reset_timings(llama->ctx); + llama->prompt = parse_jstring(env, java_prompt); + llama->params.n_predict = 0; + llama->loadPrompt(); + llama->beginCompletion(); + llama->doCompletion(); static const int n_embd = llama_n_embd(llama->model); - // if (!llama->params.embedding) - // { - // // LOG_WARNING("embedding disabled", { - // // {"params.embedding", params.embedding}, - // // }); - // return std::vector(n_embd, 0.0f); - // } const float *data = llama_get_embeddings(llama->ctx); std::vector embedding(data, data + n_embd); @@ -1267,14 +1354,14 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, return java_embedding; } -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring java_prompt) +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); - // auto lock = llama->lock(); +// auto lock = llama->lock(); - std::string prompt = parse_jstring(env, java_prompt); + std::string prompt = parse_jstring(env, jprompt); std::vector tokens = llama->tokenize(prompt, false); jintArray java_tokens = env->NewIntArray(tokens.size()); @@ -1286,15 +1373,16 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); - // lock.release(); +// lock.release(); return java_tokens; } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, jintArray java_tokens) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, jintArray java_tokens) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); - // auto lock = llama.lock(); + +// auto lock = llama->lock(); jsize length = env->GetArrayLength(java_tokens); jint *elements = env->GetIntArrayElements(java_tokens, nullptr); @@ -1303,7 +1391,8 @@ JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *en env->ReleaseIntArrayElements(java_tokens, elements, 0); - return env->NewString((jchar *)text.data(), text.size()); +// lock.release(); + return parse_jbytes(env, text); } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) @@ -1325,3 +1414,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc llama_log_set(jllama_log_callback, nullptr); } } + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv * env, jobject obj) { + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + delete llama; +} diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index ddd432b2..4fa3e81e 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -23,14 +23,6 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode (JNIEnv *, jobject, jstring); -/* - * Class: de_kherud_llama_LlamaModel - * Method: decode - * Signature: ([I)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes - (JNIEnv *, jobject, jintArray); - /* * Class: de_kherud_llama_LlamaModel * Method: setLogger @@ -49,20 +41,36 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel /* * Class: de_kherud_llama_LlamaModel - * Method: setupInference + * Method: newAnswerIterator * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setupInference +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator (JNIEnv *, jobject, jstring, jobject); /* * Class: de_kherud_llama_LlamaModel - * Method: getFull + * Method: newInfillIterator + * Signature: (Ljava/lang/String;Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator + (JNIEnv *, jobject, jstring, jstring, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: getAnswer * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)[B */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer (JNIEnv *, jobject, jstring, jobject); +/* + * Class: de_kherud_llama_LlamaModel + * Method: getInfill + * Signature: (Ljava/lang/String;Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill + (JNIEnv *, jobject, jstring, jstring, jobject); + /* * Class: de_kherud_llama_LlamaModel * Method: getNext @@ -71,6 +79,14 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getFull JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext (JNIEnv *, jobject, jobject); +/* + * Class: de_kherud_llama_LlamaModel + * Method: decodeBytes + * Signature: ([I)[B + */ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes + (JNIEnv *, jobject, jintArray); + /* * Class: de_kherud_llama_LlamaModel * Method: delete diff --git a/src/main/cpp/llama.cpp b/src/main/cpp/llama.cpp index db3abcc1..11bff290 160000 --- a/src/main/cpp/llama.cpp +++ b/src/main/cpp/llama.cpp @@ -1 +1 @@ -Subproject commit db3abcc114d5d1790ba814aa1a80ac673d4ccc3e +Subproject commit 11bff290458f12f020b588792707f76ec658a27a diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 6235c82e..c0aba97f 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -281,7 +281,7 @@ public Builder setGrammar(@Nullable String grammar) { return this; } - public Builder setAntiPrompt(@NotNull String[] antiPrompt) { + public Builder setAntiPrompt(@NotNull String... antiPrompt) { this.antiPrompt = antiPrompt; return this; } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 9bdddb87..fac01987 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -73,7 +73,32 @@ public String complete(String prompt) { * @return an LLM response */ public String complete(String prompt, InferenceParameters parameters) { - byte[] bytes = getFull(prompt, parameters); + byte[] bytes = getAnswer(prompt, parameters); + return new String(bytes, StandardCharsets.UTF_8); + } + + /** + * Infill a whole answer with default parameters. Note, that the prompt isn't preprocessed in any + * way. Nothing like "User: ", "###Instruction", etc. is added. + * + * @param prefix the prefix prompt of the completion to infill + * @param suffix the suffix prompt of the completion to infill + * @return an LLM response + */ + public String complete(String prefix, String suffix) { + return complete(prefix, suffix, defaultInferenceParams); + } + + /** + * Infill a whole answer with custom parameters. Note, that the prompt isn't preprocessed in any + * way. Nothing like "User: ", "###Instruction", etc. is added. + * + * @param prefix the prefix prompt of the completion to infill + * @param suffix the suffix prompt of the completion to infill + * @return an LLM response + */ + public String complete(String prefix, String suffix, InferenceParameters parameters) { + byte[] bytes = getInfill(prefix, suffix, parameters); return new String(bytes, StandardCharsets.UTF_8); } @@ -99,6 +124,30 @@ public Iterable generate(String prompt, InferenceParameters parameters) return () -> new LlamaIterator(prompt, parameters); } + /** + * Infill and stream outputs with default inference parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prefix the prefix prompt of the completion to infill + * @param suffix the suffix prompt of the completion to infill + * @return iterable LLM outputs + */ + public Iterable generate(String prefix, String suffix) { + return generate(prefix, suffix, defaultInferenceParams); + } + + /** + * Infill and stream outputs with custom inference parameters. Note, that the prompt isn't preprocessed in any + * way, nothing like "User: ", "###Instruction", etc. is added. + * + * @param prefix the prefix prompt of the completion to infill + * @param suffix the suffix prompt of the completion to infill + * @return iterable LLM outputs + */ + public Iterable generate(String prefix, String suffix, InferenceParameters parameters) { + return () -> new LlamaIterator(prefix, suffix, parameters); + } + /** * Get the embedding of a string. Note, that the prompt isn't preprocessed in any way, nothing like * "User: ", "###Instruction", etc. is added. @@ -140,9 +189,12 @@ public void close() { delete(); } + // don't overload native methods since the C++ function names get nasty private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; - private native void setupInference(String prompt, InferenceParameters parameters); - private native byte[] getFull(String prompt, InferenceParameters parameters); + private native void newAnswerIterator(String prompt, InferenceParameters parameters); + private native void newInfillIterator(String prefix, String suffix, InferenceParameters parameters); + private native byte[] getAnswer(String prompt, InferenceParameters parameters); + private native byte[] getInfill(String prefix, String suffix, InferenceParameters parameters); private native byte[] getNext(LlamaIterator iterator); private native byte[] decodeBytes(int[] tokens); private native void delete(); @@ -159,7 +211,11 @@ private final class LlamaIterator implements Iterator { private long tokenIndex = 0; private LlamaIterator(String prompt, InferenceParameters parameters) { - setupInference(prompt, parameters); + newAnswerIterator(prompt, parameters); + } + + private LlamaIterator(String prefix, String suffix, InferenceParameters parameters) { + newInfillIterator(prefix, suffix, parameters); } @Override diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java new file mode 100644 index 00000000..ff2050da --- /dev/null +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -0,0 +1,180 @@ +package de.kherud.llama; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +@Ignore +public class LlamaModelTest { + + private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; + private static final String suffix = "\n return result\n"; + private static String logOutput = ""; + + private static LlamaModel model; + + @BeforeClass + public static void setup() { + LlamaModel.setLogger((level, msg) -> logOutput += msg); + ModelParameters params = new ModelParameters.Builder() + .setNGpuLayers(43) + .setEmbedding(true) + .build(); + model = new LlamaModel("/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf", params); + } + + @AfterClass + public static void tearDown() { + model.close(); + } + + @Test + public void testLogOutput() { + Assert.assertFalse(logOutput.isEmpty()); + } + + @Test + public void testGenerateAnswerDefault() { + int generated = 0; + for (String ignored : model.generate(prefix)) { + generated++; + } + Assert.assertTrue(generated > 0); + } + + @Test + public void testGenerateAnswerCustom() { + Map logitBias = new HashMap<>(); + logitBias.put(2, 2.0f); + InferenceParameters params = new InferenceParameters.Builder() + .setTemperature(0.95f) + .setAntiPrompt("\"\"\"") + .setLogitBias(logitBias) + .setSeed(42) + .build(); + + int generated = 0; + for (String ignored : model.generate(prefix, params)) { + generated++; + } + Assert.assertTrue(generated > 0); + } + + @Test + public void testGenerateInfillDefault() { + int generated = 0; + for (String ignored : model.generate(prefix, suffix)) { + generated++; + } + Assert.assertTrue(generated > 0); + } + + @Test + public void testGenerateInfillCustom() { + Map logitBias = new HashMap<>(); + logitBias.put(2, 2.0f); + InferenceParameters params = new InferenceParameters.Builder() + .setTemperature(0.95f) + .setAntiPrompt("\"\"\"") + .setLogitBias(logitBias) + .setSeed(42) + .build(); + + int generated = 0; + for (String ignored : model.generate(prefix, suffix, params)) { + generated++; + } + Assert.assertTrue(generated > 0); + } + + @Test + public void testGenerateGrammar() { + InferenceParameters params = new InferenceParameters.Builder() + .setGrammar("root ::= (\"a\" | \"b\")+") + .setNPredict(42) + .build(); + StringBuilder sb = new StringBuilder(); + for (String output : model.generate("", params)) { + sb.append(output); + } + String output = sb.toString(); + + Assert.assertTrue(output.matches("[ab]+")); + Assert.assertEquals(42, model.encode(output).length); + } + + @Test + public void testCompleteAnswerDefault() { + String output = model.complete(prefix); + Assert.assertFalse(output.isEmpty()); + } + + @Test + public void testCompleteAnswerCustom() { + Map logitBias = new HashMap<>(); + logitBias.put(2, 2.0f); + InferenceParameters params = new InferenceParameters.Builder() + .setTemperature(0.95f) + .setAntiPrompt("\"\"\"") + .setLogitBias(logitBias) + .setSeed(42) + .build(); + + String output = model.complete(prefix, params); + Assert.assertFalse(output.isEmpty()); + } + + @Test + public void testCompleteInfillDefault() { + String output = model.complete(prefix, suffix); + Assert.assertFalse(output.isEmpty()); + } + + @Test + public void testCompleteInfillCustom() { + Map logitBias = new HashMap<>(); + logitBias.put(2, 2.0f); + InferenceParameters params = new InferenceParameters.Builder() + .setTemperature(0.95f) + .setAntiPrompt("\"\"\"") + .setLogitBias(logitBias) + .setSeed(42) + .build(); + + String output = model.complete(prefix, suffix, params); + Assert.assertFalse(output.isEmpty()); + } + + @Test + public void testCompleteGrammar() { + InferenceParameters params = new InferenceParameters.Builder() + .setGrammar("root ::= (\"a\" | \"b\")+") + .setNPredict(42) + .build(); + String output = model.complete("", params); + Assert.assertTrue(output.matches("[ab]+")); + Assert.assertEquals(42, model.encode(output).length); + } + + @Test + public void testEmbedding() { + float[] embedding = model.embed(prefix); + Assert.assertEquals(5120, embedding.length); + } + + @Test + public void testTokenization() { + String prompt = "Hello, world!"; + int[] encoded = model.encode(prompt); + Assert.assertArrayEquals(new int[]{15043, 29892, 3186, 29991}, encoded); + String decoded = model.decode(encoded); + // the llama tokenizer adds a space before the prompt + Assert.assertEquals(" " + prompt, decoded); + } + +} diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java new file mode 100644 index 00000000..8ca4a4c5 --- /dev/null +++ b/src/test/java/examples/InfillExample.java @@ -0,0 +1,26 @@ +package examples; + +import de.kherud.llama.LlamaModel; +import de.kherud.llama.ModelParameters; + +public class InfillExample { + + public static void main(String... args) { + LlamaModel.setLogger((level, message) -> System.out.print(message)); + ModelParameters modelParams = new ModelParameters.Builder() + .setNGpuLayers(43) + .build(); + + String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; + String suffix = "\n return result\n"; + + String modelPath = "/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf"; + try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + System.out.print(prefix); + for (String output : model.generate(prefix, suffix)) { + System.out.print(output); + } + System.out.print(suffix); + } + } +} diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 772f9d7c..a004b3f8 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -38,6 +38,9 @@ public static void main(String... args) throws IOException { prompt += input; System.out.print("Llama: "); prompt += "\nLlama: "; +// String answer = model.complete(prompt, inferParams); +// System.out.print(answer); +// prompt += answer; for (String output : model.generate(prompt, inferParams)) { System.out.print(output); prompt += output; From 049f24dfbcdfb8ec00ef3e23012e2af01d92f543 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:05:20 +0200 Subject: [PATCH 040/384] Add infilling readme note --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 4f00ea90..6d560890 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,10 @@ try (LlamaModel model = new LlamaModel("/path/to/gguf-model")) { > freed when the model is no longer needed. This isn't strictly required, but avoids memory leaks if you use different > models throughout the lifecycle of your application. +#### Infilling + +You can simply pass `prefix` and `suffix` to `generate()` or `complete()`. + ### Model/Inference Configuration There are two sets of parameters you can configure, `ModelParameters` and `InferenceParameters`. Both provide builder From c1af2b70a317d76d4843a6507b854e50e43190f0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:06:03 +0200 Subject: [PATCH 041/384] Bump version --- README.md | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d560890..5f836071 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1354](https://img.shields.io/badge/llama.cpp-%23b1354-informational) +![llama.cpp b1382](https://img.shields.io/badge/llama.cpp-%23b1382-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.1.0 + 2.2.0 ``` diff --git a/pom.xml b/pom.xml index 9bae8bbb..309ff838 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.1.0 + 2.2.0 jar ${project.groupId}:${project.artifactId} From 22b17ae51dd1af01593d5699b96d58c897942eb4 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:21:03 +0200 Subject: [PATCH 042/384] add cmake system processor debug statement --- build-args.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build-args.cmake b/build-args.cmake index 73e432cc..54bc3916 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -438,6 +438,8 @@ if (NOT MSVC) endif() endif() + +message(STATUS "CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}") if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR ("${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "arm64")) message(STATUS "ARM detected") if (MSVC) From 1dd6fc42370bbe95b96a96c869ba4503fced5d4a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:28:26 +0200 Subject: [PATCH 043/384] Update cmake macos build args --- build-args.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index 54bc3916..66a3ad43 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -439,7 +439,6 @@ if (NOT MSVC) endif() -message(STATUS "CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}") if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR ("${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "arm64")) message(STATUS "ARM detected") if (MSVC) @@ -492,7 +491,7 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE add_compile_options($<$:/arch:AVX>) endif() else() - if (LLAMA_NATIVE) + if (LLAMA_NATIVE AND NOT (APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) add_compile_options(-march=native) endif() if (LLAMA_F16C) From 873f6bc95bc11ff3df533df3b7dfbf6c54dc939d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:30:49 +0200 Subject: [PATCH 044/384] Update cmake macos build args --- build-args.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build-args.cmake b/build-args.cmake index 66a3ad43..171086d6 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -491,7 +491,8 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE add_compile_options($<$:/arch:AVX>) endif() else() - if (LLAMA_NATIVE AND NOT (APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}") + if (LLAMA_NATIVE AND NOT APPLE) add_compile_options(-march=native) endif() if (LLAMA_F16C) From 0e116fa9182d21b2d61a7b57496b8b2a9472cf56 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:33:17 +0200 Subject: [PATCH 045/384] Update cmake macos build args --- build-args.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index 171086d6..9225f52f 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -491,8 +491,7 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE add_compile_options($<$:/arch:AVX>) endif() else() - message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}") - if (LLAMA_NATIVE AND NOT APPLE) + if (LLAMA_NATIVE AND NOT CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") add_compile_options(-march=native) endif() if (LLAMA_F16C) From b1224e79ee28c44d9e639fdbe50a3ad254edf49a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:36:55 +0200 Subject: [PATCH 046/384] Update cmake macos build args --- build-args.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build-args.cmake b/build-args.cmake index 9225f52f..3e20b136 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -1,5 +1,6 @@ if (APPLE) set(LLAMA_METAL_DEFAULT ON) + set(LLAMA_NATIVE OFF) else() set(LLAMA_METAL_DEFAULT OFF) endif() @@ -491,7 +492,7 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE add_compile_options($<$:/arch:AVX>) endif() else() - if (LLAMA_NATIVE AND NOT CMAKE_CXX_COMPILER_ID MATCHES "AppleClang") + if (LLAMA_NATIVE) add_compile_options(-march=native) endif() if (LLAMA_F16C) From e9f9fa853b63642d8989e8af721296e6b8d39437 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 22:42:41 +0200 Subject: [PATCH 047/384] Update cmake macos build args --- .github/workflows/release.yaml | 4 ++-- build-args.cmake | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ab549525..526a0732 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -21,13 +21,13 @@ jobs: name: Mac, arch: x86_64, image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=x86_64" + cmake: "-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_NATIVE=OFF" } - { name: Mac, arch: aarch64, image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64" + cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_NATIVE=OFF" } - { name: Windows, diff --git a/build-args.cmake b/build-args.cmake index 3e20b136..a9e9a6ea 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -1,6 +1,5 @@ if (APPLE) set(LLAMA_METAL_DEFAULT ON) - set(LLAMA_NATIVE OFF) else() set(LLAMA_METAL_DEFAULT OFF) endif() From 20419a21f3f03e73e8908d77710f63955eb17dd2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 15 Oct 2023 23:05:58 +0200 Subject: [PATCH 048/384] cmake copy ggml metal file --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c604e5bf..27979aed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,4 +71,9 @@ else() ) endif() +if (LLAMA_METAL) + # copy ggml-metal.metal to bin directory + configure_file(src/main/cpp/llama.cpp/ggml-metal.metal ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}/ggml-metal.metal COPYONLY) +endif() + message(STATUS "Installing files to ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}") From 145b81a421af646255396fb17a0936290b6174c9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 16 Oct 2023 21:23:01 +0200 Subject: [PATCH 049/384] Add more information to generated outputs --- src/main/cpp/jllama.cpp | 44 ++++++++++++++++-- src/main/cpp/jllama.h | 16 +++---- src/main/java/de/kherud/llama/LlamaModel.java | 46 +++++++++++++++---- .../java/de/kherud/llama/LlamaModelTest.java | 10 ++-- src/test/java/examples/GrammarExample.java | 9 ++-- src/test/java/examples/InfillExample.java | 2 +- src/test/java/examples/MainExample.java | 5 +- 7 files changed, 100 insertions(+), 32 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index f3938497..23e79fa7 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -15,7 +15,9 @@ static jclass c_llama_iterator = 0; static jclass c_model_params = 0; static jclass c_infer_params = 0; static jclass c_standard_charsets = 0; +static jclass c_output = 0; static jclass c_string = 0; +static jclass c_hash_map = 0; static jclass c_map = 0; static jclass c_set = 0; static jclass c_entry = 0; @@ -27,6 +29,12 @@ static jclass c_biconsumer = 0; static jclass c_llama_error = 0; static jclass c_error_oom = 0; +// constructors +static jmethodID cc_output = 0; +static jmethodID cc_hash_map = 0; +static jmethodID cc_integer = 0; +static jmethodID cc_float = 0; + // methods static jmethodID m_get_bytes = 0; static jmethodID m_entry_set = 0; @@ -35,6 +43,7 @@ static jmethodID m_iterator_has_next = 0; static jmethodID m_iterator_next = 0; static jmethodID m_entry_key = 0; static jmethodID m_entry_value = 0; +static jmethodID m_map_put = 0; static jmethodID m_int_value = 0; static jmethodID m_float_value = 0; static jmethodID m_biconsumer_accept = 0; @@ -125,7 +134,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_infer_params = env->FindClass("de/kherud/llama/InferenceParameters"); c_model_params = env->FindClass("de/kherud/llama/ModelParameters"); c_standard_charsets = env->FindClass("java/nio/charset/StandardCharsets"); + c_output = env->FindClass("de/kherud/llama/LlamaModel$Output"); c_string = env->FindClass("java/lang/String"); + c_hash_map = env->FindClass("java/util/HashMap"); c_map = env->FindClass("java/util/Map"); c_set = env->FindClass("java/util/Set"); c_entry = env->FindClass("java/util/Map$Entry"); @@ -137,7 +148,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); - if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_string && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) + if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_output && c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) { goto error; } @@ -147,7 +158,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_iterator = (jclass)env->NewGlobalRef(c_llama_iterator); c_infer_params = (jclass)env->NewGlobalRef(c_infer_params); c_model_params = (jclass)env->NewGlobalRef(c_model_params); + c_output = (jclass)env->NewGlobalRef(c_output); c_string = (jclass)env->NewGlobalRef(c_string); + c_hash_map = (jclass)env->NewGlobalRef(c_hash_map); c_map = (jclass)env->NewGlobalRef(c_map); c_set = (jclass)env->NewGlobalRef(c_set); c_entry = (jclass)env->NewGlobalRef(c_entry); @@ -159,6 +172,17 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); + // find constructors + cc_output = env->GetMethodID(c_output, "", "(I[BLjava/util/Map;)V"); + cc_hash_map = env->GetMethodID(c_hash_map, "", "()V"); + cc_integer = env->GetMethodID(c_integer, "", "(I)V"); + cc_float = env->GetMethodID(c_float, "", "(F)V"); + + if (!(cc_output && cc_hash_map && cc_integer && cc_float)) + { + goto error; + } + // find methods // m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/nio/charset/Charset;)[B"); m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); @@ -168,11 +192,12 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) m_iterator_next = env->GetMethodID(c_iterator, "next", "()Ljava/lang/Object;"); m_entry_key = env->GetMethodID(c_entry, "getKey", "()Ljava/lang/Object;"); m_entry_value = env->GetMethodID(c_entry, "getValue", "()Ljava/lang/Object;"); + m_map_put = env->GetMethodID(c_map, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); m_int_value = env->GetMethodID(c_integer, "intValue", "()I"); m_float_value = env->GetMethodID(c_float, "floatValue", "()F"); m_biconsumer_accept = env->GetMethodID(c_biconsumer, "accept", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_int_value && m_float_value && m_biconsumer_accept)) + if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_map_put && m_int_value && m_float_value && m_biconsumer_accept)) { goto error; } @@ -295,7 +320,9 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_llama_iterator); env->DeleteGlobalRef(c_infer_params); env->DeleteGlobalRef(c_model_params); + env->DeleteGlobalRef(c_output); env->DeleteGlobalRef(c_string); + env->DeleteGlobalRef(c_hash_map); env->DeleteGlobalRef(c_map); env->DeleteGlobalRef(c_set); env->DeleteGlobalRef(c_entry); @@ -306,6 +333,7 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_biconsumer); env->DeleteGlobalRef(c_llama_error); env->DeleteGlobalRef(c_error_oom); + env->DeleteGlobalRef(o_utf_8); } @@ -1168,7 +1196,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv llama->beginCompletion(); } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); @@ -1240,7 +1268,15 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env // lock.release(); } - return parse_jbytes(env, to_send); + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + for (const auto& tp : token_with_probs.probs) + { + jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); + jobject jprob = env->NewObject(c_float, cc_float, tp.prob); + env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); + } + jbyteArray jbytes = parse_jbytes(env, to_send); + return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); } JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, jobject params) diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 4fa3e81e..859506e6 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -55,6 +55,14 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator (JNIEnv *, jobject, jstring, jstring, jobject); +/* + * Class: de_kherud_llama_LlamaModel + * Method: getNext + * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)Lde/kherud/llama/LlamaModel/Output; + */ +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext + (JNIEnv *, jobject, jobject); + /* * Class: de_kherud_llama_LlamaModel * Method: getAnswer @@ -71,14 +79,6 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill (JNIEnv *, jobject, jstring, jstring, jobject); -/* - * Class: de_kherud_llama_LlamaModel - * Method: getNext - * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)[B - */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getNext - (JNIEnv *, jobject, jobject); - /* * Class: de_kherud_llama_LlamaModel * Method: decodeBytes diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index fac01987..bb317547 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -3,9 +3,11 @@ import java.lang.annotation.Native; import java.nio.charset.StandardCharsets; import java.util.Iterator; +import java.util.Map; import java.util.NoSuchElementException; import java.util.function.BiConsumer; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** @@ -109,7 +111,7 @@ public String complete(String prefix, String suffix, InferenceParameters paramet * @param prompt the LLM prompt * @return iterable LLM outputs */ - public Iterable generate(String prompt) { + public Iterable generate(String prompt) { return generate(prompt, defaultInferenceParams); } @@ -120,7 +122,7 @@ public Iterable generate(String prompt) { * @param prompt the LLM prompt * @return iterable LLM outputs */ - public Iterable generate(String prompt, InferenceParameters parameters) { + public Iterable generate(String prompt, InferenceParameters parameters) { return () -> new LlamaIterator(prompt, parameters); } @@ -132,7 +134,7 @@ public Iterable generate(String prompt, InferenceParameters parameters) * @param suffix the suffix prompt of the completion to infill * @return iterable LLM outputs */ - public Iterable generate(String prefix, String suffix) { + public Iterable generate(String prefix, String suffix) { return generate(prefix, suffix, defaultInferenceParams); } @@ -144,7 +146,7 @@ public Iterable generate(String prefix, String suffix) { * @param suffix the suffix prompt of the completion to infill * @return iterable LLM outputs */ - public Iterable generate(String prefix, String suffix, InferenceParameters parameters) { + public Iterable generate(String prefix, String suffix, InferenceParameters parameters) { return () -> new LlamaIterator(prefix, suffix, parameters); } @@ -193,15 +195,42 @@ public void close() { private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; private native void newAnswerIterator(String prompt, InferenceParameters parameters); private native void newInfillIterator(String prefix, String suffix, InferenceParameters parameters); + private native Output getNext(LlamaIterator iterator); private native byte[] getAnswer(String prompt, InferenceParameters parameters); private native byte[] getInfill(String prefix, String suffix, InferenceParameters parameters); - private native byte[] getNext(LlamaIterator iterator); private native byte[] decodeBytes(int[] tokens); private native void delete(); + /** + * A generated output of the LLM. Note that you have to configure {@link InferenceParameters.Builder#setNPredict(int)} + * in order for probabilities to be returned. + * For multibyte outputs (unicode characters like emojis) only the last generated token and its probabilities + * are returned. + */ + public static final class Output { + + public final int token; + @NotNull + public final String text; + @NotNull + public final Map probabilities; + + private Output(int token, byte[] generated, @NotNull Map probabilities) { + this.token = token; + this.text = new String(generated, StandardCharsets.UTF_8); + this.probabilities = probabilities; + } + + @Override + public String toString() { + return text; + } + + } + // fields are modified by native code and thus should not be final @SuppressWarnings("FieldMayBeFinal") - private final class LlamaIterator implements Iterator { + private final class LlamaIterator implements Iterator { @Native private boolean hasNext = true; @@ -224,12 +253,11 @@ public boolean hasNext() { } @Override - public String next() { + public Output next() { if (!hasNext) { throw new NoSuchElementException(); } - byte[] bytes = getNext(this); - return new String(bytes, StandardCharsets.UTF_8); + return getNext(this); } } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index ff2050da..cda30cf3 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -41,7 +41,7 @@ public void testLogOutput() { @Test public void testGenerateAnswerDefault() { int generated = 0; - for (String ignored : model.generate(prefix)) { + for (LlamaModel.Output ignored : model.generate(prefix)) { generated++; } Assert.assertTrue(generated > 0); @@ -59,7 +59,7 @@ public void testGenerateAnswerCustom() { .build(); int generated = 0; - for (String ignored : model.generate(prefix, params)) { + for (LlamaModel.Output ignored : model.generate(prefix, params)) { generated++; } Assert.assertTrue(generated > 0); @@ -68,7 +68,7 @@ public void testGenerateAnswerCustom() { @Test public void testGenerateInfillDefault() { int generated = 0; - for (String ignored : model.generate(prefix, suffix)) { + for (LlamaModel.Output ignored : model.generate(prefix, suffix)) { generated++; } Assert.assertTrue(generated > 0); @@ -86,7 +86,7 @@ public void testGenerateInfillCustom() { .build(); int generated = 0; - for (String ignored : model.generate(prefix, suffix, params)) { + for (LlamaModel.Output ignored : model.generate(prefix, suffix, params)) { generated++; } Assert.assertTrue(generated > 0); @@ -99,7 +99,7 @@ public void testGenerateGrammar() { .setNPredict(42) .build(); StringBuilder sb = new StringBuilder(); - for (String output : model.generate("", params)) { + for (LlamaModel.Output output : model.generate("", params)) { sb.append(output); } String output = sb.toString(); diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 212a052b..76505337 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -1,5 +1,7 @@ package examples; +import java.util.HashMap; + import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; @@ -14,9 +16,10 @@ public static void main(String... args) { .build(); String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; - LlamaModel model = new LlamaModel(filePath); - for (String output : model.generate("", params)) { - System.out.print(output); + try (LlamaModel model = new LlamaModel(filePath)) { + for (LlamaModel.Output output : model.generate("", params)) { + System.out.print(output); + } } } diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index 8ca4a4c5..348a962d 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -17,7 +17,7 @@ public static void main(String... args) { String modelPath = "/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf"; try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { System.out.print(prefix); - for (String output : model.generate(prefix, suffix)) { + for (LlamaModel.Output output : model.generate(prefix, suffix)) { System.out.print(output); } System.out.print(suffix); diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index a004b3f8..a19dccdf 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -19,8 +19,9 @@ public static void main(String... args) throws IOException { InferenceParameters inferParams = new InferenceParameters.Builder() .setTemperature(0.7f) .setPenalizeNl(true) +// .setNProbs(10) .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt(new String[]{"\n"}) + .setAntiPrompt("\n") .build(); String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; @@ -41,7 +42,7 @@ public static void main(String... args) throws IOException { // String answer = model.complete(prompt, inferParams); // System.out.print(answer); // prompt += answer; - for (String output : model.generate(prompt, inferParams)) { + for (LlamaModel.Output output : model.generate(prompt, inferParams)) { System.out.print(output); prompt += output; } From 5fcccf6c508e2104a4ee5353287342aa68a660af Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 16 Oct 2023 21:26:41 +0200 Subject: [PATCH 050/384] bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5f836071..85f1bdd3 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Access this library via Maven: de.kherud llama - 2.2.0 + 2.2.1 ``` diff --git a/pom.xml b/pom.xml index 309ff838..099e1b8d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.2.0 + 2.2.1 jar ${project.groupId}:${project.artifactId} From 9e4da7b0028461d1b9f0f95264d676c7ddbce4e5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 16 Oct 2023 23:09:13 +0200 Subject: [PATCH 051/384] Simplify parameter handling --- src/main/cpp/jllama.cpp | 12 +- .../de/kherud/llama/InferenceParameters.java | 445 +++++++-------- src/main/java/de/kherud/llama/LlamaModel.java | 10 +- .../java/de/kherud/llama/ModelParameters.java | 540 ++++++++---------- .../java/de/kherud/llama/LlamaModelTest.java | 35 +- src/test/java/examples/GrammarExample.java | 4 +- src/test/java/examples/InfillExample.java | 5 +- src/test/java/examples/MainExample.java | 10 +- 8 files changed, 501 insertions(+), 560 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 23e79fa7..9eb81a7d 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -97,8 +97,6 @@ static jfieldID f_use_mlock = 0; static jfieldID f_embedding = 0; static jfieldID f_lora_adapter = 0; static jfieldID f_lora_base = 0; -static jfieldID f_hellaswag = 0; -static jfieldID f_hellaswag_tasks = 0; static jfieldID f_memory_f16 = 0; static jfieldID f_mem_test = 0; static jfieldID f_numa = 0; @@ -221,7 +219,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_repeat_last_n = env->GetFieldID(c_infer_params, "repeatLastN", "I"); f_frequency_penalty = env->GetFieldID(c_infer_params, "frequencyPenalty", "F"); f_presence_penalty = env->GetFieldID(c_infer_params, "presencePenalty", "F"); - f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNL", "Z"); + f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNl", "Z"); f_ignore_eos = env->GetFieldID(c_infer_params, "ignoreEos", "Z"); f_mirostat = env->GetFieldID(c_infer_params, "mirostat", "I"); f_mirostat_tau = env->GetFieldID(c_infer_params, "mirostatTau", "F"); @@ -229,7 +227,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_beam_search = env->GetFieldID(c_infer_params, "beamSearch", "Z"); f_n_beams = env->GetFieldID(c_infer_params, "nBeams", "I"); f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); - f_antiprompt = env->GetFieldID(c_infer_params, "antiprompt", "[Ljava/lang/String;"); + f_antiprompt = env->GetFieldID(c_infer_params, "antiPrompt", "[Ljava/lang/String;"); f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); @@ -250,8 +248,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_embedding = env->GetFieldID(c_model_params, "embedding", "Z"); f_lora_adapter = env->GetFieldID(c_model_params, "loraAdapter", "Ljava/lang/String;"); f_lora_base = env->GetFieldID(c_model_params, "loraBase", "Ljava/lang/String;"); - f_hellaswag = env->GetFieldID(c_model_params, "hellaswag", "Z"); - f_hellaswag_tasks = env->GetFieldID(c_model_params, "hellaswagTasks", "S"); f_memory_f16 = env->GetFieldID(c_model_params, "memoryF16", "Z"); f_mem_test = env->GetFieldID(c_model_params, "memTest", "Z"); f_numa = env->GetFieldID(c_model_params, "numa", "Z"); @@ -265,7 +261,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { goto error; } - if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_hellaswag && f_hellaswag_tasks && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) + if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) { goto error; } @@ -956,8 +952,6 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.main_gpu = env->GetIntField(jparams, f_main_gpu); params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); - params.hellaswag = env->GetBooleanField(jparams, f_hellaswag); - params.hellaswag_tasks = env->GetShortField(jparams, f_hellaswag_tasks); params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); params.memory_f16 = env->GetBooleanField(jparams, f_memory_f16); params.embedding = env->GetBooleanField(jparams, f_embedding); diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index c0aba97f..1ccb2b40 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.lang.annotation.Native; import java.util.Collections; import java.util.Map; @@ -16,280 +17,270 @@ */ public final class InferenceParameters { - public final int nPredict; // new tokens to predict - public final int nKeep; // number of tokens to keep from initial prompt - public final int nProbs; // if greater than 0, output the probabilities of top nProbs tokens. + // new tokens to predict + @Native private int nPredict = -1; + // number of tokens to keep from initial prompt + @Native private int nKeep = 0; + // if greater than 0, output the probabilities of top nProbs tokens. + @Native private int nProbs = 0; + // logit bias for specific tokens @Nullable - public final Map logitBias; // logit bias for specific tokens - public final int topK; // <= 0 to use vocab size - public final float topP; // 1.0 = disabled - public final float tfsZ; // 1.0 = disabled - public final float typicalP; // 1.0 = disabled - public final float temperature; // 1.0 = disabled - public final float repeatPenalty; // 1.0 = disabled - public final int repeatLastN; // last n tokens to penalize (0 = disable penalty, -1 = context size) - public final float frequencyPenalty; // 0.0 = disabled - public final float presencePenalty; // 0.0 = disabled - public final boolean penalizeNL; // 0.0 = disabled - public final boolean ignoreEos; - public final int mirostat; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - public final float mirostatTau; // target entropy - public final float mirostatEta; // learning rate - public final boolean beamSearch; - public final int nBeams; + @Native private Map logitBias = null; + // <= 0 to use vocab size + @Native private int topK = 40; + // 1.0 = disabled + @Native private float topP = 0.95f; + // 1.0 = disabled + @Native private float tfsZ = 1.00f; + // 1.0 = disabled + @Native private float typicalP = 1.00f; + // 1.0 = disabled + @Native private float temperature = 0.80f; + // 1.0 = disabled + @Native private float repeatPenalty = 1.10f; + // last n tokens to penalize (0 = disable penalty, -1 = context size) + @Native private int repeatLastN = 64; + // 0.0 = disabled + @Native private float frequencyPenalty = 0.00f; + // 0.0 = disabled + @Native private float presencePenalty = 0.00f; + // 0.0 = disabled + @Native private boolean penalizeNl = false; + @Native private boolean ignoreEos = false; + // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 + @Native private int mirostat = MiroStat.Disabled.level; + // target entropy + @Native private float mirostatTau = 5.00f; + // learning rate + @Native private float mirostatEta = 0.10f; + @Native private boolean beamSearch = false; + @Native private int nBeams = 2; + // optional BNF-like grammar to constrain sampling @Nullable - public final String grammar; // optional BNF-like grammar to constrain sampling + @Native private String grammar = null; + // strings upon seeing which more user input is prompted @Nullable - public final String[] antiprompt; // string upon seeing which more user input is prompted - public final int seed; - - /** - * Private constructor to build immutable parameters object. Called via {@link Builder}. - */ - private InferenceParameters( - int nPredict, - int nKeep, - int nProbs, - @Nullable Map logitBias, - int topK, - float topP, - float tfsZ, - float typicalP, - float temperature, - float repeatPenalty, - int repeatLastN, - float frequencyPenalty, - float presencePenalty, - boolean penalizeNL, - boolean ignoreEos, - MiroStat mirostat, - float mirostatTau, - float mirostatEta, - boolean beamSearch, - int nBeams, - @Nullable String grammar, - @Nullable String[] antiprompt, - int seed - ) { + @Native private String[] antiPrompt = null; + @Native private int seed = 42; + + public InferenceParameters setNPredict(int nPredict) { this.nPredict = nPredict; + return this; + } + + public InferenceParameters setNKeep(int nKeep) { this.nKeep = nKeep; + return this; + } + + public InferenceParameters setNProbs(int nProbs) { this.nProbs = nProbs; - this.logitBias = logitBias; + return this; + } + + public InferenceParameters setLogitBias(@NotNull Map logitBias) { + this.logitBias = Collections.unmodifiableMap(logitBias); + return this; + } + + public InferenceParameters setTopK(int topK) { this.topK = topK; + return this; + } + + public InferenceParameters setTopP(float topP) { this.topP = topP; + return this; + } + + public InferenceParameters setTfsZ(float tfsZ) { this.tfsZ = tfsZ; + return this; + } + + public InferenceParameters setTypicalP(float typicalP) { this.typicalP = typicalP; + return this; + } + + public InferenceParameters setTemperature(float temperature) { this.temperature = temperature; + return this; + } + + public InferenceParameters setRepeatPenalty(float repeatPenalty) { this.repeatPenalty = repeatPenalty; + return this; + } + + public InferenceParameters setRepeatLastN(int repeatLastN) { this.repeatLastN = repeatLastN; + return this; + } + + public InferenceParameters setFrequencyPenalty(float frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; + return this; + } + + public InferenceParameters setPresencePenalty(float presencePenalty) { this.presencePenalty = presencePenalty; - this.penalizeNL = penalizeNL; + return this; + } + + public InferenceParameters setPenalizeNl(boolean penalizeNl) { + this.penalizeNl = penalizeNl; + return this; + } + + public InferenceParameters setIgnoreEos(boolean ignoreEos) { this.ignoreEos = ignoreEos; - this.mirostat = mirostat.level; + return this; + } + + public InferenceParameters setMirostat(MiroStat mode) { + this.mirostat = mode.level; + return this; + } + + public InferenceParameters setMirostatTau(float mirostatTau) { this.mirostatTau = mirostatTau; + return this; + } + + public InferenceParameters setMirostatEta(float mirostatEta) { this.mirostatEta = mirostatEta; + return this; + } + + public InferenceParameters setBeamSearch(boolean beamSearch) { this.beamSearch = beamSearch; + return this; + } + + public InferenceParameters setNBeams(int nBeams) { this.nBeams = nBeams; - this.grammar = grammar; - this.antiprompt = antiprompt; - this.seed = seed; + return this; } - /** - * The builder class used for creating new {@link InferenceParameters} of a {@link LlamaModel}. - */ - public static class Builder { - - private int nPredict = -1; // new tokens to predict - private int nKeep = 0; // number of tokens to keep from initial prompt - private int nProbs = 0; // if greater than 0, output the probabilities of top nProbs tokens. - - // sampling parameters - private Map logitBias = null; // logit bias for specific tokens - private int topK = 40; // <= 0 to use vocab size - private float topP = 0.95f; // 1.0 = disabled - private float tfsZ = 1.00f; // 1.0 = disabled - private float typicalP = 1.00f; // 1.0 = disabled - private float temperature = 0.80f; // 1.0 = disabled - private float repeatPenalty = 1.10f; // 1.0 = disabled - private int repeatLastN = 64; // last n tokens to penalize (0 = disable penalty, -1 = context size) - private float frequencyPenalty = 0.00f; // 0.0 = disabled - private float presencePenalty = 0.00f; // 0.0 = disabled - private boolean penalizeNl = false; // consider newlines as a repeatable token - private boolean ignoreEos = false; - private MiroStat mirostat = MiroStat.Disabled; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - private float mirostatTau = 5.00f; // target entropy - private float mirostatEta = 0.10f; // learning rate - private boolean beamSearch = false; - private int nBeams = 2; - - private String grammar = null; // optional BNF-like grammar to constrain sampling - private String[] antiPrompt = null; // string upon seeing which more user input is prompted - - private int seed = 42; - - /** - * Constructs the immutable {@link InferenceParameters} objects with the configured options. - * Note, that all options not configured have sensible defaults. - * - * @return an immutable parameters object - */ - public InferenceParameters build() { - return new InferenceParameters( - nPredict, - nKeep, - nProbs, - logitBias, - topK, - topP, - tfsZ, - typicalP, - temperature, - repeatPenalty, - repeatLastN, - frequencyPenalty, - presencePenalty, - penalizeNl, - ignoreEos, - mirostat, - mirostatTau, - mirostatEta, - beamSearch, - nBeams, - grammar, - antiPrompt, - seed - ); + // default charset usage for Java backwards compatibility + @SuppressWarnings("ImplicitDefaultCharsetUsage") + public InferenceParameters setGrammar(@NotNull File file) throws IOException { + StringBuilder grammarBuilder = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + String currentLine; + while ((currentLine = br.readLine()) != null) { + grammarBuilder.append(currentLine).append("\n"); + } } + return setGrammar(grammarBuilder.toString()); + } - public Builder setNPredict(int nPredict) { - this.nPredict = nPredict; - return this; - } + public InferenceParameters setGrammar(@Nullable String grammar) { + this.grammar = grammar; + return this; + } - public Builder setNKeep(int nKeep) { - this.nKeep = nKeep; - return this; - } + public InferenceParameters setAntiPrompt(@NotNull String... antiPrompt) { + this.antiPrompt = antiPrompt; + return this; + } - public Builder setNProbs(int nProbs) { - this.nProbs = nProbs; - return this; - } + public InferenceParameters setSeed(int seed) { + this.seed = seed; + return this; + } - public Builder setLogitBias(@NotNull Map logitBias) { - this.logitBias = Collections.unmodifiableMap(logitBias); - return this; - } + public int getNPredict() { + return nPredict; + } - public Builder setTopK(int topK) { - this.topK = topK; - return this; - } + public int getNKeep() { + return nKeep; + } - public Builder setTopP(float topP) { - this.topP = topP; - return this; - } + public int getNProbs() { + return nProbs; + } - public Builder setTfsZ(float tfsZ) { - this.tfsZ = tfsZ; - return this; - } + public @Nullable Map getLogitBias() { + return logitBias; + } - public Builder setTypicalP(float typicalP) { - this.typicalP = typicalP; - return this; - } + public int getTopK() { + return topK; + } - public Builder setTemperature(float temperature) { - this.temperature = temperature; - return this; - } + public float getTopP() { + return topP; + } - public Builder setRepeatPenalty(float repeatPenalty) { - this.repeatPenalty = repeatPenalty; - return this; - } + public float getTfsZ() { + return tfsZ; + } - public Builder setRepeatLastN(int repeatLastN) { - this.repeatLastN = repeatLastN; - return this; - } + public float getTypicalP() { + return typicalP; + } - public Builder setFrequencyPenalty(float frequencyPenalty) { - this.frequencyPenalty = frequencyPenalty; - return this; - } + public float getTemperature() { + return temperature; + } - public Builder setPresencePenalty(float presencePenalty) { - this.presencePenalty = presencePenalty; - return this; - } + public float getRepeatPenalty() { + return repeatPenalty; + } - public Builder setPenalizeNl(boolean penalizeNl) { - this.penalizeNl = penalizeNl; - return this; - } + public int getRepeatLastN() { + return repeatLastN; + } - public Builder setIgnoreEos(boolean ignoreEos) { - this.ignoreEos = ignoreEos; - return this; - } + public float getFrequencyPenalty() { + return frequencyPenalty; + } - public Builder setMirostat(MiroStat mode) { - this.mirostat = mode; - return this; - } + public float getPresencePenalty() { + return presencePenalty; + } - public Builder setMirostatTau(float mirostatTau) { - this.mirostatTau = mirostatTau; - return this; - } + public boolean isPenalizeNl() { + return penalizeNl; + } - public Builder setMirostatEta(float mirostatEta) { - this.mirostatEta = mirostatEta; - return this; - } + public boolean isIgnoreEos() { + return ignoreEos; + } - public Builder setBeamSearch(boolean beamSearch) { - this.beamSearch = beamSearch; - return this; - } + public int getMirostat() { + return mirostat; + } - public Builder setNBeams(int nBeams) { - this.nBeams = nBeams; - return this; - } + public float getMirostatTau() { + return mirostatTau; + } - // default charset usage for Java backwards compatibility - @SuppressWarnings("ImplicitDefaultCharsetUsage") - public Builder setGrammar(@NotNull File file) throws IOException { - StringBuilder grammarBuilder = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new FileReader(file))) { - String currentLine; - while ((currentLine = br.readLine()) != null) { - grammarBuilder.append(currentLine).append("\n"); - } - } - return setGrammar(grammarBuilder.toString()); - } + public float getMirostatEta() { + return mirostatEta; + } - public Builder setGrammar(@Nullable String grammar) { - this.grammar = grammar; - return this; - } + public boolean isBeamSearch() { + return beamSearch; + } - public Builder setAntiPrompt(@NotNull String... antiPrompt) { - this.antiPrompt = antiPrompt; - return this; - } + public int getnBeams() { + return nBeams; + } - public Builder setSeed(int seed) { - this.seed = seed; - return this; - } + public @Nullable String getGrammar() { + return grammar; + } + + public @Nullable String[] getAntiPrompt() { + return antiPrompt; + } + + public int getSeed() { + return seed; } public enum MiroStat { diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index bb317547..4fb6e885 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -19,7 +19,7 @@ *
      *
    • Streaming answers (and probabilities) via {@link #generate(String)}
    • *
    • Creating whole responses to prompts via {@link #complete(String)}
    • - *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters.Builder#setEmbedding(boolean)}
    • + *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters#setEmbedding(boolean)}
    • *
    • Accessing the tokenizer via {@link #encode(String)} and {@link #decode(int[])}
    • *
    */ @@ -29,8 +29,8 @@ public class LlamaModel implements AutoCloseable { LlamaLoader.initialize(); } - private static final ModelParameters defaultModelParams = new ModelParameters.Builder().build(); - private static final InferenceParameters defaultInferenceParams = new InferenceParameters.Builder().build(); + private static final ModelParameters defaultModelParams = new ModelParameters(); + private static final InferenceParameters defaultInferenceParams = new InferenceParameters(); @Native private long ctx; @@ -156,7 +156,7 @@ public Iterable generate(String prefix, String suffix, InferenceParamete * * @param prompt the string to embed * @return an embedding float array - * @throws IllegalStateException if embedding mode was not activated (see {@link ModelParameters.Builder#setEmbedding(boolean)}) + * @throws IllegalStateException if embedding mode was not activated (see {@link ModelParameters#setEmbedding(boolean)}) */ public native float[] embed(String prompt); @@ -202,7 +202,7 @@ public void close() { private native void delete(); /** - * A generated output of the LLM. Note that you have to configure {@link InferenceParameters.Builder#setNPredict(int)} + * A generated output of the LLM. Note that you have to configure {@link InferenceParameters#setNPredict(int)} * in order for probabilities to be returned. * For multibyte outputs (unicode characters like emojis) only the last generated token and its probabilities * are returned. diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index c676b4b6..4e1d7506 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -7,211 +7,92 @@ */ public final class ModelParameters { - public final int nThreads; - - public final int seed; - public final int nCtx; // text context - public final int nBatch; // prompt processing batch size - public final int nGpuLayers; // number of layers to store in VRAM - public final int mainGpu; // the GPU that is used for scratch and small tensors - public final float[] tensorSplit; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) - public final float ropeFreqBase; // RoPE base frequency - public final float ropeFreqScale; // RoPE frequency scaling factor - // public final llama_progress_callback progress_callback; -// public final Pointer progress_callback_user_data; - public final boolean mulMatQ; // if true, use experimental mul_mat_q kernels - public final boolean f16Kv; // use fp16 for KV cache - public final boolean logitsAll; // the llama_eval() call computes all logits, not just the last one - public final boolean vocabOnly; // only load the vocabulary, no weights - public final boolean useMmap; // use mmap if possible - public final boolean useMlock; // force system to keep model in RAM - public final boolean embedding; // embedding mode only + private int nThreads = Runtime.getRuntime().availableProcessors(); + + private int seed = -1; + // text context + private int nCtx = 512; + // prompt processing batch size + private int nBatch = 512; + // number of layers to store in VRAM + private int nGpuLayers = -1; + // the GPU that is used for scratch and small tensors + private int mainGpu = 0; + // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) + private float[] tensorSplit = null; + // RoPE base frequency + private float ropeFreqBase = 0f; + // RoPE frequency scaling factor + private float ropeFreqScale = 0f; + // if true, use experimental mul_mat_q kernels + private boolean mulMatQ = true; + // use fp16 for KV cache + private boolean f16Kv = false; + // the llama_eval() call computes all logits, not just the last one + private boolean logitsAll = false; + // only load the vocabulary, no weights + private boolean vocabOnly = false; + // use mmap if possible + private boolean useMmap = true; + // force system to keep model in RAM + private boolean useMlock = false; + // embedding mode + private boolean embedding = false; + // lora adapter path @Nullable - public final String loraAdapter; // lora adapter path + private String loraAdapter = null; + // base model path for the lora adapter @Nullable - public final String loraBase; // base model path for the lora adapter - public final boolean hellaswag; // compute HellaSwag score over random tasks from datafile supplied in prompt - public final short hellaswagTasks; // number of tasks to use when computing the HellaSwag score - public final boolean memoryF16; // use f16 instead of f32 for memory kv - public final boolean memTest; // compute maximum memory usage - public final boolean numa; // attempt optimizations that help on some NUMA systems - public final boolean verbosePrompt; // log prompt tokens before generation - - /** - * Private constructor to build immutable parameters object. Called via {@link Builder}. - */ - private ModelParameters( - int nThreads, - int seed, - int nCtx, - int nBatch, - int nGpuLayers, - int mainGpu, - float[] tensorSplit, - float ropeFreqBase, - float ropeFreqScale, - boolean mulMatQ, - boolean f16Kv, - boolean logitsAll, - boolean vocabOnly, - boolean useMmap, - boolean useMlock, - boolean embedding, - @Nullable String loraAdapter, - @Nullable String loraBase, - boolean hellaswag, - short hellaswagTasks, - boolean memoryF16, - boolean memTest, - boolean numa, - boolean verbosePrompt - ) { - this.seed = seed; - this.nCtx = nCtx; - this.nBatch = nBatch; - this.nGpuLayers = nGpuLayers; - this.mainGpu = mainGpu; - this.tensorSplit = tensorSplit; - this.ropeFreqBase = ropeFreqBase; - this.ropeFreqScale = ropeFreqScale; - this.mulMatQ = mulMatQ; - this.f16Kv = f16Kv; - this.logitsAll = logitsAll; - this.vocabOnly = vocabOnly; - this.useMmap = useMmap; - this.useMlock = useMlock; - this.embedding = embedding; + private String loraBase = null; + // use f16 instead of f32 for memory kv + private boolean memoryF16 = true; + // compute maximum memory usage + private boolean memTest = false; + // attempt optimizations that help on some NUMA systems + private boolean numa = false; + private boolean verbosePrompt = false; // log prompt tokens before generation + + public ModelParameters setNThreads(int nThreads) { this.nThreads = nThreads; + return this; + } + + public ModelParameters setLoraAdapter(@Nullable String loraAdapter) { this.loraAdapter = loraAdapter; + return this; + } + + public ModelParameters setLoraBase(@Nullable String loraBase) { this.loraBase = loraBase; - this.hellaswag = hellaswag; - this.hellaswagTasks = hellaswagTasks; + return this; + } + + public ModelParameters setMemoryF16(boolean memoryF16) { this.memoryF16 = memoryF16; + return this; + } + + public ModelParameters setMemTest(boolean memTest) { this.memTest = memTest; + return this; + } + + public ModelParameters setNuma(boolean numa) { this.numa = numa; + return this; + } + + public ModelParameters setVerbosePrompt(boolean verbosePrompt) { this.verbosePrompt = verbosePrompt; + return this; } /** - * The builder class used for creating new {@link ModelParameters} of a {@link LlamaModel}. + * Set a callback that will be used to report progress loading the model with a float value of 0-1. + * + * @return this builder object */ - public static class Builder { - - private int nThreads = Runtime.getRuntime().availableProcessors(); - public int seed = -1; - public int nCtx = 512; // text context - public int nBatch = 512; // prompt processing batch size - public int nGpuLayers = -1; // number of layers to store in VRAM - public int mainGpu = 0; // the GPU that is used for scratch and small tensors - public float[] tensorSplit = null; // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) - public float ropeFreqBase = 0; // RoPE base frequency - public float ropeFreqScale = 0; // RoPE frequency scaling factor - // public llama_progress_callback progress_callback; - // public Pointer progress_callback_user_data; - public boolean mulMatQ = true; // if true, use experimental mul_mat_q kernels - public boolean f16Kv; // use fp16 for KV cache - public boolean logitsAll; // the llama_eval() call computes all logits, not just the last one - public boolean vocabOnly = false; // only load the vocabulary, no weights - public boolean useMmap = true; // use mmap if possible - public boolean useMlock = false; // force system to keep model in RAM - public boolean embedding = false; // embedding mode only - private String loraAdapter = null; // lora adapter path - private String loraBase = null; // base model path for the lora adapter - - private boolean hellaswag = false; // compute HellaSwag score over random tasks from datafile supplied in prompt - private short hellaswagTasks = 400; // number of tasks to use when computing the HellaSwag score - - private boolean memoryF16 = true; // use f16 instead of f32 for memory kv - private boolean memTest = false; // compute maximum memory usage - private boolean numa = false; // attempt optimizations that help on some NUMA systems - private boolean verbosePrompt = false; // print prompt tokens before generation - - /** - * Constructs the immutable {@link ModelParameters} objects with the configured options. - * Note, that all options not configured have sensible defaults. - * - * @return an immutable parameters object - */ - public ModelParameters build() { - return new ModelParameters( - nThreads, - seed, - nCtx, - nBatch, - nGpuLayers, - mainGpu, - tensorSplit, - ropeFreqBase, - ropeFreqScale, - mulMatQ, - f16Kv, - logitsAll, - vocabOnly, - useMmap, - useMlock, - embedding, - loraAdapter, - loraBase, - hellaswag, - hellaswagTasks, - memoryF16, - memTest, - numa, - verbosePrompt - ); - } - - public Builder setNThreads(int nThreads) { - this.nThreads = nThreads; - return this; - } - - public Builder setLoraAdapter(@Nullable String loraAdapter) { - this.loraAdapter = loraAdapter; - return this; - } - - public Builder setLoraBase(@Nullable String loraBase) { - this.loraBase = loraBase; - return this; - } - - public Builder setHellaswag(boolean hellaswag) { - this.hellaswag = hellaswag; - return this; - } - - public Builder setHellaswagTasks(short hellaswagTasks) { - this.hellaswagTasks = hellaswagTasks; - return this; - } - - public Builder setMemoryF16(boolean memoryF16) { - this.memoryF16 = memoryF16; - return this; - } - - public Builder setMemTest(boolean memTest) { - this.memTest = memTest; - return this; - } - - public Builder setNuma(boolean numa) { - this.numa = numa; - return this; - } - - public Builder setVerbosePrompt(boolean verbosePrompt) { - this.verbosePrompt = verbosePrompt; - return this; - } - - /** - * Set a callback that will be used to report progress loading the model with a float value of 0-1. - * - * @return this builder object - */ -// public Builder setProgressCallback(@Nullable Consumer progressCallback) { +// public ModelParameters setProgressCallback(@Nullable Consumer progressCallback) { // // Similarly to setting the logger, we don't allow passing any user data to the progress callback, since // // the JVM might move the object around in the memory, thus invalidating any pointers. // if (progressCallback == null) { @@ -222,107 +103,194 @@ public Builder setVerbosePrompt(boolean verbosePrompt) { // return this; // } - public Builder setSeed(int seed) { - this.seed = seed; - return this; - } - - public Builder setNCtx(int nCtx) { - this.nCtx = nCtx; - return this; - } - - public Builder setNBbatch(int nBatch) { - this.nBatch = nBatch; - return this; - } - - public Builder setNGpuLayers(int nGpuLayers) { - this.nGpuLayers = nGpuLayers; - return this; - } - - public Builder setMainGpu(int mainGpu) { - this.mainGpu = mainGpu; - return this; - } - - public Builder setTensorSplit(float[] tensorSplit) { - this.tensorSplit = tensorSplit; - return this; - } - - public Builder setRopeFreqBase(float ropeFreqBase) { - this.ropeFreqBase = ropeFreqBase; - return this; - } - - public Builder setRopeFreqScale(float ropeFreqScale) { - this.ropeFreqScale = ropeFreqScale; - return this; - } - -// public Builder setProgressCallback(LlamaLibrary.llama_progress_callback progress_callback) { + public ModelParameters setSeed(int seed) { + this.seed = seed; + return this; + } + + public ModelParameters setNCtx(int nCtx) { + this.nCtx = nCtx; + return this; + } + + public ModelParameters setNBbatch(int nBatch) { + this.nBatch = nBatch; + return this; + } + + public ModelParameters setNGpuLayers(int nGpuLayers) { + this.nGpuLayers = nGpuLayers; + return this; + } + + public ModelParameters setMainGpu(int mainGpu) { + this.mainGpu = mainGpu; + return this; + } + + public ModelParameters setTensorSplit(float[] tensorSplit) { + this.tensorSplit = tensorSplit; + return this; + } + + public ModelParameters setRopeFreqBase(float ropeFreqBase) { + this.ropeFreqBase = ropeFreqBase; + return this; + } + + public ModelParameters setRopeFreqScale(float ropeFreqScale) { + this.ropeFreqScale = ropeFreqScale; + return this; + } + +// public ModelParameters setProgressCallback(LlamaLibrary.llama_progress_callback progress_callback) { // ctxParams.setProgress_callback(progress_callback); // return this; // } -// public Builder setProgressCallbackUserData(Pointer progress_callback_user_data) { +// public ModelParameters setProgressCallbackUserData(Pointer progress_callback_user_data) { // ctxParams.setProgress_callback_user_data(progress_callback_user_data); // return this; // } - public Builder setMulMatQ(boolean mulMatQ) { - this.mulMatQ = mulMatQ; - return this; - } - - /** - * use fp16 for KV cache - */ - public Builder setF16Kv(boolean f16Kv) { - this.f16Kv = f16Kv; - return this; - } - - /** - * the llama_eval() call computes all logits, not just the last one - */ - public Builder setLogitsAll(boolean logitsAll) { - this.logitsAll = logitsAll; - return this; - } - - /** - * only load the vocabulary, no weights - */ - public Builder setVocabOnly(boolean vocabOnly) { - this.vocabOnly = vocabOnly; - return this; - } - - /** - * use mmap if possible - */ - public Builder setUseMmap(boolean useMmap) { - this.useMmap = useMmap; - return this; - } - - /** - * force system to keep model in RAM - */ - public Builder setUseMLock(boolean useMlock) { - this.useMlock = useMlock; - return this; - } - - /** - * embedding mode only - */ - public Builder setEmbedding(boolean embedding) { - this.embedding = embedding; - return this; - } + public ModelParameters setMulMatQ(boolean mulMatQ) { + this.mulMatQ = mulMatQ; + return this; + } + + /** + * use fp16 for KV cache + */ + public ModelParameters setF16Kv(boolean f16Kv) { + this.f16Kv = f16Kv; + return this; + } + + /** + * the llama_eval() call computes all logits, not just the last one + */ + public ModelParameters setLogitsAll(boolean logitsAll) { + this.logitsAll = logitsAll; + return this; + } + + /** + * only load the vocabulary, no weights + */ + public ModelParameters setVocabOnly(boolean vocabOnly) { + this.vocabOnly = vocabOnly; + return this; + } + + /** + * use mmap if possible + */ + public ModelParameters setUseMmap(boolean useMmap) { + this.useMmap = useMmap; + return this; + } + + /** + * force system to keep model in RAM + */ + public ModelParameters setUseMLock(boolean useMlock) { + this.useMlock = useMlock; + return this; + } + + /** + * embedding mode only + */ + public ModelParameters setEmbedding(boolean embedding) { + this.embedding = embedding; + return this; + } + + public int getNThreads() { + return nThreads; + } + + public int getSeed() { + return seed; + } + + public int getNCtx() { + return nCtx; + } + + public int getNBatch() { + return nBatch; + } + + public int getNGpuLayers() { + return nGpuLayers; + } + + public int getMainGpu() { + return mainGpu; + } + + public float[] getTensorSplit() { + return tensorSplit; + } + + public float getRopeFreqBase() { + return ropeFreqBase; + } + + public float getRopeFreqScale() { + return ropeFreqScale; + } + + public boolean isMulMatQ() { + return mulMatQ; + } + + public boolean isF16Kv() { + return f16Kv; + } + + public boolean isLogitsAll() { + return logitsAll; + } + + public boolean isVocabOnly() { + return vocabOnly; + } + + public boolean isUseMmap() { + return useMmap; + } + + public boolean isUseMlock() { + return useMlock; + } + + public boolean isEmbedding() { + return embedding; + } + + public @Nullable String getLoraAdapter() { + return loraAdapter; + } + + public @Nullable String getLoraBase() { + return loraBase; + } + + public boolean isMemoryF16() { + return memoryF16; + } + + public boolean isMemTest() { + return memTest; + } + + public boolean isNuma() { + return numa; + } + + public boolean isVerbosePrompt() { + return verbosePrompt; } } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index cda30cf3..d38d92e7 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -21,10 +21,9 @@ public class LlamaModelTest { @BeforeClass public static void setup() { LlamaModel.setLogger((level, msg) -> logOutput += msg); - ModelParameters params = new ModelParameters.Builder() + ModelParameters params = new ModelParameters() .setNGpuLayers(43) - .setEmbedding(true) - .build(); + .setEmbedding(true); model = new LlamaModel("/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf", params); } @@ -51,12 +50,11 @@ public void testGenerateAnswerDefault() { public void testGenerateAnswerCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") .setLogitBias(logitBias) - .setSeed(42) - .build(); + .setSeed(42); int generated = 0; for (LlamaModel.Output ignored : model.generate(prefix, params)) { @@ -78,12 +76,11 @@ public void testGenerateInfillDefault() { public void testGenerateInfillCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") .setLogitBias(logitBias) - .setSeed(42) - .build(); + .setSeed(42); int generated = 0; for (LlamaModel.Output ignored : model.generate(prefix, suffix, params)) { @@ -94,10 +91,9 @@ public void testGenerateInfillCustom() { @Test public void testGenerateGrammar() { - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setGrammar("root ::= (\"a\" | \"b\")+") - .setNPredict(42) - .build(); + .setNPredict(42); StringBuilder sb = new StringBuilder(); for (LlamaModel.Output output : model.generate("", params)) { sb.append(output); @@ -118,12 +114,11 @@ public void testCompleteAnswerDefault() { public void testCompleteAnswerCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") .setLogitBias(logitBias) - .setSeed(42) - .build(); + .setSeed(42); String output = model.complete(prefix, params); Assert.assertFalse(output.isEmpty()); @@ -139,12 +134,11 @@ public void testCompleteInfillDefault() { public void testCompleteInfillCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") .setLogitBias(logitBias) - .setSeed(42) - .build(); + .setSeed(42); String output = model.complete(prefix, suffix, params); Assert.assertFalse(output.isEmpty()); @@ -152,10 +146,9 @@ public void testCompleteInfillCustom() { @Test public void testCompleteGrammar() { - InferenceParameters params = new InferenceParameters.Builder() + InferenceParameters params = new InferenceParameters() .setGrammar("root ::= (\"a\" | \"b\")+") - .setNPredict(42) - .build(); + .setNPredict(42); String output = model.complete("", params); Assert.assertTrue(output.matches("[ab]+")); Assert.assertEquals(42, model.encode(output).length); diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 76505337..8b62c204 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -11,9 +11,7 @@ public static void main(String... args) { String grammar = "root ::= (expr \"=\" term \"\\n\")+\n" + "expr ::= term ([-+*/] term)*\n" + "term ::= [0-9]"; - InferenceParameters params = new InferenceParameters.Builder() - .setGrammar(grammar) - .build(); + InferenceParameters params = new InferenceParameters().setGrammar(grammar); String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; try (LlamaModel model = new LlamaModel(filePath)) { diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index 348a962d..d6e68f4b 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -7,9 +7,8 @@ public class InfillExample { public static void main(String... args) { LlamaModel.setLogger((level, message) -> System.out.print(message)); - ModelParameters modelParams = new ModelParameters.Builder() - .setNGpuLayers(43) - .build(); + ModelParameters modelParams = new ModelParameters() + .setNGpuLayers(43); String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; String suffix = "\n return result\n"; diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index a19dccdf..8882098c 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -13,16 +13,14 @@ public class MainExample { public static void main(String... args) throws IOException { LlamaModel.setLogger((level, message) -> System.out.print(message)); - ModelParameters modelParams = new ModelParameters.Builder() - .setNGpuLayers(43) - .build(); - InferenceParameters inferParams = new InferenceParameters.Builder() + ModelParameters modelParams = new ModelParameters() + .setNGpuLayers(43); + InferenceParameters inferParams = new InferenceParameters() .setTemperature(0.7f) .setPenalizeNl(true) // .setNProbs(10) .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n") - .build(); + .setAntiPrompt("\n"); String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + From 49552764c25d7c438f4567e17a7f6f862dd4b23f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 16 Oct 2023 23:10:57 +0200 Subject: [PATCH 052/384] Update parameters in readme --- README.md | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 85f1bdd3..9f2dea0a 100644 --- a/README.md +++ b/README.md @@ -32,15 +32,13 @@ public class Example { public static void main(String... args) throws IOException { LlamaModel.setLogger((level, message) -> System.out.print(message)); - ModelParameters modelParams = new ModelParameters.Builder() - .setNGpuLayers(43) - .build(); - InferenceParameters inferParams = new InferenceParameters.Builder() + ModelParameters modelParams = new ModelParameters() + .setNGpuLayers(43); + InferenceParameters inferParams = new InferenceParameters() .setTemperature(0.7f) .setPenalizeNl(true) .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt(new String[]{"\n"}) - .build(); + .setAntiPrompt("\n"); String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + @@ -192,14 +190,12 @@ There are two sets of parameters you can configure, `ModelParameters` and `Infer classes to ease configuration. All non-specified options have sensible defaults. ```java -ModelParameters modelParams = new ModelParameters.Builder() +ModelParameters modelParams = new ModelParameters() .setLoraAdapter("/path/to/lora/adapter") - .setLoraBase("/path/to/lora/base") - .build(); -InferenceParameters inferParams = new InferenceParameters.Builder() + .setLoraBase("/path/to/lora/base"); +InferenceParameters inferParams = new InferenceParameters() .setGrammar(new File("/path/to/grammar.gbnf")) - .setTemperature(0.8) - .build(); + .setTemperature(0.8); LlamaModel model = new LlamaModel("/path/to/model.bin", modelParams); model.generate(prompt, inferParams) ``` @@ -217,7 +213,6 @@ LlamaModel.setLogger((level, message) -> {}); // Similarly, a progress callback can be set (only the C++ side will call this). // I think this is only used to report progress loading the model with a value of 0-1. // It is thus state specific and can be done via the parameters. -new ModelParameters.Builder() - .setProgressCallback(progress -> System.out.println("progress: " + progress)) - .build(); +new ModelParameters() + .setProgressCallback(progress -> System.out.println("progress: " + progress)); ``` From 780e7d02f05c38aa62d892f8807a8605146467f2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 27 Oct 2023 22:09:06 +0200 Subject: [PATCH 053/384] disable LLAMA_NATIVE for linux x86_64 --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 526a0732..77120826 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,7 +15,7 @@ jobs: name: Linux, arch: x86_64, image: ubuntu-latest, - cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64'" + cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64' -DLLAMA_NATIVE=OFF" } - { name: Mac, From 209d8e51e2bb9b78b1648b166fea4ba917abd199 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 15:28:56 -0500 Subject: [PATCH 054/384] Upgrade to use most recent release of llama.cpp: b1645 --- build-args.cmake | 10 ------ src/main/cpp/jllama.cpp | 73 +++++++++++++++++++---------------------- src/main/cpp/llama.cpp | 2 +- 3 files changed, 35 insertions(+), 50 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index a9e9a6ea..a3654c10 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -55,7 +55,6 @@ option(LLAMA_CLBLAST "llama: use CLBlast" option(LLAMA_METAL "llama: use Metal" ${LLAMA_METAL_DEFAULT}) option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" OFF) option(LLAMA_MPI "llama: use MPI" OFF) -option(LLAMA_K_QUANTS "llama: use k-quants" ON) option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF) option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE}) @@ -203,15 +202,6 @@ if (LLAMA_BLAS) endif() endif() -if (LLAMA_K_QUANTS) - set(GGML_HEADERS_EXTRA k_quants.h) - set(GGML_SOURCES_EXTRA k_quants.c) - add_compile_definitions(GGML_USE_K_QUANTS) - if (LLAMA_QKK_64) - add_compile_definitions(GGML_QKK_64) - endif() -endif() - if (LLAMA_CUBLAS) cmake_minimum_required(VERSION 3.17) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 9eb81a7d..00e95114 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -6,7 +6,7 @@ #include "llama.h" #include "jllama.h" #include "common.h" -#include "build-info.h" +#include "sampling.h" #include "grammar-parser.h" // classes @@ -405,7 +405,7 @@ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) { jsize len = string.size(); jbyteArray bytes = env->NewByteArray(len); - env->SetByteArrayRegion(bytes, 0, len, (jbyte *)string.c_str()); + env->SetByteArrayRegion(bytes, 0, len, reinterpret_cast(string.c_str())); return bytes; } @@ -551,7 +551,7 @@ struct jllama_context void rewind() { params.antiprompt.clear(); - params.grammar.clear(); + params.sparams.grammar.clear(); num_prompt_tokens = 0; num_tokens_predicted = 0; generated_text = ""; @@ -569,7 +569,7 @@ struct jllama_context if (grammar != nullptr) { llama_grammar_free(grammar); grammar = nullptr; - ctx_sampling = llama_sampling_context_init(params, NULL); + ctx_sampling = *llama_sampling_init(params.sparams); } } @@ -594,8 +594,8 @@ struct jllama_context bool loadGrammar() { - if (!params.grammar.empty()) { - parsed_grammar = grammar_parser::parse(params.grammar.c_str()); + if (!params.sparams.grammar.empty()) { + parsed_grammar = grammar_parser::parse(params.sparams.grammar.c_str()); // will be empty (default) if there are parse errors if (parsed_grammar.rules.empty()) { jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error"); @@ -604,8 +604,8 @@ struct jllama_context grammar_parser::print_grammar(stderr, parsed_grammar); { - auto it = params.sampling_params.logit_bias.find(llama_token_eos(ctx)); - if (it != params.sampling_params.logit_bias.end() && it->second == -INFINITY) { + auto it = params.sparams.logit_bias.find(llama_token_eos(model)); + if (it != params.sparams.logit_bias.end() && it->second == -INFINITY) { jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail"); } } @@ -614,7 +614,7 @@ struct jllama_context grammar = llama_grammar_init( grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); } - ctx_sampling = llama_sampling_context_init(params, grammar); + ctx_sampling = *llama_sampling_init(params.sparams); return true; } @@ -632,11 +632,11 @@ struct jllama_context if (suff_rm_leading_spc && suffix_tokens[0] == space_token) { suffix_tokens.erase(suffix_tokens.begin()); } - prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(ctx)); - prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(ctx)); // always add BOS - prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(ctx)); + prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); + prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(model)); // always add BOS + prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(model)); prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); - prefix_tokens.push_back(llama_token_middle(ctx)); + prefix_tokens.push_back(llama_token_middle(model)); auto prompt_tokens = prefix_tokens; num_prompt_tokens = prompt_tokens.size(); @@ -657,7 +657,7 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left) ); truncated = true; prompt_tokens = new_tokens; @@ -706,7 +706,7 @@ struct jllama_context new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); truncated = true; prompt_tokens = new_tokens; @@ -765,7 +765,7 @@ struct jllama_context n_past -= n_discard; truncated = true; - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + n_left); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left) ); } bool tg = true; @@ -780,7 +780,7 @@ struct jllama_context if (llama_decode(ctx, llama_batch_get_one(&embd[n_past], n_eval, n_past, 0))) { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "failed to eval n_eval=" + n_eval); + jllama_log_callback(GGML_LOG_LEVEL_ERROR, "failed to eval n_eval=" + std::to_string(n_eval)); has_next_token = false; return result; } @@ -790,21 +790,18 @@ struct jllama_context if (params.n_predict == 0) { has_next_token = false; - result.tok = llama_token_eos(ctx); + result.tok = llama_token_eos(model); return result; } { // out of user input, sample next token - std::vector candidates; - candidates.reserve(llama_n_vocab(model)); + result.tok = llama_sampling_sample(&ctx_sampling, ctx, NULL); - result.tok = llama_sampling_sample(ctx, NULL, ctx_sampling, last_n_tokens, candidates); + llama_token_data_array candidates_p = { ctx_sampling.cur.data(), ctx_sampling.cur.size(), false }; - llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false }; - - const int32_t n_probs = params.sampling_params.n_probs; - if (params.sampling_params.temp <= 0 && n_probs > 0) + const int32_t n_probs = params.sparams.n_probs; + if (params.sparams.temp <= 0 && n_probs > 0) { // For llama_sample_token_greedy we need to sort candidates llama_sample_softmax(ctx, &candidates_p); @@ -815,8 +812,7 @@ struct jllama_context result.probs.push_back({candidates_p.data[i].id, candidates_p.data[i].p}); } - last_n_tokens.erase(last_n_tokens.begin()); - last_n_tokens.push_back(result.tok); + llama_sampling_accept(&ctx_sampling, ctx, result.tok, true); if (tg) { num_tokens_predicted++; } @@ -827,7 +823,7 @@ struct jllama_context // decrement remaining sampling budget --n_remain; - if (!embd.empty() && embd.back() == llama_token_eos(ctx)) + if (!embd.empty() && embd.back() == llama_token_eos(model)) { // stopping_word = llama_token_to_piece(ctx, embd.back()); has_next_token = false; @@ -878,7 +874,7 @@ struct jllama_context const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); generated_text += token_text; - if (params.sampling_params.n_probs > 0) + if (params.sparams.n_probs > 0) { generated_token_probs.push_back(token_with_probs); } @@ -953,7 +949,6 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); - params.memory_f16 = env->GetBooleanField(jparams, f_memory_f16); params.embedding = env->GetBooleanField(jparams, f_embedding); params.escape = env->GetIntField(jparams, f_n_predict); params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); @@ -1042,17 +1037,17 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara params.n_predict = env->GetIntField(jparams, f_n_predict); params.n_keep = env->GetIntField(jparams, f_n_keep); - auto & sparams = params.sampling_params; + auto & sparams = params.sparams; sparams.top_k = env->GetIntField(jparams, f_top_k); sparams.top_p = env->GetFloatField(jparams, f_top_p); sparams.tfs_z = env->GetFloatField(jparams, f_tfs_z); sparams.typical_p = env->GetFloatField(jparams, f_typical_p); sparams.temp = env->GetFloatField(jparams, f_temperature); - sparams.repeat_penalty = env->GetFloatField(jparams, f_repeat_penalty); - sparams.repeat_last_n = env->GetIntField(jparams, f_repeat_last_n); - sparams.frequency_penalty = env->GetFloatField(jparams, f_frequency_penalty); - sparams.presence_penalty = env->GetFloatField(jparams, f_presence_penalty); + sparams.penalty_repeat = env->GetFloatField(jparams, f_repeat_penalty); + sparams.n_prev = env->GetIntField(jparams, f_repeat_last_n); + sparams.penalty_freq = env->GetFloatField(jparams, f_frequency_penalty); + sparams.penalty_present = env->GetFloatField(jparams, f_presence_penalty); sparams.penalize_nl = env->GetBooleanField(jparams, f_penalize_nl); sparams.mirostat = env->GetIntField(jparams, f_mirostat); sparams.mirostat_tau = env->GetFloatField(jparams, f_mirostat_tau); @@ -1062,7 +1057,7 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara jstring j_grammar = (jstring)env->GetObjectField(jparams, f_grammar); if (j_grammar != nullptr) { - params.grammar = parse_jstring(env, j_grammar); + sparams.grammar = parse_jstring(env, j_grammar); env->DeleteLocalRef(j_grammar); if (!llama->loadGrammar()) { @@ -1074,7 +1069,7 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara jboolean ignore_eos = env->GetBooleanField(jparams, f_ignore_eos); if (ignore_eos) { - sparams.logit_bias[llama_token_eos(llama->ctx)] = -INFINITY; + sparams.logit_bias[llama_token_eos(llama->model)] = -INFINITY; } jobject logit_bias = env->GetObjectField(jparams, f_logit_bias); @@ -1115,7 +1110,7 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara } } - llama->ctx_sampling = llama_sampling_context_init(params, llama->grammar); + llama->ctx_sampling = *llama_sampling_init(params.sparams); } static void setup_answering(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) @@ -1239,7 +1234,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j std::vector probs_output = {}; - if (llama->params.sampling_params.n_probs > 0) { + if (llama->params.sparams.n_probs > 0) { const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); size_t probs_stop_pos = std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); diff --git a/src/main/cpp/llama.cpp b/src/main/cpp/llama.cpp index 11bff290..c6c4fc08 160000 --- a/src/main/cpp/llama.cpp +++ b/src/main/cpp/llama.cpp @@ -1 +1 @@ -Subproject commit 11bff290458f12f020b588792707f76ec658a27a +Subproject commit c6c4fc081c1df1c60a9bfe3e6a3fd086f1a29ec7 From c8d05c3fc3e34fef189b6747d0384b9c6ad9bc09 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 20:57:30 -0500 Subject: [PATCH 055/384] Refactoring tests to be slightly more generic --- pom.xml | 69 +++++++++++++++++++ ...{LlamaModelTest.java => LlamaModelIT.java} | 30 +++++--- 2 files changed, 89 insertions(+), 10 deletions(-) rename src/test/java/de/kherud/llama/{LlamaModelTest.java => LlamaModelIT.java} (78%) diff --git a/pom.xml b/pom.xml index 099e1b8d..207be349 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,10 @@ 5.13.0 4.13.1 + 3.2.3 UTF-8 + mistral-7b-instruct-v0.2.Q5_K_S.gguf + https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/${integration.test.model} @@ -77,6 +80,72 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + ${test.plugin.version} + + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${test.plugin.version} + + + + model.home + ${integration.test.model} + + + + + + integration-test + verify + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.0.0 + + + Download the integration test model if it doesn't exist + pre-integration-test + + + + + + + + + + + + + + + + + + + + + + run + + + + diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelIT.java similarity index 78% rename from src/test/java/de/kherud/llama/LlamaModelTest.java rename to src/test/java/de/kherud/llama/LlamaModelIT.java index d38d92e7..407032dc 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -1,17 +1,18 @@ package de.kherud.llama; +import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; -@Ignore -public class LlamaModelTest { +public class LlamaModelIT { + public static final String MODEL_HOME_PROPERTY = "model.home"; + public static final String MODEL_NAME_PROPERTY = "integration.test.model"; private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; private static String logOutput = ""; @@ -21,15 +22,25 @@ public class LlamaModelTest { @BeforeClass public static void setup() { LlamaModel.setLogger((level, msg) -> logOutput += msg); - ModelParameters params = new ModelParameters() - .setNGpuLayers(43) - .setEmbedding(true); - model = new LlamaModel("/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf", params); + String modelHome = System.getProperty(MODEL_HOME_PROPERTY); + String modelName= System.getProperty(MODEL_NAME_PROPERTY); + if(modelHome == null) { + throw new RuntimeException("Please pass the system property \"" + MODEL_HOME_PROPERTY + "\" to the test. This should represent the location on local disk where your models are located."); + } + if(modelName == null) { + throw new RuntimeException("The system property \"" + MODEL_NAME_PROPERTY + "\" is not set. If you are running this from an IDE, please set it. If you are running this from Maven, this should be set automatically and there is something strange going on." ); + } + String modelPath= Paths.get(modelHome, modelName).toString(); + ModelParameters params = new ModelParameters().setNGpuLayers(43).setEmbedding(true); + model = + new LlamaModel(modelPath, params); } @AfterClass public static void tearDown() { - model.close(); + if(model != null) { + model.close(); + } } @Test @@ -157,14 +168,13 @@ public void testCompleteGrammar() { @Test public void testEmbedding() { float[] embedding = model.embed(prefix); - Assert.assertEquals(5120, embedding.length); + Assert.assertEquals(4096, embedding.length); } @Test public void testTokenization() { String prompt = "Hello, world!"; int[] encoded = model.encode(prompt); - Assert.assertArrayEquals(new int[]{15043, 29892, 3186, 29991}, encoded); String decoded = model.decode(encoded); // the llama tokenizer adds a space before the prompt Assert.assertEquals(" " + prompt, decoded); From 311539d47f617cfd94432818b38f28b8837fa0fa Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 21:09:19 -0500 Subject: [PATCH 056/384] made test error out in a more instructive way --- README.md | 2 +- pom.xml | 5 +++++ src/test/java/de/kherud/llama/LlamaModelIT.java | 5 ++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f2dea0a..d057d3c4 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ Make sure everything works by running g++ -v # depending on your compiler java -version mvn -v -echo $JAVA_HOME # for inlux/macos +echo $JAVA_HOME # for linux/macos echo %JAVA_HOME% # for windows ``` diff --git a/pom.xml b/pom.xml index 207be349..610f51fe 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,11 @@ + + + + + diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 407032dc..d79594e1 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -25,7 +25,10 @@ public static void setup() { String modelHome = System.getProperty(MODEL_HOME_PROPERTY); String modelName= System.getProperty(MODEL_NAME_PROPERTY); if(modelHome == null) { - throw new RuntimeException("Please pass the system property \"" + MODEL_HOME_PROPERTY + "\" to the test. This should represent the location on local disk where your models are located."); + throw new RuntimeException("Please pass the system property \"" + MODEL_HOME_PROPERTY + "\" to the test. " + + "This should represent the location on local disk where your models are located. " + + "If you are running this via maven, please run with a -Dmodel.home=/path/to/model/dir. " + + "Make sure that the directory that you pass exists."); } if(modelName == null) { throw new RuntimeException("The system property \"" + MODEL_NAME_PROPERTY + "\" is not set. If you are running this from an IDE, please set it. If you are running this from Maven, this should be set automatically and there is something strange going on." ); From d65fa76e159eaeae37269c46e9b3dfd03f47e676 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 21:58:30 -0500 Subject: [PATCH 057/384] Small refactoring to run examples --- pom.xml | 9 ++++++ .../java/de/kherud/llama/LlamaModelIT.java | 16 +--------- .../java/de/kherud/llama/ModelResolver.java | 32 +++++++++++++++++++ src/test/java/examples/GrammarExample.java | 7 ++-- src/test/java/examples/InfillExample.java | 5 +-- src/test/java/examples/MainExample.java | 5 +-- 6 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 src/test/java/de/kherud/llama/ModelResolver.java diff --git a/pom.xml b/pom.xml index 610f51fe..e072ab83 100644 --- a/pom.xml +++ b/pom.xml @@ -80,6 +80,15 @@ + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + test + + diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index d79594e1..db784eb1 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -11,8 +11,6 @@ public class LlamaModelIT { - public static final String MODEL_HOME_PROPERTY = "model.home"; - public static final String MODEL_NAME_PROPERTY = "integration.test.model"; private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; private static String logOutput = ""; @@ -22,21 +20,9 @@ public class LlamaModelIT { @BeforeClass public static void setup() { LlamaModel.setLogger((level, msg) -> logOutput += msg); - String modelHome = System.getProperty(MODEL_HOME_PROPERTY); - String modelName= System.getProperty(MODEL_NAME_PROPERTY); - if(modelHome == null) { - throw new RuntimeException("Please pass the system property \"" + MODEL_HOME_PROPERTY + "\" to the test. " - + "This should represent the location on local disk where your models are located. " - + "If you are running this via maven, please run with a -Dmodel.home=/path/to/model/dir. " - + "Make sure that the directory that you pass exists."); - } - if(modelName == null) { - throw new RuntimeException("The system property \"" + MODEL_NAME_PROPERTY + "\" is not set. If you are running this from an IDE, please set it. If you are running this from Maven, this should be set automatically and there is something strange going on." ); - } - String modelPath= Paths.get(modelHome, modelName).toString(); ModelParameters params = new ModelParameters().setNGpuLayers(43).setEmbedding(true); model = - new LlamaModel(modelPath, params); + new LlamaModel(ModelResolver.getPathToITModel(), params); } @AfterClass diff --git a/src/test/java/de/kherud/llama/ModelResolver.java b/src/test/java/de/kherud/llama/ModelResolver.java new file mode 100644 index 00000000..e9496337 --- /dev/null +++ b/src/test/java/de/kherud/llama/ModelResolver.java @@ -0,0 +1,32 @@ +package de.kherud.llama; + +import java.nio.file.Paths; + +public enum ModelResolver { + MODEL_HOME("model.home", "Please pass the system property \"%s\" to the test. " + + "This should represent the location on local disk where your models are located. " + + "If you are running this via maven, please run with a -Dmodel.home=/path/to/model/dir. " + + "Make sure that the directory that you pass exists." ), + INTEGRATION_TEST_MODEL_NAME("integration.test.model", "The system property \"%s\" is not set. If you are running this from an IDE, please set it. If you are running this from Maven, this should be set automatically and there is something strange going on." ); + final String systemPropertyName; + final String errorMessage; + ModelResolver(String systemPropertyName, String errorMessage) { + this.systemPropertyName = systemPropertyName; + this.errorMessage = errorMessage; + } + + public String resolve() { + String ret = System.getProperty(systemPropertyName); + if(ret == null) { + throw new IllegalArgumentException(String.format(errorMessage, systemPropertyName)); + } + return ret; + } + + public static String getPathToModel(String modelName) { + return Paths.get(MODEL_HOME.resolve(), modelName).toString(); + } + public static String getPathToITModel() { + return getPathToModel(INTEGRATION_TEST_MODEL_NAME.resolve()); + } +} diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 8b62c204..5a9901a1 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -1,5 +1,6 @@ package examples; +import de.kherud.llama.ModelResolver; import java.util.HashMap; import de.kherud.llama.InferenceParameters; @@ -12,9 +13,9 @@ public static void main(String... args) { "expr ::= term ([-+*/] term)*\n" + "term ::= [0-9]"; InferenceParameters params = new InferenceParameters().setGrammar(grammar); - - String filePath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/gguf-model-q4_0.bin"; - try (LlamaModel model = new LlamaModel(filePath)) { + String modelName = System.getProperty("model.name"); + String modelPath = modelName == null?ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); + try (LlamaModel model = new LlamaModel(modelPath)) { for (LlamaModel.Output output : model.generate("", params)) { System.out.print(output); } diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index d6e68f4b..f39802ed 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -2,6 +2,7 @@ import de.kherud.llama.LlamaModel; import de.kherud.llama.ModelParameters; +import de.kherud.llama.ModelResolver; public class InfillExample { @@ -12,8 +13,8 @@ public static void main(String... args) { String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; String suffix = "\n return result\n"; - - String modelPath = "/run/media/konstantin/Seagate/models/codellama-13b.q5_k_m.gguf"; + String modelName = System.getProperty("model.name"); + String modelPath = modelName == null? ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { System.out.print(prefix); for (LlamaModel.Output output : model.generate(prefix, suffix)) { diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 8882098c..3b8f05c0 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -1,5 +1,6 @@ package examples; +import de.kherud.llama.ModelResolver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -21,8 +22,8 @@ public static void main(String... args) throws IOException { // .setNProbs(10) .setMirostat(InferenceParameters.MiroStat.V2) .setAntiPrompt("\n"); - - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; + String modelName = System.getProperty("model.name"); + String modelPath = modelName == null? ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n"; From 915c066bd154c286cb091cddeaf66615deb567ea Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 22:57:50 -0500 Subject: [PATCH 058/384] Fixing a few examples --- src/test/java/examples/GrammarExample.java | 2 +- src/test/java/examples/InfillExample.java | 2 +- src/test/java/examples/MainExample.java | 11 +++++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 5a9901a1..810fe142 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -14,7 +14,7 @@ public static void main(String... args) { "term ::= [0-9]"; InferenceParameters params = new InferenceParameters().setGrammar(grammar); String modelName = System.getProperty("model.name"); - String modelPath = modelName == null?ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); + String modelPath = ModelResolver.getPathToModel(modelName); try (LlamaModel model = new LlamaModel(modelPath)) { for (LlamaModel.Output output : model.generate("", params)) { System.out.print(output); diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index f39802ed..754b81bc 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -14,7 +14,7 @@ public static void main(String... args) { String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; String suffix = "\n return result\n"; String modelName = System.getProperty("model.name"); - String modelPath = modelName == null? ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); + String modelPath = ModelResolver.getPathToModel(modelName); try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { System.out.print(prefix); for (LlamaModel.Output output : model.generate(prefix, suffix)) { diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 3b8f05c0..9798af03 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -17,16 +17,19 @@ public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() .setNGpuLayers(43); InferenceParameters inferParams = new InferenceParameters() - .setTemperature(0.7f) + .setTemperature(0f) .setPenalizeNl(true) // .setNProbs(10) .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n"); + .setAntiPrompt("User:"); String modelName = System.getProperty("model.name"); - String modelPath = modelName == null? ModelResolver.getPathToITModel():ModelResolver.getPathToModel(modelName); + String modelPath = ModelResolver.getPathToModel(modelName); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n"; + "requests immediately and with precision.\n\n" + + "User: Hello Llama\n" + + "Llama: Hello. How may I help you today?"; + ; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { System.out.print(system); From 495a4d2d8e49c0129f9cdf76d9fc9dbc1e74b05f Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 22:59:34 -0500 Subject: [PATCH 059/384] Forgot to change back the temp --- src/test/java/examples/MainExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 9798af03..88b357a2 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -17,7 +17,7 @@ public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() .setNGpuLayers(43); InferenceParameters inferParams = new InferenceParameters() - .setTemperature(0f) + .setTemperature(0.7f) .setPenalizeNl(true) // .setNProbs(10) .setMirostat(InferenceParameters.MiroStat.V2) From 4220ac20d2291b0d43a8eadd50923c2a40acad3e Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:08:57 -0500 Subject: [PATCH 060/384] removing extraneous import --- src/test/java/de/kherud/llama/LlamaModelIT.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index db784eb1..c468f7f1 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -1,6 +1,5 @@ package de.kherud.llama; -import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; From 5adb4a73951e204e8ed5426155bf2802bf772404 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:10:09 -0500 Subject: [PATCH 061/384] comments --- src/test/java/de/kherud/llama/ModelResolver.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/java/de/kherud/llama/ModelResolver.java b/src/test/java/de/kherud/llama/ModelResolver.java index e9496337..191f0433 100644 --- a/src/test/java/de/kherud/llama/ModelResolver.java +++ b/src/test/java/de/kherud/llama/ModelResolver.java @@ -2,6 +2,10 @@ import java.nio.file.Paths; + +/** + * An enum which enables us to resolve the model home from system parameters and full model paths. + */ public enum ModelResolver { MODEL_HOME("model.home", "Please pass the system property \"%s\" to the test. " + "This should represent the location on local disk where your models are located. " From d3cd256a321be57fe8de3f565074ed15f20c581f Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:16:12 -0500 Subject: [PATCH 062/384] formatting --- src/test/java/de/kherud/llama/LlamaModelIT.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index c468f7f1..3b5ab507 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -19,7 +19,9 @@ public class LlamaModelIT { @BeforeClass public static void setup() { LlamaModel.setLogger((level, msg) -> logOutput += msg); - ModelParameters params = new ModelParameters().setNGpuLayers(43).setEmbedding(true); + ModelParameters params = new ModelParameters() + .setNGpuLayers(43) + .setEmbedding(true); model = new LlamaModel(ModelResolver.getPathToITModel(), params); } From 8f78cb82fa279b38624891ede540a62e9770397c Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:23:04 -0500 Subject: [PATCH 063/384] Accidentally clobbered too much --- build-args.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build-args.cmake b/build-args.cmake index a3654c10..11987972 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -202,6 +202,10 @@ if (LLAMA_BLAS) endif() endif() +if (LLAMA_QKK_64) + add_compile_definitions(GGML_QKK_64) +endif() + if (LLAMA_CUBLAS) cmake_minimum_required(VERSION 3.17) From 263f2dc50ef680ec843797138517354fb74e847c Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:24:28 -0500 Subject: [PATCH 064/384] formatting --- src/test/java/de/kherud/llama/LlamaModelIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 3b5ab507..9439e141 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -20,8 +20,8 @@ public class LlamaModelIT { public static void setup() { LlamaModel.setLogger((level, msg) -> logOutput += msg); ModelParameters params = new ModelParameters() - .setNGpuLayers(43) - .setEmbedding(true); + .setNGpuLayers(43) + .setEmbedding(true); model = new LlamaModel(ModelResolver.getPathToITModel(), params); } From 4f2dc9726efa8522955c35bd89246905a68b0805 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Sat, 16 Dec 2023 23:25:12 -0500 Subject: [PATCH 065/384] Formatting --- src/test/java/de/kherud/llama/LlamaModelIT.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 9439e141..18df9990 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -22,8 +22,7 @@ public static void setup() { ModelParameters params = new ModelParameters() .setNGpuLayers(43) .setEmbedding(true); - model = - new LlamaModel(ModelResolver.getPathToITModel(), params); + model = new LlamaModel(ModelResolver.getPathToITModel(), params); } @AfterClass From c99792ef20bb718deb46d79b32e7f862c626d5b3 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 11:46:06 +0100 Subject: [PATCH 066/384] Remove old version disclaimer --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index d057d3c4..487079ed 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,6 @@ This repository provides Java bindings for the C++ library. **You are welcome to contribute** -> [!NOTE] -> Version 2.0 of this library just released and introduces some breaking changes. The underlying Java/C++ interfacing -> technology changed from JNA to JNI with a focus on performance. If you prefer to use the old JNA version, you can -> still access it as 1.x.x in the [jna branch](https://github.com/kherud/java-llama.cpp/tree/jna). - ## Quick Start Access this library via Maven: From a8740d080e87967bea10bb7dd6b13c3a276fa2bf Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 11:54:08 +0100 Subject: [PATCH 067/384] Update readme --- README.md | 90 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 52 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 487079ed..7ed2ac26 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1382](https://img.shields.io/badge/llama.cpp-%23b1382-informational) +![llama.cpp b1645](https://img.shields.io/badge/llama.cpp-%23b1645-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -20,48 +20,18 @@ Access this library via Maven: ``` -Here is a short example: +There are multiple [examples](src/test/java/examples). Make sure to set `model.home` and `model.name` to run them: -```java -public class Example { +```bash +mvn exec:java -Dexec.mainClass="examples.MainExample" -Dmodel.home="/path/to/models" -Dmodel.name="codellama-13b.Q5_K_M.gguf" +``` - public static void main(String... args) throws IOException { - LlamaModel.setLogger((level, message) -> System.out.print(message)); - ModelParameters modelParams = new ModelParameters() - .setNGpuLayers(43); - InferenceParameters inferParams = new InferenceParameters() - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n"); +You can also run some integration tests, which will automatically download a model to `model.home`: - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; - String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + - "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + - "requests immediately and with precision.\n"; - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { - System.out.print(system); - String prompt = system; - while (true) { - prompt += "\nUser: "; - System.out.print("\nUser: "); - String input = reader.readLine(); - prompt += input; - System.out.print("Llama: "); - prompt += "\nLlama: "; - for (String output : model.generate(prompt, inferParams)) { - System.out.print(output); - prompt += output; - } - } - } - } -} +```bash +mvn verify -Dmodel.home=/path/to/models ``` -Also have a look at the [examples](src/test/java/examples). - ### No Setup required We support CPU inference for the following platforms out of the box: @@ -150,6 +120,50 @@ Look for the shared library in `build`. ## Documentation +### Example + +This is a short example on how to use this library: + +```java +public class Example { + + public static void main(String... args) throws IOException { + LlamaModel.setLogger((level, message) -> System.out.print(message)); + ModelParameters modelParams = new ModelParameters() + .setNGpuLayers(43); + InferenceParameters inferParams = new InferenceParameters() + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt("\n"); + + String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; + String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + + "requests immediately and with precision.\n"; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); + try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + System.out.print(system); + String prompt = system; + while (true) { + prompt += "\nUser: "; + System.out.print("\nUser: "); + String input = reader.readLine(); + prompt += input; + System.out.print("Llama: "); + prompt += "\nLlama: "; + for (String output : model.generate(prompt, inferParams)) { + System.out.print(output); + prompt += output; + } + } + } + } +} +``` + +Also have a look at the other [examples](src/test/java/examples). + ### Inference There are multiple inference tasks. In general, `LlamaModel` is stateless, i.e., you have to append the output of the From 160c4d75f3aac1776298b02a5a817325c330a13b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 12:16:35 +0100 Subject: [PATCH 068/384] Remove llama.cpp submodule --- .gitmodules | 3 --- src/main/cpp/llama.cpp | 1 - 2 files changed, 4 deletions(-) delete mode 100644 .gitmodules delete mode 160000 src/main/cpp/llama.cpp diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index fd82610c..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/main/cpp/llama.cpp"] - path = src/main/cpp/llama.cpp - url = https://github.com/ggerganov/llama.cpp.git diff --git a/src/main/cpp/llama.cpp b/src/main/cpp/llama.cpp deleted file mode 160000 index c6c4fc08..00000000 --- a/src/main/cpp/llama.cpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c6c4fc081c1df1c60a9bfe3e6a3fd086f1a29ec7 From e8028bba80824e5e7bca3bc702b9ba0415bc7a7d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 12:17:15 +0100 Subject: [PATCH 069/384] Switch llama.cpp dependency from git to cmake FetchContent --- CMakeLists.txt | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27979aed..3b40949c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.12) project(jllama CXX) +set(LLAMA_CPP_TAG b1645) + # todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? include(build-args.cmake) @@ -35,6 +37,9 @@ if(NOT DEFINED OS_NAME) OUTPUT_STRIP_TRAILING_WHITESPACE ) endif() +if(NOT OS_NAME) + message(FATAL_ERROR "Could not determine OS name") +endif() # find which architecture we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_ARCH) @@ -44,6 +49,21 @@ if(NOT DEFINED OS_ARCH) OUTPUT_STRIP_TRAILING_WHITESPACE ) endif() +if(NOT OS_ARCH) + message(FATAL_ERROR "Could not determine CPU architecture") +endif() + +set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) +message(STATUS "Installing files to ${JLLAMA_DIR}") + +# checkout llama.cpp +include(FetchContent) +FetchContent_Declare( + llama.cpp + GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git + GIT_TAG ${LLAMA_CPP_TAG} +) +FetchContent_MakeAvailable(llama.cpp) add_library(jllama SHARED src/main/cpp/jllama.cpp) @@ -53,27 +73,21 @@ target_include_directories(jllama PRIVATE src/main/cpp ) -add_subdirectory( - src/main/cpp/llama.cpp -) - target_link_libraries(jllama PRIVATE common llama ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES - RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} ) else() set_target_properties(jllama llama PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}" + LIBRARY_OUTPUT_DIRECTORY ${JLLAMA_DIR} ) endif() if (LLAMA_METAL) # copy ggml-metal.metal to bin directory - configure_file(src/main/cpp/llama.cpp/ggml-metal.metal ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}/ggml-metal.metal COPYONLY) + configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() - -message(STATUS "Installing files to ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}") From 5caeef45395b3adff1c0f92862bacffa02f38a5f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 12:17:29 +0100 Subject: [PATCH 070/384] Update readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7ed2ac26..f7c47c54 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,6 @@ Then, run the following commands in the directory of this repository (java-llama ```shell mvn compile -git submodule update --init --recursive mkdir build cd build cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend From a5e6e772af7733cefc51c781f101258998ff90ff Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 12:56:15 +0100 Subject: [PATCH 071/384] Rework release workflow --- {scripts => .github}/build.bat | 0 {scripts => .github}/build.sh | 0 .github/dockcross/dockcross-linux-arm64-lts | 278 ++++++++++++++++++ .github/dockcross/dockcross-manylinux2014-x64 | 278 ++++++++++++++++++ .github/dockcross/update.sh | 7 + .github/workflows/release.yaml | 223 +++++++++----- scripts/jni-signature | 14 - 7 files changed, 705 insertions(+), 95 deletions(-) rename {scripts => .github}/build.bat (100%) rename {scripts => .github}/build.sh (100%) create mode 100755 .github/dockcross/dockcross-linux-arm64-lts create mode 100755 .github/dockcross/dockcross-manylinux2014-x64 create mode 100755 .github/dockcross/update.sh delete mode 100755 scripts/jni-signature diff --git a/scripts/build.bat b/.github/build.bat similarity index 100% rename from scripts/build.bat rename to .github/build.bat diff --git a/scripts/build.sh b/.github/build.sh similarity index 100% rename from scripts/build.sh rename to .github/build.sh diff --git a/.github/dockcross/dockcross-linux-arm64-lts b/.github/dockcross/dockcross-linux-arm64-lts new file mode 100755 index 00000000..bc97231d --- /dev/null +++ b/.github/dockcross/dockcross-linux-arm64-lts @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/linux-arm64-lts:20231110-9476e91 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/linux-arm64-lts:20231110-9476e91 image, run: +# +# docker run --rm dockcross/linux-arm64-lts:20231110-9476e91 > dockcross-linux-arm64-lts-20231110-9476e91 +# chmod +x dockcross-linux-arm64-lts-20231110-9476e91 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/dockcross-manylinux2014-x64 b/.github/dockcross/dockcross-manylinux2014-x64 new file mode 100755 index 00000000..426c0142 --- /dev/null +++ b/.github/dockcross/dockcross-manylinux2014-x64 @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux2014-x64:20231110-9476e91 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/manylinux2014-x64:20231110-9476e91 image, run: +# +# docker run --rm dockcross/manylinux2014-x64:20231110-9476e91 > dockcross-manylinux2014-x64-20231110-9476e91 +# chmod +x dockcross-manylinux2014-x64-20231110-9476e91 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/update.sh b/.github/dockcross/update.sh new file mode 100755 index 00000000..0ea28c6c --- /dev/null +++ b/.github/dockcross/update.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# This script prints the commands to upgrade the docker cross compilation scripts +docker run --rm dockcross/manylinux2014-x64 > ./dockcross-manylinux2014-x64 +docker run --rm dockcross/manylinux2014-x86 > ./dockcross-manylinux2014-x86 +docker run --rm dockcross/linux-arm64-lts > ./dockcross-linux-arm64-lts +chmod +x ./dockcross-* diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 77120826..6cf8c699 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,120 +1,181 @@ -name: Build JNI bindings and publish to Maven Central +name: Release to Maven Central on: workflow_dispatch: release: types: [created] jobs: - build: - name: Build ${{ matrix.target.name }}-${{ matrix.target.arch }} - runs-on: ${{ matrix.target.image }} + + + build-linux-docker: + name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} + runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: - { - name: Linux, + os: Linux, arch: x86_64, - image: ubuntu-latest, - cmake: "-DCMAKE_CXX_FLAGS='-march=x86-64' -DLLAMA_NATIVE=OFF" + image: dockcross-manylinux2014-x64, } - { - name: Mac, + os: Linux, + arch: aarch64, + image: dockcross-linux-arm64-lts, + } + steps: + - uses: actions/checkout@v4 + - name: Build libraries + shell: bash + run: | + .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh "'-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}'" + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + + + build-macos-native: + name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + target: + - { + os: Mac, arch: x86_64, - image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_NATIVE=OFF" + cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64' } - { name: Mac, arch: aarch64, - image: macos-latest, - cmake: "-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_NATIVE=OFF" - } - - { - name: Windows, - arch: x86_64, - image: windows-latest, - cmake: "-DCMAKE_GENERATOR_PLATFORM=x64" + cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64' } steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - submodules: recursive - - name: CMake (Windows) - if: ${{ matrix.target.name == 'Windows' }} - shell: cmd - run: | - cd scripts && .\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: CMake (Unix) - if: ${{ matrix.target.name != 'Windows' }} + - uses: actions/checkout@v4 + - name: Build libraries shell: bash run: | - cd scripts && ./build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.name }} -DOS_ARCH=${{ matrix.target.arch }} - - name: Upload Windows Artifact - if: ${{ matrix.target.name == 'Windows' }} + ../jclingo/.github/build.sh ${{ matrix.target.cmake }} + .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: artifacts - path: ${{ github.workspace }}\src\main\resources\de\kherud\llama\ - - name: Upload Unix Artifact - if: ${{ matrix.target.name != 'Windows' }} + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + + + build-win-native: + name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + target: + - { + os: Windows, + arch: x86_64, + cmake: '-G "Visual Studio 17 2022" -A "x64"' + } + - { + os: Windows, + arch: aarch64, + cmake: '-G "Visual Studio 17 2022" -A "ARM64"' + } + - { + os: Windows, + arch: x86, + cmake: '-G "Visual Studio 17 2022" -A "Win32"' + } + - { + os: Windows, + arch: arm, + cmake: '-G "Visual Studio 17 2022" -A "ARM"' + } + steps: + - uses: actions/checkout@v4 + - name: Build libraries + shell: cmd + run: | + .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - build-linux-arm64: - name: Build Linux-aarch64 + + + test-linux: + name: Test Linux + needs: build-linux-docker runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: linux/arm64 - - name: CMake (Linux) - run: | - docker run \ - --rm \ - -v $(pwd):/${{ github.workspace }} \ - -w ${{ github.workspace }} \ - --platform linux/arm64 \ - eclipse-temurin:11 \ - sh -c "apt-get update && apt-get install -y cmake openjdk-11-jdk git build-essential && cd scripts && ./build.sh -DCMAKE_CXX_FLAGS='-march=armv8-a' -DOS_NAME=Linux -DOS_ARCH=aarch64" - # The above apt-get commands can be moved to a Dockerfile, but then - # the image needs to be built for the docker-arch architecture, - # which means using the docker/setup-buildx-action - - name: Upload Unix Artifact - uses: actions/upload-artifact@v3 + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - publish: - needs: [build,build-linux-arm64] - runs-on: ubuntu-latest + - name: Run tests + shell: bash + run: mvn verify -Dmodel.home=target + + + test-macos: + name: Test Mac + needs: build-macos-native + runs-on: macos-latest steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - name: Download Artifacts - uses: actions/download-artifact@v3 + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Set up Maven Central Repository - uses: actions/setup-java@v3 + - name: Run tests + shell: bash + run: mvn verify -Dmodel.home=target + + + test-windows: + name: Test Windows + needs: build-win-native + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 with: - java-version: '17' - distribution: 'zulu' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD - gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - name: Publish package - run: mvn --batch-mode -P release deploy - env: - MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Run tests + shell: cmd + run: mvn verify -Dmodel.home=target + + +# publish: +# needs: [build,build-linux-arm64] +# runs-on: ubuntu-latest +# steps: +# - name: Checkout Repository +# uses: actions/checkout@v4 +# - name: Download Artifacts +# uses: actions/download-artifact@v3 +# with: +# name: artifacts +# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - name: Set up Maven Central Repository +# uses: actions/setup-java@v3 +# with: +# java-version: '17' +# distribution: 'zulu' +# server-id: ossrh +# server-username: MAVEN_USERNAME +# server-password: MAVEN_PASSWORD +# gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} +# gpg-passphrase: MAVEN_GPG_PASSPHRASE +# - name: Publish package +# run: mvn --batch-mode -P release deploy +# env: +# MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} +# MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} +# MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/scripts/jni-signature b/scripts/jni-signature deleted file mode 100755 index 8fc1886b..00000000 --- a/scripts/jni-signature +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -if [ -z "$1" ]; then - echo "Usage: $0 target/path/to/YourClass.class" - exit 1 -fi - -CLASS_NAME=$(basename "$1" .class) -CLASS_PATH=$(dirname "$1") - -echo $CLASS_NAME -echo $CLASS_PATH - -javap -s -p -cp "$CLASS_PATH" "$CLASS_NAME" From 71b7240a848808cab159b137c5171ee9a2a790e5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 13:00:42 +0100 Subject: [PATCH 072/384] Some release workflow fixes --- .github/build.bat | 11 +++-------- .github/build.sh | 9 +++------ .github/workflows/release.yaml | 3 +-- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/.github/build.bat b/.github/build.bat index 277fd1de..a904405e 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -1,12 +1,7 @@ @echo off -pushd .. -if not exist "build" ( - mkdir build -) -cd build -cmake .. %* -cmake --build . --config Release -popd +mkdir build +cmake -Bbuild %* +cmake --build build --config Release if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file diff --git a/.github/build.sh b/.github/build.sh index 2dbc3f88..6919d86f 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,8 +1,5 @@ #!/bin/bash -pushd .. -mkdir -p build -cd build -cmake .. $@ || (popd && exit 1) -cmake --build . --config Release || (popd && exit 1) -popd +mkdir build +cmake -Bbuild $@ || exit 1 +cmake --build build --config Release || exit 1 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6cf8c699..0253fad6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -49,7 +49,7 @@ jobs: cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64' } - { - name: Mac, + os: Mac, arch: aarch64, cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64' } @@ -58,7 +58,6 @@ jobs: - name: Build libraries shell: bash run: | - ../jclingo/.github/build.sh ${{ matrix.target.cmake }} .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts uses: actions/upload-artifact@v3 From 7a7939ecc44fa87b50c98b4c4aae33720e586d0a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 13:37:58 +0100 Subject: [PATCH 073/384] Add provided jni headers --- .github/include/unix/jni.h | 2001 ++++++++++++++++++++++++++++++ .github/include/unix/jni_md.h | 56 + .github/include/windows/jni.h | 2001 ++++++++++++++++++++++++++++++ .github/include/windows/jni_md.h | 38 + CMakeLists.txt | 71 +- 5 files changed, 4133 insertions(+), 34 deletions(-) create mode 100644 .github/include/unix/jni.h create mode 100644 .github/include/unix/jni_md.h create mode 100644 .github/include/windows/jni.h create mode 100644 .github/include/windows/jni_md.h diff --git a/.github/include/unix/jni.h b/.github/include/unix/jni.h new file mode 100644 index 00000000..c85da1bc --- /dev/null +++ b/.github/include/unix/jni.h @@ -0,0 +1,2001 @@ +/* + * Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * We used part of Netscape's Java Runtime Interface (JRI) as the starting + * point of our design and implementation. + */ + +/****************************************************************************** + * Java Runtime Interface + * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. + *****************************************************************************/ + +#ifndef _JAVASOFT_JNI_H_ +#define _JAVASOFT_JNI_H_ + +#include +#include + +/* jni_md.h contains the machine-dependent typedefs for jbyte, jint + and jlong */ + +#include "jni_md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * JNI Types + */ + +#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H + +typedef unsigned char jboolean; +typedef unsigned short jchar; +typedef short jshort; +typedef float jfloat; +typedef double jdouble; + +typedef jint jsize; + +#ifdef __cplusplus + +class _jobject {}; +class _jclass : public _jobject {}; +class _jthrowable : public _jobject {}; +class _jstring : public _jobject {}; +class _jarray : public _jobject {}; +class _jbooleanArray : public _jarray {}; +class _jbyteArray : public _jarray {}; +class _jcharArray : public _jarray {}; +class _jshortArray : public _jarray {}; +class _jintArray : public _jarray {}; +class _jlongArray : public _jarray {}; +class _jfloatArray : public _jarray {}; +class _jdoubleArray : public _jarray {}; +class _jobjectArray : public _jarray {}; + +typedef _jobject *jobject; +typedef _jclass *jclass; +typedef _jthrowable *jthrowable; +typedef _jstring *jstring; +typedef _jarray *jarray; +typedef _jbooleanArray *jbooleanArray; +typedef _jbyteArray *jbyteArray; +typedef _jcharArray *jcharArray; +typedef _jshortArray *jshortArray; +typedef _jintArray *jintArray; +typedef _jlongArray *jlongArray; +typedef _jfloatArray *jfloatArray; +typedef _jdoubleArray *jdoubleArray; +typedef _jobjectArray *jobjectArray; + +#else + +struct _jobject; + +typedef struct _jobject *jobject; +typedef jobject jclass; +typedef jobject jthrowable; +typedef jobject jstring; +typedef jobject jarray; +typedef jarray jbooleanArray; +typedef jarray jbyteArray; +typedef jarray jcharArray; +typedef jarray jshortArray; +typedef jarray jintArray; +typedef jarray jlongArray; +typedef jarray jfloatArray; +typedef jarray jdoubleArray; +typedef jarray jobjectArray; + +#endif + +typedef jobject jweak; + +typedef union jvalue { + jboolean z; + jbyte b; + jchar c; + jshort s; + jint i; + jlong j; + jfloat f; + jdouble d; + jobject l; +} jvalue; + +struct _jfieldID; +typedef struct _jfieldID *jfieldID; + +struct _jmethodID; +typedef struct _jmethodID *jmethodID; + +/* Return values from jobjectRefType */ +typedef enum _jobjectType { + JNIInvalidRefType = 0, + JNILocalRefType = 1, + JNIGlobalRefType = 2, + JNIWeakGlobalRefType = 3 +} jobjectRefType; + + +#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ + +/* + * jboolean constants + */ + +#define JNI_FALSE 0 +#define JNI_TRUE 1 + +/* + * possible return values for JNI functions. + */ + +#define JNI_OK 0 /* success */ +#define JNI_ERR (-1) /* unknown error */ +#define JNI_EDETACHED (-2) /* thread detached from the VM */ +#define JNI_EVERSION (-3) /* JNI version error */ +#define JNI_ENOMEM (-4) /* not enough memory */ +#define JNI_EEXIST (-5) /* VM already created */ +#define JNI_EINVAL (-6) /* invalid arguments */ + +/* + * used in ReleaseScalarArrayElements + */ + +#define JNI_COMMIT 1 +#define JNI_ABORT 2 + +/* + * used in RegisterNatives to describe native method name, signature, + * and function pointer. + */ + +typedef struct { + char *name; + char *signature; + void *fnPtr; +} JNINativeMethod; + +/* + * JNI Native Method Interface. + */ + +struct JNINativeInterface_; + +struct JNIEnv_; + +#ifdef __cplusplus +typedef JNIEnv_ JNIEnv; +#else +typedef const struct JNINativeInterface_ *JNIEnv; +#endif + +/* + * JNI Invocation Interface. + */ + +struct JNIInvokeInterface_; + +struct JavaVM_; + +#ifdef __cplusplus +typedef JavaVM_ JavaVM; +#else +typedef const struct JNIInvokeInterface_ *JavaVM; +#endif + +struct JNINativeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + void *reserved3; + jint (JNICALL *GetVersion)(JNIEnv *env); + + jclass (JNICALL *DefineClass) + (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, + jsize len); + jclass (JNICALL *FindClass) + (JNIEnv *env, const char *name); + + jmethodID (JNICALL *FromReflectedMethod) + (JNIEnv *env, jobject method); + jfieldID (JNICALL *FromReflectedField) + (JNIEnv *env, jobject field); + + jobject (JNICALL *ToReflectedMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); + + jclass (JNICALL *GetSuperclass) + (JNIEnv *env, jclass sub); + jboolean (JNICALL *IsAssignableFrom) + (JNIEnv *env, jclass sub, jclass sup); + + jobject (JNICALL *ToReflectedField) + (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); + + jint (JNICALL *Throw) + (JNIEnv *env, jthrowable obj); + jint (JNICALL *ThrowNew) + (JNIEnv *env, jclass clazz, const char *msg); + jthrowable (JNICALL *ExceptionOccurred) + (JNIEnv *env); + void (JNICALL *ExceptionDescribe) + (JNIEnv *env); + void (JNICALL *ExceptionClear) + (JNIEnv *env); + void (JNICALL *FatalError) + (JNIEnv *env, const char *msg); + + jint (JNICALL *PushLocalFrame) + (JNIEnv *env, jint capacity); + jobject (JNICALL *PopLocalFrame) + (JNIEnv *env, jobject result); + + jobject (JNICALL *NewGlobalRef) + (JNIEnv *env, jobject lobj); + void (JNICALL *DeleteGlobalRef) + (JNIEnv *env, jobject gref); + void (JNICALL *DeleteLocalRef) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsSameObject) + (JNIEnv *env, jobject obj1, jobject obj2); + jobject (JNICALL *NewLocalRef) + (JNIEnv *env, jobject ref); + jint (JNICALL *EnsureLocalCapacity) + (JNIEnv *env, jint capacity); + + jobject (JNICALL *AllocObject) + (JNIEnv *env, jclass clazz); + jobject (JNICALL *NewObject) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *NewObjectV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *NewObjectA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jclass (JNICALL *GetObjectClass) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsInstanceOf) + (JNIEnv *env, jobject obj, jclass clazz); + + jmethodID (JNICALL *GetMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallObjectMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jobject (JNICALL *CallObjectMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jobject (JNICALL *CallObjectMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jboolean (JNICALL *CallBooleanMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jboolean (JNICALL *CallBooleanMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jboolean (JNICALL *CallBooleanMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jbyte (JNICALL *CallByteMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jbyte (JNICALL *CallByteMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jbyte (JNICALL *CallByteMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallCharMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jchar (JNICALL *CallCharMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jchar (JNICALL *CallCharMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallShortMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jshort (JNICALL *CallShortMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jshort (JNICALL *CallShortMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallIntMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jint (JNICALL *CallIntMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jint (JNICALL *CallIntMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallLongMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jlong (JNICALL *CallLongMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jlong (JNICALL *CallLongMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallFloatMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jfloat (JNICALL *CallFloatMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jfloat (JNICALL *CallFloatMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallDoubleMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jdouble (JNICALL *CallDoubleMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jdouble (JNICALL *CallDoubleMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallVoidMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + void (JNICALL *CallVoidMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + void (JNICALL *CallVoidMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jobject (JNICALL *CallNonvirtualObjectMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallNonvirtualObjectMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jobject (JNICALL *CallNonvirtualObjectMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jboolean (JNICALL *CallNonvirtualBooleanMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallNonvirtualBooleanMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jboolean (JNICALL *CallNonvirtualBooleanMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jbyte (JNICALL *CallNonvirtualByteMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallNonvirtualByteMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jbyte (JNICALL *CallNonvirtualByteMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jchar (JNICALL *CallNonvirtualCharMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallNonvirtualCharMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jchar (JNICALL *CallNonvirtualCharMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jshort (JNICALL *CallNonvirtualShortMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallNonvirtualShortMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jshort (JNICALL *CallNonvirtualShortMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jint (JNICALL *CallNonvirtualIntMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallNonvirtualIntMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jint (JNICALL *CallNonvirtualIntMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jlong (JNICALL *CallNonvirtualLongMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallNonvirtualLongMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jlong (JNICALL *CallNonvirtualLongMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jfloat (JNICALL *CallNonvirtualFloatMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallNonvirtualFloatMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jfloat (JNICALL *CallNonvirtualFloatMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jdouble (JNICALL *CallNonvirtualDoubleMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallNonvirtualDoubleMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jdouble (JNICALL *CallNonvirtualDoubleMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + void (JNICALL *CallNonvirtualVoidMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + void (JNICALL *CallNonvirtualVoidMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + void (JNICALL *CallNonvirtualVoidMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jfieldID (JNICALL *GetFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *GetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jboolean (JNICALL *GetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jbyte (JNICALL *GetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jchar (JNICALL *GetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jshort (JNICALL *GetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jint (JNICALL *GetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jlong (JNICALL *GetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jfloat (JNICALL *GetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jdouble (JNICALL *GetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + + void (JNICALL *SetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); + void (JNICALL *SetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); + void (JNICALL *SetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); + void (JNICALL *SetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); + void (JNICALL *SetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); + void (JNICALL *SetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); + void (JNICALL *SetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); + void (JNICALL *SetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); + void (JNICALL *SetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); + + jmethodID (JNICALL *GetStaticMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallStaticObjectMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallStaticObjectMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *CallStaticObjectMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jboolean (JNICALL *CallStaticBooleanMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallStaticBooleanMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jboolean (JNICALL *CallStaticBooleanMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jbyte (JNICALL *CallStaticByteMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallStaticByteMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jbyte (JNICALL *CallStaticByteMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallStaticCharMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallStaticCharMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jchar (JNICALL *CallStaticCharMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallStaticShortMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallStaticShortMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jshort (JNICALL *CallStaticShortMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallStaticIntMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallStaticIntMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jint (JNICALL *CallStaticIntMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallStaticLongMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallStaticLongMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jlong (JNICALL *CallStaticLongMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallStaticFloatMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallStaticFloatMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jfloat (JNICALL *CallStaticFloatMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallStaticDoubleMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallStaticDoubleMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jdouble (JNICALL *CallStaticDoubleMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallStaticVoidMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, ...); + void (JNICALL *CallStaticVoidMethodV) + (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); + void (JNICALL *CallStaticVoidMethodA) + (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); + + jfieldID (JNICALL *GetStaticFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + jobject (JNICALL *GetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jboolean (JNICALL *GetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jbyte (JNICALL *GetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jchar (JNICALL *GetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jshort (JNICALL *GetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jint (JNICALL *GetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jlong (JNICALL *GetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jfloat (JNICALL *GetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jdouble (JNICALL *GetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + + void (JNICALL *SetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); + void (JNICALL *SetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); + void (JNICALL *SetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); + void (JNICALL *SetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); + void (JNICALL *SetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); + void (JNICALL *SetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); + void (JNICALL *SetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); + void (JNICALL *SetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); + void (JNICALL *SetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); + + jstring (JNICALL *NewString) + (JNIEnv *env, const jchar *unicode, jsize len); + jsize (JNICALL *GetStringLength) + (JNIEnv *env, jstring str); + const jchar *(JNICALL *GetStringChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringChars) + (JNIEnv *env, jstring str, const jchar *chars); + + jstring (JNICALL *NewStringUTF) + (JNIEnv *env, const char *utf); + jsize (JNICALL *GetStringUTFLength) + (JNIEnv *env, jstring str); + const char* (JNICALL *GetStringUTFChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringUTFChars) + (JNIEnv *env, jstring str, const char* chars); + + + jsize (JNICALL *GetArrayLength) + (JNIEnv *env, jarray array); + + jobjectArray (JNICALL *NewObjectArray) + (JNIEnv *env, jsize len, jclass clazz, jobject init); + jobject (JNICALL *GetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index); + void (JNICALL *SetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index, jobject val); + + jbooleanArray (JNICALL *NewBooleanArray) + (JNIEnv *env, jsize len); + jbyteArray (JNICALL *NewByteArray) + (JNIEnv *env, jsize len); + jcharArray (JNICALL *NewCharArray) + (JNIEnv *env, jsize len); + jshortArray (JNICALL *NewShortArray) + (JNIEnv *env, jsize len); + jintArray (JNICALL *NewIntArray) + (JNIEnv *env, jsize len); + jlongArray (JNICALL *NewLongArray) + (JNIEnv *env, jsize len); + jfloatArray (JNICALL *NewFloatArray) + (JNIEnv *env, jsize len); + jdoubleArray (JNICALL *NewDoubleArray) + (JNIEnv *env, jsize len); + + jboolean * (JNICALL *GetBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *isCopy); + jbyte * (JNICALL *GetByteArrayElements) + (JNIEnv *env, jbyteArray array, jboolean *isCopy); + jchar * (JNICALL *GetCharArrayElements) + (JNIEnv *env, jcharArray array, jboolean *isCopy); + jshort * (JNICALL *GetShortArrayElements) + (JNIEnv *env, jshortArray array, jboolean *isCopy); + jint * (JNICALL *GetIntArrayElements) + (JNIEnv *env, jintArray array, jboolean *isCopy); + jlong * (JNICALL *GetLongArrayElements) + (JNIEnv *env, jlongArray array, jboolean *isCopy); + jfloat * (JNICALL *GetFloatArrayElements) + (JNIEnv *env, jfloatArray array, jboolean *isCopy); + jdouble * (JNICALL *GetDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jboolean *isCopy); + + void (JNICALL *ReleaseBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); + void (JNICALL *ReleaseByteArrayElements) + (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); + void (JNICALL *ReleaseCharArrayElements) + (JNIEnv *env, jcharArray array, jchar *elems, jint mode); + void (JNICALL *ReleaseShortArrayElements) + (JNIEnv *env, jshortArray array, jshort *elems, jint mode); + void (JNICALL *ReleaseIntArrayElements) + (JNIEnv *env, jintArray array, jint *elems, jint mode); + void (JNICALL *ReleaseLongArrayElements) + (JNIEnv *env, jlongArray array, jlong *elems, jint mode); + void (JNICALL *ReleaseFloatArrayElements) + (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); + void (JNICALL *ReleaseDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); + + void (JNICALL *GetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); + void (JNICALL *GetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); + void (JNICALL *GetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); + void (JNICALL *GetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); + void (JNICALL *GetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); + void (JNICALL *GetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); + void (JNICALL *GetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); + void (JNICALL *GetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); + + void (JNICALL *SetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); + void (JNICALL *SetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); + void (JNICALL *SetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); + void (JNICALL *SetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); + void (JNICALL *SetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); + void (JNICALL *SetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); + void (JNICALL *SetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); + void (JNICALL *SetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); + + jint (JNICALL *RegisterNatives) + (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, + jint nMethods); + jint (JNICALL *UnregisterNatives) + (JNIEnv *env, jclass clazz); + + jint (JNICALL *MonitorEnter) + (JNIEnv *env, jobject obj); + jint (JNICALL *MonitorExit) + (JNIEnv *env, jobject obj); + + jint (JNICALL *GetJavaVM) + (JNIEnv *env, JavaVM **vm); + + void (JNICALL *GetStringRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); + void (JNICALL *GetStringUTFRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); + + void * (JNICALL *GetPrimitiveArrayCritical) + (JNIEnv *env, jarray array, jboolean *isCopy); + void (JNICALL *ReleasePrimitiveArrayCritical) + (JNIEnv *env, jarray array, void *carray, jint mode); + + const jchar * (JNICALL *GetStringCritical) + (JNIEnv *env, jstring string, jboolean *isCopy); + void (JNICALL *ReleaseStringCritical) + (JNIEnv *env, jstring string, const jchar *cstring); + + jweak (JNICALL *NewWeakGlobalRef) + (JNIEnv *env, jobject obj); + void (JNICALL *DeleteWeakGlobalRef) + (JNIEnv *env, jweak ref); + + jboolean (JNICALL *ExceptionCheck) + (JNIEnv *env); + + jobject (JNICALL *NewDirectByteBuffer) + (JNIEnv* env, void* address, jlong capacity); + void* (JNICALL *GetDirectBufferAddress) + (JNIEnv* env, jobject buf); + jlong (JNICALL *GetDirectBufferCapacity) + (JNIEnv* env, jobject buf); + + /* New JNI 1.6 Features */ + + jobjectRefType (JNICALL *GetObjectRefType) + (JNIEnv* env, jobject obj); + + /* Module Features */ + + jobject (JNICALL *GetModule) + (JNIEnv* env, jclass clazz); + + /* Virtual threads */ + + jboolean (JNICALL *IsVirtualThread) + (JNIEnv* env, jobject obj); +}; + +/* + * We use inlined functions for C++ so that programmers can write: + * + * env->FindClass("java/lang/String") + * + * in C++ rather than: + * + * (*env)->FindClass(env, "java/lang/String") + * + * in C. + */ + +struct JNIEnv_ { + const struct JNINativeInterface_ *functions; +#ifdef __cplusplus + + jint GetVersion() { + return functions->GetVersion(this); + } + jclass DefineClass(const char *name, jobject loader, const jbyte *buf, + jsize len) { + return functions->DefineClass(this, name, loader, buf, len); + } + jclass FindClass(const char *name) { + return functions->FindClass(this, name); + } + jmethodID FromReflectedMethod(jobject method) { + return functions->FromReflectedMethod(this,method); + } + jfieldID FromReflectedField(jobject field) { + return functions->FromReflectedField(this,field); + } + + jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { + return functions->ToReflectedMethod(this, cls, methodID, isStatic); + } + + jclass GetSuperclass(jclass sub) { + return functions->GetSuperclass(this, sub); + } + jboolean IsAssignableFrom(jclass sub, jclass sup) { + return functions->IsAssignableFrom(this, sub, sup); + } + + jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { + return functions->ToReflectedField(this,cls,fieldID,isStatic); + } + + jint Throw(jthrowable obj) { + return functions->Throw(this, obj); + } + jint ThrowNew(jclass clazz, const char *msg) { + return functions->ThrowNew(this, clazz, msg); + } + jthrowable ExceptionOccurred() { + return functions->ExceptionOccurred(this); + } + void ExceptionDescribe() { + functions->ExceptionDescribe(this); + } + void ExceptionClear() { + functions->ExceptionClear(this); + } + void FatalError(const char *msg) { + functions->FatalError(this, msg); + } + + jint PushLocalFrame(jint capacity) { + return functions->PushLocalFrame(this,capacity); + } + jobject PopLocalFrame(jobject result) { + return functions->PopLocalFrame(this,result); + } + + jobject NewGlobalRef(jobject lobj) { + return functions->NewGlobalRef(this,lobj); + } + void DeleteGlobalRef(jobject gref) { + functions->DeleteGlobalRef(this,gref); + } + void DeleteLocalRef(jobject obj) { + functions->DeleteLocalRef(this, obj); + } + + jboolean IsSameObject(jobject obj1, jobject obj2) { + return functions->IsSameObject(this,obj1,obj2); + } + + jobject NewLocalRef(jobject ref) { + return functions->NewLocalRef(this,ref); + } + jint EnsureLocalCapacity(jint capacity) { + return functions->EnsureLocalCapacity(this,capacity); + } + + jobject AllocObject(jclass clazz) { + return functions->AllocObject(this,clazz); + } + jobject NewObject(jclass clazz, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args, methodID); + result = functions->NewObjectV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject NewObjectV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->NewObjectV(this,clazz,methodID,args); + } + jobject NewObjectA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->NewObjectA(this,clazz,methodID,args); + } + + jclass GetObjectClass(jobject obj) { + return functions->GetObjectClass(this,obj); + } + jboolean IsInstanceOf(jobject obj, jclass clazz) { + return functions->IsInstanceOf(this,obj,clazz); + } + + jmethodID GetMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetMethodID(this,clazz,name,sig); + } + + jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallObjectMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jobject CallObjectMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallObjectMethodV(this,obj,methodID,args); + } + jobject CallObjectMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallObjectMethodA(this,obj,methodID,args); + } + + jboolean CallBooleanMethod(jobject obj, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallBooleanMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallBooleanMethodV(this,obj,methodID,args); + } + jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallBooleanMethodA(this,obj,methodID, args); + } + + jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallByteMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jbyte CallByteMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallByteMethodV(this,obj,methodID,args); + } + jbyte CallByteMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallByteMethodA(this,obj,methodID,args); + } + + jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallCharMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jchar CallCharMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallCharMethodV(this,obj,methodID,args); + } + jchar CallCharMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallCharMethodA(this,obj,methodID,args); + } + + jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallShortMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jshort CallShortMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallShortMethodV(this,obj,methodID,args); + } + jshort CallShortMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallShortMethodA(this,obj,methodID,args); + } + + jint CallIntMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallIntMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jint CallIntMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallIntMethodV(this,obj,methodID,args); + } + jint CallIntMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallIntMethodA(this,obj,methodID,args); + } + + jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallLongMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jlong CallLongMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallLongMethodV(this,obj,methodID,args); + } + jlong CallLongMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallLongMethodA(this,obj,methodID,args); + } + + jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallFloatMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jfloat CallFloatMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallFloatMethodV(this,obj,methodID,args); + } + jfloat CallFloatMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallFloatMethodA(this,obj,methodID,args); + } + + jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallDoubleMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallDoubleMethodV(this,obj,methodID,args); + } + jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallDoubleMethodA(this,obj,methodID,args); + } + + void CallVoidMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallVoidMethodV(this,obj,methodID,args); + va_end(args); + } + void CallVoidMethodV(jobject obj, jmethodID methodID, + va_list args) { + functions->CallVoidMethodV(this,obj,methodID,args); + } + void CallVoidMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + functions->CallVoidMethodA(this,obj,methodID,args); + } + + jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + } + jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualObjectMethodA(this,obj,clazz, + methodID,args); + } + + jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + } + jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, + methodID, args); + } + + jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + } + jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualByteMethodA(this,obj,clazz, + methodID,args); + } + + jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + } + jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualCharMethodA(this,obj,clazz, + methodID,args); + } + + jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + } + jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualShortMethodA(this,obj,clazz, + methodID,args); + } + + jint CallNonvirtualIntMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + } + jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualIntMethodA(this,obj,clazz, + methodID,args); + } + + jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + } + jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualLongMethodA(this,obj,clazz, + methodID,args); + } + + jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + } + jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualFloatMethodA(this,obj,clazz, + methodID,args); + } + + jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + } + jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, + methodID,args); + } + + void CallNonvirtualVoidMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + va_end(args); + } + void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + } + void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); + } + + jfieldID GetFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetFieldID(this,clazz,name,sig); + } + + jobject GetObjectField(jobject obj, jfieldID fieldID) { + return functions->GetObjectField(this,obj,fieldID); + } + jboolean GetBooleanField(jobject obj, jfieldID fieldID) { + return functions->GetBooleanField(this,obj,fieldID); + } + jbyte GetByteField(jobject obj, jfieldID fieldID) { + return functions->GetByteField(this,obj,fieldID); + } + jchar GetCharField(jobject obj, jfieldID fieldID) { + return functions->GetCharField(this,obj,fieldID); + } + jshort GetShortField(jobject obj, jfieldID fieldID) { + return functions->GetShortField(this,obj,fieldID); + } + jint GetIntField(jobject obj, jfieldID fieldID) { + return functions->GetIntField(this,obj,fieldID); + } + jlong GetLongField(jobject obj, jfieldID fieldID) { + return functions->GetLongField(this,obj,fieldID); + } + jfloat GetFloatField(jobject obj, jfieldID fieldID) { + return functions->GetFloatField(this,obj,fieldID); + } + jdouble GetDoubleField(jobject obj, jfieldID fieldID) { + return functions->GetDoubleField(this,obj,fieldID); + } + + void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { + functions->SetObjectField(this,obj,fieldID,val); + } + void SetBooleanField(jobject obj, jfieldID fieldID, + jboolean val) { + functions->SetBooleanField(this,obj,fieldID,val); + } + void SetByteField(jobject obj, jfieldID fieldID, + jbyte val) { + functions->SetByteField(this,obj,fieldID,val); + } + void SetCharField(jobject obj, jfieldID fieldID, + jchar val) { + functions->SetCharField(this,obj,fieldID,val); + } + void SetShortField(jobject obj, jfieldID fieldID, + jshort val) { + functions->SetShortField(this,obj,fieldID,val); + } + void SetIntField(jobject obj, jfieldID fieldID, + jint val) { + functions->SetIntField(this,obj,fieldID,val); + } + void SetLongField(jobject obj, jfieldID fieldID, + jlong val) { + functions->SetLongField(this,obj,fieldID,val); + } + void SetFloatField(jobject obj, jfieldID fieldID, + jfloat val) { + functions->SetFloatField(this,obj,fieldID,val); + } + void SetDoubleField(jobject obj, jfieldID fieldID, + jdouble val) { + functions->SetDoubleField(this,obj,fieldID,val); + } + + jmethodID GetStaticMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticMethodID(this,clazz,name,sig); + } + + jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, + ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->CallStaticObjectMethodV(this,clazz,methodID,args); + } + jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->CallStaticObjectMethodA(this,clazz,methodID,args); + } + + jboolean CallStaticBooleanMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jboolean CallStaticBooleanMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + } + jboolean CallStaticBooleanMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); + } + + jbyte CallStaticByteMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallStaticByteMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jbyte CallStaticByteMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticByteMethodV(this,clazz,methodID,args); + } + jbyte CallStaticByteMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticByteMethodA(this,clazz,methodID,args); + } + + jchar CallStaticCharMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallStaticCharMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jchar CallStaticCharMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticCharMethodV(this,clazz,methodID,args); + } + jchar CallStaticCharMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticCharMethodA(this,clazz,methodID,args); + } + + jshort CallStaticShortMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallStaticShortMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jshort CallStaticShortMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticShortMethodV(this,clazz,methodID,args); + } + jshort CallStaticShortMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticShortMethodA(this,clazz,methodID,args); + } + + jint CallStaticIntMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallStaticIntMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jint CallStaticIntMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticIntMethodV(this,clazz,methodID,args); + } + jint CallStaticIntMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticIntMethodA(this,clazz,methodID,args); + } + + jlong CallStaticLongMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallStaticLongMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jlong CallStaticLongMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticLongMethodV(this,clazz,methodID,args); + } + jlong CallStaticLongMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticLongMethodA(this,clazz,methodID,args); + } + + jfloat CallStaticFloatMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jfloat CallStaticFloatMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticFloatMethodV(this,clazz,methodID,args); + } + jfloat CallStaticFloatMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticFloatMethodA(this,clazz,methodID,args); + } + + jdouble CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jdouble CallStaticDoubleMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + } + jdouble CallStaticDoubleMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); + } + + void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallStaticVoidMethodV(this,cls,methodID,args); + va_end(args); + } + void CallStaticVoidMethodV(jclass cls, jmethodID methodID, + va_list args) { + functions->CallStaticVoidMethodV(this,cls,methodID,args); + } + void CallStaticVoidMethodA(jclass cls, jmethodID methodID, + const jvalue * args) { + functions->CallStaticVoidMethodA(this,cls,methodID,args); + } + + jfieldID GetStaticFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticFieldID(this,clazz,name,sig); + } + jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticObjectField(this,clazz,fieldID); + } + jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticBooleanField(this,clazz,fieldID); + } + jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticByteField(this,clazz,fieldID); + } + jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticCharField(this,clazz,fieldID); + } + jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticShortField(this,clazz,fieldID); + } + jint GetStaticIntField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticIntField(this,clazz,fieldID); + } + jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticLongField(this,clazz,fieldID); + } + jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticFloatField(this,clazz,fieldID); + } + jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticDoubleField(this,clazz,fieldID); + } + + void SetStaticObjectField(jclass clazz, jfieldID fieldID, + jobject value) { + functions->SetStaticObjectField(this,clazz,fieldID,value); + } + void SetStaticBooleanField(jclass clazz, jfieldID fieldID, + jboolean value) { + functions->SetStaticBooleanField(this,clazz,fieldID,value); + } + void SetStaticByteField(jclass clazz, jfieldID fieldID, + jbyte value) { + functions->SetStaticByteField(this,clazz,fieldID,value); + } + void SetStaticCharField(jclass clazz, jfieldID fieldID, + jchar value) { + functions->SetStaticCharField(this,clazz,fieldID,value); + } + void SetStaticShortField(jclass clazz, jfieldID fieldID, + jshort value) { + functions->SetStaticShortField(this,clazz,fieldID,value); + } + void SetStaticIntField(jclass clazz, jfieldID fieldID, + jint value) { + functions->SetStaticIntField(this,clazz,fieldID,value); + } + void SetStaticLongField(jclass clazz, jfieldID fieldID, + jlong value) { + functions->SetStaticLongField(this,clazz,fieldID,value); + } + void SetStaticFloatField(jclass clazz, jfieldID fieldID, + jfloat value) { + functions->SetStaticFloatField(this,clazz,fieldID,value); + } + void SetStaticDoubleField(jclass clazz, jfieldID fieldID, + jdouble value) { + functions->SetStaticDoubleField(this,clazz,fieldID,value); + } + + jstring NewString(const jchar *unicode, jsize len) { + return functions->NewString(this,unicode,len); + } + jsize GetStringLength(jstring str) { + return functions->GetStringLength(this,str); + } + const jchar *GetStringChars(jstring str, jboolean *isCopy) { + return functions->GetStringChars(this,str,isCopy); + } + void ReleaseStringChars(jstring str, const jchar *chars) { + functions->ReleaseStringChars(this,str,chars); + } + + jstring NewStringUTF(const char *utf) { + return functions->NewStringUTF(this,utf); + } + jsize GetStringUTFLength(jstring str) { + return functions->GetStringUTFLength(this,str); + } + const char* GetStringUTFChars(jstring str, jboolean *isCopy) { + return functions->GetStringUTFChars(this,str,isCopy); + } + void ReleaseStringUTFChars(jstring str, const char* chars) { + functions->ReleaseStringUTFChars(this,str,chars); + } + + jsize GetArrayLength(jarray array) { + return functions->GetArrayLength(this,array); + } + + jobjectArray NewObjectArray(jsize len, jclass clazz, + jobject init) { + return functions->NewObjectArray(this,len,clazz,init); + } + jobject GetObjectArrayElement(jobjectArray array, jsize index) { + return functions->GetObjectArrayElement(this,array,index); + } + void SetObjectArrayElement(jobjectArray array, jsize index, + jobject val) { + functions->SetObjectArrayElement(this,array,index,val); + } + + jbooleanArray NewBooleanArray(jsize len) { + return functions->NewBooleanArray(this,len); + } + jbyteArray NewByteArray(jsize len) { + return functions->NewByteArray(this,len); + } + jcharArray NewCharArray(jsize len) { + return functions->NewCharArray(this,len); + } + jshortArray NewShortArray(jsize len) { + return functions->NewShortArray(this,len); + } + jintArray NewIntArray(jsize len) { + return functions->NewIntArray(this,len); + } + jlongArray NewLongArray(jsize len) { + return functions->NewLongArray(this,len); + } + jfloatArray NewFloatArray(jsize len) { + return functions->NewFloatArray(this,len); + } + jdoubleArray NewDoubleArray(jsize len) { + return functions->NewDoubleArray(this,len); + } + + jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { + return functions->GetBooleanArrayElements(this,array,isCopy); + } + jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { + return functions->GetByteArrayElements(this,array,isCopy); + } + jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { + return functions->GetCharArrayElements(this,array,isCopy); + } + jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { + return functions->GetShortArrayElements(this,array,isCopy); + } + jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { + return functions->GetIntArrayElements(this,array,isCopy); + } + jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { + return functions->GetLongArrayElements(this,array,isCopy); + } + jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { + return functions->GetFloatArrayElements(this,array,isCopy); + } + jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { + return functions->GetDoubleArrayElements(this,array,isCopy); + } + + void ReleaseBooleanArrayElements(jbooleanArray array, + jboolean *elems, + jint mode) { + functions->ReleaseBooleanArrayElements(this,array,elems,mode); + } + void ReleaseByteArrayElements(jbyteArray array, + jbyte *elems, + jint mode) { + functions->ReleaseByteArrayElements(this,array,elems,mode); + } + void ReleaseCharArrayElements(jcharArray array, + jchar *elems, + jint mode) { + functions->ReleaseCharArrayElements(this,array,elems,mode); + } + void ReleaseShortArrayElements(jshortArray array, + jshort *elems, + jint mode) { + functions->ReleaseShortArrayElements(this,array,elems,mode); + } + void ReleaseIntArrayElements(jintArray array, + jint *elems, + jint mode) { + functions->ReleaseIntArrayElements(this,array,elems,mode); + } + void ReleaseLongArrayElements(jlongArray array, + jlong *elems, + jint mode) { + functions->ReleaseLongArrayElements(this,array,elems,mode); + } + void ReleaseFloatArrayElements(jfloatArray array, + jfloat *elems, + jint mode) { + functions->ReleaseFloatArrayElements(this,array,elems,mode); + } + void ReleaseDoubleArrayElements(jdoubleArray array, + jdouble *elems, + jint mode) { + functions->ReleaseDoubleArrayElements(this,array,elems,mode); + } + + void GetBooleanArrayRegion(jbooleanArray array, + jsize start, jsize len, jboolean *buf) { + functions->GetBooleanArrayRegion(this,array,start,len,buf); + } + void GetByteArrayRegion(jbyteArray array, + jsize start, jsize len, jbyte *buf) { + functions->GetByteArrayRegion(this,array,start,len,buf); + } + void GetCharArrayRegion(jcharArray array, + jsize start, jsize len, jchar *buf) { + functions->GetCharArrayRegion(this,array,start,len,buf); + } + void GetShortArrayRegion(jshortArray array, + jsize start, jsize len, jshort *buf) { + functions->GetShortArrayRegion(this,array,start,len,buf); + } + void GetIntArrayRegion(jintArray array, + jsize start, jsize len, jint *buf) { + functions->GetIntArrayRegion(this,array,start,len,buf); + } + void GetLongArrayRegion(jlongArray array, + jsize start, jsize len, jlong *buf) { + functions->GetLongArrayRegion(this,array,start,len,buf); + } + void GetFloatArrayRegion(jfloatArray array, + jsize start, jsize len, jfloat *buf) { + functions->GetFloatArrayRegion(this,array,start,len,buf); + } + void GetDoubleArrayRegion(jdoubleArray array, + jsize start, jsize len, jdouble *buf) { + functions->GetDoubleArrayRegion(this,array,start,len,buf); + } + + void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + const jboolean *buf) { + functions->SetBooleanArrayRegion(this,array,start,len,buf); + } + void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, + const jbyte *buf) { + functions->SetByteArrayRegion(this,array,start,len,buf); + } + void SetCharArrayRegion(jcharArray array, jsize start, jsize len, + const jchar *buf) { + functions->SetCharArrayRegion(this,array,start,len,buf); + } + void SetShortArrayRegion(jshortArray array, jsize start, jsize len, + const jshort *buf) { + functions->SetShortArrayRegion(this,array,start,len,buf); + } + void SetIntArrayRegion(jintArray array, jsize start, jsize len, + const jint *buf) { + functions->SetIntArrayRegion(this,array,start,len,buf); + } + void SetLongArrayRegion(jlongArray array, jsize start, jsize len, + const jlong *buf) { + functions->SetLongArrayRegion(this,array,start,len,buf); + } + void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + const jfloat *buf) { + functions->SetFloatArrayRegion(this,array,start,len,buf); + } + void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + const jdouble *buf) { + functions->SetDoubleArrayRegion(this,array,start,len,buf); + } + + jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, + jint nMethods) { + return functions->RegisterNatives(this,clazz,methods,nMethods); + } + jint UnregisterNatives(jclass clazz) { + return functions->UnregisterNatives(this,clazz); + } + + jint MonitorEnter(jobject obj) { + return functions->MonitorEnter(this,obj); + } + jint MonitorExit(jobject obj) { + return functions->MonitorExit(this,obj); + } + + jint GetJavaVM(JavaVM **vm) { + return functions->GetJavaVM(this,vm); + } + + void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { + functions->GetStringRegion(this,str,start,len,buf); + } + void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { + functions->GetStringUTFRegion(this,str,start,len,buf); + } + + void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { + return functions->GetPrimitiveArrayCritical(this,array,isCopy); + } + void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { + functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); + } + + const jchar * GetStringCritical(jstring string, jboolean *isCopy) { + return functions->GetStringCritical(this,string,isCopy); + } + void ReleaseStringCritical(jstring string, const jchar *cstring) { + functions->ReleaseStringCritical(this,string,cstring); + } + + jweak NewWeakGlobalRef(jobject obj) { + return functions->NewWeakGlobalRef(this,obj); + } + void DeleteWeakGlobalRef(jweak ref) { + functions->DeleteWeakGlobalRef(this,ref); + } + + jboolean ExceptionCheck() { + return functions->ExceptionCheck(this); + } + + jobject NewDirectByteBuffer(void* address, jlong capacity) { + return functions->NewDirectByteBuffer(this, address, capacity); + } + void* GetDirectBufferAddress(jobject buf) { + return functions->GetDirectBufferAddress(this, buf); + } + jlong GetDirectBufferCapacity(jobject buf) { + return functions->GetDirectBufferCapacity(this, buf); + } + jobjectRefType GetObjectRefType(jobject obj) { + return functions->GetObjectRefType(this, obj); + } + + /* Module Features */ + + jobject GetModule(jclass clazz) { + return functions->GetModule(this, clazz); + } + + /* Virtual threads */ + + jboolean IsVirtualThread(jobject obj) { + return functions->IsVirtualThread(this, obj); + } + +#endif /* __cplusplus */ +}; + +/* + * optionString may be any option accepted by the JVM, or one of the + * following: + * + * -D= Set a system property. + * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g. + * "-verbose:class" or "-verbose:gc,class" + * Standard names include: gc, class, and jni. + * All nonstandard (VM-specific) names must begin + * with "X". + * vfprintf extraInfo is a pointer to the vfprintf hook. + * exit extraInfo is a pointer to the exit hook. + * abort extraInfo is a pointer to the abort hook. + */ +typedef struct JavaVMOption { + char *optionString; + void *extraInfo; +} JavaVMOption; + +typedef struct JavaVMInitArgs { + jint version; + + jint nOptions; + JavaVMOption *options; + jboolean ignoreUnrecognized; +} JavaVMInitArgs; + +typedef struct JavaVMAttachArgs { + jint version; + + char *name; + jobject group; +} JavaVMAttachArgs; + +/* These will be VM-specific. */ + +#define JDK1_2 +#define JDK1_4 + +/* End VM-specific. */ + +struct JNIInvokeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + jint (JNICALL *DestroyJavaVM)(JavaVM *vm); + + jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); + + jint (JNICALL *DetachCurrentThread)(JavaVM *vm); + + jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); + + jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); +}; + +struct JavaVM_ { + const struct JNIInvokeInterface_ *functions; +#ifdef __cplusplus + + jint DestroyJavaVM() { + return functions->DestroyJavaVM(this); + } + jint AttachCurrentThread(void **penv, void *args) { + return functions->AttachCurrentThread(this, penv, args); + } + jint DetachCurrentThread() { + return functions->DetachCurrentThread(this); + } + + jint GetEnv(void **penv, jint version) { + return functions->GetEnv(this, penv, version); + } + jint AttachCurrentThreadAsDaemon(void **penv, void *args) { + return functions->AttachCurrentThreadAsDaemon(this, penv, args); + } +#endif +}; + +#ifdef _JNI_IMPLEMENTATION_ +#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT +#else +#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT +#endif +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetDefaultJavaVMInitArgs(void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); + +/* Defined by native libraries. */ +JNIEXPORT jint JNICALL +JNI_OnLoad(JavaVM *vm, void *reserved); + +JNIEXPORT void JNICALL +JNI_OnUnload(JavaVM *vm, void *reserved); + +#define JNI_VERSION_1_1 0x00010001 +#define JNI_VERSION_1_2 0x00010002 +#define JNI_VERSION_1_4 0x00010004 +#define JNI_VERSION_1_6 0x00010006 +#define JNI_VERSION_1_8 0x00010008 +#define JNI_VERSION_9 0x00090000 +#define JNI_VERSION_10 0x000a0000 +#define JNI_VERSION_19 0x00130000 +#define JNI_VERSION_20 0x00140000 +#define JNI_VERSION_21 0x00150000 + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVASOFT_JNI_H_ */ diff --git a/.github/include/unix/jni_md.h b/.github/include/unix/jni_md.h new file mode 100644 index 00000000..6e352038 --- /dev/null +++ b/.github/include/unix/jni_md.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JNI_MD_H_ +#define _JAVASOFT_JNI_MD_H_ + +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) + #ifdef ARM + #define JNIEXPORT __attribute__((externally_visible,visibility("default"))) + #define JNIIMPORT __attribute__((externally_visible,visibility("default"))) + #else + #define JNIEXPORT __attribute__((visibility("default"))) + #define JNIIMPORT __attribute__((visibility("default"))) + #endif +#else + #define JNIEXPORT + #define JNIIMPORT +#endif + +#define JNICALL + +typedef int jint; +#ifdef _LP64 +typedef long jlong; +#else +typedef long long jlong; +#endif + +typedef signed char jbyte; + +#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/.github/include/windows/jni.h b/.github/include/windows/jni.h new file mode 100644 index 00000000..c85da1bc --- /dev/null +++ b/.github/include/windows/jni.h @@ -0,0 +1,2001 @@ +/* + * Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * We used part of Netscape's Java Runtime Interface (JRI) as the starting + * point of our design and implementation. + */ + +/****************************************************************************** + * Java Runtime Interface + * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. + *****************************************************************************/ + +#ifndef _JAVASOFT_JNI_H_ +#define _JAVASOFT_JNI_H_ + +#include +#include + +/* jni_md.h contains the machine-dependent typedefs for jbyte, jint + and jlong */ + +#include "jni_md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * JNI Types + */ + +#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H + +typedef unsigned char jboolean; +typedef unsigned short jchar; +typedef short jshort; +typedef float jfloat; +typedef double jdouble; + +typedef jint jsize; + +#ifdef __cplusplus + +class _jobject {}; +class _jclass : public _jobject {}; +class _jthrowable : public _jobject {}; +class _jstring : public _jobject {}; +class _jarray : public _jobject {}; +class _jbooleanArray : public _jarray {}; +class _jbyteArray : public _jarray {}; +class _jcharArray : public _jarray {}; +class _jshortArray : public _jarray {}; +class _jintArray : public _jarray {}; +class _jlongArray : public _jarray {}; +class _jfloatArray : public _jarray {}; +class _jdoubleArray : public _jarray {}; +class _jobjectArray : public _jarray {}; + +typedef _jobject *jobject; +typedef _jclass *jclass; +typedef _jthrowable *jthrowable; +typedef _jstring *jstring; +typedef _jarray *jarray; +typedef _jbooleanArray *jbooleanArray; +typedef _jbyteArray *jbyteArray; +typedef _jcharArray *jcharArray; +typedef _jshortArray *jshortArray; +typedef _jintArray *jintArray; +typedef _jlongArray *jlongArray; +typedef _jfloatArray *jfloatArray; +typedef _jdoubleArray *jdoubleArray; +typedef _jobjectArray *jobjectArray; + +#else + +struct _jobject; + +typedef struct _jobject *jobject; +typedef jobject jclass; +typedef jobject jthrowable; +typedef jobject jstring; +typedef jobject jarray; +typedef jarray jbooleanArray; +typedef jarray jbyteArray; +typedef jarray jcharArray; +typedef jarray jshortArray; +typedef jarray jintArray; +typedef jarray jlongArray; +typedef jarray jfloatArray; +typedef jarray jdoubleArray; +typedef jarray jobjectArray; + +#endif + +typedef jobject jweak; + +typedef union jvalue { + jboolean z; + jbyte b; + jchar c; + jshort s; + jint i; + jlong j; + jfloat f; + jdouble d; + jobject l; +} jvalue; + +struct _jfieldID; +typedef struct _jfieldID *jfieldID; + +struct _jmethodID; +typedef struct _jmethodID *jmethodID; + +/* Return values from jobjectRefType */ +typedef enum _jobjectType { + JNIInvalidRefType = 0, + JNILocalRefType = 1, + JNIGlobalRefType = 2, + JNIWeakGlobalRefType = 3 +} jobjectRefType; + + +#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ + +/* + * jboolean constants + */ + +#define JNI_FALSE 0 +#define JNI_TRUE 1 + +/* + * possible return values for JNI functions. + */ + +#define JNI_OK 0 /* success */ +#define JNI_ERR (-1) /* unknown error */ +#define JNI_EDETACHED (-2) /* thread detached from the VM */ +#define JNI_EVERSION (-3) /* JNI version error */ +#define JNI_ENOMEM (-4) /* not enough memory */ +#define JNI_EEXIST (-5) /* VM already created */ +#define JNI_EINVAL (-6) /* invalid arguments */ + +/* + * used in ReleaseScalarArrayElements + */ + +#define JNI_COMMIT 1 +#define JNI_ABORT 2 + +/* + * used in RegisterNatives to describe native method name, signature, + * and function pointer. + */ + +typedef struct { + char *name; + char *signature; + void *fnPtr; +} JNINativeMethod; + +/* + * JNI Native Method Interface. + */ + +struct JNINativeInterface_; + +struct JNIEnv_; + +#ifdef __cplusplus +typedef JNIEnv_ JNIEnv; +#else +typedef const struct JNINativeInterface_ *JNIEnv; +#endif + +/* + * JNI Invocation Interface. + */ + +struct JNIInvokeInterface_; + +struct JavaVM_; + +#ifdef __cplusplus +typedef JavaVM_ JavaVM; +#else +typedef const struct JNIInvokeInterface_ *JavaVM; +#endif + +struct JNINativeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + void *reserved3; + jint (JNICALL *GetVersion)(JNIEnv *env); + + jclass (JNICALL *DefineClass) + (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, + jsize len); + jclass (JNICALL *FindClass) + (JNIEnv *env, const char *name); + + jmethodID (JNICALL *FromReflectedMethod) + (JNIEnv *env, jobject method); + jfieldID (JNICALL *FromReflectedField) + (JNIEnv *env, jobject field); + + jobject (JNICALL *ToReflectedMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); + + jclass (JNICALL *GetSuperclass) + (JNIEnv *env, jclass sub); + jboolean (JNICALL *IsAssignableFrom) + (JNIEnv *env, jclass sub, jclass sup); + + jobject (JNICALL *ToReflectedField) + (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); + + jint (JNICALL *Throw) + (JNIEnv *env, jthrowable obj); + jint (JNICALL *ThrowNew) + (JNIEnv *env, jclass clazz, const char *msg); + jthrowable (JNICALL *ExceptionOccurred) + (JNIEnv *env); + void (JNICALL *ExceptionDescribe) + (JNIEnv *env); + void (JNICALL *ExceptionClear) + (JNIEnv *env); + void (JNICALL *FatalError) + (JNIEnv *env, const char *msg); + + jint (JNICALL *PushLocalFrame) + (JNIEnv *env, jint capacity); + jobject (JNICALL *PopLocalFrame) + (JNIEnv *env, jobject result); + + jobject (JNICALL *NewGlobalRef) + (JNIEnv *env, jobject lobj); + void (JNICALL *DeleteGlobalRef) + (JNIEnv *env, jobject gref); + void (JNICALL *DeleteLocalRef) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsSameObject) + (JNIEnv *env, jobject obj1, jobject obj2); + jobject (JNICALL *NewLocalRef) + (JNIEnv *env, jobject ref); + jint (JNICALL *EnsureLocalCapacity) + (JNIEnv *env, jint capacity); + + jobject (JNICALL *AllocObject) + (JNIEnv *env, jclass clazz); + jobject (JNICALL *NewObject) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *NewObjectV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *NewObjectA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jclass (JNICALL *GetObjectClass) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsInstanceOf) + (JNIEnv *env, jobject obj, jclass clazz); + + jmethodID (JNICALL *GetMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallObjectMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jobject (JNICALL *CallObjectMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jobject (JNICALL *CallObjectMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jboolean (JNICALL *CallBooleanMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jboolean (JNICALL *CallBooleanMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jboolean (JNICALL *CallBooleanMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jbyte (JNICALL *CallByteMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jbyte (JNICALL *CallByteMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jbyte (JNICALL *CallByteMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallCharMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jchar (JNICALL *CallCharMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jchar (JNICALL *CallCharMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallShortMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jshort (JNICALL *CallShortMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jshort (JNICALL *CallShortMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallIntMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jint (JNICALL *CallIntMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jint (JNICALL *CallIntMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallLongMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jlong (JNICALL *CallLongMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jlong (JNICALL *CallLongMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallFloatMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jfloat (JNICALL *CallFloatMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jfloat (JNICALL *CallFloatMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallDoubleMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jdouble (JNICALL *CallDoubleMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jdouble (JNICALL *CallDoubleMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallVoidMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + void (JNICALL *CallVoidMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + void (JNICALL *CallVoidMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jobject (JNICALL *CallNonvirtualObjectMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallNonvirtualObjectMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jobject (JNICALL *CallNonvirtualObjectMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jboolean (JNICALL *CallNonvirtualBooleanMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallNonvirtualBooleanMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jboolean (JNICALL *CallNonvirtualBooleanMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jbyte (JNICALL *CallNonvirtualByteMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallNonvirtualByteMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jbyte (JNICALL *CallNonvirtualByteMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jchar (JNICALL *CallNonvirtualCharMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallNonvirtualCharMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jchar (JNICALL *CallNonvirtualCharMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jshort (JNICALL *CallNonvirtualShortMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallNonvirtualShortMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jshort (JNICALL *CallNonvirtualShortMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jint (JNICALL *CallNonvirtualIntMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallNonvirtualIntMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jint (JNICALL *CallNonvirtualIntMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jlong (JNICALL *CallNonvirtualLongMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallNonvirtualLongMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jlong (JNICALL *CallNonvirtualLongMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jfloat (JNICALL *CallNonvirtualFloatMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallNonvirtualFloatMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jfloat (JNICALL *CallNonvirtualFloatMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jdouble (JNICALL *CallNonvirtualDoubleMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallNonvirtualDoubleMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jdouble (JNICALL *CallNonvirtualDoubleMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + void (JNICALL *CallNonvirtualVoidMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + void (JNICALL *CallNonvirtualVoidMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + void (JNICALL *CallNonvirtualVoidMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jfieldID (JNICALL *GetFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *GetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jboolean (JNICALL *GetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jbyte (JNICALL *GetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jchar (JNICALL *GetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jshort (JNICALL *GetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jint (JNICALL *GetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jlong (JNICALL *GetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jfloat (JNICALL *GetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jdouble (JNICALL *GetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + + void (JNICALL *SetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); + void (JNICALL *SetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); + void (JNICALL *SetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); + void (JNICALL *SetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); + void (JNICALL *SetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); + void (JNICALL *SetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); + void (JNICALL *SetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); + void (JNICALL *SetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); + void (JNICALL *SetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); + + jmethodID (JNICALL *GetStaticMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallStaticObjectMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallStaticObjectMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *CallStaticObjectMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jboolean (JNICALL *CallStaticBooleanMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallStaticBooleanMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jboolean (JNICALL *CallStaticBooleanMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jbyte (JNICALL *CallStaticByteMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallStaticByteMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jbyte (JNICALL *CallStaticByteMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallStaticCharMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallStaticCharMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jchar (JNICALL *CallStaticCharMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallStaticShortMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallStaticShortMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jshort (JNICALL *CallStaticShortMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallStaticIntMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallStaticIntMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jint (JNICALL *CallStaticIntMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallStaticLongMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallStaticLongMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jlong (JNICALL *CallStaticLongMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallStaticFloatMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallStaticFloatMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jfloat (JNICALL *CallStaticFloatMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallStaticDoubleMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallStaticDoubleMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jdouble (JNICALL *CallStaticDoubleMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallStaticVoidMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, ...); + void (JNICALL *CallStaticVoidMethodV) + (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); + void (JNICALL *CallStaticVoidMethodA) + (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); + + jfieldID (JNICALL *GetStaticFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + jobject (JNICALL *GetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jboolean (JNICALL *GetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jbyte (JNICALL *GetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jchar (JNICALL *GetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jshort (JNICALL *GetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jint (JNICALL *GetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jlong (JNICALL *GetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jfloat (JNICALL *GetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jdouble (JNICALL *GetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + + void (JNICALL *SetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); + void (JNICALL *SetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); + void (JNICALL *SetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); + void (JNICALL *SetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); + void (JNICALL *SetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); + void (JNICALL *SetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); + void (JNICALL *SetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); + void (JNICALL *SetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); + void (JNICALL *SetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); + + jstring (JNICALL *NewString) + (JNIEnv *env, const jchar *unicode, jsize len); + jsize (JNICALL *GetStringLength) + (JNIEnv *env, jstring str); + const jchar *(JNICALL *GetStringChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringChars) + (JNIEnv *env, jstring str, const jchar *chars); + + jstring (JNICALL *NewStringUTF) + (JNIEnv *env, const char *utf); + jsize (JNICALL *GetStringUTFLength) + (JNIEnv *env, jstring str); + const char* (JNICALL *GetStringUTFChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringUTFChars) + (JNIEnv *env, jstring str, const char* chars); + + + jsize (JNICALL *GetArrayLength) + (JNIEnv *env, jarray array); + + jobjectArray (JNICALL *NewObjectArray) + (JNIEnv *env, jsize len, jclass clazz, jobject init); + jobject (JNICALL *GetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index); + void (JNICALL *SetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index, jobject val); + + jbooleanArray (JNICALL *NewBooleanArray) + (JNIEnv *env, jsize len); + jbyteArray (JNICALL *NewByteArray) + (JNIEnv *env, jsize len); + jcharArray (JNICALL *NewCharArray) + (JNIEnv *env, jsize len); + jshortArray (JNICALL *NewShortArray) + (JNIEnv *env, jsize len); + jintArray (JNICALL *NewIntArray) + (JNIEnv *env, jsize len); + jlongArray (JNICALL *NewLongArray) + (JNIEnv *env, jsize len); + jfloatArray (JNICALL *NewFloatArray) + (JNIEnv *env, jsize len); + jdoubleArray (JNICALL *NewDoubleArray) + (JNIEnv *env, jsize len); + + jboolean * (JNICALL *GetBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *isCopy); + jbyte * (JNICALL *GetByteArrayElements) + (JNIEnv *env, jbyteArray array, jboolean *isCopy); + jchar * (JNICALL *GetCharArrayElements) + (JNIEnv *env, jcharArray array, jboolean *isCopy); + jshort * (JNICALL *GetShortArrayElements) + (JNIEnv *env, jshortArray array, jboolean *isCopy); + jint * (JNICALL *GetIntArrayElements) + (JNIEnv *env, jintArray array, jboolean *isCopy); + jlong * (JNICALL *GetLongArrayElements) + (JNIEnv *env, jlongArray array, jboolean *isCopy); + jfloat * (JNICALL *GetFloatArrayElements) + (JNIEnv *env, jfloatArray array, jboolean *isCopy); + jdouble * (JNICALL *GetDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jboolean *isCopy); + + void (JNICALL *ReleaseBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); + void (JNICALL *ReleaseByteArrayElements) + (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); + void (JNICALL *ReleaseCharArrayElements) + (JNIEnv *env, jcharArray array, jchar *elems, jint mode); + void (JNICALL *ReleaseShortArrayElements) + (JNIEnv *env, jshortArray array, jshort *elems, jint mode); + void (JNICALL *ReleaseIntArrayElements) + (JNIEnv *env, jintArray array, jint *elems, jint mode); + void (JNICALL *ReleaseLongArrayElements) + (JNIEnv *env, jlongArray array, jlong *elems, jint mode); + void (JNICALL *ReleaseFloatArrayElements) + (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); + void (JNICALL *ReleaseDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); + + void (JNICALL *GetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); + void (JNICALL *GetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); + void (JNICALL *GetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); + void (JNICALL *GetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); + void (JNICALL *GetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); + void (JNICALL *GetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); + void (JNICALL *GetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); + void (JNICALL *GetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); + + void (JNICALL *SetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); + void (JNICALL *SetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); + void (JNICALL *SetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); + void (JNICALL *SetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); + void (JNICALL *SetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); + void (JNICALL *SetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); + void (JNICALL *SetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); + void (JNICALL *SetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); + + jint (JNICALL *RegisterNatives) + (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, + jint nMethods); + jint (JNICALL *UnregisterNatives) + (JNIEnv *env, jclass clazz); + + jint (JNICALL *MonitorEnter) + (JNIEnv *env, jobject obj); + jint (JNICALL *MonitorExit) + (JNIEnv *env, jobject obj); + + jint (JNICALL *GetJavaVM) + (JNIEnv *env, JavaVM **vm); + + void (JNICALL *GetStringRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); + void (JNICALL *GetStringUTFRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); + + void * (JNICALL *GetPrimitiveArrayCritical) + (JNIEnv *env, jarray array, jboolean *isCopy); + void (JNICALL *ReleasePrimitiveArrayCritical) + (JNIEnv *env, jarray array, void *carray, jint mode); + + const jchar * (JNICALL *GetStringCritical) + (JNIEnv *env, jstring string, jboolean *isCopy); + void (JNICALL *ReleaseStringCritical) + (JNIEnv *env, jstring string, const jchar *cstring); + + jweak (JNICALL *NewWeakGlobalRef) + (JNIEnv *env, jobject obj); + void (JNICALL *DeleteWeakGlobalRef) + (JNIEnv *env, jweak ref); + + jboolean (JNICALL *ExceptionCheck) + (JNIEnv *env); + + jobject (JNICALL *NewDirectByteBuffer) + (JNIEnv* env, void* address, jlong capacity); + void* (JNICALL *GetDirectBufferAddress) + (JNIEnv* env, jobject buf); + jlong (JNICALL *GetDirectBufferCapacity) + (JNIEnv* env, jobject buf); + + /* New JNI 1.6 Features */ + + jobjectRefType (JNICALL *GetObjectRefType) + (JNIEnv* env, jobject obj); + + /* Module Features */ + + jobject (JNICALL *GetModule) + (JNIEnv* env, jclass clazz); + + /* Virtual threads */ + + jboolean (JNICALL *IsVirtualThread) + (JNIEnv* env, jobject obj); +}; + +/* + * We use inlined functions for C++ so that programmers can write: + * + * env->FindClass("java/lang/String") + * + * in C++ rather than: + * + * (*env)->FindClass(env, "java/lang/String") + * + * in C. + */ + +struct JNIEnv_ { + const struct JNINativeInterface_ *functions; +#ifdef __cplusplus + + jint GetVersion() { + return functions->GetVersion(this); + } + jclass DefineClass(const char *name, jobject loader, const jbyte *buf, + jsize len) { + return functions->DefineClass(this, name, loader, buf, len); + } + jclass FindClass(const char *name) { + return functions->FindClass(this, name); + } + jmethodID FromReflectedMethod(jobject method) { + return functions->FromReflectedMethod(this,method); + } + jfieldID FromReflectedField(jobject field) { + return functions->FromReflectedField(this,field); + } + + jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { + return functions->ToReflectedMethod(this, cls, methodID, isStatic); + } + + jclass GetSuperclass(jclass sub) { + return functions->GetSuperclass(this, sub); + } + jboolean IsAssignableFrom(jclass sub, jclass sup) { + return functions->IsAssignableFrom(this, sub, sup); + } + + jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { + return functions->ToReflectedField(this,cls,fieldID,isStatic); + } + + jint Throw(jthrowable obj) { + return functions->Throw(this, obj); + } + jint ThrowNew(jclass clazz, const char *msg) { + return functions->ThrowNew(this, clazz, msg); + } + jthrowable ExceptionOccurred() { + return functions->ExceptionOccurred(this); + } + void ExceptionDescribe() { + functions->ExceptionDescribe(this); + } + void ExceptionClear() { + functions->ExceptionClear(this); + } + void FatalError(const char *msg) { + functions->FatalError(this, msg); + } + + jint PushLocalFrame(jint capacity) { + return functions->PushLocalFrame(this,capacity); + } + jobject PopLocalFrame(jobject result) { + return functions->PopLocalFrame(this,result); + } + + jobject NewGlobalRef(jobject lobj) { + return functions->NewGlobalRef(this,lobj); + } + void DeleteGlobalRef(jobject gref) { + functions->DeleteGlobalRef(this,gref); + } + void DeleteLocalRef(jobject obj) { + functions->DeleteLocalRef(this, obj); + } + + jboolean IsSameObject(jobject obj1, jobject obj2) { + return functions->IsSameObject(this,obj1,obj2); + } + + jobject NewLocalRef(jobject ref) { + return functions->NewLocalRef(this,ref); + } + jint EnsureLocalCapacity(jint capacity) { + return functions->EnsureLocalCapacity(this,capacity); + } + + jobject AllocObject(jclass clazz) { + return functions->AllocObject(this,clazz); + } + jobject NewObject(jclass clazz, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args, methodID); + result = functions->NewObjectV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject NewObjectV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->NewObjectV(this,clazz,methodID,args); + } + jobject NewObjectA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->NewObjectA(this,clazz,methodID,args); + } + + jclass GetObjectClass(jobject obj) { + return functions->GetObjectClass(this,obj); + } + jboolean IsInstanceOf(jobject obj, jclass clazz) { + return functions->IsInstanceOf(this,obj,clazz); + } + + jmethodID GetMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetMethodID(this,clazz,name,sig); + } + + jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallObjectMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jobject CallObjectMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallObjectMethodV(this,obj,methodID,args); + } + jobject CallObjectMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallObjectMethodA(this,obj,methodID,args); + } + + jboolean CallBooleanMethod(jobject obj, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallBooleanMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallBooleanMethodV(this,obj,methodID,args); + } + jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallBooleanMethodA(this,obj,methodID, args); + } + + jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallByteMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jbyte CallByteMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallByteMethodV(this,obj,methodID,args); + } + jbyte CallByteMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallByteMethodA(this,obj,methodID,args); + } + + jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallCharMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jchar CallCharMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallCharMethodV(this,obj,methodID,args); + } + jchar CallCharMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallCharMethodA(this,obj,methodID,args); + } + + jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallShortMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jshort CallShortMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallShortMethodV(this,obj,methodID,args); + } + jshort CallShortMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallShortMethodA(this,obj,methodID,args); + } + + jint CallIntMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallIntMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jint CallIntMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallIntMethodV(this,obj,methodID,args); + } + jint CallIntMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallIntMethodA(this,obj,methodID,args); + } + + jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallLongMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jlong CallLongMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallLongMethodV(this,obj,methodID,args); + } + jlong CallLongMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallLongMethodA(this,obj,methodID,args); + } + + jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallFloatMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jfloat CallFloatMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallFloatMethodV(this,obj,methodID,args); + } + jfloat CallFloatMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallFloatMethodA(this,obj,methodID,args); + } + + jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallDoubleMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallDoubleMethodV(this,obj,methodID,args); + } + jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallDoubleMethodA(this,obj,methodID,args); + } + + void CallVoidMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallVoidMethodV(this,obj,methodID,args); + va_end(args); + } + void CallVoidMethodV(jobject obj, jmethodID methodID, + va_list args) { + functions->CallVoidMethodV(this,obj,methodID,args); + } + void CallVoidMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + functions->CallVoidMethodA(this,obj,methodID,args); + } + + jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + } + jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualObjectMethodA(this,obj,clazz, + methodID,args); + } + + jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + } + jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, + methodID, args); + } + + jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + } + jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualByteMethodA(this,obj,clazz, + methodID,args); + } + + jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + } + jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualCharMethodA(this,obj,clazz, + methodID,args); + } + + jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + } + jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualShortMethodA(this,obj,clazz, + methodID,args); + } + + jint CallNonvirtualIntMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + } + jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualIntMethodA(this,obj,clazz, + methodID,args); + } + + jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + } + jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualLongMethodA(this,obj,clazz, + methodID,args); + } + + jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + } + jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualFloatMethodA(this,obj,clazz, + methodID,args); + } + + jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + } + jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, + methodID,args); + } + + void CallNonvirtualVoidMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + va_end(args); + } + void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + } + void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); + } + + jfieldID GetFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetFieldID(this,clazz,name,sig); + } + + jobject GetObjectField(jobject obj, jfieldID fieldID) { + return functions->GetObjectField(this,obj,fieldID); + } + jboolean GetBooleanField(jobject obj, jfieldID fieldID) { + return functions->GetBooleanField(this,obj,fieldID); + } + jbyte GetByteField(jobject obj, jfieldID fieldID) { + return functions->GetByteField(this,obj,fieldID); + } + jchar GetCharField(jobject obj, jfieldID fieldID) { + return functions->GetCharField(this,obj,fieldID); + } + jshort GetShortField(jobject obj, jfieldID fieldID) { + return functions->GetShortField(this,obj,fieldID); + } + jint GetIntField(jobject obj, jfieldID fieldID) { + return functions->GetIntField(this,obj,fieldID); + } + jlong GetLongField(jobject obj, jfieldID fieldID) { + return functions->GetLongField(this,obj,fieldID); + } + jfloat GetFloatField(jobject obj, jfieldID fieldID) { + return functions->GetFloatField(this,obj,fieldID); + } + jdouble GetDoubleField(jobject obj, jfieldID fieldID) { + return functions->GetDoubleField(this,obj,fieldID); + } + + void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { + functions->SetObjectField(this,obj,fieldID,val); + } + void SetBooleanField(jobject obj, jfieldID fieldID, + jboolean val) { + functions->SetBooleanField(this,obj,fieldID,val); + } + void SetByteField(jobject obj, jfieldID fieldID, + jbyte val) { + functions->SetByteField(this,obj,fieldID,val); + } + void SetCharField(jobject obj, jfieldID fieldID, + jchar val) { + functions->SetCharField(this,obj,fieldID,val); + } + void SetShortField(jobject obj, jfieldID fieldID, + jshort val) { + functions->SetShortField(this,obj,fieldID,val); + } + void SetIntField(jobject obj, jfieldID fieldID, + jint val) { + functions->SetIntField(this,obj,fieldID,val); + } + void SetLongField(jobject obj, jfieldID fieldID, + jlong val) { + functions->SetLongField(this,obj,fieldID,val); + } + void SetFloatField(jobject obj, jfieldID fieldID, + jfloat val) { + functions->SetFloatField(this,obj,fieldID,val); + } + void SetDoubleField(jobject obj, jfieldID fieldID, + jdouble val) { + functions->SetDoubleField(this,obj,fieldID,val); + } + + jmethodID GetStaticMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticMethodID(this,clazz,name,sig); + } + + jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, + ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->CallStaticObjectMethodV(this,clazz,methodID,args); + } + jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->CallStaticObjectMethodA(this,clazz,methodID,args); + } + + jboolean CallStaticBooleanMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jboolean CallStaticBooleanMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + } + jboolean CallStaticBooleanMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); + } + + jbyte CallStaticByteMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallStaticByteMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jbyte CallStaticByteMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticByteMethodV(this,clazz,methodID,args); + } + jbyte CallStaticByteMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticByteMethodA(this,clazz,methodID,args); + } + + jchar CallStaticCharMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallStaticCharMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jchar CallStaticCharMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticCharMethodV(this,clazz,methodID,args); + } + jchar CallStaticCharMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticCharMethodA(this,clazz,methodID,args); + } + + jshort CallStaticShortMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallStaticShortMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jshort CallStaticShortMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticShortMethodV(this,clazz,methodID,args); + } + jshort CallStaticShortMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticShortMethodA(this,clazz,methodID,args); + } + + jint CallStaticIntMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallStaticIntMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jint CallStaticIntMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticIntMethodV(this,clazz,methodID,args); + } + jint CallStaticIntMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticIntMethodA(this,clazz,methodID,args); + } + + jlong CallStaticLongMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallStaticLongMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jlong CallStaticLongMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticLongMethodV(this,clazz,methodID,args); + } + jlong CallStaticLongMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticLongMethodA(this,clazz,methodID,args); + } + + jfloat CallStaticFloatMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jfloat CallStaticFloatMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticFloatMethodV(this,clazz,methodID,args); + } + jfloat CallStaticFloatMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticFloatMethodA(this,clazz,methodID,args); + } + + jdouble CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jdouble CallStaticDoubleMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + } + jdouble CallStaticDoubleMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); + } + + void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallStaticVoidMethodV(this,cls,methodID,args); + va_end(args); + } + void CallStaticVoidMethodV(jclass cls, jmethodID methodID, + va_list args) { + functions->CallStaticVoidMethodV(this,cls,methodID,args); + } + void CallStaticVoidMethodA(jclass cls, jmethodID methodID, + const jvalue * args) { + functions->CallStaticVoidMethodA(this,cls,methodID,args); + } + + jfieldID GetStaticFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticFieldID(this,clazz,name,sig); + } + jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticObjectField(this,clazz,fieldID); + } + jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticBooleanField(this,clazz,fieldID); + } + jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticByteField(this,clazz,fieldID); + } + jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticCharField(this,clazz,fieldID); + } + jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticShortField(this,clazz,fieldID); + } + jint GetStaticIntField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticIntField(this,clazz,fieldID); + } + jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticLongField(this,clazz,fieldID); + } + jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticFloatField(this,clazz,fieldID); + } + jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticDoubleField(this,clazz,fieldID); + } + + void SetStaticObjectField(jclass clazz, jfieldID fieldID, + jobject value) { + functions->SetStaticObjectField(this,clazz,fieldID,value); + } + void SetStaticBooleanField(jclass clazz, jfieldID fieldID, + jboolean value) { + functions->SetStaticBooleanField(this,clazz,fieldID,value); + } + void SetStaticByteField(jclass clazz, jfieldID fieldID, + jbyte value) { + functions->SetStaticByteField(this,clazz,fieldID,value); + } + void SetStaticCharField(jclass clazz, jfieldID fieldID, + jchar value) { + functions->SetStaticCharField(this,clazz,fieldID,value); + } + void SetStaticShortField(jclass clazz, jfieldID fieldID, + jshort value) { + functions->SetStaticShortField(this,clazz,fieldID,value); + } + void SetStaticIntField(jclass clazz, jfieldID fieldID, + jint value) { + functions->SetStaticIntField(this,clazz,fieldID,value); + } + void SetStaticLongField(jclass clazz, jfieldID fieldID, + jlong value) { + functions->SetStaticLongField(this,clazz,fieldID,value); + } + void SetStaticFloatField(jclass clazz, jfieldID fieldID, + jfloat value) { + functions->SetStaticFloatField(this,clazz,fieldID,value); + } + void SetStaticDoubleField(jclass clazz, jfieldID fieldID, + jdouble value) { + functions->SetStaticDoubleField(this,clazz,fieldID,value); + } + + jstring NewString(const jchar *unicode, jsize len) { + return functions->NewString(this,unicode,len); + } + jsize GetStringLength(jstring str) { + return functions->GetStringLength(this,str); + } + const jchar *GetStringChars(jstring str, jboolean *isCopy) { + return functions->GetStringChars(this,str,isCopy); + } + void ReleaseStringChars(jstring str, const jchar *chars) { + functions->ReleaseStringChars(this,str,chars); + } + + jstring NewStringUTF(const char *utf) { + return functions->NewStringUTF(this,utf); + } + jsize GetStringUTFLength(jstring str) { + return functions->GetStringUTFLength(this,str); + } + const char* GetStringUTFChars(jstring str, jboolean *isCopy) { + return functions->GetStringUTFChars(this,str,isCopy); + } + void ReleaseStringUTFChars(jstring str, const char* chars) { + functions->ReleaseStringUTFChars(this,str,chars); + } + + jsize GetArrayLength(jarray array) { + return functions->GetArrayLength(this,array); + } + + jobjectArray NewObjectArray(jsize len, jclass clazz, + jobject init) { + return functions->NewObjectArray(this,len,clazz,init); + } + jobject GetObjectArrayElement(jobjectArray array, jsize index) { + return functions->GetObjectArrayElement(this,array,index); + } + void SetObjectArrayElement(jobjectArray array, jsize index, + jobject val) { + functions->SetObjectArrayElement(this,array,index,val); + } + + jbooleanArray NewBooleanArray(jsize len) { + return functions->NewBooleanArray(this,len); + } + jbyteArray NewByteArray(jsize len) { + return functions->NewByteArray(this,len); + } + jcharArray NewCharArray(jsize len) { + return functions->NewCharArray(this,len); + } + jshortArray NewShortArray(jsize len) { + return functions->NewShortArray(this,len); + } + jintArray NewIntArray(jsize len) { + return functions->NewIntArray(this,len); + } + jlongArray NewLongArray(jsize len) { + return functions->NewLongArray(this,len); + } + jfloatArray NewFloatArray(jsize len) { + return functions->NewFloatArray(this,len); + } + jdoubleArray NewDoubleArray(jsize len) { + return functions->NewDoubleArray(this,len); + } + + jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { + return functions->GetBooleanArrayElements(this,array,isCopy); + } + jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { + return functions->GetByteArrayElements(this,array,isCopy); + } + jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { + return functions->GetCharArrayElements(this,array,isCopy); + } + jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { + return functions->GetShortArrayElements(this,array,isCopy); + } + jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { + return functions->GetIntArrayElements(this,array,isCopy); + } + jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { + return functions->GetLongArrayElements(this,array,isCopy); + } + jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { + return functions->GetFloatArrayElements(this,array,isCopy); + } + jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { + return functions->GetDoubleArrayElements(this,array,isCopy); + } + + void ReleaseBooleanArrayElements(jbooleanArray array, + jboolean *elems, + jint mode) { + functions->ReleaseBooleanArrayElements(this,array,elems,mode); + } + void ReleaseByteArrayElements(jbyteArray array, + jbyte *elems, + jint mode) { + functions->ReleaseByteArrayElements(this,array,elems,mode); + } + void ReleaseCharArrayElements(jcharArray array, + jchar *elems, + jint mode) { + functions->ReleaseCharArrayElements(this,array,elems,mode); + } + void ReleaseShortArrayElements(jshortArray array, + jshort *elems, + jint mode) { + functions->ReleaseShortArrayElements(this,array,elems,mode); + } + void ReleaseIntArrayElements(jintArray array, + jint *elems, + jint mode) { + functions->ReleaseIntArrayElements(this,array,elems,mode); + } + void ReleaseLongArrayElements(jlongArray array, + jlong *elems, + jint mode) { + functions->ReleaseLongArrayElements(this,array,elems,mode); + } + void ReleaseFloatArrayElements(jfloatArray array, + jfloat *elems, + jint mode) { + functions->ReleaseFloatArrayElements(this,array,elems,mode); + } + void ReleaseDoubleArrayElements(jdoubleArray array, + jdouble *elems, + jint mode) { + functions->ReleaseDoubleArrayElements(this,array,elems,mode); + } + + void GetBooleanArrayRegion(jbooleanArray array, + jsize start, jsize len, jboolean *buf) { + functions->GetBooleanArrayRegion(this,array,start,len,buf); + } + void GetByteArrayRegion(jbyteArray array, + jsize start, jsize len, jbyte *buf) { + functions->GetByteArrayRegion(this,array,start,len,buf); + } + void GetCharArrayRegion(jcharArray array, + jsize start, jsize len, jchar *buf) { + functions->GetCharArrayRegion(this,array,start,len,buf); + } + void GetShortArrayRegion(jshortArray array, + jsize start, jsize len, jshort *buf) { + functions->GetShortArrayRegion(this,array,start,len,buf); + } + void GetIntArrayRegion(jintArray array, + jsize start, jsize len, jint *buf) { + functions->GetIntArrayRegion(this,array,start,len,buf); + } + void GetLongArrayRegion(jlongArray array, + jsize start, jsize len, jlong *buf) { + functions->GetLongArrayRegion(this,array,start,len,buf); + } + void GetFloatArrayRegion(jfloatArray array, + jsize start, jsize len, jfloat *buf) { + functions->GetFloatArrayRegion(this,array,start,len,buf); + } + void GetDoubleArrayRegion(jdoubleArray array, + jsize start, jsize len, jdouble *buf) { + functions->GetDoubleArrayRegion(this,array,start,len,buf); + } + + void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + const jboolean *buf) { + functions->SetBooleanArrayRegion(this,array,start,len,buf); + } + void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, + const jbyte *buf) { + functions->SetByteArrayRegion(this,array,start,len,buf); + } + void SetCharArrayRegion(jcharArray array, jsize start, jsize len, + const jchar *buf) { + functions->SetCharArrayRegion(this,array,start,len,buf); + } + void SetShortArrayRegion(jshortArray array, jsize start, jsize len, + const jshort *buf) { + functions->SetShortArrayRegion(this,array,start,len,buf); + } + void SetIntArrayRegion(jintArray array, jsize start, jsize len, + const jint *buf) { + functions->SetIntArrayRegion(this,array,start,len,buf); + } + void SetLongArrayRegion(jlongArray array, jsize start, jsize len, + const jlong *buf) { + functions->SetLongArrayRegion(this,array,start,len,buf); + } + void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + const jfloat *buf) { + functions->SetFloatArrayRegion(this,array,start,len,buf); + } + void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + const jdouble *buf) { + functions->SetDoubleArrayRegion(this,array,start,len,buf); + } + + jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, + jint nMethods) { + return functions->RegisterNatives(this,clazz,methods,nMethods); + } + jint UnregisterNatives(jclass clazz) { + return functions->UnregisterNatives(this,clazz); + } + + jint MonitorEnter(jobject obj) { + return functions->MonitorEnter(this,obj); + } + jint MonitorExit(jobject obj) { + return functions->MonitorExit(this,obj); + } + + jint GetJavaVM(JavaVM **vm) { + return functions->GetJavaVM(this,vm); + } + + void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { + functions->GetStringRegion(this,str,start,len,buf); + } + void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { + functions->GetStringUTFRegion(this,str,start,len,buf); + } + + void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { + return functions->GetPrimitiveArrayCritical(this,array,isCopy); + } + void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { + functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); + } + + const jchar * GetStringCritical(jstring string, jboolean *isCopy) { + return functions->GetStringCritical(this,string,isCopy); + } + void ReleaseStringCritical(jstring string, const jchar *cstring) { + functions->ReleaseStringCritical(this,string,cstring); + } + + jweak NewWeakGlobalRef(jobject obj) { + return functions->NewWeakGlobalRef(this,obj); + } + void DeleteWeakGlobalRef(jweak ref) { + functions->DeleteWeakGlobalRef(this,ref); + } + + jboolean ExceptionCheck() { + return functions->ExceptionCheck(this); + } + + jobject NewDirectByteBuffer(void* address, jlong capacity) { + return functions->NewDirectByteBuffer(this, address, capacity); + } + void* GetDirectBufferAddress(jobject buf) { + return functions->GetDirectBufferAddress(this, buf); + } + jlong GetDirectBufferCapacity(jobject buf) { + return functions->GetDirectBufferCapacity(this, buf); + } + jobjectRefType GetObjectRefType(jobject obj) { + return functions->GetObjectRefType(this, obj); + } + + /* Module Features */ + + jobject GetModule(jclass clazz) { + return functions->GetModule(this, clazz); + } + + /* Virtual threads */ + + jboolean IsVirtualThread(jobject obj) { + return functions->IsVirtualThread(this, obj); + } + +#endif /* __cplusplus */ +}; + +/* + * optionString may be any option accepted by the JVM, or one of the + * following: + * + * -D= Set a system property. + * -verbose[:class|gc|jni] Enable verbose output, comma-separated. E.g. + * "-verbose:class" or "-verbose:gc,class" + * Standard names include: gc, class, and jni. + * All nonstandard (VM-specific) names must begin + * with "X". + * vfprintf extraInfo is a pointer to the vfprintf hook. + * exit extraInfo is a pointer to the exit hook. + * abort extraInfo is a pointer to the abort hook. + */ +typedef struct JavaVMOption { + char *optionString; + void *extraInfo; +} JavaVMOption; + +typedef struct JavaVMInitArgs { + jint version; + + jint nOptions; + JavaVMOption *options; + jboolean ignoreUnrecognized; +} JavaVMInitArgs; + +typedef struct JavaVMAttachArgs { + jint version; + + char *name; + jobject group; +} JavaVMAttachArgs; + +/* These will be VM-specific. */ + +#define JDK1_2 +#define JDK1_4 + +/* End VM-specific. */ + +struct JNIInvokeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + jint (JNICALL *DestroyJavaVM)(JavaVM *vm); + + jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); + + jint (JNICALL *DetachCurrentThread)(JavaVM *vm); + + jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); + + jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); +}; + +struct JavaVM_ { + const struct JNIInvokeInterface_ *functions; +#ifdef __cplusplus + + jint DestroyJavaVM() { + return functions->DestroyJavaVM(this); + } + jint AttachCurrentThread(void **penv, void *args) { + return functions->AttachCurrentThread(this, penv, args); + } + jint DetachCurrentThread() { + return functions->DetachCurrentThread(this); + } + + jint GetEnv(void **penv, jint version) { + return functions->GetEnv(this, penv, version); + } + jint AttachCurrentThreadAsDaemon(void **penv, void *args) { + return functions->AttachCurrentThreadAsDaemon(this, penv, args); + } +#endif +}; + +#ifdef _JNI_IMPLEMENTATION_ +#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT +#else +#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT +#endif +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetDefaultJavaVMInitArgs(void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); + +/* Defined by native libraries. */ +JNIEXPORT jint JNICALL +JNI_OnLoad(JavaVM *vm, void *reserved); + +JNIEXPORT void JNICALL +JNI_OnUnload(JavaVM *vm, void *reserved); + +#define JNI_VERSION_1_1 0x00010001 +#define JNI_VERSION_1_2 0x00010002 +#define JNI_VERSION_1_4 0x00010004 +#define JNI_VERSION_1_6 0x00010006 +#define JNI_VERSION_1_8 0x00010008 +#define JNI_VERSION_9 0x00090000 +#define JNI_VERSION_10 0x000a0000 +#define JNI_VERSION_19 0x00130000 +#define JNI_VERSION_20 0x00140000 +#define JNI_VERSION_21 0x00150000 + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVASOFT_JNI_H_ */ diff --git a/.github/include/windows/jni_md.h b/.github/include/windows/jni_md.h new file mode 100644 index 00000000..6c8d6b9e --- /dev/null +++ b/.github/include/windows/jni_md.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JNI_MD_H_ +#define _JAVASOFT_JNI_MD_H_ + +#define JNIEXPORT __declspec(dllexport) +#define JNIIMPORT __declspec(dllimport) +#define JNICALL __stdcall + +// 'long' is always 32 bit on windows so this matches what jdk expects +typedef long jint; +typedef __int64 jlong; +typedef signed char jbyte; + +#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b40949c..ff4eb331 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,31 +6,22 @@ set(LLAMA_CPP_TAG b1645) # todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? include(build-args.cmake) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) -find_package(Java REQUIRED) -find_program(JAVA_EXECUTABLE NAMES java) - -# find "jni.h" include directory -find_path(JNI_INCLUDE_DIR NAMES jni.h HINTS ENV JAVA_HOME PATH_SUFFIXES include) -if(NOT JNI_INCLUDE_DIR) - message(FATAL_ERROR "Could not find jni.h") -endif() - -# find "jni_md.h" include directory if not set -file(GLOB_RECURSE JNI_MD_PATHS RELATIVE "${JNI_INCLUDE_DIR}" "${JNI_INCLUDE_DIR}/**/jni_md.h") -if(NOT JNI_MD_PATHS) - message(FATAL_ERROR "Could not find jni_md.h") -endif() -foreach(PATH IN LISTS JNI_MD_PATHS) - get_filename_component(DIR ${PATH} DIRECTORY) - list(APPEND JNI_MD_INCLUDE_DIRS "${JNI_INCLUDE_DIR}/${DIR}") -endforeach() +# checkout llama.cpp +include(FetchContent) +FetchContent_Declare( + llama.cpp + GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git + GIT_TAG ${LLAMA_CPP_TAG} +) +FetchContent_MakeAvailable(llama.cpp) # find which OS we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_NAME) + find_package(Java REQUIRED) + find_program(JAVA_EXECUTABLE NAMES java) execute_process( COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --os OUTPUT_VARIABLE OS_NAME @@ -43,6 +34,8 @@ endif() # find which architecture we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_ARCH) + find_package(Java REQUIRED) + find_program(JAVA_EXECUTABLE NAMES java) execute_process( COMMAND ${JAVA_EXECUTABLE} -cp ${CMAKE_SOURCE_DIR}/target/classes de.kherud.llama.OSInfo --arch OUTPUT_VARIABLE OS_ARCH @@ -56,25 +49,35 @@ endif() set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) message(STATUS "Installing files to ${JLLAMA_DIR}") -# checkout llama.cpp -include(FetchContent) -FetchContent_Declare( - llama.cpp - GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG ${LLAMA_CPP_TAG} -) -FetchContent_MakeAvailable(llama.cpp) - add_library(jllama SHARED src/main/cpp/jllama.cpp) -target_include_directories(jllama PRIVATE - ${JNI_INCLUDE_DIR} - ${JNI_MD_INCLUDE_DIRS} - src/main/cpp -) +# include jni.h and jni_md.h +if(NOT DEFINED JNI_INCLUDE_DIRS) + if(OS_NAME STREQUAL "Linux" OR OS_NAME STREQUAL "Mac") + set(JNI_INCLUDE_DIRS .github/include/unix) + elseif(OS_NAME STREQUAL "Windows") + set(JNI_INCLUDE_DIRS .github/include/win) + # if we don't have provided headers, try to find them via Java + else() + find_package(Java REQUIRED) + find_program(JAVA_EXECUTABLE NAMES java) + + find_path(JNI_INCLUDE_DIRS NAMES jni.h HINTS ENV JAVA_HOME PATH_SUFFIXES include) + + # find "jni_md.h" include directory if not set + file(GLOB_RECURSE JNI_MD_PATHS RELATIVE "${JNI_INCLUDE_DIRS}" "${JNI_INCLUDE_DIRS}/**/jni_md.h") + foreach(PATH IN LISTS JNI_MD_PATHS) + get_filename_component(DIR ${PATH} DIRECTORY) + list(APPEND JNI_INCLUDE_DIRS "${JNI_INCLUDE_DIRS}/${DIR}") + endforeach() + endif() +endif() +if(NOT JNI_INCLUDE_DIRS) + message(FATAL_ERROR "Could not determine JNI include directories") +endif() +target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) target_link_libraries(jllama PRIVATE common llama ${LLAMA_EXTRA_LIBS}) - target_compile_features(jllama PRIVATE cxx_std_11) if(OS_NAME STREQUAL "Windows") From 7d5947a240ae7c0190d018ba57169af41923934d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:16:53 +0100 Subject: [PATCH 074/384] Minor cmake path fix --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff4eb331..a0017df6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,7 @@ if(NOT DEFINED JNI_INCLUDE_DIRS) if(OS_NAME STREQUAL "Linux" OR OS_NAME STREQUAL "Mac") set(JNI_INCLUDE_DIRS .github/include/unix) elseif(OS_NAME STREQUAL "Windows") - set(JNI_INCLUDE_DIRS .github/include/win) + set(JNI_INCLUDE_DIRS .github/include/windows) # if we don't have provided headers, try to find them via Java else() find_package(Java REQUIRED) From 0b408a5957e4d6c951e7ef652c144958204e3df1 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:24:04 +0100 Subject: [PATCH 075/384] Update build args --- build-args.cmake | 193 +++++++++++++++++++++++++++++++---------------- 1 file changed, 130 insertions(+), 63 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index 11987972..5467375e 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -4,21 +4,6 @@ else() set(LLAMA_METAL_DEFAULT OFF) endif() -# general -option(LLAMA_STATIC "llama: static link libraries" OFF) -option(LLAMA_NATIVE "llama: enable -march=native flag" ON) -option(LLAMA_LTO "llama: enable link time optimization" OFF) - -# debug -option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON) -option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF) -option(LLAMA_GPROF "llama: enable gprof" OFF) - -# sanitizers -option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF) -option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF) -option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF) - # instruction set specific if (LLAMA_NATIVE) set(INS_ENB OFF) @@ -44,6 +29,7 @@ set(LLAMA_BLAS_VENDOR "Generic" CACHE STRING "llama: BLAS library vendor") option(LLAMA_CUBLAS "llama: use CUDA" OFF) #option(LLAMA_CUDA_CUBLAS "llama: use cuBLAS for prompt processing" OFF) option(LLAMA_CUDA_FORCE_DMMV "llama: use dmmv instead of mmvq CUDA kernels" OFF) +option(LLAMA_CUDA_FORCE_MMQ "llama: use mmq kernels instead of cuBLAS" OFF) set(LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels") set(LLAMA_CUDA_MMV_Y "1" CACHE STRING "llama: y block size for mmv CUDA kernels") option(LLAMA_CUDA_F16 "llama: use 16 bit floats for some calculations" OFF) @@ -57,9 +43,6 @@ option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" option(LLAMA_MPI "llama: use MPI" OFF) option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF) -option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE}) -option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE}) -option(LLAMA_BUILD_SERVER "llama: build server example" ON) # # Compile flags @@ -73,6 +56,11 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) include(CheckCXXCompilerFlag) +# enable libstdc++ assertions for debug builds +if (CMAKE_SYSTEM_NAME MATCHES "Linux") + add_compile_definitions($<$:_GLIBCXX_ASSERTIONS>) +endif() + if (NOT MSVC) if (LLAMA_SANITIZE_THREAD) add_compile_options(-fsanitize=thread) @@ -225,6 +213,9 @@ if (LLAMA_CUBLAS) if (LLAMA_CUDA_FORCE_DMMV) add_compile_definitions(GGML_CUDA_FORCE_DMMV) endif() + if (LLAMA_CUDA_FORCE_MMQ) + add_compile_definitions(GGML_CUDA_FORCE_MMQ) + endif() add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) if (DEFINED LLAMA_CUDA_DMMV_Y) @@ -237,7 +228,12 @@ if (LLAMA_CUBLAS) add_compile_definitions(GGML_CUDA_PEER_MAX_BATCH_SIZE=${LLAMA_CUDA_PEER_MAX_BATCH_SIZE}) if (LLAMA_STATIC) - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static) + if (WIN32) + # As of 12.3.1 CUDA Tookit for Windows does not offer a static cublas library + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas CUDA::cublasLt) + else () + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static) + endif() else() set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt) endif() @@ -251,6 +247,7 @@ if (LLAMA_CUBLAS) set(CMAKE_CUDA_ARCHITECTURES "60;61;70") # needed for f16 CUDA intrinsics else() set(CMAKE_CUDA_ARCHITECTURES "52;61;70") # lowest CUDA 12 standard + lowest for integer intrinsics + #set(CMAKE_CUDA_ARCHITECTURES "") # use this to compile much faster, but only F16 models work endif() endif() message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}") @@ -324,6 +321,9 @@ if (LLAMA_HIPBLAS) if (LLAMA_CUDA_FORCE_DMMV) target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_FORCE_DMMV) endif() + if (LLAMA_CUDA_FORCE_MMQ) + target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_FORCE_MMQ) + endif() target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) target_compile_definitions(ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) @@ -339,57 +339,102 @@ if (LLAMA_HIPBLAS) endif() endif() +function(get_flags CCID CCVER) + set(C_FLAGS "") + set(CXX_FLAGS "") + + if (CCID MATCHES "Clang") + set(C_FLAGS -Wunreachable-code-break -Wunreachable-code-return) + set(CXX_FLAGS -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi) + + if ( + (CCID STREQUAL "Clang" AND CCVER VERSION_GREATER_EQUAL 3.8.0) OR + (CCID STREQUAL "AppleClang" AND CCVER VERSION_GREATER_EQUAL 7.3.0) + ) + set(C_FLAGS ${C_FLAGS} -Wdouble-promotion) + endif() + elseif (CCID STREQUAL "GNU") + set(C_FLAGS -Wdouble-promotion) + set(CXX_FLAGS -Wno-array-bounds) + + if (CCVER VERSION_GREATER_EQUAL 7.1.0) + set(CXX_FLAGS ${CXX_FLAGS} -Wno-format-truncation) + endif() + if (CCVER VERSION_GREATER_EQUAL 8.1.0) + set(CXX_FLAGS ${CXX_FLAGS} -Wextra-semi) + endif() + endif() + + set(GF_C_FLAGS ${C_FLAGS} PARENT_SCOPE) + set(GF_CXX_FLAGS ${CXX_FLAGS} PARENT_SCOPE) +endfunction() + if (LLAMA_ALL_WARNINGS) if (NOT MSVC) - set(warning_flags -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) - set(c_flags -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes -Werror=implicit-int -Werror=implicit-function-declaration) - set(cxx_flags -Wmissing-declarations -Wmissing-noreturn) - set(host_cxx_flags "") - - if (CMAKE_C_COMPILER_ID MATCHES "Clang") - set(warning_flags ${warning_flags} -Wunreachable-code-break -Wunreachable-code-return) - set(host_cxx_flags ${host_cxx_flags} -Wmissing-prototypes -Wextra-semi) - - if ( - (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.8.0) OR - (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 7.3.0) - ) - set(c_flags ${c_flags} -Wdouble-promotion) - endif() - elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU") - set(c_flags ${c_flags} -Wdouble-promotion) - set(host_cxx_flags ${host_cxx_flags} -Wno-array-bounds) + set(WARNING_FLAGS -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) + set(C_FLAGS -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes + -Werror=implicit-int -Werror=implicit-function-declaration) + set(CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn) - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.1.0) - set(host_cxx_flags ${host_cxx_flags} -Wno-format-truncation) - endif() - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1.0) - set(host_cxx_flags ${host_cxx_flags} -Wextra-semi) - endif() - endif() + set(C_FLAGS ${WARNING_FLAGS} ${C_FLAGS}) + set(CXX_FLAGS ${WARNING_FLAGS} ${CXX_FLAGS}) + + get_flags(${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}) + + add_compile_options("$<$:${C_FLAGS};${GF_C_FLAGS}>" + "$<$:${CXX_FLAGS};${GF_CXX_FLAGS}>") else() # todo : msvc + set(C_FLAGS "") + set(CXX_FLAGS "") + endif() +endif() + +if (LLAMA_CUBLAS) + set(CUDA_FLAGS ${CXX_FLAGS} -use_fast_math) + if (NOT MSVC) + set(CUDA_FLAGS ${CUDA_FLAGS} -Wno-pedantic) endif() - set(c_flags ${c_flags} ${warning_flags}) - set(cxx_flags ${cxx_flags} ${warning_flags}) - add_compile_options("$<$:${c_flags}>" - "$<$:${cxx_flags}>" - "$<$:${host_cxx_flags}>") + if (LLAMA_ALL_WARNINGS AND NOT MSVC) + set(NVCC_CMD ${CMAKE_CUDA_COMPILER} .c) + if (NOT CMAKE_CUDA_HOST_COMPILER STREQUAL "") + set(NVCC_CMD ${NVCC_CMD} -ccbin ${CMAKE_CUDA_HOST_COMPILER}) + endif() -endif() + execute_process( + COMMAND ${NVCC_CMD} -Xcompiler --version + OUTPUT_VARIABLE CUDA_CCFULLVER + ERROR_QUIET + ) -if (NOT MSVC) - set(cuda_flags -Wno-pedantic) -endif() -set(cuda_flags ${cxx_flags} -use_fast_math ${cuda_flags}) + if (NOT CUDA_CCFULLVER MATCHES clang) + set(CUDA_CCID "GNU") + execute_process( + COMMAND ${NVCC_CMD} -Xcompiler "-dumpfullversion -dumpversion" + OUTPUT_VARIABLE CUDA_CCVER + ERROR_QUIET + ) + else() + if (CUDA_CCFULLVER MATCHES Apple) + set(CUDA_CCID "AppleClang") + else() + set(CUDA_CCID "Clang") + endif() + string(REGEX REPLACE "^.* version ([0-9.]*).*$" "\\1" CUDA_CCVER ${CUDA_CCFULLVER}) + endif() -list(JOIN host_cxx_flags " " cuda_host_flags) # pass host compiler flags as a single argument -if (NOT cuda_host_flags STREQUAL "") - set(cuda_flags ${cuda_flags} -Xcompiler ${cuda_host_flags}) -endif() + message("-- CUDA host compiler is ${CUDA_CCID} ${CUDA_CCVER}") -add_compile_options("$<$:${cuda_flags}>") + get_flags(${CUDA_CCID} ${CUDA_CCVER}) + list(JOIN GF_CXX_FLAGS " " CUDA_CXX_FLAGS) # pass host compiler flags as a single argument + if (NOT CUDA_CXX_FLAGS STREQUAL "") + set(CUDA_FLAGS ${CUDA_FLAGS} -Xcompiler ${CUDA_CXX_FLAGS}) + endif() + endif() + + add_compile_options("$<$:${CUDA_FLAGS}>") +endif() if (WIN32) add_compile_definitions(_CRT_SECURE_NO_WARNINGS) @@ -409,6 +454,16 @@ if (LLAMA_LTO) endif() endif() +# this version of Apple ld64 is buggy +execute_process( + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_EXE_LINKER_FLAGS} -Wl,-v + ERROR_VARIABLE output + OUTPUT_QUIET +) +if (output MATCHES "dyld-1015\.7") + add_compile_definitions(HAVE_BUGGY_APPLE_LINKER) +endif() + # Architecture specific # TODO: probably these flags need to be tweaked on some architectures # feel free to update the Makefile for your architecture and send a pull request or issue @@ -432,7 +487,6 @@ if (NOT MSVC) endif() endif() - if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR ("${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "arm64")) message(STATUS "ARM detected") if (MSVC) @@ -462,6 +516,10 @@ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATC elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "^(x86_64|i686|amd64|x64)$" ) message(STATUS "x86 detected") if (MSVC) + # instruction set detection for MSVC only + if (LLAMA_NATIVE) + include(cmake/FindSIMD.cmake) + endif () if (LLAMA_AVX512) add_compile_options($<$:/arch:AVX512>) add_compile_options($<$:/arch:AVX512>) @@ -513,12 +571,21 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE endif() elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") message(STATUS "PowerPC detected") - add_compile_options(-mcpu=native -mtune=native) - #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be) + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le") + add_compile_options(-mcpu=powerpc64le) + else() + add_compile_options(-mcpu=native -mtune=native) + #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be) + endif() else() message(STATUS "Unknown architecture") endif() +if (MINGW) + # Target Windows 8 for PrefetchVirtualMemory + add_compile_definitions(_WIN32_WINNT=0x602) +endif() + # # POSIX conformance # @@ -566,4 +633,4 @@ if (CMAKE_SYSTEM_NAME MATCHES "NetBSD") endif() if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") add_compile_definitions(_BSD_SOURCE) -endif() +endif() \ No newline at end of file From 9be2e6aa187534839b6e6ae2166ec76e4732c388 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:33:36 +0100 Subject: [PATCH 076/384] Update release workflow --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0253fad6..5e66ee89 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -28,7 +28,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh "'-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}'" + .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -51,7 +51,7 @@ jobs: - { os: Mac, arch: aarch64, - cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64' + cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_NATIVE=OFF' } steps: - uses: actions/checkout@v4 From fca85169cd34a37de3001e459a50a3835b2bc68e Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:39:01 +0100 Subject: [PATCH 077/384] Update release workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 5e66ee89..06d5b6b2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -28,7 +28,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: From a7f67751715562baf568b8a23ad3a50af9dd5b15 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:45:44 +0100 Subject: [PATCH 078/384] Update release workflow --- .github/workflows/release.yaml | 2 +- pom.xml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 06d5b6b2..a53f03e4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -28,7 +28,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} bash -c .github/build.sh -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + .github/dockcross/${{ matrix.target.image }} ".github/build.sh -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: diff --git a/pom.xml b/pom.xml index e072ab83..4ce9681f 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,8 @@ -h src/main/cpp + 11 + 11 From 07af3e592a27516e8e4b1ae7489626b22256a363 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 18:54:44 +0100 Subject: [PATCH 079/384] Update release workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a53f03e4..94d584ee 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -28,7 +28,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} ".github/build.sh -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: From 11fa9b420af7d50e3bde63ce88ef5d59f1c1d417 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:01:39 +0100 Subject: [PATCH 080/384] Update release workflow --- .github/workflows/release.yaml | 23 ++++++++++++++++++----- pom.xml | 2 -- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 94d584ee..a352019c 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -78,11 +78,12 @@ jobs: arch: x86_64, cmake: '-G "Visual Studio 17 2022" -A "x64"' } - - { - os: Windows, - arch: aarch64, - cmake: '-G "Visual Studio 17 2022" -A "ARM64"' - } + # todo: This currently doesn't work. I'm not sure why. + # - { + # os: Windows, + # arch: aarch64, + # cmake: '-G "Visual Studio 17 2022" -A "ARM64"' + # } - { os: Windows, arch: x86, @@ -116,6 +117,10 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' - name: Run tests shell: bash run: mvn verify -Dmodel.home=target @@ -131,6 +136,10 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' - name: Run tests shell: bash run: mvn verify -Dmodel.home=target @@ -146,6 +155,10 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' - name: Run tests shell: cmd run: mvn verify -Dmodel.home=target diff --git a/pom.xml b/pom.xml index 4ce9681f..e072ab83 100644 --- a/pom.xml +++ b/pom.xml @@ -78,8 +78,6 @@ -h src/main/cpp - 11 - 11 From a916562f1d40d4c3a2c6a50d79cd015aef116b89 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:23:00 +0100 Subject: [PATCH 081/384] Simplify test cases --- .../java/de/kherud/llama/LlamaModelIT.java | 53 +++++-------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 18df9990..1cc35908 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -13,6 +13,7 @@ public class LlamaModelIT { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; private static String logOutput = ""; + private static final int nPredict = 10; private static LlamaModel model; @@ -38,21 +39,13 @@ public void testLogOutput() { } @Test - public void testGenerateAnswerDefault() { - int generated = 0; - for (LlamaModel.Output ignored : model.generate(prefix)) { - generated++; - } - Assert.assertTrue(generated > 0); - } - - @Test - public void testGenerateAnswerCustom() { + public void testGenerateAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") + .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); @@ -60,25 +53,17 @@ public void testGenerateAnswerCustom() { for (LlamaModel.Output ignored : model.generate(prefix, params)) { generated++; } - Assert.assertTrue(generated > 0); - } - - @Test - public void testGenerateInfillDefault() { - int generated = 0; - for (LlamaModel.Output ignored : model.generate(prefix, suffix)) { - generated++; - } - Assert.assertTrue(generated > 0); + Assert.assertTrue(generated > 0 && generated <= nPredict); } @Test - public void testGenerateInfillCustom() { + public void testGenerateInfill() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") + .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); @@ -86,14 +71,14 @@ public void testGenerateInfillCustom() { for (LlamaModel.Output ignored : model.generate(prefix, suffix, params)) { generated++; } - Assert.assertTrue(generated > 0); + Assert.assertTrue(generated > 0 && generated <= nPredict); } @Test public void testGenerateGrammar() { InferenceParameters params = new InferenceParameters() .setGrammar("root ::= (\"a\" | \"b\")+") - .setNPredict(42); + .setNPredict(nPredict); StringBuilder sb = new StringBuilder(); for (LlamaModel.Output output : model.generate("", params)) { sb.append(output); @@ -101,22 +86,17 @@ public void testGenerateGrammar() { String output = sb.toString(); Assert.assertTrue(output.matches("[ab]+")); - Assert.assertEquals(42, model.encode(output).length); - } - - @Test - public void testCompleteAnswerDefault() { - String output = model.complete(prefix); - Assert.assertFalse(output.isEmpty()); + Assert.assertEquals(nPredict, model.encode(output).length); } @Test - public void testCompleteAnswerCustom() { + public void testCompleteAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") + .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); @@ -124,12 +104,6 @@ public void testCompleteAnswerCustom() { Assert.assertFalse(output.isEmpty()); } - @Test - public void testCompleteInfillDefault() { - String output = model.complete(prefix, suffix); - Assert.assertFalse(output.isEmpty()); - } - @Test public void testCompleteInfillCustom() { Map logitBias = new HashMap<>(); @@ -137,6 +111,7 @@ public void testCompleteInfillCustom() { InferenceParameters params = new InferenceParameters() .setTemperature(0.95f) .setAntiPrompt("\"\"\"") + .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); @@ -148,10 +123,10 @@ public void testCompleteInfillCustom() { public void testCompleteGrammar() { InferenceParameters params = new InferenceParameters() .setGrammar("root ::= (\"a\" | \"b\")+") - .setNPredict(42); + .setNPredict(nPredict); String output = model.complete("", params); Assert.assertTrue(output.matches("[ab]+")); - Assert.assertEquals(42, model.encode(output).length); + Assert.assertEquals(nPredict, model.encode(output).length); } @Test From e89a1c03b479ea7e4a5a0eb91e78d6238951b943 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:23:09 +0100 Subject: [PATCH 082/384] Update release workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a352019c..f6888568 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -139,7 +139,7 @@ jobs: - uses: actions/setup-java@v4 with: distribution: 'zulu' - java-version: '11' + java-version: '17' - name: Run tests shell: bash run: mvn verify -Dmodel.home=target From f62046b1de668bbe4950141d6319e668d433fa3d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:30:46 +0100 Subject: [PATCH 083/384] Re-enable release to maven central --- .github/workflows/release.yaml | 87 +++++++++++++++++----------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f6888568..50fa468e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -126,23 +126,24 @@ jobs: run: mvn verify -Dmodel.home=target - test-macos: - name: Test Mac - needs: build-macos-native - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '17' - - name: Run tests - shell: bash - run: mvn verify -Dmodel.home=target + # todo: also currently doesn't work +# test-macos: +# name: Test Mac +# needs: build-macos-native +# runs-on: macos-latest +# steps: +# - uses: actions/checkout@v4 +# - uses: actions/download-artifact@v3 +# with: +# name: artifacts +# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - uses: actions/setup-java@v4 +# with: +# distribution: 'zulu' +# java-version: '11' +# - name: Run tests +# shell: bash +# run: mvn verify -Dmodel.home=target test-windows: @@ -164,30 +165,28 @@ jobs: run: mvn verify -Dmodel.home=target -# publish: -# needs: [build,build-linux-arm64] -# runs-on: ubuntu-latest -# steps: -# - name: Checkout Repository -# uses: actions/checkout@v4 -# - name: Download Artifacts -# uses: actions/download-artifact@v3 -# with: -# name: artifacts -# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ -# - name: Set up Maven Central Repository -# uses: actions/setup-java@v3 -# with: -# java-version: '17' -# distribution: 'zulu' -# server-id: ossrh -# server-username: MAVEN_USERNAME -# server-password: MAVEN_PASSWORD -# gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} -# gpg-passphrase: MAVEN_GPG_PASSPHRASE -# - name: Publish package -# run: mvn --batch-mode -P release deploy -# env: -# MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} -# MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} -# MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + publish: + needs: [test-linux,build-macos-native,test-windows] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Set up Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'zulu' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Publish package + run: mvn --batch-mode -P release deploy + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} From cab402f0bdd5a79ed918e4c5d8e4a190d4915f4b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:33:10 +0100 Subject: [PATCH 084/384] Bump pom version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e072ab83..0355b9f3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.2.1 + 2.3.0 jar ${project.groupId}:${project.artifactId} From e0b6de630cfefdbcdcaba4b6d64f69cbdca9ed45 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:42:33 +0100 Subject: [PATCH 085/384] Update release workflow --- .github/workflows/release.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 50fa468e..c1390723 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -185,7 +185,8 @@ jobs: gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Publish package - run: mvn --batch-mode -P release deploy + # testing already happened earlier + run: mvn --batch-mode -P release -DskipTests deploy env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} From 2b3c0549b81fb9852c28cc7c5bcf6a2c65056995 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 19:50:28 +0100 Subject: [PATCH 086/384] Update pom.xml release profile --- .github/workflows/release.yaml | 3 +-- pom.xml | 9 +++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c1390723..50fa468e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -185,8 +185,7 @@ jobs: gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Publish package - # testing already happened earlier - run: mvn --batch-mode -P release -DskipTests deploy + run: mvn --batch-mode -P release deploy env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/pom.xml b/pom.xml index 0355b9f3..bc91db89 100644 --- a/pom.xml +++ b/pom.xml @@ -219,6 +219,15 @@ + + org.apache.maven.plugins + maven-antrun-plugin + + + none + + + From 6adad27fb1ec6cb29fd3bbf566b321ff2feb1ad6 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 21:56:31 +0100 Subject: [PATCH 087/384] Update pom.xml release profile --- pom.xml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index bc91db89..8cd7dbb6 100644 --- a/pom.xml +++ b/pom.xml @@ -221,12 +221,11 @@ org.apache.maven.plugins - maven-antrun-plugin - - - none - - + maven-failsafe-plugin + ${test.plugin.version} + + true + From cc366505c564cdac3611ef2b13cc6f036339a97f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 22:07:53 +0100 Subject: [PATCH 088/384] Update pom.xml release profile --- pom.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8cd7dbb6..25da4dbd 100644 --- a/pom.xml +++ b/pom.xml @@ -224,7 +224,15 @@ maven-failsafe-plugin ${test.plugin.version} - true + true + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.0.0 + + true From 4b3e0510206831fb1b1e924e20aadd9f1c974c82 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 19 Dec 2023 22:15:10 +0100 Subject: [PATCH 089/384] Update readme --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f7c47c54..b9585160 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Access this library via Maven: de.kherud llama - 2.2.1 + 2.3.0 ``` @@ -36,9 +36,9 @@ mvn verify -Dmodel.home=/path/to/models We support CPU inference for the following platforms out of the box: -- Linux x86-64 -- MacOS x86-64, arm64 (M1) -- Windows x86-64 +- Linux x86-64, aarch64 +- MacOS x86-64, aarch64 (M1) +- Windows x86-64, x64, arm (32 bit) If any of these match your platform, you can include the Maven dependency and get started. @@ -70,7 +70,7 @@ Then, run the following commands in the directory of this repository (java-llama mvn compile mkdir build cd build -cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend +cmake .. # add any other arguments for your backend cmake --build . --config Release ``` From b7626c2cd6dc71851accee404ecf2ba9faf4e972 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 17:34:38 -0500 Subject: [PATCH 090/384] Adding back in llama_native --- build-args.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build-args.cmake b/build-args.cmake index 5467375e..c2c16576 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -4,6 +4,9 @@ else() set(LLAMA_METAL_DEFAULT OFF) endif() +# general +option(LLAMA_NATIVE "llama: enable -march=native flag" ON) + # instruction set specific if (LLAMA_NATIVE) set(INS_ENB OFF) @@ -633,4 +636,4 @@ if (CMAKE_SYSTEM_NAME MATCHES "NetBSD") endif() if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") add_compile_definitions(_BSD_SOURCE) -endif() \ No newline at end of file +endif() From 95599d9df0b47bbfc144b6261cdca95ee5c76c6e Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 17:53:51 -0500 Subject: [PATCH 091/384] Creating models directory and automatically defaulting to it. --- .gitignore | 1 + models/README.md | 3 +++ pom.xml | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 models/README.md diff --git a/.gitignore b/.gitignore index a6622338..c33951a8 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ build hs_err_pid* replay_pid* +models/*.gguf src/main/cpp/de_kherud_llama_*.h src/main/resources/**/*.so src/main/resources/**/*.dylib diff --git a/models/README.md b/models/README.md new file mode 100644 index 00000000..2481356b --- /dev/null +++ b/models/README.md @@ -0,0 +1,3 @@ +# Local Model Directory +This directory contains models which will be automatically downloaded +for use in java-llama.cpp's unit tests. diff --git a/pom.xml b/pom.xml index 25da4dbd..e5d30662 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,8 @@ 5.13.0 4.13.1 3.2.3 - UTF-8 + UTF-8 + ${project.basedir}/models mistral-7b-instruct-v0.2.Q5_K_S.gguf https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/${integration.test.model} @@ -109,7 +110,8 @@ model.home - ${integration.test.model} + ${integration.test.model} + ${model.home} From 86cf3a56c0506e7a1d3f085f516ea4fdfcc9dcc1 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 18:09:01 -0500 Subject: [PATCH 092/384] defaulting for exec as well --- README.md | 5 +++-- pom.xml | 2 +- src/test/java/de/kherud/llama/ModelResolver.java | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b9585160..39e878d6 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,12 @@ There are multiple [examples](src/test/java/examples). Make sure to set `model.h ```bash mvn exec:java -Dexec.mainClass="examples.MainExample" -Dmodel.home="/path/to/models" -Dmodel.name="codellama-13b.Q5_K_M.gguf" ``` +Note: if your model is in the `models` directory, then you can ommit the `-Dmodel.home` property. -You can also run some integration tests, which will automatically download a model to `model.home`: +You can also run some integration tests, which will automatically download a model to the `models` directory: ```bash -mvn verify -Dmodel.home=/path/to/models +mvn verify ``` ### No Setup required diff --git a/pom.xml b/pom.xml index e5d30662..4b849887 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ exec-maven-plugin 3.0.0 - test + test diff --git a/src/test/java/de/kherud/llama/ModelResolver.java b/src/test/java/de/kherud/llama/ModelResolver.java index 191f0433..be3ec637 100644 --- a/src/test/java/de/kherud/llama/ModelResolver.java +++ b/src/test/java/de/kherud/llama/ModelResolver.java @@ -1,5 +1,8 @@ package de.kherud.llama; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; @@ -22,6 +25,9 @@ public enum ModelResolver { public String resolve() { String ret = System.getProperty(systemPropertyName); if(ret == null) { + if(new File("models").exists()) { + return "models"; + } throw new IllegalArgumentException(String.format(errorMessage, systemPropertyName)); } return ret; From 8c979a5dde868af559a5ee3c982a1123c68e1ad5 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 18:13:58 -0500 Subject: [PATCH 093/384] fixing formatting --- pom.xml | 10 +++++----- src/test/java/de/kherud/llama/ModelResolver.java | 2 -- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 4b849887..6953a1a7 100644 --- a/pom.xml +++ b/pom.xml @@ -47,8 +47,8 @@ 5.13.0 4.13.1 3.2.3 - UTF-8 - ${project.basedir}/models + UTF-8 + ${project.basedir}/models mistral-7b-instruct-v0.2.Q5_K_S.gguf https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/${integration.test.model} @@ -87,7 +87,7 @@ exec-maven-plugin 3.0.0 - test + test @@ -110,8 +110,8 @@ model.home - ${integration.test.model} - ${model.home} + ${integration.test.model} + ${model.home} diff --git a/src/test/java/de/kherud/llama/ModelResolver.java b/src/test/java/de/kherud/llama/ModelResolver.java index be3ec637..3b80a7e5 100644 --- a/src/test/java/de/kherud/llama/ModelResolver.java +++ b/src/test/java/de/kherud/llama/ModelResolver.java @@ -1,8 +1,6 @@ package de.kherud.llama; import java.io.File; -import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; From e94a2a14502864caf15d8ffe647dafe3361b57aa Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 18:27:57 -0500 Subject: [PATCH 094/384] Migrated test to a smaller mistral model --- pom.xml | 2 +- src/test/java/de/kherud/llama/LlamaModelIT.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 6953a1a7..ea1e189c 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ 3.2.3 UTF-8 ${project.basedir}/models - mistral-7b-instruct-v0.2.Q5_K_S.gguf + mistral-7b-instruct-v0.2.Q2_K.gguf https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/${integration.test.model} diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 1cc35908..42e7839a 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -13,7 +13,7 @@ public class LlamaModelIT { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; private static String logOutput = ""; - private static final int nPredict = 10; + private static final int nPredict = 11; private static LlamaModel model; @@ -86,7 +86,8 @@ public void testGenerateGrammar() { String output = sb.toString(); Assert.assertTrue(output.matches("[ab]+")); - Assert.assertEquals(nPredict, model.encode(output).length); + int generated = model.encode(output).length; + Assert.assertTrue(generated > 0 && generated <= nPredict); } @Test @@ -126,7 +127,8 @@ public void testCompleteGrammar() { .setNPredict(nPredict); String output = model.complete("", params); Assert.assertTrue(output.matches("[ab]+")); - Assert.assertEquals(nPredict, model.encode(output).length); + int generated = model.encode(output).length; + Assert.assertTrue(generated > 0 && generated <= nPredict); } @Test From aeb38c6f31f1cedda23a29b255318d4b5b76bb89 Mon Sep 17 00:00:00 2001 From: Casey Stella Date: Tue, 19 Dec 2023 18:29:31 -0500 Subject: [PATCH 095/384] reverting --- src/test/java/de/kherud/llama/LlamaModelIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 42e7839a..7207bebd 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -13,7 +13,7 @@ public class LlamaModelIT { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; private static String logOutput = ""; - private static final int nPredict = 11; + private static final int nPredict = 10; private static LlamaModel model; From 7fcf33cae20021d75da8854322eb65a329ae0b31 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Dec 2023 17:00:17 +0100 Subject: [PATCH 096/384] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ea1e189c..68c0b031 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.0 + 2.3.1 jar ${project.groupId}:${project.artifactId} From 44c2b58580d618783aa916c6662f8b8ba79ae829 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Dec 2023 17:10:53 +0100 Subject: [PATCH 097/384] Fix cmake source file path --- CMakeLists.txt | 15 +++++++-------- build-args.cmake | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0017df6..98a03e7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,22 +2,21 @@ cmake_minimum_required(VERSION 3.12) project(jllama CXX) -set(LLAMA_CPP_TAG b1645) - -# todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? -include(build-args.cmake) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(BUILD_SHARED_LIBS ON) - # checkout llama.cpp include(FetchContent) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG ${LLAMA_CPP_TAG} + GIT_TAG b1645 ) FetchContent_MakeAvailable(llama.cpp) +# todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? +include(build-args.cmake) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(BUILD_SHARED_LIBS ON) + + # find which OS we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_NAME) find_package(Java REQUIRED) diff --git a/build-args.cmake b/build-args.cmake index c2c16576..dee0db65 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -521,7 +521,7 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE if (MSVC) # instruction set detection for MSVC only if (LLAMA_NATIVE) - include(cmake/FindSIMD.cmake) + include(${llama.cpp_SOURCE_DIR}/cmake/FindSIMD.cmake) endif () if (LLAMA_AVX512) add_compile_options($<$:/arch:AVX512>) From 4491f44b097aae0f4675fed8886139079c83acb0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Dec 2023 17:19:02 +0100 Subject: [PATCH 098/384] Fix cmake set pic order --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 98a03e7b..ab7d0482 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.12) project(jllama CXX) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(BUILD_SHARED_LIBS ON) + # checkout llama.cpp include(FetchContent) FetchContent_Declare( @@ -13,9 +16,6 @@ FetchContent_MakeAvailable(llama.cpp) # todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? include(build-args.cmake) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(BUILD_SHARED_LIBS ON) - # find which OS we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_NAME) From 643dc4f079ca07d8d096410e486bf4b3d5abfc1d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 20 Dec 2023 17:26:05 +0100 Subject: [PATCH 099/384] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39e878d6..04350361 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Access this library via Maven: de.kherud llama - 2.3.0 + 2.3.1 ``` From 02c54c0c012cb267074cd9317fb7853d3d36fd1b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 21:22:16 +0100 Subject: [PATCH 100/384] Add android dockcross images --- .github/dockcross/dockcross-android-arm | 278 +++++++++++++++++++++ .github/dockcross/dockcross-android-arm64 | 278 +++++++++++++++++++++ .github/dockcross/dockcross-android-x86 | 278 +++++++++++++++++++++ .github/dockcross/dockcross-android-x86_64 | 278 +++++++++++++++++++++ .github/dockcross/update.sh | 4 + 5 files changed, 1116 insertions(+) create mode 100755 .github/dockcross/dockcross-android-arm create mode 100755 .github/dockcross/dockcross-android-arm64 create mode 100755 .github/dockcross/dockcross-android-x86 create mode 100755 .github/dockcross/dockcross-android-x86_64 diff --git a/.github/dockcross/dockcross-android-arm b/.github/dockcross/dockcross-android-arm new file mode 100755 index 00000000..79a2180e --- /dev/null +++ b/.github/dockcross/dockcross-android-arm @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm:20240104-6eda627 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/android-arm:20240104-6eda627 image, run: +# +# docker run --rm dockcross/android-arm:20240104-6eda627 > dockcross-android-arm-20240104-6eda627 +# chmod +x dockcross-android-arm-20240104-6eda627 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/dockcross-android-arm64 b/.github/dockcross/dockcross-android-arm64 new file mode 100755 index 00000000..630b8113 --- /dev/null +++ b/.github/dockcross/dockcross-android-arm64 @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm64:20240104-6eda627 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/android-arm64:20240104-6eda627 image, run: +# +# docker run --rm dockcross/android-arm64:20240104-6eda627 > dockcross-android-arm64-20240104-6eda627 +# chmod +x dockcross-android-arm64-20240104-6eda627 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/dockcross-android-x86 b/.github/dockcross/dockcross-android-x86 new file mode 100755 index 00000000..46a7d928 --- /dev/null +++ b/.github/dockcross/dockcross-android-x86 @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-x86:20240104-6eda627 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/android-x86:20240104-6eda627 image, run: +# +# docker run --rm dockcross/android-x86:20240104-6eda627 > dockcross-android-x86-20240104-6eda627 +# chmod +x dockcross-android-x86-20240104-6eda627 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/dockcross-android-x86_64 b/.github/dockcross/dockcross-android-x86_64 new file mode 100755 index 00000000..aa27b04b --- /dev/null +++ b/.github/dockcross/dockcross-android-x86_64 @@ -0,0 +1,278 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-x86_64:20240104-6eda627 + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/android-x86_64:20240104-6eda627 image, run: +# +# docker run --rm dockcross/android-x86_64:20240104-6eda627 > dockcross-android-x86_64-20240104-6eda627 +# chmod +x dockcross-android-x86_64-20240104-6eda627 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/update.sh b/.github/dockcross/update.sh index 0ea28c6c..7b9b7e42 100755 --- a/.github/dockcross/update.sh +++ b/.github/dockcross/update.sh @@ -4,4 +4,8 @@ docker run --rm dockcross/manylinux2014-x64 > ./dockcross-manylinux2014-x64 docker run --rm dockcross/manylinux2014-x86 > ./dockcross-manylinux2014-x86 docker run --rm dockcross/linux-arm64-lts > ./dockcross-linux-arm64-lts +docker run --rm dockcross/android-arm > ./dockcross-android-arm +docker run --rm dockcross/android-arm64 > ./dockcross-android-arm64 +docker run --rm dockcross/android-x86 > ./dockcross-android-x86 +docker run --rm dockcross/android-x86_64 > ./dockcross-android-x86_64 chmod +x ./dockcross-* From d4bd73200e3f00670b68d7b3c50582d6b99be6ec Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 21:26:47 +0100 Subject: [PATCH 101/384] Remove android x86 dockcross images --- .github/dockcross/dockcross-android-x86 | 278 --------------------- .github/dockcross/dockcross-android-x86_64 | 278 --------------------- 2 files changed, 556 deletions(-) delete mode 100755 .github/dockcross/dockcross-android-x86 delete mode 100755 .github/dockcross/dockcross-android-x86_64 diff --git a/.github/dockcross/dockcross-android-x86 b/.github/dockcross/dockcross-android-x86 deleted file mode 100755 index 46a7d928..00000000 --- a/.github/dockcross/dockcross-android-x86 +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/env bash - -DEFAULT_DOCKCROSS_IMAGE=dockcross/android-x86:20240104-6eda627 - -#------------------------------------------------------------------------------ -# Helpers -# -err() { - echo -e >&2 "ERROR: $*\n" -} - -die() { - err "$*" - exit 1 -} - -has() { - # eg. has command update - local kind=$1 - local name=$2 - - type -t $kind:$name | grep -q function -} - -# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") -if [ -z "$OCI_EXE" ]; then - if which podman >/dev/null 2>/dev/null; then - OCI_EXE=podman - elif which docker >/dev/null 2>/dev/null; then - OCI_EXE=docker - else - die "Cannot find a container executor. Search for docker and podman." - fi -fi - -#------------------------------------------------------------------------------ -# Command handlers -# -command:update-image() { - $OCI_EXE pull $FINAL_IMAGE -} - -help:update-image() { - echo "Pull the latest $FINAL_IMAGE ." -} - -command:update-script() { - if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then - echo "$0 is up to date" - else - echo -n "Updating $0 ... " - $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok - fi -} - -help:update-script() { - echo "Update $0 from $FINAL_IMAGE ." -} - -command:update() { - command:update-image - command:update-script -} - -help:update() { - echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." -} - -command:help() { - if [[ $# != 0 ]]; then - if ! has command $1; then - err \"$1\" is not an dockcross command - command:help - elif ! has help $1; then - err No help found for \"$1\" - else - help:$1 - fi - else - cat >&2 < -ENDHELP - exit 1 - fi -} - -#------------------------------------------------------------------------------ -# Option processing -# -special_update_command='' -while [[ $# != 0 ]]; do - case $1 in - - --) - shift - break - ;; - - --args|-a) - ARG_ARGS="$2" - shift 2 - ;; - - --config|-c) - ARG_CONFIG="$2" - shift 2 - ;; - - --image|-i) - ARG_IMAGE="$2" - shift 2 - ;; - update|update-image|update-script) - special_update_command=$1 - break - ;; - -*) - err Unknown option \"$1\" - command:help - exit - ;; - - *) - break - ;; - - esac -done - -# The precedence for options is: -# 1. command-line arguments -# 2. environment variables -# 3. defaults - -# Source the config file if it exists -DEFAULT_DOCKCROSS_CONFIG=~/.dockcross -FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} - -[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" - -# Set the docker image -FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} - -# Handle special update command -if [ "$special_update_command" != "" ]; then - case $special_update_command in - - update) - command:update - exit $? - ;; - - update-image) - command:update-image - exit $? - ;; - - update-script) - command:update-script - exit $? - ;; - - esac -fi - -# Set the docker run extra args (if any) -FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} - -# Bash on Ubuntu on Windows -UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") -# MSYS, Git Bash, etc. -MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") -# CYGWIN -CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") - -if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then - USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") -fi - -# Change the PWD when working in Docker on Windows -if [ -n "$UBUNTU_ON_WINDOWS" ]; then - WSL_ROOT="/mnt/" - CFG_FILE=/etc/wsl.conf - if [ -f "$CFG_FILE" ]; then - CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') - eval "$CFG_CONTENT" - if [ -n "$root" ]; then - WSL_ROOT=$root - fi - fi - HOST_PWD=`pwd -P` - HOST_PWD=${HOST_PWD/$WSL_ROOT//} -elif [ -n "$MSYS" ]; then - HOST_PWD=$PWD - HOST_PWD=${HOST_PWD/\//} - HOST_PWD=${HOST_PWD/\//:\/} -elif [ -n "$CYGWIN" ]; then - for f in pwd readlink cygpath ; do - test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; - done ; - HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; -else - HOST_PWD=$PWD - [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) -fi - -# Mount Additional Volumes -if [ -z "$SSH_DIR" ]; then - SSH_DIR="$HOME/.ssh" -fi - -HOST_VOLUMES= -if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then - if test -n "${CYGWIN}" ; then - HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; - else - HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; - fi ; -fi - -#------------------------------------------------------------------------------ -# Now, finally, run the command in a container -# -TTY_ARGS= -tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti -CONTAINER_NAME=dockcross_$RANDOM -$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ - -v "$HOST_PWD":/work \ - $HOST_VOLUMES \ - "${USER_IDS[@]}" \ - $FINAL_ARGS \ - $FINAL_IMAGE "$@" -run_exit_code=$? - -# Attempt to delete container -rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) -rm_exit_code=$? -if [[ $rm_exit_code != 0 ]]; then - if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then - : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ - else - echo "$rm_output" - exit $rm_exit_code - fi -fi - -exit $run_exit_code - -################################################################################ -# -# This image is not intended to be run manually. -# -# To create a dockcross helper script for the -# dockcross/android-x86:20240104-6eda627 image, run: -# -# docker run --rm dockcross/android-x86:20240104-6eda627 > dockcross-android-x86-20240104-6eda627 -# chmod +x dockcross-android-x86-20240104-6eda627 -# -# You may then wish to move the dockcross script to your PATH. -# -################################################################################ diff --git a/.github/dockcross/dockcross-android-x86_64 b/.github/dockcross/dockcross-android-x86_64 deleted file mode 100755 index aa27b04b..00000000 --- a/.github/dockcross/dockcross-android-x86_64 +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/env bash - -DEFAULT_DOCKCROSS_IMAGE=dockcross/android-x86_64:20240104-6eda627 - -#------------------------------------------------------------------------------ -# Helpers -# -err() { - echo -e >&2 "ERROR: $*\n" -} - -die() { - err "$*" - exit 1 -} - -has() { - # eg. has command update - local kind=$1 - local name=$2 - - type -t $kind:$name | grep -q function -} - -# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") -if [ -z "$OCI_EXE" ]; then - if which podman >/dev/null 2>/dev/null; then - OCI_EXE=podman - elif which docker >/dev/null 2>/dev/null; then - OCI_EXE=docker - else - die "Cannot find a container executor. Search for docker and podman." - fi -fi - -#------------------------------------------------------------------------------ -# Command handlers -# -command:update-image() { - $OCI_EXE pull $FINAL_IMAGE -} - -help:update-image() { - echo "Pull the latest $FINAL_IMAGE ." -} - -command:update-script() { - if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then - echo "$0 is up to date" - else - echo -n "Updating $0 ... " - $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok - fi -} - -help:update-script() { - echo "Update $0 from $FINAL_IMAGE ." -} - -command:update() { - command:update-image - command:update-script -} - -help:update() { - echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." -} - -command:help() { - if [[ $# != 0 ]]; then - if ! has command $1; then - err \"$1\" is not an dockcross command - command:help - elif ! has help $1; then - err No help found for \"$1\" - else - help:$1 - fi - else - cat >&2 < -ENDHELP - exit 1 - fi -} - -#------------------------------------------------------------------------------ -# Option processing -# -special_update_command='' -while [[ $# != 0 ]]; do - case $1 in - - --) - shift - break - ;; - - --args|-a) - ARG_ARGS="$2" - shift 2 - ;; - - --config|-c) - ARG_CONFIG="$2" - shift 2 - ;; - - --image|-i) - ARG_IMAGE="$2" - shift 2 - ;; - update|update-image|update-script) - special_update_command=$1 - break - ;; - -*) - err Unknown option \"$1\" - command:help - exit - ;; - - *) - break - ;; - - esac -done - -# The precedence for options is: -# 1. command-line arguments -# 2. environment variables -# 3. defaults - -# Source the config file if it exists -DEFAULT_DOCKCROSS_CONFIG=~/.dockcross -FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} - -[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" - -# Set the docker image -FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} - -# Handle special update command -if [ "$special_update_command" != "" ]; then - case $special_update_command in - - update) - command:update - exit $? - ;; - - update-image) - command:update-image - exit $? - ;; - - update-script) - command:update-script - exit $? - ;; - - esac -fi - -# Set the docker run extra args (if any) -FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} - -# Bash on Ubuntu on Windows -UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") -# MSYS, Git Bash, etc. -MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") -# CYGWIN -CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") - -if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then - USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") -fi - -# Change the PWD when working in Docker on Windows -if [ -n "$UBUNTU_ON_WINDOWS" ]; then - WSL_ROOT="/mnt/" - CFG_FILE=/etc/wsl.conf - if [ -f "$CFG_FILE" ]; then - CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') - eval "$CFG_CONTENT" - if [ -n "$root" ]; then - WSL_ROOT=$root - fi - fi - HOST_PWD=`pwd -P` - HOST_PWD=${HOST_PWD/$WSL_ROOT//} -elif [ -n "$MSYS" ]; then - HOST_PWD=$PWD - HOST_PWD=${HOST_PWD/\//} - HOST_PWD=${HOST_PWD/\//:\/} -elif [ -n "$CYGWIN" ]; then - for f in pwd readlink cygpath ; do - test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; - done ; - HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; -else - HOST_PWD=$PWD - [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) -fi - -# Mount Additional Volumes -if [ -z "$SSH_DIR" ]; then - SSH_DIR="$HOME/.ssh" -fi - -HOST_VOLUMES= -if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then - if test -n "${CYGWIN}" ; then - HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; - else - HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; - fi ; -fi - -#------------------------------------------------------------------------------ -# Now, finally, run the command in a container -# -TTY_ARGS= -tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti -CONTAINER_NAME=dockcross_$RANDOM -$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ - -v "$HOST_PWD":/work \ - $HOST_VOLUMES \ - "${USER_IDS[@]}" \ - $FINAL_ARGS \ - $FINAL_IMAGE "$@" -run_exit_code=$? - -# Attempt to delete container -rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) -rm_exit_code=$? -if [[ $rm_exit_code != 0 ]]; then - if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then - : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ - else - echo "$rm_output" - exit $rm_exit_code - fi -fi - -exit $run_exit_code - -################################################################################ -# -# This image is not intended to be run manually. -# -# To create a dockcross helper script for the -# dockcross/android-x86_64:20240104-6eda627 image, run: -# -# docker run --rm dockcross/android-x86_64:20240104-6eda627 > dockcross-android-x86_64-20240104-6eda627 -# chmod +x dockcross-android-x86_64-20240104-6eda627 -# -# You may then wish to move the dockcross script to your PATH. -# -################################################################################ From 5c4cc6dd4594771a9207b6181d8c7fb17356d8a7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 21:35:05 +0100 Subject: [PATCH 102/384] Remove unused model parameter --- src/main/cpp/jllama.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 00e95114..e6768414 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -950,7 +950,6 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); params.embedding = env->GetBooleanField(jparams, f_embedding); - params.escape = env->GetIntField(jparams, f_n_predict); params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); params.use_mlock = env->GetBooleanField(jparams, f_use_mlock); params.numa = env->GetBooleanField(jparams, f_numa); From 844767c92c304ed448621dd6c8d9bf8d5084d050 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 21:35:35 +0100 Subject: [PATCH 103/384] Add android to release workflow --- .github/workflows/release.yaml | 16 ++++++++++++++++ CMakeLists.txt | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 50fa468e..3e19817f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,6 +1,11 @@ name: Release to Maven Central on: workflow_dispatch: + inputs: + build_only: + description: 'Whether to only build the project and skip releasing it (yes/NO)' + required: false + default: 'no' release: types: [created] jobs: @@ -23,6 +28,16 @@ jobs: arch: aarch64, image: dockcross-linux-arm64-lts, } + - { + os: Linux-Android, + arch: aarch64, + image: dockcross-android-arm64, + } + - { + os: Linux-Android, + arch: arm, + image: dockcross-android-arm, + } steps: - uses: actions/checkout@v4 - name: Build libraries @@ -166,6 +181,7 @@ jobs: publish: + if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} needs: [test-linux,build-macos-native,test-windows] runs-on: ubuntu-latest steps: diff --git a/CMakeLists.txt b/CMakeLists.txt index ab7d0482..16ed1dd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ add_library(jllama SHARED src/main/cpp/jllama.cpp) # include jni.h and jni_md.h if(NOT DEFINED JNI_INCLUDE_DIRS) - if(OS_NAME STREQUAL "Linux" OR OS_NAME STREQUAL "Mac") + if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Mac") set(JNI_INCLUDE_DIRS .github/include/unix) elseif(OS_NAME STREQUAL "Windows") set(JNI_INCLUDE_DIRS .github/include/windows) From aa281f92f3bf862887f32dd88e8db3c31e1e1083 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 21:45:33 +0100 Subject: [PATCH 104/384] arm release workflow fix --- .github/workflows/release.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3e19817f..3174ec95 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -22,28 +22,32 @@ jobs: os: Linux, arch: x86_64, image: dockcross-manylinux2014-x64, + cmake: "", } - { os: Linux, arch: aarch64, image: dockcross-linux-arm64-lts, + cmake: "", } - { os: Linux-Android, arch: aarch64, image: dockcross-android-arm64, + cmake: "", } - { os: Linux-Android, arch: arm, image: dockcross-android-arm, + cmake: "-DCMAKE_SYSTEM_PROCESSOR=arm", } steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} .github/build.sh "${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: From 3bf6fd27a80c5fbb2e5f7e58ca3d2c91858bf36f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 22:00:28 +0100 Subject: [PATCH 105/384] Remove arm release --- .github/workflows/release.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3174ec95..96e528f5 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -22,32 +22,23 @@ jobs: os: Linux, arch: x86_64, image: dockcross-manylinux2014-x64, - cmake: "", } - { os: Linux, arch: aarch64, image: dockcross-linux-arm64-lts, - cmake: "", } - { os: Linux-Android, arch: aarch64, image: dockcross-android-arm64, - cmake: "", - } - - { - os: Linux-Android, - arch: arm, - image: dockcross-android-arm, - cmake: "-DCMAKE_SYSTEM_PROCESSOR=arm", } steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} .github/build.sh "${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: From b52ee6b51e7054f43d0008917bffc9eecbf93518 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 22:02:46 +0100 Subject: [PATCH 106/384] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 68c0b031..27ea5faf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.1 + 2.3.2 jar ${project.groupId}:${project.artifactId} From 24e56b365f694587cbd85a838162908ca94f2b83 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Jan 2024 22:12:07 +0100 Subject: [PATCH 107/384] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 04350361..73ac9072 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Access this library via Maven: de.kherud llama - 2.3.1 + 2.3.2 ``` From 4a29f8e7f188e0f65e4ec21ed2dbb99e37bd8a74 Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Sun, 7 Jan 2024 20:44:53 +0100 Subject: [PATCH 108/384] Fixes #38 and another oversight Fixes deleting local reference where it isn't created. Fixes setting a boolean field with `SetLongField` instead of `SetBooleanField` --- src/main/cpp/jllama.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index e6768414..37210ebd 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -361,7 +361,6 @@ static void jllama_log_callback(enum ggml_log_level level, const char *text, voi env->CallVoidMethod(g_log_callback, m_biconsumer_accept, java_log_level, java_text); - env->DeleteLocalRef(java_log_level); env->DeleteLocalRef(java_text); } @@ -1251,7 +1250,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j if (!llama->has_next_token) { - env->SetLongField(iter, f_iter_has_next, false); + env->SetBooleanField(iter, f_iter_has_next, false); // llama.mutex.unlock(); // lock.release(); } From 2112bc15bcdae9cda4d35e969bd47a44843c443b Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:09:46 +0100 Subject: [PATCH 109/384] Fix invalid references in log levels --- src/main/cpp/jllama.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 37210ebd..9b610db8 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -280,10 +280,11 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); o_utf_8 = env->NewStringUTF("UTF-8"); o_utf_8 = (jclass)env->NewGlobalRef(o_utf_8); - o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); - o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); - o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); - o_log_level_error = env->GetStaticObjectField(c_log_level, f_log_level_error); + + o_log_level_debug = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_debug)); + o_log_level_info = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_info)); + o_log_level_warn = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_warn)); + o_log_level_error = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_error)); if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) { @@ -331,6 +332,11 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_error_oom); env->DeleteGlobalRef(o_utf_8); + + env->DeleteGlobalRef(o_log_level_debug); + env->DeleteGlobalRef(o_log_level_info); + env->DeleteGlobalRef(o_log_level_warn); + env->DeleteGlobalRef(o_log_level_error); } static void jllama_log_callback(enum ggml_log_level level, const char *text, void *user_data) From 7e32698c3657d0ffb85c621c2d8b3b8db2397a69 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 16 Jan 2024 10:15:20 +0100 Subject: [PATCH 110/384] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 27ea5faf..24305f65 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.2 + 2.3.3 jar ${project.groupId}:${project.artifactId} From ae55a818f816072f403faa8fd5e55c7618b030f3 Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:54:40 +0100 Subject: [PATCH 111/384] Bump JNI version --- src/main/cpp/jllama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 9b610db8..cd47527b 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -303,7 +303,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) return JNI_ERR; success: - return JNI_VERSION_1_1; + return JNI_VERSION_1_2; } JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) From 6e9c2b12624b3cfd52a49c14529040f7877dc6de Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:55:00 +0100 Subject: [PATCH 112/384] Add support for loading native library from apk directly --- src/main/java/de/kherud/llama/LlamaLoader.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index d1331d6f..5c09646e 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -110,6 +110,18 @@ private static void loadNativeLibrary(String name) { } } + if (OSInfo.isAndroid()) { + try { + // loadLibrary can load directly from packed apk file automatically + // if java-llama.cpp is added as code source + System.loadLibrary(name); + return; + } catch (UnsatisfiedLinkError e) { + triedPaths.add("Directly from .apk/lib"); + } + } + + // Load the os-dependent library from the jar file nativeLibPath = getNativeResourcePath(); if (hasNativeLib(nativeLibPath, nativeLibName)) { From 3d7564eede0eebcfce1e1fd5e82c3250894db236 Mon Sep 17 00:00:00 2001 From: Samo Hribar <34912839+samolego@users.noreply.github.com> Date: Tue, 16 Jan 2024 11:09:03 +0100 Subject: [PATCH 113/384] Add android include instructions --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/README.md b/README.md index 73ac9072..2888def2 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,60 @@ This includes: If you then compile your own JAR from this directory, you are ready to go. Otherwise, if you still want to use the library as a Maven dependency, see below how to set the necessary paths in order for Java to find your compiled libraries. +### Importing in Android + +You can use this library in Android project. +1. Add java-llama.cpp as a submodule in your android `app` project directory +```shell +git submodule add https://github.com/kherud/java-llama.cpp +``` +2. Declare the library as a source in your build.gradle +```gradle +android { + val jllamaLib = file("java-llama.cpp") + + // Execute "mvn compile" if folder target/ doesn't exist at ./java-llama.cpp/ + if (!file("$jllamaLib/target").exists()) { + exec { + commandLine = listOf("mvn", "compile") + workingDir = file("libs/java-llama.cpp/") + } + } + + ... + defaultConfig { + ... + externalNativeBuild { + cmake { + // Add an flags if needed + cppFlags += "" + arguments += "" + } + } + } + + // Declare c++ sources + externalNativeBuild { + cmake { + path = file("$jllamaLib/CMakeLists.txt") + version = "3.22.1" + } + } + + // Declare java sources + sourceSets { + named("main") { + // Add source directory for java-llama.cpp + java.srcDir("$jllamaLib/src/main/java") + } + } +} +``` +3. Exclude `de.kherud.llama` in proguard-rules.pro +```proguard +keep class de.kherud.llama.** { *; } +``` + ### Custom llama.cpp Setup (GPU acceleration) This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however. From 9db0c81a67af7da9881143c24f1c680dcaf1243b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 16 Jan 2024 11:53:35 +0100 Subject: [PATCH 114/384] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 24305f65..c69f0a52 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.3 + 2.3.4 jar ${project.groupId}:${project.artifactId} From 7ccc24a9f5087ffa7123175da4c6e814be23e133 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 16 Jan 2024 12:02:09 +0100 Subject: [PATCH 115/384] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2888def2..d12600fd 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Access this library via Maven: de.kherud llama - 2.3.2 + 2.3.4 ``` From 7a150441a0fe5a1ecc317c7a3187fcd74031354c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 16 Jan 2024 12:54:16 +0100 Subject: [PATCH 116/384] Minor readme fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d12600fd..0484cfaf 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ android { if (!file("$jllamaLib/target").exists()) { exec { commandLine = listOf("mvn", "compile") - workingDir = file("libs/java-llama.cpp/") + workingDir = file("java-llama.cpp/") } } From acac21883be4148dffa7e69d599427660beb144d Mon Sep 17 00:00:00 2001 From: Hugo Visser Date: Wed, 31 Jan 2024 16:14:19 +0100 Subject: [PATCH 117/384] Set handling of special tokens in tokenizer to true --- src/main/cpp/jllama.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index cd47527b..be6baf5e 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -594,7 +594,7 @@ struct jllama_context std::vector tokenize(std::string prompt, bool add_bos) const { - return ::llama_tokenize(ctx, prompt, add_bos); + return ::llama_tokenize(ctx, prompt, add_bos, true); } bool loadGrammar() @@ -1239,7 +1239,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j std::vector probs_output = {}; if (llama->params.sparams.n_probs > 0) { - const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false); + const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false, true); size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); size_t probs_stop_pos = std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); if (probs_pos < probs_stop_pos) { From 7839edb6d1c3df065341900227f3e1ae56493ce2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 1 Feb 2024 23:12:07 +0100 Subject: [PATCH 118/384] Add option to set tokenize_special --- src/main/cpp/jllama.cpp | 12 +++++++++--- .../java/de/kherud/llama/InferenceParameters.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index be6baf5e..3876c108 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -78,6 +78,7 @@ static jfieldID f_n_beams = 0; static jfieldID f_grammar = 0; static jfieldID f_antiprompt = 0; static jfieldID f_infer_seed = 0; +static jfieldID f_tokenize_special = 0; // model parameters static jfieldID f_n_threads = 0; static jfieldID f_model_seed = 0; @@ -229,6 +230,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); f_antiprompt = env->GetFieldID(c_infer_params, "antiPrompt", "[Ljava/lang/String;"); f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); + f_tokenize_special = env->GetFieldID(c_infer_params, "tokenizeSpecial", "Z"); f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); f_model_seed = env->GetFieldID(c_model_params, "seed", "I"); @@ -257,7 +259,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { goto error; } - if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed)) + if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed && f_tokenize_special)) { goto error; } @@ -520,6 +522,9 @@ struct jllama_context grammar_parser::parse_state parsed_grammar; llama_grammar *grammar = nullptr; + // Whether to tokenize special and/or control tokens which otherwise are not exposed and treated as plaintext. + bool tokenize_special = false; + bool truncated = false; bool stopped_eos = false; bool stopped_word = false; @@ -594,7 +599,7 @@ struct jllama_context std::vector tokenize(std::string prompt, bool add_bos) const { - return ::llama_tokenize(ctx, prompt, add_bos, true); + return ::llama_tokenize(ctx, prompt, add_bos, tokenize_special); } bool loadGrammar() @@ -1115,6 +1120,7 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara } llama->ctx_sampling = *llama_sampling_init(params.sparams); + llama->tokenize_special = env->GetBooleanField(jparams, f_tokenize_special); } static void setup_answering(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) @@ -1239,7 +1245,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j std::vector probs_output = {}; if (llama->params.sparams.n_probs > 0) { - const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false, true); + const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); size_t probs_stop_pos = std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); if (probs_pos < probs_stop_pos) { diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 1ccb2b40..a92c4fc0 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -62,6 +62,8 @@ public final class InferenceParameters { @Nullable @Native private String[] antiPrompt = null; @Native private int seed = 42; + // Whether to tokenize special and/or control tokens which otherwise are not exposed and treated as plaintext. + @Native private boolean tokenizeSpecial = false; public InferenceParameters setNPredict(int nPredict) { this.nPredict = nPredict; @@ -191,6 +193,15 @@ public InferenceParameters setSeed(int seed) { return this; } + /** + * Changes whether special and/or control tokens are tokenized which otherwise are not exposed and treated as + * plaintext. + */ + public InferenceParameters setTokenizeSpecial(boolean tokenizeSpecial) { + this.tokenizeSpecial = tokenizeSpecial; + return this; + } + public int getNPredict() { return nPredict; } @@ -283,6 +294,10 @@ public int getSeed() { return seed; } + public boolean getTokenizeSpecial() { + return tokenizeSpecial; + } + public enum MiroStat { Disabled(0), From 2c0eb9e2cf6e300138478b1efd68db411d0f8fde Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 1 Feb 2024 23:21:13 +0100 Subject: [PATCH 119/384] Bump version to 2.3.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c69f0a52..00b304a9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.4 + 2.3.5 jar ${project.groupId}:${project.artifactId} From 198299f09e54e65749ec2803ff7aab7c7fc8bd97 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 1 Feb 2024 23:31:09 +0100 Subject: [PATCH 120/384] Update readme version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0484cfaf..2c2a0f5b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Access this library via Maven: de.kherud llama - 2.3.4 + 2.3.5 ``` From 8e0689efe72e58379822cf21b5a66a32710b171c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 13:48:41 +0200 Subject: [PATCH 121/384] Add CI workflow --- .github/workflows/ci.yml | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..d6cc1430 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +# This work flow runs all Java tests for continuous integration. +# Since it has to build llama.cpp first, for speed, it only runs / tests on the natively supported GitHub runners. + +name: Continuous Integration +on: [ "push", "pull_request", "workflow_dispatch" ] +jobs: + + # don't split build and test jobs to keep the workflow simple + build-and-test-unix: + name: ${{ matrix.runner }} + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + runner: + - ubuntu-latest + - macos-latest + steps: + - uses: actions/checkout@v4 + - name: Build libraries + shell: bash + # cmake should figure out OS and ARCH automatically when running build.sh + run: .github/build.sh + - uses: actions/setup-java@ + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + shell: bash + run: mvn verify -Dmodel.home=target + + build-and-test-windows: + name: windows-latest + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Build libraries + shell: cmd + run: | + .github\build.bat + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + shell: cmd + run: mvn verify -Dmodel.home=target From eeed82ead6fe1ac556662c92cd25862064b4c501 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 13:56:25 +0200 Subject: [PATCH 122/384] Fix CI workflow setup java action --- .github/workflows/ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6cc1430..aa13951c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: shell: bash # cmake should figure out OS and ARCH automatically when running build.sh run: .github/build.sh - - uses: actions/setup-java@ + - uses: actions/setup-java@4 with: distribution: 'zulu' java-version: '11' @@ -36,8 +36,7 @@ jobs: - uses: actions/checkout@v4 - name: Build libraries shell: cmd - run: | - .github\build.bat + run: .github\build.bat - uses: actions/setup-java@v4 with: distribution: 'zulu' From 2d0f69f1c108623d5a820527ba9d445bc648037c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 14:05:52 +0200 Subject: [PATCH 123/384] Bump llama.cpp to latest version --- .github/build.sh | 2 +- CMakeLists.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/build.sh b/.github/build.sh index 6919d86f..5a78de0e 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,5 +1,5 @@ #!/bin/bash -mkdir build +mkdir -p build cmake -Bbuild $@ || exit 1 cmake --build build --config Release || exit 1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 16ed1dd6..c9b992ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ include(FetchContent) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b1645 + GIT_TAG b2589 ) FetchContent_MakeAvailable(llama.cpp) @@ -90,6 +90,6 @@ else() endif() if (LLAMA_METAL) - # copy ggml-metal.metal to bin directory + # copy ggml-metal.metal to shared library directory configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() From a2efebfa6ab2dd588b8e89a1e78c70fe9cbf5afc Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 14:06:08 +0200 Subject: [PATCH 124/384] Update cmake build args --- build-args.cmake | 656 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 557 insertions(+), 99 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index dee0db65..98dc43d3 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -5,7 +5,24 @@ else() endif() # general -option(LLAMA_NATIVE "llama: enable -march=native flag" ON) +option(BUILD_SHARED_LIBS "build shared libraries" OFF) +option(LLAMA_STATIC "llama: static link libraries" OFF) +option(LLAMA_NATIVE "llama: enable -march=native flag" ON) +option(LLAMA_LTO "llama: enable link time optimization" OFF) +option(LLAMA_CCACHE "llama: use ccache if available" ON) + +# debug +option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON) +option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF) +option(LLAMA_GPROF "llama: enable gprof" OFF) + +# build +option(LLAMA_FATAL_WARNINGS "llama: enable -Werror flag" OFF) + +# sanitizers +option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF) +option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF) +option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF) # instruction set specific if (LLAMA_NATIVE) @@ -25,12 +42,16 @@ if (NOT MSVC) option(LLAMA_F16C "llama: enable F16C" ${INS_ENB}) endif() +if (WIN32) + set(LLAMA_WIN_VER "0x602" CACHE STRING "llama: Windows Version") +endif() + # 3rd party libs option(LLAMA_ACCELERATE "llama: enable Accelerate framework" ON) option(LLAMA_BLAS "llama: use BLAS" OFF) set(LLAMA_BLAS_VENDOR "Generic" CACHE STRING "llama: BLAS library vendor") -option(LLAMA_CUBLAS "llama: use CUDA" OFF) -#option(LLAMA_CUDA_CUBLAS "llama: use cuBLAS for prompt processing" OFF) +option(LLAMA_CUDA "llama: use CUDA" OFF) +option(LLAMA_CUBLAS "llama: use CUDA (deprecated, use LLAMA_CUDA)" OFF) option(LLAMA_CUDA_FORCE_DMMV "llama: use dmmv instead of mmvq CUDA kernels" OFF) option(LLAMA_CUDA_FORCE_MMQ "llama: use mmq kernels instead of cuBLAS" OFF) set(LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels") @@ -39,26 +60,62 @@ option(LLAMA_CUDA_F16 "llama: use 16 bit floats for some set(LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for Q2_K/Q6_K") set(LLAMA_CUDA_PEER_MAX_BATCH_SIZE "128" CACHE STRING "llama: max. batch size for using peer access") +option(LLAMA_CUDA_NO_PEER_COPY "llama: do not use peer to peer copies" OFF) +option(LLAMA_CURL "llama: use libcurl to download model from an URL" OFF) option(LLAMA_HIPBLAS "llama: use hipBLAS" OFF) +option(LLAMA_HIP_UMA "llama: use HIP unified memory architecture" OFF) option(LLAMA_CLBLAST "llama: use CLBlast" OFF) +option(LLAMA_VULKAN "llama: use Vulkan" OFF) +option(LLAMA_VULKAN_CHECK_RESULTS "llama: run Vulkan op checks" OFF) +option(LLAMA_VULKAN_DEBUG "llama: enable Vulkan debug output" OFF) +option(LLAMA_VULKAN_VALIDATE "llama: enable Vulkan validation" OFF) +option(LLAMA_VULKAN_RUN_TESTS "llama: run Vulkan tests" OFF) option(LLAMA_METAL "llama: use Metal" ${LLAMA_METAL_DEFAULT}) option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" OFF) +option(LLAMA_METAL_SHADER_DEBUG "llama: compile Metal with -fno-fast-math" OFF) +option(LLAMA_METAL_EMBED_LIBRARY "llama: embed Metal library" OFF) +set(LLAMA_METAL_MACOSX_VERSION_MIN "" CACHE STRING + "llama: metal minimum macOS version") +set(LLAMA_METAL_STD "" CACHE STRING "llama: metal standard version (-std flag)") +option(LLAMA_KOMPUTE "llama: use Kompute" OFF) option(LLAMA_MPI "llama: use MPI" OFF) option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF) +option(LLAMA_SYCL "llama: use SYCL" OFF) +option(LLAMA_SYCL_F16 "llama: use 16 bit floats for sycl calculations" OFF) +set(LLAMA_SYCL_TARGET "INTEL" CACHE STRING "llama: sycl target device") +option(LLAMA_CPU_HBM "llama: use memkind for CPU HBM" OFF) +set(LLAMA_SCHED_MAX_COPIES "4" CACHE STRING "llama: max input copies for pipeline parallelism") + +option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE}) +option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE}) +option(LLAMA_BUILD_SERVER "llama: build server example" ON) + +# add perf arguments +option(LLAMA_PERF "llama: enable perf" OFF) +# Required for relocatable CMake package +include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake) # # Compile flags # -set(CMAKE_CXX_STANDARD 11) +if (LLAMA_SYCL) + set(CMAKE_CXX_STANDARD 17) +else() + set(CMAKE_CXX_STANDARD 11) +endif() + set(CMAKE_CXX_STANDARD_REQUIRED true) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED true) set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) include(CheckCXXCompilerFlag) +add_compile_definitions(GGML_SCHED_MAX_COPIES=${LLAMA_SCHED_MAX_COPIES}) + # enable libstdc++ assertions for debug builds if (CMAKE_SYSTEM_NAME MATCHES "Linux") add_compile_definitions($<$:_GLIBCXX_ASSERTIONS>) @@ -67,17 +124,17 @@ endif() if (NOT MSVC) if (LLAMA_SANITIZE_THREAD) add_compile_options(-fsanitize=thread) - link_libraries(-fsanitize=thread) + link_libraries (-fsanitize=thread) endif() if (LLAMA_SANITIZE_ADDRESS) add_compile_options(-fsanitize=address -fno-omit-frame-pointer) - link_libraries(-fsanitize=address) + link_libraries (-fsanitize=address) endif() if (LLAMA_SANITIZE_UNDEFINED) add_compile_options(-fsanitize=undefined) - link_libraries(-fsanitize=undefined) + link_libraries (-fsanitize=undefined) endif() endif() @@ -96,9 +153,9 @@ if (APPLE AND LLAMA_ACCELERATE) endif() if (LLAMA_METAL) - find_library(FOUNDATION_LIBRARY Foundation REQUIRED) - find_library(METAL_FRAMEWORK Metal REQUIRED) - find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) + find_library(FOUNDATION_LIBRARY Foundation REQUIRED) + find_library(METAL_FRAMEWORK Metal REQUIRED) + find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) message(STATUS "Metal framework found") set(GGML_HEADERS_METAL ggml-metal.h) @@ -109,8 +166,79 @@ if (LLAMA_METAL) add_compile_definitions(GGML_METAL_NDEBUG) endif() - # get full path to the file - #add_compile_definitions(GGML_METAL_DIR_KERNELS="${CMAKE_CURRENT_SOURCE_DIR}/") + # copy ggml-common.h and ggml-metal.metal to bin directory + configure_file(ggml-common.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-common.h COPYONLY) + + if (LLAMA_METAL_EMBED_LIBRARY) + enable_language(ASM) + add_compile_definitions(GGML_METAL_EMBED_LIBRARY) + + set(METALLIB_COMMON "${CMAKE_CURRENT_SOURCE_DIR}/ggml-common.h") + set(METALLIB_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal") + + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/autogenerated") + + # merge ggml-common.h and ggml-metal.metal into a single file + set(METALLIB_EMBED_ASM "${CMAKE_BINARY_DIR}/autogenerated/ggml-metal-embed.s") + set(METALLIB_SOURCE_EMBED "${CMAKE_BINARY_DIR}/autogenerated/ggml-metal-embed.metal") + + add_custom_command( + OUTPUT ${METALLIB_EMBED_ASM} + COMMAND echo "Embedding Metal library" + COMMAND sed -e '/\#include \"ggml-common.h\"/r ${METALLIB_COMMON}' -e '/\#include \"ggml-common.h\"/d' < ${METALLIB_SOURCE} > ${METALLIB_SOURCE_EMBED} + COMMAND echo ".section __DATA,__ggml_metallib" > ${METALLIB_EMBED_ASM} + COMMAND echo ".globl _ggml_metallib_start" >> ${METALLIB_EMBED_ASM} + COMMAND echo "_ggml_metallib_start:" >> ${METALLIB_EMBED_ASM} + COMMAND echo ".incbin \\\"${METALLIB_SOURCE_EMBED}\\\"" >> ${METALLIB_EMBED_ASM} + COMMAND echo ".globl _ggml_metallib_end" >> ${METALLIB_EMBED_ASM} + COMMAND echo "_ggml_metallib_end:" >> ${METALLIB_EMBED_ASM} + DEPENDS ggml-metal.metal ggml-common.h + COMMENT "Generate assembly for embedded Metal library" + ) + + set(GGML_SOURCES_METAL ${GGML_SOURCES_METAL} ${METALLIB_EMBED_ASM}) + else() + if (LLAMA_METAL_SHADER_DEBUG) + # custom command to do the following: + # xcrun -sdk macosx metal -fno-fast-math -c ggml-metal.metal -o ggml-metal.air + # xcrun -sdk macosx metallib ggml-metal.air -o default.metallib + # + # note: this is the only way I found to disable fast-math in Metal. it's ugly, but at least it works + # disabling fast math is needed in order to pass tests/test-backend-ops + # note: adding -fno-inline fixes the tests when using MTL_SHADER_VALIDATION=1 + # note: unfortunately, we have to call it default.metallib instead of ggml.metallib + # ref: https://github.com/ggerganov/whisper.cpp/issues/1720 + set(XC_FLAGS -fno-fast-math -fno-inline -g) + else() + set(XC_FLAGS -O3) + endif() + + # Append macOS metal versioning flags + if (LLAMA_METAL_MACOSX_VERSION_MIN) + message(STATUS "Adding -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN} flag to metal compilation") + list(APPEND XC_FLAGS -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN}) + endif() + if (LLAMA_METAL_STD) + message(STATUS "Adding -std=${LLAMA_METAL_STD} flag to metal compilation") + list(APPEND XC_FLAGS -std=${LLAMA_METAL_STD}) + endif() + + add_custom_command( + OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib + COMMAND xcrun -sdk macosx metal ${XC_FLAGS} -c ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air + COMMAND xcrun -sdk macosx metallib ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib + COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air + COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-common.h + COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal + DEPENDS ggml-metal.metal ggml-common.h + COMMENT "Compiling Metal kernels" + ) + + add_custom_target( + ggml-metal ALL + DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib + ) + endif() # LLAMA_METAL_EMBED_LIBRARY set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${FOUNDATION_LIBRARY} @@ -139,7 +267,11 @@ if (LLAMA_BLAS) if (${LLAMA_BLAS_VENDOR} MATCHES "Generic") pkg_check_modules(DepBLAS REQUIRED blas) elseif (${LLAMA_BLAS_VENDOR} MATCHES "OpenBLAS") - pkg_check_modules(DepBLAS REQUIRED openblas) + # As of openblas v0.3.22, the 64-bit is named openblas64.pc + pkg_check_modules(DepBLAS openblas64) + if (NOT DepBLAS_FOUND) + pkg_check_modules(DepBLAS REQUIRED openblas) + endif() elseif (${LLAMA_BLAS_VENDOR} MATCHES "FLAME") pkg_check_modules(DepBLAS REQUIRED blis) elseif (${LLAMA_BLAS_VENDOR} MATCHES "ATLAS") @@ -178,14 +310,17 @@ if (LLAMA_BLAS) endif() message(STATUS "BLAS found, Includes: ${BLAS_INCLUDE_DIRS}") + add_compile_options(${BLAS_LINKER_FLAGS}) + add_compile_definitions(GGML_USE_OPENBLAS) + if (${BLAS_INCLUDE_DIRS} MATCHES "mkl" AND (${LLAMA_BLAS_VENDOR} MATCHES "Generic" OR ${LLAMA_BLAS_VENDOR} MATCHES "Intel")) add_compile_definitions(GGML_BLAS_USE_MKL) endif() - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${BLAS_LIBRARIES}) - set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${BLAS_INCLUDE_DIRS}) + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${BLAS_LIBRARIES}) + set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${BLAS_INCLUDE_DIRS}) else() message(WARNING "BLAS not found, please refer to " "https://cmake.org/cmake/help/latest/module/FindBLAS.html#blas-lapack-vendors" @@ -198,21 +333,25 @@ if (LLAMA_QKK_64) endif() if (LLAMA_CUBLAS) + message(WARNING "LLAMA_CUBLAS is deprecated and will be removed in the future.\nUse LLAMA_CUDA instead") + set(LLAMA_CUDA ON) +endif() + +if (LLAMA_CUDA) cmake_minimum_required(VERSION 3.17) find_package(CUDAToolkit) if (CUDAToolkit_FOUND) - message(STATUS "cuBLAS found") + message(STATUS "CUDA found") enable_language(CUDA) set(GGML_HEADERS_CUDA ggml-cuda.h) - set(GGML_SOURCES_CUDA ggml-cuda.cu) - add_compile_definitions(GGML_USE_CUBLAS) -# if (LLAMA_CUDA_CUBLAS) -# add_compile_definitions(GGML_CUDA_CUBLAS) -# endif() + file(GLOB GGML_SOURCES_CUDA "ggml-cuda/*.cu") + list(APPEND GGML_SOURCES_CUDA "ggml-cuda.cu") + + add_compile_definitions(GGML_USE_CUDA) if (LLAMA_CUDA_FORCE_DMMV) add_compile_definitions(GGML_CUDA_FORCE_DMMV) endif() @@ -229,6 +368,9 @@ if (LLAMA_CUBLAS) endif() add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) add_compile_definitions(GGML_CUDA_PEER_MAX_BATCH_SIZE=${LLAMA_CUDA_PEER_MAX_BATCH_SIZE}) + if (LLAMA_CUDA_NO_PEER_COPY) + add_compile_definitions(GGML_CUDA_NO_PEER_COPY) + endif() if (LLAMA_STATIC) if (WIN32) @@ -241,6 +383,8 @@ if (LLAMA_CUBLAS) set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt) endif() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cuda_driver) + if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES) # 52 == lowest CUDA 12 standard # 60 == f16 CUDA intrinsics @@ -256,7 +400,7 @@ if (LLAMA_CUBLAS) message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}") else() - message(WARNING "cuBLAS not found") + message(WARNING "CUDA not found") endif() endif() @@ -265,15 +409,20 @@ if (LLAMA_MPI) find_package(MPI) if (MPI_C_FOUND) message(STATUS "MPI found") + set(GGML_HEADERS_MPI ggml-mpi.h) - set(GGML_SOURCES_MPI ggml-mpi.c ggml-mpi.h) + set(GGML_SOURCES_MPI ggml-mpi.c) + add_compile_definitions(GGML_USE_MPI) add_compile_definitions(${MPI_C_COMPILE_DEFINITIONS}) + if (NOT MSVC) add_compile_options(-Wno-cast-qual) endif() + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_C_LIBRARIES}) set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${MPI_C_INCLUDE_DIRS}) + # Even if you're only using the C header, C++ programs may bring in MPI # C++ functions, so more linkage is needed if (MPI_CXX_FOUND) @@ -300,48 +449,303 @@ if (LLAMA_CLBLAST) endif() endif() +if (LLAMA_VULKAN) + find_package(Vulkan) + if (Vulkan_FOUND) + message(STATUS "Vulkan found") + + set(GGML_HEADERS_VULKAN ggml-vulkan.h) + set(GGML_SOURCES_VULKAN ggml-vulkan.cpp) + + add_compile_definitions(GGML_USE_VULKAN) + + if (LLAMA_VULKAN_CHECK_RESULTS) + add_compile_definitions(GGML_VULKAN_CHECK_RESULTS) + endif() + + if (LLAMA_VULKAN_DEBUG) + add_compile_definitions(GGML_VULKAN_DEBUG) + endif() + + if (LLAMA_VULKAN_VALIDATE) + add_compile_definitions(GGML_VULKAN_VALIDATE) + endif() + + if (LLAMA_VULKAN_RUN_TESTS) + add_compile_definitions(GGML_VULKAN_RUN_TESTS) + endif() + + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} Vulkan::Vulkan) + else() + message(WARNING "Vulkan not found") + endif() +endif() + if (LLAMA_HIPBLAS) list(APPEND CMAKE_PREFIX_PATH /opt/rocm) if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang") message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang") endif() + if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++") endif() - find_package(hip) - find_package(hipblas) - find_package(rocblas) + find_package(hip REQUIRED) + find_package(hipblas REQUIRED) + find_package(rocblas REQUIRED) - if (${hipblas_FOUND} AND ${hip_FOUND}) - message(STATUS "HIP and hipBLAS found") - add_compile_definitions(GGML_USE_HIPBLAS GGML_USE_CUBLAS) - add_library(ggml-rocm OBJECT ggml-cuda.cu ggml-cuda.h) - if (BUILD_SHARED_LIBS) - set_target_properties(ggml-rocm PROPERTIES POSITION_INDEPENDENT_CODE ON) - endif() - if (LLAMA_CUDA_FORCE_DMMV) - target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_FORCE_DMMV) - endif() - if (LLAMA_CUDA_FORCE_MMQ) - target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_FORCE_MMQ) - endif() - target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) - target_compile_definitions(ggml-rocm PRIVATE GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) - target_compile_definitions(ggml-rocm PRIVATE K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) - set_source_files_properties(ggml-cuda.cu PROPERTIES LANGUAGE CXX) - target_link_libraries(ggml-rocm PRIVATE hip::device PUBLIC hip::host roc::rocblas roc::hipblas) + message(STATUS "HIP and hipBLAS found") - if (LLAMA_STATIC) - message(FATAL_ERROR "Static linking not supported for HIP/ROCm") + set(GGML_HEADERS_ROCM ggml-cuda.h) + + file(GLOB GGML_SOURCES_ROCM "ggml-cuda/*.cu") + list(APPEND GGML_SOURCES_ROCM "ggml-cuda.cu") + + add_compile_definitions(GGML_USE_HIPBLAS GGML_USE_CUDA) + + if (LLAMA_HIP_UMA) + add_compile_definitions(GGML_HIP_UMA) + endif() + + if (LLAMA_CUDA_FORCE_DMMV) + add_compile_definitions(GGML_CUDA_FORCE_DMMV) + endif() + + if (LLAMA_CUDA_FORCE_MMQ) + add_compile_definitions(GGML_CUDA_FORCE_MMQ) + endif() + + if (LLAMA_CUDA_NO_PEER_COPY) + add_compile_definitions(GGML_CUDA_NO_PEER_COPY) + endif() + + add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) + add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) + add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) + + set_source_files_properties(${GGML_SOURCES_ROCM} PROPERTIES LANGUAGE CXX) + + if (LLAMA_STATIC) + message(FATAL_ERROR "Static linking not supported for HIP/ROCm") + endif() + + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} hip::device PUBLIC hip::host roc::rocblas roc::hipblas) +endif() + +if (LLAMA_SYCL) + if (NOT LLAMA_SYCL_TARGET MATCHES "^(INTEL|NVIDIA)$") + message(FATAL_ERROR "Invalid backend chosen, supported options are INTEL or NVIDIA") + endif() + + if ( NOT DEFINED ENV{ONEAPI_ROOT}) + message(FATAL_ERROR "Not detect ENV {ONEAPI_ROOT}, please install oneAPI & source it, like: source /opt/intel/oneapi/setvars.sh") + endif() + #todo: AOT + + find_package(IntelSYCL REQUIRED) + + message(STATUS "SYCL found") + + add_compile_definitions(GGML_USE_SYCL) + + if (LLAMA_SYCL_F16) + add_compile_definitions(GGML_SYCL_F16) + endif() + + add_compile_options(-I./) #include DPCT + add_compile_options(-I/${SYCL_INCLUDE_DIR}) + + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl -L${MKLROOT}/lib") + if (LLAMA_SYCL_TARGET STREQUAL "NVIDIA") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl-targets=nvptx64-nvidia-cuda") + endif() + + set(GGML_HEADERS_SYCL ggml-sycl.h) + set(GGML_SOURCES_SYCL ggml-sycl.cpp) + + if (WIN32) + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl sycl7 OpenCL mkl_sycl_blas_dll.lib mkl_intel_ilp64_dll.lib mkl_sequential_dll.lib mkl_core_dll.lib) + else() + if (LLAMA_SYCL_TARGET STREQUAL "INTEL") + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl OpenCL mkl_core pthread m dl mkl_sycl_blas mkl_intel_ilp64 mkl_tbb_thread) + elseif (LLAMA_SYCL_TARGET STREQUAL "NVIDIA") + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl pthread m dl onemkl) endif() - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ggml-rocm) + endif() +endif() + +if (LLAMA_KOMPUTE) + add_compile_definitions(VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) + find_package(Vulkan COMPONENTS glslc REQUIRED) + find_program(glslc_executable NAMES glslc HINTS Vulkan::glslc) + if (NOT glslc_executable) + message(FATAL_ERROR "glslc not found") + endif() + + function(compile_shader) + set(options) + set(oneValueArgs) + set(multiValueArgs SOURCES) + cmake_parse_arguments(compile_shader "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + foreach(source ${compile_shader_SOURCES}) + get_filename_component(filename ${source} NAME) + set(spv_file ${filename}.spv) + add_custom_command( + OUTPUT ${spv_file} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source} + ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/common.comp + ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_getrows.comp + ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_mul_mv_q_n_pre.comp + ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_mul_mv_q_n.comp + COMMAND ${glslc_executable} --target-env=vulkan1.2 -o ${spv_file} ${CMAKE_CURRENT_SOURCE_DIR}/${source} + COMMENT "Compiling ${source} to ${spv_file}" + ) + + get_filename_component(RAW_FILE_NAME ${spv_file} NAME) + set(FILE_NAME "shader${RAW_FILE_NAME}") + string(REPLACE ".comp.spv" ".h" HEADER_FILE ${FILE_NAME}) + string(TOUPPER ${HEADER_FILE} HEADER_FILE_DEFINE) + string(REPLACE "." "_" HEADER_FILE_DEFINE "${HEADER_FILE_DEFINE}") + set(OUTPUT_HEADER_FILE "${HEADER_FILE}") + message(STATUS "${HEADER_FILE} generating ${HEADER_FILE_DEFINE}") + if(CMAKE_GENERATOR MATCHES "Visual Studio") + add_custom_command( + OUTPUT ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "/*THIS FILE HAS BEEN AUTOMATICALLY GENERATED - DO NOT EDIT*/" > ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#ifndef ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "namespace kp {" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "namespace shader_data {" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_BINARY_DIR}/bin/$/xxd -i ${RAW_FILE_NAME} >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "}}" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#endif // define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + DEPENDS ${spv_file} xxd + COMMENT "Converting to hpp: ${FILE_NAME} ${CMAKE_BINARY_DIR}/bin/$/xxd" + ) + else() + add_custom_command( + OUTPUT ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "/*THIS FILE HAS BEEN AUTOMATICALLY GENERATED - DO NOT EDIT*/" > ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#ifndef ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "namespace kp {" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "namespace shader_data {" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_BINARY_DIR}/bin/xxd -i ${RAW_FILE_NAME} >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo "}}" >> ${OUTPUT_HEADER_FILE} + COMMAND ${CMAKE_COMMAND} -E echo \"\#endif // define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} + DEPENDS ${spv_file} xxd + COMMENT "Converting to hpp: ${FILE_NAME} ${CMAKE_BINARY_DIR}/bin/xxd" + ) + endif() + endforeach() + endfunction() + + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/kompute/CMakeLists.txt") + message(STATUS "Kompute found") + set(KOMPUTE_OPT_LOG_LEVEL Error CACHE STRING "Kompute log level") + add_subdirectory(kompute) + + # Compile our shaders + compile_shader(SOURCES + kompute-shaders/op_scale.comp + kompute-shaders/op_scale_8.comp + kompute-shaders/op_add.comp + kompute-shaders/op_addrow.comp + kompute-shaders/op_mul.comp + kompute-shaders/op_silu.comp + kompute-shaders/op_relu.comp + kompute-shaders/op_gelu.comp + kompute-shaders/op_softmax.comp + kompute-shaders/op_norm.comp + kompute-shaders/op_rmsnorm.comp + kompute-shaders/op_diagmask.comp + kompute-shaders/op_mul_mat_mat_f32.comp + kompute-shaders/op_mul_mat_f16.comp + kompute-shaders/op_mul_mat_q8_0.comp + kompute-shaders/op_mul_mat_q4_0.comp + kompute-shaders/op_mul_mat_q4_1.comp + kompute-shaders/op_mul_mat_q6_k.comp + kompute-shaders/op_getrows_f16.comp + kompute-shaders/op_getrows_q4_0.comp + kompute-shaders/op_getrows_q4_1.comp + kompute-shaders/op_getrows_q6_k.comp + kompute-shaders/op_rope_f16.comp + kompute-shaders/op_rope_f32.comp + kompute-shaders/op_cpy_f16_f16.comp + kompute-shaders/op_cpy_f16_f32.comp + kompute-shaders/op_cpy_f32_f16.comp + kompute-shaders/op_cpy_f32_f32.comp + ) + + # Create a custom target for our generated shaders + add_custom_target(generated_shaders DEPENDS + shaderop_scale.h + shaderop_scale_8.h + shaderop_add.h + shaderop_addrow.h + shaderop_mul.h + shaderop_silu.h + shaderop_relu.h + shaderop_gelu.h + shaderop_softmax.h + shaderop_norm.h + shaderop_rmsnorm.h + shaderop_diagmask.h + shaderop_mul_mat_mat_f32.h + shaderop_mul_mat_f16.h + shaderop_mul_mat_q8_0.h + shaderop_mul_mat_q4_0.h + shaderop_mul_mat_q4_1.h + shaderop_mul_mat_q6_k.h + shaderop_getrows_f16.h + shaderop_getrows_q4_0.h + shaderop_getrows_q4_1.h + shaderop_getrows_q6_k.h + shaderop_rope_f16.h + shaderop_rope_f32.h + shaderop_cpy_f16_f16.h + shaderop_cpy_f16_f32.h + shaderop_cpy_f32_f16.h + shaderop_cpy_f32_f32.h + ) + + # Create a custom command that depends on the generated_shaders + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp + DEPENDS generated_shaders + COMMENT "Ensuring shaders are generated before compiling ggml-kompute.cpp" + ) + + # Add the stamp to the main sources to ensure dependency tracking + set(GGML_SOURCES_KOMPUTE ggml-kompute.cpp ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp) + set(GGML_HEADERS_KOMPUTE ggml-kompute.h ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp) + + add_compile_definitions(GGML_USE_KOMPUTE) + + set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} kompute) + set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${CMAKE_BINARY_DIR}) else() - message(WARNING "hipBLAS or HIP not found. Try setting CMAKE_PREFIX_PATH=/opt/rocm") + message(WARNING "Kompute not found") endif() endif() +if (LLAMA_CPU_HBM) + find_library(memkind memkind REQUIRED) + + add_compile_definitions(GGML_USE_CPU_HBM) + + target_link_libraries(ggml PUBLIC memkind) +endif() + +if (LLAMA_PERF) + add_compile_definitions(GGML_PERF) +endif() + function(get_flags CCID CCVER) set(C_FLAGS "") set(CXX_FLAGS "") @@ -354,17 +758,17 @@ function(get_flags CCID CCVER) (CCID STREQUAL "Clang" AND CCVER VERSION_GREATER_EQUAL 3.8.0) OR (CCID STREQUAL "AppleClang" AND CCVER VERSION_GREATER_EQUAL 7.3.0) ) - set(C_FLAGS ${C_FLAGS} -Wdouble-promotion) + list(APPEND C_FLAGS -Wdouble-promotion) endif() elseif (CCID STREQUAL "GNU") set(C_FLAGS -Wdouble-promotion) set(CXX_FLAGS -Wno-array-bounds) if (CCVER VERSION_GREATER_EQUAL 7.1.0) - set(CXX_FLAGS ${CXX_FLAGS} -Wno-format-truncation) + list(APPEND CXX_FLAGS -Wno-format-truncation) endif() if (CCVER VERSION_GREATER_EQUAL 8.1.0) - set(CXX_FLAGS ${CXX_FLAGS} -Wextra-semi) + list(APPEND CXX_FLAGS -Wextra-semi) endif() endif() @@ -372,15 +776,24 @@ function(get_flags CCID CCVER) set(GF_CXX_FLAGS ${CXX_FLAGS} PARENT_SCOPE) endfunction() +if (LLAMA_FATAL_WARNINGS) + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + list(APPEND C_FLAGS -Werror) + list(APPEND CXX_FLAGS -Werror) + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + add_compile_options(/WX) + endif() +endif() + if (LLAMA_ALL_WARNINGS) if (NOT MSVC) - set(WARNING_FLAGS -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) - set(C_FLAGS -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes - -Werror=implicit-int -Werror=implicit-function-declaration) - set(CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn) + list(APPEND WARNING_FLAGS -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) + list(APPEND C_FLAGS -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes + -Werror=implicit-int -Werror=implicit-function-declaration) + list(APPEND CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn) - set(C_FLAGS ${WARNING_FLAGS} ${C_FLAGS}) - set(CXX_FLAGS ${WARNING_FLAGS} ${CXX_FLAGS}) + list(APPEND C_FLAGS ${WARNING_FLAGS}) + list(APPEND CXX_FLAGS ${WARNING_FLAGS}) get_flags(${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}) @@ -393,16 +806,19 @@ if (LLAMA_ALL_WARNINGS) endif() endif() -if (LLAMA_CUBLAS) - set(CUDA_FLAGS ${CXX_FLAGS} -use_fast_math) - if (NOT MSVC) - set(CUDA_FLAGS ${CUDA_FLAGS} -Wno-pedantic) +set(CUDA_CXX_FLAGS "") + +if (LLAMA_CUDA) + set(CUDA_FLAGS -use_fast_math) + + if (LLAMA_FATAL_WARNINGS) + list(APPEND CUDA_FLAGS -Werror all-warnings) endif() if (LLAMA_ALL_WARNINGS AND NOT MSVC) set(NVCC_CMD ${CMAKE_CUDA_COMPILER} .c) if (NOT CMAKE_CUDA_HOST_COMPILER STREQUAL "") - set(NVCC_CMD ${NVCC_CMD} -ccbin ${CMAKE_CUDA_HOST_COMPILER}) + list(APPEND NVCC_CMD -ccbin ${CMAKE_CUDA_HOST_COMPILER}) endif() execute_process( @@ -430,13 +846,12 @@ if (LLAMA_CUBLAS) message("-- CUDA host compiler is ${CUDA_CCID} ${CUDA_CCVER}") get_flags(${CUDA_CCID} ${CUDA_CCVER}) - list(JOIN GF_CXX_FLAGS " " CUDA_CXX_FLAGS) # pass host compiler flags as a single argument - if (NOT CUDA_CXX_FLAGS STREQUAL "") - set(CUDA_FLAGS ${CUDA_FLAGS} -Xcompiler ${CUDA_CXX_FLAGS}) - endif() + list(APPEND CUDA_CXX_FLAGS ${CXX_FLAGS} ${GF_CXX_FLAGS}) # This is passed to -Xcompiler later endif() - add_compile_options("$<$:${CUDA_FLAGS}>") + if (NOT MSVC) + list(APPEND CUDA_CXX_FLAGS -Wno-pedantic) + endif() endif() if (WIN32) @@ -457,12 +872,24 @@ if (LLAMA_LTO) endif() endif() +if (LLAMA_CCACHE) + find_program(LLAMA_CCACHE_FOUND ccache) + if (LLAMA_CCACHE_FOUND) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + set(ENV{CCACHE_SLOPPINESS} time_macros) + message(STATUS "ccache found, compilation results will be cached. Disable with LLAMA_CCACHE=OFF.") + else() + message(STATUS "Warning: ccache not found - consider installing it for faster compilation or disable this warning with LLAMA_CCACHE=OFF") + endif () +endif() + # this version of Apple ld64 is buggy execute_process( COMMAND ${CMAKE_C_COMPILER} ${CMAKE_EXE_LINKER_FLAGS} -Wl,-v ERROR_VARIABLE output OUTPUT_QUIET ) + if (output MATCHES "dyld-1015\.7") add_compile_definitions(HAVE_BUGGY_APPLE_LINKER) endif() @@ -472,10 +899,10 @@ endif() # feel free to update the Makefile for your architecture and send a pull request or issue message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") if (MSVC) - string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" CMAKE_GENERATOR_PLATFORM_LWR) - message(STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}") + string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" CMAKE_GENERATOR_PLATFORM_LWR) + message(STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}") else () - set(CMAKE_GENERATOR_PLATFORM_LWR "") + set(CMAKE_GENERATOR_PLATFORM_LWR "") endif () if (NOT MSVC) @@ -490,42 +917,63 @@ if (NOT MSVC) endif() endif() -if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR ("${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "arm64")) +set(ARCH_FLAGS "") + +if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR + (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND + CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$")) message(STATUS "ARM detected") if (MSVC) + add_compile_definitions(__aarch64__) # MSVC defines _M_ARM64 instead add_compile_definitions(__ARM_NEON) add_compile_definitions(__ARM_FEATURE_FMA) - add_compile_definitions(__ARM_FEATURE_DOTPROD) - # add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) # MSVC doesn't support vdupq_n_f16, vld1q_f16, vst1q_f16 - add_compile_definitions(__aarch64__) # MSVC defines _M_ARM64 instead + + set(CMAKE_REQUIRED_FLAGS_PREV ${CMAKE_REQUIRED_FLAGS}) + string(JOIN " " CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "/arch:armv8.2") + check_cxx_source_compiles("#include \nint main() { int8x16_t _a, _b; int32x4_t _s = vdotq_s32(_s, _a, _b); return 0; }" GGML_COMPILER_SUPPORT_DOTPROD) + if (GGML_COMPILER_SUPPORT_DOTPROD) + add_compile_definitions(__ARM_FEATURE_DOTPROD) + endif () + check_cxx_source_compiles("#include \nint main() { float16_t _a; float16x8_t _s = vdupq_n_f16(_a); return 0; }" GGML_COMPILER_SUPPORT_FP16_VECTOR_ARITHMETIC) + if (GGML_COMPILER_SUPPORT_FP16_VECTOR_ARITHMETIC) + add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) + endif () + set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_PREV}) else() check_cxx_compiler_flag(-mfp16-format=ieee COMPILER_SUPPORTS_FP16_FORMAT_I3E) if (NOT "${COMPILER_SUPPORTS_FP16_FORMAT_I3E}" STREQUAL "") - add_compile_options(-mfp16-format=ieee) + list(APPEND ARCH_FLAGS -mfp16-format=ieee) endif() if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6") # Raspberry Pi 1, Zero - add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access) + list(APPEND ARCH_FLAGS -mfpu=neon-fp-armv8 -mno-unaligned-access) endif() if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7") - # Raspberry Pi 2 - add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access -funsafe-math-optimizations) + if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Android") + # Android armeabi-v7a + list(APPEND ARCH_FLAGS -mfpu=neon-vfpv4 -mno-unaligned-access -funsafe-math-optimizations) + else() + # Raspberry Pi 2 + list(APPEND ARCH_FLAGS -mfpu=neon-fp-armv8 -mno-unaligned-access -funsafe-math-optimizations) + endif() endif() if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv8") + # Android arm64-v8a # Raspberry Pi 3, 4, Zero 2 (32-bit) - add_compile_options(-mno-unaligned-access) + list(APPEND ARCH_FLAGS -mno-unaligned-access) endif() endif() -elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "^(x86_64|i686|amd64|x64)$" ) +elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LWR MATCHES "^(x86_64|i686|amd64|x64|win32)$" OR + (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND + CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64)$")) message(STATUS "x86 detected") if (MSVC) # instruction set detection for MSVC only if (LLAMA_NATIVE) - include(${llama.cpp_SOURCE_DIR}/cmake/FindSIMD.cmake) + include(cmake/FindSIMD.cmake) endif () if (LLAMA_AVX512) - add_compile_options($<$:/arch:AVX512>) - add_compile_options($<$:/arch:AVX512>) + list(APPEND ARCH_FLAGS /arch:AVX512) # MSVC has no compile-time flags enabling specific # AVX512 extensions, neither it defines the # macros corresponding to the extensions. @@ -539,54 +987,64 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE add_compile_definitions($<$:__AVX512VNNI__>) endif() elseif (LLAMA_AVX2) - add_compile_options($<$:/arch:AVX2>) - add_compile_options($<$:/arch:AVX2>) + list(APPEND ARCH_FLAGS /arch:AVX2) elseif (LLAMA_AVX) - add_compile_options($<$:/arch:AVX>) - add_compile_options($<$:/arch:AVX>) + list(APPEND ARCH_FLAGS /arch:AVX) endif() else() if (LLAMA_NATIVE) - add_compile_options(-march=native) + list(APPEND ARCH_FLAGS -march=native) endif() if (LLAMA_F16C) - add_compile_options(-mf16c) + list(APPEND ARCH_FLAGS -mf16c) endif() if (LLAMA_FMA) - add_compile_options(-mfma) + list(APPEND ARCH_FLAGS -mfma) endif() if (LLAMA_AVX) - add_compile_options(-mavx) + list(APPEND ARCH_FLAGS -mavx) endif() if (LLAMA_AVX2) - add_compile_options(-mavx2) + list(APPEND ARCH_FLAGS -mavx2) endif() if (LLAMA_AVX512) - add_compile_options(-mavx512f) - add_compile_options(-mavx512bw) + list(APPEND ARCH_FLAGS -mavx512f) + list(APPEND ARCH_FLAGS -mavx512bw) endif() if (LLAMA_AVX512_VBMI) - add_compile_options(-mavx512vbmi) + list(APPEND ARCH_FLAGS -mavx512vbmi) endif() if (LLAMA_AVX512_VNNI) - add_compile_options(-mavx512vnni) + list(APPEND ARCH_FLAGS -mavx512vnni) endif() endif() elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") message(STATUS "PowerPC detected") if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le") - add_compile_options(-mcpu=powerpc64le) + list(APPEND ARCH_FLAGS -mcpu=powerpc64le) else() - add_compile_options(-mcpu=native -mtune=native) + list(APPEND ARCH_FLAGS -mcpu=native -mtune=native) #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be) endif() else() message(STATUS "Unknown architecture") endif() +add_compile_options("$<$:${ARCH_FLAGS}>") +add_compile_options("$<$:${ARCH_FLAGS}>") + +if (LLAMA_CUDA) + list(APPEND CUDA_CXX_FLAGS ${ARCH_FLAGS}) + list(JOIN CUDA_CXX_FLAGS " " CUDA_CXX_FLAGS_JOINED) # pass host compiler flags as a single argument + if (NOT CUDA_CXX_FLAGS_JOINED STREQUAL "") + list(APPEND CUDA_FLAGS -Xcompiler ${CUDA_CXX_FLAGS_JOINED}) + endif() + add_compile_options("$<$:${CUDA_FLAGS}>") +endif() + if (MINGW) # Target Windows 8 for PrefetchVirtualMemory - add_compile_definitions(_WIN32_WINNT=0x602) + add_compile_definitions(_WIN32_WINNT=${LLAMA_WIN_VER}) endif() # From 73382e42748a753c1da3086168c1678612c9c624 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 14:07:49 +0200 Subject: [PATCH 125/384] Update readme llama.cpp badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c2a0f5b..da8094f9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b1645](https://img.shields.io/badge/llama.cpp-%23b1645-informational) +![llama.cpp b2589](https://img.shields.io/badge/llama.cpp-%23b2589-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) From 1727c692a91a64469e9787ff89f02e074fdad14f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 14:32:39 +0200 Subject: [PATCH 126/384] Add clang-format --- .clang-format | 236 +++++++++++++++++++++ src/main/cpp/jllama.cpp | 457 ++++++++++++++++++++++------------------ 2 files changed, 488 insertions(+), 205 deletions(-) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..1d24348d --- /dev/null +++ b/.clang-format @@ -0,0 +1,236 @@ +--- +Language: Cpp +# BasedOnStyle: Microsoft +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterExternBlock: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: false + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAfterAttributes: Never +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Custom +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 1000 +PointerAlignment: Right +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 4 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... + diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 3876c108..ba5fbc4d 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,13 +1,14 @@ +#include "jllama.h" + #include #include -#include #include +#include -#include "llama.h" -#include "jllama.h" #include "common.h" -#include "sampling.h" #include "grammar-parser.h" +#include "llama.h" +#include "sampling.h" // classes static jclass c_llama_model = 0; @@ -147,7 +148,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); - if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_output && c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && c_biconsumer && c_llama_error && c_error_oom)) + if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_output && + c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && + c_biconsumer && c_llama_error && c_error_oom)) { goto error; } @@ -171,19 +174,20 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); - // find constructors + // find constructors cc_output = env->GetMethodID(c_output, "", "(I[BLjava/util/Map;)V"); cc_hash_map = env->GetMethodID(c_hash_map, "", "()V"); cc_integer = env->GetMethodID(c_integer, "", "(I)V"); cc_float = env->GetMethodID(c_float, "", "(F)V"); - if (!(cc_output && cc_hash_map && cc_integer && cc_float)) - { - goto error; - } + if (!(cc_output && cc_hash_map && cc_integer && cc_float)) + { + goto error; + } // find methods -// m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/nio/charset/Charset;)[B"); + // m_get_bytes = env->GetMethodID(c_string, "getBytes", + // "(Ljava/nio/charset/Charset;)[B"); m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); m_entry_set = env->GetMethodID(c_map, "entrySet", "()Ljava/util/Set;"); m_set_iterator = env->GetMethodID(c_set, "iterator", "()Ljava/util/Iterator;"); @@ -196,7 +200,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) m_float_value = env->GetMethodID(c_float, "floatValue", "()F"); m_biconsumer_accept = env->GetMethodID(c_biconsumer, "accept", "(Ljava/lang/Object;Ljava/lang/Object;)V"); - if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && m_entry_value && m_map_put && m_int_value && m_float_value && m_biconsumer_accept)) + if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && + m_entry_value && m_map_put && m_int_value && m_float_value && m_biconsumer_accept)) { goto error; } @@ -259,11 +264,17 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { goto error; } - if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && f_n_beams && f_grammar && f_antiprompt && f_infer_seed && f_tokenize_special)) + if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && + f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && + f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && + f_n_beams && f_grammar && f_antiprompt && f_infer_seed && f_tokenize_special)) { goto error; } - if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_memory_f16 && f_mem_test && f_numa && f_verbose_prompt)) + if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && + f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && + f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_memory_f16 && f_mem_test && + f_numa && f_verbose_prompt)) { goto error; } @@ -279,7 +290,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } -// o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); + // o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); o_utf_8 = env->NewStringUTF("UTF-8"); o_utf_8 = (jclass)env->NewGlobalRef(o_utf_8); @@ -372,7 +383,8 @@ static void jllama_log_callback(enum ggml_log_level level, const char *text, voi env->DeleteLocalRef(java_text); } -static void jllama_log_callback(enum ggml_log_level level, std::string text) { +static void jllama_log_callback(enum ggml_log_level level, std::string text) +{ jllama_log_callback(level, text.c_str(), nullptr); } @@ -405,9 +417,10 @@ static float parse_jfloat(JNIEnv *env, jobject java_float) return env->CallFloatMethod(java_float, m_float_value); } -// Since Java expects utf16 but std::strings are utf8, we can't directly use `env->NewString` or `env-NewString`, but -// we simply send the bytes directly and do the conversion in Java. Unfortunately, there isn't a nice/standardized way -// to do this conversion in C++ +// Since Java expects utf16 but std::strings are utf8, we can't directly use +// `env->NewString` or `env-NewString`, but we simply send the bytes directly +// and do the conversion in Java. Unfortunately, there isn't a +// nice/standardized way to do this conversion in C++ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) { jsize len = string.size(); @@ -446,12 +459,10 @@ enum stop_type static bool ends_with(const std::string &str, const std::string &suffix) { - return str.size() >= suffix.size() && - 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); + return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); } -static size_t find_partial_stop_string(const std::string &stop, - const std::string &text) +static size_t find_partial_stop_string(const std::string &stop, const std::string &text) { if (!text.empty() && !stop.empty()) { @@ -471,8 +482,7 @@ static size_t find_partial_stop_string(const std::string &stop, return std::string::npos; } -template -static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) +template static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) { std::string ret; for (; begin != end; ++begin) @@ -522,7 +532,8 @@ struct jllama_context grammar_parser::parse_state parsed_grammar; llama_grammar *grammar = nullptr; - // Whether to tokenize special and/or control tokens which otherwise are not exposed and treated as plaintext. + // Whether to tokenize special and/or control tokens which otherwise are not + // exposed and treated as plaintext. bool tokenize_special = false; bool truncated = false; @@ -576,7 +587,8 @@ struct jllama_context n_remain = 0; n_past = 0; - if (grammar != nullptr) { + if (grammar != nullptr) + { llama_grammar_free(grammar); grammar = nullptr; ctx_sampling = *llama_sampling_init(params.sparams); @@ -604,10 +616,12 @@ struct jllama_context bool loadGrammar() { - if (!params.sparams.grammar.empty()) { + if (!params.sparams.grammar.empty()) + { parsed_grammar = grammar_parser::parse(params.sparams.grammar.c_str()); // will be empty (default) if there are parse errors - if (parsed_grammar.rules.empty()) { + if (parsed_grammar.rules.empty()) + { jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error"); return false; } @@ -615,14 +629,16 @@ struct jllama_context { auto it = params.sparams.logit_bias.find(llama_token_eos(model)); - if (it != params.sparams.logit_bias.end() && it->second == -INFINITY) { - jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause most grammars to fail"); + if (it != params.sparams.logit_bias.end() && it->second == -INFINITY) + { + jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause " + "most grammars to fail"); } } std::vector grammar_rules(parsed_grammar.c_rules()); - grammar = llama_grammar_init( - grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); + grammar = + llama_grammar_init(grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); } ctx_sampling = *llama_sampling_init(params.sparams); return true; @@ -631,7 +647,8 @@ struct jllama_context void loadInfill() { bool suff_rm_leading_spc = true; - if (params.input_suffix.find_first_of(" ") == 0 && params.input_suffix.size() > 1) { + if (params.input_suffix.find_first_of(" ") == 0 && params.input_suffix.size() > 1) + { params.input_suffix.erase(0, 1); suff_rm_leading_spc = false; } @@ -639,11 +656,13 @@ struct jllama_context auto prefix_tokens = tokenize(params.input_prefix, false); auto suffix_tokens = tokenize(params.input_suffix, false); const int space_token = 29871; - if (suff_rm_leading_spc && suffix_tokens[0] == space_token) { + if (suff_rm_leading_spc && suffix_tokens[0] == space_token) + { suffix_tokens.erase(suffix_tokens.begin()); } prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); - prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(model)); // always add BOS + prefix_tokens.insert(prefix_tokens.begin(), + llama_token_bos(model)); // always add BOS prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(model)); prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); prefix_tokens.push_back(llama_token_middle(model)); @@ -664,10 +683,11 @@ struct jllama_context const int n_left = (params.n_ctx - params.n_keep) / 2; std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; - new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); + new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, + prompt_tokens.end()); std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left) ); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); truncated = true; prompt_tokens = new_tokens; @@ -697,7 +717,7 @@ struct jllama_context void loadPrompt() { - auto prompt_tokens = tokenize(prompt, true); // always add BOS + auto prompt_tokens = tokenize(prompt, true); // always add BOS num_prompt_tokens = prompt_tokens.size(); @@ -713,7 +733,8 @@ struct jllama_context const int n_left = (n_ctx - params.n_keep) / 2; std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; - new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, prompt_tokens.end()); + new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, + prompt_tokens.end()); std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); @@ -760,10 +781,10 @@ struct jllama_context { // Shift context - const int n_left = n_past - params.n_keep - 1; - const int n_discard = n_left/2; + const int n_left = n_past - params.n_keep - 1; + const int n_discard = n_left / 2; - llama_kv_cache_seq_rm (ctx, 0, params.n_keep + 1 , params.n_keep + n_discard + 1); + llama_kv_cache_seq_rm(ctx, 0, params.n_keep + 1, params.n_keep + n_discard + 1); llama_kv_cache_seq_shift(ctx, 0, params.n_keep + 1 + n_discard, n_past, -n_discard); for (size_t i = params.n_keep + 1 + n_discard; i < embd.size(); i++) @@ -775,7 +796,7 @@ struct jllama_context n_past -= n_discard; truncated = true; - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left) ); + jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); } bool tg = true; @@ -808,7 +829,7 @@ struct jllama_context // out of user input, sample next token result.tok = llama_sampling_sample(&ctx_sampling, ctx, NULL); - llama_token_data_array candidates_p = { ctx_sampling.cur.data(), ctx_sampling.cur.size(), false }; + llama_token_data_array candidates_p = {ctx_sampling.cur.data(), ctx_sampling.cur.size(), false}; const int32_t n_probs = params.sparams.n_probs; if (params.sparams.temp <= 0 && n_probs > 0) @@ -823,7 +844,8 @@ struct jllama_context } llama_sampling_accept(&ctx_sampling, ctx, result.tok, true); - if (tg) { + if (tg) + { num_tokens_predicted++; } } @@ -845,8 +867,7 @@ struct jllama_context return result; } - size_t findStoppingStrings(const std::string &text, const size_t last_token_size, - const stop_type type) + size_t findStoppingStrings(const std::string &text, const size_t last_token_size, const stop_type type) { size_t stop_pos = std::string::npos; for (const std::string &word : params.antiprompt) @@ -862,8 +883,7 @@ struct jllama_context { pos = find_partial_stop_string(word, text); } - if (pos != std::string::npos && - (stop_pos == std::string::npos || pos < stop_pos)) + if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) { if (type == STOP_FULL) { @@ -881,7 +901,8 @@ struct jllama_context { auto token_with_probs = nextToken(); - const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); + const std::string token_text = + token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); generated_text += token_text; if (params.sparams.n_probs > 0) @@ -965,32 +986,34 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ params.numa = env->GetBooleanField(jparams, f_numa); params.verbose_prompt = env->GetBooleanField(jparams, f_verbose_prompt); -// jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, f_lora_adapter); -// if (j_lora_adapter != nullptr) -// { -// params.lora_adapter = parse_jstring(env, j_lora_adapter); -// std::cout << params.lora_adapter << std::endl; -// env->DeleteLocalRef(j_lora_adapter); -// } -// jstring j_lora_base = (jstring)env->GetObjectField(jparams, f_lora_base); -// if (j_lora_base != nullptr) -// { -// params.lora_base = parse_jstring(env, j_lora_base); -// std::cout << params.lora_base << std::endl; -// env->DeleteLocalRef(j_lora_base); -// } - - // jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, f_tensor_split); - // if (j_tensor_split != nullptr) + // jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, + // f_lora_adapter); if (j_lora_adapter != nullptr) + // { + // params.lora_adapter = parse_jstring(env, j_lora_adapter); + // std::cout << params.lora_adapter << std::endl; + // env->DeleteLocalRef(j_lora_adapter); + // } + // jstring j_lora_base = (jstring)env->GetObjectField(jparams, + // f_lora_base); if (j_lora_base != nullptr) + // { + // params.lora_base = parse_jstring(env, j_lora_base); + // std::cout << params.lora_base << std::endl; + // env->DeleteLocalRef(j_lora_base); + // } + + // jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, + // f_tensor_split); if (j_tensor_split != nullptr) // { // #ifndef GGML_USE_CUBLAS - // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a tensor split.\n", {}); + // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not + // possible to set a tensor split.\n", {}); // #endif // jsize array_length = env->GetArrayLength(j_tensor_split); // GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); // float *tensor_split = new float[array_length]; - // env->GetFloatArrayRegion(j_tensor_split, 0, array_length, tensor_split); - // for (size_t i_device = 0; i_device < LLAMA_MAX_DEVICES; ++i_device) + // env->GetFloatArrayRegion(j_tensor_split, 0, array_length, + // tensor_split); for (size_t i_device = 0; i_device < + // LLAMA_MAX_DEVICES; ++i_device) // { // if (i_device < array_length) // { @@ -1006,21 +1029,27 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ // // #ifndef LLAMA_SUPPORTS_GPU_OFFLOAD // if (params.n_gpu_layers > 0) { - // // LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - // // "See main README.md for information on enabling GPU BLAS support", - // // {{"n_gpu_layers", params.n_gpu_layers}}); + // // LOG_WARNING("Not compiled with GPU offload support, + //--n-gpu-layers option will be ignored. " + // // "See main README.md for + // information on enabling GPU BLAS support", + // // {{"n_gpu_layers", + // params.n_gpu_layers}}); // } // #endif // // #ifndef GGML_USE_CUBLAS // if (params.low_vram) { - // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. It is not possible to set lower vram usage.\n", {}); + // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. + // It is not possible to set lower vram usage.\n", {}); // } // if (!params.mul_mat_q) { - // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. Disabling mul_mat_q kernels has no effect.\n", {}); + // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. + // Disabling mul_mat_q kernels has no effect.\n", {}); // } // if (params.main_gpu != 0) { - // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not possible to set a main GPU.", {}); + // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is + // not possible to set a main GPU.", {}); // } // #endif // @@ -1040,13 +1069,13 @@ static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jparams) { - auto & params = llama->params; + auto ¶ms = llama->params; - params.seed = env->GetIntField(jparams, f_infer_seed); + params.seed = env->GetIntField(jparams, f_infer_seed); params.n_predict = env->GetIntField(jparams, f_n_predict); params.n_keep = env->GetIntField(jparams, f_n_keep); - auto & sparams = params.sparams; + auto &sparams = params.sparams; sparams.top_k = env->GetIntField(jparams, f_top_k); sparams.top_p = env->GetFloatField(jparams, f_top_p); @@ -1069,9 +1098,9 @@ static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jpara sparams.grammar = parse_jstring(env, j_grammar); env->DeleteLocalRef(j_grammar); if (!llama->loadGrammar()) - { - env->ThrowNew(c_llama_error, "could not load grammar"); - } + { + env->ThrowNew(c_llama_error, "could not load grammar"); + } } sparams.logit_bias.clear(); @@ -1127,19 +1156,20 @@ static void setup_answering(JNIEnv *env, jllama_context *llama, jstring prompt, { llama->prompt = parse_jstring(env, prompt); llama->params.input_prefix = ""; - llama->params.input_suffix = ""; + llama->params.input_suffix = ""; setup_infer_params(env, llama, params); } static void setup_infilling(JNIEnv *env, jllama_context *llama, jstring prefix, jstring suffix, jobject params) { - llama->prompt = ""; - llama->params.input_prefix = parse_jstring(env, prefix); - llama->params.input_suffix = parse_jstring(env, suffix); - setup_infer_params(env, llama, params); + llama->prompt = ""; + llama->params.input_prefix = parse_jstring(env, prefix); + llama->params.input_suffix = parse_jstring(env, suffix); + setup_infer_params(env, llama, params); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, jobject jparams) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, + jobject jparams) { gpt_params params = parse_model_params(env, jparams, file_path); @@ -1155,18 +1185,21 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo // jllama_log_callback(GGML_LOG_LEVEL_INFO, "build=" + BUILD_NUMBER); // jllama_log_callback(GGML_LOG_LEVEL_INFO, "commit=" + BUILD_COMMIT); // jllama_log_callback(GGML_LOG_LEVEL_INFO, "n_threads=" + params.n_threads); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "total_threads=" + std::thread::hardware_concurrency()); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "system_info=" + llama_print_system_info()); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "total_threads=" + + // std::thread::hardware_concurrency()); + // jllama_log_callback(GGML_LOG_LEVEL_INFO, "system_info=" + + // llama_print_system_info()); env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, jobject params) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, + jobject params) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); llama->rewind(); @@ -1178,12 +1211,13 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv llama->beginCompletion(); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, jstring suffix, jobject params) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, + jstring suffix, jobject params) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); llama->rewind(); @@ -1216,44 +1250,49 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j size_t pos = std::min(sent_count, llama->generated_text.size()); - const std::string str_test = llama->generated_text.substr(pos); - bool is_stop_full = false; - size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); - if (stop_pos != std::string::npos) { - is_stop_full = true; - llama->generated_text.erase( - llama->generated_text.begin() + pos + stop_pos, - llama->generated_text.end()); - pos = std::min(sent_count, llama->generated_text.size()); - } else { - is_stop_full = false; - stop_pos = llama->findStoppingStrings(str_test, token_text.size(), - STOP_PARTIAL); - } + const std::string str_test = llama->generated_text.substr(pos); + bool is_stop_full = false; + size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); + if (stop_pos != std::string::npos) + { + is_stop_full = true; + llama->generated_text.erase(llama->generated_text.begin() + pos + stop_pos, llama->generated_text.end()); + pos = std::min(sent_count, llama->generated_text.size()); + } + else + { + is_stop_full = false; + stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); + } std::string to_send; - if ( - stop_pos == std::string::npos || - // Send rest of the text if we are at the end of the generation - (!llama->has_next_token && !is_stop_full && stop_pos > 0) - ) { - to_send = llama->generated_text.substr(pos, std::string::npos); - - sent_count += to_send.size(); - env->SetLongField(iter, f_iter_n_generated, sent_count); - - std::vector probs_output = {}; - - if (llama->params.sparams.n_probs > 0) { - const std::vector to_send_toks = llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); - size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); - size_t probs_stop_pos = std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); - if (probs_pos < probs_stop_pos) { - probs_output = std::vector(llama->generated_token_probs.begin() + probs_pos, llama->generated_token_probs.begin() + probs_stop_pos); - } - sent_token_probs_index = probs_stop_pos; - env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); - } + if (stop_pos == std::string::npos || + // Send rest of the text if we are at the end of the generation + (!llama->has_next_token && !is_stop_full && stop_pos > 0)) + { + to_send = llama->generated_text.substr(pos, std::string::npos); + + sent_count += to_send.size(); + env->SetLongField(iter, f_iter_n_generated, sent_count); + + std::vector probs_output = {}; + + if (llama->params.sparams.n_probs > 0) + { + const std::vector to_send_toks = + llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); + size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); + size_t probs_stop_pos = + std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); + if (probs_pos < probs_stop_pos) + { + probs_output = + std::vector(llama->generated_token_probs.begin() + probs_pos, + llama->generated_token_probs.begin() + probs_stop_pos); + } + sent_token_probs_index = probs_stop_pos; + env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); + } } else { @@ -1267,93 +1306,99 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, j // lock.release(); } - jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - for (const auto& tp : token_with_probs.probs) + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + for (const auto &tp : token_with_probs.probs) { - jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); - jobject jprob = env->NewObject(c_float, cc_float, tp.prob); - env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); + jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); + jobject jprob = env->NewObject(c_float, cc_float, tp.prob); + env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); } - jbyteArray jbytes = parse_jbytes(env, to_send); - return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); + jbyteArray jbytes = parse_jbytes(env, to_send); + return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, jobject params) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, + jobject params) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); - llama->rewind(); + llama->rewind(); - llama_reset_timings(llama->ctx); + llama_reset_timings(llama->ctx); - setup_answering(env, llama, prompt, params); + setup_answering(env, llama, prompt, params); - llama->loadPrompt(); - llama->beginCompletion(); + llama->loadPrompt(); + llama->beginCompletion(); size_t stop_pos = std::string::npos; - while (llama->has_next_token) { - const completion_token_output token_with_probs = llama->doCompletion(); - const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); + while (llama->has_next_token) + { + const completion_token_output token_with_probs = llama->doCompletion(); + const std::string token_text = + token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - stop_pos = llama->findStoppingStrings(llama->generated_text, - token_text.size(), STOP_FULL); - } + stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); + } - if (stop_pos == std::string::npos) { - stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); - } - if (stop_pos != std::string::npos) { - llama->generated_text.erase(llama->generated_text.begin() + stop_pos, - llama->generated_text.end()); - } + if (stop_pos == std::string::npos) + { + stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); + } + if (stop_pos != std::string::npos) + { + llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); + } -// llama->lock().release(); -// llama->mutex.unlock(); + // llama->lock().release(); + // llama->mutex.unlock(); return parse_jbytes(env, llama->generated_text); } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, jstring suffix, jobject params) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, + jstring suffix, jobject params) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); + jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); - llama->rewind(); + llama->rewind(); - llama_reset_timings(llama->ctx); + llama_reset_timings(llama->ctx); - setup_infilling(env, llama, prefix, suffix, params); + setup_infilling(env, llama, prefix, suffix, params); - llama->loadInfill(); - llama->beginCompletion(); + llama->loadInfill(); + llama->beginCompletion(); size_t stop_pos = std::string::npos; - while (llama->has_next_token) { - const completion_token_output token_with_probs = llama->doCompletion(); - const std::string token_text = token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); + while (llama->has_next_token) + { + const completion_token_output token_with_probs = llama->doCompletion(); + const std::string token_text = + token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - stop_pos = llama->findStoppingStrings(llama->generated_text, - token_text.size(), STOP_FULL); - } + stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); + } - if (stop_pos == std::string::npos) { - stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); - } - if (stop_pos != std::string::npos) { - llama->generated_text.erase(llama->generated_text.begin() + stop_pos, - llama->generated_text.end()); - } + if (stop_pos == std::string::npos) + { + stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); + } + if (stop_pos != std::string::npos) + { + llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); + } -// llama->lock().release(); -// llama->mutex.unlock(); + // llama->lock().release(); + // llama->mutex.unlock(); return parse_jbytes(env, llama->generated_text); } @@ -1363,15 +1408,15 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); - llama->rewind(); - llama_reset_timings(llama->ctx); - llama->prompt = parse_jstring(env, java_prompt); - llama->params.n_predict = 0; - llama->loadPrompt(); - llama->beginCompletion(); - llama->doCompletion(); + llama->rewind(); + llama_reset_timings(llama->ctx); + llama->prompt = parse_jstring(env, java_prompt); + llama->params.n_predict = 0; + llama->loadPrompt(); + llama->beginCompletion(); + llama->doCompletion(); static const int n_embd = llama_n_embd(llama->model); const float *data = llama_get_embeddings(llama->ctx); @@ -1391,12 +1436,12 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); - std::string prompt = parse_jstring(env, jprompt); + std::string prompt = parse_jstring(env, jprompt); std::vector tokens = llama->tokenize(prompt, false); jintArray java_tokens = env->NewIntArray(tokens.size()); @@ -1408,16 +1453,17 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); -// lock.release(); + // lock.release(); return java_tokens; } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, jintArray java_tokens) +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, + jintArray java_tokens) { jlong llama_handle = env->GetLongField(obj, f_model_pointer); jllama_context *llama = reinterpret_cast(llama_handle); -// auto lock = llama->lock(); + // auto lock = llama->lock(); jsize length = env->GetArrayLength(java_tokens); jint *elements = env->GetIntArrayElements(java_tokens, nullptr); @@ -1426,8 +1472,8 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv env->ReleaseIntArrayElements(java_tokens, elements, 0); -// lock.release(); - return parse_jbytes(env, text); + // lock.release(); + return parse_jbytes(env, text); } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) @@ -1450,8 +1496,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc } } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv * env, jobject obj) { - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - delete llama; +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) +{ + jlong llama_handle = env->GetLongField(obj, f_model_pointer); + jllama_context *llama = reinterpret_cast(llama_handle); + delete llama; } From b94ff26f22ed0af90d3716c251b0f02848bea059 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 14:32:44 +0200 Subject: [PATCH 127/384] Add clang-tidy --- .clang-tidy | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .clang-tidy diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..952c0cca --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,24 @@ +--- +Checks: > + bugprone-*, + -bugprone-easily-swappable-parameters, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-misplaced-widening-cast, + -bugprone-narrowing-conversions, + readability-*, + -readability-avoid-unconditional-preprocessor-if, + -readability-function-cognitive-complexity, + -readability-identifier-length, + -readability-implicit-bool-conversion, + -readability-magic-numbers, + -readability-uppercase-literal-suffix, + -readability-simplify-boolean-expr, + clang-analyzer-*, + -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling, + performance-*, + portability-*, + misc-*, + -misc-const-correctness, + -misc-non-private-member-variables-in-classes, + -misc-no-recursion, +FormatStyle: none From 3915095f7fd8a98a01aacb3f92c745bbea9dc341 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 15:03:54 +0200 Subject: [PATCH 128/384] Add cmake nlohmann:json dependency --- CMakeLists.txt | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9b992ff..9bddd1c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,8 @@ project(jllama CXX) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) -# checkout llama.cpp +#################### llama.cpp #################### + include(FetchContent) FetchContent_Declare( llama.cpp @@ -14,6 +15,18 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(llama.cpp) + +#################### json #################### + +FetchContent_Declare( + json + GIT_REPOSITORY https://github.com/nlohmann/json + GIT_TAG v3.11.3 +) +FetchContent_MakeAvailable(json) + +#################### jllama #################### + # todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? include(build-args.cmake) @@ -48,8 +61,6 @@ endif() set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) message(STATUS "Installing files to ${JLLAMA_DIR}") -add_library(jllama SHARED src/main/cpp/jllama.cpp) - # include jni.h and jni_md.h if(NOT DEFINED JNI_INCLUDE_DIRS) if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Mac") @@ -75,8 +86,10 @@ if(NOT JNI_INCLUDE_DIRS) message(FATAL_ERROR "Could not determine JNI include directories") endif() +add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.cpp src/main/cpp/utils.cpp) + target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) -target_link_libraries(jllama PRIVATE common llama ${LLAMA_EXTRA_LIBS}) +target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) if(OS_NAME STREQUAL "Windows") From a91290ee741bb8be24a8271addc11d6f2a5747ef Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 19:10:53 +0200 Subject: [PATCH 129/384] Update model and inference parameters --- .../java/de/kherud/llama/ModelParameters.java | 296 ---------- .../de/kherud/llama/args/GpuSplitMode.java | 9 + .../llama/{ => args}/InferenceParameters.java | 288 ++++++++-- .../java/de/kherud/llama/args/LogFormat.java | 9 + .../java/de/kherud/llama/args/MiroStat.java | 9 + .../de/kherud/llama/args/ModelParameters.java | 531 ++++++++++++++++++ .../de/kherud/llama/args/NumaStrategy.java | 10 + .../de/kherud/llama/args/PoolingType.java | 9 + .../de/kherud/llama/args/RopeScalingType.java | 8 + .../java/de/kherud/llama/args/Sampler.java | 12 + 10 files changed, 829 insertions(+), 352 deletions(-) delete mode 100644 src/main/java/de/kherud/llama/ModelParameters.java create mode 100644 src/main/java/de/kherud/llama/args/GpuSplitMode.java rename src/main/java/de/kherud/llama/{ => args}/InferenceParameters.java (57%) create mode 100644 src/main/java/de/kherud/llama/args/LogFormat.java create mode 100644 src/main/java/de/kherud/llama/args/MiroStat.java create mode 100644 src/main/java/de/kherud/llama/args/ModelParameters.java create mode 100644 src/main/java/de/kherud/llama/args/NumaStrategy.java create mode 100644 src/main/java/de/kherud/llama/args/PoolingType.java create mode 100644 src/main/java/de/kherud/llama/args/RopeScalingType.java create mode 100644 src/main/java/de/kherud/llama/args/Sampler.java diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java deleted file mode 100644 index 4e1d7506..00000000 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ /dev/null @@ -1,296 +0,0 @@ -package de.kherud.llama; - -import org.jetbrains.annotations.Nullable; - -/** - * Parameters used for initializing a {@link LlamaModel}. - */ -public final class ModelParameters { - - private int nThreads = Runtime.getRuntime().availableProcessors(); - - private int seed = -1; - // text context - private int nCtx = 512; - // prompt processing batch size - private int nBatch = 512; - // number of layers to store in VRAM - private int nGpuLayers = -1; - // the GPU that is used for scratch and small tensors - private int mainGpu = 0; - // how to split layers across multiple GPUs (size: LLAMA_MAX_DEVICES) - private float[] tensorSplit = null; - // RoPE base frequency - private float ropeFreqBase = 0f; - // RoPE frequency scaling factor - private float ropeFreqScale = 0f; - // if true, use experimental mul_mat_q kernels - private boolean mulMatQ = true; - // use fp16 for KV cache - private boolean f16Kv = false; - // the llama_eval() call computes all logits, not just the last one - private boolean logitsAll = false; - // only load the vocabulary, no weights - private boolean vocabOnly = false; - // use mmap if possible - private boolean useMmap = true; - // force system to keep model in RAM - private boolean useMlock = false; - // embedding mode - private boolean embedding = false; - // lora adapter path - @Nullable - private String loraAdapter = null; - // base model path for the lora adapter - @Nullable - private String loraBase = null; - // use f16 instead of f32 for memory kv - private boolean memoryF16 = true; - // compute maximum memory usage - private boolean memTest = false; - // attempt optimizations that help on some NUMA systems - private boolean numa = false; - private boolean verbosePrompt = false; // log prompt tokens before generation - - public ModelParameters setNThreads(int nThreads) { - this.nThreads = nThreads; - return this; - } - - public ModelParameters setLoraAdapter(@Nullable String loraAdapter) { - this.loraAdapter = loraAdapter; - return this; - } - - public ModelParameters setLoraBase(@Nullable String loraBase) { - this.loraBase = loraBase; - return this; - } - - public ModelParameters setMemoryF16(boolean memoryF16) { - this.memoryF16 = memoryF16; - return this; - } - - public ModelParameters setMemTest(boolean memTest) { - this.memTest = memTest; - return this; - } - - public ModelParameters setNuma(boolean numa) { - this.numa = numa; - return this; - } - - public ModelParameters setVerbosePrompt(boolean verbosePrompt) { - this.verbosePrompt = verbosePrompt; - return this; - } - - /** - * Set a callback that will be used to report progress loading the model with a float value of 0-1. - * - * @return this builder object - */ -// public ModelParameters setProgressCallback(@Nullable Consumer progressCallback) { -// // Similarly to setting the logger, we don't allow passing any user data to the progress callback, since -// // the JVM might move the object around in the memory, thus invalidating any pointers. -// if (progressCallback == null) { -// ctxParams.setProgress_callback(null); -// } else { -// ctxParams.setProgress_callback((progress, ctx) -> progressCallback.accept(progress)); -// } -// return this; -// } - - public ModelParameters setSeed(int seed) { - this.seed = seed; - return this; - } - - public ModelParameters setNCtx(int nCtx) { - this.nCtx = nCtx; - return this; - } - - public ModelParameters setNBbatch(int nBatch) { - this.nBatch = nBatch; - return this; - } - - public ModelParameters setNGpuLayers(int nGpuLayers) { - this.nGpuLayers = nGpuLayers; - return this; - } - - public ModelParameters setMainGpu(int mainGpu) { - this.mainGpu = mainGpu; - return this; - } - - public ModelParameters setTensorSplit(float[] tensorSplit) { - this.tensorSplit = tensorSplit; - return this; - } - - public ModelParameters setRopeFreqBase(float ropeFreqBase) { - this.ropeFreqBase = ropeFreqBase; - return this; - } - - public ModelParameters setRopeFreqScale(float ropeFreqScale) { - this.ropeFreqScale = ropeFreqScale; - return this; - } - -// public ModelParameters setProgressCallback(LlamaLibrary.llama_progress_callback progress_callback) { -// ctxParams.setProgress_callback(progress_callback); -// return this; -// } - -// public ModelParameters setProgressCallbackUserData(Pointer progress_callback_user_data) { -// ctxParams.setProgress_callback_user_data(progress_callback_user_data); -// return this; -// } - - public ModelParameters setMulMatQ(boolean mulMatQ) { - this.mulMatQ = mulMatQ; - return this; - } - - /** - * use fp16 for KV cache - */ - public ModelParameters setF16Kv(boolean f16Kv) { - this.f16Kv = f16Kv; - return this; - } - - /** - * the llama_eval() call computes all logits, not just the last one - */ - public ModelParameters setLogitsAll(boolean logitsAll) { - this.logitsAll = logitsAll; - return this; - } - - /** - * only load the vocabulary, no weights - */ - public ModelParameters setVocabOnly(boolean vocabOnly) { - this.vocabOnly = vocabOnly; - return this; - } - - /** - * use mmap if possible - */ - public ModelParameters setUseMmap(boolean useMmap) { - this.useMmap = useMmap; - return this; - } - - /** - * force system to keep model in RAM - */ - public ModelParameters setUseMLock(boolean useMlock) { - this.useMlock = useMlock; - return this; - } - - /** - * embedding mode only - */ - public ModelParameters setEmbedding(boolean embedding) { - this.embedding = embedding; - return this; - } - - public int getNThreads() { - return nThreads; - } - - public int getSeed() { - return seed; - } - - public int getNCtx() { - return nCtx; - } - - public int getNBatch() { - return nBatch; - } - - public int getNGpuLayers() { - return nGpuLayers; - } - - public int getMainGpu() { - return mainGpu; - } - - public float[] getTensorSplit() { - return tensorSplit; - } - - public float getRopeFreqBase() { - return ropeFreqBase; - } - - public float getRopeFreqScale() { - return ropeFreqScale; - } - - public boolean isMulMatQ() { - return mulMatQ; - } - - public boolean isF16Kv() { - return f16Kv; - } - - public boolean isLogitsAll() { - return logitsAll; - } - - public boolean isVocabOnly() { - return vocabOnly; - } - - public boolean isUseMmap() { - return useMmap; - } - - public boolean isUseMlock() { - return useMlock; - } - - public boolean isEmbedding() { - return embedding; - } - - public @Nullable String getLoraAdapter() { - return loraAdapter; - } - - public @Nullable String getLoraBase() { - return loraBase; - } - - public boolean isMemoryF16() { - return memoryF16; - } - - public boolean isMemTest() { - return memTest; - } - - public boolean isNuma() { - return numa; - } - - public boolean isVerbosePrompt() { - return verbosePrompt; - } -} diff --git a/src/main/java/de/kherud/llama/args/GpuSplitMode.java b/src/main/java/de/kherud/llama/args/GpuSplitMode.java new file mode 100644 index 00000000..1a4b7b9c --- /dev/null +++ b/src/main/java/de/kherud/llama/args/GpuSplitMode.java @@ -0,0 +1,9 @@ +package de.kherud.llama.args; + +public enum GpuSplitMode { + + NONE, + LAYER, + ROW + +} diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/args/InferenceParameters.java similarity index 57% rename from src/main/java/de/kherud/llama/InferenceParameters.java rename to src/main/java/de/kherud/llama/args/InferenceParameters.java index a92c4fc0..ec65b001 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/args/InferenceParameters.java @@ -1,4 +1,4 @@ -package de.kherud.llama; +package de.kherud.llama.args; import java.io.BufferedReader; import java.io.File; @@ -11,155 +11,299 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import de.kherud.llama.LlamaModel; + /** * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(String)} and * {@link LlamaModel#complete(String)}. */ public final class InferenceParameters { - // new tokens to predict - @Native private int nPredict = -1; + @Native + private int nPredict = -1; // new tokens to predict + @Native + private boolean cachePrompt = false; // number of tokens to keep from initial prompt - @Native private int nKeep = 0; + @Native + private int nKeep = 0; + @Native + private int nDiscard = 0; + private int minKeep = 0; // if greater than 0, output the probabilities of top nProbs tokens. - @Native private int nProbs = 0; + @Native + private int nProbs = 0; // logit bias for specific tokens @Nullable - @Native private Map logitBias = null; + @Native + private Map logitBias = null; // <= 0 to use vocab size - @Native private int topK = 40; + @Native + private int topK = 40; // 1.0 = disabled - @Native private float topP = 0.95f; + @Native + private float topP = 0.95f; + @Native + private float minP = 0.05f; // 1.0 = disabled - @Native private float tfsZ = 1.00f; + @Native + private float tfsZ = 1.00f; // 1.0 = disabled - @Native private float typicalP = 1.00f; + @Native + private float typicalP = 1.00f; // 1.0 = disabled - @Native private float temperature = 0.80f; + @Native + private float temperature = 0.80f; + private float dynamicTemperatureRange = 0.00f; + private float dynamicTemperatureExponent = 1.00f; // 1.0 = disabled - @Native private float repeatPenalty = 1.10f; + @Native + private float repeatPenalty = 1.10f; // last n tokens to penalize (0 = disable penalty, -1 = context size) - @Native private int repeatLastN = 64; + @Native + private int repeatLastN = 64; // 0.0 = disabled - @Native private float frequencyPenalty = 0.00f; + @Native + private float frequencyPenalty = 0.00f; // 0.0 = disabled - @Native private float presencePenalty = 0.00f; + @Native + private float presencePenalty = 0.00f; // 0.0 = disabled - @Native private boolean penalizeNl = false; - @Native private boolean ignoreEos = false; + @Native + private boolean penalizeNl = false; + @Native + private boolean ignoreEos = false; // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - @Native private int mirostat = MiroStat.Disabled.level; + @Native + private MiroStat mirostat = MiroStat.DISABLED; // target entropy - @Native private float mirostatTau = 5.00f; + @Native + private float mirostatTau = 5.00f; // learning rate - @Native private float mirostatEta = 0.10f; - @Native private boolean beamSearch = false; - @Native private int nBeams = 2; + @Native + private float mirostatEta = 0.10f; + @Native + private boolean beamSearch = false; + @Native + private int nBeams = 2; // optional BNF-like grammar to constrain sampling @Nullable - @Native private String grammar = null; + @Native + private String grammar = null; // strings upon seeing which more user input is prompted @Nullable - @Native private String[] antiPrompt = null; - @Native private int seed = 42; - // Whether to tokenize special and/or control tokens which otherwise are not exposed and treated as plaintext. - @Native private boolean tokenizeSpecial = false; + @Native + private String[] stopStrings = null; + @Nullable + @Native + private String[] promptTokenPenalties = null; + @Native + private Sampler[] samplers = null; + @Native + private int seed = 42; + /** + * Set the amount of new tokens to predict + */ public InferenceParameters setNPredict(int nPredict) { this.nPredict = nPredict; return this; } + /** + * + */ + public InferenceParameters setCachePrompt(boolean cachePrompt) { + this.cachePrompt = cachePrompt; + return this; + } + + /** + * + */ public InferenceParameters setNKeep(int nKeep) { this.nKeep = nKeep; return this; } + /** + * + */ + public InferenceParameters setNDiscard(int nDiscard) { + this.nDiscard = nDiscard; + return this; + } + + /** + * + */ + public InferenceParameters setMinKeep(int minKeep) { + this.minKeep = minKeep; + return this; + } + + /** + * + */ public InferenceParameters setNProbs(int nProbs) { this.nProbs = nProbs; return this; } + /** + * + */ public InferenceParameters setLogitBias(@NotNull Map logitBias) { this.logitBias = Collections.unmodifiableMap(logitBias); return this; } + /** + * + */ public InferenceParameters setTopK(int topK) { this.topK = topK; return this; } + /** + * + */ public InferenceParameters setTopP(float topP) { this.topP = topP; return this; } + /** + * + */ + public InferenceParameters setMinP(float minP) { + this.minP = minP; + return this; + } + + /** + * + */ public InferenceParameters setTfsZ(float tfsZ) { this.tfsZ = tfsZ; return this; } + /** + * + */ public InferenceParameters setTypicalP(float typicalP) { this.typicalP = typicalP; return this; } + /** + * + */ public InferenceParameters setTemperature(float temperature) { this.temperature = temperature; return this; } + /** + * + */ + public InferenceParameters setDynamicTemperatureRange(float dynamicTemperatureRange) { + this.dynamicTemperatureRange = dynamicTemperatureRange; + return this; + } + + /** + * + */ + public InferenceParameters setDynamicTemperatureExponent(float dynamicTemperatureExponent) { + this.dynamicTemperatureExponent = dynamicTemperatureExponent; + return this; + } + + /** + * + */ public InferenceParameters setRepeatPenalty(float repeatPenalty) { this.repeatPenalty = repeatPenalty; return this; } + /** + * + */ public InferenceParameters setRepeatLastN(int repeatLastN) { this.repeatLastN = repeatLastN; return this; } + /** + * + */ public InferenceParameters setFrequencyPenalty(float frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; return this; } + /** + * + */ public InferenceParameters setPresencePenalty(float presencePenalty) { this.presencePenalty = presencePenalty; return this; } + /** + * + */ public InferenceParameters setPenalizeNl(boolean penalizeNl) { this.penalizeNl = penalizeNl; return this; } + /** + * + */ public InferenceParameters setIgnoreEos(boolean ignoreEos) { this.ignoreEos = ignoreEos; return this; } - public InferenceParameters setMirostat(MiroStat mode) { - this.mirostat = mode.level; + /** + * + */ + public InferenceParameters setMirostat(MiroStat mirostat) { + this.mirostat = mirostat; return this; } + /** + * + */ public InferenceParameters setMirostatTau(float mirostatTau) { this.mirostatTau = mirostatTau; return this; } + /** + * + */ public InferenceParameters setMirostatEta(float mirostatEta) { this.mirostatEta = mirostatEta; return this; } + /** + * + */ public InferenceParameters setBeamSearch(boolean beamSearch) { this.beamSearch = beamSearch; return this; } + /** + * + */ public InferenceParameters setNBeams(int nBeams) { this.nBeams = nBeams; return this; @@ -178,27 +322,43 @@ public InferenceParameters setGrammar(@NotNull File file) throws IOException { return setGrammar(grammarBuilder.toString()); } + /** + * + */ public InferenceParameters setGrammar(@Nullable String grammar) { this.grammar = grammar; return this; } - public InferenceParameters setAntiPrompt(@NotNull String... antiPrompt) { - this.antiPrompt = antiPrompt; + /** + * + */ + public InferenceParameters setStopStrings(@NotNull String... stopStrings) { + this.stopStrings = stopStrings; return this; } - public InferenceParameters setSeed(int seed) { - this.seed = seed; + /** + * + */ + public InferenceParameters setPromptTokenPenalties(@NotNull String... promptTokenPenalties) { + this.promptTokenPenalties = promptTokenPenalties; + return this; + } + + /** + * + */ + public InferenceParameters setSamplers(@NotNull Sampler... samplers) { + this.samplers = samplers; return this; } /** - * Changes whether special and/or control tokens are tokenized which otherwise are not exposed and treated as - * plaintext. + * */ - public InferenceParameters setTokenizeSpecial(boolean tokenizeSpecial) { - this.tokenizeSpecial = tokenizeSpecial; + public InferenceParameters setSeed(int seed) { + this.seed = seed; return this; } @@ -206,10 +366,22 @@ public int getNPredict() { return nPredict; } + public boolean isCachePrompt() { + return cachePrompt; + } + public int getNKeep() { return nKeep; } + public int getMinKeep() { + return minKeep; + } + + public int getNDiscard() { + return nDiscard; + } + public int getNProbs() { return nProbs; } @@ -226,6 +398,10 @@ public float getTopP() { return topP; } + public float getMinP() { + return minP; + } + public float getTfsZ() { return tfsZ; } @@ -238,6 +414,14 @@ public float getTemperature() { return temperature; } + public float getDynamicTemperatureRange() { + return dynamicTemperatureRange; + } + + public float getDynamicTemperatureExponent() { + return dynamicTemperatureExponent; + } + public float getRepeatPenalty() { return repeatPenalty; } @@ -262,7 +446,7 @@ public boolean isIgnoreEos() { return ignoreEos; } - public int getMirostat() { + public MiroStat getMirostat() { return mirostat; } @@ -278,7 +462,7 @@ public boolean isBeamSearch() { return beamSearch; } - public int getnBeams() { + public int getNBeams() { return nBeams; } @@ -286,28 +470,20 @@ public int getnBeams() { return grammar; } - public @Nullable String[] getAntiPrompt() { - return antiPrompt; + public @Nullable String[] getStopStrings() { + return stopStrings; } - public int getSeed() { - return seed; + public @Nullable String[] getPromptTokenPenalties() { + return promptTokenPenalties; } - public boolean getTokenizeSpecial() { - return tokenizeSpecial; + public @Nullable Sampler[] getSamplers() { + return samplers; } - public enum MiroStat { - - Disabled(0), - V1(1), - V2(2); - - private final int level; - - MiroStat(int level) { - this.level = level; - } + public int getSeed() { + return seed; } + } diff --git a/src/main/java/de/kherud/llama/args/LogFormat.java b/src/main/java/de/kherud/llama/args/LogFormat.java new file mode 100644 index 00000000..3fba6a1c --- /dev/null +++ b/src/main/java/de/kherud/llama/args/LogFormat.java @@ -0,0 +1,9 @@ +package de.kherud.llama.args; + +public enum LogFormat { + + NONE, + JSON, + TEXT + +} diff --git a/src/main/java/de/kherud/llama/args/MiroStat.java b/src/main/java/de/kherud/llama/args/MiroStat.java new file mode 100644 index 00000000..5f8a8ce7 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/MiroStat.java @@ -0,0 +1,9 @@ +package de.kherud.llama.args; + +public enum MiroStat { + + DISABLED, + V1, + V2 + +} diff --git a/src/main/java/de/kherud/llama/args/ModelParameters.java b/src/main/java/de/kherud/llama/args/ModelParameters.java new file mode 100644 index 00000000..2ed70724 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/ModelParameters.java @@ -0,0 +1,531 @@ +package de.kherud.llama.args; + +import java.lang.annotation.Native; + +import de.kherud.llama.LlamaModel; + +/** + * Parameters used for initializing a {@link LlamaModel}. + */ +public final class ModelParameters { + + @Native + private int seed = -1; // RNG seed + @Native + private int nThreads = Runtime.getRuntime().availableProcessors(); + @Native + private int nThreadsBatch = -1; // number of threads to use for batch processing (-1 = use n_threads) + @Native + private String modelFilePath; // model path + @Native + private String modelUrl; // model url to download + @Native + private String huggingFaceRepository; // HF repo + @Native + private String huggingFaceFile; // HF file + @Native + private String modelAlias; // model alias + @Native + private String systemPromptFile; + @Native + private int nCtx = 512; // context size + @Native + private int nBatch = 2048; // logical batch size for prompt processing (must be >=32 to use BLAS) + @Native + private int nUBatch = 512; // physical batch size for prompt processing (must be >=32 to use BLAS) + @Native + private int nParallel = 1; // number of parallel sequences to decode + @Native + private int nPredict = -1; // new tokens to predict + @Native + private GpuSplitMode gpuSplitMode = GpuSplitMode.LAYER; // how to split the model across GPUs + @Native + private int nGpuLayers = -1; // number of layers to store in VRAM (-1 - use default) + @Native + private int mainGpu = 0; // the GPU that is used for scratch and small tensors + @Native + private float[] tensorSplit = null; // // how split tensors should be distributed across GPUs + @Native + private RopeScalingType ropeScalingType = RopeScalingType.UNSPECIFIED; + @Native + private float ropeFreqBase = 0f; // RoPE base frequency + @Native + private float ropeFreqScale = 0f; // RoPE frequency scaling factor + @Native + private float yarnExtFactor = -1.0f; + @Native + private float yarnAttnFactor = 1.0f; + @Native + private float yarnBetaFast = 32.0f; + @Native + private float yarnBetaSlow = 1.0f; + @Native + private PoolingType poolingType = PoolingType.UNSPECIFIED; // pooling type for embeddings + @Native + private float defragmentationThreshold = -1.0f; // KV cache defragmentation threshold + @Native + private int groupAttnN = 1; + @Native + private int groupAttnW = 512; + @Native + private boolean useMmap = true; // use mmap if possible + @Native + private boolean useMlock = false; // force system to keep model in RAM + @Native + private boolean noKVOffload = false; + @Native + private boolean embedding = false; // embedding mode + @Native + private boolean continuousBatching = true; // insert new sequences for decoding on-the-fly + @Native + private NumaStrategy numa = NumaStrategy.NONE; // attempt optimizations that help on some NUMA systems + @Native + private LogFormat logFormat = LogFormat.TEXT; + @Native + private boolean verbose = false; + +// @Nullable +// private String loraAdapter = null; +// @Nullable +// private String loraBase = null; + + /** + * Set the RNG seed + */ + public ModelParameters setSeed(int seed) { + this.seed = seed; + return this; + } + + /** + * Set the total amount of threads ever used + */ + public ModelParameters setNThreads(int nThreads) { + this.nThreads = nThreads; + return this; + } + + /** + * number of threads to use for batch processing (-1 = use {@link #nThreads}) + */ + public ModelParameters setNThreadsBatch(int nThreadsBatch) { + this.nThreadsBatch = nThreadsBatch; + return this; + } + + /** + * Set a file path to load the model from + */ + public ModelParameters setModelFilePath(String modelFilePath) { + this.modelFilePath = modelFilePath; + return this; + } + + /** + * Set a URL to load the model from + */ + public ModelParameters setModelUrl(String modelUrl) { + this.modelUrl = modelUrl; + return this; + } + + /** + * Set a HuggingFace repository to load a model from (see {@link #setHuggingFaceFile(String)}) + */ + public ModelParameters setHuggingFaceRepository(String huggingFaceRepository) { + this.huggingFaceRepository = huggingFaceRepository; + return this; + } + + /** + * Set a HuggingFace file to load a model from (see {@link #setHuggingFaceRepository(String)}) + */ + public ModelParameters setHuggingFaceFile(String huggingFaceFile) { + this.huggingFaceFile = huggingFaceFile; + return this; + } + + /** + * Set the model alias + */ + public ModelParameters setModelAlias(String modelAlias) { + this.modelAlias = modelAlias; + return this; + } + + /** + * Set a file path to load a system prompt from + */ + public ModelParameters setSystemPrompt(String systemPromptFile) { + this.systemPromptFile = systemPromptFile; + return this; + } + + /** + * Set the context size + */ + public ModelParameters setNCtx(int nCtx) { + this.nCtx = nCtx; + return this; + } + + /** + * Set the logical batch size for prompt processing (must be >=32 to use BLAS) + */ + public ModelParameters setNBatch(int nBatch) { + this.nBatch = nBatch; + return this; + } + + /** + * Set the physical batch size for prompt processing (must be >=32 to use BLAS) + */ + public ModelParameters setNUBatch(int nUBatch) { + this.nUBatch = nUBatch; + return this; + } + + /** + * Set how the number of parallel sequences to decode + */ + public ModelParameters setNParallel(int nParallel) { + this.nParallel = nParallel; + return this; + } + + /** + * Set the amount of new tokens to predict + */ + public ModelParameters setNPredict(int nPredict) { + this.nPredict = nPredict; + return this; + } + + /** + * Set how to split the model across GPUs + */ + public ModelParameters setGpuSplitMode(GpuSplitMode gpuSplitMode) { + this.gpuSplitMode = gpuSplitMode; + return this; + } + + /** + * Set the number of layers to store in VRAM (-1 - use default) + */ + public ModelParameters setNGpuLayers(int nGpuLayers) { + this.nGpuLayers = nGpuLayers; + return this; + } + + /** + * Set the GPU that is used for scratch and small tensors + */ + public ModelParameters setMainGpu(int mainGpu) { + this.mainGpu = mainGpu; + return this; + } + + /** + * Set how split tensors should be distributed across GPUs + */ + public ModelParameters setTensorSplit(float[] tensorSplit) { + this.tensorSplit = tensorSplit; + return this; + } + + /** + * Set the RoPE scaling type + */ + public ModelParameters setRopeScalingType(RopeScalingType ropeScalingType) { + this.ropeScalingType = ropeScalingType; + return this; + } + + /** + * Set the RoPE base frequency + */ + public ModelParameters setRopeFreqBase(float ropeFreqBase) { + this.ropeFreqBase = ropeFreqBase; + return this; + } + + /** + * Set the RoPE frequency scaling factor + */ + public ModelParameters setRopeFreqScale(float ropeFreqScale) { + this.ropeFreqScale = ropeFreqScale; + return this; + } + + /** + * Set the YaRN extrapolation mix factor + */ + public ModelParameters setYarnExtrapolationFactor(float yarnExtFactor) { + this.yarnExtFactor = yarnExtFactor; + return this; + } + + /** + * Set the YaRN magnitude scaling factor + */ + public ModelParameters setYarnMagnitudeFactor(float yarnAttnFactor) { + this.yarnAttnFactor = yarnAttnFactor; + return this; + } + + /** + * Set the YaRN low correction dim + */ + public ModelParameters setYarnBetaFast(float yarnBetaFast) { + this.yarnBetaFast = yarnBetaFast; + return this; + } + + /** + * Set the YaRN high correction dim + */ + public ModelParameters setYarnBetaSlow(float yarnBetaSlow) { + this.yarnBetaSlow = yarnBetaSlow; + return this; + } + + /** + * Set the pooling type for embeddings + */ + public ModelParameters setPoolingType(PoolingType poolingType) { + this.poolingType = poolingType; + return this; + } + + /** + * Set the KV cache defragmentation threshold + */ + public ModelParameters setDefragmentationThreshold(float defragmentationThreshold) { + this.defragmentationThreshold = defragmentationThreshold; + return this; + } + + /** + * Set the group-attention factor + */ + public ModelParameters setGroupAttnN(int groupAttnN) { + this.groupAttnN = groupAttnN; + return this; + } + + /** + * Set the group-attention width + */ + public ModelParameters setGroupAttnW(int groupAttnW) { + this.groupAttnW = groupAttnW; + return this; + } + + /** + * Whether to use mmap for faster loads + */ + public ModelParameters setUseMmap(boolean useMmap) { + this.useMmap = useMmap; + return this; + } + + /** + * Whether to use mlock to keep model in memory + */ + public ModelParameters setUseMlock(boolean useMlock) { + this.useMlock = useMlock; + return this; + } + + /** + * Whether to disable KV offloading + */ + public ModelParameters setNoKVOffload(boolean noKVOffload) { + this.noKVOffload = noKVOffload; + return this; + } + + /** + * Whether to only get sentence embeddings + */ + public ModelParameters setEmbedding(boolean embedding) { + this.embedding = embedding; + return this; + } + + /** + * Whether to insert new sequences for decoding on-the-fly + */ + public ModelParameters setContinuousBatching(boolean continuousBatching) { + this.continuousBatching = continuousBatching; + return this; + } + + /** + * Set a numa strategy if compiled with NUMA support + */ + public ModelParameters setNumaStrategy(NumaStrategy numa) { + this.numa = numa; + return this; + } + + /** + * Set the log format + */ + public ModelParameters setLogFormat(LogFormat logFormat) { + this.logFormat = logFormat; + return this; + } + + /** + * Whether to log additional output (if compiled with LLAMA_VERBOSE) + */ + public ModelParameters setVerbose(boolean verbose) { + this.verbose = verbose; + return this; + } + + public int getSeed() { + return seed; + } + + public int getNThreads() { + return nThreads; + } + + public int getNThreadsBatch() { + return nThreadsBatch; + } + + public String getModelFilePath() { + return modelFilePath; + } + + public String getModelUrl() { + return modelUrl; + } + + public String getHuggingFaceRepository() { + return huggingFaceRepository; + } + + public String getHuggingFaceFile() { + return huggingFaceFile; + } + + public String getModelAlias() { + return modelAlias; + } + + public String getSystemPromptFile() { + return systemPromptFile; + } + + public int getNCtx() { + return nCtx; + } + + public int getNBatch() { + return nBatch; + } + + public int getNUBatch() { + return nUBatch; + } + + public int getNParallel() { + return nParallel; + } + + public int getNPredict() { + return nPredict; + } + + public GpuSplitMode getGpuSplitMode() { + return gpuSplitMode; + } + + public int getNGpuLayers() { + return nGpuLayers; + } + + public int getMainGpu() { + return mainGpu; + } + + public float[] getTensorSplit() { + return tensorSplit; + } + + public RopeScalingType getRopeScalingType() { + return ropeScalingType; + } + + public float getRopeFreqBase() { + return ropeFreqBase; + } + + public float getRopeFreqScale() { + return ropeFreqScale; + } + + public float getYarnExtFactor() { + return yarnExtFactor; + } + + public float getYarnAttnFactor() { + return yarnAttnFactor; + } + + public float getYarnBetaFast() { + return yarnBetaFast; + } + + public float getYarnBetaSlow() { + return yarnBetaSlow; + } + + public PoolingType getPoolingType() { + return poolingType; + } + + public float getDefragmentationThreshold() { + return defragmentationThreshold; + } + + public int getGroupAttnN() { + return groupAttnN; + } + + public int getGroupAttnW() { + return groupAttnW; + } + + public boolean isUseMmap() { + return useMmap; + } + + public boolean isUseMlock() { + return useMlock; + } + + public boolean isNoKVOffload() { + return noKVOffload; + } + + public boolean isEmbedding() { + return embedding; + } + + public NumaStrategy getNuma() { + return numa; + } + + public LogFormat getLogFormat() { + return logFormat; + } + + public boolean isVerbose() { + return verbose; + } +} diff --git a/src/main/java/de/kherud/llama/args/NumaStrategy.java b/src/main/java/de/kherud/llama/args/NumaStrategy.java new file mode 100644 index 00000000..ded2bc87 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/NumaStrategy.java @@ -0,0 +1,10 @@ +package de.kherud.llama.args; + +public enum NumaStrategy { + + NONE, + DISTRIBUTE, + ISOLATE, + NUMA_CTL + +} diff --git a/src/main/java/de/kherud/llama/args/PoolingType.java b/src/main/java/de/kherud/llama/args/PoolingType.java new file mode 100644 index 00000000..066e86e2 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/PoolingType.java @@ -0,0 +1,9 @@ +package de.kherud.llama.args; + +public enum PoolingType { + + UNSPECIFIED, + MEAN, + CLS + +} diff --git a/src/main/java/de/kherud/llama/args/RopeScalingType.java b/src/main/java/de/kherud/llama/args/RopeScalingType.java new file mode 100644 index 00000000..a69596f5 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/RopeScalingType.java @@ -0,0 +1,8 @@ +package de.kherud.llama.args; + +public enum RopeScalingType { + + UNSPECIFIED, + LINEAR, + YARN +} diff --git a/src/main/java/de/kherud/llama/args/Sampler.java b/src/main/java/de/kherud/llama/args/Sampler.java new file mode 100644 index 00000000..6f031d64 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/Sampler.java @@ -0,0 +1,12 @@ +package de.kherud.llama.args; + +public enum Sampler { + + TOP_K, + TFS_Z, + TYPICAL_P, + TOP_P, + MIN_P, + TEMPERATURE + +} From 5123d785d04f5ffd32ac6da2c2b4f05d845561ce Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 19:11:07 +0200 Subject: [PATCH 130/384] Remove cmake build info --- build-args.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/build-args.cmake b/build-args.cmake index 98dc43d3..a0a4bcb8 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -93,9 +93,6 @@ option(LLAMA_BUILD_SERVER "llama: build server example" # add perf arguments option(LLAMA_PERF "llama: enable perf" OFF) -# Required for relocatable CMake package -include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake) - # # Compile flags # From 58d10580c9d1722a8b0fc30e78adc40ef9ae5dce Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Thu, 4 Apr 2024 19:11:48 +0200 Subject: [PATCH 131/384] Split cpp source --- src/main/cpp/jllama.cpp | 2360 +++++++++++++++++++-------------------- src/main/cpp/server.cpp | 2124 +++++++++++++++++++++++++++++++++++ src/main/cpp/utils.cpp | 11 + 3 files changed, 3281 insertions(+), 1214 deletions(-) create mode 100644 src/main/cpp/server.cpp create mode 100644 src/main/cpp/utils.cpp diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index ba5fbc4d..7349287e 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,14 +1,12 @@ #include "jllama.h" -#include -#include -#include -#include - #include "common.h" -#include "grammar-parser.h" -#include "llama.h" -#include "sampling.h" +#include "json.hpp" + +using json = nlohmann::json; + +JavaVM *g_vm = nullptr; +jobject g_log_callback = nullptr; // classes static jclass c_llama_model = 0; @@ -29,6 +27,13 @@ static jclass c_log_level = 0; static jclass c_biconsumer = 0; static jclass c_llama_error = 0; static jclass c_error_oom = 0; +static jclass c_split_mode = 0; +static jclass c_log_format = 0; +static jclass c_miro_stat = 0; +static jclass c_numa_strategy = 0; +static jclass c_pooling_type = 0; +static jclass c_rope_scaling = 0; +static jclass c_sampler = 0; // constructors static jmethodID cc_output = 0; @@ -56,69 +61,635 @@ static jfieldID f_iter_has_next = 0; static jfieldID f_iter_n_generated = 0; static jfieldID f_iter_token_index = 0; // inference parameters +static jfieldID f_cache_prompt = 0; static jfieldID f_n_predict = 0; -static jfieldID f_n_keep = 0; -static jfieldID f_n_probs = 0; -static jfieldID f_logit_bias = 0; static jfieldID f_top_k = 0; static jfieldID f_top_p = 0; +static jfieldID f_min_p = 0; static jfieldID f_tfs_z = 0; static jfieldID f_typical_p = 0; -static jfieldID f_temperature = 0; -static jfieldID f_repeat_penalty = 0; -static jfieldID f_repeat_last_n = 0; -static jfieldID f_frequency_penalty = 0; -static jfieldID f_presence_penalty = 0; -static jfieldID f_penalize_nl = 0; -static jfieldID f_ignore_eos = 0; +static jfieldID f_temp = 0; +static jfieldID f_dynatemp_range = 0; +static jfieldID f_dynatemp_exponent = 0; +static jfieldID f_penalty_last_n = 0; +static jfieldID f_penalty_repeat = 0; +static jfieldID f_penalty_freq = 0; +static jfieldID f_penalty_present = 0; static jfieldID f_mirostat = 0; static jfieldID f_mirostat_tau = 0; static jfieldID f_mirostat_eta = 0; -static jfieldID f_beam_search = 0; -static jfieldID f_n_beams = 0; +static jfieldID f_penalize_nl = 0; +static jfieldID f_n_keep = 0; +static jfieldID f_n_discard = 0; +static jfieldID f_infer_seed = 0; +static jfieldID f_n_probs = 0; +static jfieldID f_min_keep = 0; static jfieldID f_grammar = 0; +static jfieldID f_ignore_eos = 0; +static jfieldID f_logit_bias = 0; static jfieldID f_antiprompt = 0; -static jfieldID f_infer_seed = 0; -static jfieldID f_tokenize_special = 0; // model parameters -static jfieldID f_n_threads = 0; static jfieldID f_model_seed = 0; +static jfieldID f_model_path = 0; +static jfieldID f_model_url = 0; +static jfieldID f_model_hf_repo = 0; +static jfieldID f_model_hf_file = 0; +static jfieldID f_model_alias = 0; static jfieldID f_n_ctx = 0; +static jfieldID f_rope_scaling_type = 0; +static jfieldID f_rope_freq_base = 0; +static jfieldID f_rope_freq_scale = 0; +static jfieldID f_yarn_ext_factor = 0; +static jfieldID f_yarn_attn_factor = 0; +static jfieldID f_yarn_beta_fast = 0; +static jfieldID f_yarn_beta_slow = 0; +static jfieldID f_pooling_type = 0; +static jfieldID f_defrag_thold = 0; +static jfieldID f_n_threads = 0; +static jfieldID f_grp_attn_n = 0; +static jfieldID f_grp_attn_w = 0; +static jfieldID f_n_threads_batch = 0; static jfieldID f_n_batch = 0; +static jfieldID f_n_ubatch = 0; static jfieldID f_n_gpu_layers = 0; -static jfieldID f_main_gpu = 0; +static jfieldID f_no_kv_offload = 0; +static jfieldID f_split_mode = 0; static jfieldID f_tensor_split = 0; -static jfieldID f_rope_freq_base = 0; -static jfieldID f_rope_freq_scale = 0; -static jfieldID f_mul_mat_q = 0; -static jfieldID f_f16_kv = 0; -static jfieldID f_logits_all = 0; -static jfieldID f_vocab_only = 0; -static jfieldID f_use_mmap = 0; +static jfieldID f_main_gpu = 0; +static jfieldID f_verbose = 0; static jfieldID f_use_mlock = 0; +static jfieldID f_use_mmap = 0; +static jfieldID f_numa_strategy = 0; static jfieldID f_embedding = 0; -static jfieldID f_lora_adapter = 0; -static jfieldID f_lora_base = 0; -static jfieldID f_memory_f16 = 0; -static jfieldID f_mem_test = 0; -static jfieldID f_numa = 0; -static jfieldID f_verbose_prompt = 0; -// log level +static jfieldID f_cont_batching = 0; +static jfieldID f_n_parallel = 0; +static jfieldID f_n_predict = 0; +static jfieldID f_system_prompt_file = 0; +static jfieldID f_log_format = 0; +// enum fields static jfieldID f_utf_8 = 0; static jfieldID f_log_level_debug = 0; static jfieldID f_log_level_info = 0; static jfieldID f_log_level_warn = 0; static jfieldID f_log_level_error = 0; +static jfieldID f_rope_scaling_none = 0; +static jfieldID f_rope_scaling_linear = 0; +static jfieldID f_rope_scaling_yarn = 0; +static jfieldID f_pooling_type_none = 0; +static jfieldID f_pooling_type_mean = 0; +static jfieldID f_pooling_type_cls = 0; +static jfieldID f_split_mode_none = 0; +static jfieldID f_split_mode_layer = 0; +static jfieldID f_split_mode_row = 0; +static jfieldID f_numa_strategy_distribute = 0; +static jfieldID f_numa_strategy_isolate = 0; +static jfieldID f_numa_strategy_numactl = 0; +static jfieldID f_log_format_json = 0; +static jfieldID f_log_format_text = 0; +static jfieldID f_mirostat_v1 = 0; +static jfieldID f_mirostat_v2 = 0; // objects static jobject o_utf_8 = 0; static jobject o_log_level_debug = 0; static jobject o_log_level_info = 0; static jobject o_log_level_warn = 0; static jobject o_log_level_error = 0; +static jobject o_rope_scaling_none = 0; +static jobject o_rope_scaling_linear = 0; +static jobject o_rope_scaling_yarn = 0; +static jobject o_pooling_type_none = 0; +static jobject o_pooling_type_mean = 0; +static jobject o_pooling_type_cls = 0; +static jobject o_split_mode_none = 0; +static jobject o_split_mode_layer = 0; +static jobject o_split_mode_row = 0; +static jobject o_numa_strategy_distribute = 0; +static jobject o_numa_strategy_isolate = 0; +static jobject o_numa_strategy_numactl = 0; +static jobject o_log_format_json = 0; +static jobject o_log_format_text = 0; +static jobject o_mirostat_v1 = 0; +static jobject o_mirostat_v2 = 0; + +static std::string parse_jstring(JNIEnv *env, jstring java_string) +{ + const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); + + size_t length = (size_t)env->GetArrayLength(string_bytes); + jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); + + std::string string = std::string((char *)byte_elements, length); + + env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); + env->DeleteLocalRef(string_bytes); + + return string; +} + +static int parse_jinteger(JNIEnv *env, jobject java_integer) +{ + if (!java_integer) + return 0; + return env->CallIntMethod(java_integer, m_int_value); +} + +static float parse_jfloat(JNIEnv *env, jobject java_float) +{ + if (!java_float) + return 0; + return env->CallFloatMethod(java_float, m_float_value); +} + +// Since Java expects utf16 but std::strings are utf8, we can't directly use +// `env->NewString` or `env-NewString`, but we simply send the bytes directly +// and do the conversion in Java. Unfortunately, there isn't a +// nice/standardized way to do this conversion in C++ +static jbyteArray parse_jbytes(JNIEnv *env, std::string string) +{ + jsize len = string.size(); + jbyteArray bytes = env->NewByteArray(len); + env->SetByteArrayRegion(bytes, 0, len, reinterpret_cast(string.c_str())); + return bytes; +} + +// this method +static void load_server_params(JNIEnv *env, jobject jparams, server_params &sparams, gpt_params ¶ms) +{ + gpt_params default_params; + server_params default_sparams; + + bool invalid_param = false; + + params.seed = env->GetIntField(jparams, f_model_seed); + params.model = get_string_field(env, jparams, f_model_path); + params.model_url = get_string_field(env, jparams, f_model_url); + params.hf_repo = get_string_field(env, jparams, f_model_hf_repo); + params.hf_file = get_string_field(env, jparams, f_model_hf_file); + params.model_alias = get_string_field(env, jparams, f_model_alias); + params.n_ctx = env->GetIntField(jparams, f_n_ctx); + + jobject value = env->GetObjectField(jparams, f_rope_scaling_type); + if (value == o_rope_scaling_none) + { + params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_NONE; + } + else if (value == o_rope_scaling_linear) + { + params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_LINEAR; + } + else if (value == o_rope_scaling_yarn) + { + params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_YARN; + } + + params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); + params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); + params.yarn_ext_factor = env->GetFloatField(jparams, f_yarn_ext_factor); + params.yarn_attn_factor = env->GetFloatField(jparams, f_yarn_attn_factor); + params.yarn_beta_fast = env->GetFloatField(jparams, f_yarn_beta_fast); + params.yarn_beta_slow = env->GetFloatField(jparams, f_yarn_beta_slow); + + value = env->GetObjectField(jparams, f_pooling_type); + if (value == o_pooling_type_none) + { + params.pooling_type = LLAMA_POOLING_TYPE_NONE; + } + else if (value == o_pooling_type_mean) + { + params.pooling_type = LLAMA_POOLING_TYPE_MEAN; + } + else if (value == o_pooling_type_cls) + { + params.pooling_type = LLAMA_POOLING_TYPE_CLS; + } + + params.defrag_thold = env->GetFloatField(jparams, f_defrag_thold); + params.n_threads = env->GetIntField(jparams, f_n_threads); + params.grp_attn_n = env->GetIntField(jparams, f_grp_attn_n); + params.grp_attn_w = env->GetIntField(jparams, f_grp_attn_w); + params.n_threads_batch = env->GetIntField(jparams, f_n_threads_batch); + params.n_batch = env->GetIntField(jparams, f_n_batch); + params.n_ubatch = env->GetIntField(jparams, f_n_ubatch); + + if (llama_supports_gpu_offload()) + { + params.n_gpu_layers = env->GetIntField(jparams, f_n_gpu_layers); + } + else + { + LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + "See main README.md for information on enabling GPU BLAS support", + {{"n_gpu_layers", params.n_gpu_layers}}); + } + + params.no_kv_offload = env->GetBooleanField(jparams, f_no_kv_offload); + + value = env->GetObjectField(jparams, f_split_mode); + if (value == o_split_mode_none) + { + params.split_mode = LLAMA_SPLIT_MODE_NONE; + } + else if (value == o_split_mode_layer) + { + params.split_mode = LLAMA_SPLIT_MODE_LAYER; + } + else if (value == o_split_mode_row) + { + params.split_mode = LLAMA_SPLIT_MODE_ROW; + } + +#ifndef GGML_USE_CUDA + if (value != o_split_mode_none) + { + fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); + } +#endif + + jintArray j_tensor_split = env->GetObjectField(jparams, f_tensor_split); + jsize j_tensor_split_size = env->GetArrayLength(j_tensor_split); + jfloat *j_tensor_split_elements = env->GetFloatArrayElements(j_tensor_split, 0); + +#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) + GGML_ASSERT(j_tensor_split_size <= llama_max_devices()); + + for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) + { + if (i_device < j_tensor_split_size) + { + params.tensor_split[i_device] = j_tensor_split_elements[i_device]; + } + else + { + params.tensor_split[i_device] = 0.0f; + } + } +#else + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); +#endif + + params.main_gpu = env->GetIntField(jparams, f_main_gpu); +#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) +#else + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); +#endif + + // // todo: there can be multiple lora adapters + // value = env->GetObjectField(jparams, f_lora_adapter); + // if (value != nullptr) { + // auto adapter = parse_jstring(env, (jstring) value); + // params.lora_adapter.emplace_back(adapter, 1.0f); + // params.use_mmap = false; + // } + + // else if (arg == "--lora-scaled") { + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // const char * lora_adapter = argv[i]; + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // params.lora_adapter.emplace_back(lora_adapter, std::stof(argv[i])); + // params.use_mmap = false; + // } + + // params.lora_base = get_string_field(env, jparams, f_lora_base); -static JavaVM *g_vm = nullptr; -static jobject g_log_callback = nullptr; + sparams.verbose = env->GetBooleanField(jparams, f_verbose); +#if SERVER_VERBOSE != 1 + if (sparams.verbose) + { + LOG_WARNING("server.cpp is not built with verbose logging.", {}); + } +#else + server_verbose = true; +#endif + + params.use_mlock = env->GetBooleanField(jparams, f_use_mlock); + params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); + + value = env->GetObjectField(jparams, f_numa_strategy); + if (value == o_numa_strategy_distribute) + { + params.numa = GGML_NUMA_STRATEGY_DISTRIBUTE; + } + else if (value == o_numa_strategy_isolate) + { + params.numa = GGML_NUMA_STRATEGY_ISOLATE; + } + else if (value == o_numa_strategy_numactl) + { + params.numa = GGML_NUMA_STRATEGY_NUMACTL; + } + + params.embedding = env->GetBooleanField(jparams, f_embedding); + params.cont_batching = env->GetBooleanField(jparams, f_cont_batching); + params.n_parallel = env->GetIntField(jparams, f_n_parallel); + params.n_predict = env->GetIntField(jparams, f_n_predict); + + auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); + if (system_prompt_file.length() > 0) + { + std::ifstream file(system_prompt_file); + if (!file) + { + fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); + invalid_param = true; + break; + } + std::string system_prompt; + std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), + std::back_inserter(system_prompt)); + sparams.system_prompt = system_prompt; + } + + value = env->GetObjectField(jparams, f_log_format); + if (value == o_log_format_json) + { + server_log_json = true; + } + else if (value == o_log_format_text) + { + server_log_json = false; + } + else + { + log_set_target(stdout); + LOG_INFO("logging to file is disabled.", {}); + } + + // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); + // + // else if (arg == "--chat-template") { + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // if (!verify_custom_template(argv[i])) { + // fprintf(stderr, "error: the supplied chat template is not supported: %s\n", argv[i]); + // fprintf(stderr, "note: llama.cpp does not use jinja parser, we only support commonly used + // templates\n"); invalid_param = true; break; + // } + // sparams.chat_template = argv[i]; + // } else if (arg == "--override-kv") { + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // char * sep = strchr(argv[i], '='); + // if (sep == nullptr || sep - argv[i] >= 128) { + // fprintf(stderr, "error: Malformed KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // + // struct llama_model_kv_override kvo; + // std::strncpy(kvo.key, argv[i], sep - argv[i]); + // kvo.key[sep - argv[i]] = 0; + // sep++; + // if (strncmp(sep, "int:", 4) == 0) { + // sep += 4; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT; + // kvo.int_value = std::atol(sep); + // } else if (strncmp(sep, "float:", 6) == 0) { + // sep += 6; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_FLOAT; + // kvo.float_value = std::atof(sep); + // } else if (strncmp(sep, "bool:", 5) == 0) { + // sep += 5; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_BOOL; + // if (std::strcmp(sep, "true") == 0) { + // kvo.bool_value = true; + // } else if (std::strcmp(sep, "false") == 0) { + // kvo.bool_value = false; + // } else { + // fprintf(stderr, "error: Invalid boolean value for KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // } else { + // fprintf(stderr, "error: Invalid type for KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // params.kv_overrides.push_back(kvo); + // } + // } + // + // if (!params.kv_overrides.empty()) { + // params.kv_overrides.emplace_back(); + // params.kv_overrides.back().key[0] = 0; + // } +} + +// +static bool launch_slot(server_slot &slot, const server_task &task) +{ + slot_params default_params; + llama_sampling_params default_sparams; + auto &data = task.data; + + slot.oaicompat = false; + slot.oaicompat_model = ""; + + slot.params.stream = task.stream; + slot.params.cache_prompt = env->GetBooleanField(jparams, f_cache_prompt); + slot.params.n_predict = env->GetIntField(jparams, f_n_predict); + slot.sparams.top_k = env->GetIntField(jparams, f_top_k); + slot.sparams.top_p = env->GetFloatField(jparams, f_top_p); + slot.sparams.min_p = env->GetFloatField(jparams, f_min_p); + slot.sparams.tfs_z = env->GetFloatField(jparams, f_tfs_z); + slot.sparams.typical_p = env->GetFloatField(jparams, f_typical_p); + slot.sparams.temp = env->GetFloatField(jparams, f_temp); + slot.sparams.dynatemp_range = env->GetFloatField(jparams, f_dynatemp_range); + slot.sparams.dynatemp_exponent = env->GetFloatField(jparams, f_dynatemp_exponent); + slot.sparams.penalty_last_n = env->GetIntField(jparams, f_penalty_last_n); + slot.sparams.penalty_repeat = env->GetFloatField(jparams, f_penalty_repeat); + slot.sparams.penalty_freq = env->GetFloatField(jparams, f_penalty_freq); + slot.sparams.penalty_present = env->GetFloatField(jparams, f_penalty_present); + + auto mirostat = env->GetObjectField(jparams, f_mirostat); + if (mirostat == o_mirostat_v1) + { + slot.sparams.mirostat = 1; + } + else if (mirostat == o_mirostat_v2) + { + slot.sparams.mirostat = 2; + } + else + { + slot.sparams.mirostat = 0; + } + slot.sparams.mirostat_tau = env->GetFloatField(jparams, f_mirostat_tau); + slot.sparams.mirostat_eta = env->GetFloatField(jparams, f_mirostat_eta); + slot.sparams.penalize_nl = env->GetBooleanField(jparams, f_penalize_nl); + slot.params.n_keep = env->GetIntField(jparams, f_n_keep); + slot.params.n_discard = env->GetIntField(jparams, f_n_discard); + slot.params.seed = env->GetIntField(jparams, f_infer_seed); + slot.sparams.n_probs = env->GetIntField(jparams, f_n_probs); + slot.sparams.min_keep = env->GetIntField(jparams, f_min_keep); + + jstring j_grammar = (jstring)env->GetObjectField(jparams, f_grammar); + if (j_grammar != nullptr) + { + slot.sparams.grammar = parse_jstring(env, j_grammar); + } + + if (slot.params.cache_prompt && slot.ga_n != 1) + { + LOG_WARNING("cache_prompt is not supported with group-attention", {}); + slot.params.cache_prompt = false; + } + + if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) + { + // Might be better to reject the request with a 400 ? + LOG_WARNING("Max tokens to predict exceeds server configuration", + { + {"params.n_predict", slot.params.n_predict}, + {"slot.n_predict", slot.n_predict}, + }); + slot.params.n_predict = slot.n_predict; + } + + slot.prompt = task.prompt; + slot.params.input_prefix = task.input_prefix; + slot.params.input_suffix = task.input_suffix; + + // penalize user-provided tokens + // { + // slot.sparams.penalty_prompt_tokens.clear(); + // slot.sparams.use_penalty_prompt_tokens = false; + // + // const auto & penalty_prompt = data.find("penalty_prompt"); + // + // if (penalty_prompt != data.end()) { + // if (penalty_prompt->is_string()) { + // const auto penalty_prompt_string = penalty_prompt->get(); + // slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); + // + // if (slot.params.n_predict > 0) { + // slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + + // slot.params.n_predict); + // } + // slot.sparams.use_penalty_prompt_tokens = true; + // + // LOG_VERBOSE("penalty_prompt_tokens", { + // {"id_slot", slot.id}, + // {"tokens", slot.sparams.penalty_prompt_tokens}, + // }); + // } + // else if (penalty_prompt->is_array()) { + // const auto n_tokens = penalty_prompt->size(); + // slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); + // + // const int n_vocab = llama_n_vocab(model); + // for (const auto & penalty_token : *penalty_prompt) { + // if (penalty_token.is_number_integer()) { + // const auto tok = penalty_token.get(); + // if (tok >= 0 && tok < n_vocab) { + // slot.sparams.penalty_prompt_tokens.push_back(tok); + // } + // } + // } + // slot.sparams.use_penalty_prompt_tokens = true; + // + // LOG_VERBOSE("penalty_prompt_tokens", { + // {"id_slot", slot.id}, + // {"tokens", slot.sparams.penalty_prompt_tokens}, + // }); + // } + // } + // } + + sparams.logit_bias.clear(); + jboolean ignore_eos = env->GetBooleanField(jparams, f_ignore_eos); + if (ignore_eos) + { + slot.sparams.logit_bias[llama_token_eos(llama->model)] = -INFINITY; + } + + jobject logit_bias = env->GetObjectField(jparams, f_logit_bias); + if (logit_bias != nullptr) + { + jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); + jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); + while (env->CallBooleanMethod(iterator, m_iterator_has_next)) + { + jobject entry = env->CallObjectMethod(iterator, m_iterator_next); + jobject key = env->CallObjectMethod(entry, m_entry_key); + jobject value = env->CallObjectMethod(entry, m_entry_value); + + int tok = parse_jinteger(env, key); + float bias = parse_jfloat(env, value); + slot.sparams.logit_bias[tok] = bias; + + env->DeleteLocalRef(entry); + env->DeleteLocalRef(key); + env->DeleteLocalRef(value); + } + } + + slot.params.antiprompt.clear(); + jobjectArray antiprompt = (jobjectArray)env->GetObjectField(jparams, f_antiprompt); + if (antiprompt != nullptr) + { + jsize array_length = env->GetArrayLength(antiprompt); + for (jsize i = 0; i < array_length; i++) + { + jstring java_string = (jstring)env->GetObjectArrayElement(antiprompt, i); + if (java_string != nullptr) + { + std::string string = parse_jstring(env, java_string); + slot.params.antiprompt.push_back(string); + env->DeleteLocalRef(java_string); + } + } + } + + // { + // const auto & samplers_sequence = data.find("samplers"); + // if (samplers_sequence != data.end() && samplers_sequence->is_array()) { + // std::vector sampler_names; + // for (const auto & sampler_name : *samplers_sequence) { + // if (sampler_name.is_string()) { + // sampler_names.emplace_back(sampler_name); + // } + // } + // slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); + // } else { + // slot.sparams.samplers_sequence = default_sparams.samplers_sequence; + // } + // } + + // { + // if (slot.ctx_sampling != nullptr) { + // llama_sampling_free(slot.ctx_sampling); + // } + // slot.ctx_sampling = llama_sampling_init(slot.sparams); + // if (slot.ctx_sampling == nullptr) { + // // for now, the only error that may happen here is invalid grammar + // send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); + // return false; + // } + // llama_set_rng_seed(ctx, slot.params.seed); + // } + + slot.command = SLOT_COMMAND_LOAD_PROMPT; + slot.prompt_tokens.clear(); +} +/** + * The VM calls JNI_OnLoad when the native library is loaded (for example, through `System.loadLibrary`). + * `JNI_OnLoad` must return the JNI version needed by the native library. + * In order to use any of the new JNI functions, a native library must export a `JNI_OnLoad` function that returns + * `JNI_VERSION_1_2`. If the native library does not export a JNI_OnLoad function, the VM assumes that the library + * only requires JNI version `JNI_VERSION_1_1`. If the VM does not recognize the version number returned by + `JNI_OnLoad`, the VM will unload the library and act as if the library was never loaded. + */ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env = 0; @@ -147,10 +718,18 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_biconsumer = env->FindClass("java/util/function/BiConsumer"); c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); + c_split_mode = env->FindClass("de/kherud/llama/args/GpuSplitMode"); + c_log_format = env->FindClass("de/kherud/llama/args/LogFormat"); + c_miro_stat = env->FindClass("de/kherud/llama/args/MiroStat"); + c_numa_strategy = env->FindClass("de/kherud/llama/args/NumaStrategy"); + c_pooling_type = env->FindClass("de/kherud/llama/args/PoolingType"); + c_rope_scaling = env->FindClass("de/kherud/llama/args/RopeScalingType"); + c_sampler = env->FindClass("de/kherud/llama/args/Sampler"); if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_output && c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && - c_biconsumer && c_llama_error && c_error_oom)) + c_biconsumer && c_llama_error && c_error_oom && c_split_mode && c_log_format && c_miro_stat && + c_numa_strategy && c_pooling_type && c_rope_scaling && c_sampler)) { goto error; } @@ -173,6 +752,13 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_biconsumer = (jclass)env->NewGlobalRef(c_biconsumer); c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); + c_split_mode = (jclass)env->NewGlobalRef(c_split_mode); + c_log_format = (jclass)env->NewGlobalRef(c_log_format); + c_miro_stat = (jclass)env->NewGlobalRef(c_miro_stat); + c_numa_strategy = (jclass)env->NewGlobalRef(c_numa_strategy); + c_pooling_type = (jclass)env->NewGlobalRef(c_pooling_type); + c_rope_scaling = (jclass)env->NewGlobalRef(c_rope_scaling); + c_sampler = (jclass)env->NewGlobalRef(c_sampler); // find constructors cc_output = env->GetMethodID(c_output, "", "(I[BLjava/util/Map;)V"); @@ -186,8 +772,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) } // find methods - // m_get_bytes = env->GetMethodID(c_string, "getBytes", - // "(Ljava/nio/charset/Charset;)[B"); m_get_bytes = env->GetMethodID(c_string, "getBytes", "(Ljava/lang/String;)[B"); m_entry_set = env->GetMethodID(c_map, "entrySet", "()Ljava/util/Set;"); m_set_iterator = env->GetMethodID(c_set, "iterator", "()Ljava/util/Iterator;"); @@ -212,80 +796,134 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_iter_n_generated = env->GetFieldID(c_llama_iterator, "generatedCount", "J"); f_iter_token_index = env->GetFieldID(c_llama_iterator, "tokenIndex", "J"); + if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) + { + goto error; + } + + // find inference parameters fields + f_cache_prompt = env->GetFieldID(c_infer_params, "cachePrompt", "I"); f_n_predict = env->GetFieldID(c_infer_params, "nPredict", "I"); - f_n_keep = env->GetFieldID(c_infer_params, "nKeep", "I"); - f_n_probs = env->GetFieldID(c_infer_params, "nProbs", "I"); - f_logit_bias = env->GetFieldID(c_infer_params, "logitBias", "Ljava/util/Map;"); f_top_k = env->GetFieldID(c_infer_params, "topK", "I"); f_top_p = env->GetFieldID(c_infer_params, "topP", "F"); + f_min_p = env->GetFieldID(c_infer_params, "minP", "F"); f_tfs_z = env->GetFieldID(c_infer_params, "tfsZ", "F"); f_typical_p = env->GetFieldID(c_infer_params, "typicalP", "F"); - f_temperature = env->GetFieldID(c_infer_params, "temperature", "F"); - f_repeat_penalty = env->GetFieldID(c_infer_params, "repeatPenalty", "F"); - f_repeat_last_n = env->GetFieldID(c_infer_params, "repeatLastN", "I"); - f_frequency_penalty = env->GetFieldID(c_infer_params, "frequencyPenalty", "F"); - f_presence_penalty = env->GetFieldID(c_infer_params, "presencePenalty", "F"); - f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNl", "Z"); - f_ignore_eos = env->GetFieldID(c_infer_params, "ignoreEos", "Z"); - f_mirostat = env->GetFieldID(c_infer_params, "mirostat", "I"); + f_temp = env->GetFieldID(c_infer_params, "temperature", "F"); + f_dynatemp_range = env->GetFieldID(c_infer_params, "dynamicTemperatureRange", "F"); + f_dynatemp_exponent = env->GetFieldID(c_infer_params, "dynamicTemperatureExponent", "F"); + f_penalty_last_n = env->GetFieldID(c_infer_params, "repeatLastN", "I"); + f_penalty_repeat = env->GetFieldID(c_infer_params, "repeatPenalty", "F"); + f_penalty_freq = env->GetFieldID(c_infer_params, "frequencyPenalty", "F"); + f_penalty_present = env->GetFieldID(c_infer_params, "presencePenalty", "F"); + f_mirostat = env->GetFieldID(c_infer_params, "mirostat", "Lde/kherud/llama/args/MiroStat;"); f_mirostat_tau = env->GetFieldID(c_infer_params, "mirostatTau", "F"); f_mirostat_eta = env->GetFieldID(c_infer_params, "mirostatEta", "F"); - f_beam_search = env->GetFieldID(c_infer_params, "beamSearch", "Z"); - f_n_beams = env->GetFieldID(c_infer_params, "nBeams", "I"); - f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); - f_antiprompt = env->GetFieldID(c_infer_params, "antiPrompt", "[Ljava/lang/String;"); - f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); - f_tokenize_special = env->GetFieldID(c_infer_params, "tokenizeSpecial", "Z"); + f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNl", "Z"); + f_n_keep = env->GetFieldID(c_infer_params, "nKeep", "I"); + f_n_discard = env->GetFieldID(c_infer_params, "nDiscard", "I"); + f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); + f_n_probs = env->GetFieldID(c_infer_params, "nProbs", "I"); + f_min_keep = env->GetFieldID(c_infer_params, "minKeep", "I"); + f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); + f_ignore_eos = env->GetFieldID(c_infer_params, "ignoreEos", "Z"); + f_logit_bias = env->GetFieldID(c_infer_params, "logitBias", "Ljava/util/Map;"); + f_antiprompt = env->GetFieldID(c_infer_params, "stopStrings", "[Ljava/lang/String;"); - f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); - f_model_seed = env->GetFieldID(c_model_params, "seed", "I"); + if (!(f_cache_prompt && f_n_predict && f_top_k && f_top_p && f_min_p && f_tfs_z && f_typical_p && f_temp && + f_dynatemp_range && f_dynatemp_exponent && f_penalty_last_n && f_penalty_repeat && f_penalty_freq && + f_penalty_present && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_penalize_nl && f_n_keep && + f_n_discard && f_infer_seed && f_n_probs && f_min_keep && f_grammar && f_ignore_eos && f_logit_bias && + f_antiprompt)) + { + goto error; + } + + // find model parameters fields + f_model_seed = env->GetFieldID(c_model_params, "seed", "I"); + f_model_path = env->GetFieldID(c_model_params, "modelFilePath", "Ljava/lang/String;"); + f_model_url = env->GetFieldID(c_model_params, "modelUrl", "Ljava/lang/String;"); + f_model_hf_repo = env->GetFieldID(c_model_params, "huggingFaceRepository", "Ljava/lang/String;"); + f_model_hf_file = env->GetFieldID(c_model_params, "huggingFaceFile", "Ljava/lang/String;"); + f_model_alias = env->GetFieldID(c_model_params, "modelAlias", "Ljava/lang/String;"); f_n_ctx = env->GetFieldID(c_model_params, "nCtx", "I"); + f_rope_scaling_type = env->GetFieldID(c_model_params, "ropeScalingType", "Lde/kherud/llama/args/RopeScalingType;"); + f_rope_freq_base = env->GetFieldID(c_model_params, "ropeFreqBase", "F"); + f_rope_freq_scale = env->GetFieldID(c_model_params, "ropeFreqScale", "F"); + f_yarn_ext_factor = env->GetFieldID(c_model_params, "yarnExtFactor", "F"); + f_yarn_attn_factor = env->GetFieldID(c_model_params, "yarnAttnFactor", "F"); + f_yarn_beta_fast = env->GetFieldID(c_model_params, "yarnBetaFast", "F"); + f_yarn_beta_slow = env->GetFieldID(c_model_params, "yarnBetaSlow", "F"); + f_pooling_type = env->GetFieldID(c_model_params, "poolingType", "Lde/kherud/llama/args/PoolingType;"); + f_defrag_thold = env->GetFieldID(c_model_params, "defragmentationThreshold", "F"); + f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); + f_grp_attn_n = env->GetFieldID(c_model_params, "groupAttnN", "I"); + f_grp_attn_w = env->GetFieldID(c_model_params, "groupAttnW", "I"); + f_n_threads_batch = env->GetFieldID(c_model_params, "nThreadsBatch", "I"); f_n_batch = env->GetFieldID(c_model_params, "nBatch", "I"); + f_n_ubatch = env->GetFieldID(c_model_params, "nUBatch", "I"); f_n_gpu_layers = env->GetFieldID(c_model_params, "nGpuLayers", "I"); + f_no_kv_offload = env->GetFieldID(c_model_params, "noKVOffload", "Z"); + f_split_mode = env->GetFieldID(c_model_params, "gpuSplitMode", "Lde/kherud/llama/args/GpuSplitMode;"); + f_tensor_split = env->GetFieldID(c_model_params, "tensorSplit", "[F;"); f_main_gpu = env->GetFieldID(c_model_params, "mainGpu", "I"); - f_tensor_split = env->GetFieldID(c_model_params, "tensorSplit", "[F"); - f_rope_freq_base = env->GetFieldID(c_model_params, "ropeFreqBase", "F"); - f_rope_freq_scale = env->GetFieldID(c_model_params, "ropeFreqScale", "F"); - f_mul_mat_q = env->GetFieldID(c_model_params, "mulMatQ", "Z"); - f_f16_kv = env->GetFieldID(c_model_params, "f16Kv", "Z"); - f_logits_all = env->GetFieldID(c_model_params, "logitsAll", "Z"); - f_vocab_only = env->GetFieldID(c_model_params, "vocabOnly", "Z"); - f_use_mmap = env->GetFieldID(c_model_params, "useMmap", "Z"); + f_verbose = env->GetFieldID(c_model_params, "verbose", "Z"); f_use_mlock = env->GetFieldID(c_model_params, "useMlock", "Z"); + f_use_mmap = env->GetFieldID(c_model_params, "useMmap", "Z"); + f_numa_strategy = env->GetFieldID(c_model_params, "numa", "Lde/kherud/llama/args/NumaStrategy;"); f_embedding = env->GetFieldID(c_model_params, "embedding", "Z"); - f_lora_adapter = env->GetFieldID(c_model_params, "loraAdapter", "Ljava/lang/String;"); - f_lora_base = env->GetFieldID(c_model_params, "loraBase", "Ljava/lang/String;"); - f_memory_f16 = env->GetFieldID(c_model_params, "memoryF16", "Z"); - f_mem_test = env->GetFieldID(c_model_params, "memTest", "Z"); - f_numa = env->GetFieldID(c_model_params, "numa", "Z"); - f_verbose_prompt = env->GetFieldID(c_model_params, "verbosePrompt", "Z"); - - if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) - { - goto error; - } - if (!(f_n_predict && f_n_keep && f_n_probs && f_logit_bias && f_top_k && f_top_p && f_tfs_z && f_typical_p && - f_temperature && f_repeat_penalty && f_repeat_last_n && f_frequency_penalty && f_presence_penalty && - f_penalize_nl && f_ignore_eos && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_beam_search && - f_n_beams && f_grammar && f_antiprompt && f_infer_seed && f_tokenize_special)) - { - goto error; - } - if (!(f_n_threads && f_model_seed && f_n_ctx && f_n_batch && f_n_gpu_layers && f_main_gpu && f_tensor_split && - f_rope_freq_base && f_rope_freq_scale && f_mul_mat_q && f_f16_kv && f_logits_all && f_vocab_only && - f_use_mmap && f_use_mlock && f_embedding && f_lora_adapter && f_lora_base && f_memory_f16 && f_mem_test && - f_numa && f_verbose_prompt)) + f_cont_batching = env->GetFieldID(c_model_params, "continuousBatching", "Z"); + f_n_parallel = env->GetFieldID(c_model_params, "nParallel", "I"); + f_n_predict = env->GetFieldID(c_model_params, "nPredict", "I"); + f_system_prompt_file = env->GetFieldID(c_model_params, "systemPromptFile", "Ljava/lang/String;"); + f_log_format = env->GetFieldID(c_model_params, "logFormat", "Lde/kherud/llama/args/LogFormat;"); + + if (!(f_model_seed && f_model_path && f_model_url && f_model_hf_repo && f_model_hf_file && f_model_alias && + f_n_ctx && f_rope_scaling_type && f_rope_freq_base && f_rope_freq_scale && f_yarn_ext_factor && + f_yarn_attn_factor && f_yarn_beta_fast && f_yarn_beta_slow && f_pooling_type && f_defrag_thold && + f_n_threads && f_grp_attn_n && f_grp_attn_w && f_n_threads_batch && f_n_batch && f_n_ubatch && + f_n_gpu_layers && f_no_kv_offload && f_split_mode && f_tensor_split && f_main_gpu && f_verbose && + f_use_mlock && f_use_mmap && f_numa_strategy && f_embedding && f_cont_batching && f_n_parallel && + f_n_predict && f_system_prompt_file && f_log_format)) { goto error; } f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); + f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); - if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error)) + f_rope_scaling_none = env->GetStaticFieldID(c_log_level, "UNSPECIFIED", "Lde/kherud/llama/args/RopeScalingType;"); + f_rope_scaling_linear = env->GetStaticFieldID(c_log_level, "LINEAR", "Lde/kherud/llama/args/RopeScalingType;"); + f_rope_scaling_yarn = env->GetStaticFieldID(c_log_level, "YARN", "Lde/kherud/llama/args/RopeScalingType;"); + + f_pooling_type_none = env->GetStaticFieldID(c_log_level, "UNSPECIFIED", "Lde/kherud/llama/args/PoolingType;"); + f_pooling_type_mean = env->GetStaticFieldID(c_log_level, "MEAN", "Lde/kherud/llama/args/PoolingType;"); + f_pooling_type_cls = env->GetStaticFieldID(c_log_level, "CLS", "Lde/kherud/llama/args/PoolingType;"); + + f_split_mode_none = env->GetStaticFieldID(c_log_level, "NONE", "Lde/kherud/llama/args/GpuSplitMode;"); + f_split_mode_layer = env->GetStaticFieldID(c_log_level, "LAYER", "Lde/kherud/llama/args/GpuSplitMode;"); + f_split_mode_row = env->GetStaticFieldID(c_log_level, "ROW", "Lde/kherud/llama/args/GpuSplitMode;"); + + f_numa_strategy_distribute = + env->GetStaticFieldID(c_log_level, "DISTRIBUTE", "Lde/kherud/llama/args/NumaStrategy;"); + f_numa_strategy_isolate = env->GetStaticFieldID(c_log_level, "ISOLATE", "Lde/kherud/llama/args/NumaStrategy;"); + f_numa_strategy_numactl = env->GetStaticFieldID(c_log_level, "NUMA_CTL", "Lde/kherud/llama/args/NumaStrategy;"); + + f_log_format_json = env->GetStaticFieldID(c_log_level, "JSON", "Lde/kherud/llama/args/LogFormat;"); + f_log_format_text = env->GetStaticFieldID(c_log_level, "TEXT", "Lde/kherud/llama/args/LogFormat;"); + + f_mirostat_v1 = env->GetStaticFieldID(c_log_level, "V1", "Lde/kherud/llama/args/MiroStat;"); + f_mirostat_v2 = env->GetStaticFieldID(c_log_level, "V2", "Lde/kherud/llama/args/MiroStat;"); + + if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error && + f_rope_scaling_none && f_rope_scaling_linear && f_rope_scaling_yarn && f_pooling_type_none && + f_pooling_type_mean && f_pooling_type_cls && f_split_mode_none && f_split_mode_layer && f_split_mode_row && + f_numa_strategy_distribute && f_numa_strategy_isolate && f_numa_strategy_numactl && f_log_format_json && + f_log_format_text && f_mirostat_v1 && f_mirostat_v2)) { goto error; } @@ -299,6 +937,28 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) o_log_level_warn = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_warn)); o_log_level_error = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_error)); + o_rope_scaling_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_none)); + o_rope_scaling_linear = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_linear)); + o_rope_scaling_yarn = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_yarn)); + + o_pooling_type_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_none)); + o_pooling_type_mean = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_mean)); + o_pooling_type_cls = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_cls)); + + o_split_mode_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_none)); + o_split_mode_layer = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_layer)); + o_split_mode_row = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_row)); + + o_numa_strategy_distribute = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_distribute)); + o_numa_strategy_isolate = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_isolate)); + o_numa_strategy_numactl = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_numactl)); + + o_log_format_json = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_format, f_log_format_json)); + o_log_format_text = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_format, f_log_format_text)); + + o_mirostat_v1 = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_miro_stat, f_mirostat_v1)); + o_mirostat_v2 = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_miro_stat, f_mirostat_v2)); + if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) { goto error; @@ -319,6 +979,14 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) return JNI_VERSION_1_2; } +/** + * The VM calls `JNI_OnUnload` when the class loader containing the native library is garbage collected. + * This function can be used to perform cleanup operations. Because this function is called in an unknown context + * (such as from a finalizer), the programmer should be conservative on using Java VM services, and refrain from + * arbitrary Java call-backs. + * Note that `JNI_OnLoad` and `JNI_OnUnload` are two functions optionally supplied by JNI libraries, not exported from + * the VM. + */ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { JNIEnv *env = 0; @@ -343,1162 +1011,426 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_biconsumer); env->DeleteGlobalRef(c_llama_error); env->DeleteGlobalRef(c_error_oom); + env->DeleteGlobalRef(c_split_mode); + env->DeleteGlobalRef(c_log_format); + env->DeleteGlobalRef(c_miro_stat); + env->DeleteGlobalRef(c_numa_strategy); + env->DeleteGlobalRef(c_pooling_type); + env->DeleteGlobalRef(c_rope_scaling); + env->DeleteGlobalRef(c_sampler); env->DeleteGlobalRef(o_utf_8); - env->DeleteGlobalRef(o_log_level_debug); env->DeleteGlobalRef(o_log_level_info); env->DeleteGlobalRef(o_log_level_warn); env->DeleteGlobalRef(o_log_level_error); + env->DeleteGlobalRef(o_rope_scaling_none); + env->DeleteGlobalRef(o_rope_scaling_linear); + env->DeleteGlobalRef(o_rope_scaling_yarn); + env->DeleteGlobalRef(o_pooling_type_none); + env->DeleteGlobalRef(o_pooling_type_mean); + env->DeleteGlobalRef(o_pooling_type_cls); + env->DeleteGlobalRef(o_split_mode_none); + env->DeleteGlobalRef(o_split_mode_layer); + env->DeleteGlobalRef(o_split_mode_row); + env->DeleteGlobalRef(o_numa_strategy_distribute); + env->DeleteGlobalRef(o_numa_strategy_isolate); + env->DeleteGlobalRef(o_numa_strategy_numactl); + env->DeleteGlobalRef(o_log_format_json); + env->DeleteGlobalRef(o_log_format_text); + env->DeleteGlobalRef(o_mirostat_v1); + env->DeleteGlobalRef(o_mirostat_v2); } -static void jllama_log_callback(enum ggml_log_level level, const char *text, void *user_data) -{ - if (g_log_callback == nullptr) - return; - - JNIEnv *env; - g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_2); - - jobject java_log_level; - switch (level) - { - case GGML_LOG_LEVEL_ERROR: - java_log_level = o_log_level_error; - break; - case GGML_LOG_LEVEL_WARN: - java_log_level = o_log_level_warn; - break; - case GGML_LOG_LEVEL_INFO: - java_log_level = o_log_level_info; - break; - default: - java_log_level = o_log_level_debug; - break; - } - jstring java_text = env->NewStringUTF(text); - - env->CallVoidMethod(g_log_callback, m_biconsumer_accept, java_log_level, java_text); - - env->DeleteLocalRef(java_text); -} - -static void jllama_log_callback(enum ggml_log_level level, std::string text) -{ - jllama_log_callback(level, text.c_str(), nullptr); -} - -static std::string parse_jstring(JNIEnv *env, jstring java_string) -{ - const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); - - size_t length = (size_t)env->GetArrayLength(string_bytes); - jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); - - std::string string = std::string((char *)byte_elements, length); - - env->ReleaseByteArrayElements(string_bytes, byte_elements, JNI_ABORT); - env->DeleteLocalRef(string_bytes); - - return string; -} - -static int parse_jinteger(JNIEnv *env, jobject java_integer) -{ - if (!java_integer) - return 0; - return env->CallIntMethod(java_integer, m_int_value); -} - -static float parse_jfloat(JNIEnv *env, jobject java_float) -{ - if (!java_float) - return 0; - return env->CallFloatMethod(java_float, m_float_value); -} - -// Since Java expects utf16 but std::strings are utf8, we can't directly use -// `env->NewString` or `env-NewString`, but we simply send the bytes directly -// and do the conversion in Java. Unfortunately, there isn't a -// nice/standardized way to do this conversion in C++ -static jbyteArray parse_jbytes(JNIEnv *env, std::string string) -{ - jsize len = string.size(); - jbyteArray bytes = env->NewByteArray(len); - env->SetByteArrayRegion(bytes, 0, len, reinterpret_cast(string.c_str())); - return bytes; -} - -// completion token output with probabilities -struct completion_token_output -{ - struct token_prob - { - llama_token tok; - float prob; - }; - - std::vector probs; - llama_token tok; -}; - -static size_t common_part(const std::vector &a, const std::vector &b) -{ - size_t i; - for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) - { - } - return i; -} - -enum stop_type +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, + jobject jparams) { - STOP_FULL, - STOP_PARTIAL, -}; + gpt_params params; + server_params sparams; -static bool ends_with(const std::string &str, const std::string &suffix) -{ - return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); -} + server_context ctx_server; -static size_t find_partial_stop_string(const std::string &stop, const std::string &text) -{ - if (!text.empty() && !stop.empty()) - { - const char text_last_char = text.back(); - for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) - { - if (stop[char_index] == text_last_char) - { - const std::string current_partial = stop.substr(0, char_index + 1); - if (ends_with(text, current_partial)) - { - return text.size() - char_index - 1; - } - } - } - } - return std::string::npos; -} + server_params_parse(env, jparams, sparams, params); -template static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) -{ - std::string ret; - for (; begin != end; ++begin) + if (!sparams.system_prompt.empty()) { - ret += llama_token_to_piece(ctx, *begin); + ctx_server.system_prompt_set(sparams.system_prompt); } - return ret; -} -// format incomplete utf-8 multibyte character for output -static std::string tokens_to_output_formatted_string(const llama_context *ctx, const llama_token token) -{ - std::string out = token == -1 ? "" : llama_token_to_piece(ctx, token); - // if the size is 1 and first bit is 1, meaning it's a partial character - // (size > 1 meaning it's already a known token) - if (out.size() == 1 && (out[0] & 0x80) == 0x80) + if (params.model_alias == "unknown") { - std::stringstream ss; - ss << std::hex << (out[0] & 0xff); - std::string res(ss.str()); - out = "byte: \\x" + res; + params.model_alias = params.model; } - return out; -} - -struct jllama_context -{ - bool has_next_token = false; - std::string generated_text; - std::vector generated_token_probs; - - size_t num_prompt_tokens = 0; - size_t num_tokens_predicted = 0; - size_t n_past = 0; - size_t n_remain = 0; - - std::string prompt; - std::vector embd; - std::vector last_n_tokens; - - llama_model *model = nullptr; - llama_context *ctx = nullptr; - gpt_params params; - llama_sampling_context ctx_sampling; - int n_ctx; - - grammar_parser::parse_state parsed_grammar; - llama_grammar *grammar = nullptr; - - // Whether to tokenize special and/or control tokens which otherwise are not - // exposed and treated as plaintext. - bool tokenize_special = false; - - bool truncated = false; - bool stopped_eos = false; - bool stopped_word = false; - bool stopped_limit = false; - std::string stopping_word; - int32_t multibyte_pending = 0; - std::mutex mutex; + llama_backend_init(); + llama_numa_init(params.numa); - std::unique_lock lock() - { - return std::unique_lock(mutex); - } - - ~jllama_context() - { - if (ctx) - { - llama_free(ctx); - ctx = nullptr; - } - if (model) - { - llama_free_model(model); - model = nullptr; - } - if (grammar) - { - llama_grammar_free(grammar); - grammar = nullptr; - } - } + LOG_INFO("build info", {{"build", LLAMA_BUILD_NUMBER}, {"commit", LLAMA_COMMIT}}); - void rewind() - { - params.antiprompt.clear(); - params.sparams.grammar.clear(); - num_prompt_tokens = 0; - num_tokens_predicted = 0; - generated_text = ""; - generated_text.reserve(n_ctx); - generated_token_probs.clear(); - truncated = false; - stopped_eos = false; - stopped_word = false; - stopped_limit = false; - stopping_word = ""; - multibyte_pending = 0; - n_remain = 0; - n_past = 0; - - if (grammar != nullptr) - { - llama_grammar_free(grammar); - grammar = nullptr; - ctx_sampling = *llama_sampling_init(params.sparams); - } - } + LOG_INFO("system info", { + {"n_threads", params.n_threads}, + {"n_threads_batch", params.n_threads_batch}, + {"total_threads", std::thread::hardware_concurrency()}, + {"system_info", llama_print_system_info()}, + }); - bool loadModel(const gpt_params ¶ms_) - { - params = params_; - std::tie(model, ctx) = llama_init_from_gpt_params(params); - if (model == nullptr) - { - return false; - } - n_ctx = llama_n_ctx(ctx); - last_n_tokens.resize(n_ctx); - std::fill(last_n_tokens.begin(), last_n_tokens.end(), 0); - return true; - } + std::atomic state{SERVER_STATE_LOADING_MODEL}; - std::vector tokenize(std::string prompt, bool add_bos) const + // load the model + if (!ctx_server.load_model(params)) { - return ::llama_tokenize(ctx, prompt, add_bos, tokenize_special); + state.store(SERVER_STATE_ERROR); + env->ThrowNew(c_llama_error, "could not load model from given file path"); + return; } - - bool loadGrammar() + else { - if (!params.sparams.grammar.empty()) - { - parsed_grammar = grammar_parser::parse(params.sparams.grammar.c_str()); - // will be empty (default) if there are parse errors - if (parsed_grammar.rules.empty()) - { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "grammar parse error"); - return false; - } - grammar_parser::print_grammar(stderr, parsed_grammar); - - { - auto it = params.sparams.logit_bias.find(llama_token_eos(model)); - if (it != params.sparams.logit_bias.end() && it->second == -INFINITY) - { - jllama_log_callback(GGML_LOG_LEVEL_WARN, "EOS token is disabled, which will cause " - "most grammars to fail"); - } - } - - std::vector grammar_rules(parsed_grammar.c_rules()); - grammar = - llama_grammar_init(grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); - } - ctx_sampling = *llama_sampling_init(params.sparams); - return true; + ctx_server.init(); + state.store(SERVER_STATE_READY); } - void loadInfill() - { - bool suff_rm_leading_spc = true; - if (params.input_suffix.find_first_of(" ") == 0 && params.input_suffix.size() > 1) - { - params.input_suffix.erase(0, 1); - suff_rm_leading_spc = false; - } - - auto prefix_tokens = tokenize(params.input_prefix, false); - auto suffix_tokens = tokenize(params.input_suffix, false); - const int space_token = 29871; - if (suff_rm_leading_spc && suffix_tokens[0] == space_token) - { - suffix_tokens.erase(suffix_tokens.begin()); - } - prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); - prefix_tokens.insert(prefix_tokens.begin(), - llama_token_bos(model)); // always add BOS - prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(model)); - prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); - prefix_tokens.push_back(llama_token_middle(model)); - auto prompt_tokens = prefix_tokens; - - num_prompt_tokens = prompt_tokens.size(); - - if (params.n_keep < 0) - { - params.n_keep = (int)num_prompt_tokens; - } - params.n_keep = std::min(params.n_ctx - 4, params.n_keep); - - // if input prompt is too big, truncate like normal - if (num_prompt_tokens >= (size_t)params.n_ctx) - { - // todo we probably want to cut from both sides - const int n_left = (params.n_ctx - params.n_keep) / 2; - std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); - const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; - new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, - prompt_tokens.end()); - std::copy(prompt_tokens.end() - params.n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); - - truncated = true; - prompt_tokens = new_tokens; - } - else - { - const size_t ps = num_prompt_tokens; - std::fill(last_n_tokens.begin(), last_n_tokens.end() - ps, 0); - std::copy(prompt_tokens.begin(), prompt_tokens.end(), last_n_tokens.end() - ps); - } - - // compare the evaluated prompt with the new prompt - n_past = common_part(embd, prompt_tokens); - embd = prompt_tokens; - - if (n_past == num_prompt_tokens) - { - // we have to evaluate at least 1 token to generate logits. - n_past--; - } - - // since #3228 we now have to manually manage the KV cache - llama_kv_cache_seq_rm(ctx, 0, n_past, -1); + LOG_INFO("model loaded", {}); - has_next_token = true; - } + const auto model_meta = ctx_server.model_meta(); - void loadPrompt() + // if a custom chat template is not supplied, we will use the one that comes with the model (if any) + if (sparams.chat_template.empty()) { - auto prompt_tokens = tokenize(prompt, true); // always add BOS - - num_prompt_tokens = prompt_tokens.size(); - - if (params.n_keep < 0) - { - params.n_keep = (int)num_prompt_tokens; - } - params.n_keep = std::min(n_ctx - 4, params.n_keep); - - // if input prompt is too big, truncate like normal - if (num_prompt_tokens >= (size_t)n_ctx) - { - const int n_left = (n_ctx - params.n_keep) / 2; - std::vector new_tokens(prompt_tokens.begin(), prompt_tokens.begin() + params.n_keep); - const int erased_blocks = (num_prompt_tokens - params.n_keep - n_left - 1) / n_left; - new_tokens.insert(new_tokens.end(), prompt_tokens.begin() + params.n_keep + erased_blocks * n_left, - prompt_tokens.end()); - std::copy(prompt_tokens.end() - n_ctx, prompt_tokens.end(), last_n_tokens.begin()); - - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); - - truncated = true; - prompt_tokens = new_tokens; - } - else - { - const size_t ps = num_prompt_tokens; - std::fill(last_n_tokens.begin(), last_n_tokens.end() - ps, 0); - std::copy(prompt_tokens.begin(), prompt_tokens.end(), last_n_tokens.end() - ps); - } - - // compare the evaluated prompt with the new prompt - n_past = common_part(embd, prompt_tokens); - - embd = prompt_tokens; - if (n_past == num_prompt_tokens) + if (!ctx_server.validate_model_chat_template()) { - // we have to evaluate at least 1 token to generate logits. - n_past--; + LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " + "may cause the model to output suboptimal responses", + {}); + sparams.chat_template = "chatml"; } - - // since #3228 we now have to manually manage the KV cache - llama_kv_cache_seq_rm(ctx, 0, n_past, -1); - - has_next_token = true; - } - - void beginCompletion() - { - // number of tokens to keep when resetting context - n_remain = params.n_predict; - llama_set_rng_seed(ctx, params.seed); } - completion_token_output nextToken() + // print sample chat example to make it clear which template is used { - completion_token_output result; - result.tok = -1; - - if (embd.size() >= (size_t)n_ctx) - { - // Shift context - - const int n_left = n_past - params.n_keep - 1; - const int n_discard = n_left / 2; - - llama_kv_cache_seq_rm(ctx, 0, params.n_keep + 1, params.n_keep + n_discard + 1); - llama_kv_cache_seq_shift(ctx, 0, params.n_keep + 1 + n_discard, n_past, -n_discard); - - for (size_t i = params.n_keep + 1 + n_discard; i < embd.size(); i++) - { - embd[i - n_discard] = embd[i]; - } - embd.resize(embd.size() - n_discard); - - n_past -= n_discard; - - truncated = true; - jllama_log_callback(GGML_LOG_LEVEL_INFO, "input truncated n_left=" + std::to_string(n_left)); - } - - bool tg = true; - while (n_past < embd.size()) - { - int n_eval = (int)embd.size() - n_past; - tg = n_eval == 1; - if (n_eval > params.n_batch) - { - n_eval = params.n_batch; - } - - if (llama_decode(ctx, llama_batch_get_one(&embd[n_past], n_eval, n_past, 0))) - { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "failed to eval n_eval=" + std::to_string(n_eval)); - has_next_token = false; - return result; - } - n_past += n_eval; - } - - if (params.n_predict == 0) - { - has_next_token = false; - result.tok = llama_token_eos(model); - return result; - } - - { - // out of user input, sample next token - result.tok = llama_sampling_sample(&ctx_sampling, ctx, NULL); - - llama_token_data_array candidates_p = {ctx_sampling.cur.data(), ctx_sampling.cur.size(), false}; - - const int32_t n_probs = params.sparams.n_probs; - if (params.sparams.temp <= 0 && n_probs > 0) - { - // For llama_sample_token_greedy we need to sort candidates - llama_sample_softmax(ctx, &candidates_p); - } - - for (size_t i = 0; i < std::min(candidates_p.size, (size_t)n_probs); ++i) - { - result.probs.push_back({candidates_p.data[i].id, candidates_p.data[i].p}); - } - - llama_sampling_accept(&ctx_sampling, ctx, result.tok, true); - if (tg) - { - num_tokens_predicted++; - } - } - - // add it to the context - embd.push_back(result.tok); - // decrement remaining sampling budget - --n_remain; - - if (!embd.empty() && embd.back() == llama_token_eos(model)) - { - // stopping_word = llama_token_to_piece(ctx, embd.back()); - has_next_token = false; - stopped_eos = true; - return result; - } - - has_next_token = params.n_predict == -1 || n_remain != 0; - return result; + json chat; + chat.push_back({{"role", "system"}, {"content", "You are a helpful assistant"}}); + chat.push_back({{"role", "user"}, {"content", "Hello"}}); + chat.push_back({{"role", "assistant"}, {"content", "Hi there"}}); + chat.push_back({{"role", "user"}, {"content", "How are you?"}}); + + const std::string chat_example = format_chat(ctx_server.model, sparams.chat_template, chat); + + LOG_INFO("chat template", { + {"chat_example", chat_example}, + {"built_in", sparams.chat_template.empty()}, + }); } - size_t findStoppingStrings(const std::string &text, const size_t last_token_size, const stop_type type) - { - size_t stop_pos = std::string::npos; - for (const std::string &word : params.antiprompt) - { - size_t pos; - if (type == STOP_FULL) - { - const size_t tmp = word.size() + last_token_size; - const size_t from_pos = text.size() > tmp ? text.size() - tmp : 0; - pos = text.find(word, from_pos); - } - else - { - pos = find_partial_stop_string(word, text); - } - if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) - { - if (type == STOP_FULL) - { - stopping_word = word; - stopped_word = true; - has_next_token = false; - } - stop_pos = pos; - } - } - return stop_pos; - } + env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); +} - completion_token_output doCompletion() - { - auto token_with_probs = nextToken(); - - const std::string token_text = - token_with_probs.tok == -1 ? "" : llama_token_to_piece(ctx, token_with_probs.tok); - generated_text += token_text; - - if (params.sparams.n_probs > 0) - { - generated_token_probs.push_back(token_with_probs); - } - - if (multibyte_pending > 0) - { - multibyte_pending -= token_text.size(); - } - else if (token_text.size() == 1) - { - const char c = token_text[0]; - // 2-byte characters: 110xxxxx 10xxxxxx - if ((c & 0xE0) == 0xC0) - { - multibyte_pending = 1; - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - } - else if ((c & 0xF0) == 0xE0) - { - multibyte_pending = 2; - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - } - else if ((c & 0xF8) == 0xF0) - { - multibyte_pending = 3; - } - else - { - multibyte_pending = 0; - } - } - - if (multibyte_pending > 0 && !has_next_token) - { - has_next_token = true; - n_remain++; - } - - if (!has_next_token && n_remain == 0) - { - stopped_limit = true; - } - - return token_with_probs; - } - - std::vector getEmbedding() - { - static const int n_embd = llama_n_embd(model); - if (!params.embedding) - { - jllama_log_callback(GGML_LOG_LEVEL_ERROR, "embedding disabled"); - return std::vector(n_embd, 0.0f); - } - const float *data = llama_get_embeddings(ctx); - std::vector embedding(data, data + n_embd); - return embedding; - } -}; - -static gpt_params parse_model_params(JNIEnv *env, jobject jparams, jstring java_file_path) -{ - gpt_params params; - - params.model = parse_jstring(env, java_file_path); - params.seed = env->GetIntField(jparams, f_model_seed); - params.n_threads = env->GetIntField(jparams, f_n_threads); - params.n_ctx = env->GetIntField(jparams, f_n_ctx); - params.n_batch = env->GetIntField(jparams, f_n_batch); - params.n_gpu_layers = env->GetIntField(jparams, f_n_gpu_layers); - params.main_gpu = env->GetIntField(jparams, f_main_gpu); - params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); - params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); - params.mul_mat_q = env->GetBooleanField(jparams, f_mul_mat_q); - params.embedding = env->GetBooleanField(jparams, f_embedding); - params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); - params.use_mlock = env->GetBooleanField(jparams, f_use_mlock); - params.numa = env->GetBooleanField(jparams, f_numa); - params.verbose_prompt = env->GetBooleanField(jparams, f_verbose_prompt); - - // jstring j_lora_adapter = (jstring)env->GetObjectField(jparams, - // f_lora_adapter); if (j_lora_adapter != nullptr) - // { - // params.lora_adapter = parse_jstring(env, j_lora_adapter); - // std::cout << params.lora_adapter << std::endl; - // env->DeleteLocalRef(j_lora_adapter); - // } - // jstring j_lora_base = (jstring)env->GetObjectField(jparams, - // f_lora_base); if (j_lora_base != nullptr) - // { - // params.lora_base = parse_jstring(env, j_lora_base); - // std::cout << params.lora_base << std::endl; - // env->DeleteLocalRef(j_lora_base); - // } - - // jfloatArray j_tensor_split = (jfloatArray)env->GetObjectField(jparams, - // f_tensor_split); if (j_tensor_split != nullptr) - // { - // #ifndef GGML_USE_CUBLAS - // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is not - // possible to set a tensor split.\n", {}); - // #endif - // jsize array_length = env->GetArrayLength(j_tensor_split); - // GGML_ASSERT(array_length <= LLAMA_MAX_DEVICES); - // float *tensor_split = new float[array_length]; - // env->GetFloatArrayRegion(j_tensor_split, 0, array_length, - // tensor_split); for (size_t i_device = 0; i_device < - // LLAMA_MAX_DEVICES; ++i_device) - // { - // if (i_device < array_length) - // { - // params.tensor_split[i_device] = tensor_split[i_device]; - // } - // else - // { - // params.tensor_split[i_device] = 0.0f; - // } - // } - // delete[] tensor_split; - // } - // - // #ifndef LLAMA_SUPPORTS_GPU_OFFLOAD - // if (params.n_gpu_layers > 0) { - // // LOG_WARNING("Not compiled with GPU offload support, - //--n-gpu-layers option will be ignored. " - // // "See main README.md for - // information on enabling GPU BLAS support", - // // {{"n_gpu_layers", - // params.n_gpu_layers}}); - // } - // #endif - // - // #ifndef GGML_USE_CUBLAS - // if (params.low_vram) { - // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. - // It is not possible to set lower vram usage.\n", {}); - // } - // if (!params.mul_mat_q) { - // // LOG_WARNING("warning: llama.cpp was compiled without cuBLAS. - // Disabling mul_mat_q kernels has no effect.\n", {}); - // } - // if (params.main_gpu != 0) { - // // LOG_WARNING("llama.cpp was compiled without cuBLAS. It is - // not possible to set a main GPU.", {}); - // } - // #endif - // - // // todo: these have to be set in llama_context_params - // // f_logits_all - // // f_vocab_only - // // f_memory_f16 - // // f_f16_kv - - if (params.model_alias == "unknown") - { - params.model_alias = params.model; - } - - return params; -} - -static void setup_infer_params(JNIEnv *env, jllama_context *llama, jobject jparams) -{ - auto ¶ms = llama->params; - - params.seed = env->GetIntField(jparams, f_infer_seed); - params.n_predict = env->GetIntField(jparams, f_n_predict); - params.n_keep = env->GetIntField(jparams, f_n_keep); - - auto &sparams = params.sparams; - - sparams.top_k = env->GetIntField(jparams, f_top_k); - sparams.top_p = env->GetFloatField(jparams, f_top_p); - sparams.tfs_z = env->GetFloatField(jparams, f_tfs_z); - sparams.typical_p = env->GetFloatField(jparams, f_typical_p); - sparams.temp = env->GetFloatField(jparams, f_temperature); - sparams.penalty_repeat = env->GetFloatField(jparams, f_repeat_penalty); - sparams.n_prev = env->GetIntField(jparams, f_repeat_last_n); - sparams.penalty_freq = env->GetFloatField(jparams, f_frequency_penalty); - sparams.penalty_present = env->GetFloatField(jparams, f_presence_penalty); - sparams.penalize_nl = env->GetBooleanField(jparams, f_penalize_nl); - sparams.mirostat = env->GetIntField(jparams, f_mirostat); - sparams.mirostat_tau = env->GetFloatField(jparams, f_mirostat_tau); - sparams.mirostat_eta = env->GetFloatField(jparams, f_mirostat_eta); - sparams.n_probs = env->GetIntField(jparams, f_n_probs); - - jstring j_grammar = (jstring)env->GetObjectField(jparams, f_grammar); - if (j_grammar != nullptr) - { - sparams.grammar = parse_jstring(env, j_grammar); - env->DeleteLocalRef(j_grammar); - if (!llama->loadGrammar()) - { - env->ThrowNew(c_llama_error, "could not load grammar"); - } - } - - sparams.logit_bias.clear(); - jboolean ignore_eos = env->GetBooleanField(jparams, f_ignore_eos); - if (ignore_eos) - { - sparams.logit_bias[llama_token_eos(llama->model)] = -INFINITY; - } - - jobject logit_bias = env->GetObjectField(jparams, f_logit_bias); - if (logit_bias != nullptr) - { - jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); - jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); - while (env->CallBooleanMethod(iterator, m_iterator_has_next)) - { - jobject entry = env->CallObjectMethod(iterator, m_iterator_next); - jobject key = env->CallObjectMethod(entry, m_entry_key); - jobject value = env->CallObjectMethod(entry, m_entry_value); - - int tok = parse_jinteger(env, key); - float bias = parse_jfloat(env, value); - sparams.logit_bias[tok] = bias; - - env->DeleteLocalRef(entry); - env->DeleteLocalRef(key); - env->DeleteLocalRef(value); - } - } - - params.antiprompt.clear(); - jobjectArray antiprompt = (jobjectArray)env->GetObjectField(jparams, f_antiprompt); - if (antiprompt != nullptr) - { - jsize array_length = env->GetArrayLength(antiprompt); - for (jsize i = 0; i < array_length; i++) - { - jstring java_string = (jstring)env->GetObjectArrayElement(antiprompt, i); - if (java_string != nullptr) - { - std::string string = parse_jstring(env, java_string); - params.antiprompt.push_back(string); - env->DeleteLocalRef(java_string); - } - } - } - - llama->ctx_sampling = *llama_sampling_init(params.sparams); - llama->tokenize_special = env->GetBooleanField(jparams, f_tokenize_special); -} - -static void setup_answering(JNIEnv *env, jllama_context *llama, jstring prompt, jobject params) -{ - llama->prompt = parse_jstring(env, prompt); - llama->params.input_prefix = ""; - llama->params.input_suffix = ""; - setup_infer_params(env, llama, params); -} - -static void setup_infilling(JNIEnv *env, jllama_context *llama, jstring prefix, jstring suffix, jobject params) -{ - llama->prompt = ""; - llama->params.input_prefix = parse_jstring(env, prefix); - llama->params.input_suffix = parse_jstring(env, suffix); - setup_infer_params(env, llama, params); -} - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, - jobject jparams) -{ - gpt_params params = parse_model_params(env, jparams, file_path); - - jllama_context *llama = new jllama_context; - llama_backend_init(false); - - if (!llama->loadModel(params)) - { - env->ThrowNew(c_llama_error, "could not load model from given file path"); - return; - } - - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "build=" + BUILD_NUMBER); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "commit=" + BUILD_COMMIT); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "n_threads=" + params.n_threads); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "total_threads=" + - // std::thread::hardware_concurrency()); - // jllama_log_callback(GGML_LOG_LEVEL_INFO, "system_info=" + - // llama_print_system_info()); - - env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); -} - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, - jobject params) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - llama->rewind(); - - llama_reset_timings(llama->ctx); - - setup_answering(env, llama, prompt, params); - - llama->loadPrompt(); - llama->beginCompletion(); -} - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, - jstring suffix, jobject params) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - llama->rewind(); - - llama_reset_timings(llama->ctx); - - setup_infilling(env, llama, prefix, suffix, params); - - llama->loadInfill(); - llama->beginCompletion(); -} - -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - size_t sent_count = env->GetLongField(iter, f_iter_n_generated); - size_t sent_token_probs_index = env->GetLongField(iter, f_iter_token_index); - - completion_token_output token_with_probs; - while (llama->has_next_token) - { - token_with_probs = llama->doCompletion(); - if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) - { - break; - } - } - const std::string token_text = llama_token_to_piece(llama->ctx, token_with_probs.tok); - - size_t pos = std::min(sent_count, llama->generated_text.size()); - - const std::string str_test = llama->generated_text.substr(pos); - bool is_stop_full = false; - size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); - if (stop_pos != std::string::npos) - { - is_stop_full = true; - llama->generated_text.erase(llama->generated_text.begin() + pos + stop_pos, llama->generated_text.end()); - pos = std::min(sent_count, llama->generated_text.size()); - } - else - { - is_stop_full = false; - stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); - } - - std::string to_send; - if (stop_pos == std::string::npos || - // Send rest of the text if we are at the end of the generation - (!llama->has_next_token && !is_stop_full && stop_pos > 0)) - { - to_send = llama->generated_text.substr(pos, std::string::npos); - - sent_count += to_send.size(); - env->SetLongField(iter, f_iter_n_generated, sent_count); - - std::vector probs_output = {}; - - if (llama->params.sparams.n_probs > 0) - { - const std::vector to_send_toks = - llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); - size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); - size_t probs_stop_pos = - std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); - if (probs_pos < probs_stop_pos) - { - probs_output = - std::vector(llama->generated_token_probs.begin() + probs_pos, - llama->generated_token_probs.begin() + probs_stop_pos); - } - sent_token_probs_index = probs_stop_pos; - env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); - } - } - else - { - to_send = ""; - } - - if (!llama->has_next_token) - { - env->SetBooleanField(iter, f_iter_has_next, false); - // llama.mutex.unlock(); - // lock.release(); - } - - jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - for (const auto &tp : token_with_probs.probs) - { - jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); - jobject jprob = env->NewObject(c_float, cc_float, tp.prob); - env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); - } - jbyteArray jbytes = parse_jbytes(env, to_send); - return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); -} - -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, - jobject params) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - llama->rewind(); - - llama_reset_timings(llama->ctx); - - setup_answering(env, llama, prompt, params); - - llama->loadPrompt(); - llama->beginCompletion(); - - size_t stop_pos = std::string::npos; - - while (llama->has_next_token) - { - const completion_token_output token_with_probs = llama->doCompletion(); - const std::string token_text = - token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - - stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); - } - - if (stop_pos == std::string::npos) - { - stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); - } - if (stop_pos != std::string::npos) - { - llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); - } - - // llama->lock().release(); - // llama->mutex.unlock(); - - return parse_jbytes(env, llama->generated_text); -} - -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, - jstring suffix, jobject params) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - llama->rewind(); - - llama_reset_timings(llama->ctx); - - setup_infilling(env, llama, prefix, suffix, params); - - llama->loadInfill(); - llama->beginCompletion(); - - size_t stop_pos = std::string::npos; - - while (llama->has_next_token) - { - const completion_token_output token_with_probs = llama->doCompletion(); - const std::string token_text = - token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); - - stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); - } - - if (stop_pos == std::string::npos) - { - stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); - } - if (stop_pos != std::string::npos) - { - llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); - } - - // llama->lock().release(); - // llama->mutex.unlock(); - - return parse_jbytes(env, llama->generated_text); -} - -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - llama->rewind(); - llama_reset_timings(llama->ctx); - llama->prompt = parse_jstring(env, java_prompt); - llama->params.n_predict = 0; - llama->loadPrompt(); - llama->beginCompletion(); - llama->doCompletion(); - - static const int n_embd = llama_n_embd(llama->model); - const float *data = llama_get_embeddings(llama->ctx); - std::vector embedding(data, data + n_embd); - - jfloatArray java_embedding = env->NewFloatArray(embedding.size()); - if (java_embedding == nullptr) - { - env->ThrowNew(c_error_oom, "could not allocate embedding"); - return nullptr; - } - - env->SetFloatArrayRegion(java_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); - - return java_embedding; -} - -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - std::string prompt = parse_jstring(env, jprompt); - std::vector tokens = llama->tokenize(prompt, false); - - jintArray java_tokens = env->NewIntArray(tokens.size()); - if (java_tokens == nullptr) - { - env->ThrowNew(c_error_oom, "could not allocate tokens"); - return nullptr; - } - - env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); - - // lock.release(); - return java_tokens; -} - -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, - jintArray java_tokens) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - - // auto lock = llama->lock(); - - jsize length = env->GetArrayLength(java_tokens); - jint *elements = env->GetIntArrayElements(java_tokens, nullptr); - std::vector tokens(elements, elements + length); - std::string text = tokens_to_str(llama->ctx, tokens.cbegin(), tokens.cend()); - - env->ReleaseIntArrayElements(java_tokens, elements, 0); - - // lock.release(); - return parse_jbytes(env, text); -} - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) -{ - env->GetJavaVM(&g_vm); - - if (g_log_callback != nullptr) - { - env->DeleteGlobalRef(g_log_callback); - } - - if (callback == nullptr) - { - llama_log_set(nullptr, nullptr); - } - else - { - g_log_callback = env->NewGlobalRef(callback); - llama_log_set(jllama_log_callback, nullptr); - } -} - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) -{ - jlong llama_handle = env->GetLongField(obj, f_model_pointer); - jllama_context *llama = reinterpret_cast(llama_handle); - delete llama; -} +// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, +// jobject params) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// llama->rewind(); +// +// llama_reset_timings(llama->ctx); +// +// setup_answering(env, llama, prompt, params); +// +// llama->loadPrompt(); +// llama->beginCompletion(); +// } +// +// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, +// jstring suffix, jobject params) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// llama->rewind(); +// +// llama_reset_timings(llama->ctx); +// +// setup_infilling(env, llama, prefix, suffix, params); +// +// llama->loadInfill(); +// llama->beginCompletion(); +// } +// +// JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// size_t sent_count = env->GetLongField(iter, f_iter_n_generated); +// size_t sent_token_probs_index = env->GetLongField(iter, f_iter_token_index); +// +// completion_token_output token_with_probs; +// while (llama->has_next_token) +// { +// token_with_probs = llama->doCompletion(); +// if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) +// { +// break; +// } +// } +// const std::string token_text = llama_token_to_piece(llama->ctx, token_with_probs.tok); +// +// size_t pos = std::min(sent_count, llama->generated_text.size()); +// +// const std::string str_test = llama->generated_text.substr(pos); +// bool is_stop_full = false; +// size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); +// if (stop_pos != std::string::npos) +// { +// is_stop_full = true; +// llama->generated_text.erase(llama->generated_text.begin() + pos + stop_pos, llama->generated_text.end()); +// pos = std::min(sent_count, llama->generated_text.size()); +// } +// else +// { +// is_stop_full = false; +// stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); +// } +// +// std::string to_send; +// if (stop_pos == std::string::npos || +// // Send rest of the text if we are at the end of the generation +// (!llama->has_next_token && !is_stop_full && stop_pos > 0)) +// { +// to_send = llama->generated_text.substr(pos, std::string::npos); +// +// sent_count += to_send.size(); +// env->SetLongField(iter, f_iter_n_generated, sent_count); +// +// std::vector probs_output = {}; +// +// if (llama->params.sparams.n_probs > 0) +// { +// const std::vector to_send_toks = +// llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); +// size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); +// size_t probs_stop_pos = +// std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); +// if (probs_pos < probs_stop_pos) +// { +// probs_output = +// std::vector(llama->generated_token_probs.begin() + probs_pos, +// llama->generated_token_probs.begin() + probs_stop_pos); +// } +// sent_token_probs_index = probs_stop_pos; +// env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); +// } +// } +// else +// { +// to_send = ""; +// } +// +// if (!llama->has_next_token) +// { +// env->SetBooleanField(iter, f_iter_has_next, false); +// // llama.mutex.unlock(); +// // lock.release(); +// } +// +// jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); +// for (const auto &tp : token_with_probs.probs) +// { +// jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); +// jobject jprob = env->NewObject(c_float, cc_float, tp.prob); +// env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); +// } +// jbyteArray jbytes = parse_jbytes(env, to_send); +// return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); +// } +// +// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, +// jobject params) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// llama->rewind(); +// +// llama_reset_timings(llama->ctx); +// +// setup_answering(env, llama, prompt, params); +// +// llama->loadPrompt(); +// llama->beginCompletion(); +// +// size_t stop_pos = std::string::npos; +// +// while (llama->has_next_token) +// { +// const completion_token_output token_with_probs = llama->doCompletion(); +// const std::string token_text = +// token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); +// +// stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); +// } +// +// if (stop_pos == std::string::npos) +// { +// stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); +// } +// if (stop_pos != std::string::npos) +// { +// llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); +// } +// +// // llama->lock().release(); +// // llama->mutex.unlock(); +// +// return parse_jbytes(env, llama->generated_text); +// } +// +// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, +// jstring suffix, jobject params) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// llama->rewind(); +// +// llama_reset_timings(llama->ctx); +// +// setup_infilling(env, llama, prefix, suffix, params); +// +// llama->loadInfill(); +// llama->beginCompletion(); +// +// size_t stop_pos = std::string::npos; +// +// while (llama->has_next_token) +// { +// const completion_token_output token_with_probs = llama->doCompletion(); +// const std::string token_text = +// token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); +// +// stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); +// } +// +// if (stop_pos == std::string::npos) +// { +// stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); +// } +// if (stop_pos != std::string::npos) +// { +// llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); +// } +// +// // llama->lock().release(); +// // llama->mutex.unlock(); +// +// return parse_jbytes(env, llama->generated_text); +// } +// +// JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// llama->rewind(); +// llama_reset_timings(llama->ctx); +// llama->prompt = parse_jstring(env, java_prompt); +// llama->params.n_predict = 0; +// llama->loadPrompt(); +// llama->beginCompletion(); +// llama->doCompletion(); +// +// static const int n_embd = llama_n_embd(llama->model); +// const float *data = llama_get_embeddings(llama->ctx); +// std::vector embedding(data, data + n_embd); +// +// jfloatArray java_embedding = env->NewFloatArray(embedding.size()); +// if (java_embedding == nullptr) +// { +// env->ThrowNew(c_error_oom, "could not allocate embedding"); +// return nullptr; +// } +// +// env->SetFloatArrayRegion(java_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); +// +// return java_embedding; +// } +// +// JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// std::string prompt = parse_jstring(env, jprompt); +// std::vector tokens = llama->tokenize(prompt, false); +// +// jintArray java_tokens = env->NewIntArray(tokens.size()); +// if (java_tokens == nullptr) +// { +// env->ThrowNew(c_error_oom, "could not allocate tokens"); +// return nullptr; +// } +// +// env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); +// +// // lock.release(); +// return java_tokens; +// } +// +// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, +// jintArray java_tokens) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// +// // auto lock = llama->lock(); +// +// jsize length = env->GetArrayLength(java_tokens); +// jint *elements = env->GetIntArrayElements(java_tokens, nullptr); +// std::vector tokens(elements, elements + length); +// std::string text = tokens_to_str(llama->ctx, tokens.cbegin(), tokens.cend()); +// +// env->ReleaseIntArrayElements(java_tokens, elements, 0); +// +// // lock.release(); +// return parse_jbytes(env, text); +// } +// +// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) +//{ +// env->GetJavaVM(&g_vm); +// +// if (g_log_callback != nullptr) +// { +// env->DeleteGlobalRef(g_log_callback); +// } +// +// if (callback == nullptr) +// { +// llama_log_set(nullptr, nullptr); +// } +// else +// { +// g_log_callback = env->NewGlobalRef(callback); +// llama_log_set(jllama_log_callback, nullptr); +// } +// } +// +// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) +//{ +// jlong llama_handle = env->GetLongField(obj, f_model_pointer); +// jllama_context *llama = reinterpret_cast(llama_handle); +// delete llama; +// } diff --git a/src/main/cpp/server.cpp b/src/main/cpp/server.cpp new file mode 100644 index 00000000..f30e1fce --- /dev/null +++ b/src/main/cpp/server.cpp @@ -0,0 +1,2124 @@ +#include "common.h" +#include "grammar-parser.h" +#include "json.hpp" +#include "llama.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool server_verbose = false; +bool server_log_json = true; + +enum stop_type +{ + STOP_TYPE_FULL, + STOP_TYPE_PARTIAL, +}; + +enum slot_state +{ + SLOT_STATE_IDLE, + SLOT_STATE_PROCESSING, +}; + +enum slot_command +{ + SLOT_COMMAND_NONE, + SLOT_COMMAND_LOAD_PROMPT, + SLOT_COMMAND_RELEASE, +}; + +enum server_state +{ + SERVER_STATE_LOADING_MODEL, // Server is starting up, model not fully loaded yet + SERVER_STATE_READY, // Server is ready and model is loaded + SERVER_STATE_ERROR // An error occurred, load_model failed +}; + +enum server_task_type +{ + SERVER_TASK_TYPE_COMPLETION, + SERVER_TASK_TYPE_CANCEL, + SERVER_TASK_TYPE_NEXT_RESPONSE, + SERVER_TASK_TYPE_METRICS +}; + +struct server_task +{ + int id = -1; // to be filled by server_queue + int id_multi = -1; + int id_target = -1; + + server_task_type type; + jobject data; + + std::string prompt; + std::string input_prefix; + std::string input_suffix; + + bool infill = false; + bool embedding = false; + bool stream = false; +}; + +struct server_task_result +{ + int id = -1; + int id_multi = -1; + + json data; + + bool stop; + bool error; +}; + +struct server_task_multi +{ + int id = -1; + + std::set subtasks_remaining; + std::vector results; +}; + +struct slot_params +{ + bool stream = true; + bool cache_prompt = false; // remember the prompt to avoid reprocessing all prompt + + uint32_t seed = -1; // RNG seed + int32_t n_keep = 0; // number of tokens to keep from initial prompt + int32_t n_discard = + 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half + int32_t n_predict = -1; // new tokens to predict + + std::vector antiprompt; + + std::string input_prefix; + std::string input_suffix; +}; + +struct server_params +{ + std::string chat_template = ""; + std::string system_prompt = ""; +}; + +struct server_slot +{ + int id; + int id_task = -1; + int id_multi = -1; + + struct slot_params params; + + slot_state state = SLOT_STATE_IDLE; + slot_command command = SLOT_COMMAND_NONE; + + // used to determine the slot that has been used the longest + int64_t t_last_used = -1; + + // generation props + int32_t n_ctx = 0; // context size per slot + int32_t n_past = 0; + int32_t n_decoded = 0; + int32_t n_remaining = -1; + int32_t i_batch = -1; + int32_t n_predict = -1; // TODO: disambiguate from params.n_predict + + int32_t n_prompt_tokens = 0; + int32_t n_prompt_tokens_processed = 0; + + json prompt; + + // when a task is submitted, we first tokenize the prompt and store it here + std::vector prompt_tokens; + + std::string generated_text; + std::vector cache_tokens; + std::vector generated_token_probs; + + bool infill = false; + bool embedding = false; + bool has_next_token = true; + bool truncated = false; + bool stopped_eos = false; + bool stopped_word = false; + bool stopped_limit = false; + + bool oaicompat = false; + + std::string oaicompat_model; + std::string stopping_word; + + // sampling + llama_token sampled; + struct llama_sampling_params sparams; + llama_sampling_context *ctx_sampling = nullptr; + json json_schema; + + int32_t ga_i = 0; // group-attention state + int32_t ga_n = 1; // group-attention factor + int32_t ga_w = 512; // group-attention width + + int32_t n_past_se = 0; // self-extend + + // stats + size_t n_sent_text = 0; // number of sent text character + size_t n_sent_token_probs = 0; + + int64_t t_start_process_prompt; + int64_t t_start_generation; + + double t_prompt_processing; // ms + double t_token_generation; // ms + + void reset() + { + n_prompt_tokens = 0; + generated_text = ""; + truncated = false; + stopped_eos = false; + stopped_word = false; + stopped_limit = false; + stopping_word = ""; + n_past = 0; + n_sent_text = 0; + n_sent_token_probs = 0; + infill = false; + ga_i = 0; + n_past_se = 0; + + generated_token_probs.clear(); + } + + bool has_budget(gpt_params &global_params) + { + if (params.n_predict == -1 && global_params.n_predict == -1) + { + return true; // limitless + } + + n_remaining = -1; + + if (params.n_predict != -1) + { + n_remaining = params.n_predict - n_decoded; + } + else if (global_params.n_predict != -1) + { + n_remaining = global_params.n_predict - n_decoded; + } + + return n_remaining > 0; // no budget + } + + bool available() const + { + return state == SLOT_STATE_IDLE && command == SLOT_COMMAND_NONE; + } + + bool is_processing() const + { + return (state == SLOT_STATE_IDLE && command == SLOT_COMMAND_LOAD_PROMPT) || state == SLOT_STATE_PROCESSING; + } + + void add_token_string(const completion_token_output &token) + { + if (command == SLOT_COMMAND_RELEASE) + { + return; + } + generated_token_probs.push_back(token); + } + + void release() + { + if (state == SLOT_STATE_PROCESSING) + { + t_token_generation = (ggml_time_us() - t_start_generation) / 1e3; + command = SLOT_COMMAND_RELEASE; + } + } + + json get_formated_timings() const + { + return json{ + {"prompt_n", n_prompt_tokens_processed}, + {"prompt_ms", t_prompt_processing}, + {"prompt_per_token_ms", t_prompt_processing / n_prompt_tokens_processed}, + {"prompt_per_second", 1e3 / t_prompt_processing * n_prompt_tokens_processed}, + + {"predicted_n", n_decoded}, + {"predicted_ms", t_token_generation}, + {"predicted_per_token_ms", t_token_generation / n_decoded}, + {"predicted_per_second", 1e3 / t_token_generation * n_decoded}, + }; + } + + size_t find_stopping_strings(const std::string &text, const size_t last_token_size, const stop_type type) + { + size_t stop_pos = std::string::npos; + + for (const std::string &word : params.antiprompt) + { + size_t pos; + + if (type == STOP_TYPE_FULL) + { + const size_t tmp = word.size() + last_token_size; + const size_t from_pos = text.size() > tmp ? text.size() - tmp : 0; + + pos = text.find(word, from_pos); + } + else + { + pos = find_partial_stop_string(word, text); + } + + if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) + { + if (type == STOP_TYPE_FULL) + { + stopped_word = true; + stopping_word = word; + has_next_token = false; + } + stop_pos = pos; + } + } + + return stop_pos; + } + + void print_timings() const + { + char buffer[512]; + + double t_token = t_prompt_processing / n_prompt_tokens_processed; + double n_tokens_second = 1e3 / t_prompt_processing * n_prompt_tokens_processed; + + snprintf(buffer, 512, + "prompt eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)", + t_prompt_processing, n_prompt_tokens_processed, t_token, n_tokens_second); + + LOG_INFO(buffer, { + {"id_slot", id}, + {"id_task", id_task}, + {"t_prompt_processing", t_prompt_processing}, + {"n_prompt_tokens_processed", n_prompt_tokens_processed}, + {"t_token", t_token}, + {"n_tokens_second", n_tokens_second}, + }); + + t_token = t_token_generation / n_decoded; + n_tokens_second = 1e3 / t_token_generation * n_decoded; + + snprintf(buffer, 512, + "generation eval time = %10.2f ms / %5d runs (%8.2f ms per token, %8.2f tokens per second)", + t_token_generation, n_decoded, t_token, n_tokens_second); + + LOG_INFO(buffer, { + {"id_slot", id}, + {"id_task", id_task}, + {"t_token_generation", t_token_generation}, + {"n_decoded", n_decoded}, + {"t_token", t_token}, + {"n_tokens_second", n_tokens_second}, + }); + + snprintf(buffer, 512, " total time = %10.2f ms", t_prompt_processing + t_token_generation); + + LOG_INFO(buffer, { + {"id_slot", id}, + {"id_task", id_task}, + {"t_prompt_processing", t_prompt_processing}, + {"t_token_generation", t_token_generation}, + {"t_total", t_prompt_processing + t_token_generation}, + }); + } +}; + +struct server_metrics +{ + int64_t t_start = 0; + + uint64_t n_prompt_tokens_processed_total = 0; + uint64_t t_prompt_processing_total = 0; + uint64_t n_tokens_predicted_total = 0; + uint64_t t_tokens_generation_total = 0; + + uint64_t n_prompt_tokens_processed = 0; + uint64_t t_prompt_processing = 0; + + uint64_t n_tokens_predicted = 0; + uint64_t t_tokens_generation = 0; + + void init() + { + t_start = ggml_time_us(); + } + + void on_prompt_eval(const server_slot &slot) + { + n_prompt_tokens_processed_total += slot.n_prompt_tokens_processed; + n_prompt_tokens_processed += slot.n_prompt_tokens_processed; + t_prompt_processing += slot.t_prompt_processing; + t_prompt_processing_total += slot.t_prompt_processing; + } + + void on_prediction(const server_slot &slot) + { + n_tokens_predicted_total += slot.n_decoded; + n_tokens_predicted += slot.n_decoded; + t_tokens_generation += slot.t_token_generation; + t_tokens_generation_total += slot.t_token_generation; + } + + void reset_bucket() + { + n_prompt_tokens_processed = 0; + t_prompt_processing = 0; + n_tokens_predicted = 0; + t_tokens_generation = 0; + } +}; + +struct server_queue +{ + int id = 0; + bool running; + + // queues + std::vector queue_tasks; + std::vector queue_tasks_deferred; + + std::vector queue_multitasks; + + std::mutex mutex_tasks; + std::condition_variable condition_tasks; + + // callback functions + std::function callback_new_task; + std::function callback_finish_multitask; + std::function callback_update_slots; + + // Add a new task to the end of the queue + int post(server_task task) + { + std::unique_lock lock(mutex_tasks); + if (task.id == -1) + { + task.id = id++; + LOG_VERBOSE("new task id", {{"new_id", task.id}}); + } + queue_tasks.push_back(std::move(task)); + condition_tasks.notify_one(); + return task.id; + } + + // Add a new task, but defer until one slot is available + void defer(server_task task) + { + std::unique_lock lock(mutex_tasks); + queue_tasks_deferred.push_back(std::move(task)); + } + + // Get the next id for creating anew task + int get_new_id() + { + std::unique_lock lock(mutex_tasks); + int new_id = id++; + LOG_VERBOSE("new task id", {{"new_id", new_id}}); + return new_id; + } + + // Register function to process a new task + void on_new_task(std::function callback) + { + callback_new_task = std::move(callback); + } + + // Register function to process a multitask when it is finished + void on_finish_multitask(std::function callback) + { + callback_finish_multitask = std::move(callback); + } + + // Register the function to be called when all slots data is ready to be processed + void on_update_slots(std::function callback) + { + callback_update_slots = std::move(callback); + } + + // Call when the state of one slot is changed + void notify_slot_changed() + { + // move deferred tasks back to main loop + std::unique_lock lock(mutex_tasks); + for (auto &task : queue_tasks_deferred) + { + queue_tasks.push_back(std::move(task)); + } + queue_tasks_deferred.clear(); + } + + // end the start_loop routine + void terminate() + { + std::unique_lock lock(mutex_tasks); + running = false; + condition_tasks.notify_all(); + } + + /** + * Main loop consists of these steps: + * - Wait until a new task arrives + * - Process the task (i.e. maybe copy data into slot) + * - Check if multitask is finished + * - Update all slots + */ + void start_loop() + { + running = true; + + while (true) + { + LOG_VERBOSE("new task may arrive", {}); + + while (true) + { + std::unique_lock lock(mutex_tasks); + if (queue_tasks.empty()) + { + lock.unlock(); + break; + } + server_task task = queue_tasks.front(); + queue_tasks.erase(queue_tasks.begin()); + lock.unlock(); + LOG_VERBOSE("callback_new_task", {{"id_task", task.id}}); + callback_new_task(task); + } + + LOG_VERBOSE("update_multitasks", {}); + + // check if we have any finished multitasks + auto queue_iterator = queue_multitasks.begin(); + while (queue_iterator != queue_multitasks.end()) + { + if (queue_iterator->subtasks_remaining.empty()) + { + // all subtasks done == multitask is done + server_task_multi current_multitask = *queue_iterator; + callback_finish_multitask(current_multitask); + // remove this multitask + queue_iterator = queue_multitasks.erase(queue_iterator); + } + else + { + ++queue_iterator; + } + } + + // all tasks in the current loop is processed, slots data is now ready + LOG_VERBOSE("callback_update_slots", {}); + + callback_update_slots(); + + LOG_VERBOSE("wait for new task", {}); + { + std::unique_lock lock(mutex_tasks); + if (queue_tasks.empty()) + { + if (!running) + { + LOG_VERBOSE("ending start_loop", {}); + return; + } + condition_tasks.wait(lock, [&] { return (!queue_tasks.empty() || !running); }); + } + } + } + } + + // + // functions to manage multitasks + // + + // add a multitask by specifying the id of all subtask (subtask is a server_task) + void add_multitask(int id_multi, std::vector &sub_ids) + { + std::lock_guard lock(mutex_tasks); + server_task_multi multi; + multi.id = id_multi; + std::copy(sub_ids.begin(), sub_ids.end(), + std::inserter(multi.subtasks_remaining, multi.subtasks_remaining.end())); + queue_multitasks.push_back(multi); + } + + // update the remaining subtasks, while appending results to multitask + void update_multitask(int id_multi, int id_sub, server_task_result &result) + { + std::lock_guard lock(mutex_tasks); + for (auto &multitask : queue_multitasks) + { + if (multitask.id == id_multi) + { + multitask.subtasks_remaining.erase(id_sub); + multitask.results.push_back(result); + } + } + } +}; + +struct server_response +{ + typedef std::function callback_multitask_t; + callback_multitask_t callback_update_multitask; + + // for keeping track of all tasks waiting for the result + std::set waiting_task_ids; + + // the main result queue + std::vector queue_results; + + std::mutex mutex_results; + std::condition_variable condition_results; + + // add the id_task to the list of tasks waiting for response + void add_waiting_task_id(int id_task) + { + LOG_VERBOSE("waiting for task id", {{"id_task", id_task}}); + + std::unique_lock lock(mutex_results); + waiting_task_ids.insert(id_task); + } + + // when the request is finished, we can remove task associated with it + void remove_waiting_task_id(int id_task) + { + LOG_VERBOSE("remove waiting for task id", {{"id_task", id_task}}); + + std::unique_lock lock(mutex_results); + waiting_task_ids.erase(id_task); + } + + // This function blocks the thread until there is a response for this id_task + server_task_result recv(int id_task) + { + while (true) + { + std::unique_lock lock(mutex_results); + condition_results.wait(lock, [&] { return !queue_results.empty(); }); + + for (int i = 0; i < (int)queue_results.size(); i++) + { + if (queue_results[i].id == id_task) + { + assert(queue_results[i].id_multi == -1); + server_task_result res = queue_results[i]; + queue_results.erase(queue_results.begin() + i); + return res; + } + } + } + + // should never reach here + } + + // Register the function to update multitask + void on_multitask_update(callback_multitask_t callback) + { + callback_update_multitask = std::move(callback); + } + + // Send a new result to a waiting id_task + void send(server_task_result result) + { + LOG_VERBOSE("send new result", {{"id_task", result.id}}); + + std::unique_lock lock(mutex_results); + for (const auto &id_task : waiting_task_ids) + { + // LOG_TEE("waiting task id %i \n", id_task); + // for now, tasks that have associated parent multitasks just get erased once multitask picks up the result + if (result.id_multi == id_task) + { + LOG_VERBOSE("callback_update_multitask", {{"id_task", id_task}}); + callback_update_multitask(id_task, result.id, result); + continue; + } + + if (result.id == id_task) + { + LOG_VERBOSE("queue_results.push_back", {{"id_task", id_task}}); + queue_results.push_back(result); + condition_results.notify_all(); + return; + } + } + } +}; + +struct server_context +{ + llama_model *model = nullptr; + llama_context *ctx = nullptr; + + gpt_params params; + + llama_batch batch; + + bool clean_kv_cache = true; + bool add_bos_token = true; + + int32_t n_ctx; // total context for all clients / slots + + // system prompt + bool system_need_update = false; + + std::string system_prompt; + std::vector system_tokens; + + std::string name_user; // this should be the antiprompt + std::string name_assistant; + + // slots / clients + std::vector slots; + json default_generation_settings_for_props; + + server_queue queue_tasks; + server_response queue_results; + + server_metrics metrics; + + ~server_context() + { + if (ctx) + { + llama_free(ctx); + ctx = nullptr; + } + + if (model) + { + llama_free_model(model); + model = nullptr; + } + } + + bool load_model(const gpt_params ¶ms_) + { + params = params_; + + // dedicate one sequence to the system prompt + params.n_parallel += 1; + + std::tie(model, ctx) = llama_init_from_gpt_params(params); + params.n_parallel -= 1; // but be sneaky about it + if (model == nullptr) + { + LOG_ERROR("unable to load model", {{"model", params.model}}); + return false; + } + + n_ctx = llama_n_ctx(ctx); + + add_bos_token = llama_should_add_bos_token(model); + + return true; + } + + bool validate_model_chat_template() const + { + llama_chat_message chat[] = {{"user", "test"}}; + + const int res = llama_chat_apply_template(model, nullptr, chat, 1, true, nullptr, 0); + + return res > 0; + } + + void init() + { + const int32_t n_ctx_slot = n_ctx / params.n_parallel; + + LOG_INFO("initializing slots", {{"n_slots", params.n_parallel}}); + + for (int i = 0; i < params.n_parallel; i++) + { + server_slot slot; + + slot.id = i; + slot.n_ctx = n_ctx_slot; + slot.n_predict = params.n_predict; + + LOG_INFO("new slot", {{"id_slot", slot.id}, {"n_ctx_slot", slot.n_ctx}}); + + const int ga_n = params.grp_attn_n; + const int ga_w = params.grp_attn_w; + + if (ga_n != 1) + { + GGML_ASSERT(ga_n > 0 && "ga_n must be positive"); // NOLINT + GGML_ASSERT(ga_w % ga_n == 0 && "ga_w must be a multiple of ga_n"); // NOLINT + // GGML_ASSERT(n_ctx_train % ga_w == 0 && "n_ctx_train must be a multiple of ga_w"); // NOLINT + // GGML_ASSERT(n_ctx >= n_ctx_train * ga_n && "n_ctx must be at least n_ctx_train * ga_n"); // NOLINT + + LOG_INFO("slot self-extend", {{"id_slot", slot.id}, {"ga_n", ga_n}, {"ga_w", ga_w}}); + } + + slot.ga_i = 0; + slot.ga_n = ga_n; + slot.ga_w = ga_w; + + slot.reset(); + + slots.push_back(slot); + } + + default_generation_settings_for_props = get_formated_generation(slots.front()); + default_generation_settings_for_props["seed"] = -1; + + // the update_slots() logic will always submit a maximum of n_batch tokens + // note that n_batch can be > n_ctx (e.g. for non-causal attention models such as BERT where the KV cache is not + // used) + { + const int32_t n_batch = llama_n_batch(ctx); + + // only a single seq_id per token is needed + batch = llama_batch_init(n_batch, 0, 1); + } + + metrics.init(); + } + + std::vector tokenize(const json &json_prompt, bool add_bos) const + { + // TODO: currently, we tokenize using special tokens by default + // this is not always correct (see + // https://github.com/ggerganov/llama.cpp/pull/4160#issuecomment-1824826216) but it's better compared to + // completely ignoring ChatML and other chat templates + const bool TMP_FORCE_SPECIAL = true; + + // If `add_bos` is true, we only add BOS, when json_prompt is a string, + // or the first element of the json_prompt array is a string. + std::vector prompt_tokens; + + if (json_prompt.is_array()) + { + bool first = true; + for (const auto &p : json_prompt) + { + if (p.is_string()) + { + auto s = p.template get(); + + std::vector p; + if (first) + { + p = ::llama_tokenize(ctx, s, add_bos, TMP_FORCE_SPECIAL); + first = false; + } + else + { + p = ::llama_tokenize(ctx, s, false, TMP_FORCE_SPECIAL); + } + + prompt_tokens.insert(prompt_tokens.end(), p.begin(), p.end()); + } + else + { + if (first) + { + first = false; + } + + prompt_tokens.push_back(p.template get()); + } + } + } + else + { + auto s = json_prompt.template get(); + prompt_tokens = ::llama_tokenize(ctx, s, add_bos, TMP_FORCE_SPECIAL); + } + + return prompt_tokens; + } + + server_slot *get_slot(int id) + { + int64_t t_last = ggml_time_us(); + + server_slot *last_used = nullptr; + + for (server_slot &slot : slots) + { + if (slot.id == id && slot.available()) + { + return &slot; + } + + // among all available slots, find the one that has been least recently used + if (slot.available() && slot.t_last_used < t_last) + { + last_used = &slot; + t_last = slot.t_last_used; + } + } + + return last_used; + } + + void kv_cache_clear() + { + LOG_VERBOSE("clearing KV cache", {}); + + // clear the entire KV cache + llama_kv_cache_clear(ctx); + clean_kv_cache = false; + } + + void system_prompt_update() + { + LOG_VERBOSE("system prompt update", { + {"system_prompt", system_prompt}, + }); + + kv_cache_clear(); + system_tokens.clear(); + + if (!system_prompt.empty()) + { + system_tokens = ::llama_tokenize(ctx, system_prompt, add_bos_token); + + llama_batch_clear(batch); + + for (int i = 0; i < (int)system_tokens.size(); ++i) + { + llama_batch_add(batch, system_tokens[i], i, {0}, false); + } + + const int32_t n_batch = llama_n_batch(ctx); + + for (int32_t i = 0; i < batch.n_tokens; i += n_batch) + { + const int32_t n_tokens = std::min(params.n_batch, batch.n_tokens - i); + llama_batch batch_view = { + n_tokens, + batch.token + i, + nullptr, + batch.pos + i, + batch.n_seq_id + i, + batch.seq_id + i, + batch.logits + i, + 0, + 0, + 0, // unused + }; + + if (llama_decode(ctx, batch_view) != 0) + { + LOG_TEE("%s: llama_decode() failed\n", __func__); + return; + } + } + + // assign the system KV cache to all parallel sequences + for (int32_t i = 1; i <= params.n_parallel; ++i) + { + llama_kv_cache_seq_cp(ctx, 0, i, -1, -1); + } + } + + system_need_update = false; + } + + void system_prompt_set(const json &sys_props) + { + system_prompt = sys_props.value("prompt", ""); + name_user = sys_props.value("anti_prompt", ""); + name_assistant = sys_props.value("assistant_name", ""); + + LOG_VERBOSE("system prompt process", { + {"system_prompt", system_prompt}, + {"name_user", name_user}, + {"name_assistant", name_assistant}, + }); + + // release all slots + for (server_slot &slot : slots) + { + slot.release(); + } + + system_need_update = true; + } + + bool process_token(completion_token_output &result, server_slot &slot) + { + // remember which tokens were sampled - used for repetition penalties during sampling + const std::string token_str = llama_token_to_piece(ctx, result.tok); + slot.sampled = result.tok; + + // search stop word and delete it + slot.generated_text += token_str; + slot.has_next_token = true; + + if (slot.ctx_sampling->params.use_penalty_prompt_tokens && result.tok != -1) + { + // we can change penalty_prompt_tokens because it is always created from scratch each request + slot.ctx_sampling->params.penalty_prompt_tokens.push_back(result.tok); + } + + // check if there is incomplete UTF-8 character at the end + bool incomplete = false; + for (unsigned i = 1; i < 5 && i <= slot.generated_text.size(); ++i) + { + unsigned char c = slot.generated_text[slot.generated_text.size() - i]; + if ((c & 0xC0) == 0x80) + { + // continuation byte: 10xxxxxx + continue; + } + if ((c & 0xE0) == 0xC0) + { + // 2-byte character: 110xxxxx ... + incomplete = i < 2; + } + else if ((c & 0xF0) == 0xE0) + { + // 3-byte character: 1110xxxx ... + incomplete = i < 3; + } + else if ((c & 0xF8) == 0xF0) + { + // 4-byte character: 11110xxx ... + incomplete = i < 4; + } + // else 1-byte character or invalid byte + break; + } + + if (!incomplete) + { + size_t pos = std::min(slot.n_sent_text, slot.generated_text.size()); + + const std::string str_test = slot.generated_text.substr(pos); + bool is_stop_full = false; + + size_t stop_pos = slot.find_stopping_strings(str_test, token_str.size(), STOP_TYPE_FULL); + if (stop_pos != std::string::npos) + { + is_stop_full = true; + slot.generated_text.erase(slot.generated_text.begin() + pos + stop_pos, slot.generated_text.end()); + pos = std::min(slot.n_sent_text, slot.generated_text.size()); + } + else + { + is_stop_full = false; + stop_pos = slot.find_stopping_strings(str_test, token_str.size(), STOP_TYPE_PARTIAL); + } + + // check if there is any token to predict + if (stop_pos == std::string::npos || (!slot.has_next_token && !is_stop_full && stop_pos > 0)) + { + // no send the stop word in the response + result.text_to_send = slot.generated_text.substr(pos, std::string::npos); + slot.n_sent_text += result.text_to_send.size(); + // add the token to slot queue and cache + } + + slot.add_token_string(result); + if (slot.params.stream) + { + send_partial_response(slot, result); + } + } + + if (incomplete) + { + slot.has_next_token = true; + } + + // check the limits + if (slot.n_decoded > 0 && slot.has_next_token && !slot.has_budget(params)) + { + slot.stopped_limit = true; + slot.has_next_token = false; + + LOG_VERBOSE("stopped by limit", { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_decoded", slot.n_decoded}, + {"n_predict", slot.params.n_predict}, + }); + } + + if (result.tok == llama_token_eos(model)) + { + slot.stopped_eos = true; + slot.has_next_token = false; + + LOG_VERBOSE("eos token found", {}); + } + + LOG_VERBOSE("next token", { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"token", result.tok}, + {"token_text", tokens_to_output_formatted_string(ctx, result.tok)}, + {"has_next_token", slot.has_next_token}, + {"n_remain", slot.n_remaining}, + {"n_decoded", slot.n_decoded}, + {"stopped_eos", slot.stopped_eos}, + {"stopped_word", slot.stopped_word}, + {"stopped_limit", slot.stopped_limit}, + {"stopping_word", slot.stopping_word}, + }); + + return slot.has_next_token; // continue + } + + json get_formated_generation(const server_slot &slot) const + { + const auto eos_bias = slot.sparams.logit_bias.find(llama_token_eos(model)); + const bool ignore_eos = + eos_bias != slot.sparams.logit_bias.end() && eos_bias->second < 0.0f && std::isinf(eos_bias->second); + + std::vector samplers_sequence; + samplers_sequence.reserve(slot.sparams.samplers_sequence.size()); + for (const auto &sampler_type : slot.sparams.samplers_sequence) + { + samplers_sequence.emplace_back(sampler_type_to_name_string(sampler_type)); + } + + return json{{"n_ctx", slot.n_ctx}, + {"n_predict", slot.n_predict}, + {"model", params.model_alias}, + {"seed", slot.params.seed}, + {"temperature", slot.sparams.temp}, + {"dynatemp_range", slot.sparams.dynatemp_range}, + {"dynatemp_exponent", slot.sparams.dynatemp_exponent}, + {"top_k", slot.sparams.top_k}, + {"top_p", slot.sparams.top_p}, + {"min_p", slot.sparams.min_p}, + {"tfs_z", slot.sparams.tfs_z}, + {"typical_p", slot.sparams.typical_p}, + {"repeat_last_n", slot.sparams.penalty_last_n}, + {"repeat_penalty", slot.sparams.penalty_repeat}, + {"presence_penalty", slot.sparams.penalty_present}, + {"frequency_penalty", slot.sparams.penalty_freq}, + {"penalty_prompt_tokens", slot.sparams.penalty_prompt_tokens}, + {"use_penalty_prompt_tokens", slot.sparams.use_penalty_prompt_tokens}, + {"mirostat", slot.sparams.mirostat}, + {"mirostat_tau", slot.sparams.mirostat_tau}, + {"mirostat_eta", slot.sparams.mirostat_eta}, + {"penalize_nl", slot.sparams.penalize_nl}, + {"stop", slot.params.antiprompt}, + {"n_predict", slot.params.n_predict}, // TODO: fix duplicate key n_predict + {"n_keep", slot.params.n_keep}, + {"n_discard", slot.params.n_discard}, + {"ignore_eos", ignore_eos}, + {"stream", slot.params.stream}, + {"logit_bias", slot.sparams.logit_bias}, + {"n_probs", slot.sparams.n_probs}, + {"min_keep", slot.sparams.min_keep}, + {"grammar", slot.sparams.grammar}, + {"samplers", samplers_sequence}}; + } + + void send_error(const server_task &task, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) + { + send_error(task.id, task.id_multi, error, type); + } + + void send_error(const server_slot &slot, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) + { + send_error(slot.id_task, slot.id_multi, error, type); + } + + void send_error(const int id_task, const int id_multi, const std::string &error, + const enum error_type type = ERROR_TYPE_SERVER) + { + LOG_TEE("task %i - error: %s\n", id_task, error.c_str()); + + server_task_result res; + res.id = id_task; + res.id_multi = id_multi; + res.stop = false; + res.error = true; + res.data = format_error_response(error, type); + + queue_results.send(res); + } + + void send_partial_response(server_slot &slot, completion_token_output tkn) + { + server_task_result res; + res.id = slot.id_task; + res.id_multi = slot.id_multi; + res.error = false; + res.stop = false; + res.data = json{{"content", tkn.text_to_send}, {"stop", false}, {"id_slot", slot.id}, {"multimodal", false}}; + + if (slot.sparams.n_probs > 0) + { + const std::vector to_send_toks = llama_tokenize(ctx, tkn.text_to_send, false); + const size_t probs_pos = std::min(slot.n_sent_token_probs, slot.generated_token_probs.size()); + const size_t probs_stop_pos = + std::min(slot.n_sent_token_probs + to_send_toks.size(), slot.generated_token_probs.size()); + + std::vector probs_output; + if (probs_pos < probs_stop_pos) + { + probs_output = + std::vector(slot.generated_token_probs.begin() + probs_pos, + slot.generated_token_probs.begin() + probs_stop_pos); + } + slot.n_sent_token_probs = probs_stop_pos; + + res.data["completion_probabilities"] = probs_vector_to_json(ctx, probs_output); + } + + if (slot.oaicompat) + { + res.data["oaicompat_token_ctr"] = slot.n_decoded; + res.data["model"] = slot.oaicompat_model; + } + + queue_results.send(res); + } + + void send_final_response(const server_slot &slot) + { + server_task_result res; + res.id = slot.id_task; + res.id_multi = slot.id_multi; + res.error = false; + res.stop = true; + res.data = json{{"content", !slot.params.stream ? slot.generated_text : ""}, + {"id_slot", slot.id}, + {"stop", true}, + {"model", params.model_alias}, + {"tokens_predicted", slot.n_decoded}, + {"tokens_evaluated", slot.n_prompt_tokens}, + {"generation_settings", get_formated_generation(slot)}, + {"prompt", slot.prompt}, + {"truncated", slot.truncated}, + {"stopped_eos", slot.stopped_eos}, + {"stopped_word", slot.stopped_word}, + {"stopped_limit", slot.stopped_limit}, + {"stopping_word", slot.stopping_word}, + {"tokens_cached", slot.n_past}, + {"timings", slot.get_formated_timings()}}; + + if (slot.sparams.n_probs > 0) + { + std::vector probs; + if (!slot.params.stream && slot.stopped_word) + { + const std::vector stop_word_toks = llama_tokenize(ctx, slot.stopping_word, false); + + probs = std::vector(slot.generated_token_probs.begin(), + slot.generated_token_probs.end() - stop_word_toks.size()); + } + else + { + probs = std::vector(slot.generated_token_probs.begin(), + slot.generated_token_probs.end()); + } + + res.data["completion_probabilities"] = probs_vector_to_json(ctx, probs); + } + + if (slot.oaicompat) + { + res.data["oaicompat_token_ctr"] = slot.n_decoded; + res.data["model"] = slot.oaicompat_model; + } + + queue_results.send(res); + } + + void send_embedding(const server_slot &slot, const llama_batch &batch) + { + server_task_result res; + res.id = slot.id_task; + res.id_multi = slot.id_multi; + res.error = false; + res.stop = true; + + const int n_embd = llama_n_embd(model); + + std::vector embd_res(n_embd, 0.0f); + + for (int i = 0; i < batch.n_tokens; ++i) + { + if (!batch.logits[i] || batch.seq_id[i][0] != slot.id + 1) + { + continue; + } + + const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); + if (embd == NULL) + { + embd = llama_get_embeddings_ith(ctx, i); + } + + if (embd == NULL) + { + LOG_ERROR("failed to get embeddings", {{"token", batch.token[i]}, {"seq_id", batch.seq_id[i][0]}}); + + res.data = json{ + {"embedding", std::vector(n_embd, 0.0f)}, + }; + + continue; + } + + llama_embd_normalize(embd, embd_res.data(), n_embd); + + res.data = json{ + {"embedding", embd_res}, + }; + } + + queue_results.send(res); + } + + void request_completion(int id_task, int id_multi, json data, bool infill, bool embedding) + { + server_task task; + task.id = id_task; + task.id_multi = id_multi; + task.id_target = 0; + task.data = std::move(data); + task.infill = infill; + task.embedding = embedding; + task.type = SERVER_TASK_TYPE_COMPLETION; + + // when a completion task's prompt array is not a singleton, we split it into multiple requests + // otherwise, it's a single-prompt task, we actually queue it + // if there's numbers in the prompt array it will be treated as an array of tokens + if (task.data.count("prompt") != 0 && task.data.at("prompt").size() > 1) + { + bool numbers = false; + for (const auto &e : task.data.at("prompt")) + { + if (e.is_number()) + { + numbers = true; + break; + } + } + + // NOTE: split_multiprompt_task() does not handle a mix of strings and numbers, + // it will completely stall the server. I don't know where the bug for this is. + // + // if there are numbers, it needs to be treated like a single prompt, + // queue_tasks handles a mix of strings and numbers just fine. + if (numbers) + { + queue_tasks.post(task); + } + else + { + split_multiprompt_task(id_task, task); + } + } + else + { + queue_tasks.post(task); + } + } + + void request_cancel(int id_task) + { + server_task task; + task.type = SERVER_TASK_TYPE_CANCEL; + task.id_target = id_task; + + queue_tasks.post(task); + } + + void split_multiprompt_task(int id_multi, const server_task &multiprompt_task) + { + const int prompt_count = multiprompt_task.data.at("prompt").size(); + if (prompt_count <= 1) + { + send_error(multiprompt_task, "error while handling multiple prompts"); + return; + } + + // generate all the ID for subtask + std::vector subtask_ids(prompt_count); + for (int i = 0; i < prompt_count; i++) + { + subtask_ids[i] = queue_tasks.get_new_id(); + } + + // queue up the multitask so we can track its subtask progression + queue_tasks.add_multitask(id_multi, subtask_ids); + + // add subtasks + for (int i = 0; i < prompt_count; i++) + { + json subtask_data = multiprompt_task.data; + subtask_data["prompt"] = subtask_data["prompt"][i]; + + // subtasks inherit everything else (infill mode, embedding mode, etc.) + request_completion(subtask_ids[i], id_multi, subtask_data, multiprompt_task.infill, + multiprompt_task.embedding); + } + } + + void process_single_task(const server_task &task) + { + switch (task.type) + { + case SERVER_TASK_TYPE_COMPLETION: { + server_slot *slot = get_slot(json_value(task.data, "id_slot", -1)); + if (slot == nullptr) + { + // if no slot is available, we defer this task for processing later + LOG_VERBOSE("no slot is available", {{"id_task", task.id}}); + queue_tasks.defer(task); + break; + } + + if (task.data.contains("system_prompt")) + { + system_prompt_set(task.data["system_prompt"]); + + for (server_slot &slot : slots) + { + slot.n_past = 0; + slot.n_past_se = 0; + } + } + + slot->reset(); + + slot->id_task = task.id; + slot->id_multi = task.id_multi; + slot->infill = task.infill; + slot->embedding = task.embedding; + + if (!launch_slot_with_task(*slot, task)) + { + LOG_ERROR("error while launching slot", task.data); + break; + } + } + break; + case SERVER_TASK_TYPE_CANCEL: { + // release slot linked with the task id + for (auto &slot : slots) + { + if (slot.id_task == task.id_target) + { + slot.release(); + break; + } + } + } + break; + case SERVER_TASK_TYPE_NEXT_RESPONSE: { + // do nothing + } + break; + case SERVER_TASK_TYPE_METRICS: { + json slots_data = json::array(); + + int n_idle_slots = 0; + int n_processing_slots = 0; + + for (server_slot &slot : slots) + { + json slot_data = get_formated_generation(slot); + slot_data["id"] = slot.id; + slot_data["id_task"] = slot.id_task; + slot_data["state"] = slot.state; + slot_data["prompt"] = slot.prompt; + slot_data["next_token"] = { + {"has_next_token", slot.has_next_token}, {"n_remain", slot.n_remaining}, + {"n_decoded", slot.n_decoded}, {"stopped_eos", slot.stopped_eos}, + {"stopped_word", slot.stopped_word}, {"stopped_limit", slot.stopped_limit}, + {"stopping_word", slot.stopping_word}, + }; + + if (slot_data["state"] == SLOT_STATE_IDLE) + { + n_idle_slots++; + } + else + { + n_processing_slots++; + } + + slots_data.push_back(slot_data); + } + LOG_INFO( + "slot data", + {{"id_task", task.id}, {"n_idle_slots", n_idle_slots}, {"n_processing_slots", n_processing_slots}}); + + LOG_VERBOSE("slot data", {{"id_task", task.id}, + {"n_idle_slots", n_idle_slots}, + {"n_processing_slots", n_processing_slots}, + {"slots", slots_data}}); + + server_task_result res; + res.id = task.id; + res.id_multi = task.id_multi; + res.stop = true; + res.error = false; + res.data = { + {"idle", n_idle_slots}, + {"processing", n_processing_slots}, + {"deferred", queue_tasks.queue_tasks_deferred.size()}, + {"t_start", metrics.t_start}, + + {"n_prompt_tokens_processed_total", metrics.n_prompt_tokens_processed_total}, + {"t_tokens_generation_total", metrics.t_tokens_generation_total}, + {"n_tokens_predicted_total", metrics.n_tokens_predicted_total}, + {"t_prompt_processing_total", metrics.t_prompt_processing_total}, + + {"n_prompt_tokens_processed", metrics.n_prompt_tokens_processed}, + {"t_prompt_processing", metrics.t_prompt_processing}, + {"n_tokens_predicted", metrics.n_tokens_predicted}, + {"t_tokens_generation", metrics.t_tokens_generation}, + + {"kv_cache_tokens_count", llama_get_kv_cache_token_count(ctx)}, + {"kv_cache_used_cells", llama_get_kv_cache_used_cells(ctx)}, + + {"slots", slots_data}, + }; + + if (json_value(task.data, "reset_bucket", false)) + { + metrics.reset_bucket(); + } + queue_results.send(res); + } + break; + } + } + + void on_finish_multitask(const server_task_multi &multitask) + { + // all subtasks done == multitask is done + server_task_result result; + result.id = multitask.id; + result.stop = true; + result.error = false; + + // collect json results into one json result + std::vector result_jsons; + for (const auto &subres : multitask.results) + { + result_jsons.push_back(subres.data); + result.error = result.error && subres.error; + } + result.data = json{{"results", result_jsons}}; + + queue_results.send(result); + } + + void update_slots() + { + if (system_need_update) + { + system_prompt_update(); + } + + // release slots + for (auto &slot : slots) + { + if (slot.command == SLOT_COMMAND_RELEASE) + { + slot.state = SLOT_STATE_IDLE; + slot.command = SLOT_COMMAND_NONE; + slot.t_last_used = ggml_time_us(); + + LOG_INFO("slot released", {{"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_ctx", n_ctx}, + {"n_past", slot.n_past}, + {"n_system_tokens", system_tokens.size()}, + {"n_cache_tokens", slot.cache_tokens.size()}, + {"truncated", slot.truncated}}); + + queue_tasks.notify_slot_changed(); + } + } + + // check if all slots are idle + { + bool all_idle = true; + + for (auto &slot : slots) + { + if (slot.state != SLOT_STATE_IDLE || slot.command != SLOT_COMMAND_NONE) + { + all_idle = false; + break; + } + } + + if (all_idle) + { + LOG_INFO("all slots are idle", {}); + if (system_prompt.empty() && clean_kv_cache) + { + kv_cache_clear(); + } + + return; + } + } + + { + LOG_VERBOSE("posting NEXT_RESPONSE", {}); + + server_task task; + task.type = SERVER_TASK_TYPE_NEXT_RESPONSE; + task.id_target = -1; + + queue_tasks.post(task); + } + + // apply context-shift if needed + // TODO: simplify and improve + for (server_slot &slot : slots) + { + if (slot.ga_n == 1) + { + if (slot.is_processing() && (int)system_tokens.size() + slot.n_past >= slot.n_ctx - 1) + { + // Shift context + const int n_keep = slot.params.n_keep + add_bos_token; + const int n_left = (int)system_tokens.size() + slot.n_past - n_keep; + const int n_discard = slot.params.n_discard ? slot.params.n_discard : (n_left / 2); + + LOG_INFO("slot context shift", {{"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_keep", n_keep}, + {"n_left", n_left}, + {"n_discard", n_discard}, + {"n_ctx", n_ctx}, + {"n_past", slot.n_past}, + {"n_system_tokens", system_tokens.size()}, + {"n_cache_tokens", slot.cache_tokens.size()}}); + + llama_kv_cache_seq_rm(ctx, slot.id + 1, n_keep, n_keep + n_discard); + llama_kv_cache_seq_add(ctx, slot.id + 1, n_keep + n_discard, system_tokens.size() + slot.n_past, + -n_discard); + + if (slot.params.cache_prompt) + { + for (size_t i = n_keep + n_discard; i < slot.cache_tokens.size(); i++) + { + slot.cache_tokens[i - n_discard] = slot.cache_tokens[i]; + } + + slot.cache_tokens.resize(slot.cache_tokens.size() - n_discard); + } + + slot.n_past -= n_discard; + + slot.truncated = true; + } + } + } + + // start populating the batch for this iteration + llama_batch_clear(batch); + + // frist, add sampled tokens from any ongoing sequences + for (auto &slot : slots) + { + if (slot.state == SLOT_STATE_IDLE) + { + continue; + } + + slot.i_batch = batch.n_tokens; + + const int32_t slot_npast = slot.n_past_se > 0 ? slot.n_past_se : slot.n_past; + + // TODO: we always have to take into account the "system_tokens" + // this is not great and needs to be improved somehow + llama_batch_add(batch, slot.sampled, system_tokens.size() + slot_npast, {slot.id + 1}, true); + + slot.n_past += 1; + + if (slot.params.cache_prompt) + { + slot.cache_tokens.push_back(slot.sampled); + } + + LOG_VERBOSE("slot decode token", {{"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_ctx", n_ctx}, + {"n_past", slot.n_past}, + {"n_system_tokens", system_tokens.size()}, + {"n_cache_tokens", slot.cache_tokens.size()}, + {"truncated", slot.truncated}}); + } + + // process in chunks of params.n_batch + int32_t n_batch = llama_n_batch(ctx); + int32_t n_ubatch = llama_n_ubatch(ctx); + + // next, batch any pending prompts without exceeding n_batch + if (params.cont_batching || batch.n_tokens == 0) + { + for (auto &slot : slots) + { + // this slot still has a prompt to be processed + if (slot.state == SLOT_STATE_IDLE && slot.command == SLOT_COMMAND_LOAD_PROMPT) + { + auto &prompt_tokens = slot.prompt_tokens; + + // we haven't tokenized the prompt yet - do it now: + if (prompt_tokens.empty()) + { + LOG_VERBOSE("tokenizing prompt", {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + + slot.t_start_process_prompt = ggml_time_us(); + slot.t_start_generation = 0; + + if (slot.infill) + { + bool suff_rm_leading_spc = true; + if (params.input_suffix.find_first_of(' ') == 0 && params.input_suffix.size() > 1) + { + params.input_suffix.erase(0, 1); + suff_rm_leading_spc = false; + } + + auto prefix_tokens = tokenize(slot.params.input_prefix, false); + auto suffix_tokens = tokenize(slot.params.input_suffix, false); + + const int space_token = 29871; // TODO: this should not be hardcoded + if (suff_rm_leading_spc && !suffix_tokens.empty() && suffix_tokens[0] == space_token) + { + suffix_tokens.erase(suffix_tokens.begin()); + } + + prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); + prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(model)); // always add BOS + prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(model)); + prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); + prefix_tokens.push_back(llama_token_middle(model)); + prompt_tokens = prefix_tokens; + } + else + { + prompt_tokens = + tokenize(slot.prompt, system_prompt.empty() && + add_bos_token); // add BOS if there isn't system prompt + } + + slot.n_past = 0; + slot.n_prompt_tokens = prompt_tokens.size(); + + LOG_VERBOSE("prompt tokenized", { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_ctx", slot.n_ctx}, + {"n_keep", slot.params.n_keep}, + {"n_prompt_tokens", slot.n_prompt_tokens}, + {"prompt_tokens", tokens_to_str(ctx, prompt_tokens.cbegin(), + prompt_tokens.cend())}, + }); + + // empty prompt passed -> release the slot and send empty response + if (prompt_tokens.empty()) + { + LOG_INFO("empty prompt - releasing slot", + {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + + slot.state = SLOT_STATE_PROCESSING; + slot.command = SLOT_COMMAND_NONE; + slot.release(); + slot.print_timings(); + send_final_response(slot); + continue; + } + + if (slot.embedding) + { + // this prompt is too large to process - discard it + if (slot.n_prompt_tokens > n_ubatch) + { + slot.state = SLOT_STATE_PROCESSING; + slot.command = SLOT_COMMAND_NONE; + slot.release(); + slot.print_timings(); + send_final_response(slot); + continue; + } + } + else + { + if (slot.params.n_keep < 0) + { + slot.params.n_keep = slot.n_prompt_tokens; + } + slot.params.n_keep = std::min(slot.n_ctx - 4, slot.params.n_keep); + + // if input prompt is too big, truncate it (if group attention self-extend is disabled) + if (slot.ga_n == 1 && slot.n_prompt_tokens >= slot.n_ctx) + { + const int n_left = slot.n_ctx - slot.params.n_keep; + + const int n_block_size = n_left / 2; + const int erased_blocks = + (slot.n_prompt_tokens - slot.params.n_keep - n_block_size) / n_block_size; + + std::vector new_tokens(prompt_tokens.begin(), + prompt_tokens.begin() + slot.params.n_keep); + + new_tokens.insert(new_tokens.end(), + prompt_tokens.begin() + slot.params.n_keep + + erased_blocks * n_block_size, + prompt_tokens.end()); + + prompt_tokens = std::move(new_tokens); + + slot.truncated = true; + slot.n_prompt_tokens = prompt_tokens.size(); + + LOG_VERBOSE("input truncated", + { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + {"n_ctx", slot.n_ctx}, + {"n_keep", slot.params.n_keep}, + {"n_left", n_left}, + {"n_prompt_tokens", slot.n_prompt_tokens}, + {"prompt_tokens", + tokens_to_str(ctx, prompt_tokens.cbegin(), prompt_tokens.cend())}, + }); + + GGML_ASSERT(slot.n_prompt_tokens < slot.n_ctx); + } + + llama_sampling_reset(slot.ctx_sampling); + + if (!slot.params.cache_prompt) + { + slot.n_past_se = 0; + slot.ga_i = 0; + } + else + { + GGML_ASSERT(slot.ga_n == 1); + + // reuse any previously computed tokens that are common with the new prompt + slot.n_past = common_part(slot.cache_tokens, prompt_tokens); + + // push the prompt into the sampling context (do not apply grammar) + for (int i = 0; i < slot.n_past; ++i) + { + llama_sampling_accept(slot.ctx_sampling, ctx, slot.cache_tokens[i], false); + } + } + } + + if (slot.n_past == slot.n_prompt_tokens && slot.n_past > 0) + { + // we have to evaluate at least 1 token to generate logits. + LOG_INFO("we have to evaluate at least 1 token to generate logits", + {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + + slot.n_past--; + if (slot.ga_i > 0) + { + slot.n_past_se--; + } + } + + slot.n_prompt_tokens_processed = 0; + } + + if (slot.embedding) + { + // cannot fit the prompt in the current batch - will try next iter + if (batch.n_tokens + slot.n_prompt_tokens > n_batch) + { + continue; + } + } + + // keep only the common part + int p0 = (int)system_tokens.size() + slot.n_past; + if (!llama_kv_cache_seq_rm(ctx, slot.id + 1, p0, -1)) + { + // could not partially delete (likely using a non-Transformer model) + llama_kv_cache_seq_rm(ctx, slot.id + 1, -1, -1); + + p0 = (int)system_tokens.size(); + if (p0 != 0) + { + // copy over the system prompt when there is one + llama_kv_cache_seq_cp(ctx, 0, slot.id + 1, -1, -1); + } + + // there is no common part left (except for the system prompt) + slot.n_past = 0; + slot.n_past_se = 0; + slot.ga_i = 0; + // TODO: is the system prompt ever in the sampling context? + llama_sampling_reset(slot.ctx_sampling); + } + + // remove the non-common part from the cache + slot.cache_tokens.resize(slot.n_past); + + LOG_INFO("kv cache rm [p0, end)", {{"id_slot", slot.id}, {"id_task", slot.id_task}, {"p0", p0}}); + + int32_t slot_npast = slot.n_past_se > 0 ? slot.n_past_se : slot.n_past; + + int32_t ga_i = slot.ga_i; + int32_t ga_n = slot.ga_n; + int32_t ga_w = slot.ga_w; + + // add prompt tokens for processing in the current batch + // TODO: the self-extend stuff here is a mess - simplify and/or abstract it somehow + for (; slot.n_past < slot.n_prompt_tokens && batch.n_tokens < n_batch; ++slot.n_past) + { + if (slot.ga_n != 1) + { + while (slot_npast >= ga_i + ga_w) + { + const int bd = (ga_w / ga_n) * (ga_n - 1); + slot_npast -= bd; + ga_i += ga_w / ga_n; + } + } + + llama_batch_add(batch, prompt_tokens[slot.n_past], system_tokens.size() + slot_npast, + {slot.id + 1}, false); + + if (slot.params.cache_prompt) + { + slot.cache_tokens.push_back(prompt_tokens[slot.n_past]); + } + + slot.n_prompt_tokens_processed++; + slot_npast++; + } + + LOG_VERBOSE("prompt processing progress", + { + {"id_slot", slot.id}, + {"n_past", slot.n_past}, + {"n_ctx", n_ctx}, + {"n_tokens", batch.n_tokens}, + {"progress", (float)slot.n_prompt_tokens_processed / slot.n_prompt_tokens}, + }); + + // entire prompt has been processed - start decoding new tokens + if (slot.n_past == slot.n_prompt_tokens) + { + slot.state = SLOT_STATE_PROCESSING; + slot.command = SLOT_COMMAND_NONE; + + GGML_ASSERT(batch.n_tokens > 0); + + // extract the logits only for the last token + batch.logits[batch.n_tokens - 1] = true; + + slot.n_decoded = 0; + slot.i_batch = batch.n_tokens - 1; + + LOG_VERBOSE("prompt done", { + {"id_slot", slot.id}, + {"n_past", slot.n_past}, + {"n_ctx", n_ctx}, + {"n_tokens", batch.n_tokens}, + }); + } + } + + if (batch.n_tokens >= n_batch) + { + break; + } + } + } + + if (batch.n_tokens == 0) + { + LOG_VERBOSE("no tokens to decode", {}); + return; + } + + LOG_VERBOSE("decoding batch", { + {"n_tokens", batch.n_tokens}, + }); + + // process the created batch of tokens + for (int32_t i = 0; i < (int32_t)batch.n_tokens; i += n_batch) + { + const int32_t n_tokens = std::min(n_batch, batch.n_tokens - i); + + for (auto &slot : slots) + { + if (slot.ga_n != 1) + { + // context extension via Self-Extend + // TODO: simplify and/or abstract this + while (slot.n_past_se >= slot.ga_i + slot.ga_w) + { + const int ib = (slot.ga_n * slot.ga_i) / slot.ga_w; + const int bd = (slot.ga_w / slot.ga_n) * (slot.ga_n - 1); + const int dd = (slot.ga_w / slot.ga_n) - ib * bd - slot.ga_w; + + LOG_TEE("\n"); + LOG_TEE("shift: [%6d, %6d] + %6d -> [%6d, %6d]\n", slot.ga_i, slot.n_past_se, ib * bd, + slot.ga_i + ib * bd, slot.n_past_se + ib * bd); + LOG_TEE("div: [%6d, %6d] / %6d -> [%6d, %6d]\n", slot.ga_i + ib * bd, + slot.ga_i + ib * bd + slot.ga_w, slot.ga_n, (slot.ga_i + ib * bd) / slot.ga_n, + (slot.ga_i + ib * bd + slot.ga_w) / slot.ga_n); + LOG_TEE("shift: [%6d, %6d] + %6d -> [%6d, %6d]\n", slot.ga_i + ib * bd + slot.ga_w, + slot.n_past_se + ib * bd, dd, slot.ga_i + ib * bd + slot.ga_w + dd, + slot.n_past_se + ib * bd + dd); + + llama_kv_cache_seq_add(ctx, slot.id + 1, slot.ga_i, slot.n_past_se, ib * bd); + llama_kv_cache_seq_div(ctx, slot.id + 1, slot.ga_i + ib * bd, slot.ga_i + ib * bd + slot.ga_w, + slot.ga_n); + llama_kv_cache_seq_add(ctx, slot.id + 1, slot.ga_i + ib * bd + slot.ga_w, + slot.n_past_se + ib * bd, dd); + + slot.n_past_se -= bd; + + slot.ga_i += slot.ga_w / slot.ga_n; + + LOG_TEE("\nn_past_old = %d, n_past = %d, ga_i = %d\n\n", slot.n_past_se + bd, slot.n_past_se, + slot.ga_i); + } + + slot.n_past_se += n_tokens; + } + } + + llama_batch batch_view = { + n_tokens, + batch.token + i, + nullptr, + batch.pos + i, + batch.n_seq_id + i, + batch.seq_id + i, + batch.logits + i, + 0, + 0, + 0, // unused + }; + + const int ret = llama_decode(ctx, batch_view); + + if (ret != 0) + { + if (n_batch == 1 || ret < 0) + { + // if you get here, it means the KV cache is full - try increasing it via the context size + LOG_TEE("%s : failed to decode the batch, n_batch = %d, ret = %d\n", __func__, n_batch, ret); + for (auto &slot : slots) + { + slot.state = SLOT_STATE_PROCESSING; + slot.command = SLOT_COMMAND_NONE; + slot.release(); + send_error(slot, "Input prompt is too big compared to KV size. Please try increasing KV size."); + } + break; // break loop of n_batch + } + + LOG_TEE("%s : failed to find free space in the KV cache, retrying with smaller n_batch = %d\n", + __func__, n_batch / 2); + + // retry with half the batch size to try to find a free slot in the KV cache + n_batch /= 2; + i -= n_batch; + + continue; // continue loop of n_batch + } + + for (auto &slot : slots) + { + if (slot.state != SLOT_STATE_PROCESSING || slot.i_batch < (int)i || slot.i_batch >= (int)(i + n_tokens)) + { + continue; // continue loop of slots + } + + // prompt evaluated for embedding + if (slot.embedding) + { + send_embedding(slot, batch_view); + slot.release(); + slot.i_batch = -1; + continue; // continue loop of slots + } + + completion_token_output result; + const llama_token id = llama_sampling_sample(slot.ctx_sampling, ctx, NULL, slot.i_batch - i); + + llama_sampling_accept(slot.ctx_sampling, ctx, id, true); + + slot.n_decoded += 1; + if (slot.n_decoded == 1) + { + slot.t_start_generation = ggml_time_us(); + slot.t_prompt_processing = (slot.t_start_generation - slot.t_start_process_prompt) / 1e3; + metrics.on_prompt_eval(slot); + } + + llama_token_data_array cur_p = {slot.ctx_sampling->cur.data(), slot.ctx_sampling->cur.size(), false}; + result.tok = id; + + const int32_t n_probs = slot.sparams.n_probs; + if (slot.sparams.temp <= 0 && n_probs > 0) + { + // for llama_sample_token_greedy we need to sort candidates + llama_sample_softmax(ctx, &cur_p); + } + + for (size_t i = 0; i < std::min(cur_p.size, (size_t)n_probs); ++i) + { + result.probs.push_back({cur_p.data[i].id, cur_p.data[i].p}); + } + + if (!process_token(result, slot)) + { + slot.release(); + slot.print_timings(); + send_final_response(slot); + metrics.on_prediction(slot); + } + + slot.i_batch = -1; + } + } + + LOG_VERBOSE("run slots completed", {}); + } + + json model_meta() const + { + return json{ + {"vocab_type", llama_vocab_type(model)}, {"n_vocab", llama_n_vocab(model)}, + {"n_ctx_train", llama_n_ctx_train(model)}, {"n_embd", llama_n_embd(model)}, + {"n_params", llama_model_n_params(model)}, {"size", llama_model_size(model)}, + }; + } +}; diff --git a/src/main/cpp/utils.cpp b/src/main/cpp/utils.cpp new file mode 100644 index 00000000..d815bac3 --- /dev/null +++ b/src/main/cpp/utils.cpp @@ -0,0 +1,11 @@ +#pragma once + +#include "common.h" +#include "llama.h" + +#include "json.hpp" + +#include +#include +#include +#include From 071a4c311798916818bb657a22352b7a9b5559ad Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:22:23 +0200 Subject: [PATCH 132/384] Add numa strategy mirror --- src/main/java/de/kherud/llama/args/NumaStrategy.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/kherud/llama/args/NumaStrategy.java b/src/main/java/de/kherud/llama/args/NumaStrategy.java index ded2bc87..32bd7131 100644 --- a/src/main/java/de/kherud/llama/args/NumaStrategy.java +++ b/src/main/java/de/kherud/llama/args/NumaStrategy.java @@ -2,9 +2,10 @@ public enum NumaStrategy { - NONE, + DISABLED, DISTRIBUTE, ISOLATE, - NUMA_CTL + NUMA_CTL, + MIRROR } From d2a0910ac4753a155b6cbbe4fb4f31a9d813e504 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:22:52 +0200 Subject: [PATCH 133/384] Switch to json-based parameters --- .../llama/args/InferenceParameters.java | 491 +++++--------- .../de/kherud/llama/args/JsonParameters.java | 52 ++ .../de/kherud/llama/args/ModelParameters.java | 626 +++++++++--------- 3 files changed, 536 insertions(+), 633 deletions(-) create mode 100644 src/main/java/de/kherud/llama/args/JsonParameters.java diff --git a/src/main/java/de/kherud/llama/args/InferenceParameters.java b/src/main/java/de/kherud/llama/args/InferenceParameters.java index ec65b001..cf946078 100644 --- a/src/main/java/de/kherud/llama/args/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/args/InferenceParameters.java @@ -1,489 +1,318 @@ package de.kherud.llama.args; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.lang.annotation.Native; -import java.util.Collections; import java.util.Map; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import de.kherud.llama.LlamaModel; /** * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(String)} and * {@link LlamaModel#complete(String)}. */ -public final class InferenceParameters { - - @Native - private int nPredict = -1; // new tokens to predict - @Native - private boolean cachePrompt = false; - // number of tokens to keep from initial prompt - @Native - private int nKeep = 0; - @Native - private int nDiscard = 0; - private int minKeep = 0; - // if greater than 0, output the probabilities of top nProbs tokens. - @Native - private int nProbs = 0; - // logit bias for specific tokens - @Nullable - @Native - private Map logitBias = null; - // <= 0 to use vocab size - @Native - private int topK = 40; - // 1.0 = disabled - @Native - private float topP = 0.95f; - @Native - private float minP = 0.05f; - // 1.0 = disabled - @Native - private float tfsZ = 1.00f; - // 1.0 = disabled - @Native - private float typicalP = 1.00f; - // 1.0 = disabled - @Native - private float temperature = 0.80f; - private float dynamicTemperatureRange = 0.00f; - private float dynamicTemperatureExponent = 1.00f; - // 1.0 = disabled - @Native - private float repeatPenalty = 1.10f; - // last n tokens to penalize (0 = disable penalty, -1 = context size) - @Native - private int repeatLastN = 64; - // 0.0 = disabled - @Native - private float frequencyPenalty = 0.00f; - // 0.0 = disabled - @Native - private float presencePenalty = 0.00f; - // 0.0 = disabled - @Native - private boolean penalizeNl = false; - @Native - private boolean ignoreEos = false; - // 0 = disabled, 1 = mirostat, 2 = mirostat 2.0 - @Native - private MiroStat mirostat = MiroStat.DISABLED; - // target entropy - @Native - private float mirostatTau = 5.00f; - // learning rate - @Native - private float mirostatEta = 0.10f; - @Native - private boolean beamSearch = false; - @Native - private int nBeams = 2; - // optional BNF-like grammar to constrain sampling - @Nullable - @Native - private String grammar = null; - // strings upon seeing which more user input is prompted - @Nullable - @Native - private String[] stopStrings = null; - @Nullable - @Native - private String[] promptTokenPenalties = null; - @Native - private Sampler[] samplers = null; - @Native - private int seed = 42; - - /** - * Set the amount of new tokens to predict - */ - public InferenceParameters setNPredict(int nPredict) { - this.nPredict = nPredict; - return this; - } +public final class InferenceParameters extends JsonParameters { + + private static final String PARAM_CACHE_PROMPT = "cache_prompt"; + private static final String PARAM_N_PREDICT = "n_predict"; + private static final String PARAM_TOP_K = "top_k"; + private static final String PARAM_TOP_P = "top_p"; + private static final String PARAM_MIN_P = "min_p"; + private static final String PARAM_TFS_Z = "tfs_z"; + private static final String PARAM_TYPICAL_P = "typical_p"; + private static final String PARAM_TEMPERATURE = "temperature"; + private static final String PARAM_DYNATEMP_RANGE = "dynatemp_range"; + private static final String PARAM_DYNATEMP_EXPONENT = "dynatemp_exponent"; + private static final String PARAM_REPEAT_LAST_N = "repeat_last_n"; + private static final String PARAM_REPEAT_PENALTY = "repeat_penalty"; + private static final String PARAM_FREQUENCY_PENALTY = "frequency_penalty"; + private static final String PARAM_PRESENCE_PENALTY = "presence_penalty"; + private static final String PARAM_MIROSTAT = "mirostat"; + private static final String PARAM_MIROSTAT_TAU = "mirostat_tau"; + private static final String PARAM_MIROSTAT_ETA = "mirostat_eta"; + private static final String PARAM_PENALIZE_NL = "penalize_nl"; + private static final String PARAM_N_KEEP = "n_keep"; + private static final String PARAM_SEED = "seed"; + private static final String PARAM_N_PROBS = "n_probs"; + private static final String PARAM_MIN_KEEP = "min_keep"; + private static final String PARAM_GRAMMAR = "grammar"; + private static final String PARAM_PENALTY_PROMPT = "penalty_prompt"; + private static final String PARAM_IGNORE_EOS = "ignore_eos"; + private static final String PARAM_LOGIT_BIAS = "logit_bias"; + private static final String PARAM_STOP = "stop"; + private static final String PARAM_SAMPLERS = "samplers"; /** - * + * Whether to remember the prompt to avoid reprocessing it */ public InferenceParameters setCachePrompt(boolean cachePrompt) { - this.cachePrompt = cachePrompt; + parameters.put(PARAM_CACHE_PROMPT, String.valueOf(cachePrompt)); return this; } /** - * + * Set the number of tokens to predict (default: -1, -1 = infinity, -2 = until context filled) */ - public InferenceParameters setNKeep(int nKeep) { - this.nKeep = nKeep; - return this; - } - - /** - * - */ - public InferenceParameters setNDiscard(int nDiscard) { - this.nDiscard = nDiscard; - return this; - } - - /** - * - */ - public InferenceParameters setMinKeep(int minKeep) { - this.minKeep = minKeep; - return this; - } - - /** - * - */ - public InferenceParameters setNProbs(int nProbs) { - this.nProbs = nProbs; + public InferenceParameters setNPredict(int nPredict) { + parameters.put(PARAM_N_PREDICT, String.valueOf(nPredict)); return this; } /** - * - */ - public InferenceParameters setLogitBias(@NotNull Map logitBias) { - this.logitBias = Collections.unmodifiableMap(logitBias); - return this; - } - - /** - * + * Set top-k sampling (default: 40, 0 = disabled) */ public InferenceParameters setTopK(int topK) { - this.topK = topK; + parameters.put(PARAM_TOP_K, String.valueOf(topK)); return this; } /** - * + * Set top-p sampling (default: 0.9, 1.0 = disabled) */ public InferenceParameters setTopP(float topP) { - this.topP = topP; + parameters.put(PARAM_TOP_P, String.valueOf(topP)); return this; } /** - * + * Set min-p sampling (default: 0.1, 0.0 = disabled) */ public InferenceParameters setMinP(float minP) { - this.minP = minP; + parameters.put(PARAM_MIN_P, String.valueOf(minP)); return this; } /** - * + * Set tail free sampling, parameter z (default: 1.0, 1.0 = disabled) */ public InferenceParameters setTfsZ(float tfsZ) { - this.tfsZ = tfsZ; + parameters.put(PARAM_TFS_Z, String.valueOf(tfsZ)); return this; } /** - * + * Set locally typical sampling, parameter p (default: 1.0, 1.0 = disabled) */ public InferenceParameters setTypicalP(float typicalP) { - this.typicalP = typicalP; + parameters.put(PARAM_TYPICAL_P, String.valueOf(typicalP)); return this; } /** - * + * Set the temperature (default: 0.8) */ public InferenceParameters setTemperature(float temperature) { - this.temperature = temperature; + parameters.put(PARAM_TEMPERATURE, String.valueOf(temperature)); return this; } /** - * + * Set the dynamic temperature range (default: 0.0, 0.0 = disabled) */ - public InferenceParameters setDynamicTemperatureRange(float dynamicTemperatureRange) { - this.dynamicTemperatureRange = dynamicTemperatureRange; + public InferenceParameters setDynamicTemperatureRange(float dynatempRange) { + parameters.put(PARAM_DYNATEMP_RANGE, String.valueOf(dynatempRange)); return this; } /** - * + * Set the dynamic temperature exponent (default: 1.0) */ - public InferenceParameters setDynamicTemperatureExponent(float dynamicTemperatureExponent) { - this.dynamicTemperatureExponent = dynamicTemperatureExponent; + public InferenceParameters setDynamicTemperatureExponent(float dynatempExponent) { + parameters.put(PARAM_DYNATEMP_EXPONENT, String.valueOf(dynatempExponent)); return this; } /** - * + * Set the last n tokens to consider for penalties (default: 64, 0 = disabled, -1 = ctx_size) */ - public InferenceParameters setRepeatPenalty(float repeatPenalty) { - this.repeatPenalty = repeatPenalty; + public InferenceParameters setRepeatLastN(int repeatLastN) { + parameters.put(PARAM_REPEAT_LAST_N, String.valueOf(repeatLastN)); return this; } /** - * + * Set the penalty of repeated sequences of tokens (default: 1.0, 1.0 = disabled) */ - public InferenceParameters setRepeatLastN(int repeatLastN) { - this.repeatLastN = repeatLastN; + public InferenceParameters setRepeatPenalty(float repeatPenalty) { + parameters.put(PARAM_REPEAT_PENALTY, String.valueOf(repeatPenalty)); return this; } /** - * + * Set the repetition alpha frequency penalty (default: 0.0, 0.0 = disabled) */ public InferenceParameters setFrequencyPenalty(float frequencyPenalty) { - this.frequencyPenalty = frequencyPenalty; + parameters.put(PARAM_FREQUENCY_PENALTY, String.valueOf(frequencyPenalty)); return this; } /** - * + * Set the repetition alpha presence penalty (default: 0.0, 0.0 = disabled) */ public InferenceParameters setPresencePenalty(float presencePenalty) { - this.presencePenalty = presencePenalty; + parameters.put(PARAM_PRESENCE_PENALTY, String.valueOf(presencePenalty)); return this; } /** - * + * Set MiroStat sampling strategies. */ - public InferenceParameters setPenalizeNl(boolean penalizeNl) { - this.penalizeNl = penalizeNl; + public InferenceParameters setMiroStat(MiroStat mirostat) { + parameters.put(PARAM_MIROSTAT, String.valueOf(mirostat.ordinal())); return this; } /** - * + * Set the MiroStat target entropy, parameter tau (default: 5.0) */ - public InferenceParameters setIgnoreEos(boolean ignoreEos) { - this.ignoreEos = ignoreEos; + public InferenceParameters setMiroStatTau(float mirostatTau) { + parameters.put(PARAM_MIROSTAT_TAU, String.valueOf(mirostatTau)); return this; } /** - * + * Set the MiroStat learning rate, parameter eta (default: 0.1) */ - public InferenceParameters setMirostat(MiroStat mirostat) { - this.mirostat = mirostat; + public InferenceParameters setMiroStatEta(float mirostatEta) { + parameters.put(PARAM_MIROSTAT_ETA, String.valueOf(mirostatEta)); return this; } /** - * + * Whether to penalize newline tokens */ - public InferenceParameters setMirostatTau(float mirostatTau) { - this.mirostatTau = mirostatTau; + public InferenceParameters setPenalizeNl(boolean penalizeNl) { + parameters.put(PARAM_PENALIZE_NL, String.valueOf(penalizeNl)); return this; } /** - * + * Set the number of tokens to keep from the initial prompt (default: 0, -1 = all) */ - public InferenceParameters setMirostatEta(float mirostatEta) { - this.mirostatEta = mirostatEta; + public InferenceParameters setNKeep(int nKeep) { + parameters.put(PARAM_N_KEEP, String.valueOf(nKeep)); return this; } /** - * + * Set the RNG seed (default: -1, use random seed for < 0) */ - public InferenceParameters setBeamSearch(boolean beamSearch) { - this.beamSearch = beamSearch; + public InferenceParameters setSeed(int seed) { + parameters.put(PARAM_SEED, String.valueOf(seed)); return this; } /** - * + * Set the amount top tokens probabilities to output if greater than 0. */ - public InferenceParameters setNBeams(int nBeams) { - this.nBeams = nBeams; + public InferenceParameters setNProbs(int nProbs) { + parameters.put(PARAM_N_PROBS, String.valueOf(nProbs)); return this; } - // default charset usage for Java backwards compatibility - @SuppressWarnings("ImplicitDefaultCharsetUsage") - public InferenceParameters setGrammar(@NotNull File file) throws IOException { - StringBuilder grammarBuilder = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new FileReader(file))) { - String currentLine; - while ((currentLine = br.readLine()) != null) { - grammarBuilder.append(currentLine).append("\n"); - } - } - return setGrammar(grammarBuilder.toString()); + /** + * Set the amount of tokens the samplers should return at least (0 = disabled) + */ + public InferenceParameters setMinKeep(int minKeep) { + parameters.put(PARAM_MIN_KEEP, String.valueOf(minKeep)); + return this; } /** - * + * Set BNF-like grammar to constrain generations (see samples in grammars/ dir) */ - public InferenceParameters setGrammar(@Nullable String grammar) { - this.grammar = grammar; + public InferenceParameters setGrammar(String grammar) { + parameters.put(PARAM_GRAMMAR, toJsonString(grammar)); return this; } /** * */ - public InferenceParameters setStopStrings(@NotNull String... stopStrings) { - this.stopStrings = stopStrings; + public InferenceParameters setPenaltyPrompt(String penaltyPrompt) { + parameters.put(PARAM_PENALTY_PROMPT, toJsonString(penaltyPrompt)); return this; } /** * */ - public InferenceParameters setPromptTokenPenalties(@NotNull String... promptTokenPenalties) { - this.promptTokenPenalties = promptTokenPenalties; + public InferenceParameters setIgnoreEos(boolean ignoreEos) { + parameters.put(PARAM_IGNORE_EOS, String.valueOf(ignoreEos)); return this; } /** * */ - public InferenceParameters setSamplers(@NotNull Sampler... samplers) { - this.samplers = samplers; + public InferenceParameters setLogitBias(Map logitBias) { + if (!logitBias.isEmpty()) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + int i = 0; + for (Map.Entry entry : logitBias.entrySet()) { + Integer key = entry.getKey(); + Float value = entry.getValue(); + builder.append("[") + .append(key) + .append(", ") + .append(value) + .append("]"); + if (i++ < logitBias.size()) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_LOGIT_BIAS, builder.toString()); + } return this; } /** * */ - public InferenceParameters setSeed(int seed) { - this.seed = seed; + public InferenceParameters setStopStrings(String... stopStrings) { + if (stopStrings.length > 0) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < stopStrings.length; i++) { + builder.append(toJsonString(stopStrings[i])); + if (i < stopStrings.length - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_STOP, builder.toString()); + } return this; } - public int getNPredict() { - return nPredict; - } - - public boolean isCachePrompt() { - return cachePrompt; - } - - public int getNKeep() { - return nKeep; - } - - public int getMinKeep() { - return minKeep; - } - - public int getNDiscard() { - return nDiscard; - } - - public int getNProbs() { - return nProbs; - } - - public @Nullable Map getLogitBias() { - return logitBias; - } - - public int getTopK() { - return topK; - } - - public float getTopP() { - return topP; - } - - public float getMinP() { - return minP; - } - - public float getTfsZ() { - return tfsZ; - } - - public float getTypicalP() { - return typicalP; - } - - public float getTemperature() { - return temperature; - } - - public float getDynamicTemperatureRange() { - return dynamicTemperatureRange; - } - - public float getDynamicTemperatureExponent() { - return dynamicTemperatureExponent; - } - - public float getRepeatPenalty() { - return repeatPenalty; - } - - public int getRepeatLastN() { - return repeatLastN; - } - - public float getFrequencyPenalty() { - return frequencyPenalty; - } - - public float getPresencePenalty() { - return presencePenalty; - } - - public boolean isPenalizeNl() { - return penalizeNl; - } - - public boolean isIgnoreEos() { - return ignoreEos; - } - - public MiroStat getMirostat() { - return mirostat; - } - - public float getMirostatTau() { - return mirostatTau; - } - - public float getMirostatEta() { - return mirostatEta; - } - - public boolean isBeamSearch() { - return beamSearch; - } - - public int getNBeams() { - return nBeams; - } - - public @Nullable String getGrammar() { - return grammar; - } - - public @Nullable String[] getStopStrings() { - return stopStrings; - } - - public @Nullable String[] getPromptTokenPenalties() { - return promptTokenPenalties; - } - - public @Nullable Sampler[] getSamplers() { - return samplers; - } - - public int getSeed() { - return seed; + /** + * + */ + public InferenceParameters setSamplers(Sampler... samplers) { + if (samplers.length > 0) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < samplers.length; i++) { + switch (samplers[i]) { + case TOP_K: + break; + case TFS_Z: + break; + case TYPICAL_P: + break; + case TOP_P: + break; + case MIN_P: + break; + case TEMPERATURE: + break; + } + if (i < samplers.length - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_SAMPLERS, builder.toString()); + } + return this; } - } diff --git a/src/main/java/de/kherud/llama/args/JsonParameters.java b/src/main/java/de/kherud/llama/args/JsonParameters.java new file mode 100644 index 00000000..35c71a0c --- /dev/null +++ b/src/main/java/de/kherud/llama/args/JsonParameters.java @@ -0,0 +1,52 @@ +package de.kherud.llama.args; + +import java.util.HashMap; +import java.util.Map; + +/** + * The Java library re-uses most of the llama.cpp server code, which mostly works with JSONs. Thus, the complexity and + * maintainability is much lower if we work with JSONs. This class provides a simple abstraction to easily create + * JSON object strings by filling a Map<String, String> with key value pairs. + */ +abstract class JsonParameters { + + // We save parameters directly as a String map here, to re-use as much as possible of the (json-based) C++ code. + // The JNI code for a proper Java-typed data object is comparatively too complex and hard to maintain. + final Map parameters = new HashMap<>(); + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("{\n"); + int i = 0; + for (Map.Entry entry : parameters.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + builder.append("\t\"") + .append(key) + .append("\": ") + .append(value); + if (i++ < parameters.size() - 1) { + builder.append(","); + } + builder.append("\n"); + } + builder.append("}"); + return builder.toString(); + } + + String toJsonString(String text) { + if (text == null) return null; + StringBuilder builder = new StringBuilder((text.length()) + 2); + builder.append('"'); + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (c == '"' || c == '\\') { + builder.append('\\'); + } + builder.append(c); + } + builder.append('"'); + return builder.toString(); + } +} diff --git a/src/main/java/de/kherud/llama/args/ModelParameters.java b/src/main/java/de/kherud/llama/args/ModelParameters.java index 2ed70724..3c4948bb 100644 --- a/src/main/java/de/kherud/llama/args/ModelParameters.java +++ b/src/main/java/de/kherud/llama/args/ModelParameters.java @@ -1,211 +1,186 @@ package de.kherud.llama.args; -import java.lang.annotation.Native; +import java.util.Map; import de.kherud.llama.LlamaModel; -/** +/*** * Parameters used for initializing a {@link LlamaModel}. */ -public final class ModelParameters { - - @Native - private int seed = -1; // RNG seed - @Native - private int nThreads = Runtime.getRuntime().availableProcessors(); - @Native - private int nThreadsBatch = -1; // number of threads to use for batch processing (-1 = use n_threads) - @Native - private String modelFilePath; // model path - @Native - private String modelUrl; // model url to download - @Native - private String huggingFaceRepository; // HF repo - @Native - private String huggingFaceFile; // HF file - @Native - private String modelAlias; // model alias - @Native - private String systemPromptFile; - @Native - private int nCtx = 512; // context size - @Native - private int nBatch = 2048; // logical batch size for prompt processing (must be >=32 to use BLAS) - @Native - private int nUBatch = 512; // physical batch size for prompt processing (must be >=32 to use BLAS) - @Native - private int nParallel = 1; // number of parallel sequences to decode - @Native - private int nPredict = -1; // new tokens to predict - @Native - private GpuSplitMode gpuSplitMode = GpuSplitMode.LAYER; // how to split the model across GPUs - @Native - private int nGpuLayers = -1; // number of layers to store in VRAM (-1 - use default) - @Native - private int mainGpu = 0; // the GPU that is used for scratch and small tensors - @Native - private float[] tensorSplit = null; // // how split tensors should be distributed across GPUs - @Native - private RopeScalingType ropeScalingType = RopeScalingType.UNSPECIFIED; - @Native - private float ropeFreqBase = 0f; // RoPE base frequency - @Native - private float ropeFreqScale = 0f; // RoPE frequency scaling factor - @Native - private float yarnExtFactor = -1.0f; - @Native - private float yarnAttnFactor = 1.0f; - @Native - private float yarnBetaFast = 32.0f; - @Native - private float yarnBetaSlow = 1.0f; - @Native - private PoolingType poolingType = PoolingType.UNSPECIFIED; // pooling type for embeddings - @Native - private float defragmentationThreshold = -1.0f; // KV cache defragmentation threshold - @Native - private int groupAttnN = 1; - @Native - private int groupAttnW = 512; - @Native - private boolean useMmap = true; // use mmap if possible - @Native - private boolean useMlock = false; // force system to keep model in RAM - @Native - private boolean noKVOffload = false; - @Native - private boolean embedding = false; // embedding mode - @Native - private boolean continuousBatching = true; // insert new sequences for decoding on-the-fly - @Native - private NumaStrategy numa = NumaStrategy.NONE; // attempt optimizations that help on some NUMA systems - @Native - private LogFormat logFormat = LogFormat.TEXT; - @Native - private boolean verbose = false; - -// @Nullable -// private String loraAdapter = null; -// @Nullable -// private String loraBase = null; +public final class ModelParameters extends JsonParameters { + + private static final String PARAM_SEED = "seed"; + private static final String PARAM_N_THREADS = "n_threads"; + private static final String PARAM_N_THREADS_DRAFT = "n_threads_draft"; + private static final String PARAM_N_THREADS_BATCH = "n_threads_batch"; + private static final String PARAM_N_THREADS_BATCH_DRAFT = "n_threads_batch_draft"; + private static final String PARAM_N_PREDICT = "n_predict"; + private static final String PARAM_N_CTX = "n_ctx"; + private static final String PARAM_N_BATCH = "n_batch"; + private static final String PARAM_N_UBATCH = "n_ubatch"; + private static final String PARAM_N_KEEP = "n_keep"; + private static final String PARAM_N_DRAFT = "n_draft"; + private static final String PARAM_N_CHUNKS = "n_chunks"; + private static final String PARAM_N_PARALLEL = "n_parallel"; + private static final String PARAM_N_SEQUENCES = "n_sequences"; + private static final String PARAM_P_SPLIT = "p_split"; + private static final String PARAM_N_GPU_LAYERS = "n_gpu_layers"; + private static final String PARAM_N_GPU_LAYERS_DRAFT = "n_gpu_layers_draft"; + private static final String PARAM_SPLIT_MODE = "split_mode"; + private static final String PARAM_MAIN_GPU = "main_gpu"; + private static final String PARAM_TENSOR_SPLIT = "tensor_split"; + private static final String PARAM_N_BEAMS = "n_beams"; + private static final String PARAM_GRP_ATTN_N = "grp_attn_n"; + private static final String PARAM_GRP_ATTN_W = "grp_attn_w"; + private static final String PARAM_ROPE_FREQ_BASE = "rope_freq_base"; + private static final String PARAM_ROPE_FREQ_SCALE = "rope_freq_scale"; + private static final String PARAM_YARN_EXT_FACTOR = "yarn_ext_factor"; + private static final String PARAM_YARN_ATTN_FACTOR = "yarn_attn_factor"; + private static final String PARAM_YARN_BETA_FAST = "yarn_beta_fast"; + private static final String PARAM_YARN_BETA_SLOW = "yarn_beta_slow"; + private static final String PARAM_YARN_ORIG_CTX = "yarn_orig_ctx"; + private static final String PARAM_DEFRAG_THOLD = "defrag_thold"; + private static final String PARAM_NUMA = "numa"; + private static final String PARAM_ROPE_SCALING_TYPE = "rope_scaling_type"; + private static final String PARAM_POOLING_TYPE = "pooling_type"; + private static final String PARAM_MODEL = "model"; + private static final String PARAM_MODEL_DRAFT = "model_draft"; + private static final String PARAM_MODEL_ALIAS = "model_alias"; + private static final String PARAM_MODEL_URL = "model_url"; + private static final String PARAM_HF_REPO = "hf_repo"; + private static final String PARAM_HF_FILE = "hf_file"; + private static final String PARAM_ANTIPROMPT = "antiprompt"; + private static final String PARAM_LOGDIR = "logdir"; + private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; + private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; + private static final String PARAM_LORA_ADAPTER = "lora_adapter"; + private static final String PARAM_LORA_BASE = "lora_base"; + private static final String PARAM_EMBEDDING = "embedding"; + private static final String PARAM_CONT_BATCHING = "cont_batching"; + private static final String PARAM_INPUT_PREFIX_BOS = "input_prefix_bos"; + private static final String PARAM_IGNORE_EOS = "ignore_eos"; + private static final String PARAM_USE_MMAP = "use_mmap"; + private static final String PARAM_USE_MLOCK = "use_mlock"; + private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; /** * Set the RNG seed */ public ModelParameters setSeed(int seed) { - this.seed = seed; + parameters.put(PARAM_SEED, String.valueOf(seed)); return this; } /** - * Set the total amount of threads ever used + * Set the number of threads to use during generation (default: 8) */ public ModelParameters setNThreads(int nThreads) { - this.nThreads = nThreads; + parameters.put(PARAM_N_THREADS, String.valueOf(nThreads)); return this; } /** - * number of threads to use for batch processing (-1 = use {@link #nThreads}) + * Set the number of threads to use during draft generation (default: same as {@link #setNThreads(int)}) */ - public ModelParameters setNThreadsBatch(int nThreadsBatch) { - this.nThreadsBatch = nThreadsBatch; + public ModelParameters setNThreadsDraft(int nThreadsDraft) { + parameters.put(PARAM_N_THREADS_DRAFT, String.valueOf(nThreadsDraft)); return this; } /** - * Set a file path to load the model from + * Set the number of threads to use during batch and prompt processing (default: same as {@link #setNThreads(int)}) */ - public ModelParameters setModelFilePath(String modelFilePath) { - this.modelFilePath = modelFilePath; + public ModelParameters setNThreadsBatch(int nThreadsBatch) { + parameters.put(PARAM_N_THREADS_BATCH, String.valueOf(nThreadsBatch)); return this; } /** - * Set a URL to load the model from + * Set the number of threads to use during batch and prompt processing (default: same as + * {@link #setNThreadsDraft(int)}) */ - public ModelParameters setModelUrl(String modelUrl) { - this.modelUrl = modelUrl; + public ModelParameters setNThreadsBatchDraft(int nThreadsBatchDraft) { + parameters.put(PARAM_N_THREADS_BATCH_DRAFT, String.valueOf(nThreadsBatchDraft)); return this; } /** - * Set a HuggingFace repository to load a model from (see {@link #setHuggingFaceFile(String)}) + * Set the number of tokens to predict (default: -1, -1 = infinity, -2 = until context filled) */ - public ModelParameters setHuggingFaceRepository(String huggingFaceRepository) { - this.huggingFaceRepository = huggingFaceRepository; + public ModelParameters setNPredict(int nPredict) { + parameters.put(PARAM_N_PREDICT, String.valueOf(nPredict)); return this; } /** - * Set a HuggingFace file to load a model from (see {@link #setHuggingFaceRepository(String)}) + * Set the size of the prompt context (default: 512, 0 = loaded from model) */ - public ModelParameters setHuggingFaceFile(String huggingFaceFile) { - this.huggingFaceFile = huggingFaceFile; + public ModelParameters setNCtx(int nCtx) { + parameters.put(PARAM_N_CTX, String.valueOf(nCtx)); return this; } /** - * Set the model alias + * Set the logical batch size for prompt processing (must be >=32 to use BLAS) */ - public ModelParameters setModelAlias(String modelAlias) { - this.modelAlias = modelAlias; + public ModelParameters setNBatch(int nBatch) { + parameters.put(PARAM_N_BATCH, String.valueOf(nBatch)); return this; } /** - * Set a file path to load a system prompt from + * Set the physical batch size for prompt processing (must be >=32 to use BLAS) */ - public ModelParameters setSystemPrompt(String systemPromptFile) { - this.systemPromptFile = systemPromptFile; + public ModelParameters setNUbatch(int nUbatch) { + parameters.put(PARAM_N_UBATCH, String.valueOf(nUbatch)); return this; } /** - * Set the context size + * Set the number of tokens to keep from the initial prompt (default: 0, -1 = all) */ - public ModelParameters setNCtx(int nCtx) { - this.nCtx = nCtx; + public ModelParameters setNKeep(int nKeep) { + parameters.put(PARAM_N_KEEP, String.valueOf(nKeep)); return this; } /** - * Set the logical batch size for prompt processing (must be >=32 to use BLAS) + * Set the number of tokens to draft for speculative decoding (default: 5) */ - public ModelParameters setNBatch(int nBatch) { - this.nBatch = nBatch; + public ModelParameters setNDraft(int nDraft) { + parameters.put(PARAM_N_DRAFT, String.valueOf(nDraft)); return this; } /** - * Set the physical batch size for prompt processing (must be >=32 to use BLAS) + * Set the maximal number of chunks to process (default: -1, -1 = all) */ - public ModelParameters setNUBatch(int nUBatch) { - this.nUBatch = nUBatch; + public ModelParameters setNChunks(int nChunks) { + parameters.put(PARAM_N_CHUNKS, String.valueOf(nChunks)); return this; } /** - * Set how the number of parallel sequences to decode + * Set the number of parallel sequences to decode (default: 1) */ public ModelParameters setNParallel(int nParallel) { - this.nParallel = nParallel; + parameters.put(PARAM_N_PARALLEL, String.valueOf(nParallel)); return this; } /** - * Set the amount of new tokens to predict + * Set the number of sequences to decode (default: 1) */ - public ModelParameters setNPredict(int nPredict) { - this.nPredict = nPredict; + public ModelParameters setNSequences(int nSequences) { + parameters.put(PARAM_N_SEQUENCES, String.valueOf(nSequences)); return this; } /** - * Set how to split the model across GPUs + * Set the speculative decoding split probability (default: 0.1) */ - public ModelParameters setGpuSplitMode(GpuSplitMode gpuSplitMode) { - this.gpuSplitMode = gpuSplitMode; + public ModelParameters setPSplit(float pSplit) { + parameters.put(PARAM_P_SPLIT, String.valueOf(pSplit)); return this; } @@ -213,319 +188,366 @@ public ModelParameters setGpuSplitMode(GpuSplitMode gpuSplitMode) { * Set the number of layers to store in VRAM (-1 - use default) */ public ModelParameters setNGpuLayers(int nGpuLayers) { - this.nGpuLayers = nGpuLayers; + parameters.put(PARAM_N_GPU_LAYERS, String.valueOf(nGpuLayers)); return this; } /** - * Set the GPU that is used for scratch and small tensors + * Set the number of layers to store in VRAM for the draft model (-1 - use default) */ - public ModelParameters setMainGpu(int mainGpu) { - this.mainGpu = mainGpu; + public ModelParameters setNGpuLayersDraft(int nGpuLayersDraft) { + parameters.put(PARAM_N_GPU_LAYERS_DRAFT, String.valueOf(nGpuLayersDraft)); return this; } /** - * Set how split tensors should be distributed across GPUs + * Set how to split the model across GPUs */ - public ModelParameters setTensorSplit(float[] tensorSplit) { - this.tensorSplit = tensorSplit; + public ModelParameters setSplitMode(GpuSplitMode splitMode) { +// switch (splitMode) { +// case NONE: parameters.put(PARAM_SPLIT_MODE, "\"none\""); break; +// case ROW: parameters.put(PARAM_SPLIT_MODE, "\"row\""); break; +// case LAYER: parameters.put(PARAM_SPLIT_MODE, "\"layer\""); break; +// } + parameters.put(PARAM_SPLIT_MODE, String.valueOf(splitMode.ordinal())); return this; } /** - * Set the RoPE scaling type + * Set the GPU that is used for scratch and small tensors */ - public ModelParameters setRopeScalingType(RopeScalingType ropeScalingType) { - this.ropeScalingType = ropeScalingType; + public ModelParameters setMainGpu(int mainGpu) { + parameters.put(PARAM_MAIN_GPU, String.valueOf(mainGpu)); return this; } /** - * Set the RoPE base frequency + * Set how split tensors should be distributed across GPUs */ - public ModelParameters setRopeFreqBase(float ropeFreqBase) { - this.ropeFreqBase = ropeFreqBase; + public ModelParameters setTensorSplit(float[] tensorSplit) { + if (tensorSplit.length > 0) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < tensorSplit.length; i++) { + builder.append(tensorSplit[i]); + if (i < tensorSplit.length - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_TENSOR_SPLIT, builder.toString()); + } return this; } /** - * Set the RoPE frequency scaling factor + * Set usage of beam search of given width if non-zero. */ - public ModelParameters setRopeFreqScale(float ropeFreqScale) { - this.ropeFreqScale = ropeFreqScale; + public ModelParameters setNBeams(int nBeams) { + parameters.put(PARAM_N_BEAMS, String.valueOf(nBeams)); return this; } /** - * Set the YaRN extrapolation mix factor + * Set the group-attention factor (default: 1) */ - public ModelParameters setYarnExtrapolationFactor(float yarnExtFactor) { - this.yarnExtFactor = yarnExtFactor; + public ModelParameters setGrpAttnN(int grpAttnN) { + parameters.put(PARAM_GRP_ATTN_N, String.valueOf(grpAttnN)); return this; } /** - * Set the YaRN magnitude scaling factor + * Set the group-attention width (default: 512.0) */ - public ModelParameters setYarnMagnitudeFactor(float yarnAttnFactor) { - this.yarnAttnFactor = yarnAttnFactor; + public ModelParameters setGrpAttnW(int grpAttnW) { + parameters.put(PARAM_GRP_ATTN_W, String.valueOf(grpAttnW)); return this; } /** - * Set the YaRN low correction dim + * Set the RoPE base frequency, used by NTK-aware scaling (default: loaded from model) */ - public ModelParameters setYarnBetaFast(float yarnBetaFast) { - this.yarnBetaFast = yarnBetaFast; + public ModelParameters setRopeFreqBase(float ropeFreqBase) { + parameters.put(PARAM_ROPE_FREQ_BASE, String.valueOf(ropeFreqBase)); return this; } /** - * Set the YaRN high correction dim + * Set the RoPE frequency scaling factor, expands context by a factor of 1/N */ - public ModelParameters setYarnBetaSlow(float yarnBetaSlow) { - this.yarnBetaSlow = yarnBetaSlow; + public ModelParameters setRopeFreqScale(float ropeFreqScale) { + parameters.put(PARAM_ROPE_FREQ_SCALE, String.valueOf(ropeFreqScale)); return this; } /** - * Set the pooling type for embeddings + * Set the YaRN extrapolation mix factor (default: 1.0, 0.0 = full interpolation) */ - public ModelParameters setPoolingType(PoolingType poolingType) { - this.poolingType = poolingType; + public ModelParameters setYarnExtFactor(float yarnExtFactor) { + parameters.put(PARAM_YARN_EXT_FACTOR, String.valueOf(yarnExtFactor)); return this; } /** - * Set the KV cache defragmentation threshold + * Set the YaRN scale sqrt(t) or attention magnitude (default: 1.0) */ - public ModelParameters setDefragmentationThreshold(float defragmentationThreshold) { - this.defragmentationThreshold = defragmentationThreshold; + public ModelParameters setYarnAttnFactor(float yarnAttnFactor) { + parameters.put(PARAM_YARN_ATTN_FACTOR, String.valueOf(yarnAttnFactor)); return this; } /** - * Set the group-attention factor + * Set the YaRN low correction dim or beta (default: 32.0) */ - public ModelParameters setGroupAttnN(int groupAttnN) { - this.groupAttnN = groupAttnN; + public ModelParameters setYarnBetaFast(float yarnBetaFast) { + parameters.put(PARAM_YARN_BETA_FAST, String.valueOf(yarnBetaFast)); return this; } /** - * Set the group-attention width + * Set the YaRN high correction dim or alpha (default: 1.0) */ - public ModelParameters setGroupAttnW(int groupAttnW) { - this.groupAttnW = groupAttnW; + public ModelParameters setYarnBetaSlow(float yarnBetaSlow) { + parameters.put(PARAM_YARN_BETA_SLOW, String.valueOf(yarnBetaSlow)); return this; } /** - * Whether to use mmap for faster loads + * Set the YaRN original context size of model (default: 0 = model training context size) */ - public ModelParameters setUseMmap(boolean useMmap) { - this.useMmap = useMmap; + public ModelParameters setYarnOrigCtx(int yarnOrigCtx) { + parameters.put(PARAM_YARN_ORIG_CTX, String.valueOf(yarnOrigCtx)); return this; } /** - * Whether to use mlock to keep model in memory + * Set the KV cache defragmentation threshold (default: -1.0, < 0 - disabled) */ - public ModelParameters setUseMlock(boolean useMlock) { - this.useMlock = useMlock; + public ModelParameters setDefragmentationThreshold(float defragThold) { + parameters.put(PARAM_DEFRAG_THOLD, String.valueOf(defragThold)); return this; } /** - * Whether to disable KV offloading + * Set optimization strategies that help on some NUMA systems (if available) + *
      + *
    • distribute: spread execution evenly over all nodes
    • + *
    • isolate: only spawn threads on CPUs on the node that execution started on
    • + *
    • numactl: use the CPU map provided by numactl
    • + *
    + * If run without this previously, it is recommended to drop the system page cache before using this + * (see
    #1437). */ - public ModelParameters setNoKVOffload(boolean noKVOffload) { - this.noKVOffload = noKVOffload; + public ModelParameters setNuma(NumaStrategy numa) { +// switch (numa) { +// case DISTRIBUTE: +// parameters.put(PARAM_NUMA, "\"distribute\""); +// break; +// case ISOLATE: +// parameters.put(PARAM_NUMA, "\"isolate\""); +// break; +// case NUMA_CTL: +// parameters.put(PARAM_NUMA, "\"numactl\""); +// break; +// case MIRROR: +// parameters.put(PARAM_NUMA, "\"mirror\""); +// break; +// } + parameters.put(PARAM_NUMA, String.valueOf(numa.ordinal())); return this; } /** - * Whether to only get sentence embeddings + * Set the RoPE frequency scaling method, defaults to linear unless specified by the model */ - public ModelParameters setEmbedding(boolean embedding) { - this.embedding = embedding; + public ModelParameters setRopeScalingType(RopeScalingType ropeScalingType) { +// switch (ropeScalingType) { +// case LINEAR: +// parameters.put(PARAM_ROPE_SCALING_TYPE, "\"linear\""); +// break; +// case YARN: +// parameters.put(PARAM_ROPE_SCALING_TYPE, "\"yarn\""); +// break; +// } + parameters.put(PARAM_ROPE_SCALING_TYPE, String.valueOf(ropeScalingType.ordinal())); return this; } /** - * Whether to insert new sequences for decoding on-the-fly + * Set the pooling type for embeddings, use model default if unspecified */ - public ModelParameters setContinuousBatching(boolean continuousBatching) { - this.continuousBatching = continuousBatching; + public ModelParameters setPoolingType(PoolingType poolingType) { +// switch (poolingType) { +// case MEAN: +// parameters.put(PARAM_POOLING_TYPE, "\"mean\""); +// break; +// case CLS: +// parameters.put(PARAM_POOLING_TYPE, "\"cls\""); +// break; +// } + parameters.put(PARAM_POOLING_TYPE, String.valueOf(poolingType.ordinal())); return this; } /** - * Set a numa strategy if compiled with NUMA support + * Set the model file path to load (default: models/7B/ggml-model-f16.gguf) */ - public ModelParameters setNumaStrategy(NumaStrategy numa) { - this.numa = numa; + public ModelParameters setModelFilePath(String model) { + parameters.put(PARAM_MODEL, toJsonString(model)); return this; } /** - * Set the log format + * Set the draft model for speculative decoding (default: unused) */ - public ModelParameters setLogFormat(LogFormat logFormat) { - this.logFormat = logFormat; + public ModelParameters setModelDraft(String modelDraft) { + parameters.put(PARAM_MODEL_DRAFT, toJsonString(modelDraft)); return this; } /** - * Whether to log additional output (if compiled with LLAMA_VERBOSE) + * Set a model alias */ - public ModelParameters setVerbose(boolean verbose) { - this.verbose = verbose; + public ModelParameters setModelAlias(String modelAlias) { + parameters.put(PARAM_MODEL_ALIAS, toJsonString(modelAlias)); return this; } - public int getSeed() { - return seed; - } - - public int getNThreads() { - return nThreads; - } - - public int getNThreadsBatch() { - return nThreadsBatch; - } - - public String getModelFilePath() { - return modelFilePath; - } - - public String getModelUrl() { - return modelUrl; - } - - public String getHuggingFaceRepository() { - return huggingFaceRepository; - } - - public String getHuggingFaceFile() { - return huggingFaceFile; - } - - public String getModelAlias() { - return modelAlias; - } - - public String getSystemPromptFile() { - return systemPromptFile; - } - - public int getNCtx() { - return nCtx; - } - - public int getNBatch() { - return nBatch; - } - - public int getNUBatch() { - return nUBatch; - } - - public int getNParallel() { - return nParallel; - } - - public int getNPredict() { - return nPredict; - } - - public GpuSplitMode getGpuSplitMode() { - return gpuSplitMode; - } - - public int getNGpuLayers() { - return nGpuLayers; - } - - public int getMainGpu() { - return mainGpu; - } - - public float[] getTensorSplit() { - return tensorSplit; - } - - public RopeScalingType getRopeScalingType() { - return ropeScalingType; - } - - public float getRopeFreqBase() { - return ropeFreqBase; - } - - public float getRopeFreqScale() { - return ropeFreqScale; - } - - public float getYarnExtFactor() { - return yarnExtFactor; + /** + * Set a URL to download a model from (default: unused) + */ + public ModelParameters setModelUrl(String modelUrl) { + parameters.put(PARAM_MODEL_URL, toJsonString(modelUrl)); + return this; } - public float getYarnAttnFactor() { - return yarnAttnFactor; + /** + * Set a Hugging Face model repository to use a model from (default: unused, see + * {@link #setHuggingFaceFile(String)}) + */ + public ModelParameters setHuggingFaceRepository(String hfRepo) { + parameters.put(PARAM_HF_REPO, toJsonString(hfRepo)); + return this; } - public float getYarnBetaFast() { - return yarnBetaFast; + /** + * Set a Hugging Face model file to use (default: unused, see {@link #setHuggingFaceRepository(String)}) + */ + public ModelParameters setHuggingFaceFile(String hfFile) { + parameters.put(PARAM_HF_FILE, toJsonString(hfFile)); + return this; } - public float getYarnBetaSlow() { - return yarnBetaSlow; + /** + * Set path under which to save YAML logs (no logging if unset) + */ + public ModelParameters setLogDirectory(String logdir) { + parameters.put(PARAM_LOGDIR, toJsonString(logdir)); + return this; } - public PoolingType getPoolingType() { - return poolingType; + /** + * Set path to static lookup cache to use for lookup decoding (not updated by generation) + */ + public ModelParameters setLookupCacheStaticFilePath(String lookupCacheStatic) { + parameters.put(PARAM_LOOKUP_CACHE_STATIC, toJsonString(lookupCacheStatic)); + return this; } - public float getDefragmentationThreshold() { - return defragmentationThreshold; + /** + * Set path to dynamic lookup cache to use for lookup decoding (updated by generation) + */ + public ModelParameters setLookupCacheDynamicFilePath(String lookupCacheDynamic) { + parameters.put(PARAM_LOOKUP_CACHE_DYNAMIC, toJsonString(lookupCacheDynamic)); + return this; } - public int getGroupAttnN() { - return groupAttnN; + /** + * Set LoRA adapters to use (implies --no-mmap). + * The key is expected to be a file path, the values are expected to be scales. + */ + public ModelParameters setLoraAdapters(Map loraAdapters) { + if (!loraAdapters.isEmpty()) { + StringBuilder builder = new StringBuilder(); + builder.append("{"); + int i = 0; + for (Map.Entry entry : loraAdapters.entrySet()) { + String key = entry.getKey(); + Float value = entry.getValue(); + builder.append(toJsonString(key)) + .append(": ") + .append(value); + if (i++ < loraAdapters.size() - 1) { + builder.append(", "); + } + } + builder.append("}"); + parameters.put(PARAM_LORA_ADAPTER, builder.toString()); + } + return this; } - public int getGroupAttnW() { - return groupAttnW; + /** + * Set an optional model to use as a base for the layers modified by the LoRA adapter + */ + public ModelParameters setLoraBase(String loraBase) { + parameters.put(PARAM_LORA_BASE, toJsonString(loraBase)); + return this; } - public boolean isUseMmap() { - return useMmap; + /** + * Whether to only get sentence embeddings + */ + public ModelParameters setEmbedding(boolean embedding) { + parameters.put(PARAM_EMBEDDING, String.valueOf(embedding)); + return this; } - public boolean isUseMlock() { - return useMlock; + /** + * Whether to enable continuous batching (also called "dynamic batching") (default: disabled) + */ + public ModelParameters setContinuousBatching(boolean contBatching) { + parameters.put(PARAM_CONT_BATCHING, String.valueOf(contBatching)); + return this; } - public boolean isNoKVOffload() { - return noKVOffload; + /** + * Whether to add prefix BOS to user inputs, preceding the `--in-prefix` string + */ + public ModelParameters setInputPrefixBos(boolean inputPrefixBos) { + parameters.put(PARAM_INPUT_PREFIX_BOS, String.valueOf(inputPrefixBos)); + return this; } - public boolean isEmbedding() { - return embedding; + /** + * Whether to ignore end of stream token and continue generating (implies --logit-bias 2-inf) + */ + public ModelParameters setIgnoreEos(boolean ignoreEos) { + parameters.put(PARAM_IGNORE_EOS, String.valueOf(ignoreEos)); + return this; } - public NumaStrategy getNuma() { - return numa; + /** + * Whether to use memory-map model (faster load but may increase pageouts if not using mlock) + */ + public ModelParameters setUseMmap(boolean useMmap) { + parameters.put(PARAM_USE_MMAP, String.valueOf(useMmap)); + return this; } - public LogFormat getLogFormat() { - return logFormat; + /** + * Whether to force the system to keep model in RAM rather than swapping or compressing + */ + public ModelParameters setUseMlock(boolean useMlock) { + parameters.put(PARAM_USE_MLOCK, String.valueOf(useMlock)); + return this; } - public boolean isVerbose() { - return verbose; + /** + * Whether to disable KV offload + */ + public ModelParameters setNoKvOffload(boolean noKvOffload) { + parameters.put(PARAM_NO_KV_OFFLOAD, String.valueOf(noKvOffload)); + return this; } } From 463d3a8f87887284642236f4caf4d51f45d8c53b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:24:02 +0200 Subject: [PATCH 134/384] Add server and util headers --- src/main/cpp/{server.cpp => server.hpp} | 450 +++++++++++++++- src/main/cpp/utils.cpp | 11 - src/main/cpp/utils.hpp | 656 ++++++++++++++++++++++++ 3 files changed, 1085 insertions(+), 32 deletions(-) rename src/main/cpp/{server.cpp => server.hpp} (79%) delete mode 100644 src/main/cpp/utils.cpp create mode 100644 src/main/cpp/utils.hpp diff --git a/src/main/cpp/server.cpp b/src/main/cpp/server.hpp similarity index 79% rename from src/main/cpp/server.cpp rename to src/main/cpp/server.hpp index f30e1fce..5d16a1e6 100644 --- a/src/main/cpp/server.cpp +++ b/src/main/cpp/server.hpp @@ -2,6 +2,7 @@ #include "grammar-parser.h" #include "json.hpp" #include "llama.h" +#include "utils.hpp" #include #include @@ -50,22 +51,16 @@ enum server_task_type SERVER_TASK_TYPE_METRICS }; -struct server_task -{ - int id = -1; // to be filled by server_queue - int id_multi = -1; +struct server_task { + int id = -1; // to be filled by server_queue + int id_multi = -1; int id_target = -1; server_task_type type; - jobject data; - - std::string prompt; - std::string input_prefix; - std::string input_suffix; + json data; - bool infill = false; + bool infill = false; bool embedding = false; - bool stream = false; }; struct server_task_result @@ -87,21 +82,19 @@ struct server_task_multi std::vector results; }; -struct slot_params -{ - bool stream = true; +struct slot_params { + bool stream = true; bool cache_prompt = false; // remember the prompt to avoid reprocessing all prompt - uint32_t seed = -1; // RNG seed - int32_t n_keep = 0; // number of tokens to keep from initial prompt - int32_t n_discard = - 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half - int32_t n_predict = -1; // new tokens to predict + uint32_t seed = -1; // RNG seed + int32_t n_keep = 0; // number of tokens to keep from initial prompt + int32_t n_discard = 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half + int32_t n_predict = -1; // new tokens to predict std::vector antiprompt; - std::string input_prefix; - std::string input_suffix; + json input_prefix; + json input_suffix; }; struct server_params @@ -492,6 +485,8 @@ struct server_queue { LOG_VERBOSE("new task may arrive", {}); + std::cout << "hello, X" << std::endl; + while (true) { std::unique_lock lock(mutex_tasks); @@ -877,6 +872,208 @@ struct server_context return last_used; } + bool launch_slot_with_task(server_slot & slot, const server_task & task) { + slot_params default_params; + llama_sampling_params default_sparams; + auto & data = task.data; + + slot.oaicompat = false; + slot.oaicompat_model = ""; + + slot.params.stream = json_value(data, "stream", false); + slot.params.cache_prompt = json_value(data, "cache_prompt", false); + slot.params.n_predict = json_value(data, "n_predict", default_params.n_predict); + slot.sparams.top_k = json_value(data, "top_k", default_sparams.top_k); + slot.sparams.top_p = json_value(data, "top_p", default_sparams.top_p); + slot.sparams.min_p = json_value(data, "min_p", default_sparams.min_p); + slot.sparams.tfs_z = json_value(data, "tfs_z", default_sparams.tfs_z); + slot.sparams.typical_p = json_value(data, "typical_p", default_sparams.typical_p); + slot.sparams.temp = json_value(data, "temperature", default_sparams.temp); + slot.sparams.dynatemp_range = json_value(data, "dynatemp_range", default_sparams.dynatemp_range); + slot.sparams.dynatemp_exponent = json_value(data, "dynatemp_exponent", default_sparams.dynatemp_exponent); + slot.sparams.penalty_last_n = json_value(data, "repeat_last_n", default_sparams.penalty_last_n); + slot.sparams.penalty_repeat = json_value(data, "repeat_penalty", default_sparams.penalty_repeat); + slot.sparams.penalty_freq = json_value(data, "frequency_penalty", default_sparams.penalty_freq); + slot.sparams.penalty_present = json_value(data, "presence_penalty", default_sparams.penalty_present); + slot.sparams.mirostat = json_value(data, "mirostat", default_sparams.mirostat); + slot.sparams.mirostat_tau = json_value(data, "mirostat_tau", default_sparams.mirostat_tau); + slot.sparams.mirostat_eta = json_value(data, "mirostat_eta", default_sparams.mirostat_eta); + slot.sparams.penalize_nl = json_value(data, "penalize_nl", default_sparams.penalize_nl); + slot.params.n_keep = json_value(data, "n_keep", slot.params.n_keep); + slot.params.n_discard = json_value(data, "n_discard", default_params.n_discard); + slot.params.seed = json_value(data, "seed", default_params.seed); + slot.sparams.n_probs = json_value(data, "n_probs", default_sparams.n_probs); + slot.sparams.min_keep = json_value(data, "min_keep", default_sparams.min_keep); + slot.sparams.grammar = json_value(data, "grammar", default_sparams.grammar); + + if (slot.params.cache_prompt && slot.ga_n != 1) { + LOG_WARNING("cache_prompt is not supported with group-attention", {}); + slot.params.cache_prompt = false; + } + + if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { + // Might be better to reject the request with a 400 ? + LOG_WARNING("Max tokens to predict exceeds server configuration", { + {"params.n_predict", slot.params.n_predict}, + {"slot.n_predict", slot.n_predict}, + }); + slot.params.n_predict = slot.n_predict; + } + + // infill + slot.params.input_prefix = json_value(data, "input_prefix", default_params.input_prefix); + slot.params.input_suffix = json_value(data, "input_suffix", default_params.input_suffix); + + // get prompt + { + const auto & prompt = data.find("prompt"); + if (prompt == data.end()) { + send_error(task, "Either \"prompt\" or \"messages\" must be provided", ERROR_TYPE_INVALID_REQUEST); + return false; + } else { + slot.prompt = *prompt; + } + if (slot.prompt.is_array() && slot.prompt.size() == 0) { + send_error(task, "\"prompt\" cannot be an empty array", ERROR_TYPE_INVALID_REQUEST); + return false; + } + } + + // penalize user-provided tokens + { + slot.sparams.penalty_prompt_tokens.clear(); + slot.sparams.use_penalty_prompt_tokens = false; + + const auto & penalty_prompt = data.find("penalty_prompt"); + + if (penalty_prompt != data.end()) { + if (penalty_prompt->is_string()) { + const auto penalty_prompt_string = penalty_prompt->get(); + slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); + + if (slot.params.n_predict > 0) { + slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + slot.params.n_predict); + } + slot.sparams.use_penalty_prompt_tokens = true; + + LOG_VERBOSE("penalty_prompt_tokens", { + {"id_slot", slot.id}, + {"tokens", slot.sparams.penalty_prompt_tokens}, + }); + } + else if (penalty_prompt->is_array()) { + const auto n_tokens = penalty_prompt->size(); + slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); + + const int n_vocab = llama_n_vocab(model); + for (const auto & penalty_token : *penalty_prompt) { + if (penalty_token.is_number_integer()) { + const auto tok = penalty_token.get(); + if (tok >= 0 && tok < n_vocab) { + slot.sparams.penalty_prompt_tokens.push_back(tok); + } + } + } + slot.sparams.use_penalty_prompt_tokens = true; + + LOG_VERBOSE("penalty_prompt_tokens", { + {"id_slot", slot.id}, + {"tokens", slot.sparams.penalty_prompt_tokens}, + }); + } + } + } + + { + slot.sparams.logit_bias.clear(); + + if (json_value(data, "ignore_eos", false)) { + slot.sparams.logit_bias[llama_token_eos(model)] = -INFINITY; + } + + const auto & logit_bias = data.find("logit_bias"); + if (logit_bias != data.end() && logit_bias->is_array()) { + const int n_vocab = llama_n_vocab(model); + for (const auto & el : *logit_bias) { + // TODO: we may want to throw errors here, in case "el" is incorrect + if (el.is_array() && el.size() == 2) { + float bias; + if (el[1].is_number()) { + bias = el[1].get(); + } else if (el[1].is_boolean() && !el[1].get()) { + bias = -INFINITY; + } else { + continue; + } + + if (el[0].is_number_integer()) { + llama_token tok = el[0].get(); + if (tok >= 0 && tok < n_vocab) { + slot.sparams.logit_bias[tok] = bias; + } + } else if (el[0].is_string()) { + auto toks = llama_tokenize(model, el[0].get(), false); + for (auto tok : toks) { + slot.sparams.logit_bias[tok] = bias; + } + } + } + } + } + } + + { + slot.params.antiprompt.clear(); + + const auto & stop = data.find("stop"); + if (stop != data.end() && stop->is_array()) { + for (const auto & word : *stop) { + if (!word.empty()) { + slot.params.antiprompt.push_back(word); + } + } + } + } + + { + const auto & samplers_sequence = data.find("samplers"); + if (samplers_sequence != data.end() && samplers_sequence->is_array()) { + std::vector sampler_names; + for (const auto & sampler_name : *samplers_sequence) { + if (sampler_name.is_string()) { + sampler_names.emplace_back(sampler_name); + } + } + slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); + } else { + slot.sparams.samplers_sequence = default_sparams.samplers_sequence; + } + } + + { + if (slot.ctx_sampling != nullptr) { + llama_sampling_free(slot.ctx_sampling); + } + slot.ctx_sampling = llama_sampling_init(slot.sparams); + if (slot.ctx_sampling == nullptr) { + // for now, the only error that may happen here is invalid grammar + send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); + return false; + } + llama_set_rng_seed(ctx, slot.params.seed); + } + + slot.command = SLOT_COMMAND_LOAD_PROMPT; + slot.prompt_tokens.clear(); + + LOG_INFO("slot is processing task", { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + }); + + return true; + } + void kv_cache_clear() { LOG_VERBOSE("clearing KV cache", {}); @@ -2122,3 +2319,214 @@ struct server_context }; } }; + +// parse the given jparams (see de.kherud.llama.args.ModelParameters#toString()) from JSON to the required C++ struct. +static void server_params_parse(json jparams, server_params &sparams, gpt_params ¶ms) +{ + gpt_params default_params; + server_params default_sparams; + + params.seed = json_value(jparams, "seed", default_params.seed); + params.n_threads = json_value(jparams, "n_threads", default_params.n_threads); + params.n_threads_draft = json_value(jparams, "n_threads_draft", default_params.n_threads_draft); + params.n_threads_batch = json_value(jparams, "n_threads_batch", default_params.n_threads_batch); + params.n_threads_batch_draft = json_value(jparams, "n_threads_batch_draft", default_params.n_threads_batch_draft); + params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); + params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); + params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); + params.n_ubatch = json_value(jparams, "n_ubatch", default_params.n_ubatch); + params.n_keep = json_value(jparams, "n_keep", default_params.n_keep); + params.n_draft = json_value(jparams, "n_draft", default_params.n_draft); + params.n_chunks = json_value(jparams, "n_chunks", default_params.n_chunks); + params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); + params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); + params.p_split = json_value(jparams, "p_split", default_params.p_split); + params.n_beams = json_value(jparams, "n_beams", default_params.n_beams); + params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); + params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); + params.n_print = json_value(jparams, "n_print", default_params.n_print); + params.rope_freq_base = json_value(jparams, "rope_freq_base", default_params.rope_freq_base); + params.rope_freq_scale = json_value(jparams, "rope_freq_scale", default_params.rope_freq_scale); + params.yarn_ext_factor = json_value(jparams, "yarn_ext_factor", default_params.yarn_ext_factor); + params.yarn_attn_factor = json_value(jparams, "yarn_attn_factor", default_params.yarn_attn_factor); + params.yarn_beta_fast = json_value(jparams, "yarn_beta_fast", default_params.yarn_beta_fast); + params.yarn_beta_slow = json_value(jparams, "yarn_beta_slow", default_params.yarn_beta_slow); + params.yarn_orig_ctx = json_value(jparams, "yarn_orig_ctx", default_params.yarn_orig_ctx); + params.defrag_thold = json_value(jparams, "defrag_thold", default_params.defrag_thold); + params.numa = json_value(jparams, "numa", default_params.numa); + params.rope_scaling_type = json_value(jparams, "rope_scaling_type", default_params.rope_scaling_type); + params.pooling_type = json_value(jparams, "pooling_type", default_params.pooling_type); + params.model = json_value(jparams, "model", default_params.model); + params.model_draft = json_value(jparams, "model_draft", default_params.model_draft); + params.model_alias = json_value(jparams, "model_alias", default_params.model_alias); + params.model_url = json_value(jparams, "model_url", default_params.model_url); + params.hf_repo = json_value(jparams, "hf_repo", default_params.hf_repo); + params.hf_file = json_value(jparams, "hf_file", default_params.hf_file); + params.prompt = json_value(jparams, "prompt", default_params.prompt); + params.prompt_file = json_value(jparams, "prompt_file", default_params.prompt_file); + params.path_prompt_cache = json_value(jparams, "path_prompt_cache", default_params.path_prompt_cache); + params.input_prefix = json_value(jparams, "input_prefix", default_params.input_prefix); + params.input_suffix = json_value(jparams, "input_suffix", default_params.input_suffix); + params.antiprompt = json_value(jparams, "antiprompt", default_params.antiprompt); + params.logdir = json_value(jparams, "logdir", default_params.logdir); + params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); + params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); + params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); + params.lora_adapter = json_value(jparams, "lora_adapter", default_params.lora_adapter); + params.lora_base = json_value(jparams, "lora_base", default_params.lora_base); + params.embedding = json_value(jparams, "embedding", default_params.embedding); + params.escape = json_value(jparams, "escape", default_params.escape); + params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); + params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); + params.ignore_eos = json_value(jparams, "ignore_eos", default_params.ignore_eos); + params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); + params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); + params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); + + if (jparams.contains("n_gpu_layers")) { + if (llama_supports_gpu_offload()) + { + params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); + params.n_gpu_layers_draft = json_value(jparams, "n_gpu_layers_draft", default_params.n_gpu_layers_draft); + } + else + { + LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + "See main README.md for information on enabling GPU BLAS support", + {{"n_gpu_layers", params.n_gpu_layers}}); + } + } + + if (jparams.contains("split_mode")) { + params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); +#ifndef GGML_USE_CUDA + fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); +#endif + } + + if (jparams.contains("tensor_split")) { +#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) + auto tensor_split = json_value(jparams, "tensor_split", default_params.tensor_split); + GGML_ASSERT(tensor_split.size() <= llama_max_devices()); + + for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) { + if (i_device < tensor_split.size()) { + params.tensor_split[i_device] = tensor_split.at(i_device).get(); + } else { + params.tensor_split[i_device] = 0.0f; + } + } +#else + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); +#endif // GGML_USE_CUDA + } + + if (jparams.contains("main_gpu")) { +#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) + params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); +#else + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); +#endif + } + +//#if SERVER_VERBOSE != 1 +// LOG_WARNING("server.cpp is not built with verbose logging.", {}); +//#else +// server_verbose = true; +//#endif + +// auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); +// if (system_prompt_file.length() > 0) +// { +// std::ifstream file(system_prompt_file); +// if (!file) +// { +// fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); +// invalid_param = true; +// break; +// } +// std::string system_prompt; +// std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), +// std::back_inserter(system_prompt)); +// sparams.system_prompt = system_prompt; +// } + +// value = env->GetObjectField(jparams, f_log_format); +// if (value == o_log_format_json) +// { +// server_log_json = true; +// } +// else if (value == o_log_format_text) +// { +// server_log_json = false; +// } +// else +// { +// log_set_target(stdout); +// LOG_INFO("logging to file is disabled.", {}); +// } + + // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); + // + // else if (arg == "--chat-template") { + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // if (!verify_custom_template(argv[i])) { + // fprintf(stderr, "error: the supplied chat template is not supported: %s\n", argv[i]); + // fprintf(stderr, "note: llama.cpp does not use jinja parser, we only support commonly used + // templates\n"); invalid_param = true; break; + // } + // sparams.chat_template = argv[i]; + // } else if (arg == "--override-kv") { + // if (++i >= argc) { + // invalid_param = true; + // break; + // } + // char * sep = strchr(argv[i], '='); + // if (sep == nullptr || sep - argv[i] >= 128) { + // fprintf(stderr, "error: Malformed KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // + // struct llama_model_kv_override kvo; + // std::strncpy(kvo.key, argv[i], sep - argv[i]); + // kvo.key[sep - argv[i]] = 0; + // sep++; + // if (strncmp(sep, "int:", 4) == 0) { + // sep += 4; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT; + // kvo.int_value = std::atol(sep); + // } else if (strncmp(sep, "float:", 6) == 0) { + // sep += 6; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_FLOAT; + // kvo.float_value = std::atof(sep); + // } else if (strncmp(sep, "bool:", 5) == 0) { + // sep += 5; + // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_BOOL; + // if (std::strcmp(sep, "true") == 0) { + // kvo.bool_value = true; + // } else if (std::strcmp(sep, "false") == 0) { + // kvo.bool_value = false; + // } else { + // fprintf(stderr, "error: Invalid boolean value for KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // } else { + // fprintf(stderr, "error: Invalid type for KV override: %s\n", argv[i]); + // invalid_param = true; + // break; + // } + // params.kv_overrides.push_back(kvo); + // } + // } + // + + if (!params.kv_overrides.empty()) { + params.kv_overrides.emplace_back(); + params.kv_overrides.back().key[0] = 0; + } +} diff --git a/src/main/cpp/utils.cpp b/src/main/cpp/utils.cpp deleted file mode 100644 index d815bac3..00000000 --- a/src/main/cpp/utils.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include "common.h" -#include "llama.h" - -#include "json.hpp" - -#include -#include -#include -#include diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp new file mode 100644 index 00000000..4bf1d858 --- /dev/null +++ b/src/main/cpp/utils.hpp @@ -0,0 +1,656 @@ +#pragma once + +#include "llama.h" +#include "common.h" + +#include "json.hpp" + +#include +#include +#include +#include + +#define DEFAULT_OAICOMPAT_MODEL "gpt-3.5-turbo-0613" + +using json = nlohmann::ordered_json; + +// https://community.openai.com/t/openai-chat-list-of-error-codes-and-types/357791/11 +enum error_type { + ERROR_TYPE_INVALID_REQUEST, + ERROR_TYPE_AUTHENTICATION, + ERROR_TYPE_SERVER, + ERROR_TYPE_NOT_FOUND, + ERROR_TYPE_PERMISSION, + ERROR_TYPE_UNAVAILABLE, // custom error + ERROR_TYPE_NOT_SUPPORTED, // custom error +}; + +extern bool server_verbose; +extern bool server_log_json; + +#ifndef SERVER_VERBOSE +#define SERVER_VERBOSE 1 +#endif + +#define LOG_VERBOSE(MSG, ...) \ + do \ + { \ + if (server_verbose) \ + { \ + server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ + } \ + } while (0) +//#if SERVER_VERBOSE != 1 +//#define LOG_VERBOSE(MSG, ...) +//#else +//#define LOG_VERBOSE(MSG, ...) \ +// do \ +// { \ +// if (server_verbose) \ +// { \ +// server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ +// } \ +// } while (0) +//#endif + +#define LOG_ERROR( MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_WARNING(MSG, ...) server_log("WARN", __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_INFO( MSG, ...) server_log("INFO", __func__, __LINE__, MSG, __VA_ARGS__) + +static inline void server_log(const char *level, const char *function, int line, const char *message, const nlohmann::ordered_json &extra); + +template +static T json_value(const json &body, const std::string &key, const T &default_value) { + // Fallback null to default value + if (body.contains(key) && !body.at(key).is_null()){ + try { + return body.value(key, default_value); + } + catch (nlohmann::json_abi_v3_11_3::detail::type_error const&){ + std::string message = "Wrong type supplied for parameter '" + key + "'. Expected '" + typeid(default_value).name() + "', using default value."; + server_log("WARN", __func__, __LINE__, message.c_str(), body); + return default_value; + } + } else { + return default_value; + } +} + +static inline void server_log(const char *level, const char *function, int line, const char *message, const nlohmann::ordered_json &extra) { + std::stringstream ss_tid; + ss_tid << std::this_thread::get_id(); + json log = nlohmann::ordered_json{ + {"tid", ss_tid.str()}, + {"timestamp", time(nullptr)}, + }; + + if (server_log_json) { + log.merge_patch( { + {"level", level}, + {"function", function}, + {"line", line}, + {"msg", message}, + }); + + if (!extra.empty()) { + log.merge_patch(extra); + } + + printf("%s\n", log.dump(-1, ' ', false, json::error_handler_t::replace).c_str()); + } else { + char buf[1024]; + snprintf(buf, 1024, "%4s [%24s] %s", level, function, message); + + if (!extra.empty()) { + log.merge_patch(extra); + } + std::stringstream ss; + ss << buf << " |"; + for (const auto& el : log.items()) + { + const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); + ss << " " << el.key() << "=" << value; + } + + const std::string str = ss.str(); + printf("%.*s\n", (int)str.size(), str.data()); + } + fflush(stdout); +} + +// +// chat template utils +// + +// Check if the template supplied via "--chat-template" is supported or not. Returns true if it's valid +inline bool verify_custom_template(const std::string & tmpl) { + llama_chat_message chat[] = {{"user", "test"}}; + int res = llama_chat_apply_template(nullptr, tmpl.c_str(), chat, 1, true, nullptr, 0); + return res >= 0; +} + +// Format given chat. If tmpl is empty, we take the template from model metadata +inline std::string format_chat(const struct llama_model * model, const std::string & tmpl, const std::vector & messages) { + size_t alloc_size = 0; + // vector holding all allocated string to be passed to llama_chat_apply_template + std::vector str(messages.size() * 2); + std::vector chat(messages.size()); + + for (size_t i = 0; i < messages.size(); ++i) { + const auto & curr_msg = messages[i]; + str[i*2 + 0] = json_value(curr_msg, "role", std::string("")); + str[i*2 + 1] = json_value(curr_msg, "content", std::string("")); + alloc_size += str[i*2 + 1].length(); + chat[i].role = str[i*2 + 0].c_str(); + chat[i].content = str[i*2 + 1].c_str(); + } + + const char * ptr_tmpl = tmpl.empty() ? nullptr : tmpl.c_str(); + std::vector buf(alloc_size * 2); + + // run the first time to get the total output length + int32_t res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); + + // if it turns out that our buffer is too small, we resize it + if ((size_t) res > buf.size()) { + buf.resize(res); + res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); + } + + const std::string formatted_chat(buf.data(), res); + + LOG_VERBOSE("formatted_chat", {{"text", formatted_chat.c_str()}}); + + return formatted_chat; +} + +// +// base64 utils (TODO: move to common in the future) +// + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + +static inline bool is_base64(uint8_t c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +static inline std::vector base64_decode(const std::string & encoded_string) { + int i = 0; + int j = 0; + int in_ = 0; + + int in_len = encoded_string.size(); + + uint8_t char_array_4[4]; + uint8_t char_array_3[3]; + + std::vector ret; + + while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i == 4) { + for (i = 0; i < 4; i++) { + char_array_4[i] = base64_chars.find(char_array_4[i]); + } + + char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) { + ret.push_back(char_array_3[i]); + } + + i = 0; + } + } + + if (i) { + for (j = i; j < 4; j++) { + char_array_4[j] = 0; + } + + for (j = 0; j < 4; j++) { + char_array_4[j] = base64_chars.find(char_array_4[j]); + } + + char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; j < i - 1; j++) { + ret.push_back(char_array_3[j]); + } + } + + return ret; +} + +// +// random string / id +// + +static std::string random_string() { + static const std::string str("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + + std::random_device rd; + std::mt19937 generator(rd()); + + std::string result(32, ' '); + + for (int i = 0; i < 32; ++i) { + result[i] = str[generator() % str.size()]; + } + + return result; +} + +static std::string gen_chatcmplid() { + std::stringstream chatcmplid; + chatcmplid << "chatcmpl-" << random_string(); + + return chatcmplid.str(); +} + +// +// other common utils +// + +static size_t common_part(const std::vector & a, const std::vector & b) { + size_t i; + for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) {} + + return i; +} + +static bool ends_with(const std::string & str, const std::string & suffix) { + return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); +} + +static size_t find_partial_stop_string(const std::string &stop, const std::string &text) { + if (!text.empty() && !stop.empty()) { + const char text_last_char = text.back(); + for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) { + if (stop[char_index] == text_last_char) { + const std::string current_partial = stop.substr(0, char_index + 1); + if (ends_with(text, current_partial)) { + return text.size() - char_index - 1; + } + } + } + } + + return std::string::npos; +} + +// TODO: reuse llama_detokenize +template +static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { + std::string ret; + for (; begin != end; ++begin) { + ret += llama_token_to_piece(ctx, *begin); + } + + return ret; +} + +// format incomplete utf-8 multibyte character for output +static std::string tokens_to_output_formatted_string(const llama_context * ctx, const llama_token token) { + std::string out = token == -1 ? "" : llama_token_to_piece(ctx, token); + + // if the size is 1 and first bit is 1, meaning it's a partial character + // (size > 1 meaning it's already a known token) + if (out.size() == 1 && (out[0] & 0x80) == 0x80) { + std::stringstream ss; + ss << std::hex << (out[0] & 0xff); + std::string res(ss.str()); + out = "byte: \\x" + res; + } + + return out; +} + +struct completion_token_output { + llama_token tok; + std::string text_to_send; + + struct token_prob { + llama_token tok; + float prob; + }; + + std::vector probs; +}; + +// convert a vector of completion_token_output to json +static json probs_vector_to_json(const llama_context * ctx, const std::vector & probs) { + json out = json::array(); + + for (const auto & prob : probs) { + json probs_for_token = json::array(); + + for (const auto & p : prob.probs) { + const std::string tok_str = tokens_to_output_formatted_string(ctx, p.tok); + probs_for_token.push_back(json { + {"tok_str", tok_str}, + {"prob", p.prob}, + }); + } + + const std::string tok_str = tokens_to_output_formatted_string(ctx, prob.tok); + out.push_back(json { + {"content", tok_str}, + {"probs", probs_for_token}, + }); + } + + return out; +} + +// +// OAI utils +// + +static json oaicompat_completion_params_parse( + const struct llama_model * model, + const json & body, /* openai api json semantics */ + const std::string & chat_template) { + json llama_params; + + llama_params["__oaicompat"] = true; + + // Map OpenAI parameters to llama.cpp parameters + // + // For parameters that are defined by the OpenAI documentation (e.g. + // temperature), we explicitly specify OpenAI's intended default; we + // need to do that because sometimes OpenAI disagrees with llama.cpp + // + // https://platform.openai.com/docs/api-reference/chat/create + llama_sampling_params default_sparams; + llama_params["model"] = json_value(body, "model", std::string("unknown")); + llama_params["frequency_penalty"] = json_value(body, "frequency_penalty", 0.0); + llama_params["logit_bias"] = json_value(body, "logit_bias", json::object()); + llama_params["n_predict"] = json_value(body, "max_tokens", -1); + llama_params["presence_penalty"] = json_value(body, "presence_penalty", 0.0); + llama_params["seed"] = json_value(body, "seed", LLAMA_DEFAULT_SEED); + llama_params["stream"] = json_value(body, "stream", false); + llama_params["temperature"] = json_value(body, "temperature", 0.0); + llama_params["top_p"] = json_value(body, "top_p", 1.0); + + // Apply chat template to the list of messages + llama_params["prompt"] = format_chat(model, chat_template, body["messages"]); + + // Handle "stop" field + if (body.contains("stop") && body["stop"].is_string()) { + llama_params["stop"] = json::array({body["stop"].get()}); + } else { + llama_params["stop"] = json_value(body, "stop", json::array()); + } + // Some chat templates don't use EOS token to stop generation + // We must add their end sequences to list of stop words + llama_params["stop"].push_back("<|im_end|>"); // chatml + llama_params["stop"].push_back(""); // gemma + + // Handle "response_format" field + if (body.contains("response_format")) { + json response_format = json_value(body, "response_format", json::object()); + std::string response_type = json_value(response_format, "type", std::string()); + if (response_type == "json_object") { + llama_params["json_schema"] = json_value(response_format, "schema", json::object()); + } else if (!response_type.empty() && response_type != "text") { + throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); + } + } + + // Handle "n" field + int n_choices = json_value(body, "n", 1); + if (n_choices != 1) { + throw std::runtime_error("Only one completion choice is allowed"); + } + + // Handle "logprobs" field + // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may need to fix it in the future + if (body.contains("logprobs")) { + llama_params["n_probs"] = json_value(body, "top_logprobs", 20); + } else if (body.contains("top_logprobs")) { + throw std::runtime_error("top_logprobs requires logprobs to be set to true"); + } + + // Params supported by OAI but unsupported by llama.cpp + static const std::vector unsupported_params { "tools", "tool_choice" }; + for (auto & param : unsupported_params) { + if (body.contains(param)) { + throw std::runtime_error("Unsupported param: " + param); + } + } + + // Copy remaining properties to llama_params + // This allows user to use llama.cpp-specific params like "mirostat", "tfs_z",... via OAI endpoint. + // See "launch_slot_with_task()" for a complete list of params supported by llama.cpp + for (const auto & item : body.items()) { + // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" + if (!llama_params.contains(item.key()) || item.key() == "n_predict") { + llama_params[item.key()] = item.value(); + } + } + + return llama_params; +} + +static json format_final_response_oaicompat(const json & request, json result, const std::string & completion_id, bool streaming = false) { + bool stopped_word = result.count("stopped_word") != 0; + bool stopped_eos = json_value(result, "stopped_eos", false); + int num_tokens_predicted = json_value(result, "tokens_predicted", 0); + int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); + std::string content = json_value(result, "content", std::string("")); + + std::string finish_reason = "length"; + if (stopped_word || stopped_eos) { + finish_reason = "stop"; + } + + json choices = + streaming ? json::array({json{{"finish_reason", finish_reason}, + {"index", 0}, + {"delta", json::object()}}}) + : json::array({json{{"finish_reason", finish_reason}, + {"index", 0}, + {"message", json{{"content", content}, + {"role", "assistant"}}}}}); + + std::time_t t = std::time(0); + + json res = json { + {"choices", choices}, + {"created", t}, + {"model", + json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", streaming ? "chat.completion.chunk" : "chat.completion"}, + {"usage", json { + {"completion_tokens", num_tokens_predicted}, + {"prompt_tokens", num_prompt_tokens}, + {"total_tokens", num_tokens_predicted + num_prompt_tokens} + }}, + {"id", completion_id} + }; + + if (server_verbose) { + res["__verbose"] = result; + } + + if (result.contains("completion_probabilities")) { + res["completion_probabilities"] = json_value(result, "completion_probabilities", json::array()); + } + + return res; +} + +// return value is vector as there is one case where we might need to generate two responses +static std::vector format_partial_response_oaicompat(json result, const std::string & completion_id) { + if (!result.contains("model") || !result.contains("oaicompat_token_ctr")) { + return std::vector({result}); + } + + bool first = json_value(result, "oaicompat_token_ctr", 0) == 0; + std::string modelname = json_value(result, "model", std::string(DEFAULT_OAICOMPAT_MODEL)); + + bool stopped_word = json_value(result, "stopped_word", false); + bool stopped_eos = json_value(result, "stopped_eos", false); + bool stopped_limit = json_value(result, "stopped_limit", false); + std::string content = json_value(result, "content", std::string("")); + + std::string finish_reason; + if (stopped_word || stopped_eos) { + finish_reason = "stop"; + } + if (stopped_limit) { + finish_reason = "length"; + } + + std::time_t t = std::time(0); + + json choices; + + if (!finish_reason.empty()) { + choices = json::array({json{{"finish_reason", finish_reason}, + {"index", 0}, + {"delta", json::object()}}}); + } else { + if (first) { + if (content.empty()) { + choices = json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{{"role", "assistant"}}}}}); + } else { + // We have to send this as two updates to conform to openai behavior + json initial_ret = json{{"choices", json::array({json{ + {"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{ + {"role", "assistant"} + }}}})}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"}}; + + json second_ret = json{ + {"choices", json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{ + {"content", content}}} + }})}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"}}; + + return std::vector({initial_ret, second_ret}); + } + } else { + // Some idiosyncrasy in task processing logic makes several trailing calls + // with empty content, we ignore these at the calee site. + if (content.empty()) { + return std::vector({json::object()}); + } + + choices = json::array({json{ + {"finish_reason", nullptr}, + {"index", 0}, + {"delta", + json{ + {"content", content}, + }}, + }}); + } + } + + json ret = json { + {"choices", choices}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"} + }; + + return std::vector({ret}); +} + +static json format_embeddings_response_oaicompat(const json & request, const json & embeddings) { + json data = json::array(); + int i = 0; + for (auto & elem : embeddings) { + data.push_back(json{ + {"embedding", json_value(elem, "embedding", json::array())}, + {"index", i++}, + {"object", "embedding"} + }); + } + + json res = json { + {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json { + {"prompt_tokens", 0}, + {"total_tokens", 0} + }}, + {"data", data} + }; + + return res; +} + +static json format_tokenizer_response(const std::vector & tokens) { + return json { + {"tokens", tokens} + }; +} + +static json format_detokenized_response(const std::string & content) { + return json { + {"content", content} + }; +} + +static json format_error_response(const std::string & message, const enum error_type type) { + std::string type_str; + int code = 500; + switch (type) { + case ERROR_TYPE_INVALID_REQUEST: + type_str = "invalid_request_error"; + code = 400; + break; + case ERROR_TYPE_AUTHENTICATION: + type_str = "authentication_error"; + code = 401; + break; + case ERROR_TYPE_NOT_FOUND: + type_str = "not_found_error"; + code = 404; + break; + case ERROR_TYPE_SERVER: + type_str = "server_error"; + code = 500; + break; + case ERROR_TYPE_PERMISSION: + type_str = "permission_error"; + code = 403; + break; + case ERROR_TYPE_NOT_SUPPORTED: + type_str = "not_supported_error"; + code = 501; + break; + case ERROR_TYPE_UNAVAILABLE: + type_str = "unavailable_error"; + code = 503; + break; + } + return json { + {"code", code}, + {"message", message}, + {"type", type_str}, + }; +} From cc85e6f8f8126f7ba12356fba3b86b2680929f73 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:24:33 +0200 Subject: [PATCH 135/384] Update JNI api --- src/main/cpp/jllama.h | 28 +++----- src/main/java/de/kherud/llama/LlamaModel.java | 70 ++++++++----------- 2 files changed, 41 insertions(+), 57 deletions(-) diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 859506e6..f599c836 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -23,37 +23,29 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode (JNIEnv *, jobject, jstring); -/* - * Class: de_kherud_llama_LlamaModel - * Method: setLogger - * Signature: (Ljava/util/function/BiConsumer;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger - (JNIEnv *, jclass, jobject); - /* * Class: de_kherud_llama_LlamaModel * Method: loadModel - * Signature: (Ljava/lang/String;Lde/kherud/llama/ModelParameters;)V + * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jstring, jobject); + (JNIEnv *, jobject, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: newAnswerIterator - * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator - (JNIEnv *, jobject, jstring, jobject); + (JNIEnv *, jobject, jstring, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: newInfillIterator - * Signature: (Ljava/lang/String;Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator - (JNIEnv *, jobject, jstring, jstring, jobject); + (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: de_kherud_llama_LlamaModel @@ -66,18 +58,18 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext /* * Class: de_kherud_llama_LlamaModel * Method: getAnswer - * Signature: (Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)[B + * Signature: (Ljava/lang/String;Ljava/lang/String;)[B */ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer - (JNIEnv *, jobject, jstring, jobject); + (JNIEnv *, jobject, jstring, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: getInfill - * Signature: (Ljava/lang/String;Ljava/lang/String;Lde/kherud/llama/InferenceParameters;)[B + * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[B */ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill - (JNIEnv *, jobject, jstring, jstring, jobject); + (JNIEnv *, jobject, jstring, jstring, jstring); /* * Class: de_kherud_llama_LlamaModel diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 4fb6e885..3e8c3cf6 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -5,10 +5,11 @@ import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; -import java.util.function.BiConsumer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + +import de.kherud.llama.args.InferenceParameters; +import de.kherud.llama.args.ModelParameters; /** * This class is a wrapper around the llama.cpp functionality. @@ -29,31 +30,22 @@ public class LlamaModel implements AutoCloseable { LlamaLoader.initialize(); } - private static final ModelParameters defaultModelParams = new ModelParameters(); - private static final InferenceParameters defaultInferenceParams = new InferenceParameters(); - @Native private long ctx; /** - * Load a gguf llama.cpp model from a given file path with default {@link ModelParameters}. + * Load with the given {@link ModelParameters}. Make sure to either set + *
      + *
    • {@link ModelParameters#setModelFilePath(String)}
    • + *
    • {@link ModelParameters#setModelUrl(String)}
    • + *
    • {@link ModelParameters#setHuggingFaceRepository(String)}}, {@link ModelParameters#setHuggingFaceFile(String)}
    • + *
    * - * @param filePath a file path pointing to the model + * @param parameters the set of options * @throws LlamaException if no model could be loaded from the given file path */ - public LlamaModel(String filePath) { - this(filePath, defaultModelParams); - } - - /** - * Load a gguf llama.cpp model from a given file path with custom {@link ModelParameters}. - * - * @param filePath a file path pointing to the model - * @param parameters the set of previously configured options - * @throws LlamaException if no model could be loaded from the given file path - */ - public LlamaModel(String filePath, ModelParameters parameters) { - loadModel(filePath, parameters); + public LlamaModel(ModelParameters parameters) { + loadModel(parameters.toString()); } /** @@ -64,7 +56,7 @@ public LlamaModel(String filePath, ModelParameters parameters) { * @return an LLM response */ public String complete(String prompt) { - return complete(prompt, defaultInferenceParams); + return complete(prompt, new InferenceParameters()); } /** @@ -75,7 +67,7 @@ public String complete(String prompt) { * @return an LLM response */ public String complete(String prompt, InferenceParameters parameters) { - byte[] bytes = getAnswer(prompt, parameters); + byte[] bytes = getAnswer(prompt, parameters.toString()); return new String(bytes, StandardCharsets.UTF_8); } @@ -88,7 +80,7 @@ public String complete(String prompt, InferenceParameters parameters) { * @return an LLM response */ public String complete(String prefix, String suffix) { - return complete(prefix, suffix, defaultInferenceParams); + return complete(prefix, suffix, new InferenceParameters()); } /** @@ -100,7 +92,7 @@ public String complete(String prefix, String suffix) { * @return an LLM response */ public String complete(String prefix, String suffix, InferenceParameters parameters) { - byte[] bytes = getInfill(prefix, suffix, parameters); + byte[] bytes = getInfill(prefix, suffix, parameters.toString()); return new String(bytes, StandardCharsets.UTF_8); } @@ -112,7 +104,7 @@ public String complete(String prefix, String suffix, InferenceParameters paramet * @return iterable LLM outputs */ public Iterable generate(String prompt) { - return generate(prompt, defaultInferenceParams); + return generate(prompt, new InferenceParameters()); } /** @@ -135,7 +127,7 @@ public Iterable generate(String prompt, InferenceParameters parameters) * @return iterable LLM outputs */ public Iterable generate(String prefix, String suffix) { - return generate(prefix, suffix, defaultInferenceParams); + return generate(prefix, suffix, new InferenceParameters()); } /** @@ -179,12 +171,12 @@ public String decode(int[] tokens) { return new String(bytes, StandardCharsets.UTF_8); } - /** - * Sets a callback for both Java and C++ log messages. Can be set to {@code null} to disable logging. - * - * @param callback a method to call for log messages - */ - public static native void setLogger(@Nullable BiConsumer callback); +// /** +// * Sets a callback for both Java and C++ log messages. Can be set to {@code null} to disable logging. +// * +// * @param callback a method to call for log messages +// */ +// public static native void setLogger(@Nullable BiConsumer callback); @Override public void close() { @@ -192,12 +184,12 @@ public void close() { } // don't overload native methods since the C++ function names get nasty - private native void loadModel(String filePath, ModelParameters parameters) throws LlamaException; - private native void newAnswerIterator(String prompt, InferenceParameters parameters); - private native void newInfillIterator(String prefix, String suffix, InferenceParameters parameters); + private native void loadModel(String parameters) throws LlamaException; + private native void newAnswerIterator(String prompt, String parameters); + private native void newInfillIterator(String prefix, String suffix, String parameters); private native Output getNext(LlamaIterator iterator); - private native byte[] getAnswer(String prompt, InferenceParameters parameters); - private native byte[] getInfill(String prefix, String suffix, InferenceParameters parameters); + private native byte[] getAnswer(String prompt, String parameters); + private native byte[] getInfill(String prefix, String suffix, String parameters); private native byte[] decodeBytes(int[] tokens); private native void delete(); @@ -240,11 +232,11 @@ private final class LlamaIterator implements Iterator { private long tokenIndex = 0; private LlamaIterator(String prompt, InferenceParameters parameters) { - newAnswerIterator(prompt, parameters); + newAnswerIterator(prompt, parameters.toString()); } private LlamaIterator(String prefix, String suffix, InferenceParameters parameters) { - newInfillIterator(prefix, suffix, parameters); + newInfillIterator(prefix, suffix, parameters.toString()); } @Override From 8b1c702389fd69481acbcf36913f34e64fcdb070 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:25:49 +0200 Subject: [PATCH 136/384] Change from Java parameter JNI interface to json --- src/main/cpp/jllama.cpp | 939 +++------------------------------------- 1 file changed, 72 insertions(+), 867 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 7349287e..15d41265 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,18 +1,19 @@ #include "jllama.h" -#include "common.h" #include "json.hpp" +#include "llama.h" +#include "server.hpp" +#include "utils.hpp" -using json = nlohmann::json; +// We store some references to Java classes and their fields/methods here to speed up things for later and to fail +// early on if anything can't be found. This happens when the JVM loads the shared library (see `JNI_OnLoad`). +// The references remain valid throughout the whole life of the shared library, on `JNI_OnUnload` they are released. JavaVM *g_vm = nullptr; -jobject g_log_callback = nullptr; // classes static jclass c_llama_model = 0; static jclass c_llama_iterator = 0; -static jclass c_model_params = 0; -static jclass c_infer_params = 0; static jclass c_standard_charsets = 0; static jclass c_output = 0; static jclass c_string = 0; @@ -23,17 +24,9 @@ static jclass c_entry = 0; static jclass c_iterator = 0; static jclass c_integer = 0; static jclass c_float = 0; -static jclass c_log_level = 0; static jclass c_biconsumer = 0; static jclass c_llama_error = 0; static jclass c_error_oom = 0; -static jclass c_split_mode = 0; -static jclass c_log_format = 0; -static jclass c_miro_stat = 0; -static jclass c_numa_strategy = 0; -static jclass c_pooling_type = 0; -static jclass c_rope_scaling = 0; -static jclass c_sampler = 0; // constructors static jmethodID cc_output = 0; @@ -56,121 +49,18 @@ static jmethodID m_biconsumer_accept = 0; // fields static jfieldID f_model_pointer = 0; +static jfieldID f_utf_8 = 0; // iterator static jfieldID f_iter_has_next = 0; static jfieldID f_iter_n_generated = 0; static jfieldID f_iter_token_index = 0; -// inference parameters -static jfieldID f_cache_prompt = 0; -static jfieldID f_n_predict = 0; -static jfieldID f_top_k = 0; -static jfieldID f_top_p = 0; -static jfieldID f_min_p = 0; -static jfieldID f_tfs_z = 0; -static jfieldID f_typical_p = 0; -static jfieldID f_temp = 0; -static jfieldID f_dynatemp_range = 0; -static jfieldID f_dynatemp_exponent = 0; -static jfieldID f_penalty_last_n = 0; -static jfieldID f_penalty_repeat = 0; -static jfieldID f_penalty_freq = 0; -static jfieldID f_penalty_present = 0; -static jfieldID f_mirostat = 0; -static jfieldID f_mirostat_tau = 0; -static jfieldID f_mirostat_eta = 0; -static jfieldID f_penalize_nl = 0; -static jfieldID f_n_keep = 0; -static jfieldID f_n_discard = 0; -static jfieldID f_infer_seed = 0; -static jfieldID f_n_probs = 0; -static jfieldID f_min_keep = 0; -static jfieldID f_grammar = 0; -static jfieldID f_ignore_eos = 0; -static jfieldID f_logit_bias = 0; -static jfieldID f_antiprompt = 0; -// model parameters -static jfieldID f_model_seed = 0; -static jfieldID f_model_path = 0; -static jfieldID f_model_url = 0; -static jfieldID f_model_hf_repo = 0; -static jfieldID f_model_hf_file = 0; -static jfieldID f_model_alias = 0; -static jfieldID f_n_ctx = 0; -static jfieldID f_rope_scaling_type = 0; -static jfieldID f_rope_freq_base = 0; -static jfieldID f_rope_freq_scale = 0; -static jfieldID f_yarn_ext_factor = 0; -static jfieldID f_yarn_attn_factor = 0; -static jfieldID f_yarn_beta_fast = 0; -static jfieldID f_yarn_beta_slow = 0; -static jfieldID f_pooling_type = 0; -static jfieldID f_defrag_thold = 0; -static jfieldID f_n_threads = 0; -static jfieldID f_grp_attn_n = 0; -static jfieldID f_grp_attn_w = 0; -static jfieldID f_n_threads_batch = 0; -static jfieldID f_n_batch = 0; -static jfieldID f_n_ubatch = 0; -static jfieldID f_n_gpu_layers = 0; -static jfieldID f_no_kv_offload = 0; -static jfieldID f_split_mode = 0; -static jfieldID f_tensor_split = 0; -static jfieldID f_main_gpu = 0; -static jfieldID f_verbose = 0; -static jfieldID f_use_mlock = 0; -static jfieldID f_use_mmap = 0; -static jfieldID f_numa_strategy = 0; -static jfieldID f_embedding = 0; -static jfieldID f_cont_batching = 0; -static jfieldID f_n_parallel = 0; -static jfieldID f_n_predict = 0; -static jfieldID f_system_prompt_file = 0; -static jfieldID f_log_format = 0; -// enum fields -static jfieldID f_utf_8 = 0; -static jfieldID f_log_level_debug = 0; -static jfieldID f_log_level_info = 0; -static jfieldID f_log_level_warn = 0; -static jfieldID f_log_level_error = 0; -static jfieldID f_rope_scaling_none = 0; -static jfieldID f_rope_scaling_linear = 0; -static jfieldID f_rope_scaling_yarn = 0; -static jfieldID f_pooling_type_none = 0; -static jfieldID f_pooling_type_mean = 0; -static jfieldID f_pooling_type_cls = 0; -static jfieldID f_split_mode_none = 0; -static jfieldID f_split_mode_layer = 0; -static jfieldID f_split_mode_row = 0; -static jfieldID f_numa_strategy_distribute = 0; -static jfieldID f_numa_strategy_isolate = 0; -static jfieldID f_numa_strategy_numactl = 0; -static jfieldID f_log_format_json = 0; -static jfieldID f_log_format_text = 0; -static jfieldID f_mirostat_v1 = 0; -static jfieldID f_mirostat_v2 = 0; + // objects static jobject o_utf_8 = 0; -static jobject o_log_level_debug = 0; -static jobject o_log_level_info = 0; -static jobject o_log_level_warn = 0; -static jobject o_log_level_error = 0; -static jobject o_rope_scaling_none = 0; -static jobject o_rope_scaling_linear = 0; -static jobject o_rope_scaling_yarn = 0; -static jobject o_pooling_type_none = 0; -static jobject o_pooling_type_mean = 0; -static jobject o_pooling_type_cls = 0; -static jobject o_split_mode_none = 0; -static jobject o_split_mode_layer = 0; -static jobject o_split_mode_row = 0; -static jobject o_numa_strategy_distribute = 0; -static jobject o_numa_strategy_isolate = 0; -static jobject o_numa_strategy_numactl = 0; -static jobject o_log_format_json = 0; -static jobject o_log_format_text = 0; -static jobject o_mirostat_v1 = 0; -static jobject o_mirostat_v2 = 0; +/** + * Convert a Java string to a std::string + */ static std::string parse_jstring(JNIEnv *env, jstring java_string) { const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); @@ -186,24 +76,11 @@ static std::string parse_jstring(JNIEnv *env, jstring java_string) return string; } -static int parse_jinteger(JNIEnv *env, jobject java_integer) -{ - if (!java_integer) - return 0; - return env->CallIntMethod(java_integer, m_int_value); -} - -static float parse_jfloat(JNIEnv *env, jobject java_float) -{ - if (!java_float) - return 0; - return env->CallFloatMethod(java_float, m_float_value); -} - -// Since Java expects utf16 but std::strings are utf8, we can't directly use -// `env->NewString` or `env-NewString`, but we simply send the bytes directly -// and do the conversion in Java. Unfortunately, there isn't a -// nice/standardized way to do this conversion in C++ +/** + * Since Java expects utf16 but std::strings are utf8, we can't directly use `env->NewString` or `env-NewString`, + * but we directly send the bytes and do the conversion in Java. Unfortunately, there isn't a nice/standardized way to + * do this conversion in C++ + */ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) { jsize len = string.size(); @@ -212,476 +89,6 @@ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) return bytes; } -// this method -static void load_server_params(JNIEnv *env, jobject jparams, server_params &sparams, gpt_params ¶ms) -{ - gpt_params default_params; - server_params default_sparams; - - bool invalid_param = false; - - params.seed = env->GetIntField(jparams, f_model_seed); - params.model = get_string_field(env, jparams, f_model_path); - params.model_url = get_string_field(env, jparams, f_model_url); - params.hf_repo = get_string_field(env, jparams, f_model_hf_repo); - params.hf_file = get_string_field(env, jparams, f_model_hf_file); - params.model_alias = get_string_field(env, jparams, f_model_alias); - params.n_ctx = env->GetIntField(jparams, f_n_ctx); - - jobject value = env->GetObjectField(jparams, f_rope_scaling_type); - if (value == o_rope_scaling_none) - { - params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_NONE; - } - else if (value == o_rope_scaling_linear) - { - params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_LINEAR; - } - else if (value == o_rope_scaling_yarn) - { - params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_YARN; - } - - params.rope_freq_base = env->GetFloatField(jparams, f_rope_freq_base); - params.rope_freq_scale = env->GetFloatField(jparams, f_rope_freq_scale); - params.yarn_ext_factor = env->GetFloatField(jparams, f_yarn_ext_factor); - params.yarn_attn_factor = env->GetFloatField(jparams, f_yarn_attn_factor); - params.yarn_beta_fast = env->GetFloatField(jparams, f_yarn_beta_fast); - params.yarn_beta_slow = env->GetFloatField(jparams, f_yarn_beta_slow); - - value = env->GetObjectField(jparams, f_pooling_type); - if (value == o_pooling_type_none) - { - params.pooling_type = LLAMA_POOLING_TYPE_NONE; - } - else if (value == o_pooling_type_mean) - { - params.pooling_type = LLAMA_POOLING_TYPE_MEAN; - } - else if (value == o_pooling_type_cls) - { - params.pooling_type = LLAMA_POOLING_TYPE_CLS; - } - - params.defrag_thold = env->GetFloatField(jparams, f_defrag_thold); - params.n_threads = env->GetIntField(jparams, f_n_threads); - params.grp_attn_n = env->GetIntField(jparams, f_grp_attn_n); - params.grp_attn_w = env->GetIntField(jparams, f_grp_attn_w); - params.n_threads_batch = env->GetIntField(jparams, f_n_threads_batch); - params.n_batch = env->GetIntField(jparams, f_n_batch); - params.n_ubatch = env->GetIntField(jparams, f_n_ubatch); - - if (llama_supports_gpu_offload()) - { - params.n_gpu_layers = env->GetIntField(jparams, f_n_gpu_layers); - } - else - { - LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support", - {{"n_gpu_layers", params.n_gpu_layers}}); - } - - params.no_kv_offload = env->GetBooleanField(jparams, f_no_kv_offload); - - value = env->GetObjectField(jparams, f_split_mode); - if (value == o_split_mode_none) - { - params.split_mode = LLAMA_SPLIT_MODE_NONE; - } - else if (value == o_split_mode_layer) - { - params.split_mode = LLAMA_SPLIT_MODE_LAYER; - } - else if (value == o_split_mode_row) - { - params.split_mode = LLAMA_SPLIT_MODE_ROW; - } - -#ifndef GGML_USE_CUDA - if (value != o_split_mode_none) - { - fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); - } -#endif - - jintArray j_tensor_split = env->GetObjectField(jparams, f_tensor_split); - jsize j_tensor_split_size = env->GetArrayLength(j_tensor_split); - jfloat *j_tensor_split_elements = env->GetFloatArrayElements(j_tensor_split, 0); - -#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - GGML_ASSERT(j_tensor_split_size <= llama_max_devices()); - - for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) - { - if (i_device < j_tensor_split_size) - { - params.tensor_split[i_device] = j_tensor_split_elements[i_device]; - } - else - { - params.tensor_split[i_device] = 0.0f; - } - } -#else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); -#endif - - params.main_gpu = env->GetIntField(jparams, f_main_gpu); -#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) -#else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); -#endif - - // // todo: there can be multiple lora adapters - // value = env->GetObjectField(jparams, f_lora_adapter); - // if (value != nullptr) { - // auto adapter = parse_jstring(env, (jstring) value); - // params.lora_adapter.emplace_back(adapter, 1.0f); - // params.use_mmap = false; - // } - - // else if (arg == "--lora-scaled") { - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // const char * lora_adapter = argv[i]; - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // params.lora_adapter.emplace_back(lora_adapter, std::stof(argv[i])); - // params.use_mmap = false; - // } - - // params.lora_base = get_string_field(env, jparams, f_lora_base); - - sparams.verbose = env->GetBooleanField(jparams, f_verbose); -#if SERVER_VERBOSE != 1 - if (sparams.verbose) - { - LOG_WARNING("server.cpp is not built with verbose logging.", {}); - } -#else - server_verbose = true; -#endif - - params.use_mlock = env->GetBooleanField(jparams, f_use_mlock); - params.use_mmap = env->GetBooleanField(jparams, f_use_mmap); - - value = env->GetObjectField(jparams, f_numa_strategy); - if (value == o_numa_strategy_distribute) - { - params.numa = GGML_NUMA_STRATEGY_DISTRIBUTE; - } - else if (value == o_numa_strategy_isolate) - { - params.numa = GGML_NUMA_STRATEGY_ISOLATE; - } - else if (value == o_numa_strategy_numactl) - { - params.numa = GGML_NUMA_STRATEGY_NUMACTL; - } - - params.embedding = env->GetBooleanField(jparams, f_embedding); - params.cont_batching = env->GetBooleanField(jparams, f_cont_batching); - params.n_parallel = env->GetIntField(jparams, f_n_parallel); - params.n_predict = env->GetIntField(jparams, f_n_predict); - - auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); - if (system_prompt_file.length() > 0) - { - std::ifstream file(system_prompt_file); - if (!file) - { - fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); - invalid_param = true; - break; - } - std::string system_prompt; - std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), - std::back_inserter(system_prompt)); - sparams.system_prompt = system_prompt; - } - - value = env->GetObjectField(jparams, f_log_format); - if (value == o_log_format_json) - { - server_log_json = true; - } - else if (value == o_log_format_text) - { - server_log_json = false; - } - else - { - log_set_target(stdout); - LOG_INFO("logging to file is disabled.", {}); - } - - // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); - // - // else if (arg == "--chat-template") { - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // if (!verify_custom_template(argv[i])) { - // fprintf(stderr, "error: the supplied chat template is not supported: %s\n", argv[i]); - // fprintf(stderr, "note: llama.cpp does not use jinja parser, we only support commonly used - // templates\n"); invalid_param = true; break; - // } - // sparams.chat_template = argv[i]; - // } else if (arg == "--override-kv") { - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // char * sep = strchr(argv[i], '='); - // if (sep == nullptr || sep - argv[i] >= 128) { - // fprintf(stderr, "error: Malformed KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // - // struct llama_model_kv_override kvo; - // std::strncpy(kvo.key, argv[i], sep - argv[i]); - // kvo.key[sep - argv[i]] = 0; - // sep++; - // if (strncmp(sep, "int:", 4) == 0) { - // sep += 4; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT; - // kvo.int_value = std::atol(sep); - // } else if (strncmp(sep, "float:", 6) == 0) { - // sep += 6; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_FLOAT; - // kvo.float_value = std::atof(sep); - // } else if (strncmp(sep, "bool:", 5) == 0) { - // sep += 5; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_BOOL; - // if (std::strcmp(sep, "true") == 0) { - // kvo.bool_value = true; - // } else if (std::strcmp(sep, "false") == 0) { - // kvo.bool_value = false; - // } else { - // fprintf(stderr, "error: Invalid boolean value for KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // } else { - // fprintf(stderr, "error: Invalid type for KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // params.kv_overrides.push_back(kvo); - // } - // } - // - // if (!params.kv_overrides.empty()) { - // params.kv_overrides.emplace_back(); - // params.kv_overrides.back().key[0] = 0; - // } -} - -// -static bool launch_slot(server_slot &slot, const server_task &task) -{ - slot_params default_params; - llama_sampling_params default_sparams; - auto &data = task.data; - - slot.oaicompat = false; - slot.oaicompat_model = ""; - - slot.params.stream = task.stream; - slot.params.cache_prompt = env->GetBooleanField(jparams, f_cache_prompt); - slot.params.n_predict = env->GetIntField(jparams, f_n_predict); - slot.sparams.top_k = env->GetIntField(jparams, f_top_k); - slot.sparams.top_p = env->GetFloatField(jparams, f_top_p); - slot.sparams.min_p = env->GetFloatField(jparams, f_min_p); - slot.sparams.tfs_z = env->GetFloatField(jparams, f_tfs_z); - slot.sparams.typical_p = env->GetFloatField(jparams, f_typical_p); - slot.sparams.temp = env->GetFloatField(jparams, f_temp); - slot.sparams.dynatemp_range = env->GetFloatField(jparams, f_dynatemp_range); - slot.sparams.dynatemp_exponent = env->GetFloatField(jparams, f_dynatemp_exponent); - slot.sparams.penalty_last_n = env->GetIntField(jparams, f_penalty_last_n); - slot.sparams.penalty_repeat = env->GetFloatField(jparams, f_penalty_repeat); - slot.sparams.penalty_freq = env->GetFloatField(jparams, f_penalty_freq); - slot.sparams.penalty_present = env->GetFloatField(jparams, f_penalty_present); - - auto mirostat = env->GetObjectField(jparams, f_mirostat); - if (mirostat == o_mirostat_v1) - { - slot.sparams.mirostat = 1; - } - else if (mirostat == o_mirostat_v2) - { - slot.sparams.mirostat = 2; - } - else - { - slot.sparams.mirostat = 0; - } - slot.sparams.mirostat_tau = env->GetFloatField(jparams, f_mirostat_tau); - slot.sparams.mirostat_eta = env->GetFloatField(jparams, f_mirostat_eta); - slot.sparams.penalize_nl = env->GetBooleanField(jparams, f_penalize_nl); - slot.params.n_keep = env->GetIntField(jparams, f_n_keep); - slot.params.n_discard = env->GetIntField(jparams, f_n_discard); - slot.params.seed = env->GetIntField(jparams, f_infer_seed); - slot.sparams.n_probs = env->GetIntField(jparams, f_n_probs); - slot.sparams.min_keep = env->GetIntField(jparams, f_min_keep); - - jstring j_grammar = (jstring)env->GetObjectField(jparams, f_grammar); - if (j_grammar != nullptr) - { - slot.sparams.grammar = parse_jstring(env, j_grammar); - } - - if (slot.params.cache_prompt && slot.ga_n != 1) - { - LOG_WARNING("cache_prompt is not supported with group-attention", {}); - slot.params.cache_prompt = false; - } - - if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) - { - // Might be better to reject the request with a 400 ? - LOG_WARNING("Max tokens to predict exceeds server configuration", - { - {"params.n_predict", slot.params.n_predict}, - {"slot.n_predict", slot.n_predict}, - }); - slot.params.n_predict = slot.n_predict; - } - - slot.prompt = task.prompt; - slot.params.input_prefix = task.input_prefix; - slot.params.input_suffix = task.input_suffix; - - // penalize user-provided tokens - // { - // slot.sparams.penalty_prompt_tokens.clear(); - // slot.sparams.use_penalty_prompt_tokens = false; - // - // const auto & penalty_prompt = data.find("penalty_prompt"); - // - // if (penalty_prompt != data.end()) { - // if (penalty_prompt->is_string()) { - // const auto penalty_prompt_string = penalty_prompt->get(); - // slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); - // - // if (slot.params.n_predict > 0) { - // slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + - // slot.params.n_predict); - // } - // slot.sparams.use_penalty_prompt_tokens = true; - // - // LOG_VERBOSE("penalty_prompt_tokens", { - // {"id_slot", slot.id}, - // {"tokens", slot.sparams.penalty_prompt_tokens}, - // }); - // } - // else if (penalty_prompt->is_array()) { - // const auto n_tokens = penalty_prompt->size(); - // slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); - // - // const int n_vocab = llama_n_vocab(model); - // for (const auto & penalty_token : *penalty_prompt) { - // if (penalty_token.is_number_integer()) { - // const auto tok = penalty_token.get(); - // if (tok >= 0 && tok < n_vocab) { - // slot.sparams.penalty_prompt_tokens.push_back(tok); - // } - // } - // } - // slot.sparams.use_penalty_prompt_tokens = true; - // - // LOG_VERBOSE("penalty_prompt_tokens", { - // {"id_slot", slot.id}, - // {"tokens", slot.sparams.penalty_prompt_tokens}, - // }); - // } - // } - // } - - sparams.logit_bias.clear(); - jboolean ignore_eos = env->GetBooleanField(jparams, f_ignore_eos); - if (ignore_eos) - { - slot.sparams.logit_bias[llama_token_eos(llama->model)] = -INFINITY; - } - - jobject logit_bias = env->GetObjectField(jparams, f_logit_bias); - if (logit_bias != nullptr) - { - jobject entry_set = env->CallObjectMethod(logit_bias, m_entry_set); - jobject iterator = env->CallObjectMethod(entry_set, m_set_iterator); - while (env->CallBooleanMethod(iterator, m_iterator_has_next)) - { - jobject entry = env->CallObjectMethod(iterator, m_iterator_next); - jobject key = env->CallObjectMethod(entry, m_entry_key); - jobject value = env->CallObjectMethod(entry, m_entry_value); - - int tok = parse_jinteger(env, key); - float bias = parse_jfloat(env, value); - slot.sparams.logit_bias[tok] = bias; - - env->DeleteLocalRef(entry); - env->DeleteLocalRef(key); - env->DeleteLocalRef(value); - } - } - - slot.params.antiprompt.clear(); - jobjectArray antiprompt = (jobjectArray)env->GetObjectField(jparams, f_antiprompt); - if (antiprompt != nullptr) - { - jsize array_length = env->GetArrayLength(antiprompt); - for (jsize i = 0; i < array_length; i++) - { - jstring java_string = (jstring)env->GetObjectArrayElement(antiprompt, i); - if (java_string != nullptr) - { - std::string string = parse_jstring(env, java_string); - slot.params.antiprompt.push_back(string); - env->DeleteLocalRef(java_string); - } - } - } - - // { - // const auto & samplers_sequence = data.find("samplers"); - // if (samplers_sequence != data.end() && samplers_sequence->is_array()) { - // std::vector sampler_names; - // for (const auto & sampler_name : *samplers_sequence) { - // if (sampler_name.is_string()) { - // sampler_names.emplace_back(sampler_name); - // } - // } - // slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); - // } else { - // slot.sparams.samplers_sequence = default_sparams.samplers_sequence; - // } - // } - - // { - // if (slot.ctx_sampling != nullptr) { - // llama_sampling_free(slot.ctx_sampling); - // } - // slot.ctx_sampling = llama_sampling_init(slot.sparams); - // if (slot.ctx_sampling == nullptr) { - // // for now, the only error that may happen here is invalid grammar - // send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); - // return false; - // } - // llama_set_rng_seed(ctx, slot.params.seed); - // } - - slot.command = SLOT_COMMAND_LOAD_PROMPT; - slot.prompt_tokens.clear(); -} - /** * The VM calls JNI_OnLoad when the native library is loaded (for example, through `System.loadLibrary`). * `JNI_OnLoad` must return the JNI version needed by the native library. @@ -702,8 +109,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // find classes c_llama_model = env->FindClass("de/kherud/llama/LlamaModel"); c_llama_iterator = env->FindClass("de/kherud/llama/LlamaModel$LlamaIterator"); - c_infer_params = env->FindClass("de/kherud/llama/InferenceParameters"); - c_model_params = env->FindClass("de/kherud/llama/ModelParameters"); c_standard_charsets = env->FindClass("java/nio/charset/StandardCharsets"); c_output = env->FindClass("de/kherud/llama/LlamaModel$Output"); c_string = env->FindClass("java/lang/String"); @@ -714,22 +119,12 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_iterator = env->FindClass("java/util/Iterator"); c_integer = env->FindClass("java/lang/Integer"); c_float = env->FindClass("java/lang/Float"); - c_log_level = env->FindClass("de/kherud/llama/LogLevel"); c_biconsumer = env->FindClass("java/util/function/BiConsumer"); c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); - c_split_mode = env->FindClass("de/kherud/llama/args/GpuSplitMode"); - c_log_format = env->FindClass("de/kherud/llama/args/LogFormat"); - c_miro_stat = env->FindClass("de/kherud/llama/args/MiroStat"); - c_numa_strategy = env->FindClass("de/kherud/llama/args/NumaStrategy"); - c_pooling_type = env->FindClass("de/kherud/llama/args/PoolingType"); - c_rope_scaling = env->FindClass("de/kherud/llama/args/RopeScalingType"); - c_sampler = env->FindClass("de/kherud/llama/args/Sampler"); - - if (!(c_llama_model && c_llama_iterator && c_infer_params && c_model_params && c_standard_charsets && c_output && - c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_log_level && - c_biconsumer && c_llama_error && c_error_oom && c_split_mode && c_log_format && c_miro_stat && - c_numa_strategy && c_pooling_type && c_rope_scaling && c_sampler)) + + if (!(c_llama_model && c_llama_iterator && c_standard_charsets && c_output && c_string && c_hash_map && c_map && + c_set && c_entry && c_iterator && c_integer && c_float && c_biconsumer && c_llama_error && c_error_oom)) { goto error; } @@ -737,8 +132,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // create references c_llama_model = (jclass)env->NewGlobalRef(c_llama_model); c_llama_iterator = (jclass)env->NewGlobalRef(c_llama_iterator); - c_infer_params = (jclass)env->NewGlobalRef(c_infer_params); - c_model_params = (jclass)env->NewGlobalRef(c_model_params); c_output = (jclass)env->NewGlobalRef(c_output); c_string = (jclass)env->NewGlobalRef(c_string); c_hash_map = (jclass)env->NewGlobalRef(c_hash_map); @@ -748,17 +141,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_iterator = (jclass)env->NewGlobalRef(c_iterator); c_integer = (jclass)env->NewGlobalRef(c_integer); c_float = (jclass)env->NewGlobalRef(c_float); - c_log_level = (jclass)env->NewGlobalRef(c_log_level); c_biconsumer = (jclass)env->NewGlobalRef(c_biconsumer); c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); - c_split_mode = (jclass)env->NewGlobalRef(c_split_mode); - c_log_format = (jclass)env->NewGlobalRef(c_log_format); - c_miro_stat = (jclass)env->NewGlobalRef(c_miro_stat); - c_numa_strategy = (jclass)env->NewGlobalRef(c_numa_strategy); - c_pooling_type = (jclass)env->NewGlobalRef(c_pooling_type); - c_rope_scaling = (jclass)env->NewGlobalRef(c_rope_scaling); - c_sampler = (jclass)env->NewGlobalRef(c_sampler); // find constructors cc_output = env->GetMethodID(c_output, "", "(I[BLjava/util/Map;)V"); @@ -792,178 +177,25 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // find fields f_model_pointer = env->GetFieldID(c_llama_model, "ctx", "J"); + f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); f_iter_has_next = env->GetFieldID(c_llama_iterator, "hasNext", "Z"); f_iter_n_generated = env->GetFieldID(c_llama_iterator, "generatedCount", "J"); f_iter_token_index = env->GetFieldID(c_llama_iterator, "tokenIndex", "J"); - if (!(f_model_pointer && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) - { - goto error; - } - - // find inference parameters fields - f_cache_prompt = env->GetFieldID(c_infer_params, "cachePrompt", "I"); - f_n_predict = env->GetFieldID(c_infer_params, "nPredict", "I"); - f_top_k = env->GetFieldID(c_infer_params, "topK", "I"); - f_top_p = env->GetFieldID(c_infer_params, "topP", "F"); - f_min_p = env->GetFieldID(c_infer_params, "minP", "F"); - f_tfs_z = env->GetFieldID(c_infer_params, "tfsZ", "F"); - f_typical_p = env->GetFieldID(c_infer_params, "typicalP", "F"); - f_temp = env->GetFieldID(c_infer_params, "temperature", "F"); - f_dynatemp_range = env->GetFieldID(c_infer_params, "dynamicTemperatureRange", "F"); - f_dynatemp_exponent = env->GetFieldID(c_infer_params, "dynamicTemperatureExponent", "F"); - f_penalty_last_n = env->GetFieldID(c_infer_params, "repeatLastN", "I"); - f_penalty_repeat = env->GetFieldID(c_infer_params, "repeatPenalty", "F"); - f_penalty_freq = env->GetFieldID(c_infer_params, "frequencyPenalty", "F"); - f_penalty_present = env->GetFieldID(c_infer_params, "presencePenalty", "F"); - f_mirostat = env->GetFieldID(c_infer_params, "mirostat", "Lde/kherud/llama/args/MiroStat;"); - f_mirostat_tau = env->GetFieldID(c_infer_params, "mirostatTau", "F"); - f_mirostat_eta = env->GetFieldID(c_infer_params, "mirostatEta", "F"); - f_penalize_nl = env->GetFieldID(c_infer_params, "penalizeNl", "Z"); - f_n_keep = env->GetFieldID(c_infer_params, "nKeep", "I"); - f_n_discard = env->GetFieldID(c_infer_params, "nDiscard", "I"); - f_infer_seed = env->GetFieldID(c_infer_params, "seed", "I"); - f_n_probs = env->GetFieldID(c_infer_params, "nProbs", "I"); - f_min_keep = env->GetFieldID(c_infer_params, "minKeep", "I"); - f_grammar = env->GetFieldID(c_infer_params, "grammar", "Ljava/lang/String;"); - f_ignore_eos = env->GetFieldID(c_infer_params, "ignoreEos", "Z"); - f_logit_bias = env->GetFieldID(c_infer_params, "logitBias", "Ljava/util/Map;"); - f_antiprompt = env->GetFieldID(c_infer_params, "stopStrings", "[Ljava/lang/String;"); - - if (!(f_cache_prompt && f_n_predict && f_top_k && f_top_p && f_min_p && f_tfs_z && f_typical_p && f_temp && - f_dynatemp_range && f_dynatemp_exponent && f_penalty_last_n && f_penalty_repeat && f_penalty_freq && - f_penalty_present && f_mirostat && f_mirostat_tau && f_mirostat_eta && f_penalize_nl && f_n_keep && - f_n_discard && f_infer_seed && f_n_probs && f_min_keep && f_grammar && f_ignore_eos && f_logit_bias && - f_antiprompt)) - { - goto error; - } - - // find model parameters fields - f_model_seed = env->GetFieldID(c_model_params, "seed", "I"); - f_model_path = env->GetFieldID(c_model_params, "modelFilePath", "Ljava/lang/String;"); - f_model_url = env->GetFieldID(c_model_params, "modelUrl", "Ljava/lang/String;"); - f_model_hf_repo = env->GetFieldID(c_model_params, "huggingFaceRepository", "Ljava/lang/String;"); - f_model_hf_file = env->GetFieldID(c_model_params, "huggingFaceFile", "Ljava/lang/String;"); - f_model_alias = env->GetFieldID(c_model_params, "modelAlias", "Ljava/lang/String;"); - f_n_ctx = env->GetFieldID(c_model_params, "nCtx", "I"); - f_rope_scaling_type = env->GetFieldID(c_model_params, "ropeScalingType", "Lde/kherud/llama/args/RopeScalingType;"); - f_rope_freq_base = env->GetFieldID(c_model_params, "ropeFreqBase", "F"); - f_rope_freq_scale = env->GetFieldID(c_model_params, "ropeFreqScale", "F"); - f_yarn_ext_factor = env->GetFieldID(c_model_params, "yarnExtFactor", "F"); - f_yarn_attn_factor = env->GetFieldID(c_model_params, "yarnAttnFactor", "F"); - f_yarn_beta_fast = env->GetFieldID(c_model_params, "yarnBetaFast", "F"); - f_yarn_beta_slow = env->GetFieldID(c_model_params, "yarnBetaSlow", "F"); - f_pooling_type = env->GetFieldID(c_model_params, "poolingType", "Lde/kherud/llama/args/PoolingType;"); - f_defrag_thold = env->GetFieldID(c_model_params, "defragmentationThreshold", "F"); - f_n_threads = env->GetFieldID(c_model_params, "nThreads", "I"); - f_grp_attn_n = env->GetFieldID(c_model_params, "groupAttnN", "I"); - f_grp_attn_w = env->GetFieldID(c_model_params, "groupAttnW", "I"); - f_n_threads_batch = env->GetFieldID(c_model_params, "nThreadsBatch", "I"); - f_n_batch = env->GetFieldID(c_model_params, "nBatch", "I"); - f_n_ubatch = env->GetFieldID(c_model_params, "nUBatch", "I"); - f_n_gpu_layers = env->GetFieldID(c_model_params, "nGpuLayers", "I"); - f_no_kv_offload = env->GetFieldID(c_model_params, "noKVOffload", "Z"); - f_split_mode = env->GetFieldID(c_model_params, "gpuSplitMode", "Lde/kherud/llama/args/GpuSplitMode;"); - f_tensor_split = env->GetFieldID(c_model_params, "tensorSplit", "[F;"); - f_main_gpu = env->GetFieldID(c_model_params, "mainGpu", "I"); - f_verbose = env->GetFieldID(c_model_params, "verbose", "Z"); - f_use_mlock = env->GetFieldID(c_model_params, "useMlock", "Z"); - f_use_mmap = env->GetFieldID(c_model_params, "useMmap", "Z"); - f_numa_strategy = env->GetFieldID(c_model_params, "numa", "Lde/kherud/llama/args/NumaStrategy;"); - f_embedding = env->GetFieldID(c_model_params, "embedding", "Z"); - f_cont_batching = env->GetFieldID(c_model_params, "continuousBatching", "Z"); - f_n_parallel = env->GetFieldID(c_model_params, "nParallel", "I"); - f_n_predict = env->GetFieldID(c_model_params, "nPredict", "I"); - f_system_prompt_file = env->GetFieldID(c_model_params, "systemPromptFile", "Ljava/lang/String;"); - f_log_format = env->GetFieldID(c_model_params, "logFormat", "Lde/kherud/llama/args/LogFormat;"); - - if (!(f_model_seed && f_model_path && f_model_url && f_model_hf_repo && f_model_hf_file && f_model_alias && - f_n_ctx && f_rope_scaling_type && f_rope_freq_base && f_rope_freq_scale && f_yarn_ext_factor && - f_yarn_attn_factor && f_yarn_beta_fast && f_yarn_beta_slow && f_pooling_type && f_defrag_thold && - f_n_threads && f_grp_attn_n && f_grp_attn_w && f_n_threads_batch && f_n_batch && f_n_ubatch && - f_n_gpu_layers && f_no_kv_offload && f_split_mode && f_tensor_split && f_main_gpu && f_verbose && - f_use_mlock && f_use_mmap && f_numa_strategy && f_embedding && f_cont_batching && f_n_parallel && - f_n_predict && f_system_prompt_file && f_log_format)) + if (!(f_model_pointer && f_utf_8 && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) { goto error; } - f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); - - f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); - f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); - f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); - f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); - - f_rope_scaling_none = env->GetStaticFieldID(c_log_level, "UNSPECIFIED", "Lde/kherud/llama/args/RopeScalingType;"); - f_rope_scaling_linear = env->GetStaticFieldID(c_log_level, "LINEAR", "Lde/kherud/llama/args/RopeScalingType;"); - f_rope_scaling_yarn = env->GetStaticFieldID(c_log_level, "YARN", "Lde/kherud/llama/args/RopeScalingType;"); - - f_pooling_type_none = env->GetStaticFieldID(c_log_level, "UNSPECIFIED", "Lde/kherud/llama/args/PoolingType;"); - f_pooling_type_mean = env->GetStaticFieldID(c_log_level, "MEAN", "Lde/kherud/llama/args/PoolingType;"); - f_pooling_type_cls = env->GetStaticFieldID(c_log_level, "CLS", "Lde/kherud/llama/args/PoolingType;"); - - f_split_mode_none = env->GetStaticFieldID(c_log_level, "NONE", "Lde/kherud/llama/args/GpuSplitMode;"); - f_split_mode_layer = env->GetStaticFieldID(c_log_level, "LAYER", "Lde/kherud/llama/args/GpuSplitMode;"); - f_split_mode_row = env->GetStaticFieldID(c_log_level, "ROW", "Lde/kherud/llama/args/GpuSplitMode;"); - - f_numa_strategy_distribute = - env->GetStaticFieldID(c_log_level, "DISTRIBUTE", "Lde/kherud/llama/args/NumaStrategy;"); - f_numa_strategy_isolate = env->GetStaticFieldID(c_log_level, "ISOLATE", "Lde/kherud/llama/args/NumaStrategy;"); - f_numa_strategy_numactl = env->GetStaticFieldID(c_log_level, "NUMA_CTL", "Lde/kherud/llama/args/NumaStrategy;"); - - f_log_format_json = env->GetStaticFieldID(c_log_level, "JSON", "Lde/kherud/llama/args/LogFormat;"); - f_log_format_text = env->GetStaticFieldID(c_log_level, "TEXT", "Lde/kherud/llama/args/LogFormat;"); - - f_mirostat_v1 = env->GetStaticFieldID(c_log_level, "V1", "Lde/kherud/llama/args/MiroStat;"); - f_mirostat_v2 = env->GetStaticFieldID(c_log_level, "V2", "Lde/kherud/llama/args/MiroStat;"); + o_utf_8 = env->NewStringUTF("UTF-8"); - if (!(f_utf_8 && f_log_level_debug && f_log_level_info && f_log_level_warn && f_log_level_error && - f_rope_scaling_none && f_rope_scaling_linear && f_rope_scaling_yarn && f_pooling_type_none && - f_pooling_type_mean && f_pooling_type_cls && f_split_mode_none && f_split_mode_layer && f_split_mode_row && - f_numa_strategy_distribute && f_numa_strategy_isolate && f_numa_strategy_numactl && f_log_format_json && - f_log_format_text && f_mirostat_v1 && f_mirostat_v2)) + if (!(o_utf_8)) { goto error; } - // o_utf_8 = env->GetStaticObjectField(c_standard_charsets, f_utf_8); - o_utf_8 = env->NewStringUTF("UTF-8"); o_utf_8 = (jclass)env->NewGlobalRef(o_utf_8); - o_log_level_debug = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_debug)); - o_log_level_info = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_info)); - o_log_level_warn = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_warn)); - o_log_level_error = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_level, f_log_level_error)); - - o_rope_scaling_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_none)); - o_rope_scaling_linear = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_linear)); - o_rope_scaling_yarn = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_rope_scaling, f_rope_scaling_yarn)); - - o_pooling_type_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_none)); - o_pooling_type_mean = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_mean)); - o_pooling_type_cls = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_pooling_type, f_pooling_type_cls)); - - o_split_mode_none = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_none)); - o_split_mode_layer = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_layer)); - o_split_mode_row = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_split_mode, f_split_mode_row)); - - o_numa_strategy_distribute = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_distribute)); - o_numa_strategy_isolate = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_isolate)); - o_numa_strategy_numactl = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_numa_strategy, f_numa_strategy_numactl)); - - o_log_format_json = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_format, f_log_format_json)); - o_log_format_text = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_log_format, f_log_format_text)); - - o_mirostat_v1 = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_miro_stat, f_mirostat_v1)); - o_mirostat_v2 = (jobject)env->NewGlobalRef(env->GetStaticObjectField(c_miro_stat, f_mirostat_v2)); - - if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error)) - { - goto error; - } - if (env->ExceptionCheck()) { env->ExceptionDescribe(); @@ -996,8 +228,6 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_llama_model); env->DeleteGlobalRef(c_llama_iterator); - env->DeleteGlobalRef(c_infer_params); - env->DeleteGlobalRef(c_model_params); env->DeleteGlobalRef(c_output); env->DeleteGlobalRef(c_string); env->DeleteGlobalRef(c_hash_map); @@ -1007,50 +237,23 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_iterator); env->DeleteGlobalRef(c_integer); env->DeleteGlobalRef(c_float); - env->DeleteGlobalRef(c_log_level); env->DeleteGlobalRef(c_biconsumer); env->DeleteGlobalRef(c_llama_error); env->DeleteGlobalRef(c_error_oom); - env->DeleteGlobalRef(c_split_mode); - env->DeleteGlobalRef(c_log_format); - env->DeleteGlobalRef(c_miro_stat); - env->DeleteGlobalRef(c_numa_strategy); - env->DeleteGlobalRef(c_pooling_type); - env->DeleteGlobalRef(c_rope_scaling); - env->DeleteGlobalRef(c_sampler); env->DeleteGlobalRef(o_utf_8); - env->DeleteGlobalRef(o_log_level_debug); - env->DeleteGlobalRef(o_log_level_info); - env->DeleteGlobalRef(o_log_level_warn); - env->DeleteGlobalRef(o_log_level_error); - env->DeleteGlobalRef(o_rope_scaling_none); - env->DeleteGlobalRef(o_rope_scaling_linear); - env->DeleteGlobalRef(o_rope_scaling_yarn); - env->DeleteGlobalRef(o_pooling_type_none); - env->DeleteGlobalRef(o_pooling_type_mean); - env->DeleteGlobalRef(o_pooling_type_cls); - env->DeleteGlobalRef(o_split_mode_none); - env->DeleteGlobalRef(o_split_mode_layer); - env->DeleteGlobalRef(o_split_mode_row); - env->DeleteGlobalRef(o_numa_strategy_distribute); - env->DeleteGlobalRef(o_numa_strategy_isolate); - env->DeleteGlobalRef(o_numa_strategy_numactl); - env->DeleteGlobalRef(o_log_format_json); - env->DeleteGlobalRef(o_log_format_text); - env->DeleteGlobalRef(o_mirostat_v1); - env->DeleteGlobalRef(o_mirostat_v2); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring file_path, - jobject jparams) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring jparams) { gpt_params params; server_params sparams; server_context ctx_server; - server_params_parse(env, jparams, sparams, params); + std::string c_params = parse_jstring(env, jparams); + json json_params = json::parse(c_params); + server_params_parse(json_params, sparams, params); if (!sparams.system_prompt.empty()) { @@ -1121,7 +324,19 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo }); } - env->SetLongField(obj, f_model_pointer, reinterpret_cast(llama)); + ctx_server.queue_tasks.on_new_task( + std::bind(&server_context::process_single_task, &ctx_server, std::placeholders::_1)); + ctx_server.queue_tasks.on_finish_multitask( + std::bind(&server_context::on_finish_multitask, &ctx_server, std::placeholders::_1)); + ctx_server.queue_tasks.on_update_slots(std::bind(&server_context::update_slots, &ctx_server)); + ctx_server.queue_results.on_multitask_update(std::bind(&server_queue::update_multitask, &ctx_server.queue_tasks, + std::placeholders::_1, std::placeholders::_2, + std::placeholders::_3)); + + std::thread t([&]() { ctx_server.queue_tasks.start_loop(); }); + t.detach(); + + env->SetLongField(obj, f_model_pointer, reinterpret_cast(&ctx_server)); } // JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, @@ -1248,48 +463,38 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo // return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); // } // -// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring prompt, -// jobject params) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// llama->rewind(); -// -// llama_reset_timings(llama->ctx); -// -// setup_answering(env, llama, prompt, params); -// -// llama->loadPrompt(); -// llama->beginCompletion(); -// -// size_t stop_pos = std::string::npos; -// -// while (llama->has_next_token) -// { -// const completion_token_output token_with_probs = llama->doCompletion(); -// const std::string token_text = -// token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); -// -// stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); -// } -// -// if (stop_pos == std::string::npos) -// { -// stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); -// } -// if (stop_pos != std::string::npos) -// { -// llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); -// } -// -// // llama->lock().release(); -// // llama->mutex.unlock(); -// -// return parse_jbytes(env, llama->generated_text); -// } +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring jprompt, + jstring jparams) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); + + std::string c_params = parse_jstring(env, jparams); + json json_params = json::parse(c_params); + json_params["prompt"] = parse_jstring(env, jprompt); + + const int id_task = ctx_server->queue_tasks.get_new_id(); + + ctx_server->queue_results.add_waiting_task_id(id_task); + + std::cout << "E" << std::endl; + + ctx_server->request_completion(id_task, -1, json_params, false, false); + + std::cout << "F" << std::endl; + + server_task_result result = ctx_server->queue_results.recv(id_task); + std::string response = result.data.get(); + + if (result.error || !result.stop) + { + env->ThrowNew(c_llama_error, response.c_str()); + return nullptr; + } + ctx_server->queue_results.remove_waiting_task_id(id_task); + + return parse_jbytes(env, response); +} // // JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, // jstring suffix, jobject params) From 0225d11794e5b8e896a18f233982ca7cc7c95e9d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 13:26:00 +0200 Subject: [PATCH 137/384] Remove log level class --- src/main/java/de/kherud/llama/LogLevel.java | 28 --------------------- 1 file changed, 28 deletions(-) delete mode 100644 src/main/java/de/kherud/llama/LogLevel.java diff --git a/src/main/java/de/kherud/llama/LogLevel.java b/src/main/java/de/kherud/llama/LogLevel.java deleted file mode 100644 index 25520f0e..00000000 --- a/src/main/java/de/kherud/llama/LogLevel.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.kherud.llama; - -/** - * This enum represents the native log levels of llama.cpp. - */ -public enum LogLevel { - - DEBUG(-1), - INFO(4), - WARN(3), - ERROR(2); - - private final int code; - - LogLevel(int code) { - this.code = code; - } - - /** - * Returns the native log level code of this option - * - * @return the native code - */ - int getCode() { - return code; - } - -} From 19a1a4339e9ba706a4abd0ecb4ecb2b84dd24625 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 15:23:28 +0200 Subject: [PATCH 138/384] Add verbose output flag --- CMakeLists.txt | 8 +++++++- src/main/cpp/server.hpp | 3 --- src/main/cpp/utils.hpp | 28 ++++++++-------------------- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bddd1c1..6e942ab1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ project(jllama CXX) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) +option(LLAMA_VERBOSE "llama: verbose output" OFF) + #################### llama.cpp #################### include(FetchContent) @@ -86,12 +88,16 @@ if(NOT JNI_INCLUDE_DIRS) message(FATAL_ERROR "Could not determine JNI include directories") endif() -add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.cpp src/main/cpp/utils.cpp) +add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.hpp src/main/cpp/utils.hpp) target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) +target_compile_definitions(jllama PRIVATE + SERVER_VERBOSE=$ +) + if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 5d16a1e6..81c53324 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -14,7 +14,6 @@ #include #include -bool server_verbose = false; bool server_log_json = true; enum stop_type @@ -485,8 +484,6 @@ struct server_queue { LOG_VERBOSE("new task may arrive", {}); - std::cout << "hello, X" << std::endl; - while (true) { std::unique_lock lock(mutex_tasks); diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 4bf1d858..636b322f 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -25,33 +25,21 @@ enum error_type { ERROR_TYPE_NOT_SUPPORTED, // custom error }; -extern bool server_verbose; extern bool server_log_json; #ifndef SERVER_VERBOSE #define SERVER_VERBOSE 1 #endif +#if SERVER_VERBOSE != 1 +#define LOG_VERBOSE(MSG, ...) +#else #define LOG_VERBOSE(MSG, ...) \ do \ { \ - if (server_verbose) \ - { \ - server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ - } \ + server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ } while (0) -//#if SERVER_VERBOSE != 1 -//#define LOG_VERBOSE(MSG, ...) -//#else -//#define LOG_VERBOSE(MSG, ...) \ -// do \ -// { \ -// if (server_verbose) \ -// { \ -// server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ -// } \ -// } while (0) -//#endif +#endif #define LOG_ERROR( MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) #define LOG_WARNING(MSG, ...) server_log("WARN", __func__, __LINE__, MSG, __VA_ARGS__) @@ -477,9 +465,9 @@ static json format_final_response_oaicompat(const json & request, json result, c {"id", completion_id} }; - if (server_verbose) { - res["__verbose"] = result; - } +#if SERVER_VERBOSE + res["__verbose"] = result; +#endif if (result.contains("completion_probabilities")) { res["completion_probabilities"] = json_value(result, "completion_probabilities", json::array()); From 24ca439a53843ff3a4c3d4ce6f7ed1e60d406c1b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 15:23:56 +0200 Subject: [PATCH 139/384] Working completion --- src/main/cpp/jllama.cpp | 53 +++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 15d41265..1f10ad26 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -249,7 +249,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo gpt_params params; server_params sparams; - server_context ctx_server; + server_context *ctx_server = new server_context(); std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); @@ -257,7 +257,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo if (!sparams.system_prompt.empty()) { - ctx_server.system_prompt_set(sparams.system_prompt); + ctx_server->system_prompt_set(sparams.system_prompt); } if (params.model_alias == "unknown") @@ -280,7 +280,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::atomic state{SERVER_STATE_LOADING_MODEL}; // load the model - if (!ctx_server.load_model(params)) + if (!ctx_server->load_model(params)) { state.store(SERVER_STATE_ERROR); env->ThrowNew(c_llama_error, "could not load model from given file path"); @@ -288,18 +288,18 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo } else { - ctx_server.init(); + ctx_server->init(); state.store(SERVER_STATE_READY); } LOG_INFO("model loaded", {}); - const auto model_meta = ctx_server.model_meta(); + const auto model_meta = ctx_server->model_meta(); // if a custom chat template is not supplied, we will use the one that comes with the model (if any) if (sparams.chat_template.empty()) { - if (!ctx_server.validate_model_chat_template()) + if (!ctx_server->validate_model_chat_template()) { LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " "may cause the model to output suboptimal responses", @@ -316,7 +316,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo chat.push_back({{"role", "assistant"}, {"content", "Hi there"}}); chat.push_back({{"role", "user"}, {"content", "How are you?"}}); - const std::string chat_example = format_chat(ctx_server.model, sparams.chat_template, chat); + const std::string chat_example = format_chat(ctx_server->model, sparams.chat_template, chat); LOG_INFO("chat template", { {"chat_example", chat_example}, @@ -324,19 +324,19 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo }); } - ctx_server.queue_tasks.on_new_task( - std::bind(&server_context::process_single_task, &ctx_server, std::placeholders::_1)); - ctx_server.queue_tasks.on_finish_multitask( - std::bind(&server_context::on_finish_multitask, &ctx_server, std::placeholders::_1)); - ctx_server.queue_tasks.on_update_slots(std::bind(&server_context::update_slots, &ctx_server)); - ctx_server.queue_results.on_multitask_update(std::bind(&server_queue::update_multitask, &ctx_server.queue_tasks, - std::placeholders::_1, std::placeholders::_2, - std::placeholders::_3)); + ctx_server->queue_tasks.on_new_task( + std::bind(&server_context::process_single_task, ctx_server, std::placeholders::_1)); + ctx_server->queue_tasks.on_finish_multitask( + std::bind(&server_context::on_finish_multitask, ctx_server, std::placeholders::_1)); + ctx_server->queue_tasks.on_update_slots(std::bind(&server_context::update_slots, ctx_server)); + ctx_server->queue_results.on_multitask_update(std::bind(&server_queue::update_multitask, &ctx_server->queue_tasks, + std::placeholders::_1, std::placeholders::_2, + std::placeholders::_3)); - std::thread t([&]() { ctx_server.queue_tasks.start_loop(); }); + std::thread t([ctx_server]() { ctx_server->queue_tasks.start_loop(); }); t.detach(); - env->SetLongField(obj, f_model_pointer, reinterpret_cast(&ctx_server)); + env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); } // JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, @@ -474,26 +474,23 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *e json_params["prompt"] = parse_jstring(env, jprompt); const int id_task = ctx_server->queue_tasks.get_new_id(); - ctx_server->queue_results.add_waiting_task_id(id_task); - - std::cout << "E" << std::endl; - ctx_server->request_completion(id_task, -1, json_params, false, false); - std::cout << "F" << std::endl; - server_task_result result = ctx_server->queue_results.recv(id_task); - std::string response = result.data.get(); - if (result.error || !result.stop) + if (!result.error && result.stop) { + std::string response = result.data["content"].get(); + ctx_server->queue_results.remove_waiting_task_id(id_task); + return parse_jbytes(env, response); + } + else + { + std::string response = result.data["message"].get(); env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - ctx_server->queue_results.remove_waiting_task_id(id_task); - - return parse_jbytes(env, response); } // // JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, From 90041535cdb2911a86eb1d6414e4b0f4a5fb0f91 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 17:50:36 +0200 Subject: [PATCH 140/384] Fix toJsonString --- .../llama/{args => }/JsonParameters.java | 54 ++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) rename src/main/java/de/kherud/llama/{args => }/JsonParameters.java (58%) diff --git a/src/main/java/de/kherud/llama/args/JsonParameters.java b/src/main/java/de/kherud/llama/JsonParameters.java similarity index 58% rename from src/main/java/de/kherud/llama/args/JsonParameters.java rename to src/main/java/de/kherud/llama/JsonParameters.java index 35c71a0c..ff037831 100644 --- a/src/main/java/de/kherud/llama/args/JsonParameters.java +++ b/src/main/java/de/kherud/llama/JsonParameters.java @@ -1,4 +1,4 @@ -package de.kherud.llama.args; +package de.kherud.llama; import java.util.HashMap; import java.util.Map; @@ -35,16 +35,58 @@ public String toString() { return builder.toString(); } + // taken from org.json.JSONObject#quote(String, Writer) String toJsonString(String text) { if (text == null) return null; StringBuilder builder = new StringBuilder((text.length()) + 2); + + char b; + char c = 0; + String hhhh; + int i; + int len = text.length(); + builder.append('"'); - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - if (c == '"' || c == '\\') { - builder.append('\\'); + for (i = 0; i < len; i += 1) { + b = c; + c = text.charAt(i); + switch (c) { + case '\\': + case '"': + builder.append('\\'); + builder.append(c); + break; + case '/': + if (b == '<') { + builder.append('\\'); + } + builder.append(c); + break; + case '\b': + builder.append("\\b"); + break; + case '\t': + builder.append("\\t"); + break; + case '\n': + builder.append("\\n"); + break; + case '\f': + builder.append("\\f"); + break; + case '\r': + builder.append("\\r"); + break; + default: + if (c < ' ' || (c >= '\u0080' && c < '\u00a0') || (c >= '\u2000' && c < '\u2100')) { + builder.append("\\u"); + hhhh = Integer.toHexString(c); + builder.append("0000", 0, 4 - hhhh.length()); + builder.append(hhhh); + } else { + builder.append(c); + } } - builder.append(c); } builder.append('"'); return builder.toString(); From b91e5339022dcde9c59e74349548c798b64b7d72 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:33:03 +0200 Subject: [PATCH 141/384] Add encode, decode, delete calls --- src/main/cpp/jllama.cpp | 190 ++++++++++------------------------------ 1 file changed, 46 insertions(+), 144 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 1f10ad26..1f4721cb 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -492,147 +492,49 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *e return nullptr; } } -// -// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill(JNIEnv *env, jobject obj, jstring prefix, -// jstring suffix, jobject params) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// llama->rewind(); -// -// llama_reset_timings(llama->ctx); -// -// setup_infilling(env, llama, prefix, suffix, params); -// -// llama->loadInfill(); -// llama->beginCompletion(); -// -// size_t stop_pos = std::string::npos; -// -// while (llama->has_next_token) -// { -// const completion_token_output token_with_probs = llama->doCompletion(); -// const std::string token_text = -// token_with_probs.tok == -1 ? "" : llama_token_to_piece(llama->ctx, token_with_probs.tok); -// -// stop_pos = llama->findStoppingStrings(llama->generated_text, token_text.size(), STOP_FULL); -// } -// -// if (stop_pos == std::string::npos) -// { -// stop_pos = llama->findStoppingStrings(llama->generated_text, 0, STOP_PARTIAL); -// } -// if (stop_pos != std::string::npos) -// { -// llama->generated_text.erase(llama->generated_text.begin() + stop_pos, llama->generated_text.end()); -// } -// -// // llama->lock().release(); -// // llama->mutex.unlock(); -// -// return parse_jbytes(env, llama->generated_text); -// } -// -// JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring java_prompt) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// llama->rewind(); -// llama_reset_timings(llama->ctx); -// llama->prompt = parse_jstring(env, java_prompt); -// llama->params.n_predict = 0; -// llama->loadPrompt(); -// llama->beginCompletion(); -// llama->doCompletion(); -// -// static const int n_embd = llama_n_embd(llama->model); -// const float *data = llama_get_embeddings(llama->ctx); -// std::vector embedding(data, data + n_embd); -// -// jfloatArray java_embedding = env->NewFloatArray(embedding.size()); -// if (java_embedding == nullptr) -// { -// env->ThrowNew(c_error_oom, "could not allocate embedding"); -// return nullptr; -// } -// -// env->SetFloatArrayRegion(java_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); -// -// return java_embedding; -// } -// -// JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// std::string prompt = parse_jstring(env, jprompt); -// std::vector tokens = llama->tokenize(prompt, false); -// -// jintArray java_tokens = env->NewIntArray(tokens.size()); -// if (java_tokens == nullptr) -// { -// env->ThrowNew(c_error_oom, "could not allocate tokens"); -// return nullptr; -// } -// -// env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); -// -// // lock.release(); -// return java_tokens; -// } -// -// JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, -// jintArray java_tokens) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// jsize length = env->GetArrayLength(java_tokens); -// jint *elements = env->GetIntArrayElements(java_tokens, nullptr); -// std::vector tokens(elements, elements + length); -// std::string text = tokens_to_str(llama->ctx, tokens.cbegin(), tokens.cend()); -// -// env->ReleaseIntArrayElements(java_tokens, elements, 0); -// -// // lock.release(); -// return parse_jbytes(env, text); -// } -// -// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject callback) -//{ -// env->GetJavaVM(&g_vm); -// -// if (g_log_callback != nullptr) -// { -// env->DeleteGlobalRef(g_log_callback); -// } -// -// if (callback == nullptr) -// { -// llama_log_set(nullptr, nullptr); -// } -// else -// { -// g_log_callback = env->NewGlobalRef(callback); -// llama_log_set(jllama_log_callback, nullptr); -// } -// } -// -// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// delete llama; -// } + +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); + + const std::string c_prompt = parse_jstring(env, jprompt); + std::vector tokens = ctx_server->tokenize(c_prompt, false); + + jintArray java_tokens = env->NewIntArray(tokens.size()); + if (java_tokens == nullptr) + { + env->ThrowNew(c_error_oom, "could not allocate token memory"); + return nullptr; + } + + env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); + + return java_tokens; +} + +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, + jintArray java_tokens) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); + + jsize length = env->GetArrayLength(java_tokens); + jint *elements = env->GetIntArrayElements(java_tokens, nullptr); + std::vector tokens(elements, elements + length); + std::string text = tokens_to_str(ctx_server->ctx, tokens.cbegin(), tokens.cend()); + + env->ReleaseIntArrayElements(java_tokens, elements, 0); + + return parse_jbytes(env, text); +} + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); + ctx_server->queue_tasks.terminate(); + // maybe we should keep track how many models were loaded before freeing the backend + llama_backend_free(); + delete ctx_server; +} From 892b61e1e9f16875b0f4536b59bff510dbf21f29 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:33:52 +0200 Subject: [PATCH 142/384] Add embed endpoint and infill option --- src/main/cpp/jllama.cpp | 227 ++++++++++++++++------------------------ 1 file changed, 88 insertions(+), 139 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 1f4721cb..fc9958de 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -49,11 +49,9 @@ static jmethodID m_biconsumer_accept = 0; // fields static jfieldID f_model_pointer = 0; +static jfieldID f_task_id = 0; static jfieldID f_utf_8 = 0; -// iterator static jfieldID f_iter_has_next = 0; -static jfieldID f_iter_n_generated = 0; -static jfieldID f_iter_token_index = 0; // objects static jobject o_utf_8 = 0; @@ -146,7 +144,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); // find constructors - cc_output = env->GetMethodID(c_output, "", "(I[BLjava/util/Map;)V"); + cc_output = env->GetMethodID(c_output, "", "([BLjava/util/Map;Z)V"); cc_hash_map = env->GetMethodID(c_hash_map, "", "()V"); cc_integer = env->GetMethodID(c_integer, "", "(I)V"); cc_float = env->GetMethodID(c_float, "", "(F)V"); @@ -177,12 +175,11 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // find fields f_model_pointer = env->GetFieldID(c_llama_model, "ctx", "J"); + f_task_id = env->GetFieldID(c_llama_iterator, "taskId", "I"); f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); f_iter_has_next = env->GetFieldID(c_llama_iterator, "hasNext", "Z"); - f_iter_n_generated = env->GetFieldID(c_llama_iterator, "generatedCount", "J"); - f_iter_token_index = env->GetFieldID(c_llama_iterator, "tokenIndex", "J"); - if (!(f_model_pointer && f_utf_8 && f_iter_has_next && f_iter_n_generated && f_iter_token_index)) + if (!(f_model_pointer && f_task_id && f_utf_8 && f_iter_has_next)) { goto error; } @@ -339,158 +336,110 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); } -// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator(JNIEnv *env, jobject obj, jstring prompt, -// jobject params) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// llama->rewind(); -// -// llama_reset_timings(llama->ctx); -// -// setup_answering(env, llama, prompt, params); -// -// llama->loadPrompt(); -// llama->beginCompletion(); -// } -// -// JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator(JNIEnv *env, jobject obj, jstring prefix, -// jstring suffix, jobject params) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// // auto lock = llama->lock(); -// -// llama->rewind(); -// -// llama_reset_timings(llama->ctx); -// -// setup_infilling(env, llama, prefix, suffix, params); -// -// llama->loadInfill(); -// llama->beginCompletion(); -// } -// -// JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext(JNIEnv *env, jobject obj, jobject iter) -//{ -// jlong llama_handle = env->GetLongField(obj, f_model_pointer); -// jllama_context *llama = reinterpret_cast(llama_handle); -// -// size_t sent_count = env->GetLongField(iter, f_iter_n_generated); -// size_t sent_token_probs_index = env->GetLongField(iter, f_iter_token_index); -// -// completion_token_output token_with_probs; -// while (llama->has_next_token) -// { -// token_with_probs = llama->doCompletion(); -// if (token_with_probs.tok >= 0 && llama->multibyte_pending <= 0) -// { -// break; -// } -// } -// const std::string token_text = llama_token_to_piece(llama->ctx, token_with_probs.tok); -// -// size_t pos = std::min(sent_count, llama->generated_text.size()); -// -// const std::string str_test = llama->generated_text.substr(pos); -// bool is_stop_full = false; -// size_t stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_FULL); -// if (stop_pos != std::string::npos) -// { -// is_stop_full = true; -// llama->generated_text.erase(llama->generated_text.begin() + pos + stop_pos, llama->generated_text.end()); -// pos = std::min(sent_count, llama->generated_text.size()); -// } -// else -// { -// is_stop_full = false; -// stop_pos = llama->findStoppingStrings(str_test, token_text.size(), STOP_PARTIAL); -// } -// -// std::string to_send; -// if (stop_pos == std::string::npos || -// // Send rest of the text if we are at the end of the generation -// (!llama->has_next_token && !is_stop_full && stop_pos > 0)) -// { -// to_send = llama->generated_text.substr(pos, std::string::npos); -// -// sent_count += to_send.size(); -// env->SetLongField(iter, f_iter_n_generated, sent_count); -// -// std::vector probs_output = {}; -// -// if (llama->params.sparams.n_probs > 0) -// { -// const std::vector to_send_toks = -// llama_tokenize(llama->ctx, to_send, false, llama->tokenize_special); -// size_t probs_pos = std::min(sent_token_probs_index, llama->generated_token_probs.size()); -// size_t probs_stop_pos = -// std::min(sent_token_probs_index + to_send_toks.size(), llama->generated_token_probs.size()); -// if (probs_pos < probs_stop_pos) -// { -// probs_output = -// std::vector(llama->generated_token_probs.begin() + probs_pos, -// llama->generated_token_probs.begin() + probs_stop_pos); -// } -// sent_token_probs_index = probs_stop_pos; -// env->SetLongField(iter, f_iter_token_index, sent_token_probs_index); -// } -// } -// else -// { -// to_send = ""; -// } -// -// if (!llama->has_next_token) -// { -// env->SetBooleanField(iter, f_iter_has_next, false); -// // llama.mutex.unlock(); -// // lock.release(); -// } -// -// jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); -// for (const auto &tp : token_with_probs.probs) -// { -// jobject jtoken = env->NewObject(c_integer, cc_integer, tp.tok); -// jobject jprob = env->NewObject(c_float, cc_float, tp.prob); -// env->CallObjectMethod(o_probabilities, m_map_put, jtoken, jprob); -// } -// jbyteArray jbytes = parse_jbytes(env, to_send); -// return env->NewObject(c_output, cc_output, token_with_probs.tok, jbytes, o_probabilities); -// } -// -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer(JNIEnv *env, jobject obj, jstring jprompt, - jstring jparams) +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) { jlong server_handle = env->GetLongField(obj, f_model_pointer); server_context *ctx_server = reinterpret_cast(server_handle); std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); - json_params["prompt"] = parse_jstring(env, jprompt); + const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); const int id_task = ctx_server->queue_tasks.get_new_id(); ctx_server->queue_results.add_waiting_task_id(id_task); - ctx_server->request_completion(id_task, -1, json_params, false, false); + ctx_server->request_completion(id_task, -1, json_params, infill, false); + + return id_task; +} + +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); server_task_result result = ctx_server->queue_results.recv(id_task); - if (!result.error && result.stop) + LOG_VERBOSE("data stream", {{"to_send", result.data}}); + + if (result.error) { - std::string response = result.data["content"].get(); - ctx_server->queue_results.remove_waiting_task_id(id_task); - return parse_jbytes(env, response); + std::string response = result.data["message"].get(); + env->ThrowNew(c_llama_error, response.c_str()); + return nullptr; } else + { + std::string response = result.data["content"].get(); + if (result.stop) + { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + if (result.data.contains("completion_probabilities")) + { + auto completion_probabilities = result.data["completion_probabilities"]; + for (const auto &entry : completion_probabilities) + { + auto probs = entry["probs"]; + for (const auto &tp : probs) + { + std::string tok_str = tp["tok_str"]; + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + float prob = tp["prob"]; + jobject jprob = env->NewObject(c_float, cc_float, prob); + env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); + env->DeleteLocalRef(jtok_str); + env->DeleteLocalRef(jprob); + } + } + } + + jbyteArray jbytes = parse_jbytes(env, response); + return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); + } +} + +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring jprompt) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + server_context *ctx_server = reinterpret_cast(server_handle); + + if (!ctx_server->params.embedding) { + env->ThrowNew(c_llama_error, "model was not loaded with embedding support (see ModelParameters#setEmbedding(boolean))"); + return nullptr; + } + + const std::string prompt = parse_jstring(env, jprompt); + + const int id_task = ctx_server->queue_tasks.get_new_id(); + ctx_server->queue_results.add_waiting_task_id(id_task); + ctx_server->request_completion(id_task, -1, {{"prompt", prompt}}, false, true); + + server_task_result result = ctx_server->queue_results.recv(id_task); + ctx_server->queue_results.remove_waiting_task_id(id_task); + if (result.error) { std::string response = result.data["message"].get(); env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } + else + { + std::cout << result.data << std::endl; + std::vector embedding = result.data["embedding"].get>(); + + jfloatArray j_embedding = env->NewFloatArray(embedding.size()); + if (j_embedding == nullptr) + { + env->ThrowNew(c_error_oom, "could not allocate embedding"); + return nullptr; + } + + env->SetFloatArrayRegion(j_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); + + return j_embedding; + } } JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) From eaa827d8898727cb101aa8f33af1fe76fbf7de60 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:34:23 +0200 Subject: [PATCH 143/384] Simplify JNI api --- src/main/cpp/jllama.h | 93 ------------ src/main/java/de/kherud/llama/LlamaModel.java | 133 ++++-------------- 2 files changed, 25 insertions(+), 201 deletions(-) delete mode 100644 src/main/cpp/jllama.h diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h deleted file mode 100644 index f599c836..00000000 --- a/src/main/cpp/jllama.h +++ /dev/null @@ -1,93 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class de_kherud_llama_LlamaModel */ - -#ifndef _Included_de_kherud_llama_LlamaModel -#define _Included_de_kherud_llama_LlamaModel -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: de_kherud_llama_LlamaModel - * Method: embed - * Signature: (Ljava/lang/String;)[F - */ -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: encode - * Signature: (Ljava/lang/String;)[I - */ -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: loadModel - * Signature: (Ljava/lang/String;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: newAnswerIterator - * Signature: (Ljava/lang/String;Ljava/lang/String;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newAnswerIterator - (JNIEnv *, jobject, jstring, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: newInfillIterator - * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_newInfillIterator - (JNIEnv *, jobject, jstring, jstring, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: getNext - * Signature: (Lde/kherud/llama/LlamaModel/LlamaIterator;)Lde/kherud/llama/LlamaModel/Output; - */ -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_getNext - (JNIEnv *, jobject, jobject); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: getAnswer - * Signature: (Ljava/lang/String;Ljava/lang/String;)[B - */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getAnswer - (JNIEnv *, jobject, jstring, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: getInfill - * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[B - */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_getInfill - (JNIEnv *, jobject, jstring, jstring, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: decodeBytes - * Signature: ([I)[B - */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes - (JNIEnv *, jobject, jintArray); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: delete - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 3e8c3cf6..79705648 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -8,9 +8,6 @@ import org.jetbrains.annotations.NotNull; -import de.kherud.llama.args.InferenceParameters; -import de.kherud.llama.args.ModelParameters; - /** * This class is a wrapper around the llama.cpp functionality. * Upon being created, it natively allocates memory for the model context. @@ -18,8 +15,8 @@ *

    * The main functionality of this class is: *

      - *
    • Streaming answers (and probabilities) via {@link #generate(String)}
    • - *
    • Creating whole responses to prompts via {@link #complete(String)}
    • + *
    • Streaming answers (and probabilities) via {@link #generate(InferenceParameters)}
    • + *
    • Creating whole responses to prompts via {@link #complete(InferenceParameters)}
    • *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters#setEmbedding(boolean)}
    • *
    • Accessing the tokenizer via {@link #encode(String)} and {@link #decode(int[])}
    • *
    @@ -48,98 +45,27 @@ public LlamaModel(ModelParameters parameters) { loadModel(parameters.toString()); } - /** - * Generate and return a whole answer with default parameters. Note, that the prompt isn't preprocessed in any - * way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prompt the LLM prompt - * @return an LLM response - */ - public String complete(String prompt) { - return complete(prompt, new InferenceParameters()); - } - /** * Generate and return a whole answer with custom parameters. Note, that the prompt isn't preprocessed in any * way, nothing like "User: ", "###Instruction", etc. is added. * - * @param prompt the LLM prompt - * @return an LLM response - */ - public String complete(String prompt, InferenceParameters parameters) { - byte[] bytes = getAnswer(prompt, parameters.toString()); - return new String(bytes, StandardCharsets.UTF_8); - } - - /** - * Infill a whole answer with default parameters. Note, that the prompt isn't preprocessed in any - * way. Nothing like "User: ", "###Instruction", etc. is added. - * - * @param prefix the prefix prompt of the completion to infill - * @param suffix the suffix prompt of the completion to infill - * @return an LLM response - */ - public String complete(String prefix, String suffix) { - return complete(prefix, suffix, new InferenceParameters()); - } - - /** - * Infill a whole answer with custom parameters. Note, that the prompt isn't preprocessed in any - * way. Nothing like "User: ", "###Instruction", etc. is added. - * - * @param prefix the prefix prompt of the completion to infill - * @param suffix the suffix prompt of the completion to infill * @return an LLM response */ - public String complete(String prefix, String suffix, InferenceParameters parameters) { - byte[] bytes = getInfill(prefix, suffix, parameters.toString()); - return new String(bytes, StandardCharsets.UTF_8); - } - - /** - * Generate and stream outputs with default inference parameters. Note, that the prompt isn't preprocessed in any - * way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prompt the LLM prompt - * @return iterable LLM outputs - */ - public Iterable generate(String prompt) { - return generate(prompt, new InferenceParameters()); + public String complete(InferenceParameters parameters) { + parameters.setStream(false); + int taskId = requestCompletion(parameters.toString()); + Output output = receiveCompletion(taskId); + return output.text; } /** * Generate and stream outputs with custom inference parameters. Note, that the prompt isn't preprocessed in any * way, nothing like "User: ", "###Instruction", etc. is added. * - * @param prompt the LLM prompt - * @return iterable LLM outputs - */ - public Iterable generate(String prompt, InferenceParameters parameters) { - return () -> new LlamaIterator(prompt, parameters); - } - - /** - * Infill and stream outputs with default inference parameters. Note, that the prompt isn't preprocessed in any - * way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prefix the prefix prompt of the completion to infill - * @param suffix the suffix prompt of the completion to infill * @return iterable LLM outputs */ - public Iterable generate(String prefix, String suffix) { - return generate(prefix, suffix, new InferenceParameters()); - } - - /** - * Infill and stream outputs with custom inference parameters. Note, that the prompt isn't preprocessed in any - * way, nothing like "User: ", "###Instruction", etc. is added. - * - * @param prefix the prefix prompt of the completion to infill - * @param suffix the suffix prompt of the completion to infill - * @return iterable LLM outputs - */ - public Iterable generate(String prefix, String suffix, InferenceParameters parameters) { - return () -> new LlamaIterator(prefix, suffix, parameters); + public Iterable generate(InferenceParameters parameters) { + return () -> new LlamaIterator(parameters); } /** @@ -185,32 +111,27 @@ public void close() { // don't overload native methods since the C++ function names get nasty private native void loadModel(String parameters) throws LlamaException; - private native void newAnswerIterator(String prompt, String parameters); - private native void newInfillIterator(String prefix, String suffix, String parameters); - private native Output getNext(LlamaIterator iterator); - private native byte[] getAnswer(String prompt, String parameters); - private native byte[] getInfill(String prefix, String suffix, String parameters); + private native int requestCompletion(String params) throws LlamaException; + private native Output receiveCompletion(int taskId) throws LlamaException; private native byte[] decodeBytes(int[] tokens); private native void delete(); /** - * A generated output of the LLM. Note that you have to configure {@link InferenceParameters#setNPredict(int)} + * A generated output of the LLM. Note that you have to configure {@link InferenceParameters#setNProbs(int)} * in order for probabilities to be returned. - * For multibyte outputs (unicode characters like emojis) only the last generated token and its probabilities - * are returned. */ public static final class Output { - public final int token; @NotNull public final String text; @NotNull - public final Map probabilities; + public final Map probabilities; + private final boolean stop; - private Output(int token, byte[] generated, @NotNull Map probabilities) { - this.token = token; + private Output(byte[] generated, @NotNull Map probabilities, boolean stop) { this.text = new String(generated, StandardCharsets.UTF_8); this.probabilities = probabilities; + this.stop = stop; } @Override @@ -220,23 +141,17 @@ public String toString() { } - // fields are modified by native code and thus should not be final - @SuppressWarnings("FieldMayBeFinal") private final class LlamaIterator implements Iterator { + private final int taskId; + @Native + @SuppressWarnings("FieldMayBeFinal") private boolean hasNext = true; - @Native - private long generatedCount = 0; - @Native - private long tokenIndex = 0; - - private LlamaIterator(String prompt, InferenceParameters parameters) { - newAnswerIterator(prompt, parameters.toString()); - } - private LlamaIterator(String prefix, String suffix, InferenceParameters parameters) { - newInfillIterator(prefix, suffix, parameters.toString()); + private LlamaIterator(InferenceParameters parameters) { + parameters.setStream(true); + taskId = requestCompletion(parameters.toString()); } @Override @@ -249,7 +164,9 @@ public Output next() { if (!hasNext) { throw new NoSuchElementException(); } - return getNext(this); + Output output = receiveCompletion(taskId); + hasNext = !output.stop; + return output; } } From 5104d4b2db8c698ea1eedef8d7963b80a530a1b2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:34:54 +0200 Subject: [PATCH 144/384] Add inference prompt parameters --- .../llama/{args => }/InferenceParameters.java | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) rename src/main/java/de/kherud/llama/{args => }/InferenceParameters.java (87%) diff --git a/src/main/java/de/kherud/llama/args/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java similarity index 87% rename from src/main/java/de/kherud/llama/args/InferenceParameters.java rename to src/main/java/de/kherud/llama/InferenceParameters.java index cf946078..f4933cca 100644 --- a/src/main/java/de/kherud/llama/args/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -1,15 +1,19 @@ -package de.kherud.llama.args; +package de.kherud.llama; import java.util.Map; -import de.kherud.llama.LlamaModel; +import de.kherud.llama.args.MiroStat; +import de.kherud.llama.args.Sampler; /** - * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(String)} and - * {@link LlamaModel#complete(String)}. + * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(InferenceParameters)} and + * {@link LlamaModel#complete(InferenceParameters)}. */ public final class InferenceParameters extends JsonParameters { + private static final String PARAM_PROMPT = "prompt"; + private static final String PARAM_INPUT_PREFIX = "input_prefix"; + private static final String PARAM_INPUT_SUFFIX = "input_suffix"; private static final String PARAM_CACHE_PROMPT = "cache_prompt"; private static final String PARAM_N_PREDICT = "n_predict"; private static final String PARAM_TOP_K = "top_k"; @@ -38,6 +42,36 @@ public final class InferenceParameters extends JsonParameters { private static final String PARAM_LOGIT_BIAS = "logit_bias"; private static final String PARAM_STOP = "stop"; private static final String PARAM_SAMPLERS = "samplers"; + private static final String PARAM_STREAM = "stream"; + + public InferenceParameters(String prompt) { + // we always need a prompt + setPrompt(prompt); + } + + /** + * Set the prompt to start generation with (default: empty) + */ + public InferenceParameters setPrompt(String prompt) { + parameters.put(PARAM_PROMPT, toJsonString(prompt)); + return this; + } + + /** + * Set a prefix for infilling (default: empty) + */ + public InferenceParameters setInputPrefix(String inputPrefix) { + parameters.put(PARAM_INPUT_PREFIX, toJsonString(inputPrefix)); + return this; + } + + /** + * Set a suffix for infilling (default: empty) + */ + public InferenceParameters setInputSuffix(String inputSuffix) { + parameters.put(PARAM_INPUT_SUFFIX, toJsonString(inputSuffix)); + return this; + } /** * Whether to remember the prompt to avoid reprocessing it @@ -315,4 +349,9 @@ public InferenceParameters setSamplers(Sampler... samplers) { } return this; } + + InferenceParameters setStream(boolean stream) { + parameters.put(PARAM_STREAM, String.valueOf(stream)); + return this; + } } From c6b96ffa4044cba6d7e3f51f076b573f3630a671 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:54:03 +0200 Subject: [PATCH 145/384] Update integration tests --- pom.xml | 84 ------------------- .../java/de/kherud/llama/LlamaModelIT.java | 57 +++++++------ 2 files changed, 28 insertions(+), 113 deletions(-) diff --git a/pom.xml b/pom.xml index 00b304a9..244a307f 100644 --- a/pom.xml +++ b/pom.xml @@ -48,9 +48,6 @@ 4.13.1 3.2.3 UTF-8 - ${project.basedir}/models - mistral-7b-instruct-v0.2.Q2_K.gguf - https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/${integration.test.model} @@ -81,87 +78,6 @@ - - - org.codehaus.mojo - exec-maven-plugin - 3.0.0 - - test - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${test.plugin.version} - - - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${test.plugin.version} - - - - model.home - ${integration.test.model} - ${model.home} - - - - - - integration-test - verify - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 3.0.0 - - - Download the integration test model if it doesn't exist - pre-integration-test - - - - - - - - - - - - - - - - - - - - - - - - - - - run - - - - diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 7207bebd..beedac43 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -12,45 +12,41 @@ public class LlamaModelIT { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; - private static String logOutput = ""; private static final int nPredict = 10; private static LlamaModel model; @BeforeClass public static void setup() { - LlamaModel.setLogger((level, msg) -> logOutput += msg); - ModelParameters params = new ModelParameters() - .setNGpuLayers(43) - .setEmbedding(true); - model = new LlamaModel(ModelResolver.getPathToITModel(), params); + model = new LlamaModel( + new ModelParameters() + .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setNGpuLayers(43) + .setEmbedding(true) + ); } @AfterClass public static void tearDown() { - if(model != null) { + if (model != null) { model.close(); } } - @Test - public void testLogOutput() { - Assert.assertFalse(logOutput.isEmpty()); - } - @Test public void testGenerateAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters(prefix) .setTemperature(0.95f) - .setAntiPrompt("\"\"\"") + .setStopStrings("\"\"\"") .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); int generated = 0; - for (LlamaModel.Output ignored : model.generate(prefix, params)) { + for (LlamaModel.Output ignored : model.generate(params)) { generated++; } Assert.assertTrue(generated > 0 && generated <= nPredict); @@ -60,15 +56,17 @@ public void testGenerateAnswer() { public void testGenerateInfill() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters("") + .setInputPrefix(prefix) + .setInputSuffix(suffix) .setTemperature(0.95f) - .setAntiPrompt("\"\"\"") + .setStopStrings("\"\"\"") .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); int generated = 0; - for (LlamaModel.Output ignored : model.generate(prefix, suffix, params)) { + for (LlamaModel.Output ignored : model.generate(params)) { generated++; } Assert.assertTrue(generated > 0 && generated <= nPredict); @@ -76,11 +74,11 @@ public void testGenerateInfill() { @Test public void testGenerateGrammar() { - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters("") .setGrammar("root ::= (\"a\" | \"b\")+") .setNPredict(nPredict); StringBuilder sb = new StringBuilder(); - for (LlamaModel.Output output : model.generate("", params)) { + for (LlamaModel.Output output : model.generate(params)) { sb.append(output); } String output = sb.toString(); @@ -94,14 +92,14 @@ public void testGenerateGrammar() { public void testCompleteAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters(prefix) .setTemperature(0.95f) - .setAntiPrompt("\"\"\"") + .setStopStrings("\"\"\"") .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); - String output = model.complete(prefix, params); + String output = model.complete(params); Assert.assertFalse(output.isEmpty()); } @@ -109,23 +107,25 @@ public void testCompleteAnswer() { public void testCompleteInfillCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters("") + .setInputPrefix(prefix) + .setInputSuffix(suffix) .setTemperature(0.95f) - .setAntiPrompt("\"\"\"") + .setStopStrings("\"\"\"") .setNPredict(nPredict) .setLogitBias(logitBias) .setSeed(42); - String output = model.complete(prefix, suffix, params); + String output = model.complete(params); Assert.assertFalse(output.isEmpty()); } @Test public void testCompleteGrammar() { - InferenceParameters params = new InferenceParameters() + InferenceParameters params = new InferenceParameters("") .setGrammar("root ::= (\"a\" | \"b\")+") .setNPredict(nPredict); - String output = model.complete("", params); + String output = model.complete(params); Assert.assertTrue(output.matches("[ab]+")); int generated = model.encode(output).length; Assert.assertTrue(generated > 0 && generated <= nPredict); @@ -145,5 +145,4 @@ public void testTokenization() { // the llama tokenizer adds a space before the prompt Assert.assertEquals(" " + prompt, decoded); } - } From 661ed2da36ec6f3db6463bb4b0bde169fb7ba550 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:54:31 +0200 Subject: [PATCH 146/384] Minor ModelParameters fix --- .../de/kherud/llama/{args => }/ModelParameters.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) rename src/main/java/de/kherud/llama/{args => }/ModelParameters.java (98%) diff --git a/src/main/java/de/kherud/llama/args/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java similarity index 98% rename from src/main/java/de/kherud/llama/args/ModelParameters.java rename to src/main/java/de/kherud/llama/ModelParameters.java index 3c4948bb..10609925 100644 --- a/src/main/java/de/kherud/llama/args/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -1,8 +1,11 @@ -package de.kherud.llama.args; +package de.kherud.llama; import java.util.Map; -import de.kherud.llama.LlamaModel; +import de.kherud.llama.args.GpuSplitMode; +import de.kherud.llama.args.NumaStrategy; +import de.kherud.llama.args.PoolingType; +import de.kherud.llama.args.RopeScalingType; /*** * Parameters used for initializing a {@link LlamaModel}. @@ -49,7 +52,6 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_MODEL_URL = "model_url"; private static final String PARAM_HF_REPO = "hf_repo"; private static final String PARAM_HF_FILE = "hf_file"; - private static final String PARAM_ANTIPROMPT = "antiprompt"; private static final String PARAM_LOGDIR = "logdir"; private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; @@ -496,7 +498,7 @@ public ModelParameters setLoraBase(String loraBase) { } /** - * Whether to only get sentence embeddings + * Whether to load model with embedding support */ public ModelParameters setEmbedding(boolean embedding) { parameters.put(PARAM_EMBEDDING, String.valueOf(embedding)); From c1a19541747ade9b0418c543db5fb4547032db90 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:54:40 +0200 Subject: [PATCH 147/384] Minor verbose logging fix --- src/main/cpp/utils.hpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 636b322f..3f122d1b 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -27,18 +27,14 @@ enum error_type { extern bool server_log_json; -#ifndef SERVER_VERBOSE -#define SERVER_VERBOSE 1 -#endif - -#if SERVER_VERBOSE != 1 -#define LOG_VERBOSE(MSG, ...) -#else +#if SERVER_VERBOSE #define LOG_VERBOSE(MSG, ...) \ do \ { \ server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ } while (0) +#else +#define LOG_VERBOSE(MSG, ...) #endif #define LOG_ERROR( MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) From 32540b2a6ebddd9fde1215f7aa6025826b728b51 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:54:48 +0200 Subject: [PATCH 148/384] Update examples --- .../java/de/kherud/llama/ModelResolver.java | 40 ------------------- src/test/java/examples/GrammarExample.java | 15 +++---- src/test/java/examples/InfillExample.java | 14 ++++--- src/test/java/examples/MainExample.java | 27 +++++-------- 4 files changed, 27 insertions(+), 69 deletions(-) delete mode 100644 src/test/java/de/kherud/llama/ModelResolver.java diff --git a/src/test/java/de/kherud/llama/ModelResolver.java b/src/test/java/de/kherud/llama/ModelResolver.java deleted file mode 100644 index 3b80a7e5..00000000 --- a/src/test/java/de/kherud/llama/ModelResolver.java +++ /dev/null @@ -1,40 +0,0 @@ -package de.kherud.llama; - -import java.io.File; -import java.nio.file.Paths; - - -/** - * An enum which enables us to resolve the model home from system parameters and full model paths. - */ -public enum ModelResolver { - MODEL_HOME("model.home", "Please pass the system property \"%s\" to the test. " - + "This should represent the location on local disk where your models are located. " - + "If you are running this via maven, please run with a -Dmodel.home=/path/to/model/dir. " - + "Make sure that the directory that you pass exists." ), - INTEGRATION_TEST_MODEL_NAME("integration.test.model", "The system property \"%s\" is not set. If you are running this from an IDE, please set it. If you are running this from Maven, this should be set automatically and there is something strange going on." ); - final String systemPropertyName; - final String errorMessage; - ModelResolver(String systemPropertyName, String errorMessage) { - this.systemPropertyName = systemPropertyName; - this.errorMessage = errorMessage; - } - - public String resolve() { - String ret = System.getProperty(systemPropertyName); - if(ret == null) { - if(new File("models").exists()) { - return "models"; - } - throw new IllegalArgumentException(String.format(errorMessage, systemPropertyName)); - } - return ret; - } - - public static String getPathToModel(String modelName) { - return Paths.get(MODEL_HOME.resolve(), modelName).toString(); - } - public static String getPathToITModel() { - return getPathToModel(INTEGRATION_TEST_MODEL_NAME.resolve()); - } -} diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 810fe142..d782cf54 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -1,7 +1,6 @@ package examples; -import de.kherud.llama.ModelResolver; -import java.util.HashMap; +import de.kherud.llama.ModelParameters; import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; @@ -12,11 +11,13 @@ public static void main(String... args) { String grammar = "root ::= (expr \"=\" term \"\\n\")+\n" + "expr ::= term ([-+*/] term)*\n" + "term ::= [0-9]"; - InferenceParameters params = new InferenceParameters().setGrammar(grammar); - String modelName = System.getProperty("model.name"); - String modelPath = ModelResolver.getPathToModel(modelName); - try (LlamaModel model = new LlamaModel(modelPath)) { - for (LlamaModel.Output output : model.generate("", params)) { + ModelParameters modelParams = new ModelParameters() + .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf"); + InferenceParameters inferParams = new InferenceParameters("") + .setGrammar(grammar); + try (LlamaModel model = new LlamaModel(modelParams)) { + for (LlamaModel.Output output : model.generate(inferParams)) { System.out.print(output); } } diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index 754b81bc..765ccf6b 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -1,23 +1,25 @@ package examples; +import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; import de.kherud.llama.ModelParameters; -import de.kherud.llama.ModelResolver; public class InfillExample { public static void main(String... args) { - LlamaModel.setLogger((level, message) -> System.out.print(message)); ModelParameters modelParams = new ModelParameters() + .setModelFilePath("models/codellama-7b.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setNGpuLayers(43); String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; String suffix = "\n return result\n"; - String modelName = System.getProperty("model.name"); - String modelPath = ModelResolver.getPathToModel(modelName); - try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + try (LlamaModel model = new LlamaModel(modelParams)) { System.out.print(prefix); - for (LlamaModel.Output output : model.generate(prefix, suffix)) { + InferenceParameters inferParams = new InferenceParameters("") + .setInputPrefix(prefix) + .setInputSuffix(suffix); + for (LlamaModel.Output output : model.generate(inferParams)) { System.out.print(output); } System.out.print(suffix); diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 88b357a2..55e1738a 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -1,6 +1,5 @@ package examples; -import de.kherud.llama.ModelResolver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -9,29 +8,23 @@ import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; import de.kherud.llama.ModelParameters; +import de.kherud.llama.args.MiroStat; +@SuppressWarnings("InfiniteLoopStatement") public class MainExample { public static void main(String... args) throws IOException { - LlamaModel.setLogger((level, message) -> System.out.print(message)); ModelParameters modelParams = new ModelParameters() + .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") .setNGpuLayers(43); - InferenceParameters inferParams = new InferenceParameters() - .setTemperature(0.7f) - .setPenalizeNl(true) -// .setNProbs(10) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("User:"); - String modelName = System.getProperty("model.name"); - String modelPath = ModelResolver.getPathToModel(modelName); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n\n" + "User: Hello Llama\n" + "Llama: Hello. How may I help you today?"; - ; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + try (LlamaModel model = new LlamaModel(modelParams)) { System.out.print(system); String prompt = system; while (true) { @@ -41,10 +34,12 @@ public static void main(String... args) throws IOException { prompt += input; System.out.print("Llama: "); prompt += "\nLlama: "; -// String answer = model.complete(prompt, inferParams); -// System.out.print(answer); -// prompt += answer; - for (LlamaModel.Output output : model.generate(prompt, inferParams)) { + InferenceParameters inferParams = new InferenceParameters(prompt) + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMiroStat(MiroStat.V2) + .setStopStrings("User:"); + for (LlamaModel.Output output : model.generate(inferParams)) { System.out.print(output); prompt += output; } From 2d8e1c185571318da16cf1479780a8501edaf5c3 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 18:56:33 +0200 Subject: [PATCH 149/384] Fix CI workflow setup java version --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa13951c..a6bca4c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: shell: bash # cmake should figure out OS and ARCH automatically when running build.sh run: .github/build.sh - - uses: actions/setup-java@4 + - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' From fb6e6e3083fd4ff1963822ef86c05c548c58bedd Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 19:09:34 +0200 Subject: [PATCH 150/384] Some readme updates --- README.md | 130 +++++++++++++++++++++++++----------------------------- 1 file changed, 60 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index da8094f9..ece5b045 100644 --- a/README.md +++ b/README.md @@ -16,16 +16,15 @@ Access this library via Maven: de.kherud llama - 2.3.5 + 3.0.0 ``` -There are multiple [examples](src/test/java/examples). Make sure to set `model.home` and `model.name` to run them: +There are multiple [examples](src/test/java/examples): ```bash -mvn exec:java -Dexec.mainClass="examples.MainExample" -Dmodel.home="/path/to/models" -Dmodel.name="codellama-13b.Q5_K_M.gguf" +mvn exec:java -Dexec.mainClass="examples.MainExample" ``` -Note: if your model is in the `models` directory, then you can ommit the `-Dmodel.home` property. You can also run some integration tests, which will automatically download a model to the `models` directory: @@ -90,6 +89,34 @@ This includes: If you then compile your own JAR from this directory, you are ready to go. Otherwise, if you still want to use the library as a Maven dependency, see below how to set the necessary paths in order for Java to find your compiled libraries. +### Custom llama.cpp Setup (GPU acceleration) + +This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however. +In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): + +- `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` +- `java.library.path`, for example `-Djava.library.path=/directory/containing/lib` + +This repository uses [`System#mapLibraryName`](https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/lang/System.html) to determine the name of the shared library for you platform. +If for any reason your library has a different name, you can set it with + +- `de.kherud.llama.lib.name`, for example `-Dde.kherud.llama.lib.name=myname.so` + +For compiling `llama.cpp`, refer to the official [readme](https://github.com/ggerganov/llama.cpp#build) for details. +The library can be built with the `llama.cpp` project: + +```shell +mkdir build +cd build +cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend +cmake --build . --config Release +``` + +Look for the shared library in `build`. + +> [!IMPORTANT] +> If you are running MacOS with Metal, you have to put the file `ggml-metal.metal` from `build/bin` in the same directory as the shared library. + ### Importing in Android You can use this library in Android project. @@ -144,34 +171,6 @@ android { keep class de.kherud.llama.** { *; } ``` -### Custom llama.cpp Setup (GPU acceleration) - -This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however. -In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): - -- `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` -- `java.library.path`, for example `-Djava.library.path=/directory/containing/lib` - -This repository uses [`System#mapLibraryName`](https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/lang/System.html) to determine the name of the shared library for you platform. -If for any reason your library has a different name, you can set it with - -- `de.kherud.llama.lib.name`, for example `-Dde.kherud.llama.lib.name=myname.so` - -For compiling `llama.cpp`, refer to the official [readme](https://github.com/ggerganov/llama.cpp#build) for details. -The library can be built with the `llama.cpp` project: - -```shell -mkdir build -cd build -cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend -cmake --build . --config Release -``` - -Look for the shared library in `build`. - -> [!IMPORTANT] -> If you are running MacOS with Metal, you have to put the file `ggml-metal.metal` from `build/bin` in the same directory as the shared library. - ## Documentation ### Example @@ -182,21 +181,15 @@ This is a short example on how to use this library: public class Example { public static void main(String... args) throws IOException { - LlamaModel.setLogger((level, message) -> System.out.print(message)); ModelParameters modelParams = new ModelParameters() + .setModelFilePath("/path/to/model.gguf") .setNGpuLayers(43); - InferenceParameters inferParams = new InferenceParameters() - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n"); - String modelPath = "/run/media/konstantin/Seagate/models/llama2/llama-2-13b-chat/ggml-model-q4_0.gguf"; String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n"; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); - try (LlamaModel model = new LlamaModel(modelPath, modelParams)) { + try (LlamaModel model = new LlamaModel(modelParams)) { System.out.print(system); String prompt = system; while (true) { @@ -206,7 +199,12 @@ public class Example { prompt += input; System.out.print("Llama: "); prompt += "\nLlama: "; - for (String output : model.generate(prompt, inferParams)) { + InferenceParameters inferParams = new InferenceParameters(prompt) + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt("\n"); + for (String output : model.generate(inferParams)) { System.out.print(output); prompt += output; } @@ -225,13 +223,15 @@ model to your prompt in order to extend the context. If there is repeated conten cache this, to improve performance. ```java -try (LlamaModel model = new LlamaModel("/path/to/gguf-model")) { +ModelParameters modelParams = new ModelParameters().setModelFilePath("/path/to/model.gguf"); +InferenceParameters inferParams = new InferenceParameters("Tell me a joke."); +try (LlamaModel model = new LlamaModel(modelParams)) { // Stream a response and access more information about each output. - for (String output : model.generate("Tell me a joke.")) { + for (String output : model.generate(inferParams)) { System.out.print(output); } // Calculate a whole response before returning it. - String response = model.complete("Tell me another one"); + String response = model.complete(inferParams); // Returns the hidden representation of the context + prompt. float[] embedding = model.embed("Embed this"); } @@ -243,39 +243,29 @@ try (LlamaModel model = new LlamaModel("/path/to/gguf-model")) { > freed when the model is no longer needed. This isn't strictly required, but avoids memory leaks if you use different > models throughout the lifecycle of your application. -#### Infilling +### Infilling -You can simply pass `prefix` and `suffix` to `generate()` or `complete()`. +You can simply set `InferenceParameters#setInputPrefix(String)` and `InferenceParameters#setInputSuffix(String)`. ### Model/Inference Configuration There are two sets of parameters you can configure, `ModelParameters` and `InferenceParameters`. Both provide builder -classes to ease configuration. All non-specified options have sensible defaults. +classes to ease configuration. `ModelParameters` are once needed for loading a model, `InferenceParameters` are needed +for every inference task. All non-specified options have sensible defaults. ```java ModelParameters modelParams = new ModelParameters() - .setLoraAdapter("/path/to/lora/adapter") - .setLoraBase("/path/to/lora/base"); -InferenceParameters inferParams = new InferenceParameters() - .setGrammar(new File("/path/to/grammar.gbnf")) + .setModelFilePath("/path/to/model.gguf") + .setLoraAdapter("/path/to/lora/adapter") + .setLoraBase("/path/to/lora/base"); +String grammar = """ + root ::= (expr "=" term "\\n")+ + expr ::= term ([-+*/] term)* + term ::= [0-9]"""; +InferenceParameters inferParams = new InferenceParameters("") + .setGrammar(grammar) .setTemperature(0.8); -LlamaModel model = new LlamaModel("/path/to/model.bin", modelParams); -model.generate(prompt, inferParams) -``` - -### Logging - -Both Java and C++ logging can be configured via the static method `LlamaModel.setLogger`: - -```java -// The method accepts a BiConsumer. -LlamaModel.setLogger((level, message) -> System.out.println(level.name() + ": " + message)); -// To completely silence any output, pass a no-op. -LlamaModel.setLogger((level, message) -> {}); - -// Similarly, a progress callback can be set (only the C++ side will call this). -// I think this is only used to report progress loading the model with a value of 0-1. -// It is thus state specific and can be done via the parameters. -new ModelParameters() - .setProgressCallback(progress -> System.out.println("progress: " + progress)); +try (LlamaModel model = new LlamaModel(modelParams)) { + model.generate(inferParams); +} ``` From d0f5412a2f109841c322d2501655b6086ee292e6 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 21:57:51 +0200 Subject: [PATCH 151/384] Fix infer params off by one error --- src/main/java/de/kherud/llama/InferenceParameters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index f4933cca..937a909e 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -289,7 +289,7 @@ public InferenceParameters setLogitBias(Map logitBias) { .append(", ") .append(value) .append("]"); - if (i++ < logitBias.size()) { + if (i++ < logitBias.size() - 1) { builder.append(", "); } } From 441a2d0c47ee979c6ba101b6cdcec62ef29f0616 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 21:58:19 +0200 Subject: [PATCH 152/384] Add option to disable logging --- src/main/cpp/jllama.cpp | 6 ++++++ src/main/java/de/kherud/llama/ModelParameters.java | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index fc9958de..64076ff5 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -252,6 +252,12 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo json json_params = json::parse(c_params); server_params_parse(json_params, sparams, params); + if (json_value(json_params, "disable_log", false)) { + log_disable(); + } else { + log_enable(); + } + if (!sparams.system_prompt.empty()) { ctx_server->system_prompt_set(sparams.system_prompt); diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 10609925..0df5b809 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -53,6 +53,7 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_HF_REPO = "hf_repo"; private static final String PARAM_HF_FILE = "hf_file"; private static final String PARAM_LOGDIR = "logdir"; + private static final String PARAM_LOG_DISABLE = "disable_log"; private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; private static final String PARAM_LORA_ADAPTER = "lora_adapter"; @@ -416,7 +417,8 @@ public ModelParameters setModelAlias(String modelAlias) { } /** - * Set a URL to download a model from (default: unused) + * Set a URL to download a model from (default: unused). + * Note, that this requires the library to be built with CURL (-DLLAMA_CURL=ON). */ public ModelParameters setModelUrl(String modelUrl) { parameters.put(PARAM_MODEL_URL, toJsonString(modelUrl)); @@ -448,6 +450,14 @@ public ModelParameters setLogDirectory(String logdir) { return this; } + /** + * Set whether to disable logging + */ + public ModelParameters setDisableLog(boolean logDisable) { + parameters.put(PARAM_LOG_DISABLE, String.valueOf(logDisable)); + return this; + } + /** * Set path to static lookup cache to use for lookup decoding (not updated by generation) */ From 836bb88b3ec4766049d0c410fb76e0b039c86e49 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 21:58:38 +0200 Subject: [PATCH 153/384] Re-add failsafe / surefire plugins --- pom.xml | 28 +++++++++++++++++++ .../java/de/kherud/llama/LlamaModelIT.java | 14 ++++++---- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 244a307f..e0fdc69f 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,34 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + ${test.plugin.version} + + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + ${test.plugin.version} + + + + + + + integration-test + verify + + + + diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index beedac43..014bbcab 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -22,6 +22,8 @@ public static void setup() { new ModelParameters() .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") + // we need to disable logging since it causes problems with the maven failsafe plugin + .setDisableLog(true) .setNGpuLayers(43) .setEmbedding(true) ); @@ -42,14 +44,14 @@ public void testGenerateAnswer() { .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) - .setLogitBias(logitBias) - .setSeed(42); + .setLogitBias(logitBias); int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { generated++; } - Assert.assertTrue(generated > 0 && generated <= nPredict); + // todo: currently, after generating nPredict tokens, there is an additional empty output + Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } @Test @@ -69,7 +71,7 @@ public void testGenerateInfill() { for (LlamaModel.Output ignored : model.generate(params)) { generated++; } - Assert.assertTrue(generated > 0 && generated <= nPredict); + Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } @Test @@ -85,7 +87,7 @@ public void testGenerateGrammar() { Assert.assertTrue(output.matches("[ab]+")); int generated = model.encode(output).length; - Assert.assertTrue(generated > 0 && generated <= nPredict); + Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } @Test @@ -128,7 +130,7 @@ public void testCompleteGrammar() { String output = model.complete(params); Assert.assertTrue(output.matches("[ab]+")); int generated = model.encode(output).length; - Assert.assertTrue(generated > 0 && generated <= nPredict); + Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } @Test From 13d2505dbcf310aee8e1319bacd51be8934b7cf7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 21:59:16 +0200 Subject: [PATCH 154/384] Add release workflow build with curl --- .github/workflows/release.yaml | 64 ++++++++++++++++------------------ 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 96e528f5..aef31655 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -7,7 +7,7 @@ on: required: false default: 'no' release: - types: [created] + types: [ created ] jobs: @@ -38,7 +38,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" -DLLAMA_CURL=ON - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -68,7 +68,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DLLAMA_CURL=ON - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -88,12 +88,11 @@ jobs: arch: x86_64, cmake: '-G "Visual Studio 17 2022" -A "x64"' } - # todo: This currently doesn't work. I'm not sure why. - # - { - # os: Windows, - # arch: aarch64, - # cmake: '-G "Visual Studio 17 2022" -A "ARM64"' - # } + - { + os: Windows, + arch: aarch64, + cmake: '-G "Visual Studio 17 2022" -A "ARM64"' + } - { os: Windows, arch: x86, @@ -109,7 +108,7 @@ jobs: - name: Build libraries shell: cmd run: | - .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DLLAMA_CURL=ON - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -133,28 +132,27 @@ jobs: java-version: '11' - name: Run tests shell: bash - run: mvn verify -Dmodel.home=target - + run: mvn verify + + + test-macos: + name: Test Mac + needs: build-macos-native + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + shell: bash + run: mvn verify - # todo: also currently doesn't work -# test-macos: -# name: Test Mac -# needs: build-macos-native -# runs-on: macos-latest -# steps: -# - uses: actions/checkout@v4 -# - uses: actions/download-artifact@v3 -# with: -# name: artifacts -# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ -# - uses: actions/setup-java@v4 -# with: -# distribution: 'zulu' -# java-version: '11' -# - name: Run tests -# shell: bash -# run: mvn verify -Dmodel.home=target - test-windows: name: Test Windows @@ -172,12 +170,12 @@ jobs: java-version: '11' - name: Run tests shell: cmd - run: mvn verify -Dmodel.home=target + run: mvn verify publish: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} - needs: [test-linux,build-macos-native,test-windows] + needs: [ test-linux,build-macos-native,test-windows ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 881261ee88ebe873d4e3cd91f00185117592de89 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:00:43 +0200 Subject: [PATCH 155/384] Add ci workflow build with curl --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a6bca4c0..d6dd74f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,14 +20,14 @@ jobs: - name: Build libraries shell: bash # cmake should figure out OS and ARCH automatically when running build.sh - run: .github/build.sh + run: .github/build.sh -DLLAMA_CURL=ON - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Run tests shell: bash - run: mvn verify -Dmodel.home=target + run: mvn verify build-and-test-windows: name: windows-latest @@ -36,11 +36,11 @@ jobs: - uses: actions/checkout@v4 - name: Build libraries shell: cmd - run: .github\build.bat + run: .github\build.bat -DLLAMA_CURL=ON - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Run tests shell: cmd - run: mvn verify -Dmodel.home=target + run: mvn verify From ffb738fc97eda6c64b9b8f1fd341d7bfcdd21d05 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:04:07 +0200 Subject: [PATCH 156/384] Reformat code and optimize imports --- .../de/kherud/llama/InferenceParameters.java | 3 +- .../java/de/kherud/llama/JsonParameters.java | 3 +- .../java/de/kherud/llama/LlamaException.java | 2 +- .../java/de/kherud/llama/LlamaLoader.java | 28 +- src/main/java/de/kherud/llama/LlamaModel.java | 11 +- src/main/java/de/kherud/llama/OSInfo.java | 426 +++++++++--------- .../java/de/kherud/llama/ProcessRunner.java | 2 +- .../de/kherud/llama/args/GpuSplitMode.java | 1 - .../java/de/kherud/llama/args/LogFormat.java | 1 - .../java/de/kherud/llama/args/MiroStat.java | 1 - .../de/kherud/llama/args/NumaStrategy.java | 1 - .../de/kherud/llama/args/PoolingType.java | 1 - .../java/de/kherud/llama/args/Sampler.java | 1 - 13 files changed, 253 insertions(+), 228 deletions(-) diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 937a909e..d6e9afe4 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -6,7 +6,8 @@ import de.kherud.llama.args.Sampler; /** - * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(InferenceParameters)} and + * Parameters used throughout inference of a {@link LlamaModel}, e.g., {@link LlamaModel#generate(InferenceParameters)} + * and * {@link LlamaModel#complete(InferenceParameters)}. */ public final class InferenceParameters extends JsonParameters { diff --git a/src/main/java/de/kherud/llama/JsonParameters.java b/src/main/java/de/kherud/llama/JsonParameters.java index ff037831..e9916976 100644 --- a/src/main/java/de/kherud/llama/JsonParameters.java +++ b/src/main/java/de/kherud/llama/JsonParameters.java @@ -83,7 +83,8 @@ String toJsonString(String text) { hhhh = Integer.toHexString(c); builder.append("0000", 0, 4 - hhhh.length()); builder.append(hhhh); - } else { + } + else { builder.append(c); } } diff --git a/src/main/java/de/kherud/llama/LlamaException.java b/src/main/java/de/kherud/llama/LlamaException.java index c2b5762c..84d4ee7c 100644 --- a/src/main/java/de/kherud/llama/LlamaException.java +++ b/src/main/java/de/kherud/llama/LlamaException.java @@ -1,6 +1,6 @@ package de.kherud.llama; -public class LlamaException extends RuntimeException { +class LlamaException extends RuntimeException { public LlamaException(String message) { super(message); diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 5c09646e..5aa84001 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -73,7 +73,8 @@ static synchronized void initialize() throws UnsatisfiedLinkError { private static void cleanup() { try (Stream dirList = Files.list(getTempDir().toPath())) { dirList.filter(LlamaLoader::shouldCleanPath).forEach(LlamaLoader::cleanPath); - } catch (IOException e) { + } + catch (IOException e) { System.err.println("Failed to open directory: " + e.getMessage()); } } @@ -86,7 +87,8 @@ private static boolean shouldCleanPath(Path path) { private static void cleanPath(Path path) { try { Files.delete(path); - } catch (Exception e) { + } + catch (Exception e) { System.err.println("Failed to delete old native lib: " + e.getMessage()); } } @@ -105,7 +107,8 @@ private static void loadNativeLibrary(String name) { Path path = Paths.get(nativeLibPath, nativeLibName); if (loadNativeLibrary(path)) { return; - } else { + } + else { triedPaths.add(nativeLibPath); } } @@ -116,12 +119,12 @@ private static void loadNativeLibrary(String name) { // if java-llama.cpp is added as code source System.loadLibrary(name); return; - } catch (UnsatisfiedLinkError e) { + } + catch (UnsatisfiedLinkError e) { triedPaths.add("Directly from .apk/lib"); } } - // Load the os-dependent library from the jar file nativeLibPath = getNativeResourcePath(); if (hasNativeLib(nativeLibPath, nativeLibName)) { @@ -130,7 +133,8 @@ private static void loadNativeLibrary(String name) { // Try extracting the library from jar if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { return; - } else { + } + else { triedPaths.add(nativeLibPath); } } @@ -144,7 +148,8 @@ private static void loadNativeLibrary(String name) { Path path = Paths.get(ldPath, nativeLibName); if (loadNativeLibrary(path)) { return; - } else { + } + else { triedPaths.add(ldPath); } } @@ -173,7 +178,8 @@ private static boolean loadNativeLibrary(Path path) { try { System.load(absolutePath); return true; - } catch (UnsatisfiedLinkError e) { + } + catch (UnsatisfiedLinkError e) { System.err.println(e.getMessage()); System.err.println("Failed to load native library: " + absolutePath + ". osinfo: " + OSInfo.getNativeLibFolderPathForCurrentOS()); return false; @@ -193,7 +199,8 @@ private static Path extractFile(String sourceDirectory, String fileName, String return null; } Files.copy(reader, extractedFilePath, StandardCopyOption.REPLACE_EXISTING); - } finally { + } + finally { // Delete the extracted lib file on JVM exit. extractedFilePath.toFile().deleteOnExit(); } @@ -213,7 +220,8 @@ private static Path extractFile(String sourceDirectory, String fileName, String System.out.println("Extracted '" + fileName + "' to '" + extractedFilePath + "'"); return extractedFilePath; - } catch (IOException e) { + } + catch (IOException e) { System.err.println(e.getMessage()); return null; } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 79705648..b74c99e5 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -74,7 +74,8 @@ public Iterable generate(InferenceParameters parameters) { * * @param prompt the string to embed * @return an embedding float array - * @throws IllegalStateException if embedding mode was not activated (see {@link ModelParameters#setEmbedding(boolean)}) + * @throws IllegalStateException if embedding mode was not activated (see + * {@link ModelParameters#setEmbedding(boolean)}) */ public native float[] embed(String prompt); @@ -92,7 +93,7 @@ public Iterable generate(InferenceParameters parameters) { * @param tokens an array of tokens * @return the token ids decoded to a string */ - public String decode(int[] tokens) { + public String decode(int[] tokens) { byte[] bytes = decodeBytes(tokens); return new String(bytes, StandardCharsets.UTF_8); } @@ -111,9 +112,13 @@ public void close() { // don't overload native methods since the C++ function names get nasty private native void loadModel(String parameters) throws LlamaException; + private native int requestCompletion(String params) throws LlamaException; + private native Output receiveCompletion(int taskId) throws LlamaException; + private native byte[] decodeBytes(int[] tokens); + private native void delete(); /** @@ -138,7 +143,6 @@ private Output(byte[] generated, @NotNull Map probabilities, bool public String toString() { return text; } - } private final class LlamaIterator implements Iterator { @@ -169,5 +173,4 @@ public Output next() { return output; } } - } diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java index 740bdca5..a62861bf 100644 --- a/src/main/java/de/kherud/llama/OSInfo.java +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -31,234 +31,252 @@ */ @SuppressWarnings("UseOfSystemOutOrSystemErr") class OSInfo { - private static final ProcessRunner processRunner = new ProcessRunner(); - private static final HashMap archMapping = new HashMap<>(); + public static final String X86 = "x86"; + public static final String X86_64 = "x86_64"; + public static final String IA64_32 = "ia64_32"; + public static final String IA64 = "ia64"; + public static final String PPC = "ppc"; + public static final String PPC64 = "ppc64"; + private static final ProcessRunner processRunner = new ProcessRunner(); + private static final HashMap archMapping = new HashMap<>(); - public static final String X86 = "x86"; - public static final String X86_64 = "x86_64"; - public static final String IA64_32 = "ia64_32"; - public static final String IA64 = "ia64"; - public static final String PPC = "ppc"; - public static final String PPC64 = "ppc64"; + static { + // x86 mappings + archMapping.put(X86, X86); + archMapping.put("i386", X86); + archMapping.put("i486", X86); + archMapping.put("i586", X86); + archMapping.put("i686", X86); + archMapping.put("pentium", X86); - static { - // x86 mappings - archMapping.put(X86, X86); - archMapping.put("i386", X86); - archMapping.put("i486", X86); - archMapping.put("i586", X86); - archMapping.put("i686", X86); - archMapping.put("pentium", X86); + // x86_64 mappings + archMapping.put(X86_64, X86_64); + archMapping.put("amd64", X86_64); + archMapping.put("em64t", X86_64); + archMapping.put("universal", X86_64); // Needed for openjdk7 in Mac - // x86_64 mappings - archMapping.put(X86_64, X86_64); - archMapping.put("amd64", X86_64); - archMapping.put("em64t", X86_64); - archMapping.put("universal", X86_64); // Needed for openjdk7 in Mac + // Itanium 64-bit mappings + archMapping.put(IA64, IA64); + archMapping.put("ia64w", IA64); - // Itanium 64-bit mappings - archMapping.put(IA64, IA64); - archMapping.put("ia64w", IA64); + // Itanium 32-bit mappings, usually an HP-UX construct + archMapping.put(IA64_32, IA64_32); + archMapping.put("ia64n", IA64_32); - // Itanium 32-bit mappings, usually an HP-UX construct - archMapping.put(IA64_32, IA64_32); - archMapping.put("ia64n", IA64_32); + // PowerPC mappings + archMapping.put(PPC, PPC); + archMapping.put("power", PPC); + archMapping.put("powerpc", PPC); + archMapping.put("power_pc", PPC); + archMapping.put("power_rs", PPC); - // PowerPC mappings - archMapping.put(PPC, PPC); - archMapping.put("power", PPC); - archMapping.put("powerpc", PPC); - archMapping.put("power_pc", PPC); - archMapping.put("power_rs", PPC); + // TODO: PowerPC 64bit mappings + archMapping.put(PPC64, PPC64); + archMapping.put("power64", PPC64); + archMapping.put("powerpc64", PPC64); + archMapping.put("power_pc64", PPC64); + archMapping.put("power_rs64", PPC64); + archMapping.put("ppc64el", PPC64); + archMapping.put("ppc64le", PPC64); + } - // TODO: PowerPC 64bit mappings - archMapping.put(PPC64, PPC64); - archMapping.put("power64", PPC64); - archMapping.put("powerpc64", PPC64); - archMapping.put("power_pc64", PPC64); - archMapping.put("power_rs64", PPC64); - archMapping.put("ppc64el", PPC64); - archMapping.put("ppc64le", PPC64); - } + public static void main(String[] args) { + if (args.length >= 1) { + if ("--os".equals(args[0])) { + System.out.print(getOSName()); + return; + } + else if ("--arch".equals(args[0])) { + System.out.print(getArchName()); + return; + } + } - public static void main(String[] args) { - if (args.length >= 1) { - if ("--os".equals(args[0])) { - System.out.print(getOSName()); - return; - } else if ("--arch".equals(args[0])) { - System.out.print(getArchName()); - return; - } - } + System.out.print(getNativeLibFolderPathForCurrentOS()); + } - System.out.print(getNativeLibFolderPathForCurrentOS()); - } + static String getNativeLibFolderPathForCurrentOS() { + return getOSName() + "/" + getArchName(); + } - static String getNativeLibFolderPathForCurrentOS() { - return getOSName() + "/" + getArchName(); - } + static String getOSName() { + return translateOSNameToFolderName(System.getProperty("os.name")); + } - static String getOSName() { - return translateOSNameToFolderName(System.getProperty("os.name")); - } + static boolean isAndroid() { + return isAndroidRuntime() || isAndroidTermux(); + } - static boolean isAndroid() { - return isAndroidRuntime() || isAndroidTermux(); - } + static boolean isAndroidRuntime() { + return System.getProperty("java.runtime.name", "").toLowerCase().contains("android"); + } - static boolean isAndroidRuntime() { - return System.getProperty("java.runtime.name", "").toLowerCase().contains("android"); - } + static boolean isAndroidTermux() { + try { + return processRunner.runAndWaitFor("uname -o").toLowerCase().contains("android"); + } + catch (Exception ignored) { + return false; + } + } - static boolean isAndroidTermux() { - try { - return processRunner.runAndWaitFor("uname -o").toLowerCase().contains("android"); - } catch (Exception ignored) { - return false; - } - } + static boolean isMusl() { + Path mapFilesDir = Paths.get("/proc/self/map_files"); + try (Stream dirStream = Files.list(mapFilesDir)) { + return dirStream + .map( + path -> { + try { + return path.toRealPath().toString(); + } + catch (IOException e) { + return ""; + } + }) + .anyMatch(s -> s.toLowerCase().contains("musl")); + } + catch (Exception ignored) { + // fall back to checking for alpine linux in the event we're using an older kernel which + // may not fail the above check + return isAlpineLinux(); + } + } - static boolean isMusl() { - Path mapFilesDir = Paths.get("/proc/self/map_files"); - try (Stream dirStream = Files.list(mapFilesDir)) { - return dirStream - .map( - path -> { - try { - return path.toRealPath().toString(); - } catch (IOException e) { - return ""; - } - }) - .anyMatch(s -> s.toLowerCase().contains("musl")); - } catch (Exception ignored) { - // fall back to checking for alpine linux in the event we're using an older kernel which - // may not fail the above check - return isAlpineLinux(); - } - } + static boolean isAlpineLinux() { + try (Stream osLines = Files.lines(Paths.get("/etc/os-release"))) { + return osLines.anyMatch(l -> l.startsWith("ID") && l.contains("alpine")); + } + catch (Exception ignored2) { + } + return false; + } - static boolean isAlpineLinux() { - try (Stream osLines = Files.lines(Paths.get("/etc/os-release"))) { - return osLines.anyMatch(l -> l.startsWith("ID") && l.contains("alpine")); - } catch (Exception ignored2) { - } - return false; - } + static String getHardwareName() { + try { + return processRunner.runAndWaitFor("uname -m"); + } + catch (Throwable e) { + System.err.println("Error while running uname -m: " + e.getMessage()); + return "unknown"; + } + } - static String getHardwareName() { - try { - return processRunner.runAndWaitFor("uname -m"); - } catch (Throwable e) { - System.err.println("Error while running uname -m: " + e.getMessage()); - return "unknown"; - } - } + static String resolveArmArchType() { + if (System.getProperty("os.name").contains("Linux")) { + String armType = getHardwareName(); + // armType (uname -m) can be armv5t, armv5te, armv5tej, armv5tejl, armv6, armv7, armv7l, + // aarch64, i686 - static String resolveArmArchType() { - if (System.getProperty("os.name").contains("Linux")) { - String armType = getHardwareName(); - // armType (uname -m) can be armv5t, armv5te, armv5tej, armv5tejl, armv6, armv7, armv7l, - // aarch64, i686 + // for Android, we fold everything that is not aarch64 into arm + if (isAndroid()) { + if (armType.startsWith("aarch64")) { + // Use arm64 + return "aarch64"; + } + else { + return "arm"; + } + } - // for Android, we fold everything that is not aarch64 into arm - if (isAndroid()) { - if (armType.startsWith("aarch64")) { - // Use arm64 - return "aarch64"; - } else { - return "arm"; - } - } + if (armType.startsWith("armv6")) { + // Raspberry PI + return "armv6"; + } + else if (armType.startsWith("armv7")) { + // Generic + return "armv7"; + } + else if (armType.startsWith("armv5")) { + // Use armv5, soft-float ABI + return "arm"; + } + else if (armType.startsWith("aarch64")) { + // Use arm64 + return "aarch64"; + } - if (armType.startsWith("armv6")) { - // Raspberry PI - return "armv6"; - } else if (armType.startsWith("armv7")) { - // Generic - return "armv7"; - } else if (armType.startsWith("armv5")) { - // Use armv5, soft-float ABI - return "arm"; - } else if (armType.startsWith("aarch64")) { - // Use arm64 - return "aarch64"; - } + // Java 1.8 introduces a system property to determine armel or armhf + // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8005545 + String abi = System.getProperty("sun.arch.abi"); + if (abi != null && abi.startsWith("gnueabihf")) { + return "armv7"; + } - // Java 1.8 introduces a system property to determine armel or armhf - // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8005545 - String abi = System.getProperty("sun.arch.abi"); - if (abi != null && abi.startsWith("gnueabihf")) { - return "armv7"; - } + // For java7, we still need to run some shell commands to determine ABI of JVM + String javaHome = System.getProperty("java.home"); + try { + // determine if first JVM found uses ARM hard-float ABI + int exitCode = Runtime.getRuntime().exec("which readelf").waitFor(); + if (exitCode == 0) { + String[] cmdarray = { + "/bin/sh", + "-c", + "find '" + + javaHome + + "' -name 'libjvm.so' | head -1 | xargs readelf -A | " + + "grep 'Tag_ABI_VFP_args: VFP registers'" + }; + exitCode = Runtime.getRuntime().exec(cmdarray).waitFor(); + if (exitCode == 0) { + return "armv7"; + } + } + else { + System.err.println( + "WARNING! readelf not found. Cannot check if running on an armhf system, armel architecture will be presumed."); + } + } + catch (IOException | InterruptedException e) { + // ignored: fall back to "arm" arch (soft-float ABI) + } + } + // Use armv5, soft-float ABI + return "arm"; + } - // For java7, we still need to run some shell commands to determine ABI of JVM - String javaHome = System.getProperty("java.home"); - try { - // determine if first JVM found uses ARM hard-float ABI - int exitCode = Runtime.getRuntime().exec("which readelf").waitFor(); - if (exitCode == 0) { - String[] cmdarray = { - "/bin/sh", - "-c", - "find '" - + javaHome - + "' -name 'libjvm.so' | head -1 | xargs readelf -A | " - + "grep 'Tag_ABI_VFP_args: VFP registers'" - }; - exitCode = Runtime.getRuntime().exec(cmdarray).waitFor(); - if (exitCode == 0) { - return "armv7"; - } - } else { - System.err.println( - "WARNING! readelf not found. Cannot check if running on an armhf system, armel architecture will be presumed."); - } - } catch (IOException | InterruptedException e) { - // ignored: fall back to "arm" arch (soft-float ABI) - } - } - // Use armv5, soft-float ABI - return "arm"; - } + static String getArchName() { + String override = System.getProperty("de.kherud.llama.osinfo.architecture"); + if (override != null) { + return override; + } - static String getArchName() { - String override = System.getProperty("de.kherud.llama.osinfo.architecture"); - if (override != null) { - return override; - } + String osArch = System.getProperty("os.arch"); - String osArch = System.getProperty("os.arch"); + if (osArch.startsWith("arm")) { + osArch = resolveArmArchType(); + } + else { + String lc = osArch.toLowerCase(Locale.US); + if (archMapping.containsKey(lc)) return archMapping.get(lc); + } + return translateArchNameToFolderName(osArch); + } - if (osArch.startsWith("arm")) { - osArch = resolveArmArchType(); - } else { - String lc = osArch.toLowerCase(Locale.US); - if (archMapping.containsKey(lc)) return archMapping.get(lc); - } - return translateArchNameToFolderName(osArch); - } + static String translateOSNameToFolderName(String osName) { + if (osName.contains("Windows")) { + return "Windows"; + } + else if (osName.contains("Mac") || osName.contains("Darwin")) { + return "Mac"; + } + else if (osName.contains("AIX")) { + return "AIX"; + } + else if (isMusl()) { + return "Linux-Musl"; + } + else if (isAndroid()) { + return "Linux-Android"; + } + else if (osName.contains("Linux")) { + return "Linux"; + } + else { + return osName.replaceAll("\\W", ""); + } + } - static String translateOSNameToFolderName(String osName) { - if (osName.contains("Windows")) { - return "Windows"; - } else if (osName.contains("Mac") || osName.contains("Darwin")) { - return "Mac"; - } else if (osName.contains("AIX")) { - return "AIX"; - } else if (isMusl()) { - return "Linux-Musl"; - } else if (isAndroid()) { - return "Linux-Android"; - } else if (osName.contains("Linux")) { - return "Linux"; - } else { - return osName.replaceAll("\\W", ""); - } - } - - static String translateArchNameToFolderName(String archName) { - return archName.replaceAll("\\W", ""); - } + static String translateArchNameToFolderName(String archName) { + return archName.replaceAll("\\W", ""); + } } diff --git a/src/main/java/de/kherud/llama/ProcessRunner.java b/src/main/java/de/kherud/llama/ProcessRunner.java index 6a1fd8dd..24e63498 100644 --- a/src/main/java/de/kherud/llama/ProcessRunner.java +++ b/src/main/java/de/kherud/llama/ProcessRunner.java @@ -21,7 +21,7 @@ String runAndWaitFor(String command, long timeout, TimeUnit unit) return getProcessOutput(p); } - static String getProcessOutput(Process process) throws IOException { + private static String getProcessOutput(Process process) throws IOException { try (InputStream in = process.getInputStream()) { int readLen; ByteArrayOutputStream b = new ByteArrayOutputStream(); diff --git a/src/main/java/de/kherud/llama/args/GpuSplitMode.java b/src/main/java/de/kherud/llama/args/GpuSplitMode.java index 1a4b7b9c..0c0cd934 100644 --- a/src/main/java/de/kherud/llama/args/GpuSplitMode.java +++ b/src/main/java/de/kherud/llama/args/GpuSplitMode.java @@ -5,5 +5,4 @@ public enum GpuSplitMode { NONE, LAYER, ROW - } diff --git a/src/main/java/de/kherud/llama/args/LogFormat.java b/src/main/java/de/kherud/llama/args/LogFormat.java index 3fba6a1c..f0e76492 100644 --- a/src/main/java/de/kherud/llama/args/LogFormat.java +++ b/src/main/java/de/kherud/llama/args/LogFormat.java @@ -5,5 +5,4 @@ public enum LogFormat { NONE, JSON, TEXT - } diff --git a/src/main/java/de/kherud/llama/args/MiroStat.java b/src/main/java/de/kherud/llama/args/MiroStat.java index 5f8a8ce7..5268d9bc 100644 --- a/src/main/java/de/kherud/llama/args/MiroStat.java +++ b/src/main/java/de/kherud/llama/args/MiroStat.java @@ -5,5 +5,4 @@ public enum MiroStat { DISABLED, V1, V2 - } diff --git a/src/main/java/de/kherud/llama/args/NumaStrategy.java b/src/main/java/de/kherud/llama/args/NumaStrategy.java index 32bd7131..35b24e19 100644 --- a/src/main/java/de/kherud/llama/args/NumaStrategy.java +++ b/src/main/java/de/kherud/llama/args/NumaStrategy.java @@ -7,5 +7,4 @@ public enum NumaStrategy { ISOLATE, NUMA_CTL, MIRROR - } diff --git a/src/main/java/de/kherud/llama/args/PoolingType.java b/src/main/java/de/kherud/llama/args/PoolingType.java index 066e86e2..e9b441d4 100644 --- a/src/main/java/de/kherud/llama/args/PoolingType.java +++ b/src/main/java/de/kherud/llama/args/PoolingType.java @@ -5,5 +5,4 @@ public enum PoolingType { UNSPECIFIED, MEAN, CLS - } diff --git a/src/main/java/de/kherud/llama/args/Sampler.java b/src/main/java/de/kherud/llama/args/Sampler.java index 6f031d64..0864e91b 100644 --- a/src/main/java/de/kherud/llama/args/Sampler.java +++ b/src/main/java/de/kherud/llama/args/Sampler.java @@ -8,5 +8,4 @@ public enum Sampler { TOP_P, MIN_P, TEMPERATURE - } From e5131b49373b13dd3e35a64b34cd186de740e1b1 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:06:17 +0200 Subject: [PATCH 157/384] Remove ci workflow on push --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6dd74f1..688bc3ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ # Since it has to build llama.cpp first, for speed, it only runs / tests on the natively supported GitHub runners. name: Continuous Integration -on: [ "push", "pull_request", "workflow_dispatch" ] +on: [ "pull_request", "workflow_dispatch" ] jobs: # don't split build and test jobs to keep the workflow simple From ae5698cc0084139a09d81ae6e1fe6e743f5f51f6 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:15:42 +0200 Subject: [PATCH 158/384] Install libcurl in CI workflow --- .github/workflows/ci.yml | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 688bc3ff..1101923e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,17 +6,15 @@ on: [ "pull_request", "workflow_dispatch" ] jobs: # don't split build and test jobs to keep the workflow simple - build-and-test-unix: - name: ${{ matrix.runner }} - runs-on: ${{ matrix.runner }} - strategy: - fail-fast: false - matrix: - runner: - - ubuntu-latest - - macos-latest + build-and-test-linux: + name: ubuntu-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Install libcurl + run: | + sudo apt-get update + sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries shell: bash # cmake should figure out OS and ARCH automatically when running build.sh @@ -29,11 +27,33 @@ jobs: shell: bash run: mvn verify + build-and-test-macos: + name: macos-latest + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Install libcurl + run: | + brew install curl + - name: Build libraries + shell: bash + run: .github/build.sh -DLLAMA_CURL=ON + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + shell: bash + run: mvn verify + build-and-test-windows: name: windows-latest runs-on: windows-latest steps: - uses: actions/checkout@v4 + - name: Install libcurl + run: | + .\vcpkg\vcpkg install curl - name: Build libraries shell: cmd run: .github\build.bat -DLLAMA_CURL=ON From 0f282c01bbd30aea54d22da3e5ea9293ea522187 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:28:03 +0200 Subject: [PATCH 159/384] Update CI workflow --- .github/workflows/ci.yml | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1101923e..b38d97f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,18 +11,20 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' - name: Install libcurl run: | sudo apt-get update sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries shell: bash - # cmake should figure out OS and ARCH automatically when running build.sh - run: .github/build.sh -DLLAMA_CURL=ON - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' + # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) + run: | + mvn compile + .github/build.sh -DLLAMA_CURL=ON - name: Run tests shell: bash run: mvn verify @@ -32,16 +34,18 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' - name: Install libcurl run: | brew install curl - name: Build libraries shell: bash - run: .github/build.sh -DLLAMA_CURL=ON - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' + run: | + mvn compile + .github/build.sh -DLLAMA_CURL=ON - name: Run tests shell: bash run: mvn verify @@ -51,16 +55,18 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v4 - - name: Install libcurl - run: | - .\vcpkg\vcpkg install curl - - name: Build libraries - shell: cmd - run: .github\build.bat -DLLAMA_CURL=ON - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' + - name: Install libcurl + run: | + choco install curl + - name: Build libraries + shell: cmd + run: | + mvn compile + .github\build.bat -DLLAMA_CURL=ON - name: Run tests shell: cmd run: mvn verify From f0871f1fa834ce7d24430ca6f19c66bc7e07ae17 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:31:27 +0200 Subject: [PATCH 160/384] Re-add jllama.h --- src/main/cpp/jllama.h | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/main/cpp/jllama.h diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h new file mode 100644 index 00000000..a9a9ed02 --- /dev/null +++ b/src/main/cpp/jllama.h @@ -0,0 +1,69 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class de_kherud_llama_LlamaModel */ + +#ifndef _Included_de_kherud_llama_LlamaModel +#define _Included_de_kherud_llama_LlamaModel +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: de_kherud_llama_LlamaModel + * Method: embed + * Signature: (Ljava/lang/String;)[F + */ +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: encode + * Signature: (Ljava/lang/String;)[I + */ +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: loadModel + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: requestCompletion + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: receiveGeneration + * Signature: (I)Lde/kherud/llama/LlamaModel/Output; + */ +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion + (JNIEnv *, jobject, jint); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: decodeBytes + * Signature: ([I)[B + */ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes + (JNIEnv *, jobject, jintArray); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: delete + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif From afe5e0986e082d696d80701d68a76a50c2674c87 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:54:01 +0200 Subject: [PATCH 161/384] Update cmake metal file handling --- .github/workflows/ci.yml | 2 +- CMakeLists.txt | 2 +- build-args.cmake | 8 -------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b38d97f5..7d971b3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,7 @@ jobs: shell: bash run: | mvn compile - .github/build.sh -DLLAMA_CURL=ON + .github/build.sh -DLLAMA_CURL=ON -DLLAMA_METAL_EMBED_LIBRARY=ON - name: Run tests shell: bash run: mvn verify diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e942ab1..4caf9592 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,7 +108,7 @@ else() ) endif() -if (LLAMA_METAL) +if (LLAMA_METAL AND NOT LLAMA_METAL_EMBED_LIBRARY) # copy ggml-metal.metal to shared library directory configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() diff --git a/build-args.cmake b/build-args.cmake index a0a4bcb8..f6a6132d 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -163,9 +163,6 @@ if (LLAMA_METAL) add_compile_definitions(GGML_METAL_NDEBUG) endif() - # copy ggml-common.h and ggml-metal.metal to bin directory - configure_file(ggml-common.h ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-common.h COPYONLY) - if (LLAMA_METAL_EMBED_LIBRARY) enable_language(ASM) add_compile_definitions(GGML_METAL_EMBED_LIBRARY) @@ -230,11 +227,6 @@ if (LLAMA_METAL) DEPENDS ggml-metal.metal ggml-common.h COMMENT "Compiling Metal kernels" ) - - add_custom_target( - ggml-metal ALL - DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib - ) endif() # LLAMA_METAL_EMBED_LIBRARY set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} From 25eccec516f4a44d6477ac00ede331e7341e96c0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:55:35 +0200 Subject: [PATCH 162/384] Update CI workflow windows build command --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d971b3f..b7a274fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,7 @@ jobs: - name: Build libraries shell: cmd run: | - mvn compile - .github\build.bat -DLLAMA_CURL=ON + mvn compile && .github\build.bat -DLLAMA_CURL=ON - name: Run tests shell: cmd run: mvn verify From 768de79691b4fc958d1666e8f5ee811a9a91e355 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 22:49:21 +0200 Subject: [PATCH 163/384] Use smaller testing model --- src/test/java/de/kherud/llama/LlamaModelIT.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelIT.java index 014bbcab..fb3f5e6f 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelIT.java @@ -20,8 +20,8 @@ public class LlamaModelIT { public static void setup() { model = new LlamaModel( new ModelParameters() - .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setModelFilePath("models/llama-160m-chat-v1.q2_k.gguf") + .setModelUrl("https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf") // we need to disable logging since it causes problems with the maven failsafe plugin .setDisableLog(true) .setNGpuLayers(43) @@ -136,7 +136,7 @@ public void testCompleteGrammar() { @Test public void testEmbedding() { float[] embedding = model.embed(prefix); - Assert.assertEquals(4096, embedding.length); + Assert.assertEquals(768, embedding.length); } @Test From f2a7bacd870a0694cf5418e0bca58f2b1bb89335 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 23:07:09 +0200 Subject: [PATCH 164/384] Switch from mvn verify to mvn test --- .github/workflows/ci.yml | 6 ++-- .github/workflows/release.yaml | 6 ++-- pom.xml | 28 ------------------- ...{LlamaModelIT.java => LlamaModelTest.java} | 4 +-- 4 files changed, 7 insertions(+), 37 deletions(-) rename src/test/java/de/kherud/llama/{LlamaModelIT.java => LlamaModelTest.java} (96%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7a274fa..c8d66e14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: .github/build.sh -DLLAMA_CURL=ON - name: Run tests shell: bash - run: mvn verify + run: mvn test build-and-test-macos: name: macos-latest @@ -48,7 +48,7 @@ jobs: .github/build.sh -DLLAMA_CURL=ON -DLLAMA_METAL_EMBED_LIBRARY=ON - name: Run tests shell: bash - run: mvn verify + run: mvn test build-and-test-windows: name: windows-latest @@ -68,4 +68,4 @@ jobs: mvn compile && .github\build.bat -DLLAMA_CURL=ON - name: Run tests shell: cmd - run: mvn verify + run: mvn test diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index aef31655..db242eb7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -132,7 +132,7 @@ jobs: java-version: '11' - name: Run tests shell: bash - run: mvn verify + run: mvn test test-macos: @@ -151,7 +151,7 @@ jobs: java-version: '11' - name: Run tests shell: bash - run: mvn verify + run: mvn test test-windows: @@ -170,7 +170,7 @@ jobs: java-version: '11' - name: Run tests shell: cmd - run: mvn verify + run: mvn test publish: diff --git a/pom.xml b/pom.xml index e0fdc69f..244a307f 100644 --- a/pom.xml +++ b/pom.xml @@ -78,34 +78,6 @@ - - - - org.apache.maven.plugins - maven-surefire-plugin - ${test.plugin.version} - - - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${test.plugin.version} - - - - - - - integration-test - verify - - - - diff --git a/src/test/java/de/kherud/llama/LlamaModelIT.java b/src/test/java/de/kherud/llama/LlamaModelTest.java similarity index 96% rename from src/test/java/de/kherud/llama/LlamaModelIT.java rename to src/test/java/de/kherud/llama/LlamaModelTest.java index fb3f5e6f..a57fb1eb 100644 --- a/src/test/java/de/kherud/llama/LlamaModelIT.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -8,7 +8,7 @@ import org.junit.BeforeClass; import org.junit.Test; -public class LlamaModelIT { +public class LlamaModelTest { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; @@ -22,8 +22,6 @@ public static void setup() { new ModelParameters() .setModelFilePath("models/llama-160m-chat-v1.q2_k.gguf") .setModelUrl("https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf") - // we need to disable logging since it causes problems with the maven failsafe plugin - .setDisableLog(true) .setNGpuLayers(43) .setEmbedding(true) ); From 6015a239326dd2204123d69ab7e346531772b9f1 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 5 Apr 2024 23:23:04 +0200 Subject: [PATCH 165/384] Fix tensor_split param --- src/main/cpp/server.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 81c53324..0950f457 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -2403,12 +2403,12 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params if (jparams.contains("tensor_split")) { #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - auto tensor_split = json_value(jparams, "tensor_split", default_params.tensor_split); + std::vector tensor_split = jparams["tensor_split"].get>(); GGML_ASSERT(tensor_split.size() <= llama_max_devices()); for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) { if (i_device < tensor_split.size()) { - params.tensor_split[i_device] = tensor_split.at(i_device).get(); + params.tensor_split[i_device] = tensor_split.at(i_device); } else { params.tensor_split[i_device] = 0.0f; } From 35a294161210d397f82ac80af62c7ac9b15bab07 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 12:11:45 +0200 Subject: [PATCH 166/384] Add curl cmake dependency --- .github/workflows/ci.yml | 10 ---------- CMakeLists.txt | 36 +++++++++++++++++++++++++----------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8d66e14..7481f1b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,10 +15,6 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install libcurl - run: | - sudo apt-get update - sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries shell: bash # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) @@ -38,9 +34,6 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install libcurl - run: | - brew install curl - name: Build libraries shell: bash run: | @@ -59,9 +52,6 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install libcurl - run: | - choco install curl - name: Build libraries shell: cmd run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 4caf9592..fa7d6184 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,22 +2,13 @@ cmake_minimum_required(VERSION 3.12) project(jllama CXX) +include(FetchContent) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) option(LLAMA_VERBOSE "llama: verbose output" OFF) -#################### llama.cpp #################### - -include(FetchContent) -FetchContent_Declare( - llama.cpp - GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2589 -) -FetchContent_MakeAvailable(llama.cpp) - - #################### json #################### FetchContent_Declare( @@ -27,6 +18,26 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(json) +#################### curl #################### + +if(LLAMA_CURL) + FetchContent_Declare( + curl + GIT_REPOSITORY https://github.com/curl/curl.git + GIT_TAG curl-8_7_1 + ) + FetchContent_MakeAvailable(curl) +endif() + +#################### llama.cpp #################### + +FetchContent_Declare( + llama.cpp + GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git + GIT_TAG b2589 +) +FetchContent_MakeAvailable(llama.cpp) + #################### jllama #################### # todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? @@ -92,6 +103,9 @@ add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.hpp src/ma target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) +if(LLAMA_CURL) + target_link_libraries(jllama PRIVATE CURL::libcurl) +endif() target_compile_features(jllama PRIVATE cxx_std_11) target_compile_definitions(jllama PRIVATE From ffab57047b5d7963acfe434f8d6b4b25dcd79527 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 12:28:43 +0200 Subject: [PATCH 167/384] Add cmake curl source variables --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa7d6184..2a8fab6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,9 @@ if(LLAMA_CURL) GIT_TAG curl-8_7_1 ) FetchContent_MakeAvailable(curl) + + set(CURL_ROOT "${curl_SOURCE_DIR}" CACHE PATH "Internally fetched curl source directory") + set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${curl_BINARY_DIR}/lib") endif() #################### llama.cpp #################### From 806d3f7225a3b311d846fc89af0ea89cf4f4e98c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 12:42:21 +0200 Subject: [PATCH 168/384] Minor cmake curl variable fix --- .gitignore | 3 +++ CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c33951a8..e34abc2d 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ src/main/resources/**/*.dylib src/main/resources/**/*.dll src/main/resources/**/*.metal src/test/resources/**/*.gbnf + +**/*.etag +**/*.lastModified diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a8fab6c..28151fae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ if(LLAMA_CURL) FetchContent_MakeAvailable(curl) set(CURL_ROOT "${curl_SOURCE_DIR}" CACHE PATH "Internally fetched curl source directory") - set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${curl_BINARY_DIR}/lib") + list(APPEND CMAKE_LIBRARY_PATH "${curl_BINARY_DIR}/lib") endif() #################### llama.cpp #################### From 5bfd4b44a407f6c4841c55ebb9158608e490f72a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 13:08:52 +0200 Subject: [PATCH 169/384] Update cmake curl target dependency --- CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 28151fae..3f90ea79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ FetchContent_MakeAvailable(json) #################### curl #################### if(LLAMA_CURL) + set(CMAKE_FIND_DEBUG_MODE ON) FetchContent_Declare( curl GIT_REPOSITORY https://github.com/curl/curl.git @@ -28,8 +29,8 @@ if(LLAMA_CURL) ) FetchContent_MakeAvailable(curl) - set(CURL_ROOT "${curl_SOURCE_DIR}" CACHE PATH "Internally fetched curl source directory") - list(APPEND CMAKE_LIBRARY_PATH "${curl_BINARY_DIR}/lib") + set(CURL_ROOT "${curl_SOURCE_DIR}" CACHE PATH "Internally fetched curl source directory") + find_library(CURL NAMES curl HINTS ${curl_BINARY_DIR}/lib) endif() #################### llama.cpp #################### @@ -105,10 +106,11 @@ endif() add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.hpp src/main/cpp/utils.hpp) target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) -target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) if(LLAMA_CURL) + add_dependencies(common CURL::libcurl) target_link_libraries(jllama PRIVATE CURL::libcurl) endif() +target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) target_compile_definitions(jllama PRIVATE From 5d98aafa4774d1bb36b49c6785b5a12a2896565a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:06:45 +0200 Subject: [PATCH 170/384] Fix cmake findsimd location --- build-args.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-args.cmake b/build-args.cmake index f6a6132d..3f6625ee 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -959,7 +959,7 @@ elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LW if (MSVC) # instruction set detection for MSVC only if (LLAMA_NATIVE) - include(cmake/FindSIMD.cmake) + include(${llama.cpp_SOURCE_DIR}/cmake/FindSIMD.cmake) endif () if (LLAMA_AVX512) list(APPEND ARCH_FLAGS /arch:AVX512) From 4b33a05d15d71792ae288cd5a545f2b74aa18c35 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:07:38 +0200 Subject: [PATCH 171/384] Remove cmake curl dependency --- CMakeLists.txt | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f90ea79..f79e28bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,21 +18,6 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(json) -#################### curl #################### - -if(LLAMA_CURL) - set(CMAKE_FIND_DEBUG_MODE ON) - FetchContent_Declare( - curl - GIT_REPOSITORY https://github.com/curl/curl.git - GIT_TAG curl-8_7_1 - ) - FetchContent_MakeAvailable(curl) - - set(CURL_ROOT "${curl_SOURCE_DIR}" CACHE PATH "Internally fetched curl source directory") - find_library(CURL NAMES curl HINTS ${curl_BINARY_DIR}/lib) -endif() - #################### llama.cpp #################### FetchContent_Declare( @@ -106,10 +91,6 @@ endif() add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.hpp src/main/cpp/utils.hpp) target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) -if(LLAMA_CURL) - add_dependencies(common CURL::libcurl) - target_link_libraries(jllama PRIVATE CURL::libcurl) -endif() target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) target_compile_features(jllama PRIVATE cxx_std_11) From d511158e7ca876423d08d8bfc7595ce91ea2cc4f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:17:09 +0200 Subject: [PATCH 172/384] Add CI workflow windows curl build --- .github/workflows/ci.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7481f1b2..03e3eae9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,13 +16,11 @@ jobs: distribution: 'zulu' java-version: '11' - name: Build libraries - shell: bash # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile .github/build.sh -DLLAMA_CURL=ON - name: Run tests - shell: bash run: mvn test build-and-test-macos: @@ -35,12 +33,10 @@ jobs: distribution: 'zulu' java-version: '11' - name: Build libraries - shell: bash run: | mvn compile .github/build.sh -DLLAMA_CURL=ON -DLLAMA_METAL_EMBED_LIBRARY=ON - name: Run tests - shell: bash run: mvn test build-and-test-windows: @@ -48,14 +44,23 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + repository: 'https://github.com/curl/curl' + ref: 'curl-8_7_1' + path: 'curl' + - name: Build curl + run: cd curl && ..\.github\build.bat - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Build libraries - shell: cmd run: | - mvn compile && .github\build.bat -DLLAMA_CURL=ON + mvn compile && + .github\build.bat ^ + -DLLAMA_CURL=ON ^ + -DCURL_LIBRARY=curl\build\lib\Release\libcurl.dll ^ + -DCURL_INCLUDE_DIR=curl\include - name: Run tests - shell: cmd run: mvn test From 37f6eac047a099f4a0929492aad987f2b601d639 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:19:38 +0200 Subject: [PATCH 173/384] Fix CI curl checkout --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03e3eae9..9eec107c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,8 @@ name: Continuous Integration on: [ "pull_request", "workflow_dispatch" ] +env: + CURL_RELEASE: 'curl-8_7_1' jobs: # don't split build and test jobs to keep the workflow simple @@ -46,8 +48,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/checkout@v4 with: - repository: 'https://github.com/curl/curl' - ref: 'curl-8_7_1' + repository: 'curl/curl' + ref: ${{ env.CURL_RELEASE }} path: 'curl' - name: Build curl run: cd curl && ..\.github\build.bat From 86b18937107d830e23ce825a3344803ab44a697d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:25:55 +0200 Subject: [PATCH 174/384] Add CI linux curl build --- .github/workflows/ci.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9eec107c..8251f3c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + repository: 'curl/curl' + ref: ${{ env.CURL_RELEASE }} + path: 'curl' + - name: Build curl + run: cd curl && ../.github/build.sh - uses: actions/setup-java@v4 with: distribution: 'zulu' @@ -21,7 +28,10 @@ jobs: # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile - .github/build.sh -DLLAMA_CURL=ON + .github/build.sh \ + -DLLAMA_CURL=ON \ + -DCURL_LIBRARY=curl/build/lib/libcurl.so \ + -DCURL_INCLUDE_DIR=curl/include - name: Run tests run: mvn test @@ -59,10 +69,10 @@ jobs: java-version: '11' - name: Build libraries run: | - mvn compile && - .github\build.bat ^ - -DLLAMA_CURL=ON ^ - -DCURL_LIBRARY=curl\build\lib\Release\libcurl.dll ^ + mvn compile + .github\build.bat ` + -DLLAMA_CURL=ON ` + -DCURL_LIBRARY=curl\build\lib\Release\libcurl.dll ` -DCURL_INCLUDE_DIR=curl\include - name: Run tests run: mvn test From 3680a5973b88f6c242411ac01ccc8a2f80f92508 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 15:43:11 +0200 Subject: [PATCH 175/384] Update CI windows curl link --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8251f3c3..3f8ebcb4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: mvn compile .github\build.bat ` -DLLAMA_CURL=ON ` - -DCURL_LIBRARY=curl\build\lib\Release\libcurl.dll ` + -DCURL_LIBRARY=curl\build\lib\Release\libcurl_imp.lib ` -DCURL_INCLUDE_DIR=curl\include - name: Run tests run: mvn test From 0b23f85ca7910c604c4e443370636af04a88931c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 18:46:23 +0200 Subject: [PATCH 176/384] Update CI windows curl build --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f8ebcb4..3faaf390 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,10 +69,15 @@ jobs: java-version: '11' - name: Build libraries run: | + dir + dir curl + dir curl\build + dir curl\build\lib + dir curl\build\lib\Release mvn compile .github\build.bat ` -DLLAMA_CURL=ON ` - -DCURL_LIBRARY=curl\build\lib\Release\libcurl_imp.lib ` + -DCURL_LIBRARY=${{ github.workspace }}\curl\build\lib\Release\libcurl_imp.lib ` -DCURL_INCLUDE_DIR=curl\include - name: Run tests run: mvn test From b1af4481b3641ffbbb71c0225dabff3b1049f1de Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 18:49:06 +0200 Subject: [PATCH 177/384] build macos without embedded metal --- .github/workflows/ci.yml | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3faaf390..97176404 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: - name: Build libraries run: | mvn compile - .github/build.sh -DLLAMA_CURL=ON -DLLAMA_METAL_EMBED_LIBRARY=ON + .github/build.sh -DLLAMA_CURL=ON - name: Run tests run: mvn test diff --git a/CMakeLists.txt b/CMakeLists.txt index f79e28bb..c7fc444c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,7 +108,7 @@ else() ) endif() -if (LLAMA_METAL AND NOT LLAMA_METAL_EMBED_LIBRARY) +if (LLAMA_METAL) # copy ggml-metal.metal to shared library directory configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() From 8ab24ac64f6e2dd8f37c3612a2d8194782f848bf Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 20:07:51 +0200 Subject: [PATCH 178/384] cmake copy ggml-common.h --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7fc444c..fb7cb421 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,7 @@ else() endif() if (LLAMA_METAL) - # copy ggml-metal.metal to shared library directory + # copy ggml-common.h and ggml-metal.metal to bin directory + configure_file(${llama.cpp_SOURCE_DIR}/ggml-common.h ${JLLAMA_DIR}/ggml-common.h COPYONLY) configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() From fe3fbf5461f5dc4e48c80225157c2cb71683df58 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 6 Apr 2024 20:08:08 +0200 Subject: [PATCH 179/384] CI workflow install curl via packet manager --- .github/workflows/ci.yml | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97176404..dec85cb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,8 +3,6 @@ name: Continuous Integration on: [ "pull_request", "workflow_dispatch" ] -env: - CURL_RELEASE: 'curl-8_7_1' jobs: # don't split build and test jobs to keep the workflow simple @@ -13,25 +11,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/checkout@v4 - with: - repository: 'curl/curl' - ref: ${{ env.CURL_RELEASE }} - path: 'curl' - - name: Build curl - run: cd curl && ../.github/build.sh - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' + - name: Install curl + run: | + sudo apt-get update + sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile - .github/build.sh \ - -DLLAMA_CURL=ON \ - -DCURL_LIBRARY=curl/build/lib/libcurl.so \ - -DCURL_INCLUDE_DIR=curl/include + .github/build.sh -DLLAMA_CURL=ON - name: Run tests run: mvn test @@ -56,28 +48,18 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v4 - - uses: actions/checkout@v4 - with: - repository: 'curl/curl' - ref: ${{ env.CURL_RELEASE }} - path: 'curl' - - name: Build curl - run: cd curl && ..\.github\build.bat - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' + - name: Install curl + run: | + git clone https://github.com/Microsoft/vcpkg.git + .\vcpkg\bootstrap-vcpkg.bat + .\vcpkg\vcpkg install curl - name: Build libraries run: | - dir - dir curl - dir curl\build - dir curl\build\lib - dir curl\build\lib\Release mvn compile - .github\build.bat ` - -DLLAMA_CURL=ON ` - -DCURL_LIBRARY=${{ github.workspace }}\curl\build\lib\Release\libcurl_imp.lib ` - -DCURL_INCLUDE_DIR=curl\include + .github\build.bat -DLLAMA_CURL=ON - name: Run tests run: mvn test From 82b6fb163b87aa96350354f641898f7098796206 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 19:33:56 +0200 Subject: [PATCH 180/384] Format c++ code --- src/main/cpp/jllama.cpp | 23 +- src/main/cpp/server.hpp | 740 +++++++++++++++++++++------------------- src/main/cpp/utils.hpp | 563 ++++++++++++++++-------------- 3 files changed, 722 insertions(+), 604 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 64076ff5..eaacb91a 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -252,10 +252,13 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo json json_params = json::parse(c_params); server_params_parse(json_params, sparams, params); - if (json_value(json_params, "disable_log", false)) { - log_disable(); - } else { - log_enable(); + if (json_value(json_params, "disable_log", false)) + { + log_disable(); + } + else + { + log_enable(); } if (!sparams.system_prompt.empty()) @@ -411,12 +414,14 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jlong server_handle = env->GetLongField(obj, f_model_pointer); server_context *ctx_server = reinterpret_cast(server_handle); - if (!ctx_server->params.embedding) { - env->ThrowNew(c_llama_error, "model was not loaded with embedding support (see ModelParameters#setEmbedding(boolean))"); - return nullptr; + if (!ctx_server->params.embedding) + { + env->ThrowNew(c_llama_error, + "model was not loaded with embedding support (see ModelParameters#setEmbedding(boolean))"); + return nullptr; } - const std::string prompt = parse_jstring(env, jprompt); + const std::string prompt = parse_jstring(env, jprompt); const int id_task = ctx_server->queue_tasks.get_new_id(); ctx_server->queue_results.add_waiting_task_id(id_task); @@ -432,7 +437,7 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, } else { - std::cout << result.data << std::endl; + std::cout << result.data << std::endl; std::vector embedding = result.data["embedding"].get>(); jfloatArray j_embedding = env->NewFloatArray(embedding.size()); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 0950f457..fc67087d 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -50,15 +50,16 @@ enum server_task_type SERVER_TASK_TYPE_METRICS }; -struct server_task { - int id = -1; // to be filled by server_queue - int id_multi = -1; +struct server_task +{ + int id = -1; // to be filled by server_queue + int id_multi = -1; int id_target = -1; server_task_type type; json data; - bool infill = false; + bool infill = false; bool embedding = false; }; @@ -81,14 +82,16 @@ struct server_task_multi std::vector results; }; -struct slot_params { - bool stream = true; +struct slot_params +{ + bool stream = true; bool cache_prompt = false; // remember the prompt to avoid reprocessing all prompt - uint32_t seed = -1; // RNG seed - int32_t n_keep = 0; // number of tokens to keep from initial prompt - int32_t n_discard = 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half - int32_t n_predict = -1; // new tokens to predict + uint32_t seed = -1; // RNG seed + int32_t n_keep = 0; // number of tokens to keep from initial prompt + int32_t n_discard = + 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half + int32_t n_predict = -1; // new tokens to predict std::vector antiprompt; @@ -869,207 +872,247 @@ struct server_context return last_used; } - bool launch_slot_with_task(server_slot & slot, const server_task & task) { - slot_params default_params; - llama_sampling_params default_sparams; - auto & data = task.data; - - slot.oaicompat = false; - slot.oaicompat_model = ""; - - slot.params.stream = json_value(data, "stream", false); - slot.params.cache_prompt = json_value(data, "cache_prompt", false); - slot.params.n_predict = json_value(data, "n_predict", default_params.n_predict); - slot.sparams.top_k = json_value(data, "top_k", default_sparams.top_k); - slot.sparams.top_p = json_value(data, "top_p", default_sparams.top_p); - slot.sparams.min_p = json_value(data, "min_p", default_sparams.min_p); - slot.sparams.tfs_z = json_value(data, "tfs_z", default_sparams.tfs_z); - slot.sparams.typical_p = json_value(data, "typical_p", default_sparams.typical_p); - slot.sparams.temp = json_value(data, "temperature", default_sparams.temp); - slot.sparams.dynatemp_range = json_value(data, "dynatemp_range", default_sparams.dynatemp_range); - slot.sparams.dynatemp_exponent = json_value(data, "dynatemp_exponent", default_sparams.dynatemp_exponent); - slot.sparams.penalty_last_n = json_value(data, "repeat_last_n", default_sparams.penalty_last_n); - slot.sparams.penalty_repeat = json_value(data, "repeat_penalty", default_sparams.penalty_repeat); - slot.sparams.penalty_freq = json_value(data, "frequency_penalty", default_sparams.penalty_freq); - slot.sparams.penalty_present = json_value(data, "presence_penalty", default_sparams.penalty_present); - slot.sparams.mirostat = json_value(data, "mirostat", default_sparams.mirostat); - slot.sparams.mirostat_tau = json_value(data, "mirostat_tau", default_sparams.mirostat_tau); - slot.sparams.mirostat_eta = json_value(data, "mirostat_eta", default_sparams.mirostat_eta); - slot.sparams.penalize_nl = json_value(data, "penalize_nl", default_sparams.penalize_nl); - slot.params.n_keep = json_value(data, "n_keep", slot.params.n_keep); - slot.params.n_discard = json_value(data, "n_discard", default_params.n_discard); - slot.params.seed = json_value(data, "seed", default_params.seed); - slot.sparams.n_probs = json_value(data, "n_probs", default_sparams.n_probs); - slot.sparams.min_keep = json_value(data, "min_keep", default_sparams.min_keep); - slot.sparams.grammar = json_value(data, "grammar", default_sparams.grammar); - - if (slot.params.cache_prompt && slot.ga_n != 1) { - LOG_WARNING("cache_prompt is not supported with group-attention", {}); - slot.params.cache_prompt = false; - } - - if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { - // Might be better to reject the request with a 400 ? - LOG_WARNING("Max tokens to predict exceeds server configuration", { - {"params.n_predict", slot.params.n_predict}, - {"slot.n_predict", slot.n_predict}, - }); - slot.params.n_predict = slot.n_predict; - } - - // infill - slot.params.input_prefix = json_value(data, "input_prefix", default_params.input_prefix); - slot.params.input_suffix = json_value(data, "input_suffix", default_params.input_suffix); - - // get prompt - { - const auto & prompt = data.find("prompt"); - if (prompt == data.end()) { - send_error(task, "Either \"prompt\" or \"messages\" must be provided", ERROR_TYPE_INVALID_REQUEST); - return false; - } else { - slot.prompt = *prompt; - } - if (slot.prompt.is_array() && slot.prompt.size() == 0) { - send_error(task, "\"prompt\" cannot be an empty array", ERROR_TYPE_INVALID_REQUEST); - return false; - } - } - - // penalize user-provided tokens - { - slot.sparams.penalty_prompt_tokens.clear(); - slot.sparams.use_penalty_prompt_tokens = false; - - const auto & penalty_prompt = data.find("penalty_prompt"); - - if (penalty_prompt != data.end()) { - if (penalty_prompt->is_string()) { - const auto penalty_prompt_string = penalty_prompt->get(); - slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); - - if (slot.params.n_predict > 0) { - slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + slot.params.n_predict); - } - slot.sparams.use_penalty_prompt_tokens = true; - - LOG_VERBOSE("penalty_prompt_tokens", { - {"id_slot", slot.id}, - {"tokens", slot.sparams.penalty_prompt_tokens}, - }); - } - else if (penalty_prompt->is_array()) { - const auto n_tokens = penalty_prompt->size(); - slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); - - const int n_vocab = llama_n_vocab(model); - for (const auto & penalty_token : *penalty_prompt) { - if (penalty_token.is_number_integer()) { - const auto tok = penalty_token.get(); - if (tok >= 0 && tok < n_vocab) { - slot.sparams.penalty_prompt_tokens.push_back(tok); - } - } - } - slot.sparams.use_penalty_prompt_tokens = true; - - LOG_VERBOSE("penalty_prompt_tokens", { - {"id_slot", slot.id}, - {"tokens", slot.sparams.penalty_prompt_tokens}, - }); - } - } - } - - { - slot.sparams.logit_bias.clear(); - - if (json_value(data, "ignore_eos", false)) { - slot.sparams.logit_bias[llama_token_eos(model)] = -INFINITY; - } - - const auto & logit_bias = data.find("logit_bias"); - if (logit_bias != data.end() && logit_bias->is_array()) { - const int n_vocab = llama_n_vocab(model); - for (const auto & el : *logit_bias) { - // TODO: we may want to throw errors here, in case "el" is incorrect - if (el.is_array() && el.size() == 2) { - float bias; - if (el[1].is_number()) { - bias = el[1].get(); - } else if (el[1].is_boolean() && !el[1].get()) { - bias = -INFINITY; - } else { - continue; - } - - if (el[0].is_number_integer()) { - llama_token tok = el[0].get(); - if (tok >= 0 && tok < n_vocab) { - slot.sparams.logit_bias[tok] = bias; - } - } else if (el[0].is_string()) { - auto toks = llama_tokenize(model, el[0].get(), false); - for (auto tok : toks) { - slot.sparams.logit_bias[tok] = bias; - } - } - } - } - } - } - - { - slot.params.antiprompt.clear(); - - const auto & stop = data.find("stop"); - if (stop != data.end() && stop->is_array()) { - for (const auto & word : *stop) { - if (!word.empty()) { - slot.params.antiprompt.push_back(word); - } - } - } - } - - { - const auto & samplers_sequence = data.find("samplers"); - if (samplers_sequence != data.end() && samplers_sequence->is_array()) { - std::vector sampler_names; - for (const auto & sampler_name : *samplers_sequence) { - if (sampler_name.is_string()) { - sampler_names.emplace_back(sampler_name); - } - } - slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); - } else { - slot.sparams.samplers_sequence = default_sparams.samplers_sequence; - } - } - - { - if (slot.ctx_sampling != nullptr) { - llama_sampling_free(slot.ctx_sampling); - } - slot.ctx_sampling = llama_sampling_init(slot.sparams); - if (slot.ctx_sampling == nullptr) { - // for now, the only error that may happen here is invalid grammar - send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); - return false; - } - llama_set_rng_seed(ctx, slot.params.seed); - } - - slot.command = SLOT_COMMAND_LOAD_PROMPT; - slot.prompt_tokens.clear(); - - LOG_INFO("slot is processing task", { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - }); - - return true; - } + bool launch_slot_with_task(server_slot &slot, const server_task &task) + { + slot_params default_params; + llama_sampling_params default_sparams; + auto &data = task.data; + + slot.oaicompat = false; + slot.oaicompat_model = ""; + + slot.params.stream = json_value(data, "stream", false); + slot.params.cache_prompt = json_value(data, "cache_prompt", false); + slot.params.n_predict = json_value(data, "n_predict", default_params.n_predict); + slot.sparams.top_k = json_value(data, "top_k", default_sparams.top_k); + slot.sparams.top_p = json_value(data, "top_p", default_sparams.top_p); + slot.sparams.min_p = json_value(data, "min_p", default_sparams.min_p); + slot.sparams.tfs_z = json_value(data, "tfs_z", default_sparams.tfs_z); + slot.sparams.typical_p = json_value(data, "typical_p", default_sparams.typical_p); + slot.sparams.temp = json_value(data, "temperature", default_sparams.temp); + slot.sparams.dynatemp_range = json_value(data, "dynatemp_range", default_sparams.dynatemp_range); + slot.sparams.dynatemp_exponent = json_value(data, "dynatemp_exponent", default_sparams.dynatemp_exponent); + slot.sparams.penalty_last_n = json_value(data, "repeat_last_n", default_sparams.penalty_last_n); + slot.sparams.penalty_repeat = json_value(data, "repeat_penalty", default_sparams.penalty_repeat); + slot.sparams.penalty_freq = json_value(data, "frequency_penalty", default_sparams.penalty_freq); + slot.sparams.penalty_present = json_value(data, "presence_penalty", default_sparams.penalty_present); + slot.sparams.mirostat = json_value(data, "mirostat", default_sparams.mirostat); + slot.sparams.mirostat_tau = json_value(data, "mirostat_tau", default_sparams.mirostat_tau); + slot.sparams.mirostat_eta = json_value(data, "mirostat_eta", default_sparams.mirostat_eta); + slot.sparams.penalize_nl = json_value(data, "penalize_nl", default_sparams.penalize_nl); + slot.params.n_keep = json_value(data, "n_keep", slot.params.n_keep); + slot.params.n_discard = json_value(data, "n_discard", default_params.n_discard); + slot.params.seed = json_value(data, "seed", default_params.seed); + slot.sparams.n_probs = json_value(data, "n_probs", default_sparams.n_probs); + slot.sparams.min_keep = json_value(data, "min_keep", default_sparams.min_keep); + slot.sparams.grammar = json_value(data, "grammar", default_sparams.grammar); + + if (slot.params.cache_prompt && slot.ga_n != 1) + { + LOG_WARNING("cache_prompt is not supported with group-attention", {}); + slot.params.cache_prompt = false; + } + + if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) + { + // Might be better to reject the request with a 400 ? + LOG_WARNING("Max tokens to predict exceeds server configuration", + { + {"params.n_predict", slot.params.n_predict}, + {"slot.n_predict", slot.n_predict}, + }); + slot.params.n_predict = slot.n_predict; + } + + // infill + slot.params.input_prefix = json_value(data, "input_prefix", default_params.input_prefix); + slot.params.input_suffix = json_value(data, "input_suffix", default_params.input_suffix); + + // get prompt + { + const auto &prompt = data.find("prompt"); + if (prompt == data.end()) + { + send_error(task, "Either \"prompt\" or \"messages\" must be provided", ERROR_TYPE_INVALID_REQUEST); + return false; + } + else + { + slot.prompt = *prompt; + } + if (slot.prompt.is_array() && slot.prompt.size() == 0) + { + send_error(task, "\"prompt\" cannot be an empty array", ERROR_TYPE_INVALID_REQUEST); + return false; + } + } + + // penalize user-provided tokens + { + slot.sparams.penalty_prompt_tokens.clear(); + slot.sparams.use_penalty_prompt_tokens = false; + + const auto &penalty_prompt = data.find("penalty_prompt"); + + if (penalty_prompt != data.end()) + { + if (penalty_prompt->is_string()) + { + const auto penalty_prompt_string = penalty_prompt->get(); + slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); + + if (slot.params.n_predict > 0) + { + slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + + slot.params.n_predict); + } + slot.sparams.use_penalty_prompt_tokens = true; + + LOG_VERBOSE("penalty_prompt_tokens", { + {"id_slot", slot.id}, + {"tokens", slot.sparams.penalty_prompt_tokens}, + }); + } + else if (penalty_prompt->is_array()) + { + const auto n_tokens = penalty_prompt->size(); + slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); + + const int n_vocab = llama_n_vocab(model); + for (const auto &penalty_token : *penalty_prompt) + { + if (penalty_token.is_number_integer()) + { + const auto tok = penalty_token.get(); + if (tok >= 0 && tok < n_vocab) + { + slot.sparams.penalty_prompt_tokens.push_back(tok); + } + } + } + slot.sparams.use_penalty_prompt_tokens = true; + + LOG_VERBOSE("penalty_prompt_tokens", { + {"id_slot", slot.id}, + {"tokens", slot.sparams.penalty_prompt_tokens}, + }); + } + } + } + + { + slot.sparams.logit_bias.clear(); + + if (json_value(data, "ignore_eos", false)) + { + slot.sparams.logit_bias[llama_token_eos(model)] = -INFINITY; + } + + const auto &logit_bias = data.find("logit_bias"); + if (logit_bias != data.end() && logit_bias->is_array()) + { + const int n_vocab = llama_n_vocab(model); + for (const auto &el : *logit_bias) + { + // TODO: we may want to throw errors here, in case "el" is incorrect + if (el.is_array() && el.size() == 2) + { + float bias; + if (el[1].is_number()) + { + bias = el[1].get(); + } + else if (el[1].is_boolean() && !el[1].get()) + { + bias = -INFINITY; + } + else + { + continue; + } + + if (el[0].is_number_integer()) + { + llama_token tok = el[0].get(); + if (tok >= 0 && tok < n_vocab) + { + slot.sparams.logit_bias[tok] = bias; + } + } + else if (el[0].is_string()) + { + auto toks = llama_tokenize(model, el[0].get(), false); + for (auto tok : toks) + { + slot.sparams.logit_bias[tok] = bias; + } + } + } + } + } + } + + { + slot.params.antiprompt.clear(); + + const auto &stop = data.find("stop"); + if (stop != data.end() && stop->is_array()) + { + for (const auto &word : *stop) + { + if (!word.empty()) + { + slot.params.antiprompt.push_back(word); + } + } + } + } + + { + const auto &samplers_sequence = data.find("samplers"); + if (samplers_sequence != data.end() && samplers_sequence->is_array()) + { + std::vector sampler_names; + for (const auto &sampler_name : *samplers_sequence) + { + if (sampler_name.is_string()) + { + sampler_names.emplace_back(sampler_name); + } + } + slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); + } + else + { + slot.sparams.samplers_sequence = default_sparams.samplers_sequence; + } + } + + { + if (slot.ctx_sampling != nullptr) + { + llama_sampling_free(slot.ctx_sampling); + } + slot.ctx_sampling = llama_sampling_init(slot.sparams); + if (slot.ctx_sampling == nullptr) + { + // for now, the only error that may happen here is invalid grammar + send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); + return false; + } + llama_set_rng_seed(ctx, slot.params.seed); + } + + slot.command = SLOT_COMMAND_LOAD_PROMPT; + slot.prompt_tokens.clear(); + + LOG_INFO("slot is processing task", { + {"id_slot", slot.id}, + {"id_task", slot.id_task}, + }); + + return true; + } void kv_cache_clear() { @@ -2323,145 +2366,153 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params gpt_params default_params; server_params default_sparams; - params.seed = json_value(jparams, "seed", default_params.seed); - params.n_threads = json_value(jparams, "n_threads", default_params.n_threads); - params.n_threads_draft = json_value(jparams, "n_threads_draft", default_params.n_threads_draft); - params.n_threads_batch = json_value(jparams, "n_threads_batch", default_params.n_threads_batch); - params.n_threads_batch_draft = json_value(jparams, "n_threads_batch_draft", default_params.n_threads_batch_draft); - params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); - params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); - params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); - params.n_ubatch = json_value(jparams, "n_ubatch", default_params.n_ubatch); - params.n_keep = json_value(jparams, "n_keep", default_params.n_keep); - params.n_draft = json_value(jparams, "n_draft", default_params.n_draft); - params.n_chunks = json_value(jparams, "n_chunks", default_params.n_chunks); - params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); - params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); - params.p_split = json_value(jparams, "p_split", default_params.p_split); - params.n_beams = json_value(jparams, "n_beams", default_params.n_beams); - params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); - params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); - params.n_print = json_value(jparams, "n_print", default_params.n_print); - params.rope_freq_base = json_value(jparams, "rope_freq_base", default_params.rope_freq_base); - params.rope_freq_scale = json_value(jparams, "rope_freq_scale", default_params.rope_freq_scale); - params.yarn_ext_factor = json_value(jparams, "yarn_ext_factor", default_params.yarn_ext_factor); - params.yarn_attn_factor = json_value(jparams, "yarn_attn_factor", default_params.yarn_attn_factor); - params.yarn_beta_fast = json_value(jparams, "yarn_beta_fast", default_params.yarn_beta_fast); - params.yarn_beta_slow = json_value(jparams, "yarn_beta_slow", default_params.yarn_beta_slow); - params.yarn_orig_ctx = json_value(jparams, "yarn_orig_ctx", default_params.yarn_orig_ctx); - params.defrag_thold = json_value(jparams, "defrag_thold", default_params.defrag_thold); - params.numa = json_value(jparams, "numa", default_params.numa); - params.rope_scaling_type = json_value(jparams, "rope_scaling_type", default_params.rope_scaling_type); - params.pooling_type = json_value(jparams, "pooling_type", default_params.pooling_type); - params.model = json_value(jparams, "model", default_params.model); - params.model_draft = json_value(jparams, "model_draft", default_params.model_draft); - params.model_alias = json_value(jparams, "model_alias", default_params.model_alias); - params.model_url = json_value(jparams, "model_url", default_params.model_url); - params.hf_repo = json_value(jparams, "hf_repo", default_params.hf_repo); - params.hf_file = json_value(jparams, "hf_file", default_params.hf_file); - params.prompt = json_value(jparams, "prompt", default_params.prompt); - params.prompt_file = json_value(jparams, "prompt_file", default_params.prompt_file); - params.path_prompt_cache = json_value(jparams, "path_prompt_cache", default_params.path_prompt_cache); - params.input_prefix = json_value(jparams, "input_prefix", default_params.input_prefix); - params.input_suffix = json_value(jparams, "input_suffix", default_params.input_suffix); - params.antiprompt = json_value(jparams, "antiprompt", default_params.antiprompt); - params.logdir = json_value(jparams, "logdir", default_params.logdir); - params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); - params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); - params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); - params.lora_adapter = json_value(jparams, "lora_adapter", default_params.lora_adapter); - params.lora_base = json_value(jparams, "lora_base", default_params.lora_base); - params.embedding = json_value(jparams, "embedding", default_params.embedding); - params.escape = json_value(jparams, "escape", default_params.escape); - params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); - params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); - params.ignore_eos = json_value(jparams, "ignore_eos", default_params.ignore_eos); - params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); - params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); - params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - - if (jparams.contains("n_gpu_layers")) { - if (llama_supports_gpu_offload()) - { - params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); - params.n_gpu_layers_draft = json_value(jparams, "n_gpu_layers_draft", default_params.n_gpu_layers_draft); - } - else - { - LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support", - {{"n_gpu_layers", params.n_gpu_layers}}); - } - } - - if (jparams.contains("split_mode")) { - params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); + params.seed = json_value(jparams, "seed", default_params.seed); + params.n_threads = json_value(jparams, "n_threads", default_params.n_threads); + params.n_threads_draft = json_value(jparams, "n_threads_draft", default_params.n_threads_draft); + params.n_threads_batch = json_value(jparams, "n_threads_batch", default_params.n_threads_batch); + params.n_threads_batch_draft = json_value(jparams, "n_threads_batch_draft", default_params.n_threads_batch_draft); + params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); + params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); + params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); + params.n_ubatch = json_value(jparams, "n_ubatch", default_params.n_ubatch); + params.n_keep = json_value(jparams, "n_keep", default_params.n_keep); + params.n_draft = json_value(jparams, "n_draft", default_params.n_draft); + params.n_chunks = json_value(jparams, "n_chunks", default_params.n_chunks); + params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); + params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); + params.p_split = json_value(jparams, "p_split", default_params.p_split); + params.n_beams = json_value(jparams, "n_beams", default_params.n_beams); + params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); + params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); + params.n_print = json_value(jparams, "n_print", default_params.n_print); + params.rope_freq_base = json_value(jparams, "rope_freq_base", default_params.rope_freq_base); + params.rope_freq_scale = json_value(jparams, "rope_freq_scale", default_params.rope_freq_scale); + params.yarn_ext_factor = json_value(jparams, "yarn_ext_factor", default_params.yarn_ext_factor); + params.yarn_attn_factor = json_value(jparams, "yarn_attn_factor", default_params.yarn_attn_factor); + params.yarn_beta_fast = json_value(jparams, "yarn_beta_fast", default_params.yarn_beta_fast); + params.yarn_beta_slow = json_value(jparams, "yarn_beta_slow", default_params.yarn_beta_slow); + params.yarn_orig_ctx = json_value(jparams, "yarn_orig_ctx", default_params.yarn_orig_ctx); + params.defrag_thold = json_value(jparams, "defrag_thold", default_params.defrag_thold); + params.numa = json_value(jparams, "numa", default_params.numa); + params.rope_scaling_type = json_value(jparams, "rope_scaling_type", default_params.rope_scaling_type); + params.pooling_type = json_value(jparams, "pooling_type", default_params.pooling_type); + params.model = json_value(jparams, "model", default_params.model); + params.model_draft = json_value(jparams, "model_draft", default_params.model_draft); + params.model_alias = json_value(jparams, "model_alias", default_params.model_alias); + params.model_url = json_value(jparams, "model_url", default_params.model_url); + params.hf_repo = json_value(jparams, "hf_repo", default_params.hf_repo); + params.hf_file = json_value(jparams, "hf_file", default_params.hf_file); + params.prompt = json_value(jparams, "prompt", default_params.prompt); + params.prompt_file = json_value(jparams, "prompt_file", default_params.prompt_file); + params.path_prompt_cache = json_value(jparams, "path_prompt_cache", default_params.path_prompt_cache); + params.input_prefix = json_value(jparams, "input_prefix", default_params.input_prefix); + params.input_suffix = json_value(jparams, "input_suffix", default_params.input_suffix); + params.antiprompt = json_value(jparams, "antiprompt", default_params.antiprompt); + params.logdir = json_value(jparams, "logdir", default_params.logdir); + params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); + params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); + params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); + params.lora_adapter = json_value(jparams, "lora_adapter", default_params.lora_adapter); + params.lora_base = json_value(jparams, "lora_base", default_params.lora_base); + params.embedding = json_value(jparams, "embedding", default_params.embedding); + params.escape = json_value(jparams, "escape", default_params.escape); + params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); + params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); + params.ignore_eos = json_value(jparams, "ignore_eos", default_params.ignore_eos); + params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); + params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); + params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); + + if (jparams.contains("n_gpu_layers")) + { + if (llama_supports_gpu_offload()) + { + params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); + params.n_gpu_layers_draft = json_value(jparams, "n_gpu_layers_draft", default_params.n_gpu_layers_draft); + } + else + { + LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + "See main README.md for information on enabling GPU BLAS support", + {{"n_gpu_layers", params.n_gpu_layers}}); + } + } + + if (jparams.contains("split_mode")) + { + params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); #ifndef GGML_USE_CUDA - fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); + fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); #endif - } + } - if (jparams.contains("tensor_split")) { + if (jparams.contains("tensor_split")) + { #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - std::vector tensor_split = jparams["tensor_split"].get>(); - GGML_ASSERT(tensor_split.size() <= llama_max_devices()); - - for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) { - if (i_device < tensor_split.size()) { - params.tensor_split[i_device] = tensor_split.at(i_device); - } else { - params.tensor_split[i_device] = 0.0f; - } - } + std::vector tensor_split = jparams["tensor_split"].get>(); + GGML_ASSERT(tensor_split.size() <= llama_max_devices()); + + for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) + { + if (i_device < tensor_split.size()) + { + params.tensor_split[i_device] = tensor_split.at(i_device); + } + else + { + params.tensor_split[i_device] = 0.0f; + } + } #else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); #endif // GGML_USE_CUDA - } + } - if (jparams.contains("main_gpu")) { + if (jparams.contains("main_gpu")) + { #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); + params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); #else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); + LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); #endif - } - -//#if SERVER_VERBOSE != 1 -// LOG_WARNING("server.cpp is not built with verbose logging.", {}); -//#else -// server_verbose = true; -//#endif - -// auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); -// if (system_prompt_file.length() > 0) -// { -// std::ifstream file(system_prompt_file); -// if (!file) -// { -// fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); -// invalid_param = true; -// break; -// } -// std::string system_prompt; -// std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), -// std::back_inserter(system_prompt)); -// sparams.system_prompt = system_prompt; -// } - -// value = env->GetObjectField(jparams, f_log_format); -// if (value == o_log_format_json) -// { -// server_log_json = true; -// } -// else if (value == o_log_format_text) -// { -// server_log_json = false; -// } -// else -// { -// log_set_target(stdout); -// LOG_INFO("logging to file is disabled.", {}); -// } + } + + // #if SERVER_VERBOSE != 1 + // LOG_WARNING("server.cpp is not built with verbose logging.", {}); + // #else + // server_verbose = true; + // #endif + + // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); + // if (system_prompt_file.length() > 0) + // { + // std::ifstream file(system_prompt_file); + // if (!file) + // { + // fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); + // invalid_param = true; + // break; + // } + // std::string system_prompt; + // std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), + // std::back_inserter(system_prompt)); + // sparams.system_prompt = system_prompt; + // } + + // value = env->GetObjectField(jparams, f_log_format); + // if (value == o_log_format_json) + // { + // server_log_json = true; + // } + // else if (value == o_log_format_text) + // { + // server_log_json = false; + // } + // else + // { + // log_set_target(stdout); + // LOG_INFO("logging to file is disabled.", {}); + // } // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); // @@ -2522,8 +2573,9 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params // } // - if (!params.kv_overrides.empty()) { - params.kv_overrides.emplace_back(); - params.kv_overrides.back().key[0] = 0; - } + if (!params.kv_overrides.empty()) + { + params.kv_overrides.emplace_back(); + params.kv_overrides.back().key[0] = 0; + } } diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 3f122d1b..30bb0dca 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -1,96 +1,111 @@ #pragma once -#include "llama.h" #include "common.h" +#include "llama.h" #include "json.hpp" +#include +#include #include #include -#include -#include #define DEFAULT_OAICOMPAT_MODEL "gpt-3.5-turbo-0613" using json = nlohmann::ordered_json; // https://community.openai.com/t/openai-chat-list-of-error-codes-and-types/357791/11 -enum error_type { +enum error_type +{ ERROR_TYPE_INVALID_REQUEST, ERROR_TYPE_AUTHENTICATION, ERROR_TYPE_SERVER, ERROR_TYPE_NOT_FOUND, ERROR_TYPE_PERMISSION, - ERROR_TYPE_UNAVAILABLE, // custom error + ERROR_TYPE_UNAVAILABLE, // custom error ERROR_TYPE_NOT_SUPPORTED, // custom error }; extern bool server_log_json; #if SERVER_VERBOSE -#define LOG_VERBOSE(MSG, ...) \ - do \ - { \ - server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ +#define LOG_VERBOSE(MSG, ...) \ + do \ + { \ + server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ } while (0) #else #define LOG_VERBOSE(MSG, ...) #endif -#define LOG_ERROR( MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_ERROR(MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) #define LOG_WARNING(MSG, ...) server_log("WARN", __func__, __LINE__, MSG, __VA_ARGS__) -#define LOG_INFO( MSG, ...) server_log("INFO", __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_INFO(MSG, ...) server_log("INFO", __func__, __LINE__, MSG, __VA_ARGS__) -static inline void server_log(const char *level, const char *function, int line, const char *message, const nlohmann::ordered_json &extra); +static inline void server_log(const char *level, const char *function, int line, const char *message, + const nlohmann::ordered_json &extra); -template -static T json_value(const json &body, const std::string &key, const T &default_value) { +template static T json_value(const json &body, const std::string &key, const T &default_value) +{ // Fallback null to default value - if (body.contains(key) && !body.at(key).is_null()){ - try { + if (body.contains(key) && !body.at(key).is_null()) + { + try + { return body.value(key, default_value); } - catch (nlohmann::json_abi_v3_11_3::detail::type_error const&){ - std::string message = "Wrong type supplied for parameter '" + key + "'. Expected '" + typeid(default_value).name() + "', using default value."; + catch (nlohmann::json_abi_v3_11_3::detail::type_error const &) + { + std::string message = "Wrong type supplied for parameter '" + key + "'. Expected '" + + typeid(default_value).name() + "', using default value."; server_log("WARN", __func__, __LINE__, message.c_str(), body); return default_value; } - } else { + } + else + { return default_value; } } -static inline void server_log(const char *level, const char *function, int line, const char *message, const nlohmann::ordered_json &extra) { +static inline void server_log(const char *level, const char *function, int line, const char *message, + const nlohmann::ordered_json &extra) +{ std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); json log = nlohmann::ordered_json{ - {"tid", ss_tid.str()}, + {"tid", ss_tid.str()}, {"timestamp", time(nullptr)}, }; - if (server_log_json) { - log.merge_patch( { - {"level", level}, + if (server_log_json) + { + log.merge_patch({ + {"level", level}, {"function", function}, - {"line", line}, - {"msg", message}, + {"line", line}, + {"msg", message}, }); - if (!extra.empty()) { + if (!extra.empty()) + { log.merge_patch(extra); } printf("%s\n", log.dump(-1, ' ', false, json::error_handler_t::replace).c_str()); - } else { + } + else + { char buf[1024]; snprintf(buf, 1024, "%4s [%24s] %s", level, function, message); - if (!extra.empty()) { + if (!extra.empty()) + { log.merge_patch(extra); } std::stringstream ss; ss << buf << " |"; - for (const auto& el : log.items()) + for (const auto &el : log.items()) { const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); ss << " " << el.key() << "=" << value; @@ -107,36 +122,41 @@ static inline void server_log(const char *level, const char *function, int line, // // Check if the template supplied via "--chat-template" is supported or not. Returns true if it's valid -inline bool verify_custom_template(const std::string & tmpl) { +inline bool verify_custom_template(const std::string &tmpl) +{ llama_chat_message chat[] = {{"user", "test"}}; int res = llama_chat_apply_template(nullptr, tmpl.c_str(), chat, 1, true, nullptr, 0); return res >= 0; } // Format given chat. If tmpl is empty, we take the template from model metadata -inline std::string format_chat(const struct llama_model * model, const std::string & tmpl, const std::vector & messages) { +inline std::string format_chat(const struct llama_model *model, const std::string &tmpl, + const std::vector &messages) +{ size_t alloc_size = 0; // vector holding all allocated string to be passed to llama_chat_apply_template std::vector str(messages.size() * 2); std::vector chat(messages.size()); - for (size_t i = 0; i < messages.size(); ++i) { - const auto & curr_msg = messages[i]; - str[i*2 + 0] = json_value(curr_msg, "role", std::string("")); - str[i*2 + 1] = json_value(curr_msg, "content", std::string("")); - alloc_size += str[i*2 + 1].length(); - chat[i].role = str[i*2 + 0].c_str(); - chat[i].content = str[i*2 + 1].c_str(); + for (size_t i = 0; i < messages.size(); ++i) + { + const auto &curr_msg = messages[i]; + str[i * 2 + 0] = json_value(curr_msg, "role", std::string("")); + str[i * 2 + 1] = json_value(curr_msg, "content", std::string("")); + alloc_size += str[i * 2 + 1].length(); + chat[i].role = str[i * 2 + 0].c_str(); + chat[i].content = str[i * 2 + 1].c_str(); } - const char * ptr_tmpl = tmpl.empty() ? nullptr : tmpl.c_str(); + const char *ptr_tmpl = tmpl.empty() ? nullptr : tmpl.c_str(); std::vector buf(alloc_size * 2); // run the first time to get the total output length int32_t res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); // if it turns out that our buffer is too small, we resize it - if ((size_t) res > buf.size()) { + if ((size_t)res > buf.size()) + { buf.resize(res); res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); } @@ -152,16 +172,17 @@ inline std::string format_chat(const struct llama_model * model, const std::stri // base64 utils (TODO: move to common in the future) // -static const std::string base64_chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; +static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; -static inline bool is_base64(uint8_t c) { +static inline bool is_base64(uint8_t c) +{ return (isalnum(c) || (c == '+') || (c == '/')); } -static inline std::vector base64_decode(const std::string & encoded_string) { +static inline std::vector base64_decode(const std::string &encoded_string) +{ int i = 0; int j = 0; int in_ = 0; @@ -173,18 +194,23 @@ static inline std::vector base64_decode(const std::string & encoded_str std::vector ret; - while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { - char_array_4[i++] = encoded_string[in_]; in_++; - if (i == 4) { - for (i = 0; i < 4; i++) { + while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) + { + char_array_4[i++] = encoded_string[in_]; + in_++; + if (i == 4) + { + for (i = 0; i < 4; i++) + { char_array_4[i] = base64_chars.find(char_array_4[i]); } - char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - for (i = 0; (i < 3); i++) { + for (i = 0; (i < 3); i++) + { ret.push_back(char_array_3[i]); } @@ -192,20 +218,24 @@ static inline std::vector base64_decode(const std::string & encoded_str } } - if (i) { - for (j = i; j < 4; j++) { + if (i) + { + for (j = i; j < 4; j++) + { char_array_4[j] = 0; } - for (j = 0; j < 4; j++) { + for (j = 0; j < 4; j++) + { char_array_4[j] = base64_chars.find(char_array_4[j]); } - char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - for (j = 0; j < i - 1; j++) { + for (j = 0; j < i - 1; j++) + { ret.push_back(char_array_3[j]); } } @@ -217,7 +247,8 @@ static inline std::vector base64_decode(const std::string & encoded_str // random string / id // -static std::string random_string() { +static std::string random_string() +{ static const std::string str("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); std::random_device rd; @@ -225,14 +256,16 @@ static std::string random_string() { std::string result(32, ' '); - for (int i = 0; i < 32; ++i) { + for (int i = 0; i < 32; ++i) + { result[i] = str[generator() % str.size()]; } return result; } -static std::string gen_chatcmplid() { +static std::string gen_chatcmplid() +{ std::stringstream chatcmplid; chatcmplid << "chatcmpl-" << random_string(); @@ -243,24 +276,33 @@ static std::string gen_chatcmplid() { // other common utils // -static size_t common_part(const std::vector & a, const std::vector & b) { +static size_t common_part(const std::vector &a, const std::vector &b) +{ size_t i; - for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) {} + for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) + { + } return i; } -static bool ends_with(const std::string & str, const std::string & suffix) { +static bool ends_with(const std::string &str, const std::string &suffix) +{ return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); } -static size_t find_partial_stop_string(const std::string &stop, const std::string &text) { - if (!text.empty() && !stop.empty()) { +static size_t find_partial_stop_string(const std::string &stop, const std::string &text) +{ + if (!text.empty() && !stop.empty()) + { const char text_last_char = text.back(); - for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) { - if (stop[char_index] == text_last_char) { + for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) + { + if (stop[char_index] == text_last_char) + { const std::string current_partial = stop.substr(0, char_index + 1); - if (ends_with(text, current_partial)) { + if (ends_with(text, current_partial)) + { return text.size() - char_index - 1; } } @@ -271,10 +313,11 @@ static size_t find_partial_stop_string(const std::string &stop, const std::strin } // TODO: reuse llama_detokenize -template -static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { +template static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) +{ std::string ret; - for (; begin != end; ++begin) { + for (; begin != end; ++begin) + { ret += llama_token_to_piece(ctx, *begin); } @@ -282,12 +325,14 @@ static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { } // format incomplete utf-8 multibyte character for output -static std::string tokens_to_output_formatted_string(const llama_context * ctx, const llama_token token) { +static std::string tokens_to_output_formatted_string(const llama_context *ctx, const llama_token token) +{ std::string out = token == -1 ? "" : llama_token_to_piece(ctx, token); // if the size is 1 and first bit is 1, meaning it's a partial character // (size > 1 meaning it's already a known token) - if (out.size() == 1 && (out[0] & 0x80) == 0x80) { + if (out.size() == 1 && (out[0] & 0x80) == 0x80) + { std::stringstream ss; ss << std::hex << (out[0] & 0xff); std::string res(ss.str()); @@ -297,11 +342,13 @@ static std::string tokens_to_output_formatted_string(const llama_context * ctx, return out; } -struct completion_token_output { +struct completion_token_output +{ llama_token tok; std::string text_to_send; - struct token_prob { + struct token_prob + { llama_token tok; float prob; }; @@ -310,24 +357,27 @@ struct completion_token_output { }; // convert a vector of completion_token_output to json -static json probs_vector_to_json(const llama_context * ctx, const std::vector & probs) { +static json probs_vector_to_json(const llama_context *ctx, const std::vector &probs) +{ json out = json::array(); - for (const auto & prob : probs) { + for (const auto &prob : probs) + { json probs_for_token = json::array(); - for (const auto & p : prob.probs) { + for (const auto &p : prob.probs) + { const std::string tok_str = tokens_to_output_formatted_string(ctx, p.tok); - probs_for_token.push_back(json { + probs_for_token.push_back(json{ {"tok_str", tok_str}, - {"prob", p.prob}, + {"prob", p.prob}, }); } const std::string tok_str = tokens_to_output_formatted_string(ctx, prob.tok); - out.push_back(json { + out.push_back(json{ {"content", tok_str}, - {"probs", probs_for_token}, + {"probs", probs_for_token}, }); } @@ -338,10 +388,10 @@ static json probs_vector_to_json(const llama_context * ctx, const std::vector()}); - } else { + } + else + { llama_params["stop"] = json_value(body, "stop", json::array()); } // Some chat templates don't use EOS token to stop generation // We must add their end sequences to list of stop words - llama_params["stop"].push_back("<|im_end|>"); // chatml + llama_params["stop"].push_back("<|im_end|>"); // chatml llama_params["stop"].push_back(""); // gemma // Handle "response_format" field - if (body.contains("response_format")) { - json response_format = json_value(body, "response_format", json::object()); + if (body.contains("response_format")) + { + json response_format = json_value(body, "response_format", json::object()); std::string response_type = json_value(response_format, "type", std::string()); - if (response_type == "json_object") { + if (response_type == "json_object") + { llama_params["json_schema"] = json_value(response_format, "schema", json::object()); - } else if (!response_type.empty() && response_type != "text") { - throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); + } + else if (!response_type.empty() && response_type != "text") + { + throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + + response_type); } } // Handle "n" field int n_choices = json_value(body, "n", 1); - if (n_choices != 1) { + if (n_choices != 1) + { throw std::runtime_error("Only one completion choice is allowed"); } // Handle "logprobs" field - // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may need to fix it in the future - if (body.contains("logprobs")) { + // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may + // need to fix it in the future + if (body.contains("logprobs")) + { llama_params["n_probs"] = json_value(body, "top_logprobs", 20); - } else if (body.contains("top_logprobs")) { + } + else if (body.contains("top_logprobs")) + { throw std::runtime_error("top_logprobs requires logprobs to be set to true"); } // Params supported by OAI but unsupported by llama.cpp - static const std::vector unsupported_params { "tools", "tool_choice" }; - for (auto & param : unsupported_params) { - if (body.contains(param)) { + static const std::vector unsupported_params{"tools", "tool_choice"}; + for (auto ¶m : unsupported_params) + { + if (body.contains(param)) + { throw std::runtime_error("Unsupported param: " + param); } } @@ -414,9 +479,11 @@ static json oaicompat_completion_params_parse( // Copy remaining properties to llama_params // This allows user to use llama.cpp-specific params like "mirostat", "tfs_z",... via OAI endpoint. // See "launch_slot_with_task()" for a complete list of params supported by llama.cpp - for (const auto & item : body.items()) { + for (const auto &item : body.items()) + { // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" - if (!llama_params.contains(item.key()) || item.key() == "n_predict") { + if (!llama_params.contains(item.key()) || item.key() == "n_predict") + { llama_params[item.key()] = item.value(); } } @@ -424,48 +491,44 @@ static json oaicompat_completion_params_parse( return llama_params; } -static json format_final_response_oaicompat(const json & request, json result, const std::string & completion_id, bool streaming = false) { - bool stopped_word = result.count("stopped_word") != 0; - bool stopped_eos = json_value(result, "stopped_eos", false); +static json format_final_response_oaicompat(const json &request, json result, const std::string &completion_id, + bool streaming = false) +{ + bool stopped_word = result.count("stopped_word") != 0; + bool stopped_eos = json_value(result, "stopped_eos", false); int num_tokens_predicted = json_value(result, "tokens_predicted", 0); - int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); - std::string content = json_value(result, "content", std::string("")); + int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); + std::string content = json_value(result, "content", std::string("")); std::string finish_reason = "length"; - if (stopped_word || stopped_eos) { + if (stopped_word || stopped_eos) + { finish_reason = "stop"; } - json choices = - streaming ? json::array({json{{"finish_reason", finish_reason}, - {"index", 0}, - {"delta", json::object()}}}) - : json::array({json{{"finish_reason", finish_reason}, - {"index", 0}, - {"message", json{{"content", content}, - {"role", "assistant"}}}}}); + json choices = streaming + ? json::array({json{{"finish_reason", finish_reason}, {"index", 0}, {"delta", json::object()}}}) + : json::array({json{{"finish_reason", finish_reason}, + {"index", 0}, + {"message", json{{"content", content}, {"role", "assistant"}}}}}); std::time_t t = std::time(0); - json res = json { - {"choices", choices}, - {"created", t}, - {"model", - json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", streaming ? "chat.completion.chunk" : "chat.completion"}, - {"usage", json { - {"completion_tokens", num_tokens_predicted}, - {"prompt_tokens", num_prompt_tokens}, - {"total_tokens", num_tokens_predicted + num_prompt_tokens} - }}, - {"id", completion_id} - }; + json res = json{{"choices", choices}, + {"created", t}, + {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", streaming ? "chat.completion.chunk" : "chat.completion"}, + {"usage", json{{"completion_tokens", num_tokens_predicted}, + {"prompt_tokens", num_prompt_tokens}, + {"total_tokens", num_tokens_predicted + num_prompt_tokens}}}, + {"id", completion_id}}; #if SERVER_VERBOSE - res["__verbose"] = result; + res["__verbose"] = result; #endif - if (result.contains("completion_probabilities")) { + if (result.contains("completion_probabilities")) + { res["completion_probabilities"] = json_value(result, "completion_probabilities", json::array()); } @@ -473,24 +536,28 @@ static json format_final_response_oaicompat(const json & request, json result, c } // return value is vector as there is one case where we might need to generate two responses -static std::vector format_partial_response_oaicompat(json result, const std::string & completion_id) { - if (!result.contains("model") || !result.contains("oaicompat_token_ctr")) { +static std::vector format_partial_response_oaicompat(json result, const std::string &completion_id) +{ + if (!result.contains("model") || !result.contains("oaicompat_token_ctr")) + { return std::vector({result}); } bool first = json_value(result, "oaicompat_token_ctr", 0) == 0; std::string modelname = json_value(result, "model", std::string(DEFAULT_OAICOMPAT_MODEL)); - bool stopped_word = json_value(result, "stopped_word", false); - bool stopped_eos = json_value(result, "stopped_eos", false); - bool stopped_limit = json_value(result, "stopped_limit", false); - std::string content = json_value(result, "content", std::string("")); + bool stopped_word = json_value(result, "stopped_word", false); + bool stopped_eos = json_value(result, "stopped_eos", false); + bool stopped_limit = json_value(result, "stopped_limit", false); + std::string content = json_value(result, "content", std::string("")); std::string finish_reason; - if (stopped_word || stopped_eos) { + if (stopped_word || stopped_eos) + { finish_reason = "stop"; } - if (stopped_limit) { + if (stopped_limit) + { finish_reason = "length"; } @@ -498,46 +565,48 @@ static std::vector format_partial_response_oaicompat(json result, const st json choices; - if (!finish_reason.empty()) { - choices = json::array({json{{"finish_reason", finish_reason}, - {"index", 0}, - {"delta", json::object()}}}); - } else { - if (first) { - if (content.empty()) { - choices = json::array({json{{"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{{"role", "assistant"}}}}}); - } else { + if (!finish_reason.empty()) + { + choices = json::array({json{{"finish_reason", finish_reason}, {"index", 0}, {"delta", json::object()}}}); + } + else + { + if (first) + { + if (content.empty()) + { + choices = json::array( + {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"role", "assistant"}}}}}); + } + else + { // We have to send this as two updates to conform to openai behavior - json initial_ret = json{{"choices", json::array({json{ - {"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{ - {"role", "assistant"} - }}}})}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"}}; - - json second_ret = json{ - {"choices", json::array({json{{"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{ - {"content", content}}} - }})}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"}}; + json initial_ret = json{{"choices", json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{{"role", "assistant"}}}}})}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"}}; + + json second_ret = + json{{"choices", + json::array( + {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"content", content}}}}})}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"}}; return std::vector({initial_ret, second_ret}); } - } else { + } + else + { // Some idiosyncrasy in task processing logic makes several trailing calls // with empty content, we ignore these at the calee site. - if (content.empty()) { + if (content.empty()) + { return std::vector({json::object()}); } @@ -545,94 +614,86 @@ static std::vector format_partial_response_oaicompat(json result, const st {"finish_reason", nullptr}, {"index", 0}, {"delta", - json{ - {"content", content}, - }}, + json{ + {"content", content}, + }}, }}); } } - json ret = json { - {"choices", choices}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"} - }; + json ret = json{{"choices", choices}, + {"created", t}, + {"id", completion_id}, + {"model", modelname}, + {"object", "chat.completion.chunk"}}; return std::vector({ret}); } -static json format_embeddings_response_oaicompat(const json & request, const json & embeddings) { +static json format_embeddings_response_oaicompat(const json &request, const json &embeddings) +{ json data = json::array(); int i = 0; - for (auto & elem : embeddings) { - data.push_back(json{ - {"embedding", json_value(elem, "embedding", json::array())}, - {"index", i++}, - {"object", "embedding"} - }); + for (auto &elem : embeddings) + { + data.push_back( + json{{"embedding", json_value(elem, "embedding", json::array())}, {"index", i++}, {"object", "embedding"}}); } - json res = json { - {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", "list"}, - {"usage", json { - {"prompt_tokens", 0}, - {"total_tokens", 0} - }}, - {"data", data} - }; + json res = json{{"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json{{"prompt_tokens", 0}, {"total_tokens", 0}}}, + {"data", data}}; return res; } -static json format_tokenizer_response(const std::vector & tokens) { - return json { - {"tokens", tokens} - }; +static json format_tokenizer_response(const std::vector &tokens) +{ + return json{{"tokens", tokens}}; } -static json format_detokenized_response(const std::string & content) { - return json { - {"content", content} - }; +static json format_detokenized_response(const std::string &content) +{ + return json{{"content", content}}; } -static json format_error_response(const std::string & message, const enum error_type type) { +static json format_error_response(const std::string &message, const enum error_type type) +{ std::string type_str; int code = 500; - switch (type) { - case ERROR_TYPE_INVALID_REQUEST: - type_str = "invalid_request_error"; - code = 400; - break; - case ERROR_TYPE_AUTHENTICATION: - type_str = "authentication_error"; - code = 401; - break; - case ERROR_TYPE_NOT_FOUND: - type_str = "not_found_error"; - code = 404; - break; - case ERROR_TYPE_SERVER: - type_str = "server_error"; - code = 500; - break; - case ERROR_TYPE_PERMISSION: - type_str = "permission_error"; - code = 403; - break; - case ERROR_TYPE_NOT_SUPPORTED: - type_str = "not_supported_error"; - code = 501; - break; - case ERROR_TYPE_UNAVAILABLE: - type_str = "unavailable_error"; - code = 503; - break; + switch (type) + { + case ERROR_TYPE_INVALID_REQUEST: + type_str = "invalid_request_error"; + code = 400; + break; + case ERROR_TYPE_AUTHENTICATION: + type_str = "authentication_error"; + code = 401; + break; + case ERROR_TYPE_NOT_FOUND: + type_str = "not_found_error"; + code = 404; + break; + case ERROR_TYPE_SERVER: + type_str = "server_error"; + code = 500; + break; + case ERROR_TYPE_PERMISSION: + type_str = "permission_error"; + code = 403; + break; + case ERROR_TYPE_NOT_SUPPORTED: + type_str = "not_supported_error"; + code = 501; + break; + case ERROR_TYPE_UNAVAILABLE: + type_str = "unavailable_error"; + code = 503; + break; } - return json { + return json{ {"code", code}, {"message", message}, {"type", type_str}, From 9be75db1c2b7e5d048d59b6a1f5fca910cf84983 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 19:45:01 +0200 Subject: [PATCH 181/384] Add missing model parameters --- src/main/cpp/server.hpp | 117 +++--------------- .../java/de/kherud/llama/ModelParameters.java | 29 +++++ 2 files changed, 45 insertions(+), 101 deletions(-) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index fc67087d..09c8f350 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -2422,6 +2422,7 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); + server_log_json = json_value(jparams, "log_format", "json") == "json"; if (jparams.contains("n_gpu_layers")) { @@ -2477,105 +2478,19 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params #endif } - // #if SERVER_VERBOSE != 1 - // LOG_WARNING("server.cpp is not built with verbose logging.", {}); - // #else - // server_verbose = true; - // #endif - - // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); - // if (system_prompt_file.length() > 0) - // { - // std::ifstream file(system_prompt_file); - // if (!file) - // { - // fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); - // invalid_param = true; - // break; - // } - // std::string system_prompt; - // std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), - // std::back_inserter(system_prompt)); - // sparams.system_prompt = system_prompt; - // } - - // value = env->GetObjectField(jparams, f_log_format); - // if (value == o_log_format_json) - // { - // server_log_json = true; - // } - // else if (value == o_log_format_text) - // { - // server_log_json = false; - // } - // else - // { - // log_set_target(stdout); - // LOG_INFO("logging to file is disabled.", {}); - // } - - // auto system_prompt_file = get_string_field(env, jparams, f_system_prompt_file); - // - // else if (arg == "--chat-template") { - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // if (!verify_custom_template(argv[i])) { - // fprintf(stderr, "error: the supplied chat template is not supported: %s\n", argv[i]); - // fprintf(stderr, "note: llama.cpp does not use jinja parser, we only support commonly used - // templates\n"); invalid_param = true; break; - // } - // sparams.chat_template = argv[i]; - // } else if (arg == "--override-kv") { - // if (++i >= argc) { - // invalid_param = true; - // break; - // } - // char * sep = strchr(argv[i], '='); - // if (sep == nullptr || sep - argv[i] >= 128) { - // fprintf(stderr, "error: Malformed KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // - // struct llama_model_kv_override kvo; - // std::strncpy(kvo.key, argv[i], sep - argv[i]); - // kvo.key[sep - argv[i]] = 0; - // sep++; - // if (strncmp(sep, "int:", 4) == 0) { - // sep += 4; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT; - // kvo.int_value = std::atol(sep); - // } else if (strncmp(sep, "float:", 6) == 0) { - // sep += 6; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_FLOAT; - // kvo.float_value = std::atof(sep); - // } else if (strncmp(sep, "bool:", 5) == 0) { - // sep += 5; - // kvo.tag = LLAMA_KV_OVERRIDE_TYPE_BOOL; - // if (std::strcmp(sep, "true") == 0) { - // kvo.bool_value = true; - // } else if (std::strcmp(sep, "false") == 0) { - // kvo.bool_value = false; - // } else { - // fprintf(stderr, "error: Invalid boolean value for KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // } else { - // fprintf(stderr, "error: Invalid type for KV override: %s\n", argv[i]); - // invalid_param = true; - // break; - // } - // params.kv_overrides.push_back(kvo); - // } - // } - // - - if (!params.kv_overrides.empty()) - { - params.kv_overrides.emplace_back(); - params.kv_overrides.back().key[0] = 0; - } + if (jparams.contains("system_prompt_file")) { + std::ifstream file(jparams["system_prompt_file"]); + if (!file) { + fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); + } + else { + std::string system_prompt; + std::copy( + std::istreambuf_iterator(file), + std::istreambuf_iterator(), + std::back_inserter(system_prompt) + ); + sparams.system_prompt = system_prompt; + } + } } diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 0df5b809..764f22da 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -3,6 +3,7 @@ import java.util.Map; import de.kherud.llama.args.GpuSplitMode; +import de.kherud.llama.args.LogFormat; import de.kherud.llama.args.NumaStrategy; import de.kherud.llama.args.PoolingType; import de.kherud.llama.args.RopeScalingType; @@ -65,6 +66,8 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_USE_MMAP = "use_mmap"; private static final String PARAM_USE_MLOCK = "use_mlock"; private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; + private static final String PARAM_SYSTEM_PROMPT_FILE = "system_prompt_file"; + private static final String PARAM_LOG_FORMAT = "log_format"; /** * Set the RNG seed @@ -562,4 +565,30 @@ public ModelParameters setNoKvOffload(boolean noKvOffload) { parameters.put(PARAM_NO_KV_OFFLOAD, String.valueOf(noKvOffload)); return this; } + + /** + * Set a file path to load a system prompt from + */ + public ModelParameters setSystemPromptFile(String systemPromptFile) { + parameters.put(PARAM_SYSTEM_PROMPT_FILE, systemPromptFile); + return this; + } + + /** + * Set which log format to use + */ + public ModelParameters setLogFormat(LogFormat logFormat) { + switch (logFormat) { + case NONE: + parameters.put(PARAM_LOG_DISABLE, String.valueOf(true)); + break; + case JSON: + parameters.put(PARAM_LOG_FORMAT, "json"); + break; + case TEXT: + parameters.put(PARAM_LOG_FORMAT, "text"); + break; + } + return this; + } } From 6e1f4318063a664f82d9fdad1c2cc119b867f472 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 20:38:49 +0200 Subject: [PATCH 182/384] Add missing inference parameters --- src/main/cpp/server.hpp | 19 +-- .../de/kherud/llama/InferenceParameters.java | 145 +++++++++++++++++- .../java/de/kherud/llama/ModelParameters.java | 8 +- .../java/de/kherud/llama/LlamaModelTest.java | 8 +- 4 files changed, 149 insertions(+), 31 deletions(-) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 09c8f350..ac4986f6 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -2422,7 +2422,8 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - server_log_json = json_value(jparams, "log_format", "json") == "json"; + server_log_json = !jparams.contains("log_format") || jparams["log_format"] == "json"; + sparams.system_prompt = json_value(jparams, "system_prompt", default_sparams.system_prompt); if (jparams.contains("n_gpu_layers")) { @@ -2477,20 +2478,4 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); #endif } - - if (jparams.contains("system_prompt_file")) { - std::ifstream file(jparams["system_prompt_file"]); - if (!file) { - fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); - } - else { - std::string system_prompt; - std::copy( - std::istreambuf_iterator(file), - std::istreambuf_iterator(), - std::back_inserter(system_prompt) - ); - sparams.system_prompt = system_prompt; - } - } } diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index d6e9afe4..5fb8eb6b 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -1,5 +1,6 @@ package de.kherud.llama; +import java.util.Collection; import java.util.Map; import de.kherud.llama.args.MiroStat; @@ -259,7 +260,9 @@ public InferenceParameters setGrammar(String grammar) { } /** - * + * Override which part of the prompt is penalized for repetition. + * E.g. if original prompt is "Alice: Hello!" and penaltyPrompt is "Hello!", only the latter will be penalized if + * repeated. See pull request 3727 for more details. */ public InferenceParameters setPenaltyPrompt(String penaltyPrompt) { parameters.put(PARAM_PENALTY_PROMPT, toJsonString(penaltyPrompt)); @@ -267,7 +270,29 @@ public InferenceParameters setPenaltyPrompt(String penaltyPrompt) { } /** - * + * Override which tokens to penalize for repetition. + * E.g. if original prompt is "Alice: Hello!" and penaltyPrompt corresponds to the token ids of "Hello!", only the + * latter will be penalized if repeated. + * See pull request 3727 for more details. + */ + public InferenceParameters setPenaltyPrompt(int[] tokens) { + if (tokens.length > 0) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < tokens.length; i++) { + builder.append(tokens[i]); + if (i < tokens.length - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_PENALTY_PROMPT, builder.toString()); + } + return this; + } + + /** + * Set whether to ignore end of stream token and continue generating (implies --logit-bias 2-inf) */ public InferenceParameters setIgnoreEos(boolean ignoreEos) { parameters.put(PARAM_IGNORE_EOS, String.valueOf(ignoreEos)); @@ -275,9 +300,16 @@ public InferenceParameters setIgnoreEos(boolean ignoreEos) { } /** - * + * Modify the likelihood of tokens appearing in the completion by their id. E.g., Map.of(15043, 1f) + * to increase the likelihood of token ' Hello', or a negative value to decrease it. + * Note, this method overrides any previous calls to + *
      + *
    • {@link #setTokenBias(Map)}
    • + *
    • {@link #disableTokens(Collection)}
    • + *
    • {@link #disableTokenIds(Collection)}}
    • + *
    */ - public InferenceParameters setLogitBias(Map logitBias) { + public InferenceParameters setTokenIdBias(Map logitBias) { if (!logitBias.isEmpty()) { StringBuilder builder = new StringBuilder(); builder.append("["); @@ -301,7 +333,102 @@ public InferenceParameters setLogitBias(Map logitBias) { } /** - * + * Set tokens to disable, this corresponds to {@link #setTokenIdBias(Map)} with a value of + * {@link Float#NEGATIVE_INFINITY}. + * Note, this method overrides any previous calls to + *
      + *
    • {@link #setTokenIdBias(Map)}
    • + *
    • {@link #setTokenBias(Map)}
    • + *
    • {@link #disableTokens(Collection)}
    • + *
    + */ + public InferenceParameters disableTokenIds(Collection tokenIds) { + if (!tokenIds.isEmpty()) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + int i = 0; + for (Integer token : tokenIds) { + builder.append("[") + .append(token) + .append(", ") + .append(false) + .append("]"); + if (i++ < tokenIds.size() - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_LOGIT_BIAS, builder.toString()); + } + return this; + } + + /** + * Modify the likelihood of tokens appearing in the completion by their id. E.g., Map.of(" Hello", 1f) + * to increase the likelihood of token id 15043, or a negative value to decrease it. + * Note, this method overrides any previous calls to + *
      + *
    • {@link #setTokenIdBias(Map)}
    • + *
    • {@link #disableTokens(Collection)}
    • + *
    • {@link #disableTokenIds(Collection)}}
    • + *
    + */ + public InferenceParameters setTokenBias(Map logitBias) { + if (!logitBias.isEmpty()) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + int i = 0; + for (Map.Entry entry : logitBias.entrySet()) { + String key = entry.getKey(); + Float value = entry.getValue(); + builder.append("[") + .append(toJsonString(key)) + .append(", ") + .append(value) + .append("]"); + if (i++ < logitBias.size() - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_LOGIT_BIAS, builder.toString()); + } + return this; + } + + /** + * Set tokens to disable, this corresponds to {@link #setTokenBias(Map)} with a value of + * {@link Float#NEGATIVE_INFINITY}. + * Note, this method overrides any previous calls to + *
      + *
    • {@link #setTokenBias(Map)}
    • + *
    • {@link #setTokenIdBias(Map)}
    • + *
    • {@link #disableTokenIds(Collection)}
    • + *
    + */ + public InferenceParameters disableTokens(Collection tokens) { + if (!tokens.isEmpty()) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + int i = 0; + for (String token : tokens) { + builder.append("[") + .append(toJsonString(token)) + .append(", ") + .append(false) + .append("]"); + if (i++ < tokens.size() - 1) { + builder.append(", "); + } + } + builder.append("]"); + parameters.put(PARAM_LOGIT_BIAS, builder.toString()); + } + return this; + } + + /** + * Set strings upon seeing which token generation is stopped */ public InferenceParameters setStopStrings(String... stopStrings) { if (stopStrings.length > 0) { @@ -320,7 +447,7 @@ public InferenceParameters setStopStrings(String... stopStrings) { } /** - * + * Set which samplers to use for token generation in the given order */ public InferenceParameters setSamplers(Sampler... samplers) { if (samplers.length > 0) { @@ -329,16 +456,22 @@ public InferenceParameters setSamplers(Sampler... samplers) { for (int i = 0; i < samplers.length; i++) { switch (samplers[i]) { case TOP_K: + builder.append("\"top_k\""); break; case TFS_Z: + builder.append("\"tfs_z\""); break; case TYPICAL_P: + builder.append("\"typical_p\""); break; case TOP_P: + builder.append("\"top_p\""); break; case MIN_P: + builder.append("\"min_p\""); break; case TEMPERATURE: + builder.append("\"temperature\""); break; } if (i < samplers.length - 1) { diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 764f22da..848602a7 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -66,7 +66,7 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_USE_MMAP = "use_mmap"; private static final String PARAM_USE_MLOCK = "use_mlock"; private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; - private static final String PARAM_SYSTEM_PROMPT_FILE = "system_prompt_file"; + private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; private static final String PARAM_LOG_FORMAT = "log_format"; /** @@ -567,10 +567,10 @@ public ModelParameters setNoKvOffload(boolean noKvOffload) { } /** - * Set a file path to load a system prompt from + * Set a system prompt to use */ - public ModelParameters setSystemPromptFile(String systemPromptFile) { - parameters.put(PARAM_SYSTEM_PROMPT_FILE, systemPromptFile); + public ModelParameters setSystemPrompt(String systemPrompt) { + parameters.put(PARAM_SYSTEM_PROMPT, systemPrompt); return this; } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index a57fb1eb..556639af 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -42,7 +42,7 @@ public void testGenerateAnswer() { .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) - .setLogitBias(logitBias); + .setTokenIdBias(logitBias); int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { @@ -62,7 +62,7 @@ public void testGenerateInfill() { .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) - .setLogitBias(logitBias) + .setTokenIdBias(logitBias) .setSeed(42); int generated = 0; @@ -96,7 +96,7 @@ public void testCompleteAnswer() { .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) - .setLogitBias(logitBias) + .setTokenIdBias(logitBias) .setSeed(42); String output = model.complete(params); @@ -113,7 +113,7 @@ public void testCompleteInfillCustom() { .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) - .setLogitBias(logitBias) + .setTokenIdBias(logitBias) .setSeed(42); String output = model.complete(params); From fc69c343a3ac4e8c1d45041eadfbd96939f60740 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 20:51:58 +0200 Subject: [PATCH 183/384] Remove set model url --- src/test/java/de/kherud/llama/LlamaModelTest.java | 1 - src/test/java/examples/GrammarExample.java | 3 +-- src/test/java/examples/InfillExample.java | 1 - src/test/java/examples/MainExample.java | 4 ++-- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 556639af..bdb68574 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -21,7 +21,6 @@ public static void setup() { model = new LlamaModel( new ModelParameters() .setModelFilePath("models/llama-160m-chat-v1.q2_k.gguf") - .setModelUrl("https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf") .setNGpuLayers(43) .setEmbedding(true) ); diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index d782cf54..66ba53f1 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -12,8 +12,7 @@ public static void main(String... args) { "expr ::= term ([-+*/] term)*\n" + "term ::= [0-9]"; ModelParameters modelParams = new ModelParameters() - .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf"); + .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf"); InferenceParameters inferParams = new InferenceParameters("") .setGrammar(grammar); try (LlamaModel model = new LlamaModel(modelParams)) { diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index 765ccf6b..a6926618 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -9,7 +9,6 @@ public class InfillExample { public static void main(String... args) { ModelParameters modelParams = new ModelParameters() .setModelFilePath("models/codellama-7b.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setNGpuLayers(43); String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 55e1738a..e9c6cb58 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -16,8 +16,8 @@ public class MainExample { public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setNGpuLayers(43); + .setNGpuLayers(43) + .setDisableLog(true); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n\n" + From ce1b403d3d021cf8db92f6ff57e0af8bbc432190 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 20:52:24 +0200 Subject: [PATCH 184/384] Remove curl build, download models in workflow --- .github/workflows/ci.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dec85cb0..1b12b2ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,9 @@ name: Continuous Integration on: [ "pull_request", "workflow_dispatch" ] +env: + MODEL_URL: "https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf" + MODEL_NAME: "llama-160m-chat-v1.q2_k.gguf" jobs: # don't split build and test jobs to keep the workflow simple @@ -15,15 +18,13 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install curl - run: | - sudo apt-get update - sudo apt-get install -y libcurl4-openssl-dev + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Build libraries # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile - .github/build.sh -DLLAMA_CURL=ON + .github/build.sh - name: Run tests run: mvn test @@ -36,10 +37,12 @@ jobs: with: distribution: 'zulu' java-version: '11' + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Build libraries run: | mvn compile - .github/build.sh -DLLAMA_CURL=ON + .github/build.sh - name: Run tests run: mvn test @@ -52,14 +55,11 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install curl - run: | - git clone https://github.com/Microsoft/vcpkg.git - .\vcpkg\bootstrap-vcpkg.bat - .\vcpkg\vcpkg install curl + - name: Download model + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Build libraries run: | mvn compile - .github\build.bat -DLLAMA_CURL=ON + .github\build.bat - name: Run tests run: mvn test From e6251a60902e384f11e5902481f4be714eceaf4c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:13:15 +0200 Subject: [PATCH 185/384] Update llama.cpp version --- CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb7cb421..8f9ee549 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2589 + GIT_TAG b2619 ) FetchContent_MakeAvailable(llama.cpp) @@ -108,8 +108,7 @@ else() ) endif() -if (LLAMA_METAL) +if (LLAMA_METAL AND NOT ) # copy ggml-common.h and ggml-metal.metal to bin directory - configure_file(${llama.cpp_SOURCE_DIR}/ggml-common.h ${JLLAMA_DIR}/ggml-common.h COPYONLY) configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() From 214e62da4adfc8e8377e72c0ec77a03c7f3d8606 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:16:22 +0200 Subject: [PATCH 186/384] Update readme --- README.md | 140 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index ece5b045..c9959028 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2589](https://img.shields.io/badge/llama.cpp-%23b2589-informational) +![llama.cpp b2619](https://img.shields.io/badge/llama.cpp-%23b2619-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -8,6 +8,15 @@ This repository provides Java bindings for the C++ library. **You are welcome to contribute** +1. [Quick Start](#quick-start) + 1.1 [No Setup required](#no-setup-required) + 1.2 [Setup required](#setup-required) +2. [Documentation](#documentation) + 2.1 [Example](#example) + 2.2 [Inference](#inference) + 2.3 [Infilling](#infilling) +3. [Android](#importing-in-android) + ## Quick Start Access this library via Maven: @@ -22,16 +31,6 @@ Access this library via Maven: There are multiple [examples](src/test/java/examples): -```bash -mvn exec:java -Dexec.mainClass="examples.MainExample" -``` - -You can also run some integration tests, which will automatically download a model to the `models` directory: - -```bash -mvn verify -``` - ### No Setup required We support CPU inference for the following platforms out of the box: @@ -45,7 +44,7 @@ If any of these match your platform, you can include the Maven dependency and ge ### Setup required If none of the above listed platforms matches yours, currently you have to compile the library yourself (also if you -want GPU acceleration, see below). More support is planned soon. +want GPU acceleration, see below). This requires: @@ -64,7 +63,9 @@ echo $JAVA_HOME # for linux/macos echo %JAVA_HOME% # for windows ``` -Then, run the following commands in the directory of this repository (java-llama.cpp): +Then, checkout [llama.cpp](https://github.com/ggerganov/llama.cpp) to know which build arguments to use (e.g. for CUDA support). +Finally, you have to run following commands in the directory of this repository (java-llama.cpp). +Remember to add your build arguments in the fourth line (`cmake ..`): ```shell mvn compile @@ -74,6 +75,9 @@ cmake .. # add any other arguments for your backend cmake --build . --config Release ``` +> [!TIP] +> Use `-DLLAMA_CURL=ON` to download models via Java code using `ModelParameters#setModelUrl(String)`. + All required files will be put in a resources directory matching your platform, which will appear in the cmake output. For example something like: ```shell @@ -91,7 +95,7 @@ as a Maven dependency, see below how to set the necessary paths in order for Jav ### Custom llama.cpp Setup (GPU acceleration) -This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however. +This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however (see [Setup Required](#setup-required)). In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): - `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` @@ -117,60 +121,6 @@ Look for the shared library in `build`. > [!IMPORTANT] > If you are running MacOS with Metal, you have to put the file `ggml-metal.metal` from `build/bin` in the same directory as the shared library. -### Importing in Android - -You can use this library in Android project. -1. Add java-llama.cpp as a submodule in your android `app` project directory -```shell -git submodule add https://github.com/kherud/java-llama.cpp -``` -2. Declare the library as a source in your build.gradle -```gradle -android { - val jllamaLib = file("java-llama.cpp") - - // Execute "mvn compile" if folder target/ doesn't exist at ./java-llama.cpp/ - if (!file("$jllamaLib/target").exists()) { - exec { - commandLine = listOf("mvn", "compile") - workingDir = file("java-llama.cpp/") - } - } - - ... - defaultConfig { - ... - externalNativeBuild { - cmake { - // Add an flags if needed - cppFlags += "" - arguments += "" - } - } - } - - // Declare c++ sources - externalNativeBuild { - cmake { - path = file("$jllamaLib/CMakeLists.txt") - version = "3.22.1" - } - } - - // Declare java sources - sourceSets { - named("main") { - // Add source directory for java-llama.cpp - java.srcDir("$jllamaLib/src/main/java") - } - } -} -``` -3. Exclude `de.kherud.llama` in proguard-rules.pro -```proguard -keep class de.kherud.llama.** { *; } -``` - ## Documentation ### Example @@ -269,3 +219,57 @@ try (LlamaModel model = new LlamaModel(modelParams)) { model.generate(inferParams); } ``` + +## Importing in Android + +You can use this library in Android project. +1. Add java-llama.cpp as a submodule in your android `app` project directory +```shell +git submodule add https://github.com/kherud/java-llama.cpp +``` +2. Declare the library as a source in your build.gradle +```gradle +android { + val jllamaLib = file("java-llama.cpp") + + // Execute "mvn compile" if folder target/ doesn't exist at ./java-llama.cpp/ + if (!file("$jllamaLib/target").exists()) { + exec { + commandLine = listOf("mvn", "compile") + workingDir = file("java-llama.cpp/") + } + } + + ... + defaultConfig { + ... + externalNativeBuild { + cmake { + // Add an flags if needed + cppFlags += "" + arguments += "" + } + } + } + + // Declare c++ sources + externalNativeBuild { + cmake { + path = file("$jllamaLib/CMakeLists.txt") + version = "3.22.1" + } + } + + // Declare java sources + sourceSets { + named("main") { + // Add source directory for java-llama.cpp + java.srcDir("$jllamaLib/src/main/java") + } + } +} +``` +3. Exclude `de.kherud.llama` in proguard-rules.pro +```proguard +keep class de.kherud.llama.** { *; } +``` From 6c7c22456e680c284943d6b31ed04cb286876006 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:29:13 +0200 Subject: [PATCH 187/384] Embed llama metal --- .github/workflows/ci.yml | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b12b2ec..2478bde6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: - name: Build libraries run: | mvn compile - .github/build.sh + .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON - name: Run tests run: mvn test diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f9ee549..0939c8b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,7 +108,7 @@ else() ) endif() -if (LLAMA_METAL AND NOT ) +if (LLAMA_METAL AND NOT LLAMA_METAL_EMBED_LIBRARY) # copy ggml-common.h and ggml-metal.metal to bin directory configure_file(${llama.cpp_SOURCE_DIR}/ggml-metal.metal ${JLLAMA_DIR}/ggml-metal.metal COPYONLY) endif() From 84114a6834ea482d16779056d47977420c8dc2f8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:37:20 +0200 Subject: [PATCH 188/384] Upload macos arm64 lib --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2478bde6..602f2b38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,20 @@ jobs: - name: Run tests run: mvn test + build-macos-arm64: + name: macos-latest + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Build libraries + run: | + .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DCMAKE_OSX_ARCHITECTURES=arm64 -DOS_NAME=Mac -DOS_ARCH=aarch64 + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + build-and-test-windows: name: windows-latest runs-on: windows-latest From a9251a67de66b29c078ed2a7794ab5701a127ec5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:43:28 +0200 Subject: [PATCH 189/384] Try macos llama_native=off --- .github/workflows/ci.yml | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 602f2b38..2795c26a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,24 +42,10 @@ jobs: - name: Build libraries run: | mvn compile - .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON + .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_NATIVE=OFF - name: Run tests run: mvn test - build-macos-arm64: - name: macos-latest - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - name: Build libraries - run: | - .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DCMAKE_OSX_ARCHITECTURES=arm64 -DOS_NAME=Mac -DOS_ARCH=aarch64 - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - build-and-test-windows: name: windows-latest runs-on: windows-latest From 0ac24be7377b240f15363b6c7b67852dc9b7c83b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:49:40 +0200 Subject: [PATCH 190/384] Disable macos CI for now --- .github/workflows/ci.yml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2795c26a..d6ddc74e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,23 +28,24 @@ jobs: - name: Run tests run: mvn test - build-and-test-macos: - name: macos-latest - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - - name: Build libraries - run: | - mvn compile - .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_NATIVE=OFF - - name: Run tests - run: mvn test +# disabled for now, we don't have access to a macos arm64 runner and testing on x86_64 doesn't work +# build-and-test-macos: +# name: macos-latest +# runs-on: macos-latest +# steps: +# - uses: actions/checkout@v4 +# - uses: actions/setup-java@v4 +# with: +# distribution: 'zulu' +# java-version: '11' +# - name: Download model +# run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} +# - name: Build libraries +# run: | +# mvn compile +# .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON +# - name: Run tests +# run: mvn test build-and-test-windows: name: windows-latest From 92be5c03644a2f39c0c5361f651f678cb0ca5964 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 21:49:50 +0200 Subject: [PATCH 191/384] Update release workflow --- .github/workflows/release.yaml | 56 +++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index db242eb7..cfd42531 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,6 +8,9 @@ on: default: 'no' release: types: [ created ] +env: + MODEL_URL: "https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf" + MODEL_NAME: "llama-160m-chat-v1.q2_k.gguf" jobs: @@ -38,7 +41,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" -DLLAMA_CURL=ON + .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -56,19 +59,19 @@ jobs: - { os: Mac, arch: x86_64, - cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64' + cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL_EMBED_LIBRARY=ON' } - { os: Mac, arch: aarch64, - cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_NATIVE=OFF' + cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL_EMBED_LIBRARY=ON' } steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DLLAMA_CURL=ON + .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -108,7 +111,7 @@ jobs: - name: Build libraries shell: cmd run: | - .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DLLAMA_CURL=ON + .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: @@ -126,32 +129,34 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Run tests - shell: bash run: mvn test - - test-macos: - name: Test Mac - needs: build-macos-native - runs-on: macos-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - shell: bash - run: mvn test + # disabled for now, we don't have access to a macos arm64 runner and testing on x86_64 doesn't work +# test-macos: +# name: Test Mac +# needs: build-macos-native +# runs-on: macos-latest +# steps: +# - uses: actions/checkout@v4 +# - uses: actions/download-artifact@v3 +# with: +# name: artifacts +# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - name: Download model +# run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} +# - uses: actions/setup-java@v4 +# with: +# distribution: 'zulu' +# java-version: '11' +# - name: Run tests +# run: mvn test test-windows: @@ -164,12 +169,13 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Run tests - shell: cmd run: mvn test From 41ce99a0687b3b5c2fb99498f1c50938e611db12 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 22:25:12 +0200 Subject: [PATCH 192/384] Release workflow skip testing second time --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index cfd42531..66dd9a9a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -200,7 +200,7 @@ jobs: gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - name: Publish package - run: mvn --batch-mode -P release deploy + run: mvn --batch-mode -P release -Dmaven.test.skip=true deploy env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} From 699adad33c916a89621a85cf6871adaf2bb9290f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 22:25:20 +0200 Subject: [PATCH 193/384] Bump maven project version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 244a307f..26b933a0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 2.3.5 + 3.0.0 jar ${project.groupId}:${project.artifactId} From 255941c3cb80f893219a9f384d13d298c10896f7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 22:38:12 +0200 Subject: [PATCH 194/384] Fix java doc comments --- src/main/java/de/kherud/llama/InferenceParameters.java | 2 +- src/main/java/de/kherud/llama/ModelParameters.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 5fb8eb6b..8836157f 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -228,7 +228,7 @@ public InferenceParameters setNKeep(int nKeep) { } /** - * Set the RNG seed (default: -1, use random seed for < 0) + * Set the RNG seed (default: -1, use random seed for < 0) */ public InferenceParameters setSeed(int seed) { parameters.put(PARAM_SEED, String.valueOf(seed)); diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 848602a7..da38d409 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -327,7 +327,7 @@ public ModelParameters setYarnOrigCtx(int yarnOrigCtx) { } /** - * Set the KV cache defragmentation threshold (default: -1.0, < 0 - disabled) + * Set the KV cache defragmentation threshold (default: -1.0, < 0 - disabled) */ public ModelParameters setDefragmentationThreshold(float defragThold) { parameters.put(PARAM_DEFRAG_THOLD, String.valueOf(defragThold)); From 6d500b5d654ce0a0fe8bced81d8f47b0de04fef8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 7 Apr 2024 22:39:03 +0200 Subject: [PATCH 195/384] Update maven versions --- pom.xml | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index 26b933a0..8cee77f7 100644 --- a/pom.xml +++ b/pom.xml @@ -45,8 +45,7 @@ 5.13.0 - 4.13.1 - 3.2.3 + 4.13.2 UTF-8 @@ -60,7 +59,7 @@ org.jetbrains annotations - 24.0.1 + 24.1.0 compile
    @@ -137,22 +136,6 @@ - - org.apache.maven.plugins - maven-failsafe-plugin - ${test.plugin.version} - - true - - - - org.apache.maven.plugins - maven-antrun-plugin - 3.0.0 - - true - - From 4882848ed00a00c75766d3d47146bdc01ea95ca4 Mon Sep 17 00:00:00 2001 From: Hugo Visser Date: Wed, 10 Apr 2024 17:36:20 +0200 Subject: [PATCH 196/384] Correct import for nlohmann/json --- src/main/cpp/jllama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index eaacb91a..1d09dc80 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,6 +1,6 @@ #include "jllama.h" -#include "json.hpp" +#include "nlohmann/json.hpp" #include "llama.h" #include "server.hpp" #include "utils.hpp" From 03eb515af677f0fd1580143d8599cb57413d5a17 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 13 Apr 2024 22:55:40 +0200 Subject: [PATCH 197/384] fix some static analysis warnings --- src/main/cpp/jllama.cpp | 220 ++++++++++++++++++++++------------------ src/main/cpp/server.hpp | 4 +- 2 files changed, 121 insertions(+), 103 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index eaacb91a..6f76afbe 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -3,67 +3,88 @@ #include "json.hpp" #include "llama.h" #include "server.hpp" -#include "utils.hpp" + +#include +#include +#include // We store some references to Java classes and their fields/methods here to speed up things for later and to fail // early on if anything can't be found. This happens when the JVM loads the shared library (see `JNI_OnLoad`). // The references remain valid throughout the whole life of the shared library, on `JNI_OnUnload` they are released. -JavaVM *g_vm = nullptr; +namespace +{ +// JavaVM *g_vm = nullptr; // classes -static jclass c_llama_model = 0; -static jclass c_llama_iterator = 0; -static jclass c_standard_charsets = 0; -static jclass c_output = 0; -static jclass c_string = 0; -static jclass c_hash_map = 0; -static jclass c_map = 0; -static jclass c_set = 0; -static jclass c_entry = 0; -static jclass c_iterator = 0; -static jclass c_integer = 0; -static jclass c_float = 0; -static jclass c_biconsumer = 0; -static jclass c_llama_error = 0; -static jclass c_error_oom = 0; +jclass c_llama_model = nullptr; +jclass c_llama_iterator = nullptr; +jclass c_standard_charsets = nullptr; +jclass c_output = nullptr; +jclass c_string = nullptr; +jclass c_hash_map = nullptr; +jclass c_map = nullptr; +jclass c_set = nullptr; +jclass c_entry = nullptr; +jclass c_iterator = nullptr; +jclass c_integer = nullptr; +jclass c_float = nullptr; +jclass c_biconsumer = nullptr; +jclass c_llama_error = nullptr; +jclass c_error_oom = nullptr; // constructors -static jmethodID cc_output = 0; -static jmethodID cc_hash_map = 0; -static jmethodID cc_integer = 0; -static jmethodID cc_float = 0; +jmethodID cc_output = nullptr; +jmethodID cc_hash_map = nullptr; +jmethodID cc_integer = nullptr; +jmethodID cc_float = nullptr; // methods -static jmethodID m_get_bytes = 0; -static jmethodID m_entry_set = 0; -static jmethodID m_set_iterator = 0; -static jmethodID m_iterator_has_next = 0; -static jmethodID m_iterator_next = 0; -static jmethodID m_entry_key = 0; -static jmethodID m_entry_value = 0; -static jmethodID m_map_put = 0; -static jmethodID m_int_value = 0; -static jmethodID m_float_value = 0; -static jmethodID m_biconsumer_accept = 0; +jmethodID m_get_bytes = nullptr; +jmethodID m_entry_set = nullptr; +jmethodID m_set_iterator = nullptr; +jmethodID m_iterator_has_next = nullptr; +jmethodID m_iterator_next = nullptr; +jmethodID m_entry_key = nullptr; +jmethodID m_entry_value = nullptr; +jmethodID m_map_put = nullptr; +jmethodID m_int_value = nullptr; +jmethodID m_float_value = nullptr; +jmethodID m_biconsumer_accept = nullptr; // fields -static jfieldID f_model_pointer = 0; -static jfieldID f_task_id = 0; -static jfieldID f_utf_8 = 0; -static jfieldID f_iter_has_next = 0; +jfieldID f_model_pointer = nullptr; +jfieldID f_task_id = nullptr; +jfieldID f_utf_8 = nullptr; +jfieldID f_iter_has_next = nullptr; // objects -static jobject o_utf_8 = 0; +jobject o_utf_8 = nullptr; + +/** + * Safely cast the size of a container to a Java array size + */ +template jsize cast_jsize(const T &container) +{ + static_assert(std::is_integral::value, "Container must have an integral size type."); + + auto size = container.size(); + if (size > static_cast::type>(std::numeric_limits::max())) + { + throw std::runtime_error("Container size exceeds maximum size for a Java array"); + } + + return static_cast(size); +} /** * Convert a Java string to a std::string */ -static std::string parse_jstring(JNIEnv *env, jstring java_string) +std::string parse_jstring(JNIEnv *env, jstring java_string) { - const jbyteArray string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); + auto *const string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); - size_t length = (size_t)env->GetArrayLength(string_bytes); + auto length = (size_t)env->GetArrayLength(string_bytes); jbyte *byte_elements = env->GetByteArrayElements(string_bytes, nullptr); std::string string = std::string((char *)byte_elements, length); @@ -79,13 +100,14 @@ static std::string parse_jstring(JNIEnv *env, jstring java_string) * but we directly send the bytes and do the conversion in Java. Unfortunately, there isn't a nice/standardized way to * do this conversion in C++ */ -static jbyteArray parse_jbytes(JNIEnv *env, std::string string) +jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) { - jsize len = string.size(); - jbyteArray bytes = env->NewByteArray(len); - env->SetByteArrayRegion(bytes, 0, len, reinterpret_cast(string.c_str())); + jsize length = cast_jsize(string); + jbyteArray bytes = env->NewByteArray(length); + env->SetByteArrayRegion(bytes, 0, length, reinterpret_cast(string.c_str())); return bytes; } +} // namespace /** * The VM calls JNI_OnLoad when the native library is loaded (for example, through `System.loadLibrary`). @@ -95,9 +117,9 @@ static jbyteArray parse_jbytes(JNIEnv *env, std::string string) * only requires JNI version `JNI_VERSION_1_1`. If the VM does not recognize the version number returned by `JNI_OnLoad`, the VM will unload the library and act as if the library was never loaded. */ -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, __attribute__((unused)) void *reserved) { - JNIEnv *env = 0; + JNIEnv *env = nullptr; if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) { @@ -216,12 +238,14 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) * Note that `JNI_OnLoad` and `JNI_OnUnload` are two functions optionally supplied by JNI libraries, not exported from * the VM. */ -JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, __attribute__((unused)) void *reserved) { - JNIEnv *env = 0; + JNIEnv *env = nullptr; if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) + { return; + } env->DeleteGlobalRef(c_llama_model); env->DeleteGlobalRef(c_llama_iterator); @@ -246,7 +270,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo gpt_params params; server_params sparams; - server_context *ctx_server = new server_context(); + auto *ctx_server = new server_context(); std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); @@ -292,11 +316,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo env->ThrowNew(c_llama_error, "could not load model from given file path"); return; } - else - { - ctx_server->init(); - state.store(SERVER_STATE_READY); - } + + ctx_server->init(); + state.store(SERVER_STATE_READY); LOG_INFO("model loaded", {}); @@ -348,7 +370,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); @@ -364,55 +386,52 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) server_task_result result = ctx_server->queue_results.recv(id_task); - LOG_VERBOSE("data stream", {{"to_send", result.data}}); - if (result.error) { std::string response = result.data["message"].get(); + ctx_server->queue_results.remove_waiting_task_id(id_task); env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - else + + std::string response = result.data["content"].get(); + if (result.stop) { - std::string response = result.data["content"].get(); - if (result.stop) - { - ctx_server->queue_results.remove_waiting_task_id(id_task); - } + ctx_server->queue_results.remove_waiting_task_id(id_task); + } - jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - if (result.data.contains("completion_probabilities")) + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + if (result.data.contains("completion_probabilities")) + { + auto completion_probabilities = result.data["completion_probabilities"]; + for (const auto &entry : completion_probabilities) { - auto completion_probabilities = result.data["completion_probabilities"]; - for (const auto &entry : completion_probabilities) + auto probs = entry["probs"]; + for (const auto &tp : probs) { - auto probs = entry["probs"]; - for (const auto &tp : probs) - { - std::string tok_str = tp["tok_str"]; - jstring jtok_str = env->NewStringUTF(tok_str.c_str()); - float prob = tp["prob"]; - jobject jprob = env->NewObject(c_float, cc_float, prob); - env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); - env->DeleteLocalRef(jtok_str); - env->DeleteLocalRef(jprob); - } + std::string tok_str = tp["tok_str"]; + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + float prob = tp["prob"]; + jobject jprob = env->NewObject(c_float, cc_float, prob); + env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); + env->DeleteLocalRef(jtok_str); + env->DeleteLocalRef(jprob); } } - - jbyteArray jbytes = parse_jbytes(env, response); - return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); } + + jbyteArray jbytes = parse_jbytes(env, response); + return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); } JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) if (!ctx_server->params.embedding) { @@ -435,40 +454,39 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - else - { - std::cout << result.data << std::endl; - std::vector embedding = result.data["embedding"].get>(); - - jfloatArray j_embedding = env->NewFloatArray(embedding.size()); - if (j_embedding == nullptr) - { - env->ThrowNew(c_error_oom, "could not allocate embedding"); - return nullptr; - } - env->SetFloatArrayRegion(j_embedding, 0, embedding.size(), reinterpret_cast(embedding.data())); + std::vector embedding = result.data["embedding"].get>(); + jsize embedding_size = cast_jsize(embedding); - return j_embedding; + jfloatArray j_embedding = env->NewFloatArray(embedding_size); + if (j_embedding == nullptr) + { + env->ThrowNew(c_error_oom, "could not allocate embedding"); + return nullptr; } + + env->SetFloatArrayRegion(j_embedding, 0, embedding_size, reinterpret_cast(embedding.data())); + + return j_embedding; } JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) const std::string c_prompt = parse_jstring(env, jprompt); std::vector tokens = ctx_server->tokenize(c_prompt, false); + jsize token_size = cast_jsize(tokens); - jintArray java_tokens = env->NewIntArray(tokens.size()); + jintArray java_tokens = env->NewIntArray(token_size); if (java_tokens == nullptr) { env->ThrowNew(c_error_oom, "could not allocate token memory"); return nullptr; } - env->SetIntArrayRegion(java_tokens, 0, tokens.size(), reinterpret_cast(tokens.data())); + env->SetIntArrayRegion(java_tokens, 0, token_size, reinterpret_cast(tokens.data())); return java_tokens; } @@ -477,7 +495,7 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv jintArray java_tokens) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) jsize length = env->GetArrayLength(java_tokens); jint *elements = env->GetIntArrayElements(java_tokens, nullptr); @@ -492,7 +510,7 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) { jlong server_handle = env->GetLongField(obj, f_model_pointer); - server_context *ctx_server = reinterpret_cast(server_handle); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) ctx_server->queue_tasks.terminate(); // maybe we should keep track how many models were loaded before freeing the backend llama_backend_free(); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index ac4986f6..f62ef74e 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include bool server_log_json = true; @@ -2263,7 +2263,7 @@ struct server_context 0, // unused }; - const int ret = llama_decode(ctx, batch_view); + const int ret = llama_decode(ctx, batch_view); if (ret != 0) { From 92f63e9b8158a198c8da45a2093e6431d5516de2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 13 Apr 2024 22:56:17 +0200 Subject: [PATCH 198/384] simplify cmake file --- CMakeLists.txt | 7 ++----- build-args.cmake | 1 - 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0939c8b9..d52defea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,6 @@ project(jllama CXX) include(FetchContent) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_SHARED_LIBS ON) option(LLAMA_VERBOSE "llama: verbose output" OFF) @@ -29,9 +28,6 @@ FetchContent_MakeAvailable(llama.cpp) #################### jllama #################### -# todo: Is there a better way to build the library than copy & pasting the build argument cmake definition of llama.cpp? -include(build-args.cmake) - # find which OS we build for if not set (make sure to run mvn compile first) if(NOT DEFINED OS_NAME) find_package(Java REQUIRED) @@ -90,8 +86,9 @@ endif() add_library(jllama SHARED src/main/cpp/jllama.cpp src/main/cpp/server.hpp src/main/cpp/utils.hpp) +set_target_properties(jllama PROPERTIES POSITION_INDEPENDENT_CODE ON) target_include_directories(jllama PRIVATE src/main/cpp ${JNI_INCLUDE_DIRS}) -target_link_libraries(jllama PRIVATE common llama nlohmann_json ${LLAMA_EXTRA_LIBS}) +target_link_libraries(jllama PRIVATE common llama nlohmann_json) target_compile_features(jllama PRIVATE cxx_std_11) target_compile_definitions(jllama PRIVATE diff --git a/build-args.cmake b/build-args.cmake index 3f6625ee..90e87dd4 100644 --- a/build-args.cmake +++ b/build-args.cmake @@ -5,7 +5,6 @@ else() endif() # general -option(BUILD_SHARED_LIBS "build shared libraries" OFF) option(LLAMA_STATIC "llama: static link libraries" OFF) option(LLAMA_NATIVE "llama: enable -march=native flag" ON) option(LLAMA_LTO "llama: enable link time optimization" OFF) From 17149eee61056dc1b3eea7ab5913e2d2b99cf739 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 15 Apr 2024 20:30:35 +0200 Subject: [PATCH 199/384] bump to b2665 --- CMakeLists.txt | 2 +- src/main/cpp/jllama.cpp | 24 +----- src/main/cpp/server.hpp | 170 ++++++++++++++++++++++++++++++++++------ 3 files changed, 148 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d52defea..307cb935 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2619 + GIT_TAG b2665 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 6f76afbe..eabef874 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -4,9 +4,7 @@ #include "llama.h" #include "server.hpp" -#include #include -#include // We store some references to Java classes and their fields/methods here to speed up things for later and to fail // early on if anything can't be found. This happens when the JVM loads the shared library (see `JNI_OnLoad`). @@ -61,22 +59,6 @@ jfieldID f_iter_has_next = nullptr; // objects jobject o_utf_8 = nullptr; -/** - * Safely cast the size of a container to a Java array size - */ -template jsize cast_jsize(const T &container) -{ - static_assert(std::is_integral::value, "Container must have an integral size type."); - - auto size = container.size(); - if (size > static_cast::type>(std::numeric_limits::max())) - { - throw std::runtime_error("Container size exceeds maximum size for a Java array"); - } - - return static_cast(size); -} - /** * Convert a Java string to a std::string */ @@ -102,7 +84,7 @@ std::string parse_jstring(JNIEnv *env, jstring java_string) */ jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) { - jsize length = cast_jsize(string); + jsize length = string.size(); // NOLINT(*-narrowing-conversions) jbyteArray bytes = env->NewByteArray(length); env->SetByteArrayRegion(bytes, 0, length, reinterpret_cast(string.c_str())); return bytes; @@ -456,7 +438,7 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, } std::vector embedding = result.data["embedding"].get>(); - jsize embedding_size = cast_jsize(embedding); + jsize embedding_size = embedding.size(); // NOLINT(*-narrowing-conversions) jfloatArray j_embedding = env->NewFloatArray(embedding_size); if (j_embedding == nullptr) @@ -477,7 +459,7 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, const std::string c_prompt = parse_jstring(env, jprompt); std::vector tokens = ctx_server->tokenize(c_prompt, false); - jsize token_size = cast_jsize(tokens); + jsize token_size = tokens.size(); // NOLINT(*-narrowing-conversions) jintArray java_tokens = env->NewIntArray(token_size); if (java_tokens == nullptr) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index f62ef74e..8c44b52c 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1,8 +1,10 @@ +#include "utils.hpp" + #include "common.h" #include "grammar-parser.h" -#include "json.hpp" #include "llama.h" -#include "utils.hpp" + +#include "nlohmann/json.hpp" #include #include @@ -11,9 +13,11 @@ #include #include #include -#include +#include #include +using json = nlohmann::ordered_json; + bool server_log_json = true; enum stop_type @@ -47,7 +51,10 @@ enum server_task_type SERVER_TASK_TYPE_COMPLETION, SERVER_TASK_TYPE_CANCEL, SERVER_TASK_TYPE_NEXT_RESPONSE, - SERVER_TASK_TYPE_METRICS + SERVER_TASK_TYPE_METRICS, + SERVER_TASK_TYPE_SLOT_SAVE, + SERVER_TASK_TYPE_SLOT_RESTORE, + SERVER_TASK_TYPE_SLOT_ERASE, }; struct server_task @@ -558,7 +565,7 @@ struct server_queue queue_multitasks.push_back(multi); } - // update the remaining subtasks, while appending results to multitask + // updatethe remaining subtasks, while appending results to multitask void update_multitask(int id_multi, int id_sub, server_task_result &result) { std::lock_guard lock(mutex_tasks); @@ -727,6 +734,7 @@ struct server_context n_ctx = llama_n_ctx(ctx); add_bos_token = llama_should_add_bos_token(model); + GGML_ASSERT(llama_add_eos_token(model) != 1); return true; } @@ -794,7 +802,7 @@ struct server_context metrics.init(); } - std::vector tokenize(const json &json_prompt, bool add_bos) const + std::vector tokenize(const json &json_prompt, bool add_special) const { // TODO: currently, we tokenize using special tokens by default // this is not always correct (see @@ -818,7 +826,7 @@ struct server_context std::vector p; if (first) { - p = ::llama_tokenize(ctx, s, add_bos, TMP_FORCE_SPECIAL); + p = ::llama_tokenize(ctx, s, add_special, TMP_FORCE_SPECIAL); first = false; } else @@ -842,7 +850,7 @@ struct server_context else { auto s = json_prompt.template get(); - prompt_tokens = ::llama_tokenize(ctx, s, add_bos, TMP_FORCE_SPECIAL); + prompt_tokens = ::llama_tokenize(ctx, s, add_special, TMP_FORCE_SPECIAL); } return prompt_tokens; @@ -933,14 +941,13 @@ struct server_context const auto &prompt = data.find("prompt"); if (prompt == data.end()) { - send_error(task, "Either \"prompt\" or \"messages\" must be provided", ERROR_TYPE_INVALID_REQUEST); + send_error(task, R"(Either "prompt" or "messages" must be provided)", ERROR_TYPE_INVALID_REQUEST); return false; } - else - { - slot.prompt = *prompt; - } - if (slot.prompt.is_array() && slot.prompt.size() == 0) + + slot.prompt = *prompt; + + if (slot.prompt.is_array() && slot.prompt.empty()) { send_error(task, "\"prompt\" cannot be an empty array", ERROR_TYPE_INVALID_REQUEST); return false; @@ -1134,7 +1141,7 @@ struct server_context if (!system_prompt.empty()) { - system_tokens = ::llama_tokenize(ctx, system_prompt, add_bos_token); + system_tokens = ::llama_tokenize(ctx, system_prompt, true); llama_batch_clear(batch); @@ -1163,7 +1170,7 @@ struct server_context if (llama_decode(ctx, batch_view) != 0) { - LOG_TEE("%s: llama_decode() failed\n", __func__); + LOG_ERROR("llama_decode() failed", {}); return; } } @@ -1385,7 +1392,11 @@ struct server_context void send_error(const int id_task, const int id_multi, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) { - LOG_TEE("task %i - error: %s\n", id_task, error.c_str()); + LOG_ERROR("task error", { + {"id_multi", id_multi}, + {"id_task", id_task}, + {"error", error}, + }); server_task_result res; res.id = id_task; @@ -1505,12 +1516,12 @@ struct server_context } const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); - if (embd == NULL) + if (embd == nullptr) { embd = llama_get_embeddings_ith(ctx, i); } - if (embd == NULL) + if (embd == nullptr) { LOG_ERROR("failed to get embeddings", {{"token", batch.token[i]}, {"seq_id", batch.seq_id[i][0]}}); @@ -1746,6 +1757,103 @@ struct server_context queue_results.send(res); } break; + case SERVER_TASK_TYPE_SLOT_SAVE: { + int id_slot = task.data["id_slot"]; + server_slot *slot = get_slot(id_slot); + if (slot == nullptr) + { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + + const size_t token_count = slot->cache_tokens.size(); + const int64_t t_start = ggml_time_us(); + + std::string filename = task.data["filename"]; + std::string filepath = task.data["filepath"]; + + const size_t nwrite = + llama_state_seq_save_file(ctx, filepath.c_str(), slot->id + 1, slot->cache_tokens.data(), token_count); + + const int64_t t_end = ggml_time_us(); + const double t_save_ms = (t_end - t_start) / 1000.0; + + server_task_result result; + result.id = task.id; + result.stop = true; + result.error = false; + result.data = json{{"id_slot", id_slot}, + {"filename", filename}, + {"n_saved", token_count}, // tokens saved + {"n_written", nwrite}, // bytes written + {"timings", {{"save_ms", t_save_ms}}}}; + queue_results.send(result); + } + break; + case SERVER_TASK_TYPE_SLOT_RESTORE: { + int id_slot = task.data["id_slot"]; + server_slot *slot = get_slot(id_slot); + if (slot == nullptr) + { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + + const int64_t t_start = ggml_time_us(); + + std::string filename = task.data["filename"]; + std::string filepath = task.data["filepath"]; + + slot->cache_tokens.resize(slot->n_ctx); + size_t token_count = 0; + size_t nread = llama_state_seq_load_file(ctx, filepath.c_str(), slot->id + 1, slot->cache_tokens.data(), + slot->cache_tokens.size(), &token_count); + if (nread == 0) + { + slot->cache_tokens.resize(0); + send_error(task, "Unable to restore slot, no available space in KV cache or invalid slot save file", + ERROR_TYPE_INVALID_REQUEST); + break; + } + slot->cache_tokens.resize(token_count); + + const int64_t t_end = ggml_time_us(); + const double t_restore_ms = (t_end - t_start) / 1000.0; + + server_task_result result; + result.id = task.id; + result.stop = true; + result.error = false; + result.data = json{{"id_slot", id_slot}, + {"filename", filename}, + {"n_restored", token_count}, // tokens restored + {"n_read", nread}, // bytes read + {"timings", {{"restore_ms", t_restore_ms}}}}; + queue_results.send(result); + } + break; + case SERVER_TASK_TYPE_SLOT_ERASE: { + int id_slot = task.data["id_slot"]; + server_slot *slot = get_slot(id_slot); + if (slot == nullptr) + { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + + // Erase token cache + const size_t n_erased = slot->cache_tokens.size(); + llama_kv_cache_seq_rm(ctx, slot->id + 1, -1, -1); + slot->cache_tokens.clear(); + + server_task_result result; + result.id = task.id; + result.stop = true; + result.error = false; + result.data = json{{"id_slot", id_slot}, {"n_erased", n_erased}}; + queue_results.send(result); + } + break; } } @@ -1961,8 +2069,7 @@ struct server_context else { prompt_tokens = - tokenize(slot.prompt, system_prompt.empty() && - add_bos_token); // add BOS if there isn't system prompt + tokenize(slot.prompt, system_prompt.empty()); // add BOS if there isn't system prompt } slot.n_past = 0; @@ -2263,14 +2370,19 @@ struct server_context 0, // unused }; - const int ret = llama_decode(ctx, batch_view); + const int ret = llama_decode(ctx, batch_view); if (ret != 0) { if (n_batch == 1 || ret < 0) { // if you get here, it means the KV cache is full - try increasing it via the context size - LOG_TEE("%s : failed to decode the batch, n_batch = %d, ret = %d\n", __func__, n_batch, ret); + LOG_ERROR("failed to decode the batch: KV cache is full - try increasing it via the context size", + { + {"i", i}, + {"n_batch", ret}, + {"ret", ret}, + }); for (auto &slot : slots) { slot.state = SLOT_STATE_PROCESSING; @@ -2281,13 +2393,18 @@ struct server_context break; // break loop of n_batch } - LOG_TEE("%s : failed to find free space in the KV cache, retrying with smaller n_batch = %d\n", - __func__, n_batch / 2); - // retry with half the batch size to try to find a free slot in the KV cache n_batch /= 2; i -= n_batch; + LOG_WARNING("failed to find free space in the KV cache, retrying with smaller batch size - try " + "increasing it via the context size or enable defragmentation", + { + {"i", i}, + {"n_batch", n_batch}, + {"ret", ret}, + }); + continue; // continue loop of n_batch } @@ -2443,6 +2560,7 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params if (jparams.contains("split_mode")) { params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); +// todo: the definition checks here currently don't work due to cmake visibility reasons #ifndef GGML_USE_CUDA fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); #endif From 0d1ce232c901cbfbc6ab9431a0d03fb469ad007a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:10:34 +0200 Subject: [PATCH 200/384] update to llama.cpp b702 --- CMakeLists.txt | 2 +- README.md | 5 ++++- src/main/cpp/server.hpp | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 307cb935..c1873c20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2665 + GIT_TAG b2702 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/README.md b/README.md index c9959028..58566795 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2619](https://img.shields.io/badge/llama.cpp-%23b2619-informational) +![llama.cpp b2702](https://img.shields.io/badge/llama.cpp-%23b2702-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -17,6 +17,9 @@ This repository provides Java bindings for the C++ library. 2.3 [Infilling](#infilling) 3. [Android](#importing-in-android) +> [!NOTE] +> Now with Llama 3 support + ## Quick Start Access this library via Maven: diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 8c44b52c..8295f42a 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1306,7 +1306,7 @@ struct server_context }); } - if (result.tok == llama_token_eos(model)) + if (llama_token_is_eog(model, result.tok)) { slot.stopped_eos = true; slot.has_next_token = false; From 6d04df6ea4df60d1672aed7870638ee9734c287b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:11:34 +0200 Subject: [PATCH 201/384] change testing model to codellama --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yaml | 4 ++-- src/test/java/de/kherud/llama/LlamaModelTest.java | 15 +++++++++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6ddc74e..6001429c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,8 +4,8 @@ name: Continuous Integration on: [ "pull_request", "workflow_dispatch" ] env: - MODEL_URL: "https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf" - MODEL_NAME: "llama-160m-chat-v1.q2_k.gguf" + MODEL_URL: "https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf" + MODEL_NAME: "codellama-7b.Q2_K.gguf" jobs: # don't split build and test jobs to keep the workflow simple diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 66dd9a9a..4b58b7d8 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,8 +9,8 @@ on: release: types: [ created ] env: - MODEL_URL: "https://huggingface.co/afrideva/Llama-160M-Chat-v1-GGUF/resolve/main/llama-160m-chat-v1.q2_k.gguf" - MODEL_NAME: "llama-160m-chat-v1.q2_k.gguf" + MODEL_URL: "https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf" + MODEL_NAME: "codellama-7b.Q2_K.gguf" jobs: diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index bdb68574..e38dcb71 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -20,7 +20,8 @@ public class LlamaModelTest { public static void setup() { model = new LlamaModel( new ModelParameters() - .setModelFilePath("models/llama-160m-chat-v1.q2_k.gguf") + .setModelFilePath("models/codellama-7b.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setNGpuLayers(43) .setEmbedding(true) ); @@ -45,6 +46,7 @@ public void testGenerateAnswer() { int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { + System.out.println(ignored); generated++; } // todo: currently, after generating nPredict tokens, there is an additional empty output @@ -53,6 +55,14 @@ public void testGenerateAnswer() { @Test public void testGenerateInfill() { + model.close(); + model = new LlamaModel( + new ModelParameters() + .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setNGpuLayers(43) +// .setEmbedding(true) + ); Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") @@ -67,6 +77,7 @@ public void testGenerateInfill() { int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { generated++; + System.out.println(ignored); } Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } @@ -133,7 +144,7 @@ public void testCompleteGrammar() { @Test public void testEmbedding() { float[] embedding = model.embed(prefix); - Assert.assertEquals(768, embedding.length); + Assert.assertEquals(4096, embedding.length); } @Test From 8eb7d7c0617a67ff2b68a255387d074b5cd8d25c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:22:50 +0200 Subject: [PATCH 202/384] disable test curl download --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index e38dcb71..f5e1b663 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -21,7 +21,7 @@ public static void setup() { model = new LlamaModel( new ModelParameters() .setModelFilePath("models/codellama-7b.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") +// .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setNGpuLayers(43) .setEmbedding(true) ); From 10b2eec89b441c296fc17eb5a40e664ef3394f84 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:29:10 +0200 Subject: [PATCH 203/384] remove compiler unused argument attributes --- src/main/cpp/jllama.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index fb941fef..d78ccd37 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -99,7 +99,7 @@ jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) * only requires JNI version `JNI_VERSION_1_1`. If the VM does not recognize the version number returned by `JNI_OnLoad`, the VM will unload the library and act as if the library was never loaded. */ -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, __attribute__((unused)) void *reserved) +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env = nullptr; @@ -220,7 +220,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, __attribute__((unused)) void *rese * Note that `JNI_OnLoad` and `JNI_OnUnload` are two functions optionally supplied by JNI libraries, not exported from * the VM. */ -JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, __attribute__((unused)) void *reserved) +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { JNIEnv *env = nullptr; From e848dd29c3df98289d8bf55f886c010bf694e91d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:40:43 +0200 Subject: [PATCH 204/384] remove cached build-args.cmake --- build-args.cmake | 1085 ---------------------------------------------- 1 file changed, 1085 deletions(-) delete mode 100644 build-args.cmake diff --git a/build-args.cmake b/build-args.cmake deleted file mode 100644 index 90e87dd4..00000000 --- a/build-args.cmake +++ /dev/null @@ -1,1085 +0,0 @@ -if (APPLE) - set(LLAMA_METAL_DEFAULT ON) -else() - set(LLAMA_METAL_DEFAULT OFF) -endif() - -# general -option(LLAMA_STATIC "llama: static link libraries" OFF) -option(LLAMA_NATIVE "llama: enable -march=native flag" ON) -option(LLAMA_LTO "llama: enable link time optimization" OFF) -option(LLAMA_CCACHE "llama: use ccache if available" ON) - -# debug -option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON) -option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF) -option(LLAMA_GPROF "llama: enable gprof" OFF) - -# build -option(LLAMA_FATAL_WARNINGS "llama: enable -Werror flag" OFF) - -# sanitizers -option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF) -option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF) -option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF) - -# instruction set specific -if (LLAMA_NATIVE) - set(INS_ENB OFF) -else() - set(INS_ENB ON) -endif() - -option(LLAMA_AVX "llama: enable AVX" ${INS_ENB}) -option(LLAMA_AVX2 "llama: enable AVX2" ${INS_ENB}) -option(LLAMA_AVX512 "llama: enable AVX512" OFF) -option(LLAMA_AVX512_VBMI "llama: enable AVX512-VBMI" OFF) -option(LLAMA_AVX512_VNNI "llama: enable AVX512-VNNI" OFF) -option(LLAMA_FMA "llama: enable FMA" ${INS_ENB}) -# in MSVC F16C is implied with AVX2/AVX512 -if (NOT MSVC) - option(LLAMA_F16C "llama: enable F16C" ${INS_ENB}) -endif() - -if (WIN32) - set(LLAMA_WIN_VER "0x602" CACHE STRING "llama: Windows Version") -endif() - -# 3rd party libs -option(LLAMA_ACCELERATE "llama: enable Accelerate framework" ON) -option(LLAMA_BLAS "llama: use BLAS" OFF) -set(LLAMA_BLAS_VENDOR "Generic" CACHE STRING "llama: BLAS library vendor") -option(LLAMA_CUDA "llama: use CUDA" OFF) -option(LLAMA_CUBLAS "llama: use CUDA (deprecated, use LLAMA_CUDA)" OFF) -option(LLAMA_CUDA_FORCE_DMMV "llama: use dmmv instead of mmvq CUDA kernels" OFF) -option(LLAMA_CUDA_FORCE_MMQ "llama: use mmq kernels instead of cuBLAS" OFF) -set(LLAMA_CUDA_DMMV_X "32" CACHE STRING "llama: x stride for dmmv CUDA kernels") -set(LLAMA_CUDA_MMV_Y "1" CACHE STRING "llama: y block size for mmv CUDA kernels") -option(LLAMA_CUDA_F16 "llama: use 16 bit floats for some calculations" OFF) -set(LLAMA_CUDA_KQUANTS_ITER "2" CACHE STRING "llama: iters./thread per block for Q2_K/Q6_K") -set(LLAMA_CUDA_PEER_MAX_BATCH_SIZE "128" CACHE STRING - "llama: max. batch size for using peer access") -option(LLAMA_CUDA_NO_PEER_COPY "llama: do not use peer to peer copies" OFF) -option(LLAMA_CURL "llama: use libcurl to download model from an URL" OFF) -option(LLAMA_HIPBLAS "llama: use hipBLAS" OFF) -option(LLAMA_HIP_UMA "llama: use HIP unified memory architecture" OFF) -option(LLAMA_CLBLAST "llama: use CLBlast" OFF) -option(LLAMA_VULKAN "llama: use Vulkan" OFF) -option(LLAMA_VULKAN_CHECK_RESULTS "llama: run Vulkan op checks" OFF) -option(LLAMA_VULKAN_DEBUG "llama: enable Vulkan debug output" OFF) -option(LLAMA_VULKAN_VALIDATE "llama: enable Vulkan validation" OFF) -option(LLAMA_VULKAN_RUN_TESTS "llama: run Vulkan tests" OFF) -option(LLAMA_METAL "llama: use Metal" ${LLAMA_METAL_DEFAULT}) -option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" OFF) -option(LLAMA_METAL_SHADER_DEBUG "llama: compile Metal with -fno-fast-math" OFF) -option(LLAMA_METAL_EMBED_LIBRARY "llama: embed Metal library" OFF) -set(LLAMA_METAL_MACOSX_VERSION_MIN "" CACHE STRING - "llama: metal minimum macOS version") -set(LLAMA_METAL_STD "" CACHE STRING "llama: metal standard version (-std flag)") -option(LLAMA_KOMPUTE "llama: use Kompute" OFF) -option(LLAMA_MPI "llama: use MPI" OFF) -option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF) -option(LLAMA_SYCL "llama: use SYCL" OFF) -option(LLAMA_SYCL_F16 "llama: use 16 bit floats for sycl calculations" OFF) -set(LLAMA_SYCL_TARGET "INTEL" CACHE STRING "llama: sycl target device") -option(LLAMA_CPU_HBM "llama: use memkind for CPU HBM" OFF) -set(LLAMA_SCHED_MAX_COPIES "4" CACHE STRING "llama: max input copies for pipeline parallelism") - -option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE}) -option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE}) -option(LLAMA_BUILD_SERVER "llama: build server example" ON) - -# add perf arguments -option(LLAMA_PERF "llama: enable perf" OFF) - -# -# Compile flags -# - -if (LLAMA_SYCL) - set(CMAKE_CXX_STANDARD 17) -else() - set(CMAKE_CXX_STANDARD 11) -endif() - -set(CMAKE_CXX_STANDARD_REQUIRED true) -set(CMAKE_C_STANDARD 11) -set(CMAKE_C_STANDARD_REQUIRED true) -set(THREADS_PREFER_PTHREAD_FLAG ON) - -find_package(Threads REQUIRED) -include(CheckCXXCompilerFlag) - -add_compile_definitions(GGML_SCHED_MAX_COPIES=${LLAMA_SCHED_MAX_COPIES}) - -# enable libstdc++ assertions for debug builds -if (CMAKE_SYSTEM_NAME MATCHES "Linux") - add_compile_definitions($<$:_GLIBCXX_ASSERTIONS>) -endif() - -if (NOT MSVC) - if (LLAMA_SANITIZE_THREAD) - add_compile_options(-fsanitize=thread) - link_libraries (-fsanitize=thread) - endif() - - if (LLAMA_SANITIZE_ADDRESS) - add_compile_options(-fsanitize=address -fno-omit-frame-pointer) - link_libraries (-fsanitize=address) - endif() - - if (LLAMA_SANITIZE_UNDEFINED) - add_compile_options(-fsanitize=undefined) - link_libraries (-fsanitize=undefined) - endif() -endif() - -if (APPLE AND LLAMA_ACCELERATE) - find_library(ACCELERATE_FRAMEWORK Accelerate) - if (ACCELERATE_FRAMEWORK) - message(STATUS "Accelerate framework found") - - add_compile_definitions(GGML_USE_ACCELERATE) - add_compile_definitions(ACCELERATE_NEW_LAPACK) - add_compile_definitions(ACCELERATE_LAPACK_ILP64) - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK}) - else() - message(WARNING "Accelerate framework not found") - endif() -endif() - -if (LLAMA_METAL) - find_library(FOUNDATION_LIBRARY Foundation REQUIRED) - find_library(METAL_FRAMEWORK Metal REQUIRED) - find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) - - message(STATUS "Metal framework found") - set(GGML_HEADERS_METAL ggml-metal.h) - set(GGML_SOURCES_METAL ggml-metal.m) - - add_compile_definitions(GGML_USE_METAL) - if (LLAMA_METAL_NDEBUG) - add_compile_definitions(GGML_METAL_NDEBUG) - endif() - - if (LLAMA_METAL_EMBED_LIBRARY) - enable_language(ASM) - add_compile_definitions(GGML_METAL_EMBED_LIBRARY) - - set(METALLIB_COMMON "${CMAKE_CURRENT_SOURCE_DIR}/ggml-common.h") - set(METALLIB_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal") - - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/autogenerated") - - # merge ggml-common.h and ggml-metal.metal into a single file - set(METALLIB_EMBED_ASM "${CMAKE_BINARY_DIR}/autogenerated/ggml-metal-embed.s") - set(METALLIB_SOURCE_EMBED "${CMAKE_BINARY_DIR}/autogenerated/ggml-metal-embed.metal") - - add_custom_command( - OUTPUT ${METALLIB_EMBED_ASM} - COMMAND echo "Embedding Metal library" - COMMAND sed -e '/\#include \"ggml-common.h\"/r ${METALLIB_COMMON}' -e '/\#include \"ggml-common.h\"/d' < ${METALLIB_SOURCE} > ${METALLIB_SOURCE_EMBED} - COMMAND echo ".section __DATA,__ggml_metallib" > ${METALLIB_EMBED_ASM} - COMMAND echo ".globl _ggml_metallib_start" >> ${METALLIB_EMBED_ASM} - COMMAND echo "_ggml_metallib_start:" >> ${METALLIB_EMBED_ASM} - COMMAND echo ".incbin \\\"${METALLIB_SOURCE_EMBED}\\\"" >> ${METALLIB_EMBED_ASM} - COMMAND echo ".globl _ggml_metallib_end" >> ${METALLIB_EMBED_ASM} - COMMAND echo "_ggml_metallib_end:" >> ${METALLIB_EMBED_ASM} - DEPENDS ggml-metal.metal ggml-common.h - COMMENT "Generate assembly for embedded Metal library" - ) - - set(GGML_SOURCES_METAL ${GGML_SOURCES_METAL} ${METALLIB_EMBED_ASM}) - else() - if (LLAMA_METAL_SHADER_DEBUG) - # custom command to do the following: - # xcrun -sdk macosx metal -fno-fast-math -c ggml-metal.metal -o ggml-metal.air - # xcrun -sdk macosx metallib ggml-metal.air -o default.metallib - # - # note: this is the only way I found to disable fast-math in Metal. it's ugly, but at least it works - # disabling fast math is needed in order to pass tests/test-backend-ops - # note: adding -fno-inline fixes the tests when using MTL_SHADER_VALIDATION=1 - # note: unfortunately, we have to call it default.metallib instead of ggml.metallib - # ref: https://github.com/ggerganov/whisper.cpp/issues/1720 - set(XC_FLAGS -fno-fast-math -fno-inline -g) - else() - set(XC_FLAGS -O3) - endif() - - # Append macOS metal versioning flags - if (LLAMA_METAL_MACOSX_VERSION_MIN) - message(STATUS "Adding -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN} flag to metal compilation") - list(APPEND XC_FLAGS -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN}) - endif() - if (LLAMA_METAL_STD) - message(STATUS "Adding -std=${LLAMA_METAL_STD} flag to metal compilation") - list(APPEND XC_FLAGS -std=${LLAMA_METAL_STD}) - endif() - - add_custom_command( - OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib - COMMAND xcrun -sdk macosx metal ${XC_FLAGS} -c ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air - COMMAND xcrun -sdk macosx metallib ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib - COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air - COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-common.h - COMMAND rm -f ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal - DEPENDS ggml-metal.metal ggml-common.h - COMMENT "Compiling Metal kernels" - ) - endif() # LLAMA_METAL_EMBED_LIBRARY - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} - ${FOUNDATION_LIBRARY} - ${METAL_FRAMEWORK} - ${METALKIT_FRAMEWORK} - ) -endif() -if (LLAMA_BLAS) - if (LLAMA_STATIC) - set(BLA_STATIC ON) - endif() - if ($(CMAKE_VERSION) VERSION_GREATER_EQUAL 3.22) - set(BLA_SIZEOF_INTEGER 8) - endif() - - set(BLA_VENDOR ${LLAMA_BLAS_VENDOR}) - find_package(BLAS) - - if (BLAS_FOUND) - message(STATUS "BLAS found, Libraries: ${BLAS_LIBRARIES}") - - if ("${BLAS_INCLUDE_DIRS}" STREQUAL "") - # BLAS_INCLUDE_DIRS is missing in FindBLAS.cmake. - # see https://gitlab.kitware.com/cmake/cmake/-/issues/20268 - find_package(PkgConfig REQUIRED) - if (${LLAMA_BLAS_VENDOR} MATCHES "Generic") - pkg_check_modules(DepBLAS REQUIRED blas) - elseif (${LLAMA_BLAS_VENDOR} MATCHES "OpenBLAS") - # As of openblas v0.3.22, the 64-bit is named openblas64.pc - pkg_check_modules(DepBLAS openblas64) - if (NOT DepBLAS_FOUND) - pkg_check_modules(DepBLAS REQUIRED openblas) - endif() - elseif (${LLAMA_BLAS_VENDOR} MATCHES "FLAME") - pkg_check_modules(DepBLAS REQUIRED blis) - elseif (${LLAMA_BLAS_VENDOR} MATCHES "ATLAS") - pkg_check_modules(DepBLAS REQUIRED blas-atlas) - elseif (${LLAMA_BLAS_VENDOR} MATCHES "FlexiBLAS") - pkg_check_modules(DepBLAS REQUIRED flexiblas_api) - elseif (${LLAMA_BLAS_VENDOR} MATCHES "Intel") - # all Intel* libraries share the same include path - pkg_check_modules(DepBLAS REQUIRED mkl-sdl) - elseif (${LLAMA_BLAS_VENDOR} MATCHES "NVHPC") - # this doesn't provide pkg-config - # suggest to assign BLAS_INCLUDE_DIRS on your own - if ("${NVHPC_VERSION}" STREQUAL "") - message(WARNING "Better to set NVHPC_VERSION") - else() - set(DepBLAS_FOUND ON) - set(DepBLAS_INCLUDE_DIRS "/opt/nvidia/hpc_sdk/${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}/${NVHPC_VERSION}/math_libs/include") - endif() - endif() - if (DepBLAS_FOUND) - set(BLAS_INCLUDE_DIRS ${DepBLAS_INCLUDE_DIRS}) - else() - message(WARNING "BLAS_INCLUDE_DIRS neither been provided nor been automatically" - " detected by pkgconfig, trying to find cblas.h from possible paths...") - find_path(BLAS_INCLUDE_DIRS - NAMES cblas.h - HINTS - /usr/include - /usr/local/include - /usr/include/openblas - /opt/homebrew/opt/openblas/include - /usr/local/opt/openblas/include - /usr/include/x86_64-linux-gnu/openblas/include - ) - endif() - endif() - - message(STATUS "BLAS found, Includes: ${BLAS_INCLUDE_DIRS}") - - add_compile_options(${BLAS_LINKER_FLAGS}) - - add_compile_definitions(GGML_USE_OPENBLAS) - - if (${BLAS_INCLUDE_DIRS} MATCHES "mkl" AND (${LLAMA_BLAS_VENDOR} MATCHES "Generic" OR ${LLAMA_BLAS_VENDOR} MATCHES "Intel")) - add_compile_definitions(GGML_BLAS_USE_MKL) - endif() - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${BLAS_LIBRARIES}) - set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${BLAS_INCLUDE_DIRS}) - else() - message(WARNING "BLAS not found, please refer to " - "https://cmake.org/cmake/help/latest/module/FindBLAS.html#blas-lapack-vendors" - " to set correct LLAMA_BLAS_VENDOR") - endif() -endif() - -if (LLAMA_QKK_64) - add_compile_definitions(GGML_QKK_64) -endif() - -if (LLAMA_CUBLAS) - message(WARNING "LLAMA_CUBLAS is deprecated and will be removed in the future.\nUse LLAMA_CUDA instead") - set(LLAMA_CUDA ON) -endif() - -if (LLAMA_CUDA) - cmake_minimum_required(VERSION 3.17) - - find_package(CUDAToolkit) - if (CUDAToolkit_FOUND) - message(STATUS "CUDA found") - - enable_language(CUDA) - - set(GGML_HEADERS_CUDA ggml-cuda.h) - - file(GLOB GGML_SOURCES_CUDA "ggml-cuda/*.cu") - list(APPEND GGML_SOURCES_CUDA "ggml-cuda.cu") - - add_compile_definitions(GGML_USE_CUDA) - if (LLAMA_CUDA_FORCE_DMMV) - add_compile_definitions(GGML_CUDA_FORCE_DMMV) - endif() - if (LLAMA_CUDA_FORCE_MMQ) - add_compile_definitions(GGML_CUDA_FORCE_MMQ) - endif() - add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) - add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) - if (DEFINED LLAMA_CUDA_DMMV_Y) - add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_DMMV_Y}) # for backwards compatibility - endif() - if (LLAMA_CUDA_F16 OR LLAMA_CUDA_DMMV_F16) - add_compile_definitions(GGML_CUDA_F16) - endif() - add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) - add_compile_definitions(GGML_CUDA_PEER_MAX_BATCH_SIZE=${LLAMA_CUDA_PEER_MAX_BATCH_SIZE}) - if (LLAMA_CUDA_NO_PEER_COPY) - add_compile_definitions(GGML_CUDA_NO_PEER_COPY) - endif() - - if (LLAMA_STATIC) - if (WIN32) - # As of 12.3.1 CUDA Tookit for Windows does not offer a static cublas library - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas CUDA::cublasLt) - else () - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static) - endif() - else() - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt) - endif() - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} CUDA::cuda_driver) - - if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES) - # 52 == lowest CUDA 12 standard - # 60 == f16 CUDA intrinsics - # 61 == integer CUDA intrinsics - # 70 == compute capability at which unrolling a loop in mul_mat_q kernels is faster - if (LLAMA_CUDA_F16 OR LLAMA_CUDA_DMMV_F16) - set(CMAKE_CUDA_ARCHITECTURES "60;61;70") # needed for f16 CUDA intrinsics - else() - set(CMAKE_CUDA_ARCHITECTURES "52;61;70") # lowest CUDA 12 standard + lowest for integer intrinsics - #set(CMAKE_CUDA_ARCHITECTURES "") # use this to compile much faster, but only F16 models work - endif() - endif() - message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}") - - else() - message(WARNING "CUDA not found") - endif() -endif() - -if (LLAMA_MPI) - cmake_minimum_required(VERSION 3.10) - find_package(MPI) - if (MPI_C_FOUND) - message(STATUS "MPI found") - - set(GGML_HEADERS_MPI ggml-mpi.h) - set(GGML_SOURCES_MPI ggml-mpi.c) - - add_compile_definitions(GGML_USE_MPI) - add_compile_definitions(${MPI_C_COMPILE_DEFINITIONS}) - - if (NOT MSVC) - add_compile_options(-Wno-cast-qual) - endif() - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_C_LIBRARIES}) - set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${MPI_C_INCLUDE_DIRS}) - - # Even if you're only using the C header, C++ programs may bring in MPI - # C++ functions, so more linkage is needed - if (MPI_CXX_FOUND) - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_CXX_LIBRARIES}) - endif() - else() - message(WARNING "MPI not found") - endif() -endif() - -if (LLAMA_CLBLAST) - find_package(CLBlast) - if (CLBlast_FOUND) - message(STATUS "CLBlast found") - - set(GGML_HEADERS_OPENCL ggml-opencl.h) - set(GGML_SOURCES_OPENCL ggml-opencl.cpp) - - add_compile_definitions(GGML_USE_CLBLAST) - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} clblast) - else() - message(WARNING "CLBlast not found") - endif() -endif() - -if (LLAMA_VULKAN) - find_package(Vulkan) - if (Vulkan_FOUND) - message(STATUS "Vulkan found") - - set(GGML_HEADERS_VULKAN ggml-vulkan.h) - set(GGML_SOURCES_VULKAN ggml-vulkan.cpp) - - add_compile_definitions(GGML_USE_VULKAN) - - if (LLAMA_VULKAN_CHECK_RESULTS) - add_compile_definitions(GGML_VULKAN_CHECK_RESULTS) - endif() - - if (LLAMA_VULKAN_DEBUG) - add_compile_definitions(GGML_VULKAN_DEBUG) - endif() - - if (LLAMA_VULKAN_VALIDATE) - add_compile_definitions(GGML_VULKAN_VALIDATE) - endif() - - if (LLAMA_VULKAN_RUN_TESTS) - add_compile_definitions(GGML_VULKAN_RUN_TESTS) - endif() - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} Vulkan::Vulkan) - else() - message(WARNING "Vulkan not found") - endif() -endif() - -if (LLAMA_HIPBLAS) - list(APPEND CMAKE_PREFIX_PATH /opt/rocm) - - if (NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang") - message(WARNING "Only LLVM is supported for HIP, hint: CC=/opt/rocm/llvm/bin/clang") - endif() - - if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") - message(WARNING "Only LLVM is supported for HIP, hint: CXX=/opt/rocm/llvm/bin/clang++") - endif() - - find_package(hip REQUIRED) - find_package(hipblas REQUIRED) - find_package(rocblas REQUIRED) - - message(STATUS "HIP and hipBLAS found") - - set(GGML_HEADERS_ROCM ggml-cuda.h) - - file(GLOB GGML_SOURCES_ROCM "ggml-cuda/*.cu") - list(APPEND GGML_SOURCES_ROCM "ggml-cuda.cu") - - add_compile_definitions(GGML_USE_HIPBLAS GGML_USE_CUDA) - - if (LLAMA_HIP_UMA) - add_compile_definitions(GGML_HIP_UMA) - endif() - - if (LLAMA_CUDA_FORCE_DMMV) - add_compile_definitions(GGML_CUDA_FORCE_DMMV) - endif() - - if (LLAMA_CUDA_FORCE_MMQ) - add_compile_definitions(GGML_CUDA_FORCE_MMQ) - endif() - - if (LLAMA_CUDA_NO_PEER_COPY) - add_compile_definitions(GGML_CUDA_NO_PEER_COPY) - endif() - - add_compile_definitions(GGML_CUDA_DMMV_X=${LLAMA_CUDA_DMMV_X}) - add_compile_definitions(GGML_CUDA_MMV_Y=${LLAMA_CUDA_MMV_Y}) - add_compile_definitions(K_QUANTS_PER_ITERATION=${LLAMA_CUDA_KQUANTS_ITER}) - - set_source_files_properties(${GGML_SOURCES_ROCM} PROPERTIES LANGUAGE CXX) - - if (LLAMA_STATIC) - message(FATAL_ERROR "Static linking not supported for HIP/ROCm") - endif() - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} hip::device PUBLIC hip::host roc::rocblas roc::hipblas) -endif() - -if (LLAMA_SYCL) - if (NOT LLAMA_SYCL_TARGET MATCHES "^(INTEL|NVIDIA)$") - message(FATAL_ERROR "Invalid backend chosen, supported options are INTEL or NVIDIA") - endif() - - if ( NOT DEFINED ENV{ONEAPI_ROOT}) - message(FATAL_ERROR "Not detect ENV {ONEAPI_ROOT}, please install oneAPI & source it, like: source /opt/intel/oneapi/setvars.sh") - endif() - #todo: AOT - - find_package(IntelSYCL REQUIRED) - - message(STATUS "SYCL found") - - add_compile_definitions(GGML_USE_SYCL) - - if (LLAMA_SYCL_F16) - add_compile_definitions(GGML_SYCL_F16) - endif() - - add_compile_options(-I./) #include DPCT - add_compile_options(-I/${SYCL_INCLUDE_DIR}) - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl -L${MKLROOT}/lib") - if (LLAMA_SYCL_TARGET STREQUAL "NVIDIA") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl-targets=nvptx64-nvidia-cuda") - endif() - - set(GGML_HEADERS_SYCL ggml-sycl.h) - set(GGML_SOURCES_SYCL ggml-sycl.cpp) - - if (WIN32) - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl sycl7 OpenCL mkl_sycl_blas_dll.lib mkl_intel_ilp64_dll.lib mkl_sequential_dll.lib mkl_core_dll.lib) - else() - if (LLAMA_SYCL_TARGET STREQUAL "INTEL") - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl OpenCL mkl_core pthread m dl mkl_sycl_blas mkl_intel_ilp64 mkl_tbb_thread) - elseif (LLAMA_SYCL_TARGET STREQUAL "NVIDIA") - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl pthread m dl onemkl) - endif() - endif() -endif() - -if (LLAMA_KOMPUTE) - add_compile_definitions(VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1) - find_package(Vulkan COMPONENTS glslc REQUIRED) - find_program(glslc_executable NAMES glslc HINTS Vulkan::glslc) - if (NOT glslc_executable) - message(FATAL_ERROR "glslc not found") - endif() - - function(compile_shader) - set(options) - set(oneValueArgs) - set(multiValueArgs SOURCES) - cmake_parse_arguments(compile_shader "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - foreach(source ${compile_shader_SOURCES}) - get_filename_component(filename ${source} NAME) - set(spv_file ${filename}.spv) - add_custom_command( - OUTPUT ${spv_file} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${source} - ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/common.comp - ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_getrows.comp - ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_mul_mv_q_n_pre.comp - ${CMAKE_CURRENT_SOURCE_DIR}/kompute-shaders/op_mul_mv_q_n.comp - COMMAND ${glslc_executable} --target-env=vulkan1.2 -o ${spv_file} ${CMAKE_CURRENT_SOURCE_DIR}/${source} - COMMENT "Compiling ${source} to ${spv_file}" - ) - - get_filename_component(RAW_FILE_NAME ${spv_file} NAME) - set(FILE_NAME "shader${RAW_FILE_NAME}") - string(REPLACE ".comp.spv" ".h" HEADER_FILE ${FILE_NAME}) - string(TOUPPER ${HEADER_FILE} HEADER_FILE_DEFINE) - string(REPLACE "." "_" HEADER_FILE_DEFINE "${HEADER_FILE_DEFINE}") - set(OUTPUT_HEADER_FILE "${HEADER_FILE}") - message(STATUS "${HEADER_FILE} generating ${HEADER_FILE_DEFINE}") - if(CMAKE_GENERATOR MATCHES "Visual Studio") - add_custom_command( - OUTPUT ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "/*THIS FILE HAS BEEN AUTOMATICALLY GENERATED - DO NOT EDIT*/" > ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#ifndef ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "namespace kp {" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "namespace shader_data {" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_BINARY_DIR}/bin/$/xxd -i ${RAW_FILE_NAME} >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "}}" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#endif // define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - DEPENDS ${spv_file} xxd - COMMENT "Converting to hpp: ${FILE_NAME} ${CMAKE_BINARY_DIR}/bin/$/xxd" - ) - else() - add_custom_command( - OUTPUT ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "/*THIS FILE HAS BEEN AUTOMATICALLY GENERATED - DO NOT EDIT*/" > ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#ifndef ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "namespace kp {" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "namespace shader_data {" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_BINARY_DIR}/bin/xxd -i ${RAW_FILE_NAME} >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo "}}" >> ${OUTPUT_HEADER_FILE} - COMMAND ${CMAKE_COMMAND} -E echo \"\#endif // define ${HEADER_FILE_DEFINE}\" >> ${OUTPUT_HEADER_FILE} - DEPENDS ${spv_file} xxd - COMMENT "Converting to hpp: ${FILE_NAME} ${CMAKE_BINARY_DIR}/bin/xxd" - ) - endif() - endforeach() - endfunction() - - if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/kompute/CMakeLists.txt") - message(STATUS "Kompute found") - set(KOMPUTE_OPT_LOG_LEVEL Error CACHE STRING "Kompute log level") - add_subdirectory(kompute) - - # Compile our shaders - compile_shader(SOURCES - kompute-shaders/op_scale.comp - kompute-shaders/op_scale_8.comp - kompute-shaders/op_add.comp - kompute-shaders/op_addrow.comp - kompute-shaders/op_mul.comp - kompute-shaders/op_silu.comp - kompute-shaders/op_relu.comp - kompute-shaders/op_gelu.comp - kompute-shaders/op_softmax.comp - kompute-shaders/op_norm.comp - kompute-shaders/op_rmsnorm.comp - kompute-shaders/op_diagmask.comp - kompute-shaders/op_mul_mat_mat_f32.comp - kompute-shaders/op_mul_mat_f16.comp - kompute-shaders/op_mul_mat_q8_0.comp - kompute-shaders/op_mul_mat_q4_0.comp - kompute-shaders/op_mul_mat_q4_1.comp - kompute-shaders/op_mul_mat_q6_k.comp - kompute-shaders/op_getrows_f16.comp - kompute-shaders/op_getrows_q4_0.comp - kompute-shaders/op_getrows_q4_1.comp - kompute-shaders/op_getrows_q6_k.comp - kompute-shaders/op_rope_f16.comp - kompute-shaders/op_rope_f32.comp - kompute-shaders/op_cpy_f16_f16.comp - kompute-shaders/op_cpy_f16_f32.comp - kompute-shaders/op_cpy_f32_f16.comp - kompute-shaders/op_cpy_f32_f32.comp - ) - - # Create a custom target for our generated shaders - add_custom_target(generated_shaders DEPENDS - shaderop_scale.h - shaderop_scale_8.h - shaderop_add.h - shaderop_addrow.h - shaderop_mul.h - shaderop_silu.h - shaderop_relu.h - shaderop_gelu.h - shaderop_softmax.h - shaderop_norm.h - shaderop_rmsnorm.h - shaderop_diagmask.h - shaderop_mul_mat_mat_f32.h - shaderop_mul_mat_f16.h - shaderop_mul_mat_q8_0.h - shaderop_mul_mat_q4_0.h - shaderop_mul_mat_q4_1.h - shaderop_mul_mat_q6_k.h - shaderop_getrows_f16.h - shaderop_getrows_q4_0.h - shaderop_getrows_q4_1.h - shaderop_getrows_q6_k.h - shaderop_rope_f16.h - shaderop_rope_f32.h - shaderop_cpy_f16_f16.h - shaderop_cpy_f16_f32.h - shaderop_cpy_f32_f16.h - shaderop_cpy_f32_f32.h - ) - - # Create a custom command that depends on the generated_shaders - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp - COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp - DEPENDS generated_shaders - COMMENT "Ensuring shaders are generated before compiling ggml-kompute.cpp" - ) - - # Add the stamp to the main sources to ensure dependency tracking - set(GGML_SOURCES_KOMPUTE ggml-kompute.cpp ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp) - set(GGML_HEADERS_KOMPUTE ggml-kompute.h ${CMAKE_CURRENT_BINARY_DIR}/ggml-kompute.stamp) - - add_compile_definitions(GGML_USE_KOMPUTE) - - set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} kompute) - set(LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${CMAKE_BINARY_DIR}) - else() - message(WARNING "Kompute not found") - endif() -endif() - -if (LLAMA_CPU_HBM) - find_library(memkind memkind REQUIRED) - - add_compile_definitions(GGML_USE_CPU_HBM) - - target_link_libraries(ggml PUBLIC memkind) -endif() - -if (LLAMA_PERF) - add_compile_definitions(GGML_PERF) -endif() - -function(get_flags CCID CCVER) - set(C_FLAGS "") - set(CXX_FLAGS "") - - if (CCID MATCHES "Clang") - set(C_FLAGS -Wunreachable-code-break -Wunreachable-code-return) - set(CXX_FLAGS -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi) - - if ( - (CCID STREQUAL "Clang" AND CCVER VERSION_GREATER_EQUAL 3.8.0) OR - (CCID STREQUAL "AppleClang" AND CCVER VERSION_GREATER_EQUAL 7.3.0) - ) - list(APPEND C_FLAGS -Wdouble-promotion) - endif() - elseif (CCID STREQUAL "GNU") - set(C_FLAGS -Wdouble-promotion) - set(CXX_FLAGS -Wno-array-bounds) - - if (CCVER VERSION_GREATER_EQUAL 7.1.0) - list(APPEND CXX_FLAGS -Wno-format-truncation) - endif() - if (CCVER VERSION_GREATER_EQUAL 8.1.0) - list(APPEND CXX_FLAGS -Wextra-semi) - endif() - endif() - - set(GF_C_FLAGS ${C_FLAGS} PARENT_SCOPE) - set(GF_CXX_FLAGS ${CXX_FLAGS} PARENT_SCOPE) -endfunction() - -if (LLAMA_FATAL_WARNINGS) - if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - list(APPEND C_FLAGS -Werror) - list(APPEND CXX_FLAGS -Werror) - elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - add_compile_options(/WX) - endif() -endif() - -if (LLAMA_ALL_WARNINGS) - if (NOT MSVC) - list(APPEND WARNING_FLAGS -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function) - list(APPEND C_FLAGS -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes - -Werror=implicit-int -Werror=implicit-function-declaration) - list(APPEND CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn) - - list(APPEND C_FLAGS ${WARNING_FLAGS}) - list(APPEND CXX_FLAGS ${WARNING_FLAGS}) - - get_flags(${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}) - - add_compile_options("$<$:${C_FLAGS};${GF_C_FLAGS}>" - "$<$:${CXX_FLAGS};${GF_CXX_FLAGS}>") - else() - # todo : msvc - set(C_FLAGS "") - set(CXX_FLAGS "") - endif() -endif() - -set(CUDA_CXX_FLAGS "") - -if (LLAMA_CUDA) - set(CUDA_FLAGS -use_fast_math) - - if (LLAMA_FATAL_WARNINGS) - list(APPEND CUDA_FLAGS -Werror all-warnings) - endif() - - if (LLAMA_ALL_WARNINGS AND NOT MSVC) - set(NVCC_CMD ${CMAKE_CUDA_COMPILER} .c) - if (NOT CMAKE_CUDA_HOST_COMPILER STREQUAL "") - list(APPEND NVCC_CMD -ccbin ${CMAKE_CUDA_HOST_COMPILER}) - endif() - - execute_process( - COMMAND ${NVCC_CMD} -Xcompiler --version - OUTPUT_VARIABLE CUDA_CCFULLVER - ERROR_QUIET - ) - - if (NOT CUDA_CCFULLVER MATCHES clang) - set(CUDA_CCID "GNU") - execute_process( - COMMAND ${NVCC_CMD} -Xcompiler "-dumpfullversion -dumpversion" - OUTPUT_VARIABLE CUDA_CCVER - ERROR_QUIET - ) - else() - if (CUDA_CCFULLVER MATCHES Apple) - set(CUDA_CCID "AppleClang") - else() - set(CUDA_CCID "Clang") - endif() - string(REGEX REPLACE "^.* version ([0-9.]*).*$" "\\1" CUDA_CCVER ${CUDA_CCFULLVER}) - endif() - - message("-- CUDA host compiler is ${CUDA_CCID} ${CUDA_CCVER}") - - get_flags(${CUDA_CCID} ${CUDA_CCVER}) - list(APPEND CUDA_CXX_FLAGS ${CXX_FLAGS} ${GF_CXX_FLAGS}) # This is passed to -Xcompiler later - endif() - - if (NOT MSVC) - list(APPEND CUDA_CXX_FLAGS -Wno-pedantic) - endif() -endif() - -if (WIN32) - add_compile_definitions(_CRT_SECURE_NO_WARNINGS) - - if (BUILD_SHARED_LIBS) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) - endif() -endif() - -if (LLAMA_LTO) - include(CheckIPOSupported) - check_ipo_supported(RESULT result OUTPUT output) - if (result) - set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) - else() - message(WARNING "IPO is not supported: ${output}") - endif() -endif() - -if (LLAMA_CCACHE) - find_program(LLAMA_CCACHE_FOUND ccache) - if (LLAMA_CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set(ENV{CCACHE_SLOPPINESS} time_macros) - message(STATUS "ccache found, compilation results will be cached. Disable with LLAMA_CCACHE=OFF.") - else() - message(STATUS "Warning: ccache not found - consider installing it for faster compilation or disable this warning with LLAMA_CCACHE=OFF") - endif () -endif() - -# this version of Apple ld64 is buggy -execute_process( - COMMAND ${CMAKE_C_COMPILER} ${CMAKE_EXE_LINKER_FLAGS} -Wl,-v - ERROR_VARIABLE output - OUTPUT_QUIET -) - -if (output MATCHES "dyld-1015\.7") - add_compile_definitions(HAVE_BUGGY_APPLE_LINKER) -endif() - -# Architecture specific -# TODO: probably these flags need to be tweaked on some architectures -# feel free to update the Makefile for your architecture and send a pull request or issue -message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") -if (MSVC) - string(TOLOWER "${CMAKE_GENERATOR_PLATFORM}" CMAKE_GENERATOR_PLATFORM_LWR) - message(STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}") -else () - set(CMAKE_GENERATOR_PLATFORM_LWR "") -endif () - -if (NOT MSVC) - if (LLAMA_STATIC) - add_link_options(-static) - if (MINGW) - add_link_options(-static-libgcc -static-libstdc++) - endif() - endif() - if (LLAMA_GPROF) - add_compile_options(-pg) - endif() -endif() - -set(ARCH_FLAGS "") - -if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR - (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND - CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$")) - message(STATUS "ARM detected") - if (MSVC) - add_compile_definitions(__aarch64__) # MSVC defines _M_ARM64 instead - add_compile_definitions(__ARM_NEON) - add_compile_definitions(__ARM_FEATURE_FMA) - - set(CMAKE_REQUIRED_FLAGS_PREV ${CMAKE_REQUIRED_FLAGS}) - string(JOIN " " CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "/arch:armv8.2") - check_cxx_source_compiles("#include \nint main() { int8x16_t _a, _b; int32x4_t _s = vdotq_s32(_s, _a, _b); return 0; }" GGML_COMPILER_SUPPORT_DOTPROD) - if (GGML_COMPILER_SUPPORT_DOTPROD) - add_compile_definitions(__ARM_FEATURE_DOTPROD) - endif () - check_cxx_source_compiles("#include \nint main() { float16_t _a; float16x8_t _s = vdupq_n_f16(_a); return 0; }" GGML_COMPILER_SUPPORT_FP16_VECTOR_ARITHMETIC) - if (GGML_COMPILER_SUPPORT_FP16_VECTOR_ARITHMETIC) - add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) - endif () - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_PREV}) - else() - check_cxx_compiler_flag(-mfp16-format=ieee COMPILER_SUPPORTS_FP16_FORMAT_I3E) - if (NOT "${COMPILER_SUPPORTS_FP16_FORMAT_I3E}" STREQUAL "") - list(APPEND ARCH_FLAGS -mfp16-format=ieee) - endif() - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6") - # Raspberry Pi 1, Zero - list(APPEND ARCH_FLAGS -mfpu=neon-fp-armv8 -mno-unaligned-access) - endif() - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7") - if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Android") - # Android armeabi-v7a - list(APPEND ARCH_FLAGS -mfpu=neon-vfpv4 -mno-unaligned-access -funsafe-math-optimizations) - else() - # Raspberry Pi 2 - list(APPEND ARCH_FLAGS -mfpu=neon-fp-armv8 -mno-unaligned-access -funsafe-math-optimizations) - endif() - endif() - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv8") - # Android arm64-v8a - # Raspberry Pi 3, 4, Zero 2 (32-bit) - list(APPEND ARCH_FLAGS -mno-unaligned-access) - endif() - endif() -elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LWR MATCHES "^(x86_64|i686|amd64|x64|win32)$" OR - (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND - CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64)$")) - message(STATUS "x86 detected") - if (MSVC) - # instruction set detection for MSVC only - if (LLAMA_NATIVE) - include(${llama.cpp_SOURCE_DIR}/cmake/FindSIMD.cmake) - endif () - if (LLAMA_AVX512) - list(APPEND ARCH_FLAGS /arch:AVX512) - # MSVC has no compile-time flags enabling specific - # AVX512 extensions, neither it defines the - # macros corresponding to the extensions. - # Do it manually. - if (LLAMA_AVX512_VBMI) - add_compile_definitions($<$:__AVX512VBMI__>) - add_compile_definitions($<$:__AVX512VBMI__>) - endif() - if (LLAMA_AVX512_VNNI) - add_compile_definitions($<$:__AVX512VNNI__>) - add_compile_definitions($<$:__AVX512VNNI__>) - endif() - elseif (LLAMA_AVX2) - list(APPEND ARCH_FLAGS /arch:AVX2) - elseif (LLAMA_AVX) - list(APPEND ARCH_FLAGS /arch:AVX) - endif() - else() - if (LLAMA_NATIVE) - list(APPEND ARCH_FLAGS -march=native) - endif() - if (LLAMA_F16C) - list(APPEND ARCH_FLAGS -mf16c) - endif() - if (LLAMA_FMA) - list(APPEND ARCH_FLAGS -mfma) - endif() - if (LLAMA_AVX) - list(APPEND ARCH_FLAGS -mavx) - endif() - if (LLAMA_AVX2) - list(APPEND ARCH_FLAGS -mavx2) - endif() - if (LLAMA_AVX512) - list(APPEND ARCH_FLAGS -mavx512f) - list(APPEND ARCH_FLAGS -mavx512bw) - endif() - if (LLAMA_AVX512_VBMI) - list(APPEND ARCH_FLAGS -mavx512vbmi) - endif() - if (LLAMA_AVX512_VNNI) - list(APPEND ARCH_FLAGS -mavx512vnni) - endif() - endif() -elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") - message(STATUS "PowerPC detected") - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le") - list(APPEND ARCH_FLAGS -mcpu=powerpc64le) - else() - list(APPEND ARCH_FLAGS -mcpu=native -mtune=native) - #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be) - endif() -else() - message(STATUS "Unknown architecture") -endif() - -add_compile_options("$<$:${ARCH_FLAGS}>") -add_compile_options("$<$:${ARCH_FLAGS}>") - -if (LLAMA_CUDA) - list(APPEND CUDA_CXX_FLAGS ${ARCH_FLAGS}) - list(JOIN CUDA_CXX_FLAGS " " CUDA_CXX_FLAGS_JOINED) # pass host compiler flags as a single argument - if (NOT CUDA_CXX_FLAGS_JOINED STREQUAL "") - list(APPEND CUDA_FLAGS -Xcompiler ${CUDA_CXX_FLAGS_JOINED}) - endif() - add_compile_options("$<$:${CUDA_FLAGS}>") -endif() - -if (MINGW) - # Target Windows 8 for PrefetchVirtualMemory - add_compile_definitions(_WIN32_WINNT=${LLAMA_WIN_VER}) -endif() - -# -# POSIX conformance -# - -# clock_gettime came in POSIX.1b (1993) -# CLOCK_MONOTONIC came in POSIX.1-2001 / SUSv3 as optional -# posix_memalign came in POSIX.1-2001 / SUSv3 -# M_PI is an XSI extension since POSIX.1-2001 / SUSv3, came in XPG1 (1985) -add_compile_definitions(_XOPEN_SOURCE=600) - -# Somehow in OpenBSD whenever POSIX conformance is specified -# some string functions rely on locale_t availability, -# which was introduced in POSIX.1-2008, forcing us to go higher -if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - remove_definitions(-D_XOPEN_SOURCE=600) - add_compile_definitions(_XOPEN_SOURCE=700) -endif() - -# Data types, macros and functions related to controlling CPU affinity and -# some memory allocation are available on Linux through GNU extensions in libc -if (CMAKE_SYSTEM_NAME MATCHES "Linux") - add_compile_definitions(_GNU_SOURCE) -endif() - -# RLIMIT_MEMLOCK came in BSD, is not specified in POSIX.1, -# and on macOS its availability depends on enabling Darwin extensions -# similarly on DragonFly, enabling BSD extensions is necessary -if ( - CMAKE_SYSTEM_NAME MATCHES "Darwin" OR - CMAKE_SYSTEM_NAME MATCHES "iOS" OR - CMAKE_SYSTEM_NAME MATCHES "tvOS" OR - CMAKE_SYSTEM_NAME MATCHES "DragonFly" -) - add_compile_definitions(_DARWIN_C_SOURCE) -endif() - -# alloca is a non-standard interface that is not visible on BSDs when -# POSIX conformance is specified, but not all of them provide a clean way -# to enable it in such cases -if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - add_compile_definitions(__BSD_VISIBLE) -endif() -if (CMAKE_SYSTEM_NAME MATCHES "NetBSD") - add_compile_definitions(_NETBSD_SOURCE) -endif() -if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD") - add_compile_definitions(_BSD_SOURCE) -endif() From 086b7045d0137862fc09ec6996be4f35f203e802 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:41:00 +0200 Subject: [PATCH 205/384] fix unit tests model download --- src/test/java/de/kherud/llama/LlamaModelTest.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index f5e1b663..01d37c3d 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -55,14 +55,6 @@ public void testGenerateAnswer() { @Test public void testGenerateInfill() { - model.close(); - model = new LlamaModel( - new ModelParameters() - .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setModelUrl("https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setNGpuLayers(43) -// .setEmbedding(true) - ); Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") From 63110e377ce54040293ea311c33f1608a9269e7d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:41:49 +0200 Subject: [PATCH 206/384] update pom version 3.0.0 -> 3.0.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8cee77f7..66b9eb6c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.0.0 + 3.0.1 jar ${project.groupId}:${project.artifactId} From 9b9eaf02b64eddcec15bd559718302a6b811e0bf Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:52:51 +0200 Subject: [PATCH 207/384] remove test print statements --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 01d37c3d..f8b6a5fc 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -46,7 +46,6 @@ public void testGenerateAnswer() { int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { - System.out.println(ignored); generated++; } // todo: currently, after generating nPredict tokens, there is an additional empty output @@ -69,7 +68,6 @@ public void testGenerateInfill() { int generated = 0; for (LlamaModel.Output ignored : model.generate(params)) { generated++; - System.out.println(ignored); } Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } From c5e1e387fd062889595e69bbc733ce0671b1604f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 21 Apr 2024 17:53:13 +0200 Subject: [PATCH 208/384] update readme pom version 3.0.0 -> 3.0.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 58566795..7fbc6e44 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.0.0 + 3.0.1 ``` From b378d288b076aaaaf7b3b55ce2068e3d9c206875 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 6 May 2024 21:47:32 +0200 Subject: [PATCH 209/384] upgrade to llama.cpp b2797 Signed-off-by: Konstantin Herud --- CMakeLists.txt | 2 +- README.md | 6 ++-- pom.xml | 2 +- src/main/cpp/server.hpp | 33 ++++++++++++++++--- .../java/de/kherud/llama/ModelParameters.java | 9 +++++ 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1873c20..395f37ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2702 + GIT_TAG b2797 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/README.md b/README.md index 7fbc6e44..afedb0fc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2702](https://img.shields.io/badge/llama.cpp-%23b2702-informational) +![llama.cpp b2797](https://img.shields.io/badge/llama.cpp-%23b2797-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -18,7 +18,7 @@ This repository provides Java bindings for the C++ library. 3. [Android](#importing-in-android) > [!NOTE] -> Now with Llama 3 support +> Now with support for Llama 3, Phi-3, and flash attention ## Quick Start @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.0.1 + 3.0.2 ``` diff --git a/pom.xml b/pom.xml index 66b9eb6c..c111bb7c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.0.1 + 3.0.2 jar ${project.groupId}:${project.artifactId} diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 8295f42a..4c58e548 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -910,7 +910,7 @@ struct server_context slot.sparams.penalize_nl = json_value(data, "penalize_nl", default_sparams.penalize_nl); slot.params.n_keep = json_value(data, "n_keep", slot.params.n_keep); slot.params.n_discard = json_value(data, "n_discard", default_params.n_discard); - slot.params.seed = json_value(data, "seed", default_params.seed); + slot.sparams.seed = json_value(data, "seed", default_sparams.seed); slot.sparams.n_probs = json_value(data, "n_probs", default_sparams.n_probs); slot.sparams.min_keep = json_value(data, "min_keep", default_sparams.min_keep); slot.sparams.grammar = json_value(data, "grammar", default_sparams.grammar); @@ -1209,7 +1209,7 @@ struct server_context bool process_token(completion_token_output &result, server_slot &slot) { // remember which tokens were sampled - used for repetition penalties during sampling - const std::string token_str = llama_token_to_piece(ctx, result.tok); + const std::string token_str = llama_token_to_piece(ctx, result.tok, false); slot.sampled = result.tok; // search stop word and delete it @@ -1314,6 +1314,27 @@ struct server_context LOG_VERBOSE("eos token found", {}); } + auto n_ctx_train = llama_n_ctx_train(model); + if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.ga_n == 1 + && slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) { + LOG_WARNING("n_predict is not set and self-context extend is disabled." + " Limiting generated tokens to n_ctx_train to avoid EOS-less generation infinite loop", { + { "id_slot", slot.id }, + { "params.n_predict", slot.params.n_predict }, + { "slot.n_prompt_tokens", slot.n_prompt_tokens }, + { "slot.n_decoded", slot.n_decoded }, + { "slot.n_predict", slot.n_predict }, + { "n_slots", params.n_parallel }, + { "slot.n_ctx", slot.n_ctx }, + { "n_ctx", n_ctx }, + { "n_ctx_train", n_ctx_train }, + { "ga_n", slot.ga_n }, + }); + slot.truncated = true; + slot.stopped_limit = true; + slot.has_next_token = false; // stop prediction + } + LOG_VERBOSE("next token", { {"id_slot", slot.id}, {"id_task", slot.id_task}, @@ -1475,8 +1496,9 @@ struct server_context { const std::vector stop_word_toks = llama_tokenize(ctx, slot.stopping_word, false); + size_t safe_offset = std::min(slot.generated_token_probs.size(), stop_word_toks.size()); probs = std::vector(slot.generated_token_probs.begin(), - slot.generated_token_probs.end() - stop_word_toks.size()); + slot.generated_token_probs.end() - safe_offset); } else { @@ -2313,7 +2335,7 @@ struct server_context }); // process the created batch of tokens - for (int32_t i = 0; i < (int32_t)batch.n_tokens; i += n_batch) + for (int32_t i = 0; i < batch.n_tokens; i += n_batch) { const int32_t n_tokens = std::min(n_batch, batch.n_tokens - i); @@ -2534,6 +2556,7 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.embedding = json_value(jparams, "embedding", default_params.embedding); params.escape = json_value(jparams, "escape", default_params.escape); params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); + params.flash_attn = json_value(jparams, "flash_attn", default_params.flash_attn); params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); params.ignore_eos = json_value(jparams, "ignore_eos", default_params.ignore_eos); params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); @@ -2596,4 +2619,6 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); #endif } + + gpt_params_handle_model_default(params); } diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index da38d409..8257dc22 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -61,6 +61,7 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_LORA_BASE = "lora_base"; private static final String PARAM_EMBEDDING = "embedding"; private static final String PARAM_CONT_BATCHING = "cont_batching"; + private static final String PARAM_FLASH_ATTENTION = "flash_attn"; private static final String PARAM_INPUT_PREFIX_BOS = "input_prefix_bos"; private static final String PARAM_IGNORE_EOS = "ignore_eos"; private static final String PARAM_USE_MMAP = "use_mmap"; @@ -526,6 +527,14 @@ public ModelParameters setContinuousBatching(boolean contBatching) { return this; } + /** + * Whether to enable Flash Attention (default: disabled) + */ + public ModelParameters setFlashAttention(boolean flashAttention) { + parameters.put(PARAM_FLASH_ATTENTION, String.valueOf(flashAttention)); + return this; + } + /** * Whether to add prefix BOS to user inputs, preceding the `--in-prefix` string */ From f467cc54a96ea34a305834c3aa29688e14e82127 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 6 May 2024 22:08:09 +0200 Subject: [PATCH 210/384] update macos release workflow Signed-off-by: Konstantin Herud --- .github/workflows/release.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4b58b7d8..e24953e7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -51,7 +51,7 @@ jobs: build-macos-native: name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} - runs-on: macos-latest + runs-on: ${{ matrix.target.runner }} strategy: fail-fast: false matrix: @@ -59,11 +59,13 @@ jobs: - { os: Mac, arch: x86_64, - cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL_EMBED_LIBRARY=ON' + runner: macos-latest, + cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF' } - { os: Mac, arch: aarch64, + runner: macos-14, cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL_EMBED_LIBRARY=ON' } steps: From b0f28b3a4e60a6b9e087b07a4604efcb2c4a5f58 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 6 May 2024 22:19:56 +0200 Subject: [PATCH 211/384] remove osx architecture from release workflow Signed-off-by: Konstantin Herud --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e24953e7..c06fec7b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -60,13 +60,13 @@ jobs: os: Mac, arch: x86_64, runner: macos-latest, - cmake: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DLLAMA_METAL=OFF' + cmake: '-DLLAMA_METAL=OFF' } - { os: Mac, arch: aarch64, runner: macos-14, - cmake: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DLLAMA_METAL_EMBED_LIBRARY=ON' + cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON' } steps: - uses: actions/checkout@v4 From ea3934df6a31baa0d5a160400dd63e400e794434 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:09:39 +0200 Subject: [PATCH 212/384] update to llama.cpp b2885 --- CMakeLists.txt | 2 +- src/main/cpp/server.hpp | 110 ++++++++++++++++++++++++++-------------- src/main/cpp/utils.hpp | 38 +++++++------- 3 files changed, 93 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 395f37ee..29fca914 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2797 + GIT_TAG b2885 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 4c58e548..84fb19d0 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -714,6 +714,17 @@ struct server_context llama_free_model(model); model = nullptr; } + + // Clear any sampling context + for (server_slot &slot : slots) + { + if (slot.ctx_sampling != nullptr) + { + llama_sampling_free(slot.ctx_sampling); + } + } + + llama_batch_free(batch); } bool load_model(const gpt_params ¶ms_) @@ -1185,16 +1196,12 @@ struct server_context system_need_update = false; } - void system_prompt_set(const json &sys_props) + bool system_prompt_set(const std::string &sys_prompt) { - system_prompt = sys_props.value("prompt", ""); - name_user = sys_props.value("anti_prompt", ""); - name_assistant = sys_props.value("assistant_name", ""); + system_prompt = sys_prompt; LOG_VERBOSE("system prompt process", { {"system_prompt", system_prompt}, - {"name_user", name_user}, - {"name_assistant", name_assistant}, }); // release all slots @@ -1204,6 +1211,7 @@ struct server_context } system_need_update = true; + return true; } bool process_token(completion_token_output &result, server_slot &slot) @@ -1315,23 +1323,25 @@ struct server_context } auto n_ctx_train = llama_n_ctx_train(model); - if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.ga_n == 1 - && slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) { + if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.ga_n == 1 && + slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) + { LOG_WARNING("n_predict is not set and self-context extend is disabled." - " Limiting generated tokens to n_ctx_train to avoid EOS-less generation infinite loop", { - { "id_slot", slot.id }, - { "params.n_predict", slot.params.n_predict }, - { "slot.n_prompt_tokens", slot.n_prompt_tokens }, - { "slot.n_decoded", slot.n_decoded }, - { "slot.n_predict", slot.n_predict }, - { "n_slots", params.n_parallel }, - { "slot.n_ctx", slot.n_ctx }, - { "n_ctx", n_ctx }, - { "n_ctx_train", n_ctx_train }, - { "ga_n", slot.ga_n }, - }); - slot.truncated = true; - slot.stopped_limit = true; + " Limiting generated tokens to n_ctx_train to avoid EOS-less generation infinite loop", + { + {"id_slot", slot.id}, + {"params.n_predict", slot.params.n_predict}, + {"slot.n_prompt_tokens", slot.n_prompt_tokens}, + {"slot.n_decoded", slot.n_decoded}, + {"slot.n_predict", slot.n_predict}, + {"n_slots", params.n_parallel}, + {"slot.n_ctx", slot.n_ctx}, + {"n_ctx", n_ctx}, + {"n_ctx_train", n_ctx_train}, + {"ga_n", slot.ga_n}, + }); + slot.truncated = true; + slot.stopped_limit = true; slot.has_next_token = false; // stop prediction } @@ -1642,7 +1652,7 @@ struct server_context for (int i = 0; i < prompt_count; i++) { json subtask_data = multiprompt_task.data; - subtask_data["prompt"] = subtask_data["prompt"][i]; + subtask_data["prompt"] = subtask_data.at("prompt")[i]; // subtasks inherit everything else (infill mode, embedding mode, etc.) request_completion(subtask_ids[i], id_multi, subtask_data, multiprompt_task.infill, @@ -1666,7 +1676,8 @@ struct server_context if (task.data.contains("system_prompt")) { - system_prompt_set(task.data["system_prompt"]); + std::string sys_prompt = json_value(task.data, "system_prompt", std::string()); + system_prompt_set(sys_prompt); for (server_slot &slot : slots) { @@ -1780,7 +1791,7 @@ struct server_context } break; case SERVER_TASK_TYPE_SLOT_SAVE: { - int id_slot = task.data["id_slot"]; + int id_slot = task.data.at("id_slot"); server_slot *slot = get_slot(id_slot); if (slot == nullptr) { @@ -1791,8 +1802,8 @@ struct server_context const size_t token_count = slot->cache_tokens.size(); const int64_t t_start = ggml_time_us(); - std::string filename = task.data["filename"]; - std::string filepath = task.data["filepath"]; + std::string filename = task.data.at("filename"); + std::string filepath = task.data.at("filepath"); const size_t nwrite = llama_state_seq_save_file(ctx, filepath.c_str(), slot->id + 1, slot->cache_tokens.data(), token_count); @@ -1813,7 +1824,7 @@ struct server_context } break; case SERVER_TASK_TYPE_SLOT_RESTORE: { - int id_slot = task.data["id_slot"]; + int id_slot = task.data.at("id_slot"); server_slot *slot = get_slot(id_slot); if (slot == nullptr) { @@ -1823,8 +1834,8 @@ struct server_context const int64_t t_start = ggml_time_us(); - std::string filename = task.data["filename"]; - std::string filepath = task.data["filepath"]; + std::string filename = task.data.at("filename"); + std::string filepath = task.data.at("filepath"); slot->cache_tokens.resize(slot->n_ctx); size_t token_count = 0; @@ -1855,7 +1866,7 @@ struct server_context } break; case SERVER_TASK_TYPE_SLOT_ERASE: { - int id_slot = task.data["id_slot"]; + int id_slot = task.data.at("id_slot"); server_slot *slot = get_slot(id_slot); if (slot == nullptr) { @@ -2462,16 +2473,37 @@ struct server_context llama_token_data_array cur_p = {slot.ctx_sampling->cur.data(), slot.ctx_sampling->cur.size(), false}; result.tok = id; - const int32_t n_probs = slot.sparams.n_probs; - if (slot.sparams.temp <= 0 && n_probs > 0) + const size_t n_probs = std::min(cur_p.size, (size_t)slot.sparams.n_probs); + if (n_probs > 0) { - // for llama_sample_token_greedy we need to sort candidates - llama_sample_softmax(ctx, &cur_p); - } + const size_t n_valid = slot.ctx_sampling->n_valid; - for (size_t i = 0; i < std::min(cur_p.size, (size_t)n_probs); ++i) - { - result.probs.push_back({cur_p.data[i].id, cur_p.data[i].p}); + // Make sure at least n_probs top tokens are at the front of the vector: + if (slot.sparams.temp == 0.0f && n_probs > n_valid) + { + llama_sample_top_k(ctx, &cur_p, n_probs, 0); + } + + if (slot.sparams.temp == 0.0f) + { + // With greedy sampling the probabilities have possibly not been calculated. + for (size_t i = 0; i < n_probs; ++i) + { + result.probs.push_back({cur_p.data[i].id, i == 0 ? 1.0f : 0.0f}); + } + } + else + { + for (size_t i = 0; i < n_probs; ++i) + { + result.probs.push_back({ + cur_p.data[i].id, + i >= n_valid + ? 0.0f + : cur_p.data[i].p // Tokens filtered out due to e.g. top_k have 0 probability. + }); + } + } } if (!process_token(result, slot)) diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 30bb0dca..57391c40 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -43,7 +43,7 @@ extern bool server_log_json; #define LOG_INFO(MSG, ...) server_log("INFO", __func__, __LINE__, MSG, __VA_ARGS__) static inline void server_log(const char *level, const char *function, int line, const char *message, - const nlohmann::ordered_json &extra); + const json &extra); template static T json_value(const json &body, const std::string &key, const T &default_value) { @@ -52,13 +52,14 @@ template static T json_value(const json &body, const std::string &k { try { - return body.value(key, default_value); + return body.at(key); } - catch (nlohmann::json_abi_v3_11_3::detail::type_error const &) + catch (NLOHMANN_JSON_NAMESPACE::detail::type_error const &) { - std::string message = "Wrong type supplied for parameter '" + key + "'. Expected '" + - typeid(default_value).name() + "', using default value."; - server_log("WARN", __func__, __LINE__, message.c_str(), body); + std::stringstream ss; + ss << "Wrong type supplied for parameter '" << key << "'. Expected '" << json(default_value).type_name() + << "', using default value."; + LOG_WARNING(ss.str().c_str(), body); return default_value; } } @@ -68,12 +69,11 @@ template static T json_value(const json &body, const std::string &k } } -static inline void server_log(const char *level, const char *function, int line, const char *message, - const nlohmann::ordered_json &extra) +static inline void server_log(const char *level, const char *function, int line, const char *message, const json &extra) { std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); - json log = nlohmann::ordered_json{ + json log = json{ {"tid", ss_tid.str()}, {"timestamp", time(nullptr)}, }; @@ -411,25 +411,21 @@ static json oaicompat_completion_params_parse(const struct llama_model *model, llama_params["presence_penalty"] = json_value(body, "presence_penalty", 0.0); llama_params["seed"] = json_value(body, "seed", LLAMA_DEFAULT_SEED); llama_params["stream"] = json_value(body, "stream", false); - llama_params["temperature"] = json_value(body, "temperature", 0.0); + llama_params["temperature"] = json_value(body, "temperature", 1.0); llama_params["top_p"] = json_value(body, "top_p", 1.0); // Apply chat template to the list of messages - llama_params["prompt"] = format_chat(model, chat_template, body["messages"]); + llama_params["prompt"] = format_chat(model, chat_template, body.at("messages")); // Handle "stop" field - if (body.contains("stop") && body["stop"].is_string()) + if (body.contains("stop") && body.at("stop").is_string()) { - llama_params["stop"] = json::array({body["stop"].get()}); + llama_params["stop"] = json::array({body.at("stop").get()}); } else { llama_params["stop"] = json_value(body, "stop", json::array()); } - // Some chat templates don't use EOS token to stop generation - // We must add their end sequences to list of stop words - llama_params["stop"].push_back("<|im_end|>"); // chatml - llama_params["stop"].push_back(""); // gemma // Handle "response_format" field if (body.contains("response_format")) @@ -626,6 +622,14 @@ static std::vector format_partial_response_oaicompat(json result, const st {"id", completion_id}, {"model", modelname}, {"object", "chat.completion.chunk"}}; + if (!finish_reason.empty()) + { + int num_tokens_predicted = json_value(result, "tokens_predicted", 0); + int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); + ret.push_back({"usage", json{{"completion_tokens", num_tokens_predicted}, + {"prompt_tokens", num_prompt_tokens}, + {"total_tokens", num_tokens_predicted + num_prompt_tokens}}}); + } return std::vector({ret}); } From 9cf237a74100202b383b4b0fffca08a1649df125 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:44:58 +0200 Subject: [PATCH 213/384] add LlamaOutput, LlamaIterable, and LlamaIterator --- .../java/de/kherud/llama/LlamaIterable.java | 15 ++++ .../java/de/kherud/llama/LlamaIterator.java | 48 +++++++++++ src/main/java/de/kherud/llama/LlamaModel.java | 80 +++---------------- .../java/de/kherud/llama/LlamaOutput.java | 39 +++++++++ .../java/de/kherud/llama/LlamaModelTest.java | 6 +- src/test/java/examples/GrammarExample.java | 3 +- src/test/java/examples/InfillExample.java | 3 +- src/test/java/examples/MainExample.java | 3 +- 8 files changed, 120 insertions(+), 77 deletions(-) create mode 100644 src/main/java/de/kherud/llama/LlamaIterable.java create mode 100644 src/main/java/de/kherud/llama/LlamaIterator.java create mode 100644 src/main/java/de/kherud/llama/LlamaOutput.java diff --git a/src/main/java/de/kherud/llama/LlamaIterable.java b/src/main/java/de/kherud/llama/LlamaIterable.java new file mode 100644 index 00000000..7e6dff89 --- /dev/null +++ b/src/main/java/de/kherud/llama/LlamaIterable.java @@ -0,0 +1,15 @@ +package de.kherud.llama; + +import org.jetbrains.annotations.NotNull; + +/** + * An iterable used by {@link LlamaModel#generate(InferenceParameters)} that specifically returns a {@link LlamaIterator}. + */ +@FunctionalInterface +public interface LlamaIterable extends Iterable { + + @NotNull + @Override + LlamaIterator iterator(); + +} diff --git a/src/main/java/de/kherud/llama/LlamaIterator.java b/src/main/java/de/kherud/llama/LlamaIterator.java new file mode 100644 index 00000000..fdff993b --- /dev/null +++ b/src/main/java/de/kherud/llama/LlamaIterator.java @@ -0,0 +1,48 @@ +package de.kherud.llama; + +import java.lang.annotation.Native; +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * This iterator is used by {@link LlamaModel#generate(InferenceParameters)}. In addition to implementing {@link Iterator}, + * it allows to cancel ongoing inference (see {@link #cancel()}). + */ +public final class LlamaIterator implements Iterator { + + private final LlamaModel model; + private final int taskId; + + @Native + @SuppressWarnings("FieldMayBeFinal") + private boolean hasNext = true; + + LlamaIterator(LlamaModel model, InferenceParameters parameters) { + this.model = model; + parameters.setStream(true); + taskId = model.requestCompletion(parameters.toString()); + } + + @Override + public boolean hasNext() { + return hasNext; + } + + @Override + public LlamaOutput next() { + if (!hasNext) { + throw new NoSuchElementException(); + } + LlamaOutput output = model.receiveCompletion(taskId); + hasNext = !output.stop; + return output; + } + + /** + * Cancel the ongoing generation process. + */ + public void cancel() { + model.cancelCompletion(taskId); + hasNext = false; + } +} diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index b74c99e5..aa1bb5ad 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -2,11 +2,6 @@ import java.lang.annotation.Native; import java.nio.charset.StandardCharsets; -import java.util.Iterator; -import java.util.Map; -import java.util.NoSuchElementException; - -import org.jetbrains.annotations.NotNull; /** * This class is a wrapper around the llama.cpp functionality. @@ -54,7 +49,7 @@ public LlamaModel(ModelParameters parameters) { public String complete(InferenceParameters parameters) { parameters.setStream(false); int taskId = requestCompletion(parameters.toString()); - Output output = receiveCompletion(taskId); + LlamaOutput output = receiveCompletion(taskId); return output.text; } @@ -64,8 +59,8 @@ public String complete(InferenceParameters parameters) { * * @return iterable LLM outputs */ - public Iterable generate(InferenceParameters parameters) { - return () -> new LlamaIterator(parameters); + public LlamaIterable generate(InferenceParameters parameters) { + return () -> new LlamaIterator(this, parameters); } /** @@ -98,79 +93,22 @@ public String decode(int[] tokens) { return new String(bytes, StandardCharsets.UTF_8); } -// /** -// * Sets a callback for both Java and C++ log messages. Can be set to {@code null} to disable logging. -// * -// * @param callback a method to call for log messages -// */ -// public static native void setLogger(@Nullable BiConsumer callback); - @Override public void close() { delete(); } // don't overload native methods since the C++ function names get nasty - private native void loadModel(String parameters) throws LlamaException; + native int requestCompletion(String params) throws LlamaException; - private native int requestCompletion(String params) throws LlamaException; + native LlamaOutput receiveCompletion(int taskId) throws LlamaException; - private native Output receiveCompletion(int taskId) throws LlamaException; + native void cancelCompletion(int taskId); - private native byte[] decodeBytes(int[] tokens); + native byte[] decodeBytes(int[] tokens); - private native void delete(); + private native void loadModel(String parameters) throws LlamaException; - /** - * A generated output of the LLM. Note that you have to configure {@link InferenceParameters#setNProbs(int)} - * in order for probabilities to be returned. - */ - public static final class Output { - - @NotNull - public final String text; - @NotNull - public final Map probabilities; - private final boolean stop; - - private Output(byte[] generated, @NotNull Map probabilities, boolean stop) { - this.text = new String(generated, StandardCharsets.UTF_8); - this.probabilities = probabilities; - this.stop = stop; - } - - @Override - public String toString() { - return text; - } - } + private native void delete(); - private final class LlamaIterator implements Iterator { - - private final int taskId; - - @Native - @SuppressWarnings("FieldMayBeFinal") - private boolean hasNext = true; - - private LlamaIterator(InferenceParameters parameters) { - parameters.setStream(true); - taskId = requestCompletion(parameters.toString()); - } - - @Override - public boolean hasNext() { - return hasNext; - } - - @Override - public Output next() { - if (!hasNext) { - throw new NoSuchElementException(); - } - Output output = receiveCompletion(taskId); - hasNext = !output.stop; - return output; - } - } } diff --git a/src/main/java/de/kherud/llama/LlamaOutput.java b/src/main/java/de/kherud/llama/LlamaOutput.java new file mode 100644 index 00000000..365b335e --- /dev/null +++ b/src/main/java/de/kherud/llama/LlamaOutput.java @@ -0,0 +1,39 @@ +package de.kherud.llama; + +import org.jetbrains.annotations.NotNull; + +import java.nio.charset.StandardCharsets; +import java.util.Map; + +/** + * An output of the LLM providing access to the generated text and the associated probabilities. You have to configure + * {@link InferenceParameters#setNProbs(int)} in order for probabilities to be returned. + */ +public final class LlamaOutput { + + /** + * The last bit of generated text that is representable as text (i.e., cannot be individual utf-8 multibyte code + * points). + */ + @NotNull + public final String text; + + /** + * Note, that you have to configure {@link InferenceParameters#setNProbs(int)} in order for probabilities to be returned. + */ + @NotNull + public final Map probabilities; + + final boolean stop; + + LlamaOutput(byte[] generated, @NotNull Map probabilities, boolean stop) { + this.text = new String(generated, StandardCharsets.UTF_8); + this.probabilities = probabilities; + this.stop = stop; + } + + @Override + public String toString() { + return text; + } +} diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index f8b6a5fc..fcdbf4b1 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -45,7 +45,7 @@ public void testGenerateAnswer() { .setTokenIdBias(logitBias); int generated = 0; - for (LlamaModel.Output ignored : model.generate(params)) { + for (LlamaOutput ignored : model.generate(params)) { generated++; } // todo: currently, after generating nPredict tokens, there is an additional empty output @@ -66,7 +66,7 @@ public void testGenerateInfill() { .setSeed(42); int generated = 0; - for (LlamaModel.Output ignored : model.generate(params)) { + for (LlamaOutput ignored : model.generate(params)) { generated++; } Assert.assertTrue(generated > 0 && generated <= nPredict + 1); @@ -78,7 +78,7 @@ public void testGenerateGrammar() { .setGrammar("root ::= (\"a\" | \"b\")+") .setNPredict(nPredict); StringBuilder sb = new StringBuilder(); - for (LlamaModel.Output output : model.generate(params)) { + for (LlamaOutput output : model.generate(params)) { sb.append(output); } String output = sb.toString(); diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index 66ba53f1..a2fec2fb 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -1,5 +1,6 @@ package examples; +import de.kherud.llama.LlamaOutput; import de.kherud.llama.ModelParameters; import de.kherud.llama.InferenceParameters; @@ -16,7 +17,7 @@ public static void main(String... args) { InferenceParameters inferParams = new InferenceParameters("") .setGrammar(grammar); try (LlamaModel model = new LlamaModel(modelParams)) { - for (LlamaModel.Output output : model.generate(inferParams)) { + for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); } } diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index a6926618..b73eeb0f 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -2,6 +2,7 @@ import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; +import de.kherud.llama.LlamaOutput; import de.kherud.llama.ModelParameters; public class InfillExample { @@ -18,7 +19,7 @@ public static void main(String... args) { InferenceParameters inferParams = new InferenceParameters("") .setInputPrefix(prefix) .setInputSuffix(suffix); - for (LlamaModel.Output output : model.generate(inferParams)) { + for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); } System.out.print(suffix); diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index e9c6cb58..65e20c12 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -7,6 +7,7 @@ import de.kherud.llama.InferenceParameters; import de.kherud.llama.LlamaModel; +import de.kherud.llama.LlamaOutput; import de.kherud.llama.ModelParameters; import de.kherud.llama.args.MiroStat; @@ -39,7 +40,7 @@ public static void main(String... args) throws IOException { .setPenalizeNl(true) .setMiroStat(MiroStat.V2) .setStopStrings("User:"); - for (LlamaModel.Output output : model.generate(inferParams)) { + for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); prompt += output; } From eb2dd3898e1b1d9da35eac6392e2726220ca4783 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:45:39 +0200 Subject: [PATCH 214/384] allow to cancel generation --- src/main/cpp/jllama.cpp | 12 ++++++-- src/main/cpp/jllama.h | 28 ++++++++++++------- .../java/de/kherud/llama/LlamaModelTest.java | 16 +++++++++++ 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index d78ccd37..1cd4758f 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -110,9 +110,9 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) // find classes c_llama_model = env->FindClass("de/kherud/llama/LlamaModel"); - c_llama_iterator = env->FindClass("de/kherud/llama/LlamaModel$LlamaIterator"); + c_llama_iterator = env->FindClass("de/kherud/llama/LlamaIterator"); c_standard_charsets = env->FindClass("java/nio/charset/StandardCharsets"); - c_output = env->FindClass("de/kherud/llama/LlamaModel$Output"); + c_output = env->FindClass("de/kherud/llama/LlamaOutput"); c_string = env->FindClass("java/lang/String"); c_hash_map = env->FindClass("java/util/HashMap"); c_map = env->FindClass("java/util/Map"); @@ -498,3 +498,11 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobje llama_backend_free(); delete ctx_server; } + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv *env, jobject obj, jint id_task) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + ctx_server->request_cancel(id_task); + ctx_server->queue_results.remove_waiting_task_id(id_task); +} diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index a9a9ed02..2c0125ac 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -23,14 +23,6 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode (JNIEnv *, jobject, jstring); -/* - * Class: de_kherud_llama_LlamaModel - * Method: loadModel - * Signature: (Ljava/lang/String;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jstring); - /* * Class: de_kherud_llama_LlamaModel * Method: requestCompletion @@ -41,12 +33,20 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion /* * Class: de_kherud_llama_LlamaModel - * Method: receiveGeneration - * Signature: (I)Lde/kherud/llama/LlamaModel/Output; + * Method: receiveCompletion + * Signature: (I)Lde/kherud/llama/LlamaOutput; */ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion (JNIEnv *, jobject, jint); +/* + * Class: de_kherud_llama_LlamaModel + * Method: cancelCompletion + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion + (JNIEnv *, jobject, jint); + /* * Class: de_kherud_llama_LlamaModel * Method: decodeBytes @@ -55,6 +55,14 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes (JNIEnv *, jobject, jintArray); +/* + * Class: de_kherud_llama_LlamaModel + * Method: loadModel + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel + (JNIEnv *, jobject, jstring); + /* * Class: de_kherud_llama_LlamaModel * Method: delete diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index fcdbf4b1..9659f975 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -131,6 +131,22 @@ public void testCompleteGrammar() { Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } + @Test + public void testCancelGenerating() { + InferenceParameters params = new InferenceParameters(prefix).setNPredict(nPredict); + + int generated = 0; + LlamaIterator iterator = model.generate(params).iterator(); + while (iterator.hasNext()) { + iterator.next(); + generated++; + if (generated == 5) { + iterator.cancel(); + } + } + Assert.assertEquals(5, generated); + } + @Test public void testEmbedding() { float[] embedding = model.embed(prefix); From 798e1849143483d827f47bcb862e67adf61d8278 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:47:57 +0200 Subject: [PATCH 215/384] update readme --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index afedb0fc..54da11f5 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ This is a short example on how to use this library: ```java public class Example { - public static void main(String... args) throws IOException { + public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() .setModelFilePath("/path/to/model.gguf") .setNGpuLayers(43); @@ -152,12 +152,12 @@ public class Example { prompt += input; System.out.print("Llama: "); prompt += "\nLlama: "; - InferenceParameters inferParams = new InferenceParameters(prompt) - .setTemperature(0.7f) - .setPenalizeNl(true) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n"); - for (String output : model.generate(inferParams)) { + InferenceParameters inferParams = new InferenceParameters(prompt) + .setTemperature(0.7f) + .setPenalizeNl(true) + .setMirostat(InferenceParameters.MiroStat.V2) + .setAntiPrompt("\n"); + for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); prompt += output; } @@ -180,7 +180,7 @@ ModelParameters modelParams = new ModelParameters().setModelFilePath("/path/to/m InferenceParameters inferParams = new InferenceParameters("Tell me a joke."); try (LlamaModel model = new LlamaModel(modelParams)) { // Stream a response and access more information about each output. - for (String output : model.generate(inferParams)) { + for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); } // Calculate a whole response before returning it. From e9efbde44845f308c866195b965b7917511dbad5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:54:03 +0200 Subject: [PATCH 216/384] re-add macos to ci workflow --- .github/workflows/ci.yml | 47 +++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6001429c..384ee5d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,24 +28,35 @@ jobs: - name: Run tests run: mvn test -# disabled for now, we don't have access to a macos arm64 runner and testing on x86_64 doesn't work -# build-and-test-macos: -# name: macos-latest -# runs-on: macos-latest -# steps: -# - uses: actions/checkout@v4 -# - uses: actions/setup-java@v4 -# with: -# distribution: 'zulu' -# java-version: '11' -# - name: Download model -# run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} -# - name: Build libraries -# run: | -# mvn compile -# .github/build.sh -DLLAMA_METAL_EMBED_LIBRARY=ON -# - name: Run tests -# run: mvn test + build-and-test-macos: + name: ${{ matrix.target.runner }} + runs-on: ${{ matrix.target.runner }} + strategy: + fail-fast: false + matrix: + target: + - { + runner: macos-latest, + cmake: '-DLLAMA_METAL=OFF' + } + - { + runner: macos-14, + cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON' + } + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - name: Build libraries + run: | + mvn compile + .github/build.sh ${{ matrix.target.cmake }} + - name: Run tests + run: mvn test build-and-test-windows: name: windows-latest From 45cb677857f7d7056ac39cad64fc913361feb92a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 20:56:44 +0200 Subject: [PATCH 217/384] ci workflow build library first then download model --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 384ee5d5..53b0f726 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,13 +18,13 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Build libraries # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile .github/build.sh + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test @@ -49,12 +49,12 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Build libraries run: | mvn compile .github/build.sh ${{ matrix.target.cmake }} + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test @@ -67,11 +67,11 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Download model - run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Build libraries run: | mvn compile .github\build.bat + - name: Download model + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests run: mvn test From b1993cc7c37cab1f6fbd5a36f3ed3f84756e27e7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:01:39 +0200 Subject: [PATCH 218/384] ci worfklow disable metal --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53b0f726..8703161c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: } - { runner: macos-14, - cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON' + cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF' } steps: - uses: actions/checkout@v4 From b3264126ad34396a76dfde4e5b35bab3ef33a83b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:01:56 +0200 Subject: [PATCH 219/384] ci workflow print host information --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8703161c..705af944 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,6 +51,7 @@ jobs: java-version: '11' - name: Build libraries run: | + uname -a mvn compile .github/build.sh ${{ matrix.target.cmake }} - name: Download model From f3ff9849c03fe21f58d12e9bfa03ea0e6d35cf1d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:06:08 +0200 Subject: [PATCH 220/384] ci workflow update macos runner images --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 705af944..1e958027 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,11 +36,11 @@ jobs: matrix: target: - { - runner: macos-latest, + runner: macos-13, cmake: '-DLLAMA_METAL=OFF' } - { - runner: macos-14, + runner: macos-latest, cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF' } steps: From 94c3e03936be8746f4d4e5ee733840b86c426685 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:13:26 +0200 Subject: [PATCH 221/384] update release workflow macos runners --- .github/workflows/ci.yml | 3 +-- .github/workflows/release.yaml | 10 +++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e958027..3fef12a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: cmake: '-DLLAMA_METAL=OFF' } - { - runner: macos-latest, + runner: macos-14, cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF' } steps: @@ -51,7 +51,6 @@ jobs: java-version: '11' - name: Build libraries run: | - uname -a mvn compile .github/build.sh ${{ matrix.target.cmake }} - name: Download model diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c06fec7b..134f205f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -50,21 +50,17 @@ jobs: build-macos-native: - name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} + name: Build ${{ matrix.target.runner }} runs-on: ${{ matrix.target.runner }} strategy: fail-fast: false matrix: target: - { - os: Mac, - arch: x86_64, - runner: macos-latest, + runner: macos-13, cmake: '-DLLAMA_METAL=OFF' } - { - os: Mac, - arch: aarch64, runner: macos-14, cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON' } @@ -73,7 +69,7 @@ jobs: - name: Build libraries shell: bash run: | - .github/build.sh ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + .github/build.sh ${{ matrix.target.cmake }} - name: Upload artifacts uses: actions/upload-artifact@v3 with: From bb45468bb9a2261a59cc5962815386e20cc97c9a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:15:07 +0200 Subject: [PATCH 222/384] bump pom.xml 3.0.2 -> 3.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c111bb7c..886e83ae 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.0.2 + 3.1.0 jar ${project.groupId}:${project.artifactId} From 9cb49f927a7718cf5d4fe645607f7c5a41272d83 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:32:19 +0200 Subject: [PATCH 223/384] release workflow macos add mvn compile --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 134f205f..fc88d112 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -69,6 +69,7 @@ jobs: - name: Build libraries shell: bash run: | + mvn compile .github/build.sh ${{ matrix.target.cmake }} - name: Upload artifacts uses: actions/upload-artifact@v3 From 986555653001d7acb991edd4cbdc5460eb5f8c23 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 15 May 2024 21:46:30 +0200 Subject: [PATCH 224/384] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54da11f5..bf01581f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2797](https://img.shields.io/badge/llama.cpp-%23b2797-informational) +![llama.cpp b2885](https://img.shields.io/badge/llama.cpp-%23b2885-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.0.2 + 3.1.0 ``` From 2f017430d543680be3b01add02b2c26ef090f30f Mon Sep 17 00:00:00 2001 From: Lester Solbakken Date: Tue, 21 May 2024 13:30:55 +0200 Subject: [PATCH 225/384] Generate with chat template --- src/main/cpp/jllama.cpp | 13 +++++++++ .../de/kherud/llama/InferenceParameters.java | 29 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 1cd4758f..85286a71 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -356,8 +356,21 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); + const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); + if (json_params.value("use_chat_template", false)) { + std::string chat_template = json_params.value("chat_template", ""); // empty string uses default template in model + std::string system_prompt = json_params.value("system_prompt", "You are a helpful assistant"); + std::string user_prompt = json_params["prompt"]; + + json chat; + chat.push_back({{"role", "system"}, {"content", system_prompt}}); + chat.push_back({{"role", "user"}, {"content", user_prompt}}); + + json_params["prompt"] = format_chat(ctx_server->model, chat_template, chat); + } + const int id_task = ctx_server->queue_tasks.get_new_id(); ctx_server->queue_results.add_waiting_task_id(id_task); ctx_server->request_completion(id_task, -1, json_params, infill, false); diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 8836157f..c4ae4dfe 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -45,6 +45,9 @@ public final class InferenceParameters extends JsonParameters { private static final String PARAM_STOP = "stop"; private static final String PARAM_SAMPLERS = "samplers"; private static final String PARAM_STREAM = "stream"; + private static final String PARAM_USE_CHAT_TEMPLATE = "use_chat_template"; + private static final String PARAM_CHAT_TEMPLATE = "chat_template"; + private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; public InferenceParameters(String prompt) { // we always need a prompt @@ -488,4 +491,30 @@ InferenceParameters setStream(boolean stream) { parameters.put(PARAM_STREAM, String.valueOf(stream)); return this; } + + /** + * Set whether or not generate should apply a chat template (default: false) + */ + public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { + parameters.put(PARAM_USE_CHAT_TEMPLATE, String.valueOf(useChatTemplate)); + return this; + } + + /** + * The chat template to use (default: empty) + */ + public InferenceParameters setChatTemplate(String chatTemplate) { + parameters.put(PARAM_CHAT_TEMPLATE, toJsonString(chatTemplate)); + return this; + } + + /** + * Set the system prompt to use for generation (default: empty) + */ + public InferenceParameters setSystemPrompt(String systemPrompt) { + parameters.put(PARAM_SYSTEM_PROMPT, toJsonString(systemPrompt)); + return this; + } + + } From 50c85b7cab327427f0a8c6cbffbe4fa982718bf9 Mon Sep 17 00:00:00 2001 From: Lester Solbakken Date: Wed, 22 May 2024 10:53:54 +0200 Subject: [PATCH 226/384] Move chat template options to ModelParameters --- src/main/cpp/jllama.cpp | 13 ++++--------- src/main/cpp/server.hpp | 3 +++ .../de/kherud/llama/InferenceParameters.java | 19 ------------------- .../java/de/kherud/llama/ModelParameters.java | 12 +++++++++++- 4 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 85286a71..bd2bda48 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -317,6 +317,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo sparams.chat_template = "chatml"; } } + ctx_server->chat_template = sparams.chat_template; // print sample chat example to make it clear which template is used { @@ -356,19 +357,13 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); - const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); if (json_params.value("use_chat_template", false)) { - std::string chat_template = json_params.value("chat_template", ""); // empty string uses default template in model - std::string system_prompt = json_params.value("system_prompt", "You are a helpful assistant"); - std::string user_prompt = json_params["prompt"]; - json chat; - chat.push_back({{"role", "system"}, {"content", system_prompt}}); - chat.push_back({{"role", "user"}, {"content", user_prompt}}); - - json_params["prompt"] = format_chat(ctx_server->model, chat_template, chat); + chat.push_back({{"role", "system"}, {"content", ctx_server->system_prompt}}); + chat.push_back({{"role", "user"}, {"content", json_params["prompt"]}}); + json_params["prompt"] = format_chat(ctx_server->model, ctx_server->chat_template, chat); } const int id_task = ctx_server->queue_tasks.get_new_id(); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 84fb19d0..91f95a5e 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -692,6 +692,8 @@ struct server_context std::string name_user; // this should be the antiprompt std::string name_assistant; + std::string chat_template; + // slots / clients std::vector slots; json default_generation_settings_for_props; @@ -2596,6 +2598,7 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); server_log_json = !jparams.contains("log_format") || jparams["log_format"] == "json"; sparams.system_prompt = json_value(jparams, "system_prompt", default_sparams.system_prompt); + sparams.chat_template = json_value(jparams, "chat_template", default_sparams.chat_template); if (jparams.contains("n_gpu_layers")) { diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index c4ae4dfe..d2698753 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -46,8 +46,6 @@ public final class InferenceParameters extends JsonParameters { private static final String PARAM_SAMPLERS = "samplers"; private static final String PARAM_STREAM = "stream"; private static final String PARAM_USE_CHAT_TEMPLATE = "use_chat_template"; - private static final String PARAM_CHAT_TEMPLATE = "chat_template"; - private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; public InferenceParameters(String prompt) { // we always need a prompt @@ -500,21 +498,4 @@ public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { return this; } - /** - * The chat template to use (default: empty) - */ - public InferenceParameters setChatTemplate(String chatTemplate) { - parameters.put(PARAM_CHAT_TEMPLATE, toJsonString(chatTemplate)); - return this; - } - - /** - * Set the system prompt to use for generation (default: empty) - */ - public InferenceParameters setSystemPrompt(String systemPrompt) { - parameters.put(PARAM_SYSTEM_PROMPT, toJsonString(systemPrompt)); - return this; - } - - } diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 8257dc22..67135de9 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -69,6 +69,7 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; private static final String PARAM_LOG_FORMAT = "log_format"; + private static final String PARAM_CHAT_TEMPLATE = "chat_template"; /** * Set the RNG seed @@ -579,7 +580,7 @@ public ModelParameters setNoKvOffload(boolean noKvOffload) { * Set a system prompt to use */ public ModelParameters setSystemPrompt(String systemPrompt) { - parameters.put(PARAM_SYSTEM_PROMPT, systemPrompt); + parameters.put(PARAM_SYSTEM_PROMPT, toJsonString(systemPrompt)); return this; } @@ -600,4 +601,13 @@ public ModelParameters setLogFormat(LogFormat logFormat) { } return this; } + + /** + * The chat template to use (default: empty) + */ + public ModelParameters setChatTemplate(String chatTemplate) { + parameters.put(PARAM_CHAT_TEMPLATE, toJsonString(chatTemplate)); + return this; + } + } From 9d245e588a4740f4ffff88fcafae25b1789a1d16 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 22 May 2024 22:22:04 +0200 Subject: [PATCH 227/384] upgrade to llama.cpp b2969 --- CMakeLists.txt | 4 ++-- src/main/cpp/server.hpp | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 29fca914..f45ff00d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.14) project(jllama CXX) @@ -22,7 +22,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2885 + GIT_TAG b2969 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 91f95a5e..23aa9057 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -94,7 +94,6 @@ struct slot_params bool stream = true; bool cache_prompt = false; // remember the prompt to avoid reprocessing all prompt - uint32_t seed = -1; // RNG seed int32_t n_keep = 0; // number of tokens to keep from initial prompt int32_t n_discard = 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half @@ -1100,7 +1099,7 @@ struct server_context sampler_names.emplace_back(sampler_name); } } - slot.sparams.samplers_sequence = sampler_types_from_names(sampler_names, false); + slot.sparams.samplers_sequence = llama_sampling_types_from_names(sampler_names, false); } else { @@ -1120,7 +1119,6 @@ struct server_context send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); return false; } - llama_set_rng_seed(ctx, slot.params.seed); } slot.command = SLOT_COMMAND_LOAD_PROMPT; @@ -1374,13 +1372,13 @@ struct server_context samplers_sequence.reserve(slot.sparams.samplers_sequence.size()); for (const auto &sampler_type : slot.sparams.samplers_sequence) { - samplers_sequence.emplace_back(sampler_type_to_name_string(sampler_type)); + samplers_sequence.emplace_back(llama_sampling_type_to_str(sampler_type)); } return json{{"n_ctx", slot.n_ctx}, {"n_predict", slot.n_predict}, {"model", params.model_alias}, - {"seed", slot.params.seed}, + {"seed", slot.sparams.seed}, {"temperature", slot.sparams.temp}, {"dynatemp_range", slot.sparams.dynatemp_range}, {"dynatemp_exponent", slot.sparams.dynatemp_exponent}, @@ -2143,7 +2141,7 @@ struct server_context slot.command = SLOT_COMMAND_NONE; slot.release(); slot.print_timings(); - send_final_response(slot); + send_error(slot, "input is too large to process. increase the physical batch size", ERROR_TYPE_SERVER); continue; } } From 24256e4bab58207ea1725e0556bd6cae9ebdcc2d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 22 May 2024 22:31:52 +0200 Subject: [PATCH 228/384] bump pom.xml 3.1.0 -> 3.1.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 886e83ae..8e8a3b5b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.1.0 + 3.1.1 jar ${project.groupId}:${project.artifactId} From 860b55c19d0c438b32bcc20829892b0df226105c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 22 May 2024 22:56:59 +0200 Subject: [PATCH 229/384] Update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bf01581f..6ea1df8e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2885](https://img.shields.io/badge/llama.cpp-%23b2885-informational) +![llama.cpp b2969](https://img.shields.io/badge/llama.cpp-%23b2969-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.1.0 + 3.1.1 ``` From 7bfcbe988841d4cbc54245b4a1b6f8ea44e4c7dd Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 00:24:59 +0200 Subject: [PATCH 230/384] update logging --- CMakeLists.txt | 2 + src/main/cpp/jllama.cpp | 153 ++++++++++++++++-- src/main/cpp/jllama.h | 77 --------- src/main/cpp/server.hpp | 4 - src/main/cpp/utils.hpp | 85 ++++++---- src/main/java/de/kherud/llama/LlamaModel.java | 15 ++ src/main/java/de/kherud/llama/LogLevel.java | 13 ++ .../java/de/kherud/llama/ModelParameters.java | 38 ----- .../java/de/kherud/llama/args/LogFormat.java | 5 +- src/test/java/examples/MainExample.java | 3 +- 10 files changed, 230 insertions(+), 165 deletions(-) delete mode 100644 src/main/cpp/jllama.h create mode 100644 src/main/java/de/kherud/llama/LogLevel.java diff --git a/CMakeLists.txt b/CMakeLists.txt index f45ff00d..9746168b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ project(jllama CXX) include(FetchContent) set(BUILD_SHARED_LIBS ON) +set(LLAMA_STATIC OFF) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) option(LLAMA_VERBOSE "llama: verbose output" OFF) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index bd2bda48..4c087bf4 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,9 +1,10 @@ #include "jllama.h" -#include "nlohmann/json.hpp" #include "llama.h" +#include "nlohmann/json.hpp" #include "server.hpp" +#include #include // We store some references to Java classes and their fields/methods here to speed up things for later and to fail @@ -12,7 +13,7 @@ namespace { -// JavaVM *g_vm = nullptr; +JavaVM* g_vm = nullptr; // classes jclass c_llama_model = nullptr; @@ -29,6 +30,8 @@ jclass c_integer = nullptr; jclass c_float = nullptr; jclass c_biconsumer = nullptr; jclass c_llama_error = nullptr; +jclass c_log_level = nullptr; +jclass c_log_format = nullptr; jclass c_error_oom = nullptr; // constructors @@ -55,9 +58,22 @@ jfieldID f_model_pointer = nullptr; jfieldID f_task_id = nullptr; jfieldID f_utf_8 = nullptr; jfieldID f_iter_has_next = nullptr; +jfieldID f_log_level_debug = nullptr; +jfieldID f_log_level_info = nullptr; +jfieldID f_log_level_warn = nullptr; +jfieldID f_log_level_error = nullptr; +jfieldID f_log_format_json = nullptr; +jfieldID f_log_format_text = nullptr; // objects jobject o_utf_8 = nullptr; +jobject o_log_level_debug = nullptr; +jobject o_log_level_info = nullptr; +jobject o_log_level_warn = nullptr; +jobject o_log_level_error = nullptr; +jobject o_log_format_json = nullptr; +jobject o_log_format_text = nullptr; +jobject o_log_callback = nullptr; /** * Convert a Java string to a std::string @@ -89,8 +105,40 @@ jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) env->SetByteArrayRegion(bytes, 0, length, reinterpret_cast(string.c_str())); return bytes; } + +/** + * Map a llama.cpp log level to its Java enumeration option. + */ +jobject log_level_to_jobject(ggml_log_level level) +{ + switch (level) + { + case GGML_LOG_LEVEL_ERROR: + return o_log_level_error; + case GGML_LOG_LEVEL_WARN: + return o_log_level_warn; + default: case GGML_LOG_LEVEL_INFO: + return o_log_level_info; + case GGML_LOG_LEVEL_DEBUG: + return o_log_level_debug; + } +} + +/** + * Returns the JNIEnv of the current thread. + */ +JNIEnv* get_jni_env() { + JNIEnv* env = nullptr; + if (g_vm == nullptr || g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { + throw std::runtime_error("Thread is not attached to the JVM"); + } + return env; +} } // namespace +bool log_json; +std::function log_callback; + /** * The VM calls JNI_OnLoad when the native library is loaded (for example, through `System.loadLibrary`). * `JNI_OnLoad` must return the JNI version needed by the native library. @@ -101,6 +149,7 @@ jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) */ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { + g_vm = vm; JNIEnv *env = nullptr; if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) @@ -123,10 +172,13 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_float = env->FindClass("java/lang/Float"); c_biconsumer = env->FindClass("java/util/function/BiConsumer"); c_llama_error = env->FindClass("de/kherud/llama/LlamaException"); + c_log_level = env->FindClass("de/kherud/llama/LogLevel"); + c_log_format = env->FindClass("de/kherud/llama/args/LogFormat"); c_error_oom = env->FindClass("java/lang/OutOfMemoryError"); if (!(c_llama_model && c_llama_iterator && c_standard_charsets && c_output && c_string && c_hash_map && c_map && - c_set && c_entry && c_iterator && c_integer && c_float && c_biconsumer && c_llama_error && c_error_oom)) + c_set && c_entry && c_iterator && c_integer && c_float && c_biconsumer && c_llama_error && c_log_level && + c_log_format && c_error_oom)) { goto error; } @@ -145,6 +197,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) c_float = (jclass)env->NewGlobalRef(c_float); c_biconsumer = (jclass)env->NewGlobalRef(c_biconsumer); c_llama_error = (jclass)env->NewGlobalRef(c_llama_error); + c_log_level = (jclass)env->NewGlobalRef(c_log_level); + c_log_format = (jclass)env->NewGlobalRef(c_log_format); c_error_oom = (jclass)env->NewGlobalRef(c_error_oom); // find constructors @@ -182,20 +236,40 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_task_id = env->GetFieldID(c_llama_iterator, "taskId", "I"); f_utf_8 = env->GetStaticFieldID(c_standard_charsets, "UTF_8", "Ljava/nio/charset/Charset;"); f_iter_has_next = env->GetFieldID(c_llama_iterator, "hasNext", "Z"); - - if (!(f_model_pointer && f_task_id && f_utf_8 && f_iter_has_next)) + f_log_level_debug = env->GetStaticFieldID(c_log_level, "DEBUG", "Lde/kherud/llama/LogLevel;"); + f_log_level_info = env->GetStaticFieldID(c_log_level, "INFO", "Lde/kherud/llama/LogLevel;"); + f_log_level_warn = env->GetStaticFieldID(c_log_level, "WARN", "Lde/kherud/llama/LogLevel;"); + f_log_level_error = env->GetStaticFieldID(c_log_level, "ERROR", "Lde/kherud/llama/LogLevel;"); + f_log_format_json = env->GetStaticFieldID(c_log_format, "JSON", "Lde/kherud/llama/args/LogFormat;"); + f_log_format_text = env->GetStaticFieldID(c_log_format, "TEXT", "Lde/kherud/llama/args/LogFormat;"); + + if (!(f_model_pointer && f_task_id && f_utf_8 && f_iter_has_next && f_log_level_debug && f_log_level_info && + f_log_level_warn && f_log_level_error && f_log_format_json && f_log_format_text)) { goto error; } o_utf_8 = env->NewStringUTF("UTF-8"); - - if (!(o_utf_8)) + o_log_level_debug = env->GetStaticObjectField(c_log_level, f_log_level_debug); + o_log_level_info = env->GetStaticObjectField(c_log_level, f_log_level_info); + o_log_level_warn = env->GetStaticObjectField(c_log_level, f_log_level_warn); + o_log_level_error = env->GetStaticObjectField(c_log_level, f_log_level_error); + o_log_format_json = env->GetStaticObjectField(c_log_format, f_log_format_json); + o_log_format_text = env->GetStaticObjectField(c_log_format, f_log_format_text); + + if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error && + o_log_format_json && o_log_format_text)) { goto error; } - o_utf_8 = (jclass)env->NewGlobalRef(o_utf_8); + o_utf_8 = env->NewGlobalRef(o_utf_8); + o_log_level_debug = env->NewGlobalRef(o_log_level_debug); + o_log_level_info = env->NewGlobalRef(o_log_level_info); + o_log_level_warn = env->NewGlobalRef(o_log_level_warn); + o_log_level_error = env->NewGlobalRef(o_log_level_error); + o_log_format_json = env->NewGlobalRef(o_log_format_json); + o_log_format_text = env->NewGlobalRef(o_log_format_text); if (env->ExceptionCheck()) { @@ -203,13 +277,15 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } + llama_backend_init(); + goto success; error: return JNI_ERR; success: - return JNI_VERSION_1_2; + return JNI_VERSION_1_6; } /** @@ -224,7 +300,7 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { JNIEnv *env = nullptr; - if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_6)) { return; } @@ -242,9 +318,24 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(c_float); env->DeleteGlobalRef(c_biconsumer); env->DeleteGlobalRef(c_llama_error); + env->DeleteGlobalRef(c_log_level); + env->DeleteGlobalRef(c_log_level); env->DeleteGlobalRef(c_error_oom); env->DeleteGlobalRef(o_utf_8); + env->DeleteGlobalRef(o_log_level_debug); + env->DeleteGlobalRef(o_log_level_info); + env->DeleteGlobalRef(o_log_level_warn); + env->DeleteGlobalRef(o_log_level_error); + env->DeleteGlobalRef(o_log_format_json); + env->DeleteGlobalRef(o_log_format_text); + + if (o_log_callback != nullptr) + { + env->DeleteGlobalRef(o_log_callback); + } + + llama_backend_free(); } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring jparams) @@ -277,7 +368,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo params.model_alias = params.model; } - llama_backend_init(); llama_numa_init(params.numa); LOG_INFO("build info", {{"build", LLAMA_BUILD_NUMBER}, {"commit", LLAMA_COMMIT}}); @@ -344,7 +434,17 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - std::thread t([ctx_server]() { ctx_server->queue_tasks.start_loop(); }); + std::thread t([ctx_server]() { + JNIEnv *env; + jint res = g_vm->GetEnv((void**)&env, JNI_VERSION_1_6); + if (res == JNI_EDETACHED) { + res = g_vm->AttachCurrentThread((void**)&env, nullptr); + if (res != JNI_OK) { + throw std::runtime_error("Failed to attach thread to JVM"); + } + } + ctx_server->queue_tasks.start_loop(); + }); t.detach(); env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); @@ -502,8 +602,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobje jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) ctx_server->queue_tasks.terminate(); - // maybe we should keep track how many models were loaded before freeing the backend - llama_backend_free(); delete ctx_server; } @@ -514,3 +612,30 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv * ctx_server->request_cancel(id_task); ctx_server->queue_results.remove_waiting_task_id(id_task); } + +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject log_format, + jobject jcallback) +{ + if (o_log_callback != nullptr) + { + env->DeleteGlobalRef(o_log_callback); + } + + log_json = env->IsSameObject(log_format, o_log_format_json); + + if (jcallback == nullptr) + { + log_callback = nullptr; + } + else + { + o_log_callback = env->NewGlobalRef(jcallback); + log_callback = [](enum ggml_log_level level, const char *text, void *user_data) { + JNIEnv* env = get_jni_env(); + jstring message = env->NewStringUTF(text); + jobject log_level = log_level_to_jobject(level); + env->CallVoidMethod(o_log_callback, m_biconsumer_accept, log_level, message); + env->DeleteLocalRef(message); + }; + } +} diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h deleted file mode 100644 index 2c0125ac..00000000 --- a/src/main/cpp/jllama.h +++ /dev/null @@ -1,77 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class de_kherud_llama_LlamaModel */ - -#ifndef _Included_de_kherud_llama_LlamaModel -#define _Included_de_kherud_llama_LlamaModel -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: de_kherud_llama_LlamaModel - * Method: embed - * Signature: (Ljava/lang/String;)[F - */ -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: encode - * Signature: (Ljava/lang/String;)[I - */ -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: requestCompletion - * Signature: (Ljava/lang/String;)I - */ -JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: receiveCompletion - * Signature: (I)Lde/kherud/llama/LlamaOutput; - */ -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion - (JNIEnv *, jobject, jint); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: cancelCompletion - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion - (JNIEnv *, jobject, jint); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: decodeBytes - * Signature: ([I)[B - */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes - (JNIEnv *, jobject, jintArray); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: loadModel - * Signature: (Ljava/lang/String;)V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jstring); - -/* - * Class: de_kherud_llama_LlamaModel - * Method: delete - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 23aa9057..b111bb7d 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -18,8 +18,6 @@ using json = nlohmann::ordered_json; -bool server_log_json = true; - enum stop_type { STOP_TYPE_FULL, @@ -2579,7 +2577,6 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.input_prefix = json_value(jparams, "input_prefix", default_params.input_prefix); params.input_suffix = json_value(jparams, "input_suffix", default_params.input_suffix); params.antiprompt = json_value(jparams, "antiprompt", default_params.antiprompt); - params.logdir = json_value(jparams, "logdir", default_params.logdir); params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); @@ -2594,7 +2591,6 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - server_log_json = !jparams.contains("log_format") || jparams["log_format"] == "json"; sparams.system_prompt = json_value(jparams, "system_prompt", default_sparams.system_prompt); sparams.chat_template = json_value(jparams, "chat_template", default_sparams.chat_template); diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 57391c40..56f6742a 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -26,23 +26,24 @@ enum error_type ERROR_TYPE_NOT_SUPPORTED, // custom error }; -extern bool server_log_json; +extern bool log_json; +extern std::function log_callback; #if SERVER_VERBOSE #define LOG_VERBOSE(MSG, ...) \ do \ { \ - server_log("VERB", __func__, __LINE__, MSG, __VA_ARGS__); \ + server_log(GGML_LOG_LEVEL_DEBUG, __func__, __LINE__, MSG, __VA_ARGS__); \ } while (0) #else #define LOG_VERBOSE(MSG, ...) #endif -#define LOG_ERROR(MSG, ...) server_log("ERR", __func__, __LINE__, MSG, __VA_ARGS__) -#define LOG_WARNING(MSG, ...) server_log("WARN", __func__, __LINE__, MSG, __VA_ARGS__) -#define LOG_INFO(MSG, ...) server_log("INFO", __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_ERROR(MSG, ...) server_log(GGML_LOG_LEVEL_ERROR, __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_WARNING(MSG, ...) server_log(GGML_LOG_LEVEL_WARN, __func__, __LINE__, MSG, __VA_ARGS__) +#define LOG_INFO(MSG, ...) server_log(GGML_LOG_LEVEL_INFO, __func__, __LINE__, MSG, __VA_ARGS__) -static inline void server_log(const char *level, const char *function, int line, const char *message, +static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, const json &extra); template static T json_value(const json &body, const std::string &key, const T &default_value) @@ -69,50 +70,76 @@ template static T json_value(const json &body, const std::string &k } } -static inline void server_log(const char *level, const char *function, int line, const char *message, const json &extra) +static const char * log_level_to_string(ggml_log_level level) { + switch (level) { + case GGML_LOG_LEVEL_ERROR: + return "ERROR"; + case GGML_LOG_LEVEL_WARN: + return "WARN"; + default: case GGML_LOG_LEVEL_INFO: + return "INFO"; + case GGML_LOG_LEVEL_DEBUG: + return "DEBUG"; + } +} + +static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, const json &extra) { std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); - json log = json{ - {"tid", ss_tid.str()}, - {"timestamp", time(nullptr)}, - }; - if (server_log_json) + if (log_json) { - log.merge_patch({ - {"level", level}, + json log = json{ + {"msg", message}, +#if SERVER_VERBOSE + {"ts", time(nullptr)}, + {"level", log_level_to_string(level)}, + {"tid", ss_tid.str()}, {"function", function}, {"line", line}, - {"msg", message}, - }); +#endif + }; if (!extra.empty()) { log.merge_patch(extra); } - printf("%s\n", log.dump(-1, ' ', false, json::error_handler_t::replace).c_str()); + auto dump = log.dump(-1, ' ', false, json::error_handler_t::replace); + if (log_callback == nullptr) + { + printf("%s\n", dump.c_str()); + } else { + log_callback(level, dump.c_str(), nullptr); + } } else { - char buf[1024]; - snprintf(buf, 1024, "%4s [%24s] %s", level, function, message); + std::stringstream ss; + ss << message; if (!extra.empty()) { - log.merge_patch(extra); - } - std::stringstream ss; - ss << buf << " |"; - for (const auto &el : log.items()) - { - const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); - ss << " " << el.key() << "=" << value; + for (const auto &el : extra.items()) + { + const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); + ss << " " << el.key() << "=" << value; + } } +#if SERVER_VERBOSE + ss << " | ts " << time(nullptr) + << " | tid " << ss_tid.str() + << " | " << function << " line " << line; +#endif + const std::string str = ss.str(); - printf("%.*s\n", (int)str.size(), str.data()); + if (log_callback == nullptr) { + printf("[%4s] %.*s\n", log_level_to_string(level), (int)str.size(), str.data()); + } else { + log_callback(level, str.c_str(), nullptr); + } } fflush(stdout); } @@ -638,7 +665,7 @@ static json format_embeddings_response_oaicompat(const json &request, const json { json data = json::array(); int i = 0; - for (auto &elem : embeddings) + for (const auto &elem : embeddings) { data.push_back( json{{"embedding", json_value(elem, "embedding", json::array())}, {"index", i++}, {"object", "embedding"}}); diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index aa1bb5ad..65fa29e5 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -1,7 +1,11 @@ package de.kherud.llama; +import de.kherud.llama.args.LogFormat; +import org.jetbrains.annotations.Nullable; + import java.lang.annotation.Native; import java.nio.charset.StandardCharsets; +import java.util.function.BiConsumer; /** * This class is a wrapper around the llama.cpp functionality. @@ -93,6 +97,17 @@ public String decode(int[] tokens) { return new String(bytes, StandardCharsets.UTF_8); } + /** + * Sets a callback for native llama.cpp log messages. + * Per default, log messages are written to stdout. To only change the log format but keep logging to stdout, + * the given callback can be null. + * To disable logging, pass an empty callback, i.e., (level, msg) -> {}. + * + * @param format the log format to use + * @param callback a method to call for log messages + */ + public static native void setLogger(LogFormat format, @Nullable BiConsumer callback); + @Override public void close() { delete(); diff --git a/src/main/java/de/kherud/llama/LogLevel.java b/src/main/java/de/kherud/llama/LogLevel.java new file mode 100644 index 00000000..b55c0898 --- /dev/null +++ b/src/main/java/de/kherud/llama/LogLevel.java @@ -0,0 +1,13 @@ +package de.kherud.llama; + +/** + * This enum represents the native log levels of llama.cpp. + */ +public enum LogLevel { + + DEBUG, + INFO, + WARN, + ERROR + +} diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 67135de9..1cbb6973 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -3,7 +3,6 @@ import java.util.Map; import de.kherud.llama.args.GpuSplitMode; -import de.kherud.llama.args.LogFormat; import de.kherud.llama.args.NumaStrategy; import de.kherud.llama.args.PoolingType; import de.kherud.llama.args.RopeScalingType; @@ -53,8 +52,6 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_MODEL_URL = "model_url"; private static final String PARAM_HF_REPO = "hf_repo"; private static final String PARAM_HF_FILE = "hf_file"; - private static final String PARAM_LOGDIR = "logdir"; - private static final String PARAM_LOG_DISABLE = "disable_log"; private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; private static final String PARAM_LORA_ADAPTER = "lora_adapter"; @@ -68,7 +65,6 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_USE_MLOCK = "use_mlock"; private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; - private static final String PARAM_LOG_FORMAT = "log_format"; private static final String PARAM_CHAT_TEMPLATE = "chat_template"; /** @@ -447,22 +443,6 @@ public ModelParameters setHuggingFaceFile(String hfFile) { return this; } - /** - * Set path under which to save YAML logs (no logging if unset) - */ - public ModelParameters setLogDirectory(String logdir) { - parameters.put(PARAM_LOGDIR, toJsonString(logdir)); - return this; - } - - /** - * Set whether to disable logging - */ - public ModelParameters setDisableLog(boolean logDisable) { - parameters.put(PARAM_LOG_DISABLE, String.valueOf(logDisable)); - return this; - } - /** * Set path to static lookup cache to use for lookup decoding (not updated by generation) */ @@ -584,24 +564,6 @@ public ModelParameters setSystemPrompt(String systemPrompt) { return this; } - /** - * Set which log format to use - */ - public ModelParameters setLogFormat(LogFormat logFormat) { - switch (logFormat) { - case NONE: - parameters.put(PARAM_LOG_DISABLE, String.valueOf(true)); - break; - case JSON: - parameters.put(PARAM_LOG_FORMAT, "json"); - break; - case TEXT: - parameters.put(PARAM_LOG_FORMAT, "text"); - break; - } - return this; - } - /** * The chat template to use (default: empty) */ diff --git a/src/main/java/de/kherud/llama/args/LogFormat.java b/src/main/java/de/kherud/llama/args/LogFormat.java index f0e76492..8a5b46e8 100644 --- a/src/main/java/de/kherud/llama/args/LogFormat.java +++ b/src/main/java/de/kherud/llama/args/LogFormat.java @@ -1,8 +1,11 @@ package de.kherud.llama.args; +/** + * The log output format (defaults to JSON for all server-based outputs). + */ public enum LogFormat { - NONE, JSON, TEXT + } diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 65e20c12..92581144 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -17,8 +17,7 @@ public class MainExample { public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setNGpuLayers(43) - .setDisableLog(true); + .setNGpuLayers(43); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n\n" + From 44fd6ad1e873c1812e9df45cf4bd94f13d1c9a57 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 11:23:27 +0200 Subject: [PATCH 231/384] add logging unit tests --- .../java/de/kherud/llama/LlamaModelTest.java | 111 +++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 9659f975..a5454c59 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -1,8 +1,11 @@ package de.kherud.llama; -import java.util.HashMap; -import java.util.Map; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.regex.Pattern; +import de.kherud.llama.args.LogFormat; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -18,6 +21,7 @@ public class LlamaModelTest { @BeforeClass public static void setup() { +// LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> System.out.println(level + ": " + msg)); model = new LlamaModel( new ModelParameters() .setModelFilePath("models/codellama-7b.Q2_K.gguf") @@ -161,4 +165,107 @@ public void testTokenization() { // the llama tokenizer adds a space before the prompt Assert.assertEquals(" " + prompt, decoded); } + + @Test + public void testLogText() { + List messages = new ArrayList<>(); + LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> messages.add(new LogMessage(level, msg))); + + InferenceParameters params = new InferenceParameters(prefix) + .setNPredict(nPredict) + .setSeed(42); + model.complete(params); + + Assert.assertFalse(messages.isEmpty()); + + Pattern jsonPattern = Pattern.compile("^\\s*[\\[{].*[}\\]]\\s*$"); + for (LogMessage message : messages) { + Assert.assertNotNull(message.level); + Assert.assertFalse(jsonPattern.matcher(message.text).matches()); + } + } + + @Test + public void testLogJSON() { + List messages = new ArrayList<>(); + LlamaModel.setLogger(LogFormat.JSON, (level, msg) -> messages.add(new LogMessage(level, msg))); + + InferenceParameters params = new InferenceParameters(prefix) + .setNPredict(nPredict) + .setSeed(42); + model.complete(params); + + Assert.assertFalse(messages.isEmpty()); + + Pattern jsonPattern = Pattern.compile("^\\s*[\\[{].*[}\\]]\\s*$"); + for (LogMessage message : messages) { + Assert.assertNotNull(message.level); + Assert.assertTrue(jsonPattern.matcher(message.text).matches()); + } + } + + @Test + public void testLogStdout() { + // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. + InferenceParameters params = new InferenceParameters(prefix) + .setNPredict(nPredict) + .setSeed(42); + + System.out.println("########## Log Text ##########"); + LlamaModel.setLogger(LogFormat.TEXT, null); + model.complete(params); + + System.out.println("########## Log JSON ##########"); + LlamaModel.setLogger(LogFormat.JSON, null); + model.complete(params); + + System.out.println("########## Log None ##########"); + LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> {}); + model.complete(params); + + System.out.println("##############################"); + } + + private String completeAndReadStdOut() { + PrintStream stdOut = System.out; + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + @SuppressWarnings("ImplicitDefaultCharsetUsage") PrintStream printStream = new PrintStream(outputStream); + System.setOut(printStream); + + try { + InferenceParameters params = new InferenceParameters(prefix) + .setNPredict(nPredict) + .setSeed(42); + model.complete(params); + } finally { + System.out.flush(); + System.setOut(stdOut); + printStream.close(); + } + + return outputStream.toString(); + } + + private List splitLines(String text) { + List lines = new ArrayList<>(); + + Scanner scanner = new Scanner(text); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + lines.add(line); + } + scanner.close(); + + return lines; + } + + private static final class LogMessage { + private final LogLevel level; + private final String text; + + private LogMessage(LogLevel level, String text) { + this.level = level; + this.text = text; + } + } } From 7bfb0dd9517c9493e8412442d270ef634dbc0521 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 11:32:06 +0200 Subject: [PATCH 232/384] re-add jllama.h --- src/main/cpp/jllama.h | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/main/cpp/jllama.h diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h new file mode 100644 index 00000000..2fd0529e --- /dev/null +++ b/src/main/cpp/jllama.h @@ -0,0 +1,85 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class de_kherud_llama_LlamaModel */ + +#ifndef _Included_de_kherud_llama_LlamaModel +#define _Included_de_kherud_llama_LlamaModel +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: de_kherud_llama_LlamaModel + * Method: embed + * Signature: (Ljava/lang/String;)[F + */ +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: encode + * Signature: (Ljava/lang/String;)[I + */ +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: setLogger + * Signature: (Lde/kherud/llama/args/LogFormat;Ljava/util/function/BiConsumer;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger + (JNIEnv *, jclass, jobject, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: requestCompletion + * Signature: (Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: receiveCompletion + * Signature: (I)Lde/kherud/llama/LlamaOutput; + */ +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion + (JNIEnv *, jobject, jint); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: cancelCompletion + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion + (JNIEnv *, jobject, jint); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: decodeBytes + * Signature: ([I)[B + */ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes + (JNIEnv *, jobject, jintArray); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: loadModel + * Signature: (Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel + (JNIEnv *, jobject, jstring); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: delete + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif From 4fee0d2cf7fff24637173d6736ef821475ab9071 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 11:32:31 +0200 Subject: [PATCH 233/384] format c++ code --- src/main/cpp/jllama.cpp | 28 +++++++++++++++++----------- src/main/cpp/server.hpp | 3 ++- src/main/cpp/utils.hpp | 37 +++++++++++++++++++++++-------------- 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 4c087bf4..4cf62c33 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -13,7 +13,7 @@ namespace { -JavaVM* g_vm = nullptr; +JavaVM *g_vm = nullptr; // classes jclass c_llama_model = nullptr; @@ -117,7 +117,8 @@ jobject log_level_to_jobject(ggml_log_level level) return o_log_level_error; case GGML_LOG_LEVEL_WARN: return o_log_level_warn; - default: case GGML_LOG_LEVEL_INFO: + default: + case GGML_LOG_LEVEL_INFO: return o_log_level_info; case GGML_LOG_LEVEL_DEBUG: return o_log_level_debug; @@ -127,9 +128,11 @@ jobject log_level_to_jobject(ggml_log_level level) /** * Returns the JNIEnv of the current thread. */ -JNIEnv* get_jni_env() { - JNIEnv* env = nullptr; - if (g_vm == nullptr || g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { +JNIEnv *get_jni_env() +{ + JNIEnv *env = nullptr; + if (g_vm == nullptr || g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) + { throw std::runtime_error("Thread is not attached to the JVM"); } return env; @@ -436,10 +439,12 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::thread t([ctx_server]() { JNIEnv *env; - jint res = g_vm->GetEnv((void**)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) { - res = g_vm->AttachCurrentThread((void**)&env, nullptr); - if (res != JNI_OK) { + jint res = g_vm->GetEnv((void **)&env, JNI_VERSION_1_6); + if (res == JNI_EDETACHED) + { + res = g_vm->AttachCurrentThread((void **)&env, nullptr); + if (res != JNI_OK) + { throw std::runtime_error("Failed to attach thread to JVM"); } } @@ -459,7 +464,8 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv json json_params = json::parse(c_params); const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); - if (json_params.value("use_chat_template", false)) { + if (json_params.value("use_chat_template", false)) + { json chat; chat.push_back({{"role", "system"}, {"content", ctx_server->system_prompt}}); chat.push_back({{"role", "user"}, {"content", json_params["prompt"]}}); @@ -631,7 +637,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc { o_log_callback = env->NewGlobalRef(jcallback); log_callback = [](enum ggml_log_level level, const char *text, void *user_data) { - JNIEnv* env = get_jni_env(); + JNIEnv *env = get_jni_env(); jstring message = env->NewStringUTF(text); jobject log_level = log_level_to_jobject(level); env->CallVoidMethod(o_log_callback, m_biconsumer_accept, log_level, message); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index b111bb7d..d3d4750a 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -2139,7 +2139,8 @@ struct server_context slot.command = SLOT_COMMAND_NONE; slot.release(); slot.print_timings(); - send_error(slot, "input is too large to process. increase the physical batch size", ERROR_TYPE_SERVER); + send_error(slot, "input is too large to process. increase the physical batch size", + ERROR_TYPE_SERVER); continue; } } diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 56f6742a..ad7198c1 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -70,20 +70,24 @@ template static T json_value(const json &body, const std::string &k } } -static const char * log_level_to_string(ggml_log_level level) { - switch (level) { - case GGML_LOG_LEVEL_ERROR: - return "ERROR"; - case GGML_LOG_LEVEL_WARN: - return "WARN"; - default: case GGML_LOG_LEVEL_INFO: - return "INFO"; - case GGML_LOG_LEVEL_DEBUG: - return "DEBUG"; +static const char *log_level_to_string(ggml_log_level level) +{ + switch (level) + { + case GGML_LOG_LEVEL_ERROR: + return "ERROR"; + case GGML_LOG_LEVEL_WARN: + return "WARN"; + default: + case GGML_LOG_LEVEL_INFO: + return "INFO"; + case GGML_LOG_LEVEL_DEBUG: + return "DEBUG"; } } -static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, const json &extra) +static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, + const json &extra) { std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); @@ -110,7 +114,9 @@ static inline void server_log(ggml_log_level level, const char *function, int li if (log_callback == nullptr) { printf("%s\n", dump.c_str()); - } else { + } + else + { log_callback(level, dump.c_str(), nullptr); } } @@ -135,9 +141,12 @@ static inline void server_log(ggml_log_level level, const char *function, int li #endif const std::string str = ss.str(); - if (log_callback == nullptr) { + if (log_callback == nullptr) + { printf("[%4s] %.*s\n", log_level_to_string(level), (int)str.size(), str.data()); - } else { + } + else + { log_callback(level, str.c_str(), nullptr); } } From fdd81f4cbb605a86ec2d49a8502aec64be948260 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 11:47:14 +0200 Subject: [PATCH 234/384] Update readme logging --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 6ea1df8e..09e9dfef 100644 --- a/README.md +++ b/README.md @@ -223,6 +223,23 @@ try (LlamaModel model = new LlamaModel(modelParams)) { } ``` +### Logging + +Per default, logs are written to stdout. +This can be intercepted via the static method `LlamaModel.setLogger(LogFormat, BiConsumer)`. +There is text- and JSON-based logging. The default is JSON. +To only change the log format while still writing to stdout, `null` can be passed for the callback. +Logging can be disabled by passing an empty callback. + +```java +// Re-direct log messages however you like (e.g. to a logging library) +LlamaModel.setLogger(LogFormat.TEXT, (level, message) -> System.out.println(level.name() + ": " + message)); +// Log to stdout, but change the format +LlamaModel.setLogger(LogFormat.TEXT, null); +// Disable logging by passing a no-op +LlamaModel.setLogger(null, (level, message) -> {}); +``` + ## Importing in Android You can use this library in Android project. From 42aa20becf4ca8baefe3a6d4f1cce9cecad7b90c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 11:58:01 +0200 Subject: [PATCH 235/384] Bump pom.xml 3.1.1 -> 3.2.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e8a3b5b..fcaf6a12 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.1.1 + 3.2.0 jar ${project.groupId}:${project.artifactId} From fcdbf0a6ef7edff382c7bbe5f88c920c39eabc0a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 25 May 2024 12:11:49 +0200 Subject: [PATCH 236/384] Update readme maven version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 09e9dfef..a38ef221 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.1.1 + 3.2.0 ``` From c8ee55f5b0c0451ffbe19ce46536af57aaa5521c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 19:47:19 +0200 Subject: [PATCH 237/384] Include GGML backend in text log --- src/main/cpp/jllama.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 4cf62c33..2298c190 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -137,6 +137,17 @@ JNIEnv *get_jni_env() } return env; } + +/** + * Invoke the log callback if there is any. + */ +void log_callback_trampoline(ggml_log_level level, const char *text, void *user_data) +{ + if (log_callback != nullptr) + { + log_callback(level, text, user_data); + } +} } // namespace bool log_json; @@ -632,6 +643,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc if (jcallback == nullptr) { log_callback = nullptr; + llama_log_set(nullptr, nullptr); } else { @@ -643,5 +655,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc env->CallVoidMethod(o_log_callback, m_biconsumer_accept, log_level, message); env->DeleteLocalRef(message); }; + if (!log_json) + { + llama_log_set(log_callback_trampoline, nullptr); + } } } From 15490e8ecdc9feb38505b4a5cf473abb0479fd32 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 19:47:54 +0200 Subject: [PATCH 238/384] Bump pom.xml 3.2.0 -> 3.2.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fcaf6a12..79f10350 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.2.0 + 3.2.1 jar ${project.groupId}:${project.artifactId} From 9709026c4aca0fd84770e5a9518bb30d68168f2d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 20:14:06 +0200 Subject: [PATCH 239/384] Update logging documentation --- README.md | 2 ++ src/main/java/de/kherud/llama/LlamaModel.java | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a38ef221..c1af51e4 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,8 @@ try (LlamaModel model = new LlamaModel(modelParams)) { Per default, logs are written to stdout. This can be intercepted via the static method `LlamaModel.setLogger(LogFormat, BiConsumer)`. There is text- and JSON-based logging. The default is JSON. +Note, that text-based logging will include additional output of the GGML backend, while JSON-based logging +only provides request logs (while still writing GGML messages to stdout). To only change the log format while still writing to stdout, `null` can be passed for the callback. Logging can be disabled by passing an empty callback. diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 65fa29e5..b78e056e 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -99,8 +99,10 @@ public String decode(int[] tokens) { /** * Sets a callback for native llama.cpp log messages. - * Per default, log messages are written to stdout. To only change the log format but keep logging to stdout, - * the given callback can be null. + * Per default, log messages are written in JSON to stdout. Note, that in text mode the callback will be also + * invoked with log messages of the GGML backend, while JSON mode can only access request log messages. + * In JSON mode, GGML messages will still be written to stdout. + * To only change the log format but keep logging to stdout, the given callback can be null. * To disable logging, pass an empty callback, i.e., (level, msg) -> {}. * * @param format the log format to use From d06444008c44dd70eb09fc193643f050fc77cbb2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 20:14:36 +0200 Subject: [PATCH 240/384] Upgrade to llama.cpp b3008 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9746168b..550759f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b2969 + GIT_TAG b3008 ) FetchContent_MakeAvailable(llama.cpp) From bc1285cf9512d6af7a2415fbd8d41a48818fe4da Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 20:16:45 +0200 Subject: [PATCH 241/384] Update dockcross images --- .github/dockcross/dockcross-android-arm | 8 ++++---- .github/dockcross/dockcross-android-arm64 | 8 ++++---- .github/dockcross/dockcross-linux-arm64-lts | 8 ++++---- .github/dockcross/dockcross-manylinux2014-x64 | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/dockcross/dockcross-android-arm b/.github/dockcross/dockcross-android-arm index 79a2180e..9cb27365 100755 --- a/.github/dockcross/dockcross-android-arm +++ b/.github/dockcross/dockcross-android-arm @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm:20240104-6eda627 +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm:20240418-88c04a4 #------------------------------------------------------------------------------ # Helpers @@ -268,10 +268,10 @@ exit $run_exit_code # This image is not intended to be run manually. # # To create a dockcross helper script for the -# dockcross/android-arm:20240104-6eda627 image, run: +# dockcross/android-arm:20240418-88c04a4 image, run: # -# docker run --rm dockcross/android-arm:20240104-6eda627 > dockcross-android-arm-20240104-6eda627 -# chmod +x dockcross-android-arm-20240104-6eda627 +# docker run --rm dockcross/android-arm:20240418-88c04a4 > dockcross-android-arm-20240418-88c04a4 +# chmod +x dockcross-android-arm-20240418-88c04a4 # # You may then wish to move the dockcross script to your PATH. # diff --git a/.github/dockcross/dockcross-android-arm64 b/.github/dockcross/dockcross-android-arm64 index 630b8113..50452754 100755 --- a/.github/dockcross/dockcross-android-arm64 +++ b/.github/dockcross/dockcross-android-arm64 @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm64:20240104-6eda627 +DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm64:20240418-88c04a4 #------------------------------------------------------------------------------ # Helpers @@ -268,10 +268,10 @@ exit $run_exit_code # This image is not intended to be run manually. # # To create a dockcross helper script for the -# dockcross/android-arm64:20240104-6eda627 image, run: +# dockcross/android-arm64:20240418-88c04a4 image, run: # -# docker run --rm dockcross/android-arm64:20240104-6eda627 > dockcross-android-arm64-20240104-6eda627 -# chmod +x dockcross-android-arm64-20240104-6eda627 +# docker run --rm dockcross/android-arm64:20240418-88c04a4 > dockcross-android-arm64-20240418-88c04a4 +# chmod +x dockcross-android-arm64-20240418-88c04a4 # # You may then wish to move the dockcross script to your PATH. # diff --git a/.github/dockcross/dockcross-linux-arm64-lts b/.github/dockcross/dockcross-linux-arm64-lts index bc97231d..6afd72f6 100755 --- a/.github/dockcross/dockcross-linux-arm64-lts +++ b/.github/dockcross/dockcross-linux-arm64-lts @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DEFAULT_DOCKCROSS_IMAGE=dockcross/linux-arm64-lts:20231110-9476e91 +DEFAULT_DOCKCROSS_IMAGE=dockcross/linux-arm64-lts:20230601-c2f5366 #------------------------------------------------------------------------------ # Helpers @@ -268,10 +268,10 @@ exit $run_exit_code # This image is not intended to be run manually. # # To create a dockcross helper script for the -# dockcross/linux-arm64-lts:20231110-9476e91 image, run: +# dockcross/linux-arm64-lts:20230601-c2f5366 image, run: # -# docker run --rm dockcross/linux-arm64-lts:20231110-9476e91 > dockcross-linux-arm64-lts-20231110-9476e91 -# chmod +x dockcross-linux-arm64-lts-20231110-9476e91 +# docker run --rm dockcross/linux-arm64-lts:20230601-c2f5366 > dockcross-linux-arm64-lts-20230601-c2f5366 +# chmod +x dockcross-linux-arm64-lts-20230601-c2f5366 # # You may then wish to move the dockcross script to your PATH. # diff --git a/.github/dockcross/dockcross-manylinux2014-x64 b/.github/dockcross/dockcross-manylinux2014-x64 index 426c0142..5fc98484 100755 --- a/.github/dockcross/dockcross-manylinux2014-x64 +++ b/.github/dockcross/dockcross-manylinux2014-x64 @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux2014-x64:20231110-9476e91 +DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux2014-x64:20230601-c2f5366 #------------------------------------------------------------------------------ # Helpers @@ -268,10 +268,10 @@ exit $run_exit_code # This image is not intended to be run manually. # # To create a dockcross helper script for the -# dockcross/manylinux2014-x64:20231110-9476e91 image, run: +# dockcross/manylinux2014-x64:20230601-c2f5366 image, run: # -# docker run --rm dockcross/manylinux2014-x64:20231110-9476e91 > dockcross-manylinux2014-x64-20231110-9476e91 -# chmod +x dockcross-manylinux2014-x64-20231110-9476e91 +# docker run --rm dockcross/manylinux2014-x64:20230601-c2f5366 > dockcross-manylinux2014-x64-20230601-c2f5366 +# chmod +x dockcross-manylinux2014-x64-20230601-c2f5366 # # You may then wish to move the dockcross script to your PATH. # From fffa31b3abcd12334e302c53ad1695be02f01e90 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 27 May 2024 20:26:58 +0200 Subject: [PATCH 242/384] Update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c1af51e4..2f2d2dfd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b2969](https://img.shields.io/badge/llama.cpp-%23b2969-informational) +![llama.cpp b3008](https://img.shields.io/badge/llama.cpp-%23b3008-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -28,7 +28,7 @@ Access this library via Maven: de.kherud llama - 3.2.0 + 3.2.1 ``` From eb77b904e0d2d6a0d56be24c92123343d0f1d5c6 Mon Sep 17 00:00:00 2001 From: zdl010 Date: Sat, 29 Jun 2024 17:19:43 +0800 Subject: [PATCH 243/384] Upgrade llama.cpp to b3265, support gemma2, remove beam parameter[ https://github.com/ggerganov/llama.cpp/pull/7985 ] --- CMakeLists.txt | 2 +- pom.xml | 2 +- src/main/cpp/server.hpp | 1 - src/main/java/de/kherud/llama/ModelParameters.java | 9 --------- 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 550759f2..a7c2c4e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b3008 + GIT_TAG b3265 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/pom.xml b/pom.xml index 79f10350..95bf822b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.2.1 + 3.2.2 jar ${project.groupId}:${project.artifactId} diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index d3d4750a..5b9064de 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -2551,7 +2551,6 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); params.p_split = json_value(jparams, "p_split", default_params.p_split); - params.n_beams = json_value(jparams, "n_beams", default_params.n_beams); params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); params.n_print = json_value(jparams, "n_print", default_params.n_print); diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 1cbb6973..98342d37 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -32,7 +32,6 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_SPLIT_MODE = "split_mode"; private static final String PARAM_MAIN_GPU = "main_gpu"; private static final String PARAM_TENSOR_SPLIT = "tensor_split"; - private static final String PARAM_N_BEAMS = "n_beams"; private static final String PARAM_GRP_ATTN_N = "grp_attn_n"; private static final String PARAM_GRP_ATTN_W = "grp_attn_w"; private static final String PARAM_ROPE_FREQ_BASE = "rope_freq_base"; @@ -244,14 +243,6 @@ public ModelParameters setTensorSplit(float[] tensorSplit) { return this; } - /** - * Set usage of beam search of given width if non-zero. - */ - public ModelParameters setNBeams(int nBeams) { - parameters.put(PARAM_N_BEAMS, String.valueOf(nBeams)); - return this; - } - /** * Set the group-attention factor (default: 1) */ From 3b59efb95d288e592a9e1e1873f729486834cb66 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 30 Jun 2024 21:49:14 +0200 Subject: [PATCH 244/384] Start updating server code to b3265 --- src/main/cpp/jllama.cpp | 44 +++++---- src/main/cpp/server.hpp | 205 +++++++++++++++++++++++++++++++++------- src/main/cpp/utils.hpp | 59 ++++-------- 3 files changed, 212 insertions(+), 96 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 2298c190..251b4940 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -355,13 +355,12 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring jparams) { gpt_params params; - server_params sparams; auto *ctx_server = new server_context(); std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); - server_params_parse(json_params, sparams, params); + server_params_parse(json_params, params); if (json_value(json_params, "disable_log", false)) { @@ -372,9 +371,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo log_enable(); } - if (!sparams.system_prompt.empty()) + if (!params.system_prompt.empty()) { - ctx_server->system_prompt_set(sparams.system_prompt); + ctx_server->system_prompt_set(params.system_prompt); } if (params.model_alias == "unknown") @@ -395,6 +394,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::atomic state{SERVER_STATE_LOADING_MODEL}; + // Necessary similarity of prompt for slot selection + ctx_server->slot_prompt_similarity = params.slot_prompt_similarity; + // load the model if (!ctx_server->load_model(params)) { @@ -411,32 +413,36 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo const auto model_meta = ctx_server->model_meta(); // if a custom chat template is not supplied, we will use the one that comes with the model (if any) - if (sparams.chat_template.empty()) + if (params.chat_template.empty()) { if (!ctx_server->validate_model_chat_template()) { LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " "may cause the model to output suboptimal responses", {}); - sparams.chat_template = "chatml"; + params.chat_template = "chatml"; } } - ctx_server->chat_template = sparams.chat_template; - // print sample chat example to make it clear which template is used + // if a custom chat template is not supplied, we will use the one that comes with the model (if any) + if (params.chat_template.empty()) { - json chat; - chat.push_back({{"role", "system"}, {"content", "You are a helpful assistant"}}); - chat.push_back({{"role", "user"}, {"content", "Hello"}}); - chat.push_back({{"role", "assistant"}, {"content", "Hi there"}}); - chat.push_back({{"role", "user"}, {"content", "How are you?"}}); - - const std::string chat_example = format_chat(ctx_server->model, sparams.chat_template, chat); + if (!ctx_server->validate_model_chat_template()) + { + LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " + "may cause the model to output suboptimal responses", + {}); + params.chat_template = "chatml"; + } + } - LOG_INFO("chat template", { - {"chat_example", chat_example}, - {"built_in", sparams.chat_template.empty()}, - }); + // print sample chat example to make it clear which template is used + { + LOG_INFO("chat template", + { + {"chat_example", llama_chat_format_example(ctx_server->model, params.chat_template)}, + {"built_in", params.chat_template.empty()}, + }); } ctx_server->queue_tasks.on_new_task( diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 5b9064de..3b362371 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -103,12 +103,6 @@ struct slot_params json input_suffix; }; -struct server_params -{ - std::string chat_template = ""; - std::string system_prompt = ""; -}; - struct server_slot { int id; @@ -700,6 +694,9 @@ struct server_context server_metrics metrics; + // Necessary similarity of prompt for slot selection + float slot_prompt_similarity = 0.0f; + ~server_context() { if (ctx) @@ -866,28 +863,103 @@ struct server_context return prompt_tokens; } - server_slot *get_slot(int id) + server_slot *get_slot_by_id(int id) { - int64_t t_last = ggml_time_us(); - - server_slot *last_used = nullptr; - for (server_slot &slot : slots) { - if (slot.id == id && slot.available()) + if (slot.id == id) { return &slot; } + } + + return nullptr; + } + + server_slot *get_available_slot(const std::string &prompt) + { + server_slot *ret = nullptr; - // among all available slots, find the one that has been least recently used - if (slot.available() && slot.t_last_used < t_last) + // find the slot that has at least n% prompt similarity + if (ret == nullptr && slot_prompt_similarity != 0.0f && !prompt.empty()) + { + int max_lcp_len = 0; + float similarity = 0; + + for (server_slot &slot : slots) { - last_used = &slot; - t_last = slot.t_last_used; + // skip the slot if it is not available + if (!slot.available()) + { + continue; + } + + // skip the slot if it does not contains prompt + if (!slot.prompt.is_string()) + { + continue; + } + + // current slot's prompt + std::string slot_prompt = slot.prompt.get(); + + // length of the current slot's prompt + int slot_prompt_len = slot_prompt.size(); + + // length of the Longest Common Prefix between the current slot's prompt and the input prompt + int lcp_len = common_part(slot_prompt, prompt); + + // fraction of the common substring length compared to the current slot's prompt length + similarity = static_cast(lcp_len) / slot_prompt_len; + + // select the current slot if the criteria match + if (lcp_len > max_lcp_len && similarity > slot_prompt_similarity) + { + max_lcp_len = lcp_len; + ret = &slot; + } + } + + if (ret != nullptr) + { + LOG_VERBOSE("selected slot by lcp similarity", { + {"id_slot", ret->id}, + {"max_lcp_len", max_lcp_len}, + {"similarity", similarity}, + }); } } - return last_used; + // find the slot that has been least recently used + if (ret == nullptr) + { + int64_t t_last = ggml_time_us(); + for (server_slot &slot : slots) + { + // skip the slot if it is not available + if (!slot.available()) + { + continue; + } + + // select the current slot if the criteria match + if (slot.t_last_used < t_last) + { + t_last = slot.t_last_used; + ret = &slot; + } + } + + if (ret != nullptr) + { + LOG_VERBOSE("selected slot by lru", { + {"id_slot", ret->id}, + {"t_last", t_last}, + }); + } + } + + return ret; } bool launch_slot_with_task(server_slot &slot, const server_task &task) @@ -947,19 +1019,23 @@ struct server_context slot.params.input_suffix = json_value(data, "input_suffix", default_params.input_suffix); // get prompt + if (!task.infill) { const auto &prompt = data.find("prompt"); if (prompt == data.end()) { - send_error(task, R"(Either "prompt" or "messages" must be provided)", ERROR_TYPE_INVALID_REQUEST); + send_error(task, "\"prompt\" must be provided", ERROR_TYPE_INVALID_REQUEST); return false; } - slot.prompt = *prompt; - - if (slot.prompt.is_array() && slot.prompt.empty()) + if ((prompt->is_string()) || (prompt->is_array() && prompt->size() == 1 && prompt->at(0).is_string()) || + (prompt->is_array() && !prompt->empty() && prompt->at(0).is_number_integer())) + { + slot.prompt = *prompt; + } + else { - send_error(task, "\"prompt\" cannot be an empty array", ERROR_TYPE_INVALID_REQUEST); + send_error(task, "\"prompt\" must be a string or an array of integers", ERROR_TYPE_INVALID_REQUEST); return false; } } @@ -1663,7 +1739,25 @@ struct server_context switch (task.type) { case SERVER_TASK_TYPE_COMPLETION: { - server_slot *slot = get_slot(json_value(task.data, "id_slot", -1)); + const int id_slot = json_value(task.data, "id_slot", -1); + + server_slot *slot; + + if (id_slot != -1) + { + slot = get_slot_by_id(id_slot); + } + else + { + std::string prompt; + if (task.data.contains("prompt") && task.data.at("prompt").is_string()) + { + prompt = json_value(task.data, "prompt", std::string()); + } + + slot = get_available_slot(prompt); + } + if (slot == nullptr) { // if no slot is available, we defer this task for processing later @@ -1671,6 +1765,13 @@ struct server_context queue_tasks.defer(task); break; } + if (!slot->available()) + { + // if requested slot is unavailable, we defer this task for processing later + LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); + queue_tasks.defer(task); + break; + } if (task.data.contains("system_prompt")) { @@ -1790,12 +1891,19 @@ struct server_context break; case SERVER_TASK_TYPE_SLOT_SAVE: { int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot(id_slot); + server_slot *slot = get_slot_by_id(id_slot); if (slot == nullptr) { send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); break; } + if (!slot->available()) + { + // if requested slot is unavailable, we defer this task for processing later + LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); + queue_tasks.defer(task); + break; + } const size_t token_count = slot->cache_tokens.size(); const int64_t t_start = ggml_time_us(); @@ -1823,12 +1931,19 @@ struct server_context break; case SERVER_TASK_TYPE_SLOT_RESTORE: { int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot(id_slot); + server_slot *slot = get_slot_by_id(id_slot); if (slot == nullptr) { send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); break; } + if (!slot->available()) + { + // if requested slot is unavailable, we defer this task for processing later + LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); + queue_tasks.defer(task); + break; + } const int64_t t_start = ggml_time_us(); @@ -1865,12 +1980,19 @@ struct server_context break; case SERVER_TASK_TYPE_SLOT_ERASE: { int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot(id_slot); + server_slot *slot = get_slot_by_id(id_slot); if (slot == nullptr) { send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); break; } + if (!slot->available()) + { + // if requested slot is unavailable, we defer this task for processing later + LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); + queue_tasks.defer(task); + break; + } // Erase token cache const size_t n_erased = slot->cache_tokens.size(); @@ -2074,6 +2196,7 @@ struct server_context if (slot.infill) { + const bool add_bos = llama_should_add_bos_token(model); bool suff_rm_leading_spc = true; if (params.input_suffix.find_first_of(' ') == 0 && params.input_suffix.size() > 1) { @@ -2091,11 +2214,23 @@ struct server_context } prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); - prefix_tokens.insert(prefix_tokens.begin(), llama_token_bos(model)); // always add BOS - prefix_tokens.insert(prefix_tokens.end(), llama_token_suffix(model)); - prefix_tokens.insert(prefix_tokens.end(), suffix_tokens.begin(), suffix_tokens.end()); - prefix_tokens.push_back(llama_token_middle(model)); - prompt_tokens = prefix_tokens; + suffix_tokens.insert(suffix_tokens.begin(), llama_token_suffix(model)); + + auto embd_inp = params.spm_infill ? suffix_tokens : prefix_tokens; + auto embd_end = params.spm_infill ? prefix_tokens : suffix_tokens; + if (add_bos) + { + embd_inp.insert(embd_inp.begin(), llama_token_bos(model)); + } + embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); + + const llama_token middle_token = llama_token_middle(model); + if (middle_token >= 0) + { + embd_inp.push_back(middle_token); + } + + prompt_tokens = embd_inp; } else { @@ -2138,7 +2273,6 @@ struct server_context slot.state = SLOT_STATE_PROCESSING; slot.command = SLOT_COMMAND_NONE; slot.release(); - slot.print_timings(); send_error(slot, "input is too large to process. increase the physical batch size", ERROR_TYPE_SERVER); continue; @@ -2531,10 +2665,9 @@ struct server_context }; // parse the given jparams (see de.kherud.llama.args.ModelParameters#toString()) from JSON to the required C++ struct. -static void server_params_parse(json jparams, server_params &sparams, gpt_params ¶ms) +static void server_params_parse(json jparams, gpt_params ¶ms) { gpt_params default_params; - server_params default_sparams; params.seed = json_value(jparams, "seed", default_params.seed); params.n_threads = json_value(jparams, "n_threads", default_params.n_threads); @@ -2591,8 +2724,8 @@ static void server_params_parse(json jparams, server_params &sparams, gpt_params params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - sparams.system_prompt = json_value(jparams, "system_prompt", default_sparams.system_prompt); - sparams.chat_template = json_value(jparams, "chat_template", default_sparams.chat_template); + params.system_prompt = json_value(jparams, "system_prompt", default_params.system_prompt); + params.chat_template = json_value(jparams, "chat_template", default_params.chat_template); if (jparams.contains("n_gpu_layers")) { diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index ad7198c1..361be519 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -97,10 +97,7 @@ static inline void server_log(ggml_log_level level, const char *function, int li json log = json{ {"msg", message}, #if SERVER_VERBOSE - {"ts", time(nullptr)}, - {"level", log_level_to_string(level)}, - {"tid", ss_tid.str()}, - {"function", function}, + {"ts", time(nullptr)}, {"level", log_level_to_string(level)}, {"tid", ss_tid.str()}, {"function", function}, {"line", line}, #endif }; @@ -135,9 +132,7 @@ static inline void server_log(ggml_log_level level, const char *function, int li } #if SERVER_VERBOSE - ss << " | ts " << time(nullptr) - << " | tid " << ss_tid.str() - << " | " << function << " line " << line; + ss << " | ts " << time(nullptr) << " | tid " << ss_tid.str() << " | " << function << " line " << line; #endif const std::string str = ss.str(); @@ -157,50 +152,22 @@ static inline void server_log(ggml_log_level level, const char *function, int li // chat template utils // -// Check if the template supplied via "--chat-template" is supported or not. Returns true if it's valid -inline bool verify_custom_template(const std::string &tmpl) -{ - llama_chat_message chat[] = {{"user", "test"}}; - int res = llama_chat_apply_template(nullptr, tmpl.c_str(), chat, 1, true, nullptr, 0); - return res >= 0; -} - // Format given chat. If tmpl is empty, we take the template from model metadata inline std::string format_chat(const struct llama_model *model, const std::string &tmpl, const std::vector &messages) { - size_t alloc_size = 0; - // vector holding all allocated string to be passed to llama_chat_apply_template - std::vector str(messages.size() * 2); - std::vector chat(messages.size()); + std::vector chat; for (size_t i = 0; i < messages.size(); ++i) { const auto &curr_msg = messages[i]; - str[i * 2 + 0] = json_value(curr_msg, "role", std::string("")); - str[i * 2 + 1] = json_value(curr_msg, "content", std::string("")); - alloc_size += str[i * 2 + 1].length(); - chat[i].role = str[i * 2 + 0].c_str(); - chat[i].content = str[i * 2 + 1].c_str(); - } - - const char *ptr_tmpl = tmpl.empty() ? nullptr : tmpl.c_str(); - std::vector buf(alloc_size * 2); - - // run the first time to get the total output length - int32_t res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); - - // if it turns out that our buffer is too small, we resize it - if ((size_t)res > buf.size()) - { - buf.resize(res); - res = llama_chat_apply_template(model, ptr_tmpl, chat.data(), chat.size(), true, buf.data(), buf.size()); + std::string role = json_value(curr_msg, "role", std::string("")); + std::string content = json_value(curr_msg, "content", std::string("")); + chat.push_back({role, content}); } - const std::string formatted_chat(buf.data(), res); - + auto formatted_chat = llama_chat_apply_template(model, tmpl, chat, true); LOG_VERBOSE("formatted_chat", {{"text", formatted_chat.c_str()}}); - return formatted_chat; } @@ -322,6 +289,16 @@ static size_t common_part(const std::vector &a, const std::vector= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); @@ -674,7 +651,7 @@ static json format_embeddings_response_oaicompat(const json &request, const json { json data = json::array(); int i = 0; - for (const auto &elem : embeddings) + for (auto &elem : embeddings) { data.push_back( json{{"embedding", json_value(elem, "embedding", json::array())}, {"index", i++}, {"object", "embedding"}}); From 3c30196ab9d7b7c1ebb58ec97b11fad812077cf3 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 15 Jul 2024 20:56:09 +0200 Subject: [PATCH 245/384] fix embedding mode segmentation fault --- src/main/cpp/jllama.cpp | 2 +- src/main/cpp/server.hpp | 30 ++++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 251b4940..d59f3b77 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -486,7 +486,7 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv json chat; chat.push_back({{"role", "system"}, {"content", ctx_server->system_prompt}}); chat.push_back({{"role", "user"}, {"content", json_params["prompt"]}}); - json_params["prompt"] = format_chat(ctx_server->model, ctx_server->chat_template, chat); + json_params["prompt"] = format_chat(ctx_server->model, ctx_server->params.chat_template, chat); } const int id_task = ctx_server->queue_tasks.get_new_id(); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 3b362371..e635cfc5 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -680,11 +680,6 @@ struct server_context std::string system_prompt; std::vector system_tokens; - std::string name_user; // this should be the antiprompt - std::string name_assistant; - - std::string chat_template; - // slots / clients std::vector slots; json default_generation_settings_for_props; @@ -966,7 +961,7 @@ struct server_context { slot_params default_params; llama_sampling_params default_sparams; - auto &data = task.data; + const auto &data = task.data; slot.oaicompat = false; slot.oaicompat_model = ""; @@ -1622,12 +1617,12 @@ struct server_context } const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); - if (embd == nullptr) + if (embd == NULL) { embd = llama_get_embeddings_ith(ctx, i); } - if (embd == nullptr) + if (embd == NULL) { LOG_ERROR("failed to get embeddings", {{"token", batch.token[i]}, {"seq_id", batch.seq_id[i][0]}}); @@ -2176,6 +2171,11 @@ struct server_context int32_t n_batch = llama_n_batch(ctx); int32_t n_ubatch = llama_n_ubatch(ctx); + // track if this is an embedding or non-embedding batch + // if we've added sampled tokens above, we are in non-embedding mode + // -1: none, 0: non-embedding, 1: embedding + int32_t batch_type = batch.n_tokens > 0 ? 0 : -1; + // next, batch any pending prompts without exceeding n_batch if (params.cont_batching || batch.n_tokens == 0) { @@ -2370,6 +2370,17 @@ struct server_context } } + // check that we are in the right batch_type, if not defer the slot + bool slot_type = slot.embedding ? 1 : 0; + if (batch_type == -1) + { + batch_type = slot_type; + } + else if (batch_type != slot_type) + { + continue; + } + // keep only the common part int p0 = (int)system_tokens.size() + slot.n_past; if (!llama_kv_cache_seq_rm(ctx, slot.id + 1, p0, -1)) @@ -2478,6 +2489,9 @@ struct server_context {"n_tokens", batch.n_tokens}, }); + // make sure we're in the right embedding mode + llama_set_embeddings(ctx, batch_type == 1); + // process the created batch of tokens for (int32_t i = 0; i < batch.n_tokens; i += n_batch) { From 11520f3cb40e73fcf588ee7fa21dfa3b70d3827d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 15 Jul 2024 20:56:23 +0200 Subject: [PATCH 246/384] upgrade to llama.cpp b3398 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7c2c4e1..1ec133ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b3265 + GIT_TAG b3398 ) FetchContent_MakeAvailable(llama.cpp) From b7a857b02852fdbffee7b7746c65d78f46881e1e Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 15 Jul 2024 21:40:30 +0200 Subject: [PATCH 247/384] reduce unit tests context size --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index a5454c59..c7ece673 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -1,7 +1,6 @@ package de.kherud.llama; import java.io.*; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.regex.Pattern; @@ -24,6 +23,7 @@ public static void setup() { // LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> System.out.println(level + ": " + msg)); model = new LlamaModel( new ModelParameters() + .setNCtx(128) .setModelFilePath("models/codellama-7b.Q2_K.gguf") // .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setNGpuLayers(43) From d37a50c89a6fcc3af5ade841ec7a6cffc50cc7aa Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Mon, 5 Aug 2024 21:37:08 +0200 Subject: [PATCH 248/384] update to llama.cpp b3525 --- CMakeLists.txt | 2 +- src/main/cpp/server.hpp | 18 ++++--- src/main/cpp/utils.hpp | 49 ++++++++++++------- .../java/de/kherud/llama/ModelParameters.java | 9 ---- 4 files changed, 43 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ec133ed..e7ce9fc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b3398 + GIT_TAG b3525 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index e635cfc5..0601dac4 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -725,7 +725,10 @@ struct server_context // dedicate one sequence to the system prompt params.n_parallel += 1; - std::tie(model, ctx) = llama_init_from_gpt_params(params); + llama_init_result llama_init = llama_init_from_gpt_params(params); + + model = llama_init.model; + ctx = llama_init.context; params.n_parallel -= 1; // but be sneaky about it if (model == nullptr) { @@ -783,6 +786,8 @@ struct server_context slot.ga_n = ga_n; slot.ga_w = ga_w; + slot.sparams = params.sparams; + slot.reset(); slots.push_back(slot); @@ -960,15 +965,17 @@ struct server_context bool launch_slot_with_task(server_slot &slot, const server_task &task) { slot_params default_params; - llama_sampling_params default_sparams; - const auto &data = task.data; + // Sampling parameter defaults are loaded from the global server context (but individual requests can still + // override them) + llama_sampling_params default_sparams = params.sparams; + auto &data = task.data; slot.oaicompat = false; slot.oaicompat_model = ""; slot.params.stream = json_value(data, "stream", false); slot.params.cache_prompt = json_value(data, "cache_prompt", false); - slot.params.n_predict = json_value(data, "n_predict", default_params.n_predict); + slot.params.n_predict = json_value(data, "n_predict", json_value(data, "max_tokens", default_params.n_predict)); slot.sparams.top_k = json_value(data, "top_k", default_sparams.top_k); slot.sparams.top_p = json_value(data, "top_p", default_sparams.top_p); slot.sparams.min_p = json_value(data, "min_p", default_sparams.min_p); @@ -1286,7 +1293,7 @@ struct server_context bool process_token(completion_token_output &result, server_slot &slot) { // remember which tokens were sampled - used for repetition penalties during sampling - const std::string token_str = llama_token_to_piece(ctx, result.tok, false); + const std::string token_str = llama_token_to_piece(ctx, result.tok, params.special); slot.sampled = result.tok; // search stop word and delete it @@ -2728,7 +2735,6 @@ static void server_params_parse(json jparams, gpt_params ¶ms) params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); params.lora_adapter = json_value(jparams, "lora_adapter", default_params.lora_adapter); - params.lora_base = json_value(jparams, "lora_base", default_params.lora_base); params.embedding = json_value(jparams, "embedding", default_params.embedding); params.escape = json_value(jparams, "escape", default_params.escape); params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 361be519..7de7eac4 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -161,8 +161,37 @@ inline std::string format_chat(const struct llama_model *model, const std::strin for (size_t i = 0; i < messages.size(); ++i) { const auto &curr_msg = messages[i]; + std::string role = json_value(curr_msg, "role", std::string("")); - std::string content = json_value(curr_msg, "content", std::string("")); + + std::string content; + if (curr_msg.contains("content")) + { + if (curr_msg["content"].is_string()) + { + content = curr_msg["content"].get(); + } + else if (curr_msg["content"].is_array()) + { + for (const auto &part : curr_msg["content"]) + { + if (part.contains("text")) + { + content += "\n" + part["text"].get(); + } + } + } + else + { + throw std::runtime_error( + "Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); + } + } + else + { + throw std::runtime_error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); + } + chat.push_back({role, content}); } @@ -409,24 +438,6 @@ static json oaicompat_completion_params_parse(const struct llama_model *model, llama_params["__oaicompat"] = true; - // Map OpenAI parameters to llama.cpp parameters - // - // For parameters that are defined by the OpenAI documentation (e.g. - // temperature), we explicitly specify OpenAI's intended default; we - // need to do that because sometimes OpenAI disagrees with llama.cpp - // - // https://platform.openai.com/docs/api-reference/chat/create - llama_sampling_params default_sparams; - llama_params["model"] = json_value(body, "model", std::string("unknown")); - llama_params["frequency_penalty"] = json_value(body, "frequency_penalty", 0.0); - llama_params["logit_bias"] = json_value(body, "logit_bias", json::object()); - llama_params["n_predict"] = json_value(body, "max_tokens", -1); - llama_params["presence_penalty"] = json_value(body, "presence_penalty", 0.0); - llama_params["seed"] = json_value(body, "seed", LLAMA_DEFAULT_SEED); - llama_params["stream"] = json_value(body, "stream", false); - llama_params["temperature"] = json_value(body, "temperature", 1.0); - llama_params["top_p"] = json_value(body, "top_p", 1.0); - // Apply chat template to the list of messages llama_params["prompt"] = format_chat(model, chat_template, body.at("messages")); diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 98342d37..3b34d3f3 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -54,7 +54,6 @@ public final class ModelParameters extends JsonParameters { private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; private static final String PARAM_LORA_ADAPTER = "lora_adapter"; - private static final String PARAM_LORA_BASE = "lora_base"; private static final String PARAM_EMBEDDING = "embedding"; private static final String PARAM_CONT_BATCHING = "cont_batching"; private static final String PARAM_FLASH_ATTENTION = "flash_attn"; @@ -475,14 +474,6 @@ public ModelParameters setLoraAdapters(Map loraAdapters) { return this; } - /** - * Set an optional model to use as a base for the layers modified by the LoRA adapter - */ - public ModelParameters setLoraBase(String loraBase) { - parameters.put(PARAM_LORA_BASE, toJsonString(loraBase)); - return this; - } - /** * Whether to load model with embedding support */ From 6bb63e1f08e74f866f5cb5e9c90b7dfcbc514f41 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 18:29:51 +0200 Subject: [PATCH 249/384] add ggml shared library to binding --- CMakeLists.txt | 5 +-- .../java/de/kherud/llama/LlamaLoader.java | 38 +++++++++---------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e7ce9fc9..32e9e2ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,6 @@ project(jllama CXX) include(FetchContent) set(BUILD_SHARED_LIBS ON) -set(LLAMA_STATIC OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) option(LLAMA_VERBOSE "llama: verbose output" OFF) @@ -98,11 +97,11 @@ target_compile_definitions(jllama PRIVATE ) if(OS_NAME STREQUAL "Windows") - set_target_properties(jllama llama PROPERTIES + set_target_properties(jllama llama ggml PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} ) else() - set_target_properties(jllama llama PROPERTIES + set_target_properties(jllama llama ggml PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${JLLAMA_DIR} ) endif() diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 5aa84001..a0239d20 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -62,6 +62,7 @@ static synchronized void initialize() throws UnsatisfiedLinkError { System.err.println("'ggml-metal.metal' not found"); } } + loadNativeLibrary("ggml"); loadNativeLibrary("llama"); loadNativeLibrary("jllama"); extracted = true; @@ -96,12 +97,7 @@ private static void cleanPath(Path path) { private static void loadNativeLibrary(String name) { List triedPaths = new LinkedList<>(); - // Try loading library from de.kherud.llama.lib.path library path - String nativeLibName = System.getProperty("de.kherud.llama.lib.name"); - if (nativeLibName == null) { - nativeLibName = System.mapLibraryName(name); - } - + String nativeLibName = System.mapLibraryName(name); String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); if (nativeLibPath != null) { Path path = Paths.get(nativeLibPath, nativeLibName); @@ -125,21 +121,7 @@ private static void loadNativeLibrary(String name) { } } - // Load the os-dependent library from the jar file - nativeLibPath = getNativeResourcePath(); - if (hasNativeLib(nativeLibPath, nativeLibName)) { - // temporary library folder - String tempFolder = getTempDir().getAbsolutePath(); - // Try extracting the library from jar - if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { - return; - } - else { - triedPaths.add(nativeLibPath); - } - } - - // As a last resort try from java.library.path + // Try to load the library from java.library.path String javaLibraryPath = System.getProperty("java.library.path", ""); for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { if (ldPath.isEmpty()) { @@ -154,6 +136,20 @@ private static void loadNativeLibrary(String name) { } } + // As a last resort try load the os-dependent library from the jar file + nativeLibPath = getNativeResourcePath(); + if (hasNativeLib(nativeLibPath, nativeLibName)) { + // temporary library folder + String tempFolder = getTempDir().getAbsolutePath(); + // Try extracting the library from jar + if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { + return; + } + else { + triedPaths.add(nativeLibPath); + } + } + throw new UnsatisfiedLinkError( String.format( "No native library found for os.name=%s, os.arch=%s, paths=[%s]", From 6d0c4af6ae8d80916a3bea718accfa0cdf2b6765 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 18:30:15 +0200 Subject: [PATCH 250/384] update library compilation readme --- README.md | 86 +++++++++++++++++-------------------------------------- 1 file changed, 26 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 2f2d2dfd..febf4f14 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) -The main goal of llama.cpp is to run the LLaMA model using 4-bit integer quantization on a MacBook. -This repository provides Java bindings for the C++ library. +Inference of Meta's LLaMA model (and others) in pure C/C++. **You are welcome to contribute** @@ -39,7 +38,7 @@ There are multiple [examples](src/test/java/examples): We support CPU inference for the following platforms out of the box: - Linux x86-64, aarch64 -- MacOS x86-64, aarch64 (M1) +- MacOS x86-64, aarch64 (M-series) - Windows x86-64, x64, arm (32 bit) If any of these match your platform, you can include the Maven dependency and get started. @@ -47,82 +46,49 @@ If any of these match your platform, you can include the Maven dependency and ge ### Setup required If none of the above listed platforms matches yours, currently you have to compile the library yourself (also if you -want GPU acceleration, see below). +want GPU acceleration). -This requires: +This consists of two steps: 1) Compiling the libraries and 2) putting them in the right location. -- Git -- A C++11 conforming compiler -- The [cmake](https://www.cmake.org/) build system -- Java, Maven, and setting [JAVA_HOME](https://www.baeldung.com/java-home-on-windows-7-8-10-mac-os-x-linux) +##### Library Compilation -Make sure everything works by running - -``` -g++ -v # depending on your compiler -java -version -mvn -v -echo $JAVA_HOME # for linux/macos -echo %JAVA_HOME% # for windows -``` - -Then, checkout [llama.cpp](https://github.com/ggerganov/llama.cpp) to know which build arguments to use (e.g. for CUDA support). -Finally, you have to run following commands in the directory of this repository (java-llama.cpp). -Remember to add your build arguments in the fourth line (`cmake ..`): +First, have a look at [llama.cpp](https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md) to know which build arguments to use (e.g. for CUDA support). +Any build option of llama.cpp works equivalently for this project. +You then have to run the following commands in the directory of this repository (java-llama.cpp): ```shell -mvn compile -mkdir build -cd build -cmake .. # add any other arguments for your backend -cmake --build . --config Release +mvn compile # don't forget this line +cmake -B build # add any other arguments for your backend, e.g. -DGGML_CUDA=ON +cmake --build build --config Release ``` > [!TIP] -> Use `-DLLAMA_CURL=ON` to download models via Java code using `ModelParameters#setModelUrl(String)`. +> Use `-DGGML_CURL=ON` to download models via Java code using `ModelParameters#setModelUrl(String)`. -All required files will be put in a resources directory matching your platform, which will appear in the cmake output. For example something like: +All compiled libraries will be put in a resources directory matching your platform, which will appear in the cmake output. For example something like: ```shell -- Installing files to /java-llama.cpp/src/main/resources/de/kherud/llama/Linux/x86_64 ``` -This includes: - -- Linux: `libllama.so`, `libjllama.so` -- MacOS: `libllama.dylib`, `libjllama.dylib`, `ggml-metal.metal` -- Windows: `llama.dll`, `jllama.dll` - -If you then compile your own JAR from this directory, you are ready to go. Otherwise, if you still want to use the library -as a Maven dependency, see below how to set the necessary paths in order for Java to find your compiled libraries. +#### Library Location -### Custom llama.cpp Setup (GPU acceleration) +This project has to load three shared libraries: -This repository provides default support for CPU based inference. You can compile `llama.cpp` any way you want, however (see [Setup Required](#setup-required)). -In order to use your self-compiled library, set either of the [JVM options](https://www.jetbrains.com/help/idea/tuning-the-ide.html#configure-jvm-options): +- ggml +- llama +- jllama -- `de.kherud.llama.lib.path`, for example `-Dde.kherud.llama.lib.path=/directory/containing/lib` -- `java.library.path`, for example `-Djava.library.path=/directory/containing/lib` - -This repository uses [`System#mapLibraryName`](https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/lang/System.html) to determine the name of the shared library for you platform. -If for any reason your library has a different name, you can set it with - -- `de.kherud.llama.lib.name`, for example `-Dde.kherud.llama.lib.name=myname.so` - -For compiling `llama.cpp`, refer to the official [readme](https://github.com/ggerganov/llama.cpp#build) for details. -The library can be built with the `llama.cpp` project: - -```shell -mkdir build -cd build -cmake .. -DBUILD_SHARED_LIBS=ON # add any other arguments for your backend -cmake --build . --config Release -``` +Note, that the file names vary between operating systems, e.g., `ggml.dll` on Windows, `libggml.so` on Linux, and `libggml.dylib` on macOS. -Look for the shared library in `build`. +The application will search in the following order in the following locations: -> [!IMPORTANT] -> If you are running MacOS with Metal, you have to put the file `ggml-metal.metal` from `build/bin` in the same directory as the shared library. +- In `de.kherud.llama.lib.path`: Use this option if you want a custom location for your shared libraries, i.e., set VM option `-Dde.kherud.llama.lib.path=/path/to/directory`. +- In `java.library.path`: These are predefined locations for each OS, e.g., `/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib` on Linux. + You can find out the locations using `System.out.println(System.getProperty("java.library.path"))`. + Use this option if you want to install the shared libraries as system libraries. +- From the JAR: If any of the libraries weren't found yet, the application will try to use a prebuilt shared library. + This of course only works for the [supported platforms](#no-setup-required) . ## Documentation From 67bde1d61de6fa44ee37aa21fb13d1f8a21fd0f8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 18:48:08 +0200 Subject: [PATCH 251/384] minor readme update --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index febf4f14..60a1dcec 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Access this library via Maven: ``` -There are multiple [examples](src/test/java/examples): +There are multiple [examples](src/test/java/examples). ### No Setup required @@ -83,13 +83,17 @@ Note, that the file names vary between operating systems, e.g., `ggml.dll` on Wi The application will search in the following order in the following locations: -- In `de.kherud.llama.lib.path`: Use this option if you want a custom location for your shared libraries, i.e., set VM option `-Dde.kherud.llama.lib.path=/path/to/directory`. -- In `java.library.path`: These are predefined locations for each OS, e.g., `/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib` on Linux. +- In **de.kherud.llama.lib.path**: Use this option if you want a custom location for your shared libraries, i.e., set VM option `-Dde.kherud.llama.lib.path=/path/to/directory`. +- In **java.library.path**: These are predefined locations for each OS, e.g., `/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib` on Linux. You can find out the locations using `System.out.println(System.getProperty("java.library.path"))`. Use this option if you want to install the shared libraries as system libraries. -- From the JAR: If any of the libraries weren't found yet, the application will try to use a prebuilt shared library. +- From the **JAR**: If any of the libraries weren't found yet, the application will try to use a prebuilt shared library. This of course only works for the [supported platforms](#no-setup-required) . +Not all libraries have to be in the same location. +For example, if you already have a llama.cpp and ggml version you can install them as a system library and rely on the jllama library from the JAR. +This way, you don't have to compile anything. + ## Documentation ### Example From 6e19f209e3b0160763d7b1bb9fd40c2423b0caac Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 18:48:19 +0200 Subject: [PATCH 252/384] update pom.xml version to 3.3.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 95bf822b..5b00bb42 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.2.2 + 3.3.0 jar ${project.groupId}:${project.artifactId} From 531472422706092eb6bc93d76da7a8d50a9c037d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 17:19:20 +0200 Subject: [PATCH 253/384] add debug statement --- src/test/java/de/kherud/llama/LlamaModelTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index c7ece673..8fa8baa4 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -213,6 +213,7 @@ public void testLogStdout() { System.out.println("########## Log Text ##########"); LlamaModel.setLogger(LogFormat.TEXT, null); + System.out.println("DEBUG: Logger set"); model.complete(params); System.out.println("########## Log JSON ##########"); From 736c3e708a0e6224605728c2009275709af072a2 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 17:36:37 +0200 Subject: [PATCH 254/384] update debug statements --- src/main/cpp/jllama.cpp | 12 ++++++++++++ src/main/cpp/server.hpp | 4 ++++ src/main/cpp/utils.hpp | 12 ++++++++++++ src/test/java/de/kherud/llama/LlamaModelTest.java | 1 - 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index d59f3b77..2e94b446 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -477,10 +477,14 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + std::cout << "DEBUG " << 1 << std::endl; + std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); + std::cout << "DEBUG " << 2 << std::endl; + if (json_params.value("use_chat_template", false)) { json chat; @@ -489,8 +493,12 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv json_params["prompt"] = format_chat(ctx_server->model, ctx_server->params.chat_template, chat); } + std::cout << "DEBUG " << 3 << std::endl; + const int id_task = ctx_server->queue_tasks.get_new_id(); + std::cout << "DEBUG " << 4 << std::endl; ctx_server->queue_results.add_waiting_task_id(id_task); + std::cout << "DEBUG " << 5 << std::endl; ctx_server->request_completion(id_task, -1, json_params, infill, false); return id_task; @@ -501,6 +509,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + std::cout << "DEBUG " << 8 << std::endl; server_task_result result = ctx_server->queue_results.recv(id_task); if (result.error) @@ -510,12 +519,14 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } + std::cout << "DEBUG " << 9 << std::endl; std::string response = result.data["content"].get(); if (result.stop) { ctx_server->queue_results.remove_waiting_task_id(id_task); } + std::cout << "DEBUG " << 10 << std::endl; jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); if (result.data.contains("completion_probabilities")) @@ -536,6 +547,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE } } } + std::cout << "DEBUG " << 11 << std::endl; jbyteArray jbytes = parse_jbytes(env, response); return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 0601dac4..fcbe167b 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1661,6 +1661,8 @@ struct server_context task.embedding = embedding; task.type = SERVER_TASK_TYPE_COMPLETION; + std::cout << "DEBUG " << 6 << std::endl; + // when a completion task's prompt array is not a singleton, we split it into multiple requests // otherwise, it's a single-prompt task, we actually queue it // if there's numbers in the prompt array it will be treated as an array of tokens @@ -1694,6 +1696,8 @@ struct server_context { queue_tasks.post(task); } + + std::cout << "DEBUG " << 7 << std::endl; } void request_cancel(int id_task) diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 7de7eac4..9926ea97 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -89,6 +89,7 @@ static const char *log_level_to_string(ggml_log_level level) static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, const json &extra) { + std::cout << "DEBUG LOG " << 1 << std::endl; std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); @@ -119,32 +120,43 @@ static inline void server_log(ggml_log_level level, const char *function, int li } else { + std::cout << "DEBUG LOG " << 2 << std::endl; std::stringstream ss; ss << message; + std::cout << "DEBUG LOG " << 3 << std::endl; if (!extra.empty()) { + std::cout << "DEBUG LOG " << 4 << std::endl; for (const auto &el : extra.items()) { const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); ss << " " << el.key() << "=" << value; } + std::cout << "DEBUG LOG " << 5 << std::endl; } + std::cout << "DEBUG LOG " << 6 << std::endl; #if SERVER_VERBOSE ss << " | ts " << time(nullptr) << " | tid " << ss_tid.str() << " | " << function << " line " << line; #endif + std::cout << "DEBUG LOG " << 7 << std::endl; const std::string str = ss.str(); if (log_callback == nullptr) { + std::cout << "DEBUG LOG " << 8 << std::endl; printf("[%4s] %.*s\n", log_level_to_string(level), (int)str.size(), str.data()); + std::cout << "DEBUG LOG " << 9 << std::endl; } else { + std::cout << "DEBUG LOG " << 10 << std::endl; log_callback(level, str.c_str(), nullptr); + std::cout << "DEBUG LOG " << 11 << std::endl; } } + std::cout << "DEBUG LOG " << 12 << std::endl; fflush(stdout); } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 8fa8baa4..c7ece673 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -213,7 +213,6 @@ public void testLogStdout() { System.out.println("########## Log Text ##########"); LlamaModel.setLogger(LogFormat.TEXT, null); - System.out.println("DEBUG: Logger set"); model.complete(params); System.out.println("########## Log JSON ##########"); From b3b10eb161ecc1aa32a2426ebe5fe5c34915f95b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 19:37:32 +0200 Subject: [PATCH 255/384] update debug statements --- src/main/cpp/jllama.cpp | 15 +++------------ src/main/cpp/server.hpp | 4 ---- src/main/cpp/utils.hpp | 12 ------------ src/main/java/de/kherud/llama/LlamaModel.java | 1 + 4 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 2e94b446..4fffa9bc 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -358,6 +358,8 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo auto *ctx_server = new server_context(); + std::cout << "New model: " << ctx_server << std::endl; + std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); server_params_parse(json_params, params); @@ -476,15 +478,12 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - - std::cout << "DEBUG " << 1 << std::endl; + std::cout << "Request completion: " << ctx_server << std::endl; std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); - std::cout << "DEBUG " << 2 << std::endl; - if (json_params.value("use_chat_template", false)) { json chat; @@ -493,12 +492,8 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv json_params["prompt"] = format_chat(ctx_server->model, ctx_server->params.chat_template, chat); } - std::cout << "DEBUG " << 3 << std::endl; - const int id_task = ctx_server->queue_tasks.get_new_id(); - std::cout << "DEBUG " << 4 << std::endl; ctx_server->queue_results.add_waiting_task_id(id_task); - std::cout << "DEBUG " << 5 << std::endl; ctx_server->request_completion(id_task, -1, json_params, infill, false); return id_task; @@ -509,7 +504,6 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - std::cout << "DEBUG " << 8 << std::endl; server_task_result result = ctx_server->queue_results.recv(id_task); if (result.error) @@ -519,14 +513,12 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - std::cout << "DEBUG " << 9 << std::endl; std::string response = result.data["content"].get(); if (result.stop) { ctx_server->queue_results.remove_waiting_task_id(id_task); } - std::cout << "DEBUG " << 10 << std::endl; jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); if (result.data.contains("completion_probabilities")) @@ -547,7 +539,6 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE } } } - std::cout << "DEBUG " << 11 << std::endl; jbyteArray jbytes = parse_jbytes(env, response); return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index fcbe167b..0601dac4 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1661,8 +1661,6 @@ struct server_context task.embedding = embedding; task.type = SERVER_TASK_TYPE_COMPLETION; - std::cout << "DEBUG " << 6 << std::endl; - // when a completion task's prompt array is not a singleton, we split it into multiple requests // otherwise, it's a single-prompt task, we actually queue it // if there's numbers in the prompt array it will be treated as an array of tokens @@ -1696,8 +1694,6 @@ struct server_context { queue_tasks.post(task); } - - std::cout << "DEBUG " << 7 << std::endl; } void request_cancel(int id_task) diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 9926ea97..7de7eac4 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -89,7 +89,6 @@ static const char *log_level_to_string(ggml_log_level level) static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, const json &extra) { - std::cout << "DEBUG LOG " << 1 << std::endl; std::stringstream ss_tid; ss_tid << std::this_thread::get_id(); @@ -120,43 +119,32 @@ static inline void server_log(ggml_log_level level, const char *function, int li } else { - std::cout << "DEBUG LOG " << 2 << std::endl; std::stringstream ss; ss << message; - std::cout << "DEBUG LOG " << 3 << std::endl; if (!extra.empty()) { - std::cout << "DEBUG LOG " << 4 << std::endl; for (const auto &el : extra.items()) { const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); ss << " " << el.key() << "=" << value; } - std::cout << "DEBUG LOG " << 5 << std::endl; } - std::cout << "DEBUG LOG " << 6 << std::endl; #if SERVER_VERBOSE ss << " | ts " << time(nullptr) << " | tid " << ss_tid.str() << " | " << function << " line " << line; #endif - std::cout << "DEBUG LOG " << 7 << std::endl; const std::string str = ss.str(); if (log_callback == nullptr) { - std::cout << "DEBUG LOG " << 8 << std::endl; printf("[%4s] %.*s\n", log_level_to_string(level), (int)str.size(), str.data()); - std::cout << "DEBUG LOG " << 9 << std::endl; } else { - std::cout << "DEBUG LOG " << 10 << std::endl; log_callback(level, str.c_str(), nullptr); - std::cout << "DEBUG LOG " << 11 << std::endl; } } - std::cout << "DEBUG LOG " << 12 << std::endl; fflush(stdout); } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index b78e056e..5a34935c 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -42,6 +42,7 @@ public class LlamaModel implements AutoCloseable { */ public LlamaModel(ModelParameters parameters) { loadModel(parameters.toString()); + System.out.println(ctx); } /** From 2b1150ff0378278e10aa17b3c681abc16da668da Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 19:37:42 +0200 Subject: [PATCH 256/384] update to llama.cpp b3534 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32e9e2ff..1d0e8e98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ FetchContent_MakeAvailable(json) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b3525 + GIT_TAG b3534 ) FetchContent_MakeAvailable(llama.cpp) From 0705d0e2a4c19974965470152315b0bd021757bb Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 6 Aug 2024 20:08:52 +0200 Subject: [PATCH 257/384] update debug output --- .github/workflows/ci.yml | 10 ++++++++++ src/main/cpp/jllama.cpp | 3 --- src/main/java/de/kherud/llama/LlamaModel.java | 1 - 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3fef12a6..60a06ccd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,11 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test + - if: failure() + uses: actions/upload-artifact@v3 + with: + path: ${{ github.workspace }}/hs_err_pid*.log + if-no-files-found: warn build-and-test-macos: name: ${{ matrix.target.runner }} @@ -75,3 +80,8 @@ jobs: run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests run: mvn test + - if: failure() + uses: actions/upload-artifact@v3 + with: + path: ${{ github.workspace }}\hs_err_pid*.log + if-no-files-found: warn diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 4fffa9bc..d59f3b77 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -358,8 +358,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo auto *ctx_server = new server_context(); - std::cout << "New model: " << ctx_server << std::endl; - std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); server_params_parse(json_params, params); @@ -478,7 +476,6 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - std::cout << "Request completion: " << ctx_server << std::endl; std::string c_params = parse_jstring(env, jparams); json json_params = json::parse(c_params); diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 5a34935c..b78e056e 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -42,7 +42,6 @@ public class LlamaModel implements AutoCloseable { */ public LlamaModel(ModelParameters parameters) { loadModel(parameters.toString()); - System.out.println(ctx); } /** From 2ddf78997fed56f1d5299769e829b60595b7146a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 19:51:21 +0200 Subject: [PATCH 258/384] run model in Java thread for debugging --- src/main/cpp/jllama.cpp | 17 ++--------------- src/main/java/de/kherud/llama/LlamaModel.java | 10 +++++++++- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index d59f3b77..03405d5b 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -454,22 +454,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - std::thread t([ctx_server]() { - JNIEnv *env; - jint res = g_vm->GetEnv((void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { - res = g_vm->AttachCurrentThread((void **)&env, nullptr); - if (res != JNI_OK) - { - throw std::runtime_error("Failed to attach thread to JVM"); - } - } - ctx_server->queue_tasks.start_loop(); - }); - t.detach(); - env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); + + ctx_server->queue_tasks.start_loop(); } JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index b78e056e..26246d50 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -28,6 +28,7 @@ public class LlamaModel implements AutoCloseable { @Native private long ctx; + private final Thread modelThread; /** * Load with the given {@link ModelParameters}. Make sure to either set @@ -41,7 +42,14 @@ public class LlamaModel implements AutoCloseable { * @throws LlamaException if no model could be loaded from the given file path */ public LlamaModel(ModelParameters parameters) { - loadModel(parameters.toString()); + this.modelThread = new Thread(() -> loadModel(parameters.toString())); + this.modelThread.start(); + try { + Thread.sleep(30000); + } + catch (InterruptedException e) { + throw new RuntimeException(e); + } } /** From 61f9294b8979690ccc2c18b586c5f5caac5b896d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:04:52 +0200 Subject: [PATCH 259/384] windows cmake build in debug mode --- .github/build.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/build.bat b/.github/build.bat index a904405e..89ebaec4 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config Release +cmake --build build --config Debug -if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file +if errorlevel 1 exit /b %ERRORLEVEL% From 05d1b03a510edb46d0d853130c256b4a4b101410 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:13:12 +0200 Subject: [PATCH 260/384] ci workflow add verbose flag --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60a06ccd..17923928 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile - .github/build.sh + .github/build.sh -DLLAMA_VERBOSE=ON - name: Download model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests @@ -42,11 +42,11 @@ jobs: target: - { runner: macos-13, - cmake: '-DLLAMA_METAL=OFF' + cmake: '-DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON' } - { runner: macos-14, - cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF' + cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON' } steps: - uses: actions/checkout@v4 @@ -75,7 +75,7 @@ jobs: - name: Build libraries run: | mvn compile - .github\build.bat + .github\build.bat -DLLAMA_VERBOSE=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests From 2d4bfcf9340f759cdb9706aa1899ecf974e983d8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:13:26 +0200 Subject: [PATCH 261/384] cmake file update windows debug output --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d0e8e98..43a0c725 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,6 +98,7 @@ target_compile_definitions(jllama PRIVATE if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama ggml PROPERTIES + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${JLLAMA_DIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} ) else() From 3e3aee7285b2cae018e072652cb1f79124ac3931 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:22:24 +0200 Subject: [PATCH 262/384] Revert "run model in Java thread for debugging" This reverts commit 08c42561e29db5c90d46bed5c99af4dcb0f462df. --- src/main/cpp/jllama.cpp | 17 +++++++++++++++-- src/main/java/de/kherud/llama/LlamaModel.java | 10 +--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 03405d5b..d59f3b77 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -454,9 +454,22 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); + std::thread t([ctx_server]() { + JNIEnv *env; + jint res = g_vm->GetEnv((void **)&env, JNI_VERSION_1_6); + if (res == JNI_EDETACHED) + { + res = g_vm->AttachCurrentThread((void **)&env, nullptr); + if (res != JNI_OK) + { + throw std::runtime_error("Failed to attach thread to JVM"); + } + } + ctx_server->queue_tasks.start_loop(); + }); + t.detach(); - ctx_server->queue_tasks.start_loop(); + env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); } JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 26246d50..b78e056e 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -28,7 +28,6 @@ public class LlamaModel implements AutoCloseable { @Native private long ctx; - private final Thread modelThread; /** * Load with the given {@link ModelParameters}. Make sure to either set @@ -42,14 +41,7 @@ public class LlamaModel implements AutoCloseable { * @throws LlamaException if no model could be loaded from the given file path */ public LlamaModel(ModelParameters parameters) { - this.modelThread = new Thread(() -> loadModel(parameters.toString())); - this.modelThread.start(); - try { - Thread.sleep(30000); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } + loadModel(parameters.toString()); } /** From 34da54e8af66b7ca58d6977fc098a06833eefd19 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:22:40 +0200 Subject: [PATCH 263/384] Revert "windows cmake build in debug mode" This reverts commit 0b6dff5a6aca925f229a8753cc51c4aae952086c. --- .github/build.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/build.bat b/.github/build.bat index 89ebaec4..a904405e 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config Debug +cmake --build build --config Release -if errorlevel 1 exit /b %ERRORLEVEL% +if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file From 02433a608d702d4fed9e05f8644e5db3f4ec9d8f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:32:53 +0200 Subject: [PATCH 264/384] ignore log stdout test --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index c7ece673..01f98b79 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -8,6 +8,7 @@ import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; public class LlamaModelTest { @@ -204,6 +205,7 @@ public void testLogJSON() { } } + @Ignore @Test public void testLogStdout() { // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. From ce754718bb4f48ebbdef1e511db80da2a4e73032 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:47:32 +0200 Subject: [PATCH 265/384] Revert "ignore log stdout test" This reverts commit 7ed0dbe4d7916ee259ff2fd2631a01b6a1ea0746. --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 01f98b79..c7ece673 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -8,7 +8,6 @@ import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; public class LlamaModelTest { @@ -205,7 +204,6 @@ public void testLogJSON() { } } - @Ignore @Test public void testLogStdout() { // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. From 4c04cbc9a194d6530fc216894e7d42357818cbb4 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 20:51:22 +0200 Subject: [PATCH 266/384] release workflow enable macos test, disable windows --- .github/workflows/release.yaml | 37 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fc88d112..7d01ef41 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -137,25 +137,24 @@ jobs: - name: Run tests run: mvn test - # disabled for now, we don't have access to a macos arm64 runner and testing on x86_64 doesn't work -# test-macos: -# name: Test Mac -# needs: build-macos-native -# runs-on: macos-latest -# steps: -# - uses: actions/checkout@v4 -# - uses: actions/download-artifact@v3 -# with: -# name: artifacts -# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ -# - name: Download model -# run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} -# - uses: actions/setup-java@v4 -# with: -# distribution: 'zulu' -# java-version: '11' -# - name: Run tests -# run: mvn test + test-macos: + name: Test Mac + needs: build-macos-native + runs-on: macos-14 + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + run: mvn test test-windows: From a964b0390a881e33c99b83d6c5b2e14f1104ab46 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 21:05:36 +0200 Subject: [PATCH 267/384] release workflow disable windows test --- .github/workflows/release.yaml | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 7d01ef41..3efd356c 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -157,24 +157,24 @@ jobs: run: mvn test - test-windows: - name: Test Windows - needs: build-win-native - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model - run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - run: mvn test +# test-windows: +# name: Test Windows +# needs: build-win-native +# runs-on: windows-latest +# steps: +# - uses: actions/checkout@v4 +# - uses: actions/download-artifact@v3 +# with: +# name: artifacts +# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - name: Download model +# run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME +# - uses: actions/setup-java@v4 +# with: +# distribution: 'zulu' +# java-version: '11' +# - name: Run tests +# run: mvn test publish: From f0e645feb48e8d45329f1487b37a64b08b8528d0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 21:46:06 +0200 Subject: [PATCH 268/384] fix release workflow job dependencies --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3efd356c..f1f124fd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -179,7 +179,7 @@ jobs: publish: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} - needs: [ test-linux,build-macos-native,test-windows ] + needs: [ test-linux,test-macos,build-win-native ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 74f20029794aa4e90785bed64b58f847533a3bf7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 21:56:27 +0200 Subject: [PATCH 269/384] disable grammar test --- src/test/java/de/kherud/llama/LlamaModelTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index c7ece673..fba68ba5 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -8,6 +8,7 @@ import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; public class LlamaModelTest { @@ -124,13 +125,14 @@ public void testCompleteInfillCustom() { Assert.assertFalse(output.isEmpty()); } + @Ignore @Test public void testCompleteGrammar() { InferenceParameters params = new InferenceParameters("") .setGrammar("root ::= (\"a\" | \"b\")+") .setNPredict(nPredict); String output = model.complete(params); - Assert.assertTrue(output.matches("[ab]+")); + Assert.assertTrue(output + " doesn't match [ab]+", output.matches("[ab]+")); int generated = model.encode(output).length; Assert.assertTrue(generated > 0 && generated <= nPredict + 1); } From fe29d70d55a4dd6b51ccb3f1b2481a63ecdfed73 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 22:17:57 +0200 Subject: [PATCH 270/384] update release workflow --- .github/workflows/release.yaml | 38 +++++++++---------- .../java/de/kherud/llama/LlamaModelTest.java | 1 - 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f1f124fd..54fc9077 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -137,24 +137,24 @@ jobs: - name: Run tests run: mvn test - test-macos: - name: Test Mac - needs: build-macos-native - runs-on: macos-14 - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 - with: - name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - run: mvn test +# test-macos: +# name: Test Mac +# needs: build-macos-native +# runs-on: macos-14 +# steps: +# - uses: actions/checkout@v4 +# - uses: actions/download-artifact@v3 +# with: +# name: artifacts +# path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ +# - name: Download model +# run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} +# - uses: actions/setup-java@v4 +# with: +# distribution: 'zulu' +# java-version: '11' +# - name: Run tests +# run: mvn test # test-windows: @@ -179,7 +179,7 @@ jobs: publish: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} - needs: [ test-linux,test-macos,build-win-native ] + needs: [ test-linux,build-macos-native,build-win-native ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index fba68ba5..b5481cef 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -125,7 +125,6 @@ public void testCompleteInfillCustom() { Assert.assertFalse(output.isEmpty()); } - @Ignore @Test public void testCompleteGrammar() { InferenceParameters params = new InferenceParameters("") From a086aa9ebeab51b67fb637752d6bf3103a23c3a4 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Wed, 7 Aug 2024 23:36:22 +0200 Subject: [PATCH 271/384] update readme versions --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 60a1dcec..b965c6f1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b3008](https://img.shields.io/badge/llama.cpp-%23b3008-informational) +![llama.cpp b3534](https://img.shields.io/badge/llama.cpp-%23b3534-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -27,7 +27,7 @@ Access this library via Maven: de.kherud llama - 3.2.1 + 3.3.0 ``` From 06abbbd0dd7d6e69bc3eb2e60d4c703d804ce25d Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 13:08:58 +0200 Subject: [PATCH 272/384] CI: dockerized cuda12 build --- .github/build.sh | 2 +- .github/build_cuda_linux.sh | 12 + .../dockcross/dockcross-manylinux_2_28-x64 | 279 ++++++++++++++++++ .github/dockcross/update.sh | 2 + .github/workflows/release.yaml | 11 +- 5 files changed, 304 insertions(+), 2 deletions(-) create mode 100755 .github/build_cuda_linux.sh create mode 100755 .github/dockcross/dockcross-manylinux_2_28-x64 diff --git a/.github/build.sh b/.github/build.sh index 5a78de0e..2842d7e6 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -2,4 +2,4 @@ mkdir -p build cmake -Bbuild $@ || exit 1 -cmake --build build --config Release || exit 1 +cmake --build build --config Release -j4 || exit 1 diff --git a/.github/build_cuda_linux.sh b/.github/build_cuda_linux.sh new file mode 100755 index 00000000..870bf30a --- /dev/null +++ b/.github/build_cuda_linux.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# A Cuda 12.1 install script for RHEL8/Rocky8/Manylinux_2.28 + +sudo dnf install -y kernel-devel kernel-headers +sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo + +# We prefer CUDA 12.1 as it's compatible with 12.2+ +sudo dnf install -y cuda-toolkit-12-1 --setopt=install_weak_deps=False + +exec .github/build.sh $@ -DGGML_CUDA=1 -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.1/bin/nvcc \ No newline at end of file diff --git a/.github/dockcross/dockcross-manylinux_2_28-x64 b/.github/dockcross/dockcross-manylinux_2_28-x64 new file mode 100755 index 00000000..9475beba --- /dev/null +++ b/.github/dockcross/dockcross-manylinux_2_28-x64 @@ -0,0 +1,279 @@ +#!/usr/bin/env bash + +DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64:20230601-c2f5366 +DEFAULT_DOCKCROSS_IMAGE=jllama-cuda + +#------------------------------------------------------------------------------ +# Helpers +# +err() { + echo -e >&2 "ERROR: $*\n" +} + +die() { + err "$*" + exit 1 +} + +has() { + # eg. has command update + local kind=$1 + local name=$2 + + type -t $kind:$name | grep -q function +} + +# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative") +if [ -z "$OCI_EXE" ]; then + if which podman >/dev/null 2>/dev/null; then + OCI_EXE=podman + elif which docker >/dev/null 2>/dev/null; then + OCI_EXE=docker + else + die "Cannot find a container executor. Search for docker and podman." + fi +fi + +#------------------------------------------------------------------------------ +# Command handlers +# +command:update-image() { + $OCI_EXE pull $FINAL_IMAGE +} + +help:update-image() { + echo "Pull the latest $FINAL_IMAGE ." +} + +command:update-script() { + if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then + echo "$0 is up to date" + else + echo -n "Updating $0 ... " + $OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok + fi +} + +help:update-script() { + echo "Update $0 from $FINAL_IMAGE ." +} + +command:update() { + command:update-image + command:update-script +} + +help:update() { + echo "Pull the latest $FINAL_IMAGE, and then update $0 from that." +} + +command:help() { + if [[ $# != 0 ]]; then + if ! has command $1; then + err \"$1\" is not an dockcross command + command:help + elif ! has help $1; then + err No help found for \"$1\" + else + help:$1 + fi + else + cat >&2 < +ENDHELP + exit 1 + fi +} + +#------------------------------------------------------------------------------ +# Option processing +# +special_update_command='' +while [[ $# != 0 ]]; do + case $1 in + + --) + shift + break + ;; + + --args|-a) + ARG_ARGS="$2" + shift 2 + ;; + + --config|-c) + ARG_CONFIG="$2" + shift 2 + ;; + + --image|-i) + ARG_IMAGE="$2" + shift 2 + ;; + update|update-image|update-script) + special_update_command=$1 + break + ;; + -*) + err Unknown option \"$1\" + command:help + exit + ;; + + *) + break + ;; + + esac +done + +# The precedence for options is: +# 1. command-line arguments +# 2. environment variables +# 3. defaults + +# Source the config file if it exists +DEFAULT_DOCKCROSS_CONFIG=~/.dockcross +FINAL_CONFIG=${ARG_CONFIG-${DOCKCROSS_CONFIG-$DEFAULT_DOCKCROSS_CONFIG}} + +[[ -f "$FINAL_CONFIG" ]] && source "$FINAL_CONFIG" + +# Set the docker image +FINAL_IMAGE=${ARG_IMAGE-${DOCKCROSS_IMAGE-$DEFAULT_DOCKCROSS_IMAGE}} + +# Handle special update command +if [ "$special_update_command" != "" ]; then + case $special_update_command in + + update) + command:update + exit $? + ;; + + update-image) + command:update-image + exit $? + ;; + + update-script) + command:update-script + exit $? + ;; + + esac +fi + +# Set the docker run extra args (if any) +FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}} + +# Bash on Ubuntu on Windows +UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "") +# MSYS, Git Bash, etc. +MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "") +# CYGWIN +CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "") + +if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then + USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )") +fi + +# Change the PWD when working in Docker on Windows +if [ -n "$UBUNTU_ON_WINDOWS" ]; then + WSL_ROOT="/mnt/" + CFG_FILE=/etc/wsl.conf + if [ -f "$CFG_FILE" ]; then + CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g') + eval "$CFG_CONTENT" + if [ -n "$root" ]; then + WSL_ROOT=$root + fi + fi + HOST_PWD=`pwd -P` + HOST_PWD=${HOST_PWD/$WSL_ROOT//} +elif [ -n "$MSYS" ]; then + HOST_PWD=$PWD + HOST_PWD=${HOST_PWD/\//} + HOST_PWD=${HOST_PWD/\//:\/} +elif [ -n "$CYGWIN" ]; then + for f in pwd readlink cygpath ; do + test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ; + done ; + HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ; +else + HOST_PWD=$PWD + [ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD) +fi + +# Mount Additional Volumes +if [ -z "$SSH_DIR" ]; then + SSH_DIR="$HOME/.ssh" +fi + +HOST_VOLUMES= +if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then + if test -n "${CYGWIN}" ; then + HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ; + else + HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ; + fi ; +fi + +#------------------------------------------------------------------------------ +# Now, finally, run the command in a container +# +TTY_ARGS= +tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti +CONTAINER_NAME=dockcross_$RANDOM +$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \ + -v "$HOST_PWD":/work \ + $HOST_VOLUMES \ + "${USER_IDS[@]}" \ + $FINAL_ARGS \ + $FINAL_IMAGE "$@" +run_exit_code=$? + +# Attempt to delete container +rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1) +rm_exit_code=$? +if [[ $rm_exit_code != 0 ]]; then + if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then + : # Ignore error because of https://circleci.com/docs/docker-btrfs-error/ + else + echo "$rm_output" + exit $rm_exit_code + fi +fi + +exit $run_exit_code + +################################################################################ +# +# This image is not intended to be run manually. +# +# To create a dockcross helper script for the +# dockcross/manylinux_2_28-x64:20230601-c2f5366 image, run: +# +# docker run --rm dockcross/manylinux_2_28-x64:20230601-c2f5366 > dockcross-manylinux_2_28-x64-20230601-c2f5366 +# chmod +x dockcross-manylinux_2_28-x64-20230601-c2f5366 +# +# You may then wish to move the dockcross script to your PATH. +# +################################################################################ diff --git a/.github/dockcross/update.sh b/.github/dockcross/update.sh index 7b9b7e42..c7807fa5 100755 --- a/.github/dockcross/update.sh +++ b/.github/dockcross/update.sh @@ -2,8 +2,10 @@ # This script prints the commands to upgrade the docker cross compilation scripts docker run --rm dockcross/manylinux2014-x64 > ./dockcross-manylinux2014-x64 +docker run --rm dockcross/manylinux_2_28-x64 > ./dockcross-manylinux_2_28-x64 docker run --rm dockcross/manylinux2014-x86 > ./dockcross-manylinux2014-x86 docker run --rm dockcross/linux-arm64-lts > ./dockcross-linux-arm64-lts +docker run --rm dockcross/linux-amd64-lts > ./dockcross-linux-arm64-lts docker run --rm dockcross/android-arm > ./dockcross-android-arm docker run --rm dockcross/android-arm64 > ./dockcross-android-arm64 docker run --rm dockcross/android-x86 > ./dockcross-android-x86 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 54fc9077..f1c10a14 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -25,23 +25,32 @@ jobs: os: Linux, arch: x86_64, image: dockcross-manylinux2014-x64, + build: ".github/build.sh" + } + - { + os: Linux, + arch: x86_64_cuda, + image: dockcross-manylinux_2_28-x64, + build: ".github/build_cuda.sh" } - { os: Linux, arch: aarch64, image: dockcross-linux-arm64-lts, + build: ".github/build.sh" } - { os: Linux-Android, arch: aarch64, image: dockcross-android-arm64, + build: ".github/build.sh" } steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} ${{ matrix.target.build}} "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: From 53a8874d07d9dc528b6ea497d48dbb4352efb613 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 13:18:04 +0200 Subject: [PATCH 273/384] set proper container ID for manylinux 2.28 --- .github/dockcross/dockcross-manylinux_2_28-x64 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dockcross/dockcross-manylinux_2_28-x64 b/.github/dockcross/dockcross-manylinux_2_28-x64 index 9475beba..bfda9ebb 100755 --- a/.github/dockcross/dockcross-manylinux_2_28-x64 +++ b/.github/dockcross/dockcross-manylinux_2_28-x64 @@ -1,7 +1,7 @@ #!/usr/bin/env bash DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64:20230601-c2f5366 -DEFAULT_DOCKCROSS_IMAGE=jllama-cuda + #------------------------------------------------------------------------------ # Helpers From fb4f8203be284f607a3d9d5314e8be0d7b31561b Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 13:20:27 +0200 Subject: [PATCH 274/384] set proper container ID for manylinux 2.28 --- .github/dockcross/dockcross-manylinux_2_28-x64 | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/dockcross/dockcross-manylinux_2_28-x64 b/.github/dockcross/dockcross-manylinux_2_28-x64 index 9475beba..f2bb9a48 100755 --- a/.github/dockcross/dockcross-manylinux_2_28-x64 +++ b/.github/dockcross/dockcross-manylinux_2_28-x64 @@ -1,7 +1,6 @@ #!/usr/bin/env bash DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64:20230601-c2f5366 -DEFAULT_DOCKCROSS_IMAGE=jllama-cuda #------------------------------------------------------------------------------ # Helpers From 48087f284f746dff55541e728b48a743c922fcf5 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 13:22:12 +0200 Subject: [PATCH 275/384] proper build script name for cuda --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f1c10a14..35104e92 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -31,7 +31,7 @@ jobs: os: Linux, arch: x86_64_cuda, image: dockcross-manylinux_2_28-x64, - build: ".github/build_cuda.sh" + build: ".github/build_cuda_linux.sh" } - { os: Linux, From 83ad69de7bd02060d0ec0e31bc2d815bb6c72a97 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 13:34:17 +0200 Subject: [PATCH 276/384] use 20240812-60fa1b0 tag for manylinux - as old has expired repo keys --- .github/dockcross/dockcross-manylinux_2_28-x64 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/dockcross/dockcross-manylinux_2_28-x64 b/.github/dockcross/dockcross-manylinux_2_28-x64 index f2bb9a48..c363e9fa 100755 --- a/.github/dockcross/dockcross-manylinux_2_28-x64 +++ b/.github/dockcross/dockcross-manylinux_2_28-x64 @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64:20230601-c2f5366 +DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64:20240812-60fa1b0 #------------------------------------------------------------------------------ # Helpers @@ -268,10 +268,10 @@ exit $run_exit_code # This image is not intended to be run manually. # # To create a dockcross helper script for the -# dockcross/manylinux_2_28-x64:20230601-c2f5366 image, run: +# dockcross/manylinux_2_28-x64:20240812-60fa1b0 image, run: # -# docker run --rm dockcross/manylinux_2_28-x64:20230601-c2f5366 > dockcross-manylinux_2_28-x64-20230601-c2f5366 -# chmod +x dockcross-manylinux_2_28-x64-20230601-c2f5366 +# docker run --rm dockcross/manylinux_2_28-x64:20240812-60fa1b0 > dockcross-manylinux_2_28-x64-20240812-60fa1b0 +# chmod +x dockcross-manylinux_2_28-x64-20240812-60fa1b0 # # You may then wish to move the dockcross script to your PATH. # From 071001ed760893dbe0e71a6ca55495bfb93b89a5 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 14:36:50 +0200 Subject: [PATCH 277/384] add cuda support detection --- README.md | 8 +++++ .../java/de/kherud/llama/LlamaLoader.java | 2 +- src/main/java/de/kherud/llama/OSInfo.java | 29 ++++++++++++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b965c6f1..928096a2 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,10 @@ We support CPU inference for the following platforms out of the box: - MacOS x86-64, aarch64 (M-series) - Windows x86-64, x64, arm (32 bit) +For GPU inference, we support: + +- Linux x86-64 with CUDA 12.1+ + If any of these match your platform, you can include the Maven dependency and get started. ### Setup required @@ -94,6 +98,10 @@ Not all libraries have to be in the same location. For example, if you already have a llama.cpp and ggml version you can install them as a system library and rely on the jllama library from the JAR. This way, you don't have to compile anything. +#### CUDA + +On Linux x86-64 with CUDA 12.1+, the library tries to find your CUDA installation in `java.library.path`. If you have CUDA installed in a non-standard location, then point the `java.library.path` to the directory containing the `libcudart.so.12` library. You can also disable CUDA location auto-detection by setting the parameter `de.kherud.llama.force_cuda` to `true`, e.g. `-Dde.kherud.llama.force_cuda=true`. + ## Documentation ### Example diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index a0239d20..070e271d 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -166,7 +166,7 @@ private static void loadNativeLibrary(String name) { * @param path path of the native library * @return true for successfully loading, otherwise false */ - private static boolean loadNativeLibrary(Path path) { + public static boolean loadNativeLibrary(Path path) { if (!Files.exists(path)) { return false; } diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java index a62861bf..9de2a098 100644 --- a/src/main/java/de/kherud/llama/OSInfo.java +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -16,6 +16,7 @@ package de.kherud.llama; +import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -24,6 +25,8 @@ import java.util.Locale; import java.util.stream.Stream; +import static de.kherud.llama.LlamaLoader.loadNativeLibrary; + /** * Provides OS name and architecture name. * @@ -96,13 +99,37 @@ else if ("--arch".equals(args[0])) { } static String getNativeLibFolderPathForCurrentOS() { - return getOSName() + "/" + getArchName(); + String osName = getOSName(); + if (osName.equals("Linux") && hasLinuxCUDA()) { + return osName + "/" + getArchName() + "_cuda"; + } else { + return osName + "/" + getArchName(); + } } static String getOSName() { return translateOSNameToFolderName(System.getProperty("os.name")); } + static boolean hasLinuxCUDA() { + boolean forceCuda = Boolean.parseBoolean(System.getProperty("de.kherud.llama.force_cuda", "false")); + if (forceCuda) { + return true; + } else { + String javaLibraryPath = System.getProperty("java.library.path", ""); + for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { + if (ldPath.isEmpty()) { + continue; + } + Path path = Paths.get(ldPath, "libcudart.so.12"); + if (loadNativeLibrary(path)) { + return true; + } + } + return false; + } + } + static boolean isAndroid() { return isAndroidRuntime() || isAndroidTermux(); } From 2f05986ca9ce047d13fdb9f65cf7d52f75e59a8f Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 18:26:44 +0200 Subject: [PATCH 278/384] use maven classifiers for cuda12 build --- .github/workflows/release.yaml | 6 +++-- CMakeLists.txt | 9 +++++-- pom.xml | 25 +++++++++++++++++++ src/main/assembly/cuda-linux.xml | 18 ++++++++++++++ src/main/java/de/kherud/llama/OSInfo.java | 29 +---------------------- 5 files changed, 55 insertions(+), 32 deletions(-) create mode 100644 src/main/assembly/cuda-linux.xml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 35104e92..bcaf4af9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -29,7 +29,7 @@ jobs: } - { os: Linux, - arch: x86_64_cuda, + arch: x86_64, image: dockcross-manylinux_2_28-x64, build: ".github/build_cuda_linux.sh" } @@ -55,7 +55,9 @@ jobs: uses: actions/upload-artifact@v3 with: name: artifacts - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + path: | + ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + ${{ github.workspace }}/src/main/resources_cuda_linux/de/kherud/llama/ build-macos-native: diff --git a/CMakeLists.txt b/CMakeLists.txt index 43a0c725..a06d12e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,8 +57,13 @@ if(NOT OS_ARCH) message(FATAL_ERROR "Could not determine CPU architecture") endif() -set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) -message(STATUS "Installing files to ${JLLAMA_DIR}") +if(GGML_CUDA) + set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources_cuda_linux/de/kherud/llama/${OS_NAME}/${OS_ARCH}) + message(STATUS "GPU (CUDA Linux) build - Installing files to ${JLLAMA_DIR}") +else() + set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) + message(STATUS "CPU build - Installing files to ${JLLAMA_DIR}") +endif() # include jni.h and jni_md.h if(NOT DEFINED JNI_INCLUDE_DIRS) diff --git a/pom.xml b/pom.xml index 5b00bb42..48c3910a 100644 --- a/pom.xml +++ b/pom.xml @@ -77,6 +77,7 @@ + @@ -136,6 +137,30 @@ + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + cuda-linux + package + + single + + + + src/main/assembly/cuda-linux.xml + + false + ${project.artifactId}-${project.version}-cuda12-linux-x86_64 + true + cuda12-linux-x86_64 + + + + diff --git a/src/main/assembly/cuda-linux.xml b/src/main/assembly/cuda-linux.xml new file mode 100644 index 00000000..e4cadc02 --- /dev/null +++ b/src/main/assembly/cuda-linux.xml @@ -0,0 +1,18 @@ + + cuda-linux + + jar + + false + + + src/main/resources_cuda_linux/ + / + + **/* + + + + diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java index 9de2a098..a62861bf 100644 --- a/src/main/java/de/kherud/llama/OSInfo.java +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -16,7 +16,6 @@ package de.kherud.llama; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -25,8 +24,6 @@ import java.util.Locale; import java.util.stream.Stream; -import static de.kherud.llama.LlamaLoader.loadNativeLibrary; - /** * Provides OS name and architecture name. * @@ -99,37 +96,13 @@ else if ("--arch".equals(args[0])) { } static String getNativeLibFolderPathForCurrentOS() { - String osName = getOSName(); - if (osName.equals("Linux") && hasLinuxCUDA()) { - return osName + "/" + getArchName() + "_cuda"; - } else { - return osName + "/" + getArchName(); - } + return getOSName() + "/" + getArchName(); } static String getOSName() { return translateOSNameToFolderName(System.getProperty("os.name")); } - static boolean hasLinuxCUDA() { - boolean forceCuda = Boolean.parseBoolean(System.getProperty("de.kherud.llama.force_cuda", "false")); - if (forceCuda) { - return true; - } else { - String javaLibraryPath = System.getProperty("java.library.path", ""); - for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { - if (ldPath.isEmpty()) { - continue; - } - Path path = Paths.get(ldPath, "libcudart.so.12"); - if (loadNativeLibrary(path)) { - return true; - } - } - return false; - } - } - static boolean isAndroid() { return isAndroidRuntime() || isAndroidTermux(); } From bdfeabc28a31f93d1c02af2d68d8d71223db4afb Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 19:20:42 +0200 Subject: [PATCH 279/384] use separate ci step for cuda --- .github/build_cuda_linux.sh | 2 +- .github/workflows/release.yaml | 41 +++++++++++++++++++------------- pom.xml | 1 - src/main/assembly/cuda-linux.xml | 7 ++++++ 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/.github/build_cuda_linux.sh b/.github/build_cuda_linux.sh index 870bf30a..147c2174 100755 --- a/.github/build_cuda_linux.sh +++ b/.github/build_cuda_linux.sh @@ -7,6 +7,6 @@ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8. sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo # We prefer CUDA 12.1 as it's compatible with 12.2+ -sudo dnf install -y cuda-toolkit-12-1 --setopt=install_weak_deps=False +sudo dnf install -y cuda-toolkit-12-1 exec .github/build.sh $@ -DGGML_CUDA=1 -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.1/bin/nvcc \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bcaf4af9..40eaa54e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -13,6 +13,20 @@ env: MODEL_NAME: "codellama-7b.Q2_K.gguf" jobs: + build-linux-cuda: + name: Build Linux x86-64 CUDA12 lib + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build libraries + shell: bash + run: | + .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ build-linux-docker: name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} @@ -24,40 +38,29 @@ jobs: - { os: Linux, arch: x86_64, - image: dockcross-manylinux2014-x64, - build: ".github/build.sh" - } - - { - os: Linux, - arch: x86_64, - image: dockcross-manylinux_2_28-x64, - build: ".github/build_cuda_linux.sh" + image: dockcross-manylinux2014-x64 } - { os: Linux, arch: aarch64, - image: dockcross-linux-arm64-lts, - build: ".github/build.sh" + image: dockcross-linux-arm64-lts } - { os: Linux-Android, arch: aarch64, - image: dockcross-android-arm64, - build: ".github/build.sh" + image: dockcross-android-arm64 } steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/dockcross/${{ matrix.target.image }} ${{ matrix.target.build}} "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: artifacts - path: | - ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - ${{ github.workspace }}/src/main/resources_cuda_linux/de/kherud/llama/ + path: ${{ github.workspace }}/src/main/resource*/de/kherud/llama/ build-macos-native: @@ -190,7 +193,7 @@ jobs: publish: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} - needs: [ test-linux,build-macos-native,build-win-native ] + needs: [ test-linux,build-macos-native,build-win-native,build-linux-cuda ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -198,6 +201,10 @@ jobs: with: name: artifacts path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - uses: actions/download-artifact@v3 + with: + name: artifacts + path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ - name: Set up Maven Central Repository uses: actions/setup-java@v3 with: diff --git a/pom.xml b/pom.xml index 48c3910a..f509e223 100644 --- a/pom.xml +++ b/pom.xml @@ -137,7 +137,6 @@ - org.apache.maven.plugins maven-assembly-plugin diff --git a/src/main/assembly/cuda-linux.xml b/src/main/assembly/cuda-linux.xml index e4cadc02..9aa386f2 100644 --- a/src/main/assembly/cuda-linux.xml +++ b/src/main/assembly/cuda-linux.xml @@ -7,6 +7,13 @@ false + + ${project.build.outputDirectory} + / + + **/*.class + + src/main/resources_cuda_linux/ / From 5dcfb48b310640ea9d9c6a3eca00cd5928aa35aa Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 19:25:51 +0200 Subject: [PATCH 280/384] set proper os name --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 40eaa54e..2db47d4c 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,14 +14,14 @@ env: jobs: build-linux-cuda: - name: Build Linux x86-64 CUDA12 lib + name: Build Linux x86-64 CUDA12 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build libraries shell: bash run: | - .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" + .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" - name: Upload artifacts uses: actions/upload-artifact@v3 with: From b62d48e85e1db2e1c7ace825d404bfa5add661e4 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 19:27:58 +0200 Subject: [PATCH 281/384] resource* => resources --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2db47d4c..163de159 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -60,7 +60,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: artifacts - path: ${{ github.workspace }}/src/main/resource*/de/kherud/llama/ + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ build-macos-native: From 95819f5e5a4ac105e1101cc9e53d35df376323c3 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 19:29:34 +0200 Subject: [PATCH 282/384] use resources_linux_cuda as custom res name --- CMakeLists.txt | 2 +- src/main/java/de/kherud/llama/LlamaLoader.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a06d12e7..847465e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,7 +58,7 @@ if(NOT OS_ARCH) endif() if(GGML_CUDA) - set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources_cuda_linux/de/kherud/llama/${OS_NAME}/${OS_ARCH}) + set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources_linux_cuda/de/kherud/llama/${OS_NAME}/${OS_ARCH}) message(STATUS "GPU (CUDA Linux) build - Installing files to ${JLLAMA_DIR}") else() set(JLLAMA_DIR ${CMAKE_SOURCE_DIR}/src/main/resources/de/kherud/llama/${OS_NAME}/${OS_ARCH}) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 070e271d..a0239d20 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -166,7 +166,7 @@ private static void loadNativeLibrary(String name) { * @param path path of the native library * @return true for successfully loading, otherwise false */ - public static boolean loadNativeLibrary(Path path) { + private static boolean loadNativeLibrary(Path path) { if (!Files.exists(path)) { return false; } From ecab8af75d80934fa2d353672c2cb54a35cfb15d Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 20:55:32 +0200 Subject: [PATCH 283/384] proper classifiers! --- .gitignore | 2 + pom.xml | 66 +++++++++++++++++++++++--------- src/main/assembly/cuda-linux.xml | 25 ------------ 3 files changed, 50 insertions(+), 43 deletions(-) delete mode 100644 src/main/assembly/cuda-linux.xml diff --git a/.gitignore b/.gitignore index e34abc2d..8857fd04 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ replay_pid* models/*.gguf src/main/cpp/de_kherud_llama_*.h +src/main/resources_cuda_linux/ src/main/resources/**/*.so src/main/resources/**/*.dylib src/main/resources/**/*.dll @@ -40,3 +41,4 @@ src/test/resources/**/*.gbnf **/*.etag **/*.lastModified +src/main/cpp/llama.cpp/ \ No newline at end of file diff --git a/pom.xml b/pom.xml index f509e223..00de9035 100644 --- a/pom.xml +++ b/pom.xml @@ -69,13 +69,47 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 - - - -h - src/main/cpp - - + 3.13.0 + + + + gpu + compile + compile + + + -h + src/main/cpp + + ${project.build.outputDirectory}_cuda + + + + + + maven-resources-plugin + 3.3.1 + + + + copy-resources + process-classes + + copy-resources + + + ${project.build.outputDirectory}_cuda + + + ${basedir}/src/main/resources_cuda_linux/ + + **/*.* + + + + + + @@ -139,23 +173,19 @@ org.apache.maven.plugins - maven-assembly-plugin - 3.3.0 + maven-jar-plugin + 3.4.2 + - cuda-linux + cuda package - single + jar - - src/main/assembly/cuda-linux.xml - - false - ${project.artifactId}-${project.version}-cuda12-linux-x86_64 - true - cuda12-linux-x86_64 + cuda12-linux-x86-64 + ${project.build.outputDirectory}_cuda diff --git a/src/main/assembly/cuda-linux.xml b/src/main/assembly/cuda-linux.xml deleted file mode 100644 index 9aa386f2..00000000 --- a/src/main/assembly/cuda-linux.xml +++ /dev/null @@ -1,25 +0,0 @@ - - cuda-linux - - jar - - false - - - ${project.build.outputDirectory} - / - - **/*.class - - - - src/main/resources_cuda_linux/ - / - - **/* - - - - From d1fadb2fc4f3d8c1749abca1c9963b1b9e44d70c Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 21:43:11 +0200 Subject: [PATCH 284/384] update docs --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 928096a2..6e16fed2 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,17 @@ Access this library via Maven: ``` +Bu default the default library artifact is built only with CPU inference support. To enable CUDA, use a `cuda12-linux-x86-64` maven classifier: + +```xml + + de.kherud + llama + 3.3.0 + cuda12-linux-x86-64 + +``` + There are multiple [examples](src/test/java/examples). ### No Setup required @@ -100,7 +111,7 @@ This way, you don't have to compile anything. #### CUDA -On Linux x86-64 with CUDA 12.1+, the library tries to find your CUDA installation in `java.library.path`. If you have CUDA installed in a non-standard location, then point the `java.library.path` to the directory containing the `libcudart.so.12` library. You can also disable CUDA location auto-detection by setting the parameter `de.kherud.llama.force_cuda` to `true`, e.g. `-Dde.kherud.llama.force_cuda=true`. +On Linux x86-64 with CUDA 12.1+, the library assumes that your CUDA libraries are findable in `java.library.path`. If you have CUDA installed in a non-standard location, then point the `java.library.path` to the directory containing the `libcudart.so.12` library. ## Documentation From fa0dd1c134bd07ff0e798c0cd535de1b5fb49d18 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 21:55:28 +0200 Subject: [PATCH 285/384] remove unneeded changes in workflow and dockercross update script --- .github/dockcross/update.sh | 2 +- .github/workflows/release.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/dockcross/update.sh b/.github/dockcross/update.sh index c7807fa5..7992658e 100755 --- a/.github/dockcross/update.sh +++ b/.github/dockcross/update.sh @@ -5,7 +5,7 @@ docker run --rm dockcross/manylinux2014-x64 > ./dockcross-manylinux2014-x64 docker run --rm dockcross/manylinux_2_28-x64 > ./dockcross-manylinux_2_28-x64 docker run --rm dockcross/manylinux2014-x86 > ./dockcross-manylinux2014-x86 docker run --rm dockcross/linux-arm64-lts > ./dockcross-linux-arm64-lts -docker run --rm dockcross/linux-amd64-lts > ./dockcross-linux-arm64-lts +docker run --rm dockcross/linux-amd64-lts > ./dockcross-linux-amd64-lts docker run --rm dockcross/android-arm > ./dockcross-android-arm docker run --rm dockcross/android-arm64 > ./dockcross-android-arm64 docker run --rm dockcross/android-x86 > ./dockcross-android-x86 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 163de159..d223cec9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -38,17 +38,17 @@ jobs: - { os: Linux, arch: x86_64, - image: dockcross-manylinux2014-x64 + image: dockcross-manylinux2014-x64, } - { os: Linux, arch: aarch64, - image: dockcross-linux-arm64-lts + image: dockcross-linux-arm64-lts, } - { os: Linux-Android, arch: aarch64, - image: dockcross-android-arm64 + image: dockcross-android-arm64, } steps: - uses: actions/checkout@v4 From 6530b799bf4c9db08a4799eff7f0e234d0d5cae7 Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Tue, 3 Sep 2024 21:56:43 +0200 Subject: [PATCH 286/384] remove dockcross-linux-amd64-lts from update.sh --- .github/dockcross/update.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/dockcross/update.sh b/.github/dockcross/update.sh index 7992658e..5898ac80 100755 --- a/.github/dockcross/update.sh +++ b/.github/dockcross/update.sh @@ -5,7 +5,6 @@ docker run --rm dockcross/manylinux2014-x64 > ./dockcross-manylinux2014-x64 docker run --rm dockcross/manylinux_2_28-x64 > ./dockcross-manylinux_2_28-x64 docker run --rm dockcross/manylinux2014-x86 > ./dockcross-manylinux2014-x86 docker run --rm dockcross/linux-arm64-lts > ./dockcross-linux-arm64-lts -docker run --rm dockcross/linux-amd64-lts > ./dockcross-linux-amd64-lts docker run --rm dockcross/android-arm > ./dockcross-android-arm docker run --rm dockcross/android-arm64 > ./dockcross-android-arm64 docker run --rm dockcross/android-x86 > ./dockcross-android-x86 From 428153fe6448c0073ad24e0707b046ceb2eef17e Mon Sep 17 00:00:00 2001 From: Grebennikov Roman Date: Fri, 6 Sep 2024 17:06:33 +0200 Subject: [PATCH 287/384] fix cuda resource dir name in pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 00de9035..013af370 100644 --- a/pom.xml +++ b/pom.xml @@ -101,7 +101,7 @@ ${project.build.outputDirectory}_cuda - ${basedir}/src/main/resources_cuda_linux/ + ${basedir}/src/main/resources_linux_cuda/ **/*.* From dd73e7c851e1012a3fe5bff76dd576d9c1e0de62 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 20:23:17 +0200 Subject: [PATCH 288/384] bump pom.xml 3.3.0 -> 3.4.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 013af370..8e15da65 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.3.0 + 3.4.0 jar ${project.groupId}:${project.artifactId} From 8431fa3ddb746951074574cf692d77d39a2c7360 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 20:54:54 +0200 Subject: [PATCH 289/384] update readme maven version --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6e16fed2..4aaa12db 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Access this library via Maven: de.kherud llama - 3.3.0 + 3.4.0 ``` @@ -37,7 +37,7 @@ Bu default the default library artifact is built only with CPU inference support de.kherud llama - 3.3.0 + 3.4.0 cuda12-linux-x86-64 ``` From a169c89cfcbab2a5c613684249f0a1679c3977b5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 21:08:30 +0200 Subject: [PATCH 290/384] test upload/download artifact v4 --- .github/workflows/ci.yml | 79 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17923928..e9cebd40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,11 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: linux-libraries + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - if: failure() uses: actions/upload-artifact@v3 with: @@ -62,6 +67,11 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: macos-libraries + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ build-and-test-windows: name: windows-latest @@ -80,8 +90,75 @@ jobs: run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests run: mvn test + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: windows-libraries + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: + name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log if-no-files-found: warn + + test-linux: + name: Test Linux + needs: build-and-test-linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + pattern: "*-libraries" + merge-multiple: true + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + run: mvn test + + test-macos: + name: Test Mac + needs: build-and-test-macos + runs-on: macos-14 + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + pattern: "*-libraries" + merge-multiple: true + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + run: mvn test + + + test-windows: + name: Test Windows + needs: build-and-test-windows + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + pattern: "*-libraries" + merge-multiple: true + path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ + - name: Download model + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '11' + - name: Run tests + run: mvn test From f1fe70c9591e9fc28d75d2b0aac658e3239835fd Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 21:17:45 +0200 Subject: [PATCH 291/384] Revert "test upload/download artifact v4" This reverts commit 21c46acc0dace043926f77123e38634cd754a404. --- .github/workflows/ci.yml | 79 +--------------------------------------- 1 file changed, 1 insertion(+), 78 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9cebd40..17923928 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,11 +27,6 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: linux-libraries - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - if: failure() uses: actions/upload-artifact@v3 with: @@ -67,11 +62,6 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: macos-libraries - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ build-and-test-windows: name: windows-latest @@ -90,75 +80,8 @@ jobs: run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests run: mvn test - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: windows-libraries - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - if: failure() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: - name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log if-no-files-found: warn - - test-linux: - name: Test Linux - needs: build-and-test-linux - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - pattern: "*-libraries" - merge-multiple: true - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - run: mvn test - - test-macos: - name: Test Mac - needs: build-and-test-macos - runs-on: macos-14 - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - pattern: "*-libraries" - merge-multiple: true - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model - run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - run: mvn test - - - test-windows: - name: Test Windows - needs: build-and-test-windows - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - pattern: "*-libraries" - merge-multiple: true - path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model - run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '11' - - name: Run tests - run: mvn test From 47bbc6358a04de4313ca07389334996ac8aa523b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 21:23:42 +0200 Subject: [PATCH 292/384] update ci workflow to use artifact actions v4 --- .github/workflows/ci.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17923928..1db8b696 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,9 @@ jobs: - name: Run tests run: mvn test - if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: + name: error-log-linux path: ${{ github.workspace }}/hs_err_pid*.log if-no-files-found: warn @@ -62,6 +63,12 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests run: mvn test + - if: failure() + uses: actions/upload-artifact@v4 + with: + name: error-log-macos + path: ${{ github.workspace }}/hs_err_pid*.log + if-no-files-found: warn build-and-test-windows: name: windows-latest @@ -81,7 +88,8 @@ jobs: - name: Run tests run: mvn test - if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: + name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log if-no-files-found: warn From 094de58b20e7564b86a31f9577097b333f038d6c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 21:23:50 +0200 Subject: [PATCH 293/384] update release workflow to use artifact actions v4 --- .github/workflows/release.yaml | 37 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d223cec9..f2b3aa42 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -23,9 +23,9 @@ jobs: run: | .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: artifacts + name: linux-libraries-cuda path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ build-linux-docker: @@ -57,9 +57,9 @@ jobs: run: | .github/dockcross/${{ matrix.target.image }} .github/build.sh "-DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }}" - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: artifacts + name: linux-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -86,9 +86,9 @@ jobs: mvn compile .github/build.sh ${{ matrix.target.cmake }} - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: artifacts + name: macos-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -126,9 +126,9 @@ jobs: run: | .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: artifacts + name: windows-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -138,9 +138,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - name: artifacts + name: linux-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - name: Download model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} @@ -157,9 +157,9 @@ jobs: # runs-on: macos-14 # steps: # - uses: actions/checkout@v4 -# - uses: actions/download-artifact@v3 +# - uses: actions/download-artifact@v4 # with: -# name: artifacts +# name: macos-libraries # path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ # - name: Download model # run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} @@ -177,9 +177,9 @@ jobs: # runs-on: windows-latest # steps: # - uses: actions/checkout@v4 -# - uses: actions/download-artifact@v3 +# - uses: actions/download-artifact@v4 # with: -# name: artifacts +# name: windows-libraries # path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ # - name: Download model # run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME @@ -197,13 +197,14 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - name: artifacts + pattern: "*-libraries" + merge-multiple: true path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - name: artifacts + name: linux-libraries-cuda path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ - name: Set up Maven Central Repository uses: actions/setup-java@v3 From 1cc2a4866e2cbb4e6e387cf0fecc5929a6e482d9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 22:11:15 +0200 Subject: [PATCH 294/384] update release workflow artifact names --- .github/workflows/release.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f2b3aa42..85829ed9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -59,7 +59,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: linux-libraries + name: ${{ matrix.target.os }}-${{ matrix.target.arch }}-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -88,7 +88,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: macos-libraries + name: ${{ matrix.target.runner }}-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -128,7 +128,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: windows-libraries + name: ${{ matrix.target.os }}-${{ matrix.target.arch }}-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ @@ -140,7 +140,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: - name: linux-libraries + name: Linux-x86_64-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - name: Download model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} @@ -159,7 +159,7 @@ jobs: # - uses: actions/checkout@v4 # - uses: actions/download-artifact@v4 # with: -# name: macos-libraries +# name: macos14-libraries # path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ # - name: Download model # run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} @@ -179,7 +179,7 @@ jobs: # - uses: actions/checkout@v4 # - uses: actions/download-artifact@v4 # with: -# name: windows-libraries +# name: Windows-x86_64-libraries # path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ # - name: Download model # run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME From dbf2329baf8534f980faf285ed944c4c4da2dfb8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 22:26:07 +0200 Subject: [PATCH 295/384] bump pom.xml version 3.4.0 -> 3.4.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e15da65..68674de9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.4.0 + 3.4.1 jar ${project.groupId}:${project.artifactId} From 3b1e4e3a4a2330e924c24ef70a434880c62e153f Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 6 Sep 2024 23:03:56 +0200 Subject: [PATCH 296/384] update readme maven version --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4aaa12db..718ec4be 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Access this library via Maven: de.kherud llama - 3.4.0 + 3.4.1 ``` @@ -37,7 +37,7 @@ Bu default the default library artifact is built only with CPU inference support de.kherud llama - 3.4.0 + 3.4.1 cuda12-linux-x86-64 ``` From b33c4474f8b56f157ddb056b2b3cd8b43f507e6b Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Tue, 11 Feb 2025 21:46:25 -0800 Subject: [PATCH 297/384] updating code to match to match llamacpp tag b4689 --- CMakeLists.txt | 3 +- src/main/cpp/jllama.cpp | 303 +- src/main/cpp/jllama.h | 23 +- src/main/cpp/server.hpp | 4653 ++++++++++------- src/main/cpp/utils.hpp | 1138 ++-- .../java/de/kherud/llama/CliParameters.java | 40 + .../de/kherud/llama/InferenceParameters.java | 6 - src/main/java/de/kherud/llama/LlamaModel.java | 20 +- .../java/de/kherud/llama/ModelParameters.java | 1495 ++++-- .../java/de/kherud/llama/args/CacheType.java | 15 + .../de/kherud/llama/args/NumaStrategy.java | 4 +- .../de/kherud/llama/args/PoolingType.java | 19 +- .../de/kherud/llama/args/RopeScalingType.java | 19 +- .../java/de/kherud/llama/args/Sampler.java | 16 +- .../java/de/kherud/llama/LlamaModelTest.java | 18 +- src/test/java/examples/GrammarExample.java | 2 +- src/test/java/examples/InfillExample.java | 4 +- src/test/java/examples/MainExample.java | 4 +- 18 files changed, 4621 insertions(+), 3161 deletions(-) create mode 100644 src/main/java/de/kherud/llama/CliParameters.java create mode 100644 src/main/java/de/kherud/llama/args/CacheType.java diff --git a/CMakeLists.txt b/CMakeLists.txt index 847465e6..1b5f08f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,10 +20,11 @@ FetchContent_MakeAvailable(json) #################### llama.cpp #################### +set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b3534 + GIT_TAG b4689 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index d59f3b77..29568727 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,10 +1,13 @@ #include "jllama.h" +#include "arg.h" #include "llama.h" +#include "log.h" #include "nlohmann/json.hpp" #include "server.hpp" #include +#include #include // We store some references to Java classes and their fields/methods here to speed up things for later and to fail @@ -93,6 +96,38 @@ std::string parse_jstring(JNIEnv *env, jstring java_string) return string; } +char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const jsize length) +{ + auto *const result = static_cast(malloc(length * sizeof(char *))); + + if (result == nullptr) + { + return nullptr; + } + + for (jsize i = 0; i < length; i++) + { + auto *const javaString = static_cast(env->GetObjectArrayElement(string_array, i)); + const char *cString = env->GetStringUTFChars(javaString, nullptr); + result[i] = strdup(cString); + env->ReleaseStringUTFChars(javaString, cString); + } + + return result; +} + +void free_string_array(char **array, jsize length) +{ + if (array != nullptr) + { + for (jsize i = 0; i < length; i++) + { + free(array[i]); + } + free(array); + } +} + /** * Since Java expects utf16 but std::strings are utf8, we can't directly use `env->NewString` or `env-NewString`, * but we directly send the bytes and do the conversion in Java. Unfortunately, there isn't a nice/standardized way to @@ -138,6 +173,9 @@ JNIEnv *get_jni_env() return env; } +bool log_json; +std::function log_callback; + /** * Invoke the log callback if there is any. */ @@ -150,9 +188,6 @@ void log_callback_trampoline(ggml_log_level level, const char *text, void *user_ } } // namespace -bool log_json; -std::function log_callback; - /** * The VM calls JNI_OnLoad when the native library is loaded (for example, through `System.loadLibrary`). * `JNI_OnLoad` must return the JNI version needed by the native library. @@ -352,55 +387,52 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) llama_backend_free(); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jstring jparams) +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jobjectArray jparams) { - gpt_params params; - - auto *ctx_server = new server_context(); + common_params params; - std::string c_params = parse_jstring(env, jparams); - json json_params = json::parse(c_params); - server_params_parse(json_params, params); - - if (json_value(json_params, "disable_log", false)) + const jsize argc = env->GetArrayLength(jparams); + char **argv = parse_string_array(env, jparams, argc); + if (argv == nullptr) { - log_disable(); - } - else - { - log_enable(); + return; } - if (!params.system_prompt.empty()) + const auto parsed_params = common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SERVER); + free_string_array(argv, argc); + if (!parsed_params) { - ctx_server->system_prompt_set(params.system_prompt); + return; } + + SRV_INF("loading model '%s'\n", params.model.c_str()); - if (params.model_alias == "unknown") - { - params.model_alias = params.model; - } + common_init(); - llama_numa_init(params.numa); + // struct that contains llama context and inference + auto *ctx_server = new server_context(); - LOG_INFO("build info", {{"build", LLAMA_BUILD_NUMBER}, {"commit", LLAMA_COMMIT}}); + llama_backend_init(); + llama_numa_init(params.numa); - LOG_INFO("system info", { - {"n_threads", params.n_threads}, - {"n_threads_batch", params.n_threads_batch}, - {"total_threads", std::thread::hardware_concurrency()}, - {"system_info", llama_print_system_info()}, - }); + LOG_INF("system info: n_threads = %d, n_threads_batch = %d, total_threads = %d\n", params.cpuparams.n_threads, + params.cpuparams_batch.n_threads, std::thread::hardware_concurrency()); + LOG_INF("\n"); + LOG_INF("%s\n", common_params_get_system_info(params).c_str()); + LOG_INF("\n"); std::atomic state{SERVER_STATE_LOADING_MODEL}; // Necessary similarity of prompt for slot selection ctx_server->slot_prompt_similarity = params.slot_prompt_similarity; + LOG_INF("%s: loading model\n", __func__); + // load the model if (!ctx_server->load_model(params)) { - state.store(SERVER_STATE_ERROR); + llama_backend_free(); + ; env->ThrowNew(c_llama_error, "could not load model from given file path"); return; } @@ -408,51 +440,30 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo ctx_server->init(); state.store(SERVER_STATE_READY); - LOG_INFO("model loaded", {}); + LOG_INF("%s: model loaded\n", __func__); const auto model_meta = ctx_server->model_meta(); // if a custom chat template is not supplied, we will use the one that comes with the model (if any) if (params.chat_template.empty()) { - if (!ctx_server->validate_model_chat_template()) - { - LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " - "may cause the model to output suboptimal responses", - {}); - params.chat_template = "chatml"; - } - } - - // if a custom chat template is not supplied, we will use the one that comes with the model (if any) - if (params.chat_template.empty()) - { - if (!ctx_server->validate_model_chat_template()) + if (!ctx_server->validate_builtin_chat_template(params.use_jinja)) { - LOG_ERROR("The chat template that comes with this model is not yet supported, falling back to chatml. This " - "may cause the model to output suboptimal responses", - {}); + LOG_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. " + "This may cause the model to output suboptimal responses\n", + __func__); params.chat_template = "chatml"; } } // print sample chat example to make it clear which template is used - { - LOG_INFO("chat template", - { - {"chat_example", llama_chat_format_example(ctx_server->model, params.chat_template)}, - {"built_in", params.chat_template.empty()}, - }); - } + LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, + params.chat_template.empty() ? "(built-in)" : params.chat_template.c_str(), + common_chat_format_example(*ctx_server->chat_templates.template_default, ctx_server->params_base.use_jinja) .c_str()); ctx_server->queue_tasks.on_new_task( std::bind(&server_context::process_single_task, ctx_server, std::placeholders::_1)); - ctx_server->queue_tasks.on_finish_multitask( - std::bind(&server_context::on_finish_multitask, ctx_server, std::placeholders::_1)); ctx_server->queue_tasks.on_update_slots(std::bind(&server_context::update_slots, ctx_server)); - ctx_server->queue_results.on_multitask_update(std::bind(&server_queue::update_multitask, &ctx_server->queue_tasks, - std::placeholders::_1, std::placeholders::_2, - std::placeholders::_3)); std::thread t([ctx_server]() { JNIEnv *env; @@ -478,22 +489,63 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) std::string c_params = parse_jstring(env, jparams); - json json_params = json::parse(c_params); - const bool infill = json_params.contains("input_prefix") || json_params.contains("input_suffix"); + json data = json::parse(c_params); + + server_task_type type = SERVER_TASK_TYPE_COMPLETION; - if (json_params.value("use_chat_template", false)) + if (data.contains("input_prefix") || data.contains("input_suffix")) { - json chat; - chat.push_back({{"role", "system"}, {"content", ctx_server->system_prompt}}); - chat.push_back({{"role", "user"}, {"content", json_params["prompt"]}}); - json_params["prompt"] = format_chat(ctx_server->model, ctx_server->params.chat_template, chat); + type = SERVER_TASK_TYPE_INFILL; } - const int id_task = ctx_server->queue_tasks.get_new_id(); - ctx_server->queue_results.add_waiting_task_id(id_task); - ctx_server->request_completion(id_task, -1, json_params, infill, false); + auto completion_id = gen_chatcmplid(); + std::vector tasks; + + try + { + const auto & prompt = data.at("prompt"); + + std::vector tokenized_prompts = tokenize_input_prompts(ctx_server->vocab, prompt, true, true); + + tasks.reserve(tokenized_prompts.size()); + for (size_t i = 0; i < tokenized_prompts.size(); i++) + { + server_task task = server_task(type); + + task.id = ctx_server->queue_tasks.get_new_id(); + task.index = i; + + task.prompt_tokens = std::move(tokenized_prompts[i]); + task.params = server_task::params_from_json_cmpl(ctx_server->ctx, ctx_server->params_base, data); + task.id_selected_slot = json_value(data, "id_slot", -1); + + // OAI-compat + task.params.oaicompat = OAICOMPAT_TYPE_NONE; + task.params.oaicompat_cmpl_id = completion_id; + // oaicompat_model is already populated by params_from_json_cmpl - return id_task; + tasks.push_back(task); + } + } + catch (const std::exception &e) + { + const auto &err = format_error_response(e.what(), ERROR_TYPE_INVALID_REQUEST); + env->ThrowNew(c_llama_error, err.dump().c_str()); + return 0; + } + + ctx_server->queue_results.add_waiting_tasks(tasks); + ctx_server->queue_tasks.post(tasks); + + const auto task_ids = server_task::get_list_id(tasks); + + if (task_ids.size() != 1) + { + env->ThrowNew(c_llama_error, "multitasking currently not supported"); + return 0; + } + + return *task_ids.begin(); } JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) @@ -501,26 +553,26 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - server_task_result result = ctx_server->queue_results.recv(id_task); + server_task_result_ptr result = ctx_server->queue_results.recv(id_task); - if (result.error) + if (result->is_error()) { - std::string response = result.data["message"].get(); + std::string response = result->to_json()["message"].get(); ctx_server->queue_results.remove_waiting_task_id(id_task); env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - - std::string response = result.data["content"].get(); - if (result.stop) + const auto out_res = result->to_json(); + std::string response = out_res["content"].get(); + if (result->is_stop()) { ctx_server->queue_results.remove_waiting_task_id(id_task); } jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - if (result.data.contains("completion_probabilities")) + if (out_res.contains("completion_probabilities")) { - auto completion_probabilities = result.data["completion_probabilities"]; + auto completion_probabilities = out_res["completion_probabilities"]; for (const auto &entry : completion_probabilities) { auto probs = entry["probs"]; @@ -537,8 +589,10 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE } } + ctx_server->queue_results.remove_waiting_task_id(id_task); + jbyteArray jbytes = parse_jbytes(env, response); - return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result.stop); + return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result->is_stop()); } JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring jprompt) @@ -546,41 +600,88 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - if (!ctx_server->params.embedding) + if (!ctx_server->params_base.embedding) { env->ThrowNew(c_llama_error, "model was not loaded with embedding support (see ModelParameters#setEmbedding(boolean))"); return nullptr; } + + const std::string prompt = parse_jstring(env, jprompt); + + SRV_INF("Calling embedding '%s'\n", prompt.c_str()); + + const auto tokens = tokenize_mixed(ctx_server->vocab, prompt, true, true); + std::vector tasks; + + server_task task = server_task(SERVER_TASK_TYPE_EMBEDDING); + + task.id = ctx_server->queue_tasks.get_new_id(); + task.index = 0; + task.prompt_tokens = std::move(tokens); - const int id_task = ctx_server->queue_tasks.get_new_id(); - ctx_server->queue_results.add_waiting_task_id(id_task); - ctx_server->request_completion(id_task, -1, {{"prompt", prompt}}, false, true); + // OAI-compat + task.params.oaicompat = OAICOMPAT_TYPE_NONE; - server_task_result result = ctx_server->queue_results.recv(id_task); + tasks.push_back(task); + + ctx_server->queue_results.add_waiting_tasks(tasks); + ctx_server->queue_tasks.post(tasks); + + std::unordered_set task_ids = server_task::get_list_id(tasks); + const auto id_task = *task_ids.begin(); + json responses = json::array(); + + json error = nullptr; + + server_task_result_ptr result = ctx_server->queue_results.recv(id_task); ctx_server->queue_results.remove_waiting_task_id(id_task); - if (result.error) + + json response_str = result->to_json(); + if (result->is_error()) { - std::string response = result.data["message"].get(); + std::string response = result->to_json()["message"].get(); + ctx_server->queue_results.remove_waiting_task_id(id_task); env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - std::vector embedding = result.data["embedding"].get>(); - jsize embedding_size = embedding.size(); // NOLINT(*-narrowing-conversions) + const auto out_res = result->to_json(); - jfloatArray j_embedding = env->NewFloatArray(embedding_size); - if (j_embedding == nullptr) - { - env->ThrowNew(c_error_oom, "could not allocate embedding"); - return nullptr; - } + // Extract "embedding" as a vector of vectors (2D array) + std::vector> embedding = out_res["embedding"].get>>(); + + // Get total number of rows in the embedding + jsize embedding_rows = embedding.size(); + + // Get total number of columns in the first row (assuming all rows are of equal length) + jsize embedding_cols = embedding_rows > 0 ? embedding[0].size() : 0; - env->SetFloatArrayRegion(j_embedding, 0, embedding_size, reinterpret_cast(embedding.data())); + SRV_INF("Embedding has %d rows and %d columns\n", embedding_rows, embedding_cols); - return j_embedding; + // Ensure embedding is not empty + if (embedding.empty() || embedding[0].empty()) { + env->ThrowNew(c_error_oom, "embedding array is empty"); + return nullptr; + } + + // Extract only the first row + const std::vector& first_row = embedding[0]; // Reference to avoid copying + + + // Create a new float array in JNI + jfloatArray j_embedding = env->NewFloatArray(embedding_cols); + if (j_embedding == nullptr) { + env->ThrowNew(c_error_oom, "could not allocate embedding"); + return nullptr; + } + + // Copy the first row into the JNI float array + env->SetFloatArrayRegion(j_embedding, 0, embedding_cols, reinterpret_cast(first_row.data())); + + return j_embedding; } JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) @@ -589,7 +690,8 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) const std::string c_prompt = parse_jstring(env, jprompt); - std::vector tokens = ctx_server->tokenize(c_prompt, false); + + llama_tokens tokens = tokenize_mixed(ctx_server->vocab, c_prompt, false, true); jsize token_size = tokens.size(); // NOLINT(*-narrowing-conversions) jintArray java_tokens = env->NewIntArray(token_size); @@ -632,7 +734,8 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv * { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - ctx_server->request_cancel(id_task); + std::unordered_set id_tasks = {id_task}; + ctx_server->cancel_tasks(id_tasks); ctx_server->queue_results.remove_waiting_task_id(id_task); } diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 2fd0529e..0ab39ea4 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -7,6 +7,25 @@ #ifdef __cplusplus extern "C" { #endif + +/* + * Class: de_kherud_llama_LlamaModel + * Method: requestEmbedding + * Signature: (Ljava/lang/String;)[F + */ +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestEmbedding + (JNIEnv *, jobject, jstring); + + +/* + * Class: de_kherud_llama_LlamaModel + * Method: receiveEmbedding + * Signature: (Ljava/lang/Int;)[F + */ +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_receiveEmbedding + (JNIEnv *, jobject, jint); + + /* * Class: de_kherud_llama_LlamaModel * Method: embed @@ -66,10 +85,10 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes /* * Class: de_kherud_llama_LlamaModel * Method: loadModel - * Signature: (Ljava/lang/String;)V + * Signature: ([Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jstring); + (JNIEnv *, jobject, jobjectArray); /* * Class: de_kherud_llama_LlamaModel diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 0601dac4..70e7236d 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1,8 +1,11 @@ #include "utils.hpp" #include "common.h" -#include "grammar-parser.h" +#include "json-schema-to-grammar.h" #include "llama.h" +#include "log.h" +#include "sampling.h" +#include "speculative.h" #include "nlohmann/json.hpp" @@ -10,161 +13,1257 @@ #include #include #include +#include +#include #include #include -#include #include #include +#include +#include using json = nlohmann::ordered_json; -enum stop_type -{ - STOP_TYPE_FULL, - STOP_TYPE_PARTIAL, -}; +constexpr int HTTP_POLLING_SECONDS = 1; -enum slot_state -{ - SLOT_STATE_IDLE, - SLOT_STATE_PROCESSING, +enum stop_type { + STOP_TYPE_NONE, + STOP_TYPE_EOS, + STOP_TYPE_WORD, + STOP_TYPE_LIMIT, }; -enum slot_command -{ - SLOT_COMMAND_NONE, - SLOT_COMMAND_LOAD_PROMPT, - SLOT_COMMAND_RELEASE, +// state diagram: https://github.com/ggerganov/llama.cpp/pull/9283 +enum slot_state { + SLOT_STATE_IDLE, + SLOT_STATE_STARTED, // TODO: this state is only used for setting up the initial prompt processing; maybe merge it with launch_slot_with_task in the future + SLOT_STATE_PROCESSING_PROMPT, + SLOT_STATE_DONE_PROMPT, + SLOT_STATE_GENERATING, }; -enum server_state -{ - SERVER_STATE_LOADING_MODEL, // Server is starting up, model not fully loaded yet - SERVER_STATE_READY, // Server is ready and model is loaded - SERVER_STATE_ERROR // An error occurred, load_model failed +enum server_state { + SERVER_STATE_LOADING_MODEL, // Server is starting up, model not fully loaded yet + SERVER_STATE_READY, // Server is ready and model is loaded }; -enum server_task_type -{ +enum server_task_type { SERVER_TASK_TYPE_COMPLETION, + SERVER_TASK_TYPE_EMBEDDING, + SERVER_TASK_TYPE_RERANK, + SERVER_TASK_TYPE_INFILL, SERVER_TASK_TYPE_CANCEL, SERVER_TASK_TYPE_NEXT_RESPONSE, SERVER_TASK_TYPE_METRICS, SERVER_TASK_TYPE_SLOT_SAVE, SERVER_TASK_TYPE_SLOT_RESTORE, SERVER_TASK_TYPE_SLOT_ERASE, + SERVER_TASK_TYPE_SET_LORA, }; -struct server_task -{ - int id = -1; // to be filled by server_queue - int id_multi = -1; - int id_target = -1; +enum oaicompat_type { + OAICOMPAT_TYPE_NONE, + OAICOMPAT_TYPE_CHAT, + OAICOMPAT_TYPE_COMPLETION, + OAICOMPAT_TYPE_EMBEDDING, +}; + +// https://community.openai.com/t/openai-chat-list-of-error-codes-and-types/357791/11 +enum error_type { + ERROR_TYPE_INVALID_REQUEST, + ERROR_TYPE_AUTHENTICATION, + ERROR_TYPE_SERVER, + ERROR_TYPE_NOT_FOUND, + ERROR_TYPE_PERMISSION, + ERROR_TYPE_UNAVAILABLE, // custom error + ERROR_TYPE_NOT_SUPPORTED, // custom error +}; + +struct slot_params { + bool stream = true; + bool cache_prompt = true; // remember the prompt to avoid reprocessing all prompt + bool return_tokens = false; + + int32_t n_keep = 0; // number of tokens to keep from initial prompt + int32_t n_discard = 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half + int32_t n_predict = -1; // new tokens to predict + int32_t n_indent = 0; // mininum line indentation for the generated text in number of whitespace characters + + int64_t t_max_prompt_ms = -1; // TODO: implement + int64_t t_max_predict_ms = -1; // if positive, limit the generation phase to this time limit + + std::vector lora; + + std::vector antiprompt; + std::vector response_fields; + bool timings_per_token = false; + bool post_sampling_probs = false; + bool ignore_eos = false; + + struct common_params_sampling sampling; + struct common_params_speculative speculative; + + // OAI-compat fields + bool verbose = false; + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; + common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; + + json to_json() const { + std::vector samplers; + samplers.reserve(sampling.samplers.size()); + for (const auto & sampler : sampling.samplers) { + samplers.emplace_back(common_sampler_type_to_str(sampler)); + } + + json lora = json::array(); + for (size_t i = 0; i < this->lora.size(); ++i) { + lora.push_back({{"id", i}, {"scale", this->lora[i].scale}}); + } + + std::vector grammar_trigger_words; + for (const auto & trigger : sampling.grammar_trigger_words) { + grammar_trigger_words.push_back(trigger.word); + } + + return json { + {"n_predict", n_predict}, // Server configured n_predict + {"seed", sampling.seed}, + {"temperature", sampling.temp}, + {"dynatemp_range", sampling.dynatemp_range}, + {"dynatemp_exponent", sampling.dynatemp_exponent}, + {"top_k", sampling.top_k}, + {"top_p", sampling.top_p}, + {"min_p", sampling.min_p}, + {"xtc_probability", sampling.xtc_probability}, + {"xtc_threshold", sampling.xtc_threshold}, + {"typical_p", sampling.typ_p}, + {"repeat_last_n", sampling.penalty_last_n}, + {"repeat_penalty", sampling.penalty_repeat}, + {"presence_penalty", sampling.penalty_present}, + {"frequency_penalty", sampling.penalty_freq}, + {"dry_multiplier", sampling.dry_multiplier}, + {"dry_base", sampling.dry_base}, + {"dry_allowed_length", sampling.dry_allowed_length}, + {"dry_penalty_last_n", sampling.dry_penalty_last_n}, + {"dry_sequence_breakers", sampling.dry_sequence_breakers}, + {"mirostat", sampling.mirostat}, + {"mirostat_tau", sampling.mirostat_tau}, + {"mirostat_eta", sampling.mirostat_eta}, + {"stop", antiprompt}, + {"max_tokens", n_predict}, // User configured n_predict + {"n_keep", n_keep}, + {"n_discard", n_discard}, + {"ignore_eos", sampling.ignore_eos}, + {"stream", stream}, + {"logit_bias", format_logit_bias(sampling.logit_bias)}, + {"n_probs", sampling.n_probs}, + {"min_keep", sampling.min_keep}, + {"grammar", sampling.grammar}, + {"grammar_trigger_words", grammar_trigger_words}, + {"grammar_trigger_tokens", sampling.grammar_trigger_tokens}, + {"preserved_tokens", sampling.preserved_tokens}, + {"samplers", samplers}, + {"speculative.n_max", speculative.n_max}, + {"speculative.n_min", speculative.n_min}, + {"speculative.p_min", speculative.p_min}, + {"timings_per_token", timings_per_token}, + {"post_sampling_probs", post_sampling_probs}, + {"lora", lora}, + }; + } +}; + +struct server_task { + int id = -1; // to be filled by server_queue + int index = -1; // used when there are multiple prompts (batch request) server_task_type type; - json data; - bool infill = false; - bool embedding = false; + // used by SERVER_TASK_TYPE_CANCEL + int id_target = -1; + + // used by SERVER_TASK_TYPE_INFERENCE + slot_params params; + llama_tokens prompt_tokens; + int id_selected_slot = -1; + + // used by SERVER_TASK_TYPE_SLOT_SAVE, SERVER_TASK_TYPE_SLOT_RESTORE, SERVER_TASK_TYPE_SLOT_ERASE + struct slot_action { + int slot_id; + std::string filename; + std::string filepath; + }; + slot_action slot_action; + + // used by SERVER_TASK_TYPE_METRICS + bool metrics_reset_bucket = false; + + // used by SERVER_TASK_TYPE_SET_LORA + std::vector set_lora; + + server_task(server_task_type type) : type(type) {} + + static slot_params params_from_json_cmpl( + const llama_context * ctx, + const common_params & params_base, + const json & data) { + const llama_model * model = llama_get_model(ctx); + const llama_vocab * vocab = llama_model_get_vocab(model); + + slot_params params; + + // Sampling parameter defaults are loaded from the global server context (but individual requests can still override them) + slot_params defaults; + defaults.sampling = params_base.sampling; + defaults.speculative = params_base.speculative; + + // enabling this will output extra debug information in the HTTP responses from the server + params.verbose = params_base.verbosity > 9; + params.timings_per_token = json_value(data, "timings_per_token", false); + + params.stream = json_value(data, "stream", false); + params.cache_prompt = json_value(data, "cache_prompt", true); + params.return_tokens = json_value(data, "return_tokens", false); + params.n_predict = json_value(data, "n_predict", json_value(data, "max_tokens", defaults.n_predict)); + params.n_indent = json_value(data, "n_indent", defaults.n_indent); + params.n_keep = json_value(data, "n_keep", defaults.n_keep); + params.n_discard = json_value(data, "n_discard", defaults.n_discard); + //params.t_max_prompt_ms = json_value(data, "t_max_prompt_ms", defaults.t_max_prompt_ms); // TODO: implement + params.t_max_predict_ms = json_value(data, "t_max_predict_ms", defaults.t_max_predict_ms); + params.response_fields = json_value(data, "response_fields", std::vector()); + + params.sampling.top_k = json_value(data, "top_k", defaults.sampling.top_k); + params.sampling.top_p = json_value(data, "top_p", defaults.sampling.top_p); + params.sampling.min_p = json_value(data, "min_p", defaults.sampling.min_p); + params.sampling.xtc_probability = json_value(data, "xtc_probability", defaults.sampling.xtc_probability); + params.sampling.xtc_threshold = json_value(data, "xtc_threshold", defaults.sampling.xtc_threshold); + params.sampling.typ_p = json_value(data, "typical_p", defaults.sampling.typ_p); + params.sampling.temp = json_value(data, "temperature", defaults.sampling.temp); + params.sampling.dynatemp_range = json_value(data, "dynatemp_range", defaults.sampling.dynatemp_range); + params.sampling.dynatemp_exponent = json_value(data, "dynatemp_exponent", defaults.sampling.dynatemp_exponent); + params.sampling.penalty_last_n = json_value(data, "repeat_last_n", defaults.sampling.penalty_last_n); + params.sampling.penalty_repeat = json_value(data, "repeat_penalty", defaults.sampling.penalty_repeat); + params.sampling.penalty_freq = json_value(data, "frequency_penalty", defaults.sampling.penalty_freq); + params.sampling.penalty_present = json_value(data, "presence_penalty", defaults.sampling.penalty_present); + params.sampling.dry_multiplier = json_value(data, "dry_multiplier", defaults.sampling.dry_multiplier); + params.sampling.dry_base = json_value(data, "dry_base", defaults.sampling.dry_base); + params.sampling.dry_allowed_length = json_value(data, "dry_allowed_length", defaults.sampling.dry_allowed_length); + params.sampling.dry_penalty_last_n = json_value(data, "dry_penalty_last_n", defaults.sampling.dry_penalty_last_n); + params.sampling.mirostat = json_value(data, "mirostat", defaults.sampling.mirostat); + params.sampling.mirostat_tau = json_value(data, "mirostat_tau", defaults.sampling.mirostat_tau); + params.sampling.mirostat_eta = json_value(data, "mirostat_eta", defaults.sampling.mirostat_eta); + params.sampling.seed = json_value(data, "seed", defaults.sampling.seed); + params.sampling.n_probs = json_value(data, "n_probs", defaults.sampling.n_probs); + params.sampling.min_keep = json_value(data, "min_keep", defaults.sampling.min_keep); + params.post_sampling_probs = json_value(data, "post_sampling_probs", defaults.post_sampling_probs); + + params.speculative.n_min = json_value(data, "speculative.n_min", defaults.speculative.n_min); + params.speculative.n_max = json_value(data, "speculative.n_max", defaults.speculative.n_max); + params.speculative.p_min = json_value(data, "speculative.p_min", defaults.speculative.p_min); + + params.speculative.n_min = std::min(params.speculative.n_max, params.speculative.n_min); + params.speculative.n_min = std::max(params.speculative.n_min, 2); + params.speculative.n_max = std::max(params.speculative.n_max, 0); + + // Use OpenAI API logprobs only if n_probs wasn't provided + if (data.contains("logprobs") && params.sampling.n_probs == defaults.sampling.n_probs){ + params.sampling.n_probs = json_value(data, "logprobs", defaults.sampling.n_probs); + } + + if (data.contains("lora")) { + if (data.at("lora").is_array()) { + params.lora = parse_lora_request(params_base.lora_adapters, data.at("lora")); + } else { + throw std::runtime_error("Error: 'lora' must be an array of objects with 'id' and 'scale' fields"); + } + } else { + params.lora = params_base.lora_adapters; + } + + // TODO: add more sanity checks for the input parameters + + if (params.sampling.penalty_last_n < -1) { + throw std::runtime_error("Error: repeat_last_n must be >= -1"); + } + + if (params.sampling.dry_penalty_last_n < -1) { + throw std::runtime_error("Error: dry_penalty_last_n must be >= -1"); + } + + if (params.sampling.penalty_last_n == -1) { + // note: should be the slot's context and not the full context, but it's ok + params.sampling.penalty_last_n = llama_n_ctx(ctx); + } + + if (params.sampling.dry_penalty_last_n == -1) { + params.sampling.dry_penalty_last_n = llama_n_ctx(ctx); + } + + if (params.sampling.dry_base < 1.0f) { + params.sampling.dry_base = defaults.sampling.dry_base; + } + + // sequence breakers for DRY + { + // Currently, this is not compatible with TextGen WebUI, Koboldcpp and SillyTavern format + // Ref: https://github.com/oobabooga/text-generation-webui/blob/d1af7a41ade7bd3c3a463bfa640725edb818ebaf/extensions/openai/typing.py#L39 + + if (data.contains("dry_sequence_breakers")) { + params.sampling.dry_sequence_breakers = json_value(data, "dry_sequence_breakers", std::vector()); + if (params.sampling.dry_sequence_breakers.empty()) { + throw std::runtime_error("Error: dry_sequence_breakers must be a non-empty array of strings"); + } + } + } + + // process "json_schema" and "grammar" + if (data.contains("json_schema") && !data.at("json_schema").is_null() && data.contains("grammar") && !data.at("grammar").is_null()) { + throw std::runtime_error("Either \"json_schema\" or \"grammar\" can be specified, but not both"); + } + if (data.contains("json_schema") && !data.contains("grammar")) { + try { + auto schema = json_value(data, "json_schema", json::object()); + SRV_DBG("JSON schema: %s\n", schema.dump(2).c_str()); + params.sampling.grammar = json_schema_to_grammar(schema); + SRV_DBG("Converted grammar: %s\n", params.sampling.grammar.c_str()); + } catch (const std::exception & e) { + throw std::runtime_error(std::string("\"json_schema\": ") + e.what()); + } + } else { + params.sampling.grammar = json_value(data, "grammar", defaults.sampling.grammar); + SRV_DBG("Grammar: %s\n", params.sampling.grammar.c_str()); + params.sampling.grammar_lazy = json_value(data, "grammar_lazy", defaults.sampling.grammar_lazy); + SRV_DBG("Grammar lazy: %s\n", params.sampling.grammar_lazy ? "true" : "false"); + } + + { + auto it = data.find("chat_format"); + if (it != data.end()) { + params.oaicompat_chat_format = static_cast(it->get()); + SRV_INF("Chat format: %s\n", common_chat_format_name(params.oaicompat_chat_format).c_str()); + } else { + params.oaicompat_chat_format = defaults.oaicompat_chat_format; + } + } + + { + const auto grammar_triggers = data.find("grammar_triggers"); + if (grammar_triggers != data.end()) { + for (const auto & t : *grammar_triggers) { + common_grammar_trigger trigger; + trigger.word = t.at("word"); + trigger.at_start = t.at("at_start"); + + auto ids = common_tokenize(vocab, trigger.word, /* add_special= */ false, /* parse_special= */ true); + if (ids.size() == 1) { + SRV_DBG("Grammar trigger token: %d (`%s`)\n", ids[0], trigger.word.c_str()); + params.sampling.grammar_trigger_tokens.push_back(ids[0]); + params.sampling.preserved_tokens.insert(ids[0]); + continue; + } + SRV_DBG("Grammar trigger word: `%s`\n", trigger.word.c_str()); + params.sampling.grammar_trigger_words.push_back(trigger); + } + } + const auto preserved_tokens = data.find("preserved_tokens"); + if (preserved_tokens != data.end()) { + for (const auto & t : *preserved_tokens) { + auto ids = common_tokenize(vocab, t.get(), /* add_special= */ false, /* parse_special= */ true); + if (ids.size() == 1) { + SRV_DBG("Preserved token: %d\n", ids[0]); + params.sampling.preserved_tokens.insert(ids[0]); + } else { + // This may happen when using a tool call style meant for a model with special tokens to preserve on a model without said tokens. + SRV_WRN("Not preserved because more than 1 token (wrong chat template override?): %s\n", t.get().c_str()); + } + } + } + if (params.sampling.grammar_lazy) { + GGML_ASSERT(params.sampling.grammar_trigger_tokens.size() > 0 || params.sampling.grammar_trigger_words.size() > 0); + } + } + + { + params.sampling.logit_bias.clear(); + params.ignore_eos = json_value(data, "ignore_eos", false); + + const auto & logit_bias = data.find("logit_bias"); + if (logit_bias != data.end() && logit_bias->is_array()) { + const int n_vocab = llama_vocab_n_tokens(vocab); + for (const auto & el : *logit_bias) { + // TODO: we may want to throw errors here, in case "el" is incorrect + if (el.is_array() && el.size() == 2) { + float bias; + if (el[1].is_number()) { + bias = el[1].get(); + } else if (el[1].is_boolean() && !el[1].get()) { + bias = -INFINITY; + } else { + continue; + } + + if (el[0].is_number_integer()) { + llama_token tok = el[0].get(); + if (tok >= 0 && tok < n_vocab) { + params.sampling.logit_bias.push_back({tok, bias}); + } + } else if (el[0].is_string()) { + auto toks = common_tokenize(vocab, el[0].get(), false); + for (auto tok : toks) { + params.sampling.logit_bias.push_back({tok, bias}); + } + } + } + } + } + } + + { + params.antiprompt.clear(); + + const auto & stop = data.find("stop"); + if (stop != data.end() && stop->is_array()) { + for (const auto & word : *stop) { + if (!word.empty()) { + params.antiprompt.push_back(word); + } + } + } + } + + { + const auto samplers = data.find("samplers"); + if (samplers != data.end()) { + if (samplers->is_array()) { + params.sampling.samplers = common_sampler_types_from_names(*samplers, false); + } else if (samplers->is_string()){ + params.sampling.samplers = common_sampler_types_from_chars(samplers->get()); + } + } else { + params.sampling.samplers = defaults.sampling.samplers; + } + } + + std::string model_name = params_base.model_alias.empty() ? DEFAULT_OAICOMPAT_MODEL : params_base.model_alias; + params.oaicompat_model = json_value(data, "model", model_name); + + return params; + } + + // utility function + static std::unordered_set get_list_id(const std::vector & tasks) { + std::unordered_set ids(tasks.size()); + for (size_t i = 0; i < tasks.size(); i++) { + ids.insert(tasks[i].id); + } + return ids; + } }; -struct server_task_result -{ - int id = -1; - int id_multi = -1; +struct result_timings { + int32_t prompt_n = -1; + double prompt_ms; + double prompt_per_token_ms; + double prompt_per_second; + + int32_t predicted_n = -1; + double predicted_ms; + double predicted_per_token_ms; + double predicted_per_second; + + json to_json() const { + return { + {"prompt_n", prompt_n}, + {"prompt_ms", prompt_ms}, + {"prompt_per_token_ms", prompt_per_token_ms}, + {"prompt_per_second", prompt_per_second}, + + {"predicted_n", predicted_n}, + {"predicted_ms", predicted_ms}, + {"predicted_per_token_ms", predicted_per_token_ms}, + {"predicted_per_second", predicted_per_second}, + }; + } +}; + +struct server_task_result { + int id = -1; + int id_slot = -1; + virtual bool is_error() { + // only used by server_task_result_error + return false; + } + virtual bool is_stop() { + // only used by server_task_result_cmpl_* + return false; + } + virtual int get_index() { + return -1; + } + virtual json to_json() = 0; + virtual ~server_task_result() = default; +}; + +// using shared_ptr for polymorphism of server_task_result +using server_task_result_ptr = std::unique_ptr; + +inline std::string stop_type_to_str(stop_type type) { + switch (type) { + case STOP_TYPE_EOS: return "eos"; + case STOP_TYPE_WORD: return "word"; + case STOP_TYPE_LIMIT: return "limit"; + default: return "none"; + } +} + +struct completion_token_output { + llama_token tok; + float prob; + std::string text_to_send; + struct prob_info { + llama_token tok; + std::string txt; + float prob; + }; + std::vector probs; + + json to_json(bool post_sampling_probs) const { + json probs_for_token = json::array(); + for (const auto & p : probs) { + std::string txt(p.txt); + txt.resize(validate_utf8(txt)); + probs_for_token.push_back(json { + {"id", p.tok}, + {"token", txt}, + {"bytes", str_to_bytes(p.txt)}, + { + post_sampling_probs ? "prob" : "logprob", + post_sampling_probs ? p.prob : logarithm(p.prob) + }, + }); + } + return probs_for_token; + } + + static json probs_vector_to_json(const std::vector & probs, bool post_sampling_probs) { + json out = json::array(); + for (const auto & p : probs) { + std::string txt(p.text_to_send); + txt.resize(validate_utf8(txt)); + out.push_back(json { + {"id", p.tok}, + {"token", txt}, + {"bytes", str_to_bytes(p.text_to_send)}, + { + post_sampling_probs ? "prob" : "logprob", + post_sampling_probs ? p.prob : logarithm(p.prob) + }, + { + post_sampling_probs ? "top_probs" : "top_logprobs", + p.to_json(post_sampling_probs) + }, + }); + } + return out; + } - json data; + static float logarithm(float x) { + // nlohmann::json converts -inf to null, so we need to prevent that + return x == 0.0f ? std::numeric_limits::lowest() : std::log(x); + } - bool stop; - bool error; + static std::vector str_to_bytes(const std::string & str) { + std::vector bytes; + for (unsigned char c : str) { + bytes.push_back(c); + } + return bytes; + } }; -struct server_task_multi -{ - int id = -1; +struct server_task_result_cmpl_final : server_task_result { + int index = 0; + + std::string content; + llama_tokens tokens; + + bool stream; + result_timings timings; + std::string prompt; + + bool truncated; + int32_t n_decoded; + int32_t n_prompt_tokens; + int32_t n_tokens_cached; + bool has_new_line; + std::string stopping_word; + stop_type stop = STOP_TYPE_NONE; + + bool post_sampling_probs; + std::vector probs_output; + std::vector response_fields; + + slot_params generation_params; + + // OAI-compat fields + bool verbose = false; + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; + common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; + + virtual int get_index() override { + return index; + } + + virtual bool is_stop() override { + return true; // in stream mode, final responses are considered stop + } + + virtual json to_json() override { + switch (oaicompat) { + case OAICOMPAT_TYPE_NONE: + return to_json_non_oaicompat(); + case OAICOMPAT_TYPE_COMPLETION: + return to_json_oaicompat(); + case OAICOMPAT_TYPE_CHAT: + return stream ? to_json_oaicompat_chat_stream() : to_json_oaicompat_chat(); + default: + GGML_ASSERT(false && "Invalid oaicompat_type"); + } + } + + json to_json_non_oaicompat() { + json res = json { + {"index", index}, + {"content", stream ? "" : content}, // in stream mode, content is already in last partial chunk + {"tokens", stream ? llama_tokens {} : tokens}, + {"id_slot", id_slot}, + {"stop", true}, + {"model", oaicompat_model}, + {"tokens_predicted", n_decoded}, + {"tokens_evaluated", n_prompt_tokens}, + {"generation_settings", generation_params.to_json()}, + {"prompt", prompt}, + {"has_new_line", has_new_line}, + {"truncated", truncated}, + {"stop_type", stop_type_to_str(stop)}, + {"stopping_word", stopping_word}, + {"tokens_cached", n_tokens_cached}, + {"timings", timings.to_json()}, + }; + if (!stream && !probs_output.empty()) { + res["completion_probabilities"] = completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs); + } + return response_fields.empty() ? res : json_get_nested_values(response_fields, res); + } + + json to_json_oaicompat() { + std::time_t t = std::time(0); + json logprobs = json(nullptr); // OAI default to null + if (!stream && probs_output.size() > 0) { + logprobs = json{ + {"content", completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs)}, + }; + } + json finish_reason = "length"; + if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { + finish_reason = "stop"; + } + json res = json { + {"choices", json::array({ + json{ + {"text", stream ? "" : content}, // in stream mode, content is already in last partial chunk + {"index", index}, + {"logprobs", logprobs}, + {"finish_reason", finish_reason}, + } + })}, + {"created", t}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "text_completion"}, + {"usage", json { + {"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens} + }}, + {"id", oaicompat_cmpl_id} + }; + + // extra fields for debugging purposes + if (verbose) { + res["__verbose"] = to_json_non_oaicompat(); + } + if (timings.prompt_n >= 0) { + res.push_back({"timings", timings.to_json()}); + } + + return res; + } + + json to_json_oaicompat_chat() { + std::string finish_reason = "length"; + common_chat_msg msg; + if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { + SRV_DBG("Parsing chat message: %s\n", content.c_str()); + msg = common_chat_parse(content, oaicompat_chat_format); + finish_reason = msg.tool_calls.empty() ? "stop" : "tool_calls"; + } else { + msg.content = content; + } + + json tool_calls; + if (!msg.tool_calls.empty()) { + tool_calls = json::array(); + for (const auto & tc : msg.tool_calls) { + tool_calls.push_back({ + {"type", "function"}, + {"function", { + {"name", tc.name}, + {"arguments", tc.arguments}, + }}, + {"id", tc.id}, + }); + } + } + + json message { + {"content", msg.content}, + {"tool_calls", tool_calls}, + {"role", "assistant"}, + }; + if (!msg.tool_plan.empty()) { + message["tool_plan"] = msg.tool_plan; + } + + json choice { + {"finish_reason", finish_reason}, + {"index", 0}, + {"message", message}, + }; + + if (!stream && probs_output.size() > 0) { + choice["logprobs"] = json{ + {"content", completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs)}, + }; + } + + std::time_t t = std::time(0); + + json res = json { + {"choices", json::array({choice})}, + {"created", t}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "chat.completion"}, + {"usage", json { + {"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens} + }}, + {"id", oaicompat_cmpl_id} + }; + + // extra fields for debugging purposes + if (verbose) { + res["__verbose"] = to_json_non_oaicompat(); + } + if (timings.prompt_n >= 0) { + res.push_back({"timings", timings.to_json()}); + } + + return res; + } + + json to_json_oaicompat_chat_stream() { + std::time_t t = std::time(0); + std::string finish_reason = "length"; + if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { + finish_reason = "stop"; + } + + json choice = json { + {"finish_reason", finish_reason}, + {"index", 0}, + {"delta", json::object()} + }; + + json ret = json { + {"choices", json::array({choice})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "chat.completion.chunk"}, + {"usage", json { + {"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens}, + }}, + }; - std::set subtasks_remaining; - std::vector results; + if (timings.prompt_n >= 0) { + ret.push_back({"timings", timings.to_json()}); + } + + return ret; + } }; -struct slot_params -{ - bool stream = true; - bool cache_prompt = false; // remember the prompt to avoid reprocessing all prompt +struct server_task_result_cmpl_partial : server_task_result { + int index = 0; - int32_t n_keep = 0; // number of tokens to keep from initial prompt - int32_t n_discard = - 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half - int32_t n_predict = -1; // new tokens to predict + std::string content; + llama_tokens tokens; - std::vector antiprompt; + int32_t n_decoded; + int32_t n_prompt_tokens; + + bool post_sampling_probs; + completion_token_output prob_output; + result_timings timings; + + // OAI-compat fields + bool verbose = false; + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; - json input_prefix; - json input_suffix; + virtual int get_index() override { + return index; + } + + virtual bool is_stop() override { + return false; // in stream mode, partial responses are not considered stop + } + + virtual json to_json() override { + switch (oaicompat) { + case OAICOMPAT_TYPE_NONE: + return to_json_non_oaicompat(); + case OAICOMPAT_TYPE_COMPLETION: + return to_json_oaicompat(); + case OAICOMPAT_TYPE_CHAT: + return to_json_oaicompat_chat(); + default: + GGML_ASSERT(false && "Invalid oaicompat_type"); + } + } + + json to_json_non_oaicompat() { + // non-OAI-compat JSON + json res = json { + {"index", index}, + {"content", content}, + {"tokens", tokens}, + {"stop", false}, + {"id_slot", id_slot}, + {"tokens_predicted", n_decoded}, + {"tokens_evaluated", n_prompt_tokens}, + }; + // populate the timings object when needed (usually for the last response or with timings_per_token enabled) + if (timings.prompt_n > 0) { + res.push_back({"timings", timings.to_json()}); + } + if (!prob_output.probs.empty()) { + res["completion_probabilities"] = completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs); + } + return res; + } + + json to_json_oaicompat() { + std::time_t t = std::time(0); + json logprobs = json(nullptr); // OAI default to null + if (prob_output.probs.size() > 0) { + logprobs = json{ + {"content", completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs)}, + }; + } + json res = json { + {"choices", json::array({ + json{ + {"text", content}, + {"index", index}, + {"logprobs", logprobs}, + {"finish_reason", nullptr}, + } + })}, + {"created", t}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "text_completion"}, + {"id", oaicompat_cmpl_id} + }; + + // extra fields for debugging purposes + if (verbose) { + res["__verbose"] = to_json_non_oaicompat(); + } + if (timings.prompt_n >= 0) { + res.push_back({"timings", timings.to_json()}); + } + + return res; + } + + json to_json_oaicompat_chat() { + bool first = n_decoded == 0; + std::time_t t = std::time(0); + json choices; + + if (first) { + if (content.empty()) { + choices = json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{{"role", "assistant"}}}}}); + } else { + // We have to send this as two updates to conform to openai behavior + json initial_ret = json{{"choices", json::array({json{ + {"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{ + {"role", "assistant"} + }}}})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"object", "chat.completion.chunk"}}; + + json second_ret = json{ + {"choices", json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json { + {"content", content}}} + }})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"object", "chat.completion.chunk"}}; + + return std::vector({initial_ret, second_ret}); + } + } else { + choices = json::array({json{ + {"finish_reason", nullptr}, + {"index", 0}, + {"delta", + json { + {"content", content}, + }}, + }}); + } + + GGML_ASSERT(choices.size() >= 1); + + if (prob_output.probs.size() > 0) { + choices[0]["logprobs"] = json{ + {"content", completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs)}, + }; + } + + json ret = json { + {"choices", choices}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "chat.completion.chunk"} + }; + + if (timings.prompt_n >= 0) { + ret.push_back({"timings", timings.to_json()}); + } + + return std::vector({ret}); + } }; -struct server_slot -{ +struct server_task_result_embd : server_task_result { + int index = 0; + std::vector> embedding; + + int32_t n_tokens; + + // OAI-compat fields + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + + virtual int get_index() override { + return index; + } + + virtual json to_json() override { + return oaicompat == OAICOMPAT_TYPE_EMBEDDING + ? to_json_oaicompat() + : to_json_non_oaicompat(); + } + + json to_json_non_oaicompat() { + return json { + {"index", index}, + {"embedding", embedding}, + }; + } + + json to_json_oaicompat() { + return json { + {"index", index}, + {"embedding", embedding[0]}, + {"tokens_evaluated", n_tokens}, + }; + } +}; + +struct server_task_result_rerank : server_task_result { + int index = 0; + float score = -1e6; + + int32_t n_tokens; + + virtual int get_index() override { + return index; + } + + virtual json to_json() override { + return json { + {"index", index}, + {"score", score}, + {"tokens_evaluated", n_tokens}, + }; + } +}; + +// this function maybe used outside of server_task_result_error +static json format_error_response(const std::string & message, const enum error_type type) { + std::string type_str; + int code = 500; + switch (type) { + case ERROR_TYPE_INVALID_REQUEST: + type_str = "invalid_request_error"; + code = 400; + break; + case ERROR_TYPE_AUTHENTICATION: + type_str = "authentication_error"; + code = 401; + break; + case ERROR_TYPE_NOT_FOUND: + type_str = "not_found_error"; + code = 404; + break; + case ERROR_TYPE_SERVER: + type_str = "server_error"; + code = 500; + break; + case ERROR_TYPE_PERMISSION: + type_str = "permission_error"; + code = 403; + break; + case ERROR_TYPE_NOT_SUPPORTED: + type_str = "not_supported_error"; + code = 501; + break; + case ERROR_TYPE_UNAVAILABLE: + type_str = "unavailable_error"; + code = 503; + break; + } + return json { + {"code", code}, + {"message", message}, + {"type", type_str}, + }; +} + +struct server_task_result_error : server_task_result { + int index = 0; + error_type err_type = ERROR_TYPE_SERVER; + std::string err_msg; + + virtual bool is_error() override { + return true; + } + + virtual json to_json() override { + return format_error_response(err_msg, err_type); + } +}; + +struct server_task_result_metrics : server_task_result { + int n_idle_slots; + int n_processing_slots; + int n_tasks_deferred; + int64_t t_start; + + int32_t kv_cache_tokens_count; + int32_t kv_cache_used_cells; + + // TODO: somehow reuse server_metrics in the future, instead of duplicating the fields + uint64_t n_prompt_tokens_processed_total = 0; + uint64_t t_prompt_processing_total = 0; + uint64_t n_tokens_predicted_total = 0; + uint64_t t_tokens_generation_total = 0; + + uint64_t n_prompt_tokens_processed = 0; + uint64_t t_prompt_processing = 0; + + uint64_t n_tokens_predicted = 0; + uint64_t t_tokens_generation = 0; + + uint64_t n_decode_total = 0; + uint64_t n_busy_slots_total = 0; + + // while we can also use std::vector this requires copying the slot object which can be quite messy + // therefore, we use json to temporarily store the slot.to_json() result + json slots_data = json::array(); + + virtual json to_json() override { + return json { + { "idle", n_idle_slots }, + { "processing", n_processing_slots }, + { "deferred", n_tasks_deferred }, + { "t_start", t_start }, + + { "n_prompt_tokens_processed_total", n_prompt_tokens_processed_total }, + { "t_tokens_generation_total", t_tokens_generation_total }, + { "n_tokens_predicted_total", n_tokens_predicted_total }, + { "t_prompt_processing_total", t_prompt_processing_total }, + + { "n_prompt_tokens_processed", n_prompt_tokens_processed }, + { "t_prompt_processing", t_prompt_processing }, + { "n_tokens_predicted", n_tokens_predicted }, + { "t_tokens_generation", t_tokens_generation }, + + { "n_decode_total", n_decode_total }, + { "n_busy_slots_total", n_busy_slots_total }, + + { "kv_cache_tokens_count", kv_cache_tokens_count }, + { "kv_cache_used_cells", kv_cache_used_cells }, + + { "slots", slots_data }, + }; + } +}; + +struct server_task_result_slot_save_load : server_task_result { + std::string filename; + bool is_save; // true = save, false = load + + size_t n_tokens; + size_t n_bytes; + double t_ms; + + virtual json to_json() override { + if (is_save) { + return json { + { "id_slot", id_slot }, + { "filename", filename }, + { "n_saved", n_tokens }, + { "n_written", n_bytes }, + { "timings", { + { "save_ms", t_ms } + }}, + }; + } else { + return json { + { "id_slot", id_slot }, + { "filename", filename }, + { "n_restored", n_tokens }, + { "n_read", n_bytes }, + { "timings", { + { "restore_ms", t_ms } + }}, + }; + } + } +}; + +struct server_task_result_slot_erase : server_task_result { + size_t n_erased; + + virtual json to_json() override { + return json { + { "id_slot", id_slot }, + { "n_erased", n_erased }, + }; + } +}; + +struct server_task_result_apply_lora : server_task_result { + virtual json to_json() override { + return json {{ "success", true }}; + } +}; + +struct server_slot { int id; int id_task = -1; - int id_multi = -1; + + // only used for completion/embedding/infill/rerank + server_task_type task_type = SERVER_TASK_TYPE_COMPLETION; + + llama_batch batch_spec = {}; + + llama_context * ctx = nullptr; + llama_context * ctx_dft = nullptr; + + common_speculative * spec = nullptr; + + std::vector lora; + + // the index relative to completion multi-task request + size_t index = 0; struct slot_params params; slot_state state = SLOT_STATE_IDLE; - slot_command command = SLOT_COMMAND_NONE; // used to determine the slot that has been used the longest int64_t t_last_used = -1; // generation props - int32_t n_ctx = 0; // context size per slot - int32_t n_past = 0; - int32_t n_decoded = 0; + int32_t n_ctx = 0; // context size per slot + int32_t n_past = 0; + int32_t n_decoded = 0; int32_t n_remaining = -1; - int32_t i_batch = -1; - int32_t n_predict = -1; // TODO: disambiguate from params.n_predict + int32_t i_batch = -1; + int32_t n_predict = -1; // TODO: disambiguate from params.n_predict - int32_t n_prompt_tokens = 0; + // n_prompt_tokens may not be equal to prompt_tokens.size(), because prompt maybe truncated + int32_t n_prompt_tokens = 0; int32_t n_prompt_tokens_processed = 0; - json prompt; + // input prompt tokens + llama_tokens prompt_tokens; - // when a task is submitted, we first tokenize the prompt and store it here - std::vector prompt_tokens; + size_t last_nl_pos = 0; + + std::string generated_text; + llama_tokens generated_tokens; + + llama_tokens cache_tokens; - std::string generated_text; - std::vector cache_tokens; std::vector generated_token_probs; - bool infill = false; - bool embedding = false; bool has_next_token = true; - bool truncated = false; - bool stopped_eos = false; - bool stopped_word = false; - bool stopped_limit = false; - - bool oaicompat = false; + bool has_new_line = false; + bool truncated = false; + stop_type stop; - std::string oaicompat_model; std::string stopping_word; // sampling - llama_token sampled; - struct llama_sampling_params sparams; - llama_sampling_context *ctx_sampling = nullptr; json json_schema; - int32_t ga_i = 0; // group-attention state - int32_t ga_n = 1; // group-attention factor - int32_t ga_w = 512; // group-attention width + struct common_sampler * smpl = nullptr; + + llama_token sampled; - int32_t n_past_se = 0; // self-extend + common_chat_format chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; // stats - size_t n_sent_text = 0; // number of sent text character - size_t n_sent_token_probs = 0; + size_t n_sent_text = 0; // number of sent text character int64_t t_start_process_prompt; int64_t t_start_generation; @@ -172,115 +1271,113 @@ struct server_slot double t_prompt_processing; // ms double t_token_generation; // ms - void reset() - { - n_prompt_tokens = 0; - generated_text = ""; - truncated = false; - stopped_eos = false; - stopped_word = false; - stopped_limit = false; - stopping_word = ""; - n_past = 0; - n_sent_text = 0; - n_sent_token_probs = 0; - infill = false; - ga_i = 0; - n_past_se = 0; + std::function callback_on_release; + + void reset() { + SLT_DBG(*this, "%s", "\n"); + + n_prompt_tokens = 0; + last_nl_pos = 0; + generated_text = ""; + has_new_line = false; + truncated = false; + stop = STOP_TYPE_NONE; + stopping_word = ""; + n_past = 0; + n_sent_text = 0; + task_type = SERVER_TASK_TYPE_COMPLETION; + generated_tokens.clear(); generated_token_probs.clear(); } - bool has_budget(gpt_params &global_params) - { - if (params.n_predict == -1 && global_params.n_predict == -1) - { + bool is_non_causal() const { + return task_type == SERVER_TASK_TYPE_EMBEDDING || task_type == SERVER_TASK_TYPE_RERANK; + } + + bool can_batch_with(server_slot & other_slot) { + return is_non_causal() == other_slot.is_non_causal() + && are_lora_equal(lora, other_slot.lora); + } + + bool has_budget(const common_params & global_params) { + if (params.n_predict == -1 && global_params.n_predict == -1) { return true; // limitless } n_remaining = -1; - if (params.n_predict != -1) - { + if (params.n_predict != -1) { n_remaining = params.n_predict - n_decoded; - } - else if (global_params.n_predict != -1) - { + } else if (global_params.n_predict != -1) { n_remaining = global_params.n_predict - n_decoded; } return n_remaining > 0; // no budget } - bool available() const - { - return state == SLOT_STATE_IDLE && command == SLOT_COMMAND_NONE; + bool is_processing() const { + return state != SLOT_STATE_IDLE; } - bool is_processing() const - { - return (state == SLOT_STATE_IDLE && command == SLOT_COMMAND_LOAD_PROMPT) || state == SLOT_STATE_PROCESSING; + bool can_speculate() const { + return ctx_dft && params.speculative.n_max > 0 && params.cache_prompt; } - void add_token_string(const completion_token_output &token) - { - if (command == SLOT_COMMAND_RELEASE) - { + void add_token(const completion_token_output & token) { + if (!is_processing()) { + SLT_WRN(*this, "%s", "slot is not processing\n"); return; } generated_token_probs.push_back(token); } - void release() - { - if (state == SLOT_STATE_PROCESSING) - { + void release() { + if (is_processing()) { + SLT_INF(*this, "stop processing: n_past = %d, truncated = %d\n", n_past, truncated); + + t_last_used = ggml_time_us(); t_token_generation = (ggml_time_us() - t_start_generation) / 1e3; - command = SLOT_COMMAND_RELEASE; + state = SLOT_STATE_IDLE; + callback_on_release(id); } } - json get_formated_timings() const - { - return json{ - {"prompt_n", n_prompt_tokens_processed}, - {"prompt_ms", t_prompt_processing}, - {"prompt_per_token_ms", t_prompt_processing / n_prompt_tokens_processed}, - {"prompt_per_second", 1e3 / t_prompt_processing * n_prompt_tokens_processed}, - - {"predicted_n", n_decoded}, - {"predicted_ms", t_token_generation}, - {"predicted_per_token_ms", t_token_generation / n_decoded}, - {"predicted_per_second", 1e3 / t_token_generation * n_decoded}, - }; + result_timings get_timings() const { + result_timings timings; + timings.prompt_n = n_prompt_tokens_processed; + timings.prompt_ms = t_prompt_processing; + timings.prompt_per_token_ms = t_prompt_processing / n_prompt_tokens_processed; + timings.prompt_per_second = 1e3 / t_prompt_processing * n_prompt_tokens_processed; + + timings.predicted_n = n_decoded; + timings.predicted_ms = t_token_generation; + timings.predicted_per_token_ms = t_token_generation / n_decoded; + timings.predicted_per_second = 1e3 / t_token_generation * n_decoded; + + return timings; } - size_t find_stopping_strings(const std::string &text, const size_t last_token_size, const stop_type type) - { + size_t find_stopping_strings(const std::string & text, const size_t last_token_size, bool is_full_stop) { size_t stop_pos = std::string::npos; - for (const std::string &word : params.antiprompt) - { + for (const std::string & word : params.antiprompt) { size_t pos; - if (type == STOP_TYPE_FULL) - { - const size_t tmp = word.size() + last_token_size; + if (is_full_stop) { + const size_t tmp = word.size() + last_token_size; const size_t from_pos = text.size() > tmp ? text.size() - tmp : 0; pos = text.find(word, from_pos); - } - else - { + } else { + // otherwise, partial stop pos = find_partial_stop_string(word, text); } - if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) - { - if (type == STOP_TYPE_FULL) - { - stopped_word = true; - stopping_word = word; + if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) { + if (is_full_stop) { + stop = STOP_TYPE_WORD; + stopping_word = word; has_next_token = false; } stop_pos = pos; @@ -290,181 +1387,191 @@ struct server_slot return stop_pos; } - void print_timings() const - { - char buffer[512]; - - double t_token = t_prompt_processing / n_prompt_tokens_processed; - double n_tokens_second = 1e3 / t_prompt_processing * n_prompt_tokens_processed; - - snprintf(buffer, 512, - "prompt eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)", - t_prompt_processing, n_prompt_tokens_processed, t_token, n_tokens_second); - - LOG_INFO(buffer, { - {"id_slot", id}, - {"id_task", id_task}, - {"t_prompt_processing", t_prompt_processing}, - {"n_prompt_tokens_processed", n_prompt_tokens_processed}, - {"t_token", t_token}, - {"n_tokens_second", n_tokens_second}, - }); - - t_token = t_token_generation / n_decoded; - n_tokens_second = 1e3 / t_token_generation * n_decoded; - - snprintf(buffer, 512, - "generation eval time = %10.2f ms / %5d runs (%8.2f ms per token, %8.2f tokens per second)", - t_token_generation, n_decoded, t_token, n_tokens_second); - - LOG_INFO(buffer, { - {"id_slot", id}, - {"id_task", id_task}, - {"t_token_generation", t_token_generation}, - {"n_decoded", n_decoded}, - {"t_token", t_token}, - {"n_tokens_second", n_tokens_second}, - }); - - snprintf(buffer, 512, " total time = %10.2f ms", t_prompt_processing + t_token_generation); - - LOG_INFO(buffer, { - {"id_slot", id}, - {"id_task", id_task}, - {"t_prompt_processing", t_prompt_processing}, - {"t_token_generation", t_token_generation}, - {"t_total", t_prompt_processing + t_token_generation}, - }); + void print_timings() const { + const double t_prompt = t_prompt_processing / n_prompt_tokens_processed; + const double n_prompt_second = 1e3 / t_prompt_processing * n_prompt_tokens_processed; + + const double t_gen = t_token_generation / n_decoded; + const double n_gen_second = 1e3 / t_token_generation * n_decoded; + + SLT_INF(*this, + "\n" + "prompt eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)\n" + " eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)\n" + " total time = %10.2f ms / %5d tokens\n", + t_prompt_processing, n_prompt_tokens_processed, t_prompt, n_prompt_second, + t_token_generation, n_decoded, t_gen, n_gen_second, + t_prompt_processing + t_token_generation, n_prompt_tokens_processed + n_decoded); + } + + json to_json() const { + return json { + {"id", id}, + {"id_task", id_task}, + {"n_ctx", n_ctx}, + {"speculative", can_speculate()}, + {"is_processing", is_processing()}, + {"non_causal", is_non_causal()}, + {"params", params.to_json()}, + {"prompt", common_detokenize(ctx, prompt_tokens)}, + {"next_token", + { + {"has_next_token", has_next_token}, + {"has_new_line", has_new_line}, + {"n_remain", n_remaining}, + {"n_decoded", n_decoded}, + {"stopping_word", stopping_word}, + } + }, + }; } }; -struct server_metrics -{ + +struct server_metrics { int64_t t_start = 0; uint64_t n_prompt_tokens_processed_total = 0; - uint64_t t_prompt_processing_total = 0; - uint64_t n_tokens_predicted_total = 0; - uint64_t t_tokens_generation_total = 0; + uint64_t t_prompt_processing_total = 0; + uint64_t n_tokens_predicted_total = 0; + uint64_t t_tokens_generation_total = 0; uint64_t n_prompt_tokens_processed = 0; - uint64_t t_prompt_processing = 0; + uint64_t t_prompt_processing = 0; - uint64_t n_tokens_predicted = 0; + uint64_t n_tokens_predicted = 0; uint64_t t_tokens_generation = 0; - void init() - { + uint64_t n_decode_total = 0; + uint64_t n_busy_slots_total = 0; + + void init() { t_start = ggml_time_us(); } - void on_prompt_eval(const server_slot &slot) - { + void on_prompt_eval(const server_slot & slot) { n_prompt_tokens_processed_total += slot.n_prompt_tokens_processed; - n_prompt_tokens_processed += slot.n_prompt_tokens_processed; - t_prompt_processing += slot.t_prompt_processing; - t_prompt_processing_total += slot.t_prompt_processing; + n_prompt_tokens_processed += slot.n_prompt_tokens_processed; + t_prompt_processing += slot.t_prompt_processing; + t_prompt_processing_total += slot.t_prompt_processing; } - void on_prediction(const server_slot &slot) - { - n_tokens_predicted_total += slot.n_decoded; - n_tokens_predicted += slot.n_decoded; - t_tokens_generation += slot.t_token_generation; - t_tokens_generation_total += slot.t_token_generation; + void on_prediction(const server_slot & slot) { + n_tokens_predicted_total += slot.n_decoded; + n_tokens_predicted += slot.n_decoded; + t_tokens_generation += slot.t_token_generation; + t_tokens_generation_total += slot.t_token_generation; } - void reset_bucket() - { + void on_decoded(const std::vector & slots) { + n_decode_total++; + for (const auto & slot : slots) { + if (slot.is_processing()) { + n_busy_slots_total++; + } + } + } + + void reset_bucket() { n_prompt_tokens_processed = 0; - t_prompt_processing = 0; - n_tokens_predicted = 0; - t_tokens_generation = 0; + t_prompt_processing = 0; + n_tokens_predicted = 0; + t_tokens_generation = 0; } }; -struct server_queue -{ +struct server_queue { int id = 0; bool running; // queues - std::vector queue_tasks; - std::vector queue_tasks_deferred; - - std::vector queue_multitasks; + std::deque queue_tasks; + std::deque queue_tasks_deferred; std::mutex mutex_tasks; std::condition_variable condition_tasks; // callback functions - std::function callback_new_task; - std::function callback_finish_multitask; - std::function callback_update_slots; + std::function callback_new_task; + std::function callback_update_slots; // Add a new task to the end of the queue - int post(server_task task) - { + int post(server_task task, bool front = false) { std::unique_lock lock(mutex_tasks); - if (task.id == -1) - { - task.id = id++; - LOG_VERBOSE("new task id", {{"new_id", task.id}}); + GGML_ASSERT(task.id != -1); + // if this is cancel task make sure to clean up pending tasks + if (task.type == SERVER_TASK_TYPE_CANCEL) { + cleanup_pending_task(task.id_target); + } + QUE_DBG("new task, id = %d, front = %d\n", task.id, front); + if (front) { + queue_tasks.push_front(std::move(task)); + } else { + queue_tasks.push_back(std::move(task)); } - queue_tasks.push_back(std::move(task)); condition_tasks.notify_one(); return task.id; } + // multi-task version of post() + int post(std::vector & tasks, bool front = false) { + std::unique_lock lock(mutex_tasks); + for (auto & task : tasks) { + if (task.id == -1) { + task.id = id++; + } + // if this is cancel task make sure to clean up pending tasks + if (task.type == SERVER_TASK_TYPE_CANCEL) { + cleanup_pending_task(task.id_target); + } + QUE_DBG("new task, id = %d/%d, front = %d\n", task.id, (int) tasks.size(), front); + if (front) { + queue_tasks.push_front(std::move(task)); + } else { + queue_tasks.push_back(std::move(task)); + } + } + condition_tasks.notify_one(); + return 0; + } + // Add a new task, but defer until one slot is available - void defer(server_task task) - { + void defer(server_task task) { std::unique_lock lock(mutex_tasks); + QUE_DBG("defer task, id = %d\n", task.id); queue_tasks_deferred.push_back(std::move(task)); + condition_tasks.notify_one(); } - // Get the next id for creating anew task - int get_new_id() - { + // Get the next id for creating a new task + int get_new_id() { std::unique_lock lock(mutex_tasks); int new_id = id++; - LOG_VERBOSE("new task id", {{"new_id", new_id}}); return new_id; } // Register function to process a new task - void on_new_task(std::function callback) - { + void on_new_task(std::function callback) { callback_new_task = std::move(callback); } - // Register function to process a multitask when it is finished - void on_finish_multitask(std::function callback) - { - callback_finish_multitask = std::move(callback); - } - // Register the function to be called when all slots data is ready to be processed - void on_update_slots(std::function callback) - { + void on_update_slots(std::function callback) { callback_update_slots = std::move(callback); } - // Call when the state of one slot is changed - void notify_slot_changed() - { - // move deferred tasks back to main loop + // Call when the state of one slot is changed, it will move one task from deferred to main queue + void pop_deferred_task() { std::unique_lock lock(mutex_tasks); - for (auto &task : queue_tasks_deferred) - { - queue_tasks.push_back(std::move(task)); + if (!queue_tasks_deferred.empty()) { + queue_tasks.emplace_back(std::move(queue_tasks_deferred.front())); + queue_tasks_deferred.pop_front(); } - queue_tasks_deferred.clear(); + condition_tasks.notify_one(); } // end the start_loop routine - void terminate() - { + void terminate() { std::unique_lock lock(mutex_tasks); running = false; condition_tasks.notify_all(); @@ -477,146 +1584,127 @@ struct server_queue * - Check if multitask is finished * - Update all slots */ - void start_loop() - { + void start_loop() { running = true; - while (true) - { - LOG_VERBOSE("new task may arrive", {}); + while (true) { + QUE_DBG("%s", "processing new tasks\n"); - while (true) - { + while (true) { std::unique_lock lock(mutex_tasks); - if (queue_tasks.empty()) - { + if (!running) { + QUE_DBG("%s", "terminate\n"); + return; + } + if (queue_tasks.empty()) { lock.unlock(); break; } server_task task = queue_tasks.front(); - queue_tasks.erase(queue_tasks.begin()); + queue_tasks.pop_front(); lock.unlock(); - LOG_VERBOSE("callback_new_task", {{"id_task", task.id}}); - callback_new_task(task); - } - - LOG_VERBOSE("update_multitasks", {}); - // check if we have any finished multitasks - auto queue_iterator = queue_multitasks.begin(); - while (queue_iterator != queue_multitasks.end()) - { - if (queue_iterator->subtasks_remaining.empty()) - { - // all subtasks done == multitask is done - server_task_multi current_multitask = *queue_iterator; - callback_finish_multitask(current_multitask); - // remove this multitask - queue_iterator = queue_multitasks.erase(queue_iterator); - } - else - { - ++queue_iterator; - } + QUE_DBG("processing task, id = %d\n", task.id); + callback_new_task(std::move(task)); } // all tasks in the current loop is processed, slots data is now ready - LOG_VERBOSE("callback_update_slots", {}); + QUE_DBG("%s", "update slots\n"); callback_update_slots(); - LOG_VERBOSE("wait for new task", {}); + QUE_DBG("%s", "waiting for new tasks\n"); { std::unique_lock lock(mutex_tasks); - if (queue_tasks.empty()) - { - if (!running) - { - LOG_VERBOSE("ending start_loop", {}); - return; - } - condition_tasks.wait(lock, [&] { return (!queue_tasks.empty() || !running); }); + if (!running) { + QUE_DBG("%s", "terminate\n"); + return; + } + if (queue_tasks.empty()) { + condition_tasks.wait(lock, [&]{ + return (!queue_tasks.empty() || !running); + }); } } } } - // - // functions to manage multitasks - // - - // add a multitask by specifying the id of all subtask (subtask is a server_task) - void add_multitask(int id_multi, std::vector &sub_ids) - { - std::lock_guard lock(mutex_tasks); - server_task_multi multi; - multi.id = id_multi; - std::copy(sub_ids.begin(), sub_ids.end(), - std::inserter(multi.subtasks_remaining, multi.subtasks_remaining.end())); - queue_multitasks.push_back(multi); - } - - // updatethe remaining subtasks, while appending results to multitask - void update_multitask(int id_multi, int id_sub, server_task_result &result) - { - std::lock_guard lock(mutex_tasks); - for (auto &multitask : queue_multitasks) - { - if (multitask.id == id_multi) - { - multitask.subtasks_remaining.erase(id_sub); - multitask.results.push_back(result); - } - } +private: + void cleanup_pending_task(int id_target) { + // no need lock because this is called exclusively by post() + auto rm_func = [id_target](const server_task & task) { + return task.id_target == id_target; + }; + queue_tasks.erase( + std::remove_if(queue_tasks.begin(), queue_tasks.end(), rm_func), + queue_tasks.end()); + queue_tasks_deferred.erase( + std::remove_if(queue_tasks_deferred.begin(), queue_tasks_deferred.end(), rm_func), + queue_tasks_deferred.end()); } }; -struct server_response -{ - typedef std::function callback_multitask_t; - callback_multitask_t callback_update_multitask; - +struct server_response { // for keeping track of all tasks waiting for the result - std::set waiting_task_ids; + std::unordered_set waiting_task_ids; - // the main result queue - std::vector queue_results; + // the main result queue (using ptr for polymorphism) + std::vector queue_results; std::mutex mutex_results; std::condition_variable condition_results; // add the id_task to the list of tasks waiting for response - void add_waiting_task_id(int id_task) - { - LOG_VERBOSE("waiting for task id", {{"id_task", id_task}}); + void add_waiting_task_id(int id_task) { + SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", id_task, (int) waiting_task_ids.size()); std::unique_lock lock(mutex_results); waiting_task_ids.insert(id_task); } + void add_waiting_tasks(const std::vector & tasks) { + std::unique_lock lock(mutex_results); + + for (const auto & task : tasks) { + SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", task.id, (int) waiting_task_ids.size()); + waiting_task_ids.insert(task.id); + } + } + // when the request is finished, we can remove task associated with it - void remove_waiting_task_id(int id_task) - { - LOG_VERBOSE("remove waiting for task id", {{"id_task", id_task}}); + void remove_waiting_task_id(int id_task) { + SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, (int) waiting_task_ids.size()); std::unique_lock lock(mutex_results); waiting_task_ids.erase(id_task); + // make sure to clean up all pending results + queue_results.erase( + std::remove_if(queue_results.begin(), queue_results.end(), [id_task](const server_task_result_ptr & res) { + return res->id == id_task; + }), + queue_results.end()); } - // This function blocks the thread until there is a response for this id_task - server_task_result recv(int id_task) - { - while (true) - { + void remove_waiting_task_ids(const std::unordered_set & id_tasks) { + std::unique_lock lock(mutex_results); + + for (const auto & id_task : id_tasks) { + SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, (int) waiting_task_ids.size()); + waiting_task_ids.erase(id_task); + } + } + + // This function blocks the thread until there is a response for one of the id_tasks + server_task_result_ptr recv(const std::unordered_set & id_tasks) { + while (true) { std::unique_lock lock(mutex_results); - condition_results.wait(lock, [&] { return !queue_results.empty(); }); + condition_results.wait(lock, [&]{ + return !queue_results.empty(); + }); - for (int i = 0; i < (int)queue_results.size(); i++) - { - if (queue_results[i].id == id_task) - { - assert(queue_results[i].id_multi == -1); - server_task_result res = queue_results[i]; + for (size_t i = 0; i < queue_results.size(); i++) { + if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) { + server_task_result_ptr res = std::move(queue_results[i]); queue_results.erase(queue_results.begin() + i); return res; } @@ -626,33 +1714,45 @@ struct server_response // should never reach here } - // Register the function to update multitask - void on_multitask_update(callback_multitask_t callback) - { - callback_update_multitask = std::move(callback); + // same as recv(), but have timeout in seconds + // if timeout is reached, nullptr is returned + server_task_result_ptr recv_with_timeout(const std::unordered_set & id_tasks, int timeout) { + while (true) { + std::unique_lock lock(mutex_results); + + for (int i = 0; i < (int) queue_results.size(); i++) { + if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) { + server_task_result_ptr res = std::move(queue_results[i]); + queue_results.erase(queue_results.begin() + i); + return res; + } + } + + std::cv_status cr_res = condition_results.wait_for(lock, std::chrono::seconds(timeout)); + if (cr_res == std::cv_status::timeout) { + return nullptr; + } + } + + // should never reach here + } + + // single-task version of recv() + server_task_result_ptr recv(int id_task) { + std::unordered_set id_tasks = {id_task}; + return recv(id_tasks); } // Send a new result to a waiting id_task - void send(server_task_result result) - { - LOG_VERBOSE("send new result", {{"id_task", result.id}}); + void send(server_task_result_ptr && result) { + SRV_DBG("sending result for task id = %d\n", result->id); std::unique_lock lock(mutex_results); - for (const auto &id_task : waiting_task_ids) - { - // LOG_TEE("waiting task id %i \n", id_task); - // for now, tasks that have associated parent multitasks just get erased once multitask picks up the result - if (result.id_multi == id_task) - { - LOG_VERBOSE("callback_update_multitask", {{"id_task", id_task}}); - callback_update_multitask(id_task, result.id, result); - continue; - } + for (const auto & id_task : waiting_task_ids) { + if (result->id == id_task) { + SRV_DBG("task id = %d pushed to result queue\n", result->id); - if (result.id == id_task) - { - LOG_VERBOSE("queue_results.push_back", {{"id_task", id_task}}); - queue_results.push_back(result); + queue_results.emplace_back(std::move(result)); condition_results.notify_all(); return; } @@ -660,31 +1760,35 @@ struct server_response } }; -struct server_context -{ - llama_model *model = nullptr; - llama_context *ctx = nullptr; +struct server_context { + common_params params_base; - gpt_params params; + // note: keep these alive - they determine the lifetime of the model, context, etc. + common_init_result llama_init; + common_init_result llama_init_dft; - llama_batch batch; + llama_model * model = nullptr; + llama_context * ctx = nullptr; - bool clean_kv_cache = true; - bool add_bos_token = true; + const llama_vocab * vocab = nullptr; - int32_t n_ctx; // total context for all clients / slots + llama_model * model_dft = nullptr; + + llama_context_params cparams_dft; + + llama_batch batch = {}; - // system prompt - bool system_need_update = false; + bool clean_kv_cache = true; + bool add_bos_token = true; + bool has_eos_token = false; - std::string system_prompt; - std::vector system_tokens; + int32_t n_ctx; // total context for all clients / slots // slots / clients std::vector slots; json default_generation_settings_for_props; - server_queue queue_tasks; + server_queue queue_tasks; server_response queue_results; server_metrics metrics; @@ -692,1392 +1796,1006 @@ struct server_context // Necessary similarity of prompt for slot selection float slot_prompt_similarity = 0.0f; - ~server_context() - { - if (ctx) - { - llama_free(ctx); - ctx = nullptr; - } - - if (model) - { - llama_free_model(model); - model = nullptr; - } + common_chat_templates chat_templates; + ~server_context() { // Clear any sampling context - for (server_slot &slot : slots) - { - if (slot.ctx_sampling != nullptr) - { - llama_sampling_free(slot.ctx_sampling); - } - } + for (server_slot & slot : slots) { + common_sampler_free(slot.smpl); + slot.smpl = nullptr; - llama_batch_free(batch); - } - - bool load_model(const gpt_params ¶ms_) - { - params = params_; + llama_free(slot.ctx_dft); + slot.ctx_dft = nullptr; - // dedicate one sequence to the system prompt - params.n_parallel += 1; + common_speculative_free(slot.spec); + slot.spec = nullptr; - llama_init_result llama_init = llama_init_from_gpt_params(params); - - model = llama_init.model; - ctx = llama_init.context; - params.n_parallel -= 1; // but be sneaky about it - if (model == nullptr) - { - LOG_ERROR("unable to load model", {{"model", params.model}}); - return false; + llama_batch_free(slot.batch_spec); } - n_ctx = llama_n_ctx(ctx); - - add_bos_token = llama_should_add_bos_token(model); - GGML_ASSERT(llama_add_eos_token(model) != 1); - - return true; - } - - bool validate_model_chat_template() const - { - llama_chat_message chat[] = {{"user", "test"}}; - - const int res = llama_chat_apply_template(model, nullptr, chat, 1, true, nullptr, 0); - - return res > 0; + llama_batch_free(batch); } - void init() - { - const int32_t n_ctx_slot = n_ctx / params.n_parallel; - - LOG_INFO("initializing slots", {{"n_slots", params.n_parallel}}); - - for (int i = 0; i < params.n_parallel; i++) - { - server_slot slot; - - slot.id = i; - slot.n_ctx = n_ctx_slot; - slot.n_predict = params.n_predict; - - LOG_INFO("new slot", {{"id_slot", slot.id}, {"n_ctx_slot", slot.n_ctx}}); - - const int ga_n = params.grp_attn_n; - const int ga_w = params.grp_attn_w; - - if (ga_n != 1) - { - GGML_ASSERT(ga_n > 0 && "ga_n must be positive"); // NOLINT - GGML_ASSERT(ga_w % ga_n == 0 && "ga_w must be a multiple of ga_n"); // NOLINT - // GGML_ASSERT(n_ctx_train % ga_w == 0 && "n_ctx_train must be a multiple of ga_w"); // NOLINT - // GGML_ASSERT(n_ctx >= n_ctx_train * ga_n && "n_ctx must be at least n_ctx_train * ga_n"); // NOLINT - - LOG_INFO("slot self-extend", {{"id_slot", slot.id}, {"ga_n", ga_n}, {"ga_w", ga_w}}); - } + bool load_model(const common_params & params) { + SRV_INF("loading model '%s'\n", params.model.c_str()); - slot.ga_i = 0; - slot.ga_n = ga_n; - slot.ga_w = ga_w; + params_base = params; - slot.sparams = params.sparams; + llama_init = common_init_from_params(params_base); - slot.reset(); + model = llama_init.model.get(); + ctx = llama_init.context.get(); - slots.push_back(slot); + if (model == nullptr) { + SRV_ERR("failed to load model, '%s'\n", params_base.model.c_str()); + return false; } - default_generation_settings_for_props = get_formated_generation(slots.front()); - default_generation_settings_for_props["seed"] = -1; - - // the update_slots() logic will always submit a maximum of n_batch tokens - // note that n_batch can be > n_ctx (e.g. for non-causal attention models such as BERT where the KV cache is not - // used) - { - const int32_t n_batch = llama_n_batch(ctx); + vocab = llama_model_get_vocab(model); - // only a single seq_id per token is needed - batch = llama_batch_init(n_batch, 0, 1); - } + n_ctx = llama_n_ctx(ctx); - metrics.init(); - } + add_bos_token = llama_vocab_get_add_bos(vocab); + has_eos_token = llama_vocab_eos(vocab) != LLAMA_TOKEN_NULL; - std::vector tokenize(const json &json_prompt, bool add_special) const - { - // TODO: currently, we tokenize using special tokens by default - // this is not always correct (see - // https://github.com/ggerganov/llama.cpp/pull/4160#issuecomment-1824826216) but it's better compared to - // completely ignoring ChatML and other chat templates - const bool TMP_FORCE_SPECIAL = true; + if (!params_base.speculative.model.empty() || !params_base.speculative.hf_repo.empty()) { + SRV_INF("loading draft model '%s'\n", params_base.speculative.model.c_str()); - // If `add_bos` is true, we only add BOS, when json_prompt is a string, - // or the first element of the json_prompt array is a string. - std::vector prompt_tokens; + auto params_dft = params_base; - if (json_prompt.is_array()) - { - bool first = true; - for (const auto &p : json_prompt) - { - if (p.is_string()) - { - auto s = p.template get(); + params_dft.devices = params_base.speculative.devices; + params_dft.hf_file = params_base.speculative.hf_file; + params_dft.hf_repo = params_base.speculative.hf_repo; + params_dft.model = params_base.speculative.model; + params_dft.model_url = params_base.speculative.model_url; + params_dft.n_ctx = params_base.speculative.n_ctx == 0 ? params_base.n_ctx / params_base.n_parallel : params_base.speculative.n_ctx; + params_dft.n_gpu_layers = params_base.speculative.n_gpu_layers; + params_dft.n_parallel = 1; - std::vector p; - if (first) - { - p = ::llama_tokenize(ctx, s, add_special, TMP_FORCE_SPECIAL); - first = false; - } - else - { - p = ::llama_tokenize(ctx, s, false, TMP_FORCE_SPECIAL); - } + llama_init_dft = common_init_from_params(params_dft); - prompt_tokens.insert(prompt_tokens.end(), p.begin(), p.end()); - } - else - { - if (first) - { - first = false; - } + model_dft = llama_init_dft.model.get(); - prompt_tokens.push_back(p.template get()); - } + if (model_dft == nullptr) { + SRV_ERR("failed to load draft model, '%s'\n", params_base.speculative.model.c_str()); + return false; } - } - else - { - auto s = json_prompt.template get(); - prompt_tokens = ::llama_tokenize(ctx, s, add_special, TMP_FORCE_SPECIAL); - } - return prompt_tokens; - } + if (!common_speculative_are_compatible(ctx, llama_init_dft.context.get())) { + SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", params_base.speculative.model.c_str(), params_base.model.c_str()); - server_slot *get_slot_by_id(int id) - { - for (server_slot &slot : slots) - { - if (slot.id == id) - { - return &slot; + return false; } - } - - return nullptr; - } - - server_slot *get_available_slot(const std::string &prompt) - { - server_slot *ret = nullptr; - - // find the slot that has at least n% prompt similarity - if (ret == nullptr && slot_prompt_similarity != 0.0f && !prompt.empty()) - { - int max_lcp_len = 0; - float similarity = 0; - - for (server_slot &slot : slots) - { - // skip the slot if it is not available - if (!slot.available()) - { - continue; - } - // skip the slot if it does not contains prompt - if (!slot.prompt.is_string()) - { - continue; - } - - // current slot's prompt - std::string slot_prompt = slot.prompt.get(); + const int n_ctx_dft = llama_n_ctx(llama_init_dft.context.get()); - // length of the current slot's prompt - int slot_prompt_len = slot_prompt.size(); + cparams_dft = common_context_params_to_llama(params_dft); + cparams_dft.n_batch = n_ctx_dft; - // length of the Longest Common Prefix between the current slot's prompt and the input prompt - int lcp_len = common_part(slot_prompt, prompt); - - // fraction of the common substring length compared to the current slot's prompt length - similarity = static_cast(lcp_len) / slot_prompt_len; - - // select the current slot if the criteria match - if (lcp_len > max_lcp_len && similarity > slot_prompt_similarity) - { - max_lcp_len = lcp_len; - ret = &slot; - } - } + // force F16 KV cache for the draft model for extra performance + cparams_dft.type_k = GGML_TYPE_F16; + cparams_dft.type_v = GGML_TYPE_F16; - if (ret != nullptr) - { - LOG_VERBOSE("selected slot by lcp similarity", { - {"id_slot", ret->id}, - {"max_lcp_len", max_lcp_len}, - {"similarity", similarity}, - }); - } + // the context is not needed - we will create one for each slot + llama_init_dft.context.reset(); } - // find the slot that has been least recently used - if (ret == nullptr) - { - int64_t t_last = ggml_time_us(); - for (server_slot &slot : slots) - { - // skip the slot if it is not available - if (!slot.available()) - { - continue; - } - - // select the current slot if the criteria match - if (slot.t_last_used < t_last) - { - t_last = slot.t_last_used; - ret = &slot; - } - } - - if (ret != nullptr) - { - LOG_VERBOSE("selected slot by lru", { - {"id_slot", ret->id}, - {"t_last", t_last}, - }); - } + if (params_base.chat_template.empty() && !validate_builtin_chat_template(params.use_jinja)) { + SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); + chat_templates = common_chat_templates_from_model(model, "chatml"); + } else { + chat_templates = common_chat_templates_from_model(model, params_base.chat_template); } + GGML_ASSERT(chat_templates.template_default.get() != nullptr); - return ret; + return true; } - bool launch_slot_with_task(server_slot &slot, const server_task &task) - { - slot_params default_params; - // Sampling parameter defaults are loaded from the global server context (but individual requests can still - // override them) - llama_sampling_params default_sparams = params.sparams; - auto &data = task.data; - - slot.oaicompat = false; - slot.oaicompat_model = ""; - - slot.params.stream = json_value(data, "stream", false); - slot.params.cache_prompt = json_value(data, "cache_prompt", false); - slot.params.n_predict = json_value(data, "n_predict", json_value(data, "max_tokens", default_params.n_predict)); - slot.sparams.top_k = json_value(data, "top_k", default_sparams.top_k); - slot.sparams.top_p = json_value(data, "top_p", default_sparams.top_p); - slot.sparams.min_p = json_value(data, "min_p", default_sparams.min_p); - slot.sparams.tfs_z = json_value(data, "tfs_z", default_sparams.tfs_z); - slot.sparams.typical_p = json_value(data, "typical_p", default_sparams.typical_p); - slot.sparams.temp = json_value(data, "temperature", default_sparams.temp); - slot.sparams.dynatemp_range = json_value(data, "dynatemp_range", default_sparams.dynatemp_range); - slot.sparams.dynatemp_exponent = json_value(data, "dynatemp_exponent", default_sparams.dynatemp_exponent); - slot.sparams.penalty_last_n = json_value(data, "repeat_last_n", default_sparams.penalty_last_n); - slot.sparams.penalty_repeat = json_value(data, "repeat_penalty", default_sparams.penalty_repeat); - slot.sparams.penalty_freq = json_value(data, "frequency_penalty", default_sparams.penalty_freq); - slot.sparams.penalty_present = json_value(data, "presence_penalty", default_sparams.penalty_present); - slot.sparams.mirostat = json_value(data, "mirostat", default_sparams.mirostat); - slot.sparams.mirostat_tau = json_value(data, "mirostat_tau", default_sparams.mirostat_tau); - slot.sparams.mirostat_eta = json_value(data, "mirostat_eta", default_sparams.mirostat_eta); - slot.sparams.penalize_nl = json_value(data, "penalize_nl", default_sparams.penalize_nl); - slot.params.n_keep = json_value(data, "n_keep", slot.params.n_keep); - slot.params.n_discard = json_value(data, "n_discard", default_params.n_discard); - slot.sparams.seed = json_value(data, "seed", default_sparams.seed); - slot.sparams.n_probs = json_value(data, "n_probs", default_sparams.n_probs); - slot.sparams.min_keep = json_value(data, "min_keep", default_sparams.min_keep); - slot.sparams.grammar = json_value(data, "grammar", default_sparams.grammar); - - if (slot.params.cache_prompt && slot.ga_n != 1) - { - LOG_WARNING("cache_prompt is not supported with group-attention", {}); - slot.params.cache_prompt = false; - } - - if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) - { - // Might be better to reject the request with a 400 ? - LOG_WARNING("Max tokens to predict exceeds server configuration", - { - {"params.n_predict", slot.params.n_predict}, - {"slot.n_predict", slot.n_predict}, - }); - slot.params.n_predict = slot.n_predict; - } - - // infill - slot.params.input_prefix = json_value(data, "input_prefix", default_params.input_prefix); - slot.params.input_suffix = json_value(data, "input_suffix", default_params.input_suffix); - - // get prompt - if (!task.infill) - { - const auto &prompt = data.find("prompt"); - if (prompt == data.end()) - { - send_error(task, "\"prompt\" must be provided", ERROR_TYPE_INVALID_REQUEST); - return false; - } - - if ((prompt->is_string()) || (prompt->is_array() && prompt->size() == 1 && prompt->at(0).is_string()) || - (prompt->is_array() && !prompt->empty() && prompt->at(0).is_number_integer())) - { - slot.prompt = *prompt; - } - else - { - send_error(task, "\"prompt\" must be a string or an array of integers", ERROR_TYPE_INVALID_REQUEST); - return false; - } - } - - // penalize user-provided tokens - { - slot.sparams.penalty_prompt_tokens.clear(); - slot.sparams.use_penalty_prompt_tokens = false; - - const auto &penalty_prompt = data.find("penalty_prompt"); - - if (penalty_prompt != data.end()) - { - if (penalty_prompt->is_string()) - { - const auto penalty_prompt_string = penalty_prompt->get(); - slot.sparams.penalty_prompt_tokens = llama_tokenize(model, penalty_prompt_string, false); - - if (slot.params.n_predict > 0) - { - slot.sparams.penalty_prompt_tokens.reserve(slot.sparams.penalty_prompt_tokens.size() + - slot.params.n_predict); - } - slot.sparams.use_penalty_prompt_tokens = true; - - LOG_VERBOSE("penalty_prompt_tokens", { - {"id_slot", slot.id}, - {"tokens", slot.sparams.penalty_prompt_tokens}, - }); - } - else if (penalty_prompt->is_array()) - { - const auto n_tokens = penalty_prompt->size(); - slot.sparams.penalty_prompt_tokens.reserve(n_tokens + std::max(0, slot.params.n_predict)); - - const int n_vocab = llama_n_vocab(model); - for (const auto &penalty_token : *penalty_prompt) - { - if (penalty_token.is_number_integer()) - { - const auto tok = penalty_token.get(); - if (tok >= 0 && tok < n_vocab) - { - slot.sparams.penalty_prompt_tokens.push_back(tok); - } - } - } - slot.sparams.use_penalty_prompt_tokens = true; + bool validate_builtin_chat_template(bool use_jinja) const { + llama_chat_message chat[] = {{"user", "test"}}; - LOG_VERBOSE("penalty_prompt_tokens", { - {"id_slot", slot.id}, - {"tokens", slot.sparams.penalty_prompt_tokens}, - }); + if (use_jinja) { + auto templates = common_chat_templates_from_model(model, ""); + common_chat_inputs inputs; + inputs.messages = json::array({{ + {"role", "user"}, + {"content", "test"}, + }}); + GGML_ASSERT(templates.template_default); + try { + common_chat_params_init(*templates.template_default, inputs); + if (templates.template_tool_use) { + common_chat_params_init(*templates.template_tool_use, inputs); } + return true; + } catch (const std::exception & e) { + SRV_ERR("failed to apply template: %s\n", e.what()); + return false; } + } else { + const char * tmpl = llama_model_chat_template(model, /* name */ nullptr); + const int32_t chat_res = llama_chat_apply_template(tmpl, chat, 1, true, nullptr, 0); + return chat_res > 0; } + } - { - slot.sparams.logit_bias.clear(); + void init() { + const int32_t n_ctx_slot = n_ctx / params_base.n_parallel; - if (json_value(data, "ignore_eos", false)) - { - slot.sparams.logit_bias[llama_token_eos(model)] = -INFINITY; - } + SRV_INF("initializing slots, n_slots = %d\n", params_base.n_parallel); - const auto &logit_bias = data.find("logit_bias"); - if (logit_bias != data.end() && logit_bias->is_array()) - { - const int n_vocab = llama_n_vocab(model); - for (const auto &el : *logit_bias) - { - // TODO: we may want to throw errors here, in case "el" is incorrect - if (el.is_array() && el.size() == 2) - { - float bias; - if (el[1].is_number()) - { - bias = el[1].get(); - } - else if (el[1].is_boolean() && !el[1].get()) - { - bias = -INFINITY; - } - else - { - continue; - } + for (int i = 0; i < params_base.n_parallel; i++) { + server_slot slot; - if (el[0].is_number_integer()) - { - llama_token tok = el[0].get(); - if (tok >= 0 && tok < n_vocab) - { - slot.sparams.logit_bias[tok] = bias; - } - } - else if (el[0].is_string()) - { - auto toks = llama_tokenize(model, el[0].get(), false); - for (auto tok : toks) - { - slot.sparams.logit_bias[tok] = bias; - } - } - } - } - } - } + slot.id = i; + slot.ctx = ctx; + slot.n_ctx = n_ctx_slot; + slot.n_predict = params_base.n_predict; - { - slot.params.antiprompt.clear(); + if (model_dft) { + slot.batch_spec = llama_batch_init(params_base.speculative.n_max + 1, 0, 1); - const auto &stop = data.find("stop"); - if (stop != data.end() && stop->is_array()) - { - for (const auto &word : *stop) - { - if (!word.empty()) - { - slot.params.antiprompt.push_back(word); - } + slot.ctx_dft = llama_init_from_model(model_dft, cparams_dft); + if (slot.ctx_dft == nullptr) { + SRV_ERR("%s", "failed to create draft context\n"); + return; } - } - } - { - const auto &samplers_sequence = data.find("samplers"); - if (samplers_sequence != data.end() && samplers_sequence->is_array()) - { - std::vector sampler_names; - for (const auto &sampler_name : *samplers_sequence) - { - if (sampler_name.is_string()) - { - sampler_names.emplace_back(sampler_name); - } + slot.spec = common_speculative_init(slot.ctx_dft); + if (slot.spec == nullptr) { + SRV_ERR("%s", "failed to create speculator\n"); + return; } - slot.sparams.samplers_sequence = llama_sampling_types_from_names(sampler_names, false); - } - else - { - slot.sparams.samplers_sequence = default_sparams.samplers_sequence; } + + SLT_INF(slot, "new slot n_ctx_slot = %d\n", slot.n_ctx); + + slot.params.sampling = params_base.sampling; + + slot.callback_on_release = [this](int) { + queue_tasks.pop_deferred_task(); + }; + + slot.reset(); + + slots.push_back(slot); } + default_generation_settings_for_props = slots[0].to_json(); + + // the update_slots() logic will always submit a maximum of n_batch or n_parallel tokens + // note that n_batch can be > n_ctx (e.g. for non-causal attention models such as BERT where the KV cache is not used) { - if (slot.ctx_sampling != nullptr) - { - llama_sampling_free(slot.ctx_sampling); - } - slot.ctx_sampling = llama_sampling_init(slot.sparams); - if (slot.ctx_sampling == nullptr) - { - // for now, the only error that may happen here is invalid grammar - send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); - return false; - } + const int32_t n_batch = llama_n_batch(ctx); + + // only a single seq_id per token is needed + batch = llama_batch_init(std::max(n_batch, params_base.n_parallel), 0, 1); } - slot.command = SLOT_COMMAND_LOAD_PROMPT; - slot.prompt_tokens.clear(); + metrics.init(); + } - LOG_INFO("slot is processing task", { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - }); + server_slot * get_slot_by_id(int id) { + for (server_slot & slot : slots) { + if (slot.id == id) { + return &slot; + } + } - return true; + return nullptr; } - void kv_cache_clear() - { - LOG_VERBOSE("clearing KV cache", {}); + server_slot * get_available_slot(const server_task & task) { + server_slot * ret = nullptr; - // clear the entire KV cache - llama_kv_cache_clear(ctx); - clean_kv_cache = false; - } + // find the slot that has at least n% prompt similarity + if (ret == nullptr && slot_prompt_similarity != 0.0f) { + int lcs_len = 0; + float similarity = 0; - void system_prompt_update() - { - LOG_VERBOSE("system prompt update", { - {"system_prompt", system_prompt}, - }); + for (server_slot & slot : slots) { + // skip the slot if it is not available + if (slot.is_processing()) { + continue; + } - kv_cache_clear(); - system_tokens.clear(); + // skip the slot if it does not contains cached tokens + if (slot.cache_tokens.empty()) { + continue; + } - if (!system_prompt.empty()) - { - system_tokens = ::llama_tokenize(ctx, system_prompt, true); + // length of the Longest Common Subsequence between the current slot's prompt and the input prompt + int cur_lcs_len = common_lcs(slot.cache_tokens, task.prompt_tokens); - llama_batch_clear(batch); + // fraction of the common subsequence length compared to the current slot's prompt length + float cur_similarity = static_cast(cur_lcs_len) / static_cast(slot.cache_tokens.size()); - for (int i = 0; i < (int)system_tokens.size(); ++i) - { - llama_batch_add(batch, system_tokens[i], i, {0}, false); + // select the current slot if the criteria match + if (cur_lcs_len > lcs_len && cur_similarity > slot_prompt_similarity) { + lcs_len = cur_lcs_len; + similarity = cur_similarity; + ret = &slot; + } } - const int32_t n_batch = llama_n_batch(ctx); + if (ret != nullptr) { + SLT_DBG(*ret, "selected slot by lcs similarity, lcs_len = %d, similarity = %f\n", lcs_len, similarity); + } + } - for (int32_t i = 0; i < batch.n_tokens; i += n_batch) - { - const int32_t n_tokens = std::min(params.n_batch, batch.n_tokens - i); - llama_batch batch_view = { - n_tokens, - batch.token + i, - nullptr, - batch.pos + i, - batch.n_seq_id + i, - batch.seq_id + i, - batch.logits + i, - 0, - 0, - 0, // unused - }; - - if (llama_decode(ctx, batch_view) != 0) - { - LOG_ERROR("llama_decode() failed", {}); - return; + // find the slot that has been least recently used + if (ret == nullptr) { + int64_t t_last = ggml_time_us(); + for (server_slot & slot : slots) { + // skip the slot if it is not available + if (slot.is_processing()) { + continue; + } + + // select the current slot if the criteria match + if (slot.t_last_used < t_last) { + t_last = slot.t_last_used; + ret = &slot; } } - // assign the system KV cache to all parallel sequences - for (int32_t i = 1; i <= params.n_parallel; ++i) - { - llama_kv_cache_seq_cp(ctx, 0, i, -1, -1); + if (ret != nullptr) { + SLT_DBG(*ret, "selected slot by lru, t_last = %" PRId64 "\n", t_last); } } - system_need_update = false; + return ret; } - bool system_prompt_set(const std::string &sys_prompt) - { - system_prompt = sys_prompt; + bool launch_slot_with_task(server_slot & slot, const server_task & task) { + slot.reset(); + slot.id_task = task.id; + slot.index = task.index; + slot.task_type = task.type; + slot.params = std::move(task.params); + slot.prompt_tokens = std::move(task.prompt_tokens); + + if (!are_lora_equal(task.params.lora, slot.lora)) { + // if lora is changed, we cannot reuse cached tokens + slot.cache_tokens.clear(); + slot.lora = task.params.lora; + } - LOG_VERBOSE("system prompt process", { - {"system_prompt", system_prompt}, - }); + SLT_DBG(slot, "launching slot : %s\n", safe_json_to_str(slot.to_json()).c_str()); + + if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { + // Might be better to reject the request with a 400 ? + slot.params.n_predict = slot.n_predict; + SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d", slot.n_predict, slot.n_predict); + } + + if (slot.params.ignore_eos && has_eos_token) { + slot.params.sampling.logit_bias.push_back({llama_vocab_eos(vocab), -INFINITY}); + } - // release all slots - for (server_slot &slot : slots) { - slot.release(); + if (slot.smpl != nullptr) { + common_sampler_free(slot.smpl); + } + + slot.smpl = common_sampler_init(model, slot.params.sampling); + if (slot.smpl == nullptr) { + // for now, the only error that may happen here is invalid grammar + send_error(task, "Failed to parse grammar", ERROR_TYPE_INVALID_REQUEST); + return false; + } } - system_need_update = true; + if (slot.ctx_dft) { + llama_batch_free(slot.batch_spec); + + slot.batch_spec = llama_batch_init(slot.params.speculative.n_max + 1, 0, 1); + } + + slot.state = SLOT_STATE_STARTED; + + SLT_INF(slot, "%s", "processing task\n"); + return true; } - bool process_token(completion_token_output &result, server_slot &slot) - { + void kv_cache_clear() { + SRV_DBG("%s", "clearing KV cache\n"); + + // clear the entire KV cache + llama_kv_cache_clear(ctx); + clean_kv_cache = false; + } + + bool process_token(completion_token_output & result, server_slot & slot) { // remember which tokens were sampled - used for repetition penalties during sampling - const std::string token_str = llama_token_to_piece(ctx, result.tok, params.special); + const std::string token_str = result.text_to_send; slot.sampled = result.tok; - // search stop word and delete it slot.generated_text += token_str; - slot.has_next_token = true; - - if (slot.ctx_sampling->params.use_penalty_prompt_tokens && result.tok != -1) - { - // we can change penalty_prompt_tokens because it is always created from scratch each request - slot.ctx_sampling->params.penalty_prompt_tokens.push_back(result.tok); + if (slot.params.return_tokens) { + slot.generated_tokens.push_back(result.tok); } + slot.has_next_token = true; // check if there is incomplete UTF-8 character at the end - bool incomplete = false; - for (unsigned i = 1; i < 5 && i <= slot.generated_text.size(); ++i) - { - unsigned char c = slot.generated_text[slot.generated_text.size() - i]; - if ((c & 0xC0) == 0x80) - { - // continuation byte: 10xxxxxx - continue; - } - if ((c & 0xE0) == 0xC0) - { - // 2-byte character: 110xxxxx ... - incomplete = i < 2; - } - else if ((c & 0xF0) == 0xE0) - { - // 3-byte character: 1110xxxx ... - incomplete = i < 3; - } - else if ((c & 0xF8) == 0xF0) - { - // 4-byte character: 11110xxx ... - incomplete = i < 4; - } - // else 1-byte character or invalid byte - break; - } + bool incomplete = validate_utf8(slot.generated_text) < slot.generated_text.size(); - if (!incomplete) - { + // search stop word and delete it + if (!incomplete) { size_t pos = std::min(slot.n_sent_text, slot.generated_text.size()); const std::string str_test = slot.generated_text.substr(pos); - bool is_stop_full = false; + bool send_text = true; - size_t stop_pos = slot.find_stopping_strings(str_test, token_str.size(), STOP_TYPE_FULL); - if (stop_pos != std::string::npos) - { - is_stop_full = true; - slot.generated_text.erase(slot.generated_text.begin() + pos + stop_pos, slot.generated_text.end()); + size_t stop_pos = slot.find_stopping_strings(str_test, token_str.size(), true); + if (stop_pos != std::string::npos) { + slot.generated_text.erase( + slot.generated_text.begin() + pos + stop_pos, + slot.generated_text.end()); pos = std::min(slot.n_sent_text, slot.generated_text.size()); - } - else - { - is_stop_full = false; - stop_pos = slot.find_stopping_strings(str_test, token_str.size(), STOP_TYPE_PARTIAL); + } else if (slot.has_next_token) { + stop_pos = slot.find_stopping_strings(str_test, token_str.size(), false); + send_text = stop_pos == std::string::npos; } // check if there is any token to predict - if (stop_pos == std::string::npos || (!slot.has_next_token && !is_stop_full && stop_pos > 0)) - { + if (send_text) { // no send the stop word in the response result.text_to_send = slot.generated_text.substr(pos, std::string::npos); slot.n_sent_text += result.text_to_send.size(); // add the token to slot queue and cache + } else { + result.text_to_send = ""; } - slot.add_token_string(result); - if (slot.params.stream) - { + slot.add_token(result); + if (slot.params.stream) { send_partial_response(slot, result); } } - if (incomplete) - { + if (incomplete) { slot.has_next_token = true; } // check the limits - if (slot.n_decoded > 0 && slot.has_next_token && !slot.has_budget(params)) - { - slot.stopped_limit = true; + if (slot.n_decoded > 0 && slot.has_next_token && !slot.has_budget(params_base)) { + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; - LOG_VERBOSE("stopped by limit", { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_decoded", slot.n_decoded}, - {"n_predict", slot.params.n_predict}, - }); + SLT_DBG(slot, "stopped by limit, n_decoded = %d, n_predict = %d\n", slot.n_decoded, slot.params.n_predict); } - if (llama_token_is_eog(model, result.tok)) - { - slot.stopped_eos = true; + if (slot.has_new_line) { + // if we have already seen a new line, we stop after a certain time limit + if (slot.params.t_max_predict_ms > 0 && (ggml_time_us() - slot.t_start_generation > 1000.0f*slot.params.t_max_predict_ms)) { + slot.stop = STOP_TYPE_LIMIT; + slot.has_next_token = false; + + SLT_DBG(slot, "stopped by time limit, n_decoded = %d, t_max_predict_ms = %d ms\n", slot.n_decoded, (int) slot.params.t_max_predict_ms); + } + + // require that each new line has a whitespace prefix (i.e. indentation) of at least slot.params.n_indent + if (slot.params.n_indent > 0) { + // check the current indentation + // TODO: improve by not doing it more than once for each new line + if (slot.last_nl_pos > 0) { + size_t pos = slot.last_nl_pos; + + int n_indent = 0; + while (pos < slot.generated_text.size() && (slot.generated_text[pos] == ' ' || slot.generated_text[pos] == '\t')) { + n_indent++; + pos++; + } + + if (pos < slot.generated_text.size() && n_indent < slot.params.n_indent) { + slot.stop = STOP_TYPE_LIMIT; + slot.has_next_token = false; + + // cut the last line + slot.generated_text.erase(pos, std::string::npos); + + SLT_DBG(slot, "stopped by indentation limit, n_decoded = %d, n_indent = %d\n", slot.n_decoded, n_indent); + } + } + + // find the next new line + { + const size_t pos = slot.generated_text.find('\n', slot.last_nl_pos); + + if (pos != std::string::npos) { + slot.last_nl_pos = pos + 1; + } + } + } + } + + // check if there is a new line in the generated text + if (result.text_to_send.find('\n') != std::string::npos) { + slot.has_new_line = true; + } + + // if context shift is disabled, we stop when it reaches the context limit + if (slot.n_past >= slot.n_ctx) { + slot.truncated = true; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; - LOG_VERBOSE("eos token found", {}); + SLT_DBG(slot, "stopped due to running out of context capacity, n_past = %d, n_prompt_tokens = %d, n_decoded = %d, n_ctx = %d\n", + slot.n_decoded, slot.n_prompt_tokens, slot.n_past, slot.n_ctx); } - auto n_ctx_train = llama_n_ctx_train(model); - if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.ga_n == 1 && - slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) - { - LOG_WARNING("n_predict is not set and self-context extend is disabled." - " Limiting generated tokens to n_ctx_train to avoid EOS-less generation infinite loop", - { - {"id_slot", slot.id}, - {"params.n_predict", slot.params.n_predict}, - {"slot.n_prompt_tokens", slot.n_prompt_tokens}, - {"slot.n_decoded", slot.n_decoded}, - {"slot.n_predict", slot.n_predict}, - {"n_slots", params.n_parallel}, - {"slot.n_ctx", slot.n_ctx}, - {"n_ctx", n_ctx}, - {"n_ctx_train", n_ctx_train}, - {"ga_n", slot.ga_n}, - }); - slot.truncated = true; - slot.stopped_limit = true; + if (llama_vocab_is_eog(vocab, result.tok)) { + slot.stop = STOP_TYPE_EOS; + slot.has_next_token = false; + + SLT_DBG(slot, "%s", "stopped by EOS\n"); + } + + const auto n_ctx_train = llama_model_n_ctx_train(model); + + if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) { + slot.truncated = true; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; // stop prediction + + SLT_WRN(slot, + "n_predict (%d) is set for infinite generation. " + "Limiting generated tokens to n_ctx_train (%d) to avoid EOS-less generation infinite loop\n", + slot.params.n_predict, n_ctx_train); } - LOG_VERBOSE("next token", { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"token", result.tok}, - {"token_text", tokens_to_output_formatted_string(ctx, result.tok)}, - {"has_next_token", slot.has_next_token}, - {"n_remain", slot.n_remaining}, - {"n_decoded", slot.n_decoded}, - {"stopped_eos", slot.stopped_eos}, - {"stopped_word", slot.stopped_word}, - {"stopped_limit", slot.stopped_limit}, - {"stopping_word", slot.stopping_word}, - }); + SLT_DBG(slot, "n_decoded = %d, n_remaining = %d, next token: %5d '%s'\n", slot.n_decoded, slot.n_remaining, result.tok, token_str.c_str()); return slot.has_next_token; // continue } - json get_formated_generation(const server_slot &slot) const - { - const auto eos_bias = slot.sparams.logit_bias.find(llama_token_eos(model)); - const bool ignore_eos = - eos_bias != slot.sparams.logit_bias.end() && eos_bias->second < 0.0f && std::isinf(eos_bias->second); + void populate_token_probs(const server_slot & slot, completion_token_output & result, bool post_sampling, bool special, int idx) { + size_t n_probs = slot.params.sampling.n_probs; + size_t n_vocab = llama_vocab_n_tokens(vocab); + if (post_sampling) { + const auto * cur_p = common_sampler_get_candidates(slot.smpl); + const size_t max_probs = cur_p->size; + + // set probability for sampled token + for (size_t i = 0; i < max_probs; i++) { + if (cur_p->data[i].id == result.tok) { + result.prob = cur_p->data[i].p; + break; + } + } - std::vector samplers_sequence; - samplers_sequence.reserve(slot.sparams.samplers_sequence.size()); - for (const auto &sampler_type : slot.sparams.samplers_sequence) - { - samplers_sequence.emplace_back(llama_sampling_type_to_str(sampler_type)); - } - - return json{{"n_ctx", slot.n_ctx}, - {"n_predict", slot.n_predict}, - {"model", params.model_alias}, - {"seed", slot.sparams.seed}, - {"temperature", slot.sparams.temp}, - {"dynatemp_range", slot.sparams.dynatemp_range}, - {"dynatemp_exponent", slot.sparams.dynatemp_exponent}, - {"top_k", slot.sparams.top_k}, - {"top_p", slot.sparams.top_p}, - {"min_p", slot.sparams.min_p}, - {"tfs_z", slot.sparams.tfs_z}, - {"typical_p", slot.sparams.typical_p}, - {"repeat_last_n", slot.sparams.penalty_last_n}, - {"repeat_penalty", slot.sparams.penalty_repeat}, - {"presence_penalty", slot.sparams.penalty_present}, - {"frequency_penalty", slot.sparams.penalty_freq}, - {"penalty_prompt_tokens", slot.sparams.penalty_prompt_tokens}, - {"use_penalty_prompt_tokens", slot.sparams.use_penalty_prompt_tokens}, - {"mirostat", slot.sparams.mirostat}, - {"mirostat_tau", slot.sparams.mirostat_tau}, - {"mirostat_eta", slot.sparams.mirostat_eta}, - {"penalize_nl", slot.sparams.penalize_nl}, - {"stop", slot.params.antiprompt}, - {"n_predict", slot.params.n_predict}, // TODO: fix duplicate key n_predict - {"n_keep", slot.params.n_keep}, - {"n_discard", slot.params.n_discard}, - {"ignore_eos", ignore_eos}, - {"stream", slot.params.stream}, - {"logit_bias", slot.sparams.logit_bias}, - {"n_probs", slot.sparams.n_probs}, - {"min_keep", slot.sparams.min_keep}, - {"grammar", slot.sparams.grammar}, - {"samplers", samplers_sequence}}; - } - - void send_error(const server_task &task, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) - { - send_error(task.id, task.id_multi, error, type); + // set probability for top n_probs tokens + result.probs.reserve(max_probs); + for (size_t i = 0; i < std::min(max_probs, n_probs); i++) { + result.probs.push_back({ + cur_p->data[i].id, + common_token_to_piece(ctx, cur_p->data[i].id, special), + cur_p->data[i].p + }); + } + } else { + // TODO: optimize this with min-p optimization + std::vector cur = get_token_probabilities(ctx, idx); + + // set probability for sampled token + for (size_t i = 0; i < n_vocab; i++) { + // set probability for sampled token + if (cur[i].id == result.tok) { + result.prob = cur[i].p; + break; + } + } + + // set probability for top n_probs tokens + result.probs.reserve(n_probs); + for (size_t i = 0; i < std::min(n_vocab, n_probs); i++) { + result.probs.push_back({ + cur[i].id, + common_token_to_piece(ctx, cur[i].id, special), + cur[i].p + }); + } + } } - void send_error(const server_slot &slot, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) - { - send_error(slot.id_task, slot.id_multi, error, type); + void send_error(const server_task & task, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + send_error(task.id, error, type); } - void send_error(const int id_task, const int id_multi, const std::string &error, - const enum error_type type = ERROR_TYPE_SERVER) - { - LOG_ERROR("task error", { - {"id_multi", id_multi}, - {"id_task", id_task}, - {"error", error}, - }); + void send_error(const server_slot & slot, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + send_error(slot.id_task, error, type); + } - server_task_result res; - res.id = id_task; - res.id_multi = id_multi; - res.stop = false; - res.error = true; - res.data = format_error_response(error, type); + void send_error(const int id_task, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + SRV_ERR("task id = %d, error: %s\n", id_task, error.c_str()); - queue_results.send(res); + auto res = std::make_unique(); + res->id = id_task; + res->err_type = type; + res->err_msg = error; + + queue_results.send(std::move(res)); } - void send_partial_response(server_slot &slot, completion_token_output tkn) - { - server_task_result res; - res.id = slot.id_task; - res.id_multi = slot.id_multi; - res.error = false; - res.stop = false; - res.data = json{{"content", tkn.text_to_send}, {"stop", false}, {"id_slot", slot.id}, {"multimodal", false}}; - - if (slot.sparams.n_probs > 0) - { - const std::vector to_send_toks = llama_tokenize(ctx, tkn.text_to_send, false); - const size_t probs_pos = std::min(slot.n_sent_token_probs, slot.generated_token_probs.size()); - const size_t probs_stop_pos = - std::min(slot.n_sent_token_probs + to_send_toks.size(), slot.generated_token_probs.size()); + void send_partial_response(server_slot & slot, const completion_token_output & tkn) { + auto res = std::make_unique(); - std::vector probs_output; - if (probs_pos < probs_stop_pos) - { - probs_output = - std::vector(slot.generated_token_probs.begin() + probs_pos, - slot.generated_token_probs.begin() + probs_stop_pos); - } - slot.n_sent_token_probs = probs_stop_pos; + res->id = slot.id_task; + res->index = slot.index; + res->content = tkn.text_to_send; + res->tokens = { tkn.tok }; + + res->n_decoded = slot.n_decoded; + res->n_prompt_tokens = slot.n_prompt_tokens; + res->post_sampling_probs = slot.params.post_sampling_probs; - res.data["completion_probabilities"] = probs_vector_to_json(ctx, probs_output); + res->verbose = slot.params.verbose; + res->oaicompat = slot.params.oaicompat; + res->oaicompat_model = slot.params.oaicompat_model; + res->oaicompat_cmpl_id = slot.params.oaicompat_cmpl_id; + + // populate res.probs_output + if (slot.params.sampling.n_probs > 0) { + res->prob_output = tkn; // copy the token probs } - if (slot.oaicompat) - { - res.data["oaicompat_token_ctr"] = slot.n_decoded; - res.data["model"] = slot.oaicompat_model; + // populate timings if this is final response or timings_per_token is enabled + if (slot.stop != STOP_TYPE_NONE || slot.params.timings_per_token) { + res->timings = slot.get_timings(); } - queue_results.send(res); + queue_results.send(std::move(res)); } - void send_final_response(const server_slot &slot) - { - server_task_result res; - res.id = slot.id_task; - res.id_multi = slot.id_multi; - res.error = false; - res.stop = true; - res.data = json{{"content", !slot.params.stream ? slot.generated_text : ""}, - {"id_slot", slot.id}, - {"stop", true}, - {"model", params.model_alias}, - {"tokens_predicted", slot.n_decoded}, - {"tokens_evaluated", slot.n_prompt_tokens}, - {"generation_settings", get_formated_generation(slot)}, - {"prompt", slot.prompt}, - {"truncated", slot.truncated}, - {"stopped_eos", slot.stopped_eos}, - {"stopped_word", slot.stopped_word}, - {"stopped_limit", slot.stopped_limit}, - {"stopping_word", slot.stopping_word}, - {"tokens_cached", slot.n_past}, - {"timings", slot.get_formated_timings()}}; - - if (slot.sparams.n_probs > 0) - { - std::vector probs; - if (!slot.params.stream && slot.stopped_word) - { - const std::vector stop_word_toks = llama_tokenize(ctx, slot.stopping_word, false); + void send_final_response(server_slot & slot) { + auto res = std::make_unique(); + res->id = slot.id_task; + res->id_slot = slot.id; + + res->index = slot.index; + res->content = std::move(slot.generated_text); + res->tokens = std::move(slot.generated_tokens); + res->timings = slot.get_timings(); + res->prompt = common_detokenize(ctx, slot.prompt_tokens, true); + res->response_fields = std::move(slot.params.response_fields); + + res->truncated = slot.truncated; + res->n_decoded = slot.n_decoded; + res->n_prompt_tokens = slot.n_prompt_tokens; + res->n_tokens_cached = slot.n_past; + res->has_new_line = slot.has_new_line; + res->stopping_word = slot.stopping_word; + res->stop = slot.stop; + res->post_sampling_probs = slot.params.post_sampling_probs; + + res->verbose = slot.params.verbose; + res->stream = slot.params.stream; + res->oaicompat = slot.params.oaicompat; + res->oaicompat_model = slot.params.oaicompat_model; + res->oaicompat_cmpl_id = slot.params.oaicompat_cmpl_id; + res->oaicompat_chat_format = slot.params.oaicompat_chat_format; + // populate res.probs_output + if (slot.params.sampling.n_probs > 0) { + if (!slot.params.stream && slot.stop == STOP_TYPE_WORD) { + const llama_tokens stop_word_toks = common_tokenize(ctx, slot.stopping_word, false); size_t safe_offset = std::min(slot.generated_token_probs.size(), stop_word_toks.size()); - probs = std::vector(slot.generated_token_probs.begin(), - slot.generated_token_probs.end() - safe_offset); - } - else - { - probs = std::vector(slot.generated_token_probs.begin(), - slot.generated_token_probs.end()); + res->probs_output = std::vector( + slot.generated_token_probs.begin(), + slot.generated_token_probs.end() - safe_offset); + } else { + res->probs_output = std::vector( + slot.generated_token_probs.begin(), + slot.generated_token_probs.end()); } - - res.data["completion_probabilities"] = probs_vector_to_json(ctx, probs); } - if (slot.oaicompat) - { - res.data["oaicompat_token_ctr"] = slot.n_decoded; - res.data["model"] = slot.oaicompat_model; - } + res->generation_params = slot.params; // copy the parameters - queue_results.send(res); + queue_results.send(std::move(res)); } - void send_embedding(const server_slot &slot, const llama_batch &batch) - { - server_task_result res; - res.id = slot.id_task; - res.id_multi = slot.id_multi; - res.error = false; - res.stop = true; + void send_embedding(const server_slot & slot, const llama_batch & batch) { + auto res = std::make_unique(); + res->id = slot.id_task; + res->index = slot.index; + res->n_tokens = slot.n_prompt_tokens; + res->oaicompat = slot.params.oaicompat; - const int n_embd = llama_n_embd(model); + const int n_embd = llama_model_n_embd(model); std::vector embd_res(n_embd, 0.0f); - for (int i = 0; i < batch.n_tokens; ++i) - { - if (!batch.logits[i] || batch.seq_id[i][0] != slot.id + 1) - { + for (int i = 0; i < batch.n_tokens; ++i) { + if (!batch.logits[i] || batch.seq_id[i][0] != slot.id) { continue; } - const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); - if (embd == NULL) - { + const float * embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); + if (embd == NULL) { embd = llama_get_embeddings_ith(ctx, i); } - if (embd == NULL) - { - LOG_ERROR("failed to get embeddings", {{"token", batch.token[i]}, {"seq_id", batch.seq_id[i][0]}}); - - res.data = json{ - {"embedding", std::vector(n_embd, 0.0f)}, - }; + if (embd == NULL) { + SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], batch.seq_id[i][0]); + res->embedding.push_back(std::vector(n_embd, 0.0f)); continue; } - llama_embd_normalize(embd, embd_res.data(), n_embd); - - res.data = json{ - {"embedding", embd_res}, - }; + // normalize only when there is pooling + // TODO: configurable + if (llama_pooling_type(slot.ctx) != LLAMA_POOLING_TYPE_NONE) { + common_embd_normalize(embd, embd_res.data(), n_embd, 2); + res->embedding.push_back(embd_res); + } else { + res->embedding.push_back({ embd, embd + n_embd }); + } } - queue_results.send(res); + SLT_DBG(slot, "%s", "sending embeddings\n"); + + queue_results.send(std::move(res)); } - void request_completion(int id_task, int id_multi, json data, bool infill, bool embedding) - { - server_task task; - task.id = id_task; - task.id_multi = id_multi; - task.id_target = 0; - task.data = std::move(data); - task.infill = infill; - task.embedding = embedding; - task.type = SERVER_TASK_TYPE_COMPLETION; - - // when a completion task's prompt array is not a singleton, we split it into multiple requests - // otherwise, it's a single-prompt task, we actually queue it - // if there's numbers in the prompt array it will be treated as an array of tokens - if (task.data.count("prompt") != 0 && task.data.at("prompt").size() > 1) - { - bool numbers = false; - for (const auto &e : task.data.at("prompt")) - { - if (e.is_number()) - { - numbers = true; - break; - } - } + void send_rerank(const server_slot & slot, const llama_batch & batch) { + auto res = std::make_unique(); + res->id = slot.id_task; + res->index = slot.index; + res->n_tokens = slot.n_prompt_tokens; - // NOTE: split_multiprompt_task() does not handle a mix of strings and numbers, - // it will completely stall the server. I don't know where the bug for this is. - // - // if there are numbers, it needs to be treated like a single prompt, - // queue_tasks handles a mix of strings and numbers just fine. - if (numbers) - { - queue_tasks.post(task); + for (int i = 0; i < batch.n_tokens; ++i) { + if (!batch.logits[i] || batch.seq_id[i][0] != slot.id) { + continue; } - else - { - split_multiprompt_task(id_task, task); + + const float * embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); + if (embd == NULL) { + embd = llama_get_embeddings_ith(ctx, i); } - } - else - { - queue_tasks.post(task); - } - } - void request_cancel(int id_task) - { - server_task task; - task.type = SERVER_TASK_TYPE_CANCEL; - task.id_target = id_task; + if (embd == NULL) { + SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], batch.seq_id[i][0]); - queue_tasks.post(task); - } + res->score = -1e6; + continue; + } - void split_multiprompt_task(int id_multi, const server_task &multiprompt_task) - { - const int prompt_count = multiprompt_task.data.at("prompt").size(); - if (prompt_count <= 1) - { - send_error(multiprompt_task, "error while handling multiple prompts"); - return; + res->score = embd[0]; } - // generate all the ID for subtask - std::vector subtask_ids(prompt_count); - for (int i = 0; i < prompt_count; i++) - { - subtask_ids[i] = queue_tasks.get_new_id(); - } + SLT_DBG(slot, "sending rerank result, res.score = %f\n", res->score); - // queue up the multitask so we can track its subtask progression - queue_tasks.add_multitask(id_multi, subtask_ids); + queue_results.send(std::move(res)); + } - // add subtasks - for (int i = 0; i < prompt_count; i++) - { - json subtask_data = multiprompt_task.data; - subtask_data["prompt"] = subtask_data.at("prompt")[i]; + // + // Functions to create new task(s) and receive result(s) + // + + void cancel_tasks(const std::unordered_set & id_tasks) { + std::vector cancel_tasks; + cancel_tasks.reserve(id_tasks.size()); + for (const auto & id_task : id_tasks) { + SRV_WRN("cancel task, id_task = %d\n", id_task); - // subtasks inherit everything else (infill mode, embedding mode, etc.) - request_completion(subtask_ids[i], id_multi, subtask_data, multiprompt_task.infill, - multiprompt_task.embedding); + server_task task(SERVER_TASK_TYPE_CANCEL); + task.id_target = id_task; + queue_results.remove_waiting_task_id(id_task); + cancel_tasks.push_back(task); } + // push to beginning of the queue, so it has highest priority + queue_tasks.post(cancel_tasks, true); } - void process_single_task(const server_task &task) - { - switch (task.type) - { - case SERVER_TASK_TYPE_COMPLETION: { - const int id_slot = json_value(task.data, "id_slot", -1); - - server_slot *slot; - - if (id_slot != -1) - { - slot = get_slot_by_id(id_slot); + // receive the results from task(s) + void receive_multi_results( + const std::unordered_set & id_tasks, + const std::function&)> & result_handler, + const std::function & error_handler, + const std::function & is_connection_closed) { + std::vector results(id_tasks.size()); + for (int i = 0; i < (int)id_tasks.size(); i++) { + server_task_result_ptr result = queue_results.recv_with_timeout(id_tasks, HTTP_POLLING_SECONDS); + + if (is_connection_closed()) { + cancel_tasks(id_tasks); + return; } - else - { - std::string prompt; - if (task.data.contains("prompt") && task.data.at("prompt").is_string()) - { - prompt = json_value(task.data, "prompt", std::string()); - } - slot = get_available_slot(prompt); + if (result == nullptr) { + i--; // retry + continue; } - if (slot == nullptr) - { - // if no slot is available, we defer this task for processing later - LOG_VERBOSE("no slot is available", {{"id_task", task.id}}); - queue_tasks.defer(task); - break; - } - if (!slot->available()) - { - // if requested slot is unavailable, we defer this task for processing later - LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); - queue_tasks.defer(task); - break; + if (result->is_error()) { + error_handler(result->to_json()); + cancel_tasks(id_tasks); + return; } - if (task.data.contains("system_prompt")) - { - std::string sys_prompt = json_value(task.data, "system_prompt", std::string()); - system_prompt_set(sys_prompt); + GGML_ASSERT( + dynamic_cast(result.get()) != nullptr + || dynamic_cast(result.get()) != nullptr + || dynamic_cast(result.get()) != nullptr + ); + const size_t idx = result->get_index(); + GGML_ASSERT(idx < results.size() && "index out of range"); + results[idx] = std::move(result); + } + result_handler(results); + } - for (server_slot &slot : slots) - { - slot.n_past = 0; - slot.n_past_se = 0; - } + // receive the results from task(s), in stream mode + void receive_cmpl_results_stream( + const std::unordered_set & id_tasks, + const std::function & result_handler, + const std::function & error_handler, + const std::function & is_connection_closed) { + size_t n_finished = 0; + while (true) { + server_task_result_ptr result = queue_results.recv_with_timeout(id_tasks, HTTP_POLLING_SECONDS); + + if (is_connection_closed()) { + cancel_tasks(id_tasks); + return; } - slot->reset(); + if (result == nullptr) { + continue; // retry + } - slot->id_task = task.id; - slot->id_multi = task.id_multi; - slot->infill = task.infill; - slot->embedding = task.embedding; + if (result->is_error()) { + error_handler(result->to_json()); + cancel_tasks(id_tasks); + return; + } - if (!launch_slot_with_task(*slot, task)) - { - LOG_ERROR("error while launching slot", task.data); + GGML_ASSERT( + dynamic_cast(result.get()) != nullptr + || dynamic_cast(result.get()) != nullptr + ); + if (!result_handler(result)) { + cancel_tasks(id_tasks); break; } - } - break; - case SERVER_TASK_TYPE_CANCEL: { - // release slot linked with the task id - for (auto &slot : slots) - { - if (slot.id_task == task.id_target) - { - slot.release(); + + if (result->is_stop()) { + if (++n_finished == id_tasks.size()) { break; } } } - break; - case SERVER_TASK_TYPE_NEXT_RESPONSE: { - // do nothing - } - break; - case SERVER_TASK_TYPE_METRICS: { - json slots_data = json::array(); + } - int n_idle_slots = 0; - int n_processing_slots = 0; + // + // Functions to process the task + // - for (server_slot &slot : slots) - { - json slot_data = get_formated_generation(slot); - slot_data["id"] = slot.id; - slot_data["id_task"] = slot.id_task; - slot_data["state"] = slot.state; - slot_data["prompt"] = slot.prompt; - slot_data["next_token"] = { - {"has_next_token", slot.has_next_token}, {"n_remain", slot.n_remaining}, - {"n_decoded", slot.n_decoded}, {"stopped_eos", slot.stopped_eos}, - {"stopped_word", slot.stopped_word}, {"stopped_limit", slot.stopped_limit}, - {"stopping_word", slot.stopping_word}, - }; - - if (slot_data["state"] == SLOT_STATE_IDLE) - { - n_idle_slots++; - } - else + void process_single_task(server_task task) { + switch (task.type) { + case SERVER_TASK_TYPE_COMPLETION: + case SERVER_TASK_TYPE_INFILL: + case SERVER_TASK_TYPE_EMBEDDING: + case SERVER_TASK_TYPE_RERANK: { - n_processing_slots++; - } - - slots_data.push_back(slot_data); - } - LOG_INFO( - "slot data", - {{"id_task", task.id}, {"n_idle_slots", n_idle_slots}, {"n_processing_slots", n_processing_slots}}); - - LOG_VERBOSE("slot data", {{"id_task", task.id}, - {"n_idle_slots", n_idle_slots}, - {"n_processing_slots", n_processing_slots}, - {"slots", slots_data}}); - - server_task_result res; - res.id = task.id; - res.id_multi = task.id_multi; - res.stop = true; - res.error = false; - res.data = { - {"idle", n_idle_slots}, - {"processing", n_processing_slots}, - {"deferred", queue_tasks.queue_tasks_deferred.size()}, - {"t_start", metrics.t_start}, - - {"n_prompt_tokens_processed_total", metrics.n_prompt_tokens_processed_total}, - {"t_tokens_generation_total", metrics.t_tokens_generation_total}, - {"n_tokens_predicted_total", metrics.n_tokens_predicted_total}, - {"t_prompt_processing_total", metrics.t_prompt_processing_total}, - - {"n_prompt_tokens_processed", metrics.n_prompt_tokens_processed}, - {"t_prompt_processing", metrics.t_prompt_processing}, - {"n_tokens_predicted", metrics.n_tokens_predicted}, - {"t_tokens_generation", metrics.t_tokens_generation}, - - {"kv_cache_tokens_count", llama_get_kv_cache_token_count(ctx)}, - {"kv_cache_used_cells", llama_get_kv_cache_used_cells(ctx)}, - - {"slots", slots_data}, - }; - - if (json_value(task.data, "reset_bucket", false)) - { - metrics.reset_bucket(); - } - queue_results.send(res); - } - break; - case SERVER_TASK_TYPE_SLOT_SAVE: { - int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot_by_id(id_slot); - if (slot == nullptr) - { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (!slot->available()) - { - // if requested slot is unavailable, we defer this task for processing later - LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); - queue_tasks.defer(task); - break; - } + const int id_slot = task.id_selected_slot; - const size_t token_count = slot->cache_tokens.size(); - const int64_t t_start = ggml_time_us(); + server_slot * slot = id_slot != -1 ? get_slot_by_id(id_slot) : get_available_slot(task); - std::string filename = task.data.at("filename"); - std::string filepath = task.data.at("filepath"); + if (slot == nullptr) { + // if no slot is available, we defer this task for processing later + SRV_DBG("no slot is available, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - const size_t nwrite = - llama_state_seq_save_file(ctx, filepath.c_str(), slot->id + 1, slot->cache_tokens.data(), token_count); + if (!launch_slot_with_task(*slot, task)) { + SRV_ERR("failed to launch slot with task, id_task = %d\n", task.id); + break; + } + } break; + case SERVER_TASK_TYPE_CANCEL: + { + // release slot linked with the task id + for (auto & slot : slots) { + if (slot.id_task == task.id_target) { + slot.release(); + break; + } + } + } break; + case SERVER_TASK_TYPE_NEXT_RESPONSE: + { + // do nothing + } break; + case SERVER_TASK_TYPE_METRICS: + { + json slots_data = json::array(); - const int64_t t_end = ggml_time_us(); - const double t_save_ms = (t_end - t_start) / 1000.0; + int n_idle_slots = 0; + int n_processing_slots = 0; - server_task_result result; - result.id = task.id; - result.stop = true; - result.error = false; - result.data = json{{"id_slot", id_slot}, - {"filename", filename}, - {"n_saved", token_count}, // tokens saved - {"n_written", nwrite}, // bytes written - {"timings", {{"save_ms", t_save_ms}}}}; - queue_results.send(result); - } - break; - case SERVER_TASK_TYPE_SLOT_RESTORE: { - int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot_by_id(id_slot); - if (slot == nullptr) - { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (!slot->available()) - { - // if requested slot is unavailable, we defer this task for processing later - LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); - queue_tasks.defer(task); - break; - } + for (server_slot & slot : slots) { + json slot_data = slot.to_json(); - const int64_t t_start = ggml_time_us(); + if (slot.is_processing()) { + n_processing_slots++; + } else { + n_idle_slots++; + } - std::string filename = task.data.at("filename"); - std::string filepath = task.data.at("filepath"); + slots_data.push_back(slot_data); + } + SRV_DBG("n_idle_slots = %d, n_processing_slots = %d\n", n_idle_slots, n_processing_slots); + + auto res = std::make_unique(); + res->id = task.id; + res->slots_data = std::move(slots_data); + res->n_idle_slots = n_idle_slots; + res->n_processing_slots = n_processing_slots; + res->n_tasks_deferred = queue_tasks.queue_tasks_deferred.size(); + res->t_start = metrics.t_start; + + res->kv_cache_tokens_count = llama_get_kv_cache_token_count(ctx); + res->kv_cache_used_cells = llama_get_kv_cache_used_cells(ctx); + + res->n_prompt_tokens_processed_total = metrics.n_prompt_tokens_processed_total; + res->t_prompt_processing_total = metrics.t_prompt_processing_total; + res->n_tokens_predicted_total = metrics.n_tokens_predicted_total; + res->t_tokens_generation_total = metrics.t_tokens_generation_total; + + res->n_prompt_tokens_processed = metrics.n_prompt_tokens_processed; + res->t_prompt_processing = metrics.t_prompt_processing; + res->n_tokens_predicted = metrics.n_tokens_predicted; + res->t_tokens_generation = metrics.t_tokens_generation; + + res->n_decode_total = metrics.n_decode_total; + res->n_busy_slots_total = metrics.n_busy_slots_total; + + if (task.metrics_reset_bucket) { + metrics.reset_bucket(); + } + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_SAVE: + { + int id_slot = task.slot_action.slot_id; + server_slot * slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - slot->cache_tokens.resize(slot->n_ctx); - size_t token_count = 0; - size_t nread = llama_state_seq_load_file(ctx, filepath.c_str(), slot->id + 1, slot->cache_tokens.data(), - slot->cache_tokens.size(), &token_count); - if (nread == 0) - { - slot->cache_tokens.resize(0); - send_error(task, "Unable to restore slot, no available space in KV cache or invalid slot save file", - ERROR_TYPE_INVALID_REQUEST); - break; - } - slot->cache_tokens.resize(token_count); - - const int64_t t_end = ggml_time_us(); - const double t_restore_ms = (t_end - t_start) / 1000.0; - - server_task_result result; - result.id = task.id; - result.stop = true; - result.error = false; - result.data = json{{"id_slot", id_slot}, - {"filename", filename}, - {"n_restored", token_count}, // tokens restored - {"n_read", nread}, // bytes read - {"timings", {{"restore_ms", t_restore_ms}}}}; - queue_results.send(result); - } - break; - case SERVER_TASK_TYPE_SLOT_ERASE: { - int id_slot = task.data.at("id_slot"); - server_slot *slot = get_slot_by_id(id_slot); - if (slot == nullptr) - { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (!slot->available()) - { - // if requested slot is unavailable, we defer this task for processing later - LOG_VERBOSE("requested slot is unavailable", {{"id_task", task.id}}); - queue_tasks.defer(task); - break; - } + const size_t token_count = slot->cache_tokens.size(); + const int64_t t_start = ggml_time_us(); - // Erase token cache - const size_t n_erased = slot->cache_tokens.size(); - llama_kv_cache_seq_rm(ctx, slot->id + 1, -1, -1); - slot->cache_tokens.clear(); + std::string filename = task.slot_action.filename; + std::string filepath = task.slot_action.filepath; - server_task_result result; - result.id = task.id; - result.stop = true; - result.error = false; - result.data = json{{"id_slot", id_slot}, {"n_erased", n_erased}}; - queue_results.send(result); - } - break; - } - } + const size_t nwrite = llama_state_seq_save_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), token_count); - void on_finish_multitask(const server_task_multi &multitask) - { - // all subtasks done == multitask is done - server_task_result result; - result.id = multitask.id; - result.stop = true; - result.error = false; - - // collect json results into one json result - std::vector result_jsons; - for (const auto &subres : multitask.results) - { - result_jsons.push_back(subres.data); - result.error = result.error && subres.error; - } - result.data = json{{"results", result_jsons}}; + const int64_t t_end = ggml_time_us(); + const double t_save_ms = (t_end - t_start) / 1000.0; - queue_results.send(result); - } + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->filename = filename; + res->is_save = true; + res->n_tokens = token_count; + res->n_bytes = nwrite; + res->t_ms = t_save_ms; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_RESTORE: + { + int id_slot = task.slot_action.slot_id; + server_slot * slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - void update_slots() - { - if (system_need_update) - { - system_prompt_update(); - } + const int64_t t_start = ggml_time_us(); - // release slots - for (auto &slot : slots) - { - if (slot.command == SLOT_COMMAND_RELEASE) - { - slot.state = SLOT_STATE_IDLE; - slot.command = SLOT_COMMAND_NONE; - slot.t_last_used = ggml_time_us(); + std::string filename = task.slot_action.filename; + std::string filepath = task.slot_action.filepath; - LOG_INFO("slot released", {{"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_ctx", n_ctx}, - {"n_past", slot.n_past}, - {"n_system_tokens", system_tokens.size()}, - {"n_cache_tokens", slot.cache_tokens.size()}, - {"truncated", slot.truncated}}); + slot->cache_tokens.resize(slot->n_ctx); + size_t token_count = 0; + size_t nread = llama_state_seq_load_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), slot->cache_tokens.size(), &token_count); + if (nread == 0) { + slot->cache_tokens.resize(0); + send_error(task, "Unable to restore slot, no available space in KV cache or invalid slot save file", ERROR_TYPE_INVALID_REQUEST); + break; + } + slot->cache_tokens.resize(token_count); + + const int64_t t_end = ggml_time_us(); + const double t_restore_ms = (t_end - t_start) / 1000.0; + + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->filename = filename; + res->is_save = false; + res->n_tokens = token_count; + res->n_bytes = nread; + res->t_ms = t_restore_ms; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_ERASE: + { + int id_slot = task.slot_action.slot_id; + server_slot * slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - queue_tasks.notify_slot_changed(); - } + // Erase token cache + const size_t n_erased = slot->cache_tokens.size(); + llama_kv_cache_seq_rm(ctx, slot->id, -1, -1); + slot->cache_tokens.clear(); + + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->n_erased = n_erased; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SET_LORA: + { + params_base.lora_adapters = std::move(task.set_lora); + auto res = std::make_unique(); + res->id = task.id; + queue_results.send(std::move(res)); + } break; } + } + void update_slots() { // check if all slots are idle { bool all_idle = true; - for (auto &slot : slots) - { - if (slot.state != SLOT_STATE_IDLE || slot.command != SLOT_COMMAND_NONE) - { + for (auto & slot : slots) { + if (slot.is_processing()) { all_idle = false; break; } } - if (all_idle) - { - LOG_INFO("all slots are idle", {}); - if (system_prompt.empty() && clean_kv_cache) - { + if (all_idle) { + SRV_INF("%s", "all slots are idle\n"); + if (clean_kv_cache) { kv_cache_clear(); } @@ -2086,494 +2804,358 @@ struct server_context } { - LOG_VERBOSE("posting NEXT_RESPONSE", {}); - - server_task task; - task.type = SERVER_TASK_TYPE_NEXT_RESPONSE; - task.id_target = -1; + SRV_DBG("%s", "posting NEXT_RESPONSE\n"); + server_task task(SERVER_TASK_TYPE_NEXT_RESPONSE); + task.id = queue_tasks.get_new_id(); queue_tasks.post(task); } // apply context-shift if needed // TODO: simplify and improve - for (server_slot &slot : slots) - { - if (slot.ga_n == 1) - { - if (slot.is_processing() && (int)system_tokens.size() + slot.n_past >= slot.n_ctx - 1) - { - // Shift context - const int n_keep = slot.params.n_keep + add_bos_token; - const int n_left = (int)system_tokens.size() + slot.n_past - n_keep; - const int n_discard = slot.params.n_discard ? slot.params.n_discard : (n_left / 2); - - LOG_INFO("slot context shift", {{"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_keep", n_keep}, - {"n_left", n_left}, - {"n_discard", n_discard}, - {"n_ctx", n_ctx}, - {"n_past", slot.n_past}, - {"n_system_tokens", system_tokens.size()}, - {"n_cache_tokens", slot.cache_tokens.size()}}); - - llama_kv_cache_seq_rm(ctx, slot.id + 1, n_keep, n_keep + n_discard); - llama_kv_cache_seq_add(ctx, slot.id + 1, n_keep + n_discard, system_tokens.size() + slot.n_past, - -n_discard); - - if (slot.params.cache_prompt) - { - for (size_t i = n_keep + n_discard; i < slot.cache_tokens.size(); i++) - { - slot.cache_tokens[i - n_discard] = slot.cache_tokens[i]; - } + for (server_slot & slot : slots) { + if (slot.is_processing() && slot.n_past + 1 >= slot.n_ctx) { + if (!params_base.ctx_shift) { + // this check is redundant (for good) + // we should never get here, because generation should already stopped in process_token() + slot.release(); + send_error(slot, "context shift is disabled", ERROR_TYPE_SERVER); + continue; + } - slot.cache_tokens.resize(slot.cache_tokens.size() - n_discard); - } + // Shift context + const int n_keep = slot.params.n_keep + add_bos_token; + const int n_left = slot.n_past - n_keep; + const int n_discard = slot.params.n_discard ? slot.params.n_discard : (n_left / 2); - slot.n_past -= n_discard; + SLT_WRN(slot, "slot context shift, n_keep = %d, n_left = %d, n_discard = %d\n", n_keep, n_left, n_discard); - slot.truncated = true; + llama_kv_cache_seq_rm (ctx, slot.id, n_keep , n_keep + n_discard); + llama_kv_cache_seq_add(ctx, slot.id, n_keep + n_discard, slot.n_past, -n_discard); + + if (slot.params.cache_prompt) { + for (size_t i = n_keep + n_discard; i < slot.cache_tokens.size(); i++) { + slot.cache_tokens[i - n_discard] = slot.cache_tokens[i]; + } + + slot.cache_tokens.resize(slot.cache_tokens.size() - n_discard); } + + slot.n_past -= n_discard; + + slot.truncated = true; } } // start populating the batch for this iteration - llama_batch_clear(batch); + common_batch_clear(batch); + + // track if given slot can be batched with slots already in the batch + server_slot * slot_batched = nullptr; + + auto accept_special_token = [&](server_slot & slot, llama_token token) { + return params_base.special || slot.params.sampling.preserved_tokens.find(token) != slot.params.sampling.preserved_tokens.end(); + }; // frist, add sampled tokens from any ongoing sequences - for (auto &slot : slots) - { - if (slot.state == SLOT_STATE_IDLE) - { + for (auto & slot : slots) { + if (slot.state != SLOT_STATE_GENERATING) { continue; } - slot.i_batch = batch.n_tokens; + // check if we can batch this slot with the previous one + if (!slot_batched) { + slot_batched = &slot; + } else if (!slot_batched->can_batch_with(slot)) { + continue; + } - const int32_t slot_npast = slot.n_past_se > 0 ? slot.n_past_se : slot.n_past; + slot.i_batch = batch.n_tokens; - // TODO: we always have to take into account the "system_tokens" - // this is not great and needs to be improved somehow - llama_batch_add(batch, slot.sampled, system_tokens.size() + slot_npast, {slot.id + 1}, true); + common_batch_add(batch, slot.sampled, slot.n_past, { slot.id }, true); slot.n_past += 1; - if (slot.params.cache_prompt) - { + if (slot.params.cache_prompt) { slot.cache_tokens.push_back(slot.sampled); } - LOG_VERBOSE("slot decode token", {{"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_ctx", n_ctx}, - {"n_past", slot.n_past}, - {"n_system_tokens", system_tokens.size()}, - {"n_cache_tokens", slot.cache_tokens.size()}, - {"truncated", slot.truncated}}); + SLT_DBG(slot, "slot decode token, n_ctx = %d, n_past = %d, n_cache_tokens = %d, truncated = %d\n", + slot.n_ctx, slot.n_past, (int) slot.cache_tokens.size(), slot.truncated); } // process in chunks of params.n_batch - int32_t n_batch = llama_n_batch(ctx); + int32_t n_batch = llama_n_batch(ctx); int32_t n_ubatch = llama_n_ubatch(ctx); - // track if this is an embedding or non-embedding batch - // if we've added sampled tokens above, we are in non-embedding mode - // -1: none, 0: non-embedding, 1: embedding - int32_t batch_type = batch.n_tokens > 0 ? 0 : -1; - // next, batch any pending prompts without exceeding n_batch - if (params.cont_batching || batch.n_tokens == 0) - { - for (auto &slot : slots) - { - // this slot still has a prompt to be processed - if (slot.state == SLOT_STATE_IDLE && slot.command == SLOT_COMMAND_LOAD_PROMPT) - { - auto &prompt_tokens = slot.prompt_tokens; + if (params_base.cont_batching || batch.n_tokens == 0) { + for (auto & slot : slots) { + // check if we can batch this slot with the previous one + if (slot.is_processing()) { + if (!slot_batched) { + slot_batched = &slot; + } else if (!slot_batched->can_batch_with(slot)) { + continue; + } + } - // we haven't tokenized the prompt yet - do it now: - if (prompt_tokens.empty()) - { - LOG_VERBOSE("tokenizing prompt", {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + // this slot still has a prompt to be processed + if (slot.state == SLOT_STATE_PROCESSING_PROMPT || slot.state == SLOT_STATE_STARTED) { + auto & prompt_tokens = slot.prompt_tokens; + // TODO: maybe move branch to outside of this loop in the future + if (slot.state == SLOT_STATE_STARTED) { slot.t_start_process_prompt = ggml_time_us(); slot.t_start_generation = 0; - if (slot.infill) - { - const bool add_bos = llama_should_add_bos_token(model); - bool suff_rm_leading_spc = true; - if (params.input_suffix.find_first_of(' ') == 0 && params.input_suffix.size() > 1) - { - params.input_suffix.erase(0, 1); - suff_rm_leading_spc = false; - } - - auto prefix_tokens = tokenize(slot.params.input_prefix, false); - auto suffix_tokens = tokenize(slot.params.input_suffix, false); - - const int space_token = 29871; // TODO: this should not be hardcoded - if (suff_rm_leading_spc && !suffix_tokens.empty() && suffix_tokens[0] == space_token) - { - suffix_tokens.erase(suffix_tokens.begin()); - } + slot.n_past = 0; + slot.n_prompt_tokens = prompt_tokens.size(); + slot.state = SLOT_STATE_PROCESSING_PROMPT; - prefix_tokens.insert(prefix_tokens.begin(), llama_token_prefix(model)); - suffix_tokens.insert(suffix_tokens.begin(), llama_token_suffix(model)); + SLT_INF(slot, "new prompt, n_ctx_slot = %d, n_keep = %d, n_prompt_tokens = %d\n", slot.n_ctx, slot.params.n_keep, slot.n_prompt_tokens); - auto embd_inp = params.spm_infill ? suffix_tokens : prefix_tokens; - auto embd_end = params.spm_infill ? prefix_tokens : suffix_tokens; - if (add_bos) - { - embd_inp.insert(embd_inp.begin(), llama_token_bos(model)); + // print prompt tokens (for debugging) + if (1) { + // first 16 tokens (avoid flooding logs) + for (int i = 0; i < std::min(16, prompt_tokens.size()); i++) { + SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); } - embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); - - const llama_token middle_token = llama_token_middle(model); - if (middle_token >= 0) - { - embd_inp.push_back(middle_token); + } else { + // all + for (int i = 0; i < (int) prompt_tokens.size(); i++) { + SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); } - - prompt_tokens = embd_inp; } - else - { - prompt_tokens = - tokenize(slot.prompt, system_prompt.empty()); // add BOS if there isn't system prompt - } - - slot.n_past = 0; - slot.n_prompt_tokens = prompt_tokens.size(); - - LOG_VERBOSE("prompt tokenized", { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_ctx", slot.n_ctx}, - {"n_keep", slot.params.n_keep}, - {"n_prompt_tokens", slot.n_prompt_tokens}, - {"prompt_tokens", tokens_to_str(ctx, prompt_tokens.cbegin(), - prompt_tokens.cend())}, - }); // empty prompt passed -> release the slot and send empty response - if (prompt_tokens.empty()) - { - LOG_INFO("empty prompt - releasing slot", - {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + if (prompt_tokens.empty()) { + SLT_WRN(slot, "%s", "empty prompt - releasing slot\n"); - slot.state = SLOT_STATE_PROCESSING; - slot.command = SLOT_COMMAND_NONE; slot.release(); slot.print_timings(); send_final_response(slot); continue; } - if (slot.embedding) - { - // this prompt is too large to process - discard it - if (slot.n_prompt_tokens > n_ubatch) - { - slot.state = SLOT_STATE_PROCESSING; - slot.command = SLOT_COMMAND_NONE; + if (slot.is_non_causal()) { + if (slot.n_prompt_tokens > n_ubatch) { slot.release(); - send_error(slot, "input is too large to process. increase the physical batch size", - ERROR_TYPE_SERVER); + send_error(slot, "input is too large to process. increase the physical batch size", ERROR_TYPE_SERVER); continue; } - } - else - { - if (slot.params.n_keep < 0) - { + + if (slot.n_prompt_tokens > slot.n_ctx) { + slot.release(); + send_error(slot, "input is larger than the max context size. skipping", ERROR_TYPE_SERVER); + continue; + } + } else { + if (!params_base.ctx_shift) { + // if context shift is disabled, we make sure prompt size is smaller than KV size + // TODO: there should be a separate parameter that control prompt truncation + // context shift should be applied only during the generation phase + if (slot.n_prompt_tokens >= slot.n_ctx) { + slot.release(); + send_error(slot, "the request exceeds the available context size. try increasing the context size or enable context shift", ERROR_TYPE_INVALID_REQUEST); + continue; + } + } + if (slot.params.n_keep < 0) { slot.params.n_keep = slot.n_prompt_tokens; } slot.params.n_keep = std::min(slot.n_ctx - 4, slot.params.n_keep); - // if input prompt is too big, truncate it (if group attention self-extend is disabled) - if (slot.ga_n == 1 && slot.n_prompt_tokens >= slot.n_ctx) - { + // if input prompt is too big, truncate it + if (slot.n_prompt_tokens >= slot.n_ctx) { const int n_left = slot.n_ctx - slot.params.n_keep; const int n_block_size = n_left / 2; - const int erased_blocks = - (slot.n_prompt_tokens - slot.params.n_keep - n_block_size) / n_block_size; + const int erased_blocks = (slot.n_prompt_tokens - slot.params.n_keep - n_block_size) / n_block_size; - std::vector new_tokens(prompt_tokens.begin(), - prompt_tokens.begin() + slot.params.n_keep); + llama_tokens new_tokens( + prompt_tokens.begin(), + prompt_tokens.begin() + slot.params.n_keep); - new_tokens.insert(new_tokens.end(), - prompt_tokens.begin() + slot.params.n_keep + - erased_blocks * n_block_size, - prompt_tokens.end()); + new_tokens.insert( + new_tokens.end(), + prompt_tokens.begin() + slot.params.n_keep + erased_blocks * n_block_size, + prompt_tokens.end()); prompt_tokens = std::move(new_tokens); slot.truncated = true; slot.n_prompt_tokens = prompt_tokens.size(); - LOG_VERBOSE("input truncated", - { - {"id_slot", slot.id}, - {"id_task", slot.id_task}, - {"n_ctx", slot.n_ctx}, - {"n_keep", slot.params.n_keep}, - {"n_left", n_left}, - {"n_prompt_tokens", slot.n_prompt_tokens}, - {"prompt_tokens", - tokens_to_str(ctx, prompt_tokens.cbegin(), prompt_tokens.cend())}, - }); + SLT_WRN(slot, "input truncated, n_ctx = %d, n_keep = %d, n_left = %d, n_prompt_tokens = %d\n", slot.n_ctx, slot.params.n_keep, n_left, slot.n_prompt_tokens); GGML_ASSERT(slot.n_prompt_tokens < slot.n_ctx); } - llama_sampling_reset(slot.ctx_sampling); + if (slot.params.cache_prompt) { + // reuse any previously computed tokens that are common with the new prompt + slot.n_past = common_lcp(slot.cache_tokens, prompt_tokens); - if (!slot.params.cache_prompt) - { - slot.n_past_se = 0; - slot.ga_i = 0; - } - else - { - GGML_ASSERT(slot.ga_n == 1); + // reuse chunks from the cached prompt by shifting their KV cache in the new position + if (params_base.n_cache_reuse > 0) { + size_t head_c = slot.n_past; // cache + size_t head_p = slot.n_past; // current prompt - // reuse any previously computed tokens that are common with the new prompt - slot.n_past = common_part(slot.cache_tokens, prompt_tokens); + SLT_DBG(slot, "trying to reuse chunks with size > %d, slot.n_past = %d\n", params_base.n_cache_reuse, slot.n_past); + + while (head_c < slot.cache_tokens.size() && + head_p < prompt_tokens.size()) { - // push the prompt into the sampling context (do not apply grammar) - for (int i = 0; i < slot.n_past; ++i) - { - llama_sampling_accept(slot.ctx_sampling, ctx, slot.cache_tokens[i], false); + size_t n_match = 0; + while (head_c + n_match < slot.cache_tokens.size() && + head_p + n_match < prompt_tokens.size() && + slot.cache_tokens[head_c + n_match] == prompt_tokens[head_p + n_match]) { + + n_match++; + } + + if (n_match >= (size_t) params_base.n_cache_reuse) { + SLT_INF(slot, "reusing chunk with size %zu, shifting KV cache [%zu, %zu) -> [%zu, %zu)\n", n_match, head_c, head_c + n_match, head_p, head_p + n_match); + //for (size_t i = head_p; i < head_p + n_match; i++) { + // SLT_DBG(slot, "cache token %3zu: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); + //} + + const int64_t kv_shift = (int64_t) head_p - (int64_t) head_c; + + llama_kv_cache_seq_rm (ctx, slot.id, head_p, head_c); + llama_kv_cache_seq_add(ctx, slot.id, head_c, -1, kv_shift); + + for (size_t i = 0; i < n_match; i++) { + slot.cache_tokens[head_p + i] = slot.cache_tokens[head_c + i]; + slot.n_past++; + } + + head_c += n_match; + head_p += n_match; + } else { + head_c += 1; + } + } + + SLT_DBG(slot, "after context reuse, new slot.n_past = %d\n", slot.n_past); } } } - if (slot.n_past == slot.n_prompt_tokens && slot.n_past > 0) - { + if (slot.n_past == slot.n_prompt_tokens && slot.n_past > 0) { // we have to evaluate at least 1 token to generate logits. - LOG_INFO("we have to evaluate at least 1 token to generate logits", - {{"id_slot", slot.id}, {"id_task", slot.id_task}}); + SLT_WRN(slot, "need to evaluate at least 1 token to generate logits, n_past = %d, n_prompt_tokens = %d\n", slot.n_past, slot.n_prompt_tokens); slot.n_past--; - if (slot.ga_i > 0) - { - slot.n_past_se--; - } } slot.n_prompt_tokens_processed = 0; } - if (slot.embedding) - { + // non-causal tasks require to fit the entire prompt in the physical batch + if (slot.is_non_causal()) { // cannot fit the prompt in the current batch - will try next iter - if (batch.n_tokens + slot.n_prompt_tokens > n_batch) - { + if (batch.n_tokens + slot.n_prompt_tokens > n_batch) { continue; } } - // check that we are in the right batch_type, if not defer the slot - bool slot_type = slot.embedding ? 1 : 0; - if (batch_type == -1) - { - batch_type = slot_type; - } - else if (batch_type != slot_type) - { - continue; - } - // keep only the common part - int p0 = (int)system_tokens.size() + slot.n_past; - if (!llama_kv_cache_seq_rm(ctx, slot.id + 1, p0, -1)) - { + if (!llama_kv_cache_seq_rm(ctx, slot.id, slot.n_past, -1)) { // could not partially delete (likely using a non-Transformer model) - llama_kv_cache_seq_rm(ctx, slot.id + 1, -1, -1); + llama_kv_cache_seq_rm(ctx, slot.id, -1, -1); - p0 = (int)system_tokens.size(); - if (p0 != 0) - { - // copy over the system prompt when there is one - llama_kv_cache_seq_cp(ctx, 0, slot.id + 1, -1, -1); - } - - // there is no common part left (except for the system prompt) + // there is no common part left slot.n_past = 0; - slot.n_past_se = 0; - slot.ga_i = 0; - // TODO: is the system prompt ever in the sampling context? - llama_sampling_reset(slot.ctx_sampling); } + SLT_INF(slot, "kv cache rm [%d, end)\n", slot.n_past); + // remove the non-common part from the cache slot.cache_tokens.resize(slot.n_past); - LOG_INFO("kv cache rm [p0, end)", {{"id_slot", slot.id}, {"id_task", slot.id_task}, {"p0", p0}}); - - int32_t slot_npast = slot.n_past_se > 0 ? slot.n_past_se : slot.n_past; - - int32_t ga_i = slot.ga_i; - int32_t ga_n = slot.ga_n; - int32_t ga_w = slot.ga_w; - // add prompt tokens for processing in the current batch - // TODO: the self-extend stuff here is a mess - simplify and/or abstract it somehow - for (; slot.n_past < slot.n_prompt_tokens && batch.n_tokens < n_batch; ++slot.n_past) - { - if (slot.ga_n != 1) - { - while (slot_npast >= ga_i + ga_w) - { - const int bd = (ga_w / ga_n) * (ga_n - 1); - slot_npast -= bd; - ga_i += ga_w / ga_n; - } - } + while (slot.n_past < slot.n_prompt_tokens && batch.n_tokens < n_batch) { + // without pooling, we want to output the embeddings for all the tokens in the batch + const bool need_embd = slot.task_type == SERVER_TASK_TYPE_EMBEDDING && llama_pooling_type(slot.ctx) == LLAMA_POOLING_TYPE_NONE; - llama_batch_add(batch, prompt_tokens[slot.n_past], system_tokens.size() + slot_npast, - {slot.id + 1}, false); + common_batch_add(batch, prompt_tokens[slot.n_past], slot.n_past, { slot.id }, need_embd); - if (slot.params.cache_prompt) - { + if (slot.params.cache_prompt) { slot.cache_tokens.push_back(prompt_tokens[slot.n_past]); } slot.n_prompt_tokens_processed++; - slot_npast++; + slot.n_past++; } - LOG_VERBOSE("prompt processing progress", - { - {"id_slot", slot.id}, - {"n_past", slot.n_past}, - {"n_ctx", n_ctx}, - {"n_tokens", batch.n_tokens}, - {"progress", (float)slot.n_prompt_tokens_processed / slot.n_prompt_tokens}, - }); - - // entire prompt has been processed - start decoding new tokens - if (slot.n_past == slot.n_prompt_tokens) - { - slot.state = SLOT_STATE_PROCESSING; - slot.command = SLOT_COMMAND_NONE; + SLT_INF(slot, "prompt processing progress, n_past = %d, n_tokens = %d, progress = %f\n", slot.n_past, batch.n_tokens, (float) slot.n_prompt_tokens_processed / slot.n_prompt_tokens); + + // entire prompt has been processed + if (slot.n_past == slot.n_prompt_tokens) { + slot.state = SLOT_STATE_DONE_PROMPT; GGML_ASSERT(batch.n_tokens > 0); + common_sampler_reset(slot.smpl); + + // Process all prompt tokens through sampler system + for (int i = 0; i < slot.n_prompt_tokens; ++i) { + common_sampler_accept(slot.smpl, prompt_tokens[i], false); + } + // extract the logits only for the last token batch.logits[batch.n_tokens - 1] = true; slot.n_decoded = 0; - slot.i_batch = batch.n_tokens - 1; - - LOG_VERBOSE("prompt done", { - {"id_slot", slot.id}, - {"n_past", slot.n_past}, - {"n_ctx", n_ctx}, - {"n_tokens", batch.n_tokens}, - }); + slot.i_batch = batch.n_tokens - 1; + + SLT_INF(slot, "prompt done, n_past = %d, n_tokens = %d\n", slot.n_past, batch.n_tokens); } } - if (batch.n_tokens >= n_batch) - { + if (batch.n_tokens >= n_batch) { break; } } } - if (batch.n_tokens == 0) - { - LOG_VERBOSE("no tokens to decode", {}); + if (batch.n_tokens == 0) { + SRV_WRN("%s", "no tokens to decode\n"); return; } - LOG_VERBOSE("decoding batch", { - {"n_tokens", batch.n_tokens}, - }); + SRV_DBG("decoding batch, n_tokens = %d\n", batch.n_tokens); - // make sure we're in the right embedding mode - llama_set_embeddings(ctx, batch_type == 1); + if (slot_batched) { + // make sure we're in the right embedding mode + llama_set_embeddings(ctx, slot_batched->is_non_causal()); + // apply lora, only need to do it once per batch + common_set_adapter_lora(ctx, slot_batched->lora); + } // process the created batch of tokens - for (int32_t i = 0; i < batch.n_tokens; i += n_batch) - { + for (int32_t i = 0; i < batch.n_tokens; i += n_batch) { const int32_t n_tokens = std::min(n_batch, batch.n_tokens - i); - for (auto &slot : slots) - { - if (slot.ga_n != 1) - { - // context extension via Self-Extend - // TODO: simplify and/or abstract this - while (slot.n_past_se >= slot.ga_i + slot.ga_w) - { - const int ib = (slot.ga_n * slot.ga_i) / slot.ga_w; - const int bd = (slot.ga_w / slot.ga_n) * (slot.ga_n - 1); - const int dd = (slot.ga_w / slot.ga_n) - ib * bd - slot.ga_w; - - LOG_TEE("\n"); - LOG_TEE("shift: [%6d, %6d] + %6d -> [%6d, %6d]\n", slot.ga_i, slot.n_past_se, ib * bd, - slot.ga_i + ib * bd, slot.n_past_se + ib * bd); - LOG_TEE("div: [%6d, %6d] / %6d -> [%6d, %6d]\n", slot.ga_i + ib * bd, - slot.ga_i + ib * bd + slot.ga_w, slot.ga_n, (slot.ga_i + ib * bd) / slot.ga_n, - (slot.ga_i + ib * bd + slot.ga_w) / slot.ga_n); - LOG_TEE("shift: [%6d, %6d] + %6d -> [%6d, %6d]\n", slot.ga_i + ib * bd + slot.ga_w, - slot.n_past_se + ib * bd, dd, slot.ga_i + ib * bd + slot.ga_w + dd, - slot.n_past_se + ib * bd + dd); - - llama_kv_cache_seq_add(ctx, slot.id + 1, slot.ga_i, slot.n_past_se, ib * bd); - llama_kv_cache_seq_div(ctx, slot.id + 1, slot.ga_i + ib * bd, slot.ga_i + ib * bd + slot.ga_w, - slot.ga_n); - llama_kv_cache_seq_add(ctx, slot.id + 1, slot.ga_i + ib * bd + slot.ga_w, - slot.n_past_se + ib * bd, dd); - - slot.n_past_se -= bd; - - slot.ga_i += slot.ga_w / slot.ga_n; - - LOG_TEE("\nn_past_old = %d, n_past = %d, ga_i = %d\n\n", slot.n_past_se + bd, slot.n_past_se, - slot.ga_i); - } - - slot.n_past_se += n_tokens; - } - } - llama_batch batch_view = { n_tokens, - batch.token + i, + batch.token + i, nullptr, - batch.pos + i, + batch.pos + i, batch.n_seq_id + i, - batch.seq_id + i, - batch.logits + i, - 0, - 0, - 0, // unused + batch.seq_id + i, + batch.logits + i, }; const int ret = llama_decode(ctx, batch_view); + metrics.on_decoded(slots); - if (ret != 0) - { - if (n_batch == 1 || ret < 0) - { + if (ret != 0) { + if (n_batch == 1 || ret < 0) { // if you get here, it means the KV cache is full - try increasing it via the context size - LOG_ERROR("failed to decode the batch: KV cache is full - try increasing it via the context size", - { - {"i", i}, - {"n_batch", ret}, - {"ret", ret}, - }); - for (auto &slot : slots) - { - slot.state = SLOT_STATE_PROCESSING; - slot.command = SLOT_COMMAND_NONE; + SRV_ERR("failed to decode the batch: KV cache is full - try increasing it via the context size, i = %d, n_batch = %d, ret = %d\n", i, n_batch, ret); + for (auto & slot : slots) { slot.release(); send_error(slot, "Input prompt is too big compared to KV size. Please try increasing KV size."); } @@ -2584,127 +3166,245 @@ struct server_context n_batch /= 2; i -= n_batch; - LOG_WARNING("failed to find free space in the KV cache, retrying with smaller batch size - try " - "increasing it via the context size or enable defragmentation", - { - {"i", i}, - {"n_batch", n_batch}, - {"ret", ret}, - }); + SRV_WRN("failed to find free space in the KV cache, retrying with smaller batch size - try increasing it via the context size or enable defragmentation, i = %d, n_batch = %d, ret = %d\n", i, n_batch, ret); continue; // continue loop of n_batch } - for (auto &slot : slots) - { - if (slot.state != SLOT_STATE_PROCESSING || slot.i_batch < (int)i || slot.i_batch >= (int)(i + n_tokens)) - { + for (auto & slot : slots) { + if (slot.i_batch < (int) i || slot.i_batch >= (int) (i + n_tokens)) { continue; // continue loop of slots } - // prompt evaluated for embedding - if (slot.embedding) - { - send_embedding(slot, batch_view); - slot.release(); - slot.i_batch = -1; + if (slot.state == SLOT_STATE_DONE_PROMPT) { + if (slot.task_type == SERVER_TASK_TYPE_EMBEDDING) { + // prompt evaluated for embedding + send_embedding(slot, batch_view); + slot.release(); + slot.i_batch = -1; + continue; // continue loop of slots + } + + if (slot.task_type == SERVER_TASK_TYPE_RERANK) { + send_rerank(slot, batch_view); + slot.release(); + slot.i_batch = -1; + continue; // continue loop of slots + } + + // prompt evaluated for next-token prediction + slot.state = SLOT_STATE_GENERATING; + } else if (slot.state != SLOT_STATE_GENERATING) { continue; // continue loop of slots } - completion_token_output result; - const llama_token id = llama_sampling_sample(slot.ctx_sampling, ctx, NULL, slot.i_batch - i); + const int tok_idx = slot.i_batch - i; + + llama_token id = common_sampler_sample(slot.smpl, ctx, tok_idx); + + slot.i_batch = -1; - llama_sampling_accept(slot.ctx_sampling, ctx, id, true); + common_sampler_accept(slot.smpl, id, true); slot.n_decoded += 1; - if (slot.n_decoded == 1) - { - slot.t_start_generation = ggml_time_us(); + + const int64_t t_current = ggml_time_us(); + + if (slot.n_decoded == 1) { + slot.t_start_generation = t_current; slot.t_prompt_processing = (slot.t_start_generation - slot.t_start_process_prompt) / 1e3; metrics.on_prompt_eval(slot); } - llama_token_data_array cur_p = {slot.ctx_sampling->cur.data(), slot.ctx_sampling->cur.size(), false}; - result.tok = id; - - const size_t n_probs = std::min(cur_p.size, (size_t)slot.sparams.n_probs); - if (n_probs > 0) - { - const size_t n_valid = slot.ctx_sampling->n_valid; + slot.t_token_generation = (t_current - slot.t_start_generation) / 1e3; - // Make sure at least n_probs top tokens are at the front of the vector: - if (slot.sparams.temp == 0.0f && n_probs > n_valid) - { - llama_sample_top_k(ctx, &cur_p, n_probs, 0); - } + completion_token_output result; + result.tok = id; + result.text_to_send = common_token_to_piece(ctx, result.tok, accept_special_token(slot, result.tok)); + result.prob = 1.0f; // TODO: set it here instead of doing inside populate_token_probs - if (slot.sparams.temp == 0.0f) - { - // With greedy sampling the probabilities have possibly not been calculated. - for (size_t i = 0; i < n_probs; ++i) - { - result.probs.push_back({cur_p.data[i].id, i == 0 ? 1.0f : 0.0f}); - } - } - else - { - for (size_t i = 0; i < n_probs; ++i) - { - result.probs.push_back({ - cur_p.data[i].id, - i >= n_valid - ? 0.0f - : cur_p.data[i].p // Tokens filtered out due to e.g. top_k have 0 probability. - }); - } - } + if (slot.params.sampling.n_probs > 0) { + populate_token_probs(slot, result, slot.params.post_sampling_probs, params_base.special, tok_idx); } - if (!process_token(result, slot)) - { + if (!process_token(result, slot)) { + // release slot because of stop condition slot.release(); slot.print_timings(); send_final_response(slot); metrics.on_prediction(slot); + continue; } + } - slot.i_batch = -1; + // do speculative decoding + for (auto & slot : slots) { + if (!slot.is_processing() || !slot.can_speculate()) { + continue; + } + + if (slot.state != SLOT_STATE_GENERATING) { + continue; + } + + // determine the max draft that fits the current slot state + int n_draft_max = slot.params.speculative.n_max; + + // note: n_past is not yet increased for the `id` token sampled above + // also, need to leave space for 1 extra token to allow context shifts + n_draft_max = std::min(n_draft_max, slot.n_ctx - slot.n_past - 2); + + if (slot.n_remaining > 0) { + n_draft_max = std::min(n_draft_max, slot.n_remaining - 1); + } + + SLT_DBG(slot, "max possible draft: %d\n", n_draft_max); + + if (n_draft_max < slot.params.speculative.n_min) { + SLT_DBG(slot, "the max possible draft is too small: %d < %d - skipping speculative decoding\n", n_draft_max, slot.params.speculative.n_min); + + continue; + } + + llama_token id = slot.sampled; + + struct common_speculative_params params_spec; + params_spec.n_draft = n_draft_max; + params_spec.n_reuse = llama_n_ctx(slot.ctx_dft) - slot.params.speculative.n_max; + params_spec.p_min = slot.params.speculative.p_min; + + llama_tokens draft = common_speculative_gen_draft(slot.spec, params_spec, slot.cache_tokens, id); + + // ignore small drafts + if (slot.params.speculative.n_min > (int) draft.size()) { + SLT_DBG(slot, "ignoring small draft: %d < %d\n", (int) draft.size(), slot.params.speculative.n_min); + + continue; + } + + // construct the speculation batch + common_batch_clear(slot.batch_spec); + common_batch_add (slot.batch_spec, id, slot.n_past, { slot.id }, true); + + for (size_t i = 0; i < draft.size(); ++i) { + common_batch_add(slot.batch_spec, draft[i], slot.n_past + 1 + i, { slot.id }, true); + } + + SLT_DBG(slot, "decoding speculative batch, size = %d\n", slot.batch_spec.n_tokens); + + llama_decode(ctx, slot.batch_spec); + + // the accepted tokens from the speculation + const auto ids = common_sampler_sample_and_accept_n(slot.smpl, ctx, draft); + + slot.n_past += ids.size(); + slot.n_decoded += ids.size(); + + slot.cache_tokens.push_back(id); + slot.cache_tokens.insert(slot.cache_tokens.end(), ids.begin(), ids.end() - 1); + + llama_kv_cache_seq_rm(ctx, slot.id, slot.n_past, -1); + + for (size_t i = 0; i < ids.size(); ++i) { + completion_token_output result; + + result.tok = ids[i]; + result.text_to_send = common_token_to_piece(ctx, result.tok, accept_special_token(slot, result.tok)); + result.prob = 1.0f; // set later + + // TODO: set result.probs + + if (!process_token(result, slot)) { + // release slot because of stop condition + slot.release(); + slot.print_timings(); + send_final_response(slot); + metrics.on_prediction(slot); + break; + } + } + + SLT_DBG(slot, "accepted %d/%d draft tokens, new n_past = %d\n", (int) ids.size() - 1, (int) draft.size(), slot.n_past); } } - LOG_VERBOSE("run slots completed", {}); + SRV_DBG("%s", "run slots completed\n"); } - json model_meta() const - { - return json{ - {"vocab_type", llama_vocab_type(model)}, {"n_vocab", llama_n_vocab(model)}, - {"n_ctx_train", llama_n_ctx_train(model)}, {"n_embd", llama_n_embd(model)}, - {"n_params", llama_model_n_params(model)}, {"size", llama_model_size(model)}, + json model_meta() const { + return json { + {"vocab_type", llama_vocab_type (vocab)}, + {"n_vocab", llama_vocab_n_tokens (vocab)}, + {"n_ctx_train", llama_model_n_ctx_train(model)}, + {"n_embd", llama_model_n_embd (model)}, + {"n_params", llama_model_n_params (model)}, + {"size", llama_model_size (model)}, }; } }; +static void common_params_handle_model_default( + std::string & model, + const std::string & model_url, + std::string & hf_repo, + std::string & hf_file, + const std::string & hf_token) { + if (!hf_repo.empty()) { + // short-hand to avoid specifying --hf-file -> default it to --model + if (hf_file.empty()) { + if (model.empty()) { + auto auto_detected = common_get_hf_file(hf_repo, hf_token); + if (auto_detected.first.empty() || auto_detected.second.empty()) { + exit(1); // built without CURL, error message already printed + } + hf_repo = auto_detected.first; + hf_file = auto_detected.second; + } else { + hf_file = model; + } + } + // make sure model path is present (for caching purposes) + if (model.empty()) { + // this is to avoid different repo having same file name, or same file name in different subdirs + std::string filename = hf_repo + "_" + hf_file; + // to make sure we don't have any slashes in the filename + string_replace_all(filename, "/", "_"); + model = fs_get_cache_file(filename); + } + } else if (!model_url.empty()) { + if (model.empty()) { + auto f = string_split(model_url, '#').front(); + f = string_split(f, '?').front(); + model = fs_get_cache_file(string_split(f, '/').back()); + } + } else if (model.empty()) { + model = DEFAULT_MODEL_PATH; + } +} + // parse the given jparams (see de.kherud.llama.args.ModelParameters#toString()) from JSON to the required C++ struct. -static void server_params_parse(json jparams, gpt_params ¶ms) +static void server_params_parse(json jparams, common_params ¶ms) { - gpt_params default_params; + common_params default_params; - params.seed = json_value(jparams, "seed", default_params.seed); - params.n_threads = json_value(jparams, "n_threads", default_params.n_threads); - params.n_threads_draft = json_value(jparams, "n_threads_draft", default_params.n_threads_draft); - params.n_threads_batch = json_value(jparams, "n_threads_batch", default_params.n_threads_batch); - params.n_threads_batch_draft = json_value(jparams, "n_threads_batch_draft", default_params.n_threads_batch_draft); + params.sampling.seed = json_value(jparams, "seed", default_params.sampling.seed); + params.cpuparams.n_threads = json_value(jparams, "n_threads", default_params.cpuparams.n_threads); + params.speculative.cpuparams.n_threads = json_value(jparams, "n_threads_draft", default_params.speculative.cpuparams.n_threads); + params.cpuparams_batch.n_threads = json_value(jparams, "n_threads_batch", default_params.cpuparams_batch.n_threads); + params.speculative.cpuparams_batch.n_threads = json_value(jparams, "n_threads_batch_draft", default_params.speculative.cpuparams_batch.n_threads ); params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); params.n_ubatch = json_value(jparams, "n_ubatch", default_params.n_ubatch); params.n_keep = json_value(jparams, "n_keep", default_params.n_keep); - params.n_draft = json_value(jparams, "n_draft", default_params.n_draft); + + params.speculative.n_max = json_value(jparams, "n_draft", default_params.speculative.n_max); + params.speculative.n_min = json_value(jparams, "n_draft_min", default_params.speculative.n_min); + params.n_chunks = json_value(jparams, "n_chunks", default_params.n_chunks); params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); - params.p_split = json_value(jparams, "p_split", default_params.p_split); + params.speculative.p_split = json_value(jparams, "p_split", default_params.speculative.p_split); params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); params.n_print = json_value(jparams, "n_print", default_params.n_print); @@ -2720,7 +3420,7 @@ static void server_params_parse(json jparams, gpt_params ¶ms) params.rope_scaling_type = json_value(jparams, "rope_scaling_type", default_params.rope_scaling_type); params.pooling_type = json_value(jparams, "pooling_type", default_params.pooling_type); params.model = json_value(jparams, "model", default_params.model); - params.model_draft = json_value(jparams, "model_draft", default_params.model_draft); + params.speculative.model = json_value(jparams, "model_draft", default_params.speculative.model); params.model_alias = json_value(jparams, "model_alias", default_params.model_alias); params.model_url = json_value(jparams, "model_url", default_params.model_url); params.hf_repo = json_value(jparams, "hf_repo", default_params.hf_repo); @@ -2734,17 +3434,16 @@ static void server_params_parse(json jparams, gpt_params ¶ms) params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); - params.lora_adapter = json_value(jparams, "lora_adapter", default_params.lora_adapter); + // params.lora_adapters = json_value(jparams, "lora_adapter", default_params.lora_adapters); params.embedding = json_value(jparams, "embedding", default_params.embedding); params.escape = json_value(jparams, "escape", default_params.escape); params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); params.flash_attn = json_value(jparams, "flash_attn", default_params.flash_attn); params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); - params.ignore_eos = json_value(jparams, "ignore_eos", default_params.ignore_eos); + params.sampling.ignore_eos = json_value(jparams, "ignore_eos", default_params.sampling.ignore_eos); params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - params.system_prompt = json_value(jparams, "system_prompt", default_params.system_prompt); params.chat_template = json_value(jparams, "chat_template", default_params.chat_template); if (jparams.contains("n_gpu_layers")) @@ -2752,13 +3451,13 @@ static void server_params_parse(json jparams, gpt_params ¶ms) if (llama_supports_gpu_offload()) { params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); - params.n_gpu_layers_draft = json_value(jparams, "n_gpu_layers_draft", default_params.n_gpu_layers_draft); + params.speculative.n_gpu_layers = json_value(jparams, "n_gpu_layers_draft", default_params.speculative.n_gpu_layers); } else { - LOG_WARNING("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support", - {{"n_gpu_layers", params.n_gpu_layers}}); + SRV_WRN("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " + "See main README.md for information on enabling GPU BLAS support: %s = %d", + "n_gpu_layers", params.n_gpu_layers); } } @@ -2789,7 +3488,7 @@ static void server_params_parse(json jparams, gpt_params ¶ms) } } #else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n", {}); + SRV_WRN("%s","llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n"); #endif // GGML_USE_CUDA } @@ -2798,9 +3497,9 @@ static void server_params_parse(json jparams, gpt_params ¶ms) #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); #else - LOG_WARNING("llama.cpp was compiled without CUDA. It is not possible to set a main GPU.", {}); + SRV_WRN("%s","llama.cpp was compiled without CUDA. It is not possible to set a main GPU."); #endif } - gpt_params_handle_model_default(params); + common_params_handle_model_default(params.model, params.model_url, params.hf_repo, params.hf_file, params.hf_token); } diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 7de7eac4..5ff886da 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -1,202 +1,389 @@ #pragma once #include "common.h" +#include "log.h" #include "llama.h" +#include "base64.hpp" + +#ifndef NDEBUG +// crash the server in debug mode, otherwise send an http 500 error +#define CPPHTTPLIB_NO_EXCEPTIONS 1 +#endif +// increase max payload length to allow use of larger context size +#define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576 +//#include "httplib.h" + +// Change JSON_ASSERT from assert() to GGML_ASSERT: +#define JSON_ASSERT GGML_ASSERT #include "json.hpp" +#include "chat.hpp" +#include "chat-template.hpp" + #include #include #include #include +#include -#define DEFAULT_OAICOMPAT_MODEL "gpt-3.5-turbo-0613" +#define DEFAULT_OAICOMPAT_MODEL "gpt-3.5-turbo" using json = nlohmann::ordered_json; -// https://community.openai.com/t/openai-chat-list-of-error-codes-and-types/357791/11 -enum error_type -{ - ERROR_TYPE_INVALID_REQUEST, - ERROR_TYPE_AUTHENTICATION, - ERROR_TYPE_SERVER, - ERROR_TYPE_NOT_FOUND, - ERROR_TYPE_PERMISSION, - ERROR_TYPE_UNAVAILABLE, // custom error - ERROR_TYPE_NOT_SUPPORTED, // custom error -}; - -extern bool log_json; -extern std::function log_callback; - -#if SERVER_VERBOSE -#define LOG_VERBOSE(MSG, ...) \ - do \ - { \ - server_log(GGML_LOG_LEVEL_DEBUG, __func__, __LINE__, MSG, __VA_ARGS__); \ - } while (0) -#else -#define LOG_VERBOSE(MSG, ...) -#endif +#define SLT_INF(slot, fmt, ...) LOG_INF("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_WRN(slot, fmt, ...) LOG_WRN("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_ERR(slot, fmt, ...) LOG_ERR("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_DBG(slot, fmt, ...) LOG_DBG("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) -#define LOG_ERROR(MSG, ...) server_log(GGML_LOG_LEVEL_ERROR, __func__, __LINE__, MSG, __VA_ARGS__) -#define LOG_WARNING(MSG, ...) server_log(GGML_LOG_LEVEL_WARN, __func__, __LINE__, MSG, __VA_ARGS__) -#define LOG_INFO(MSG, ...) server_log(GGML_LOG_LEVEL_INFO, __func__, __LINE__, MSG, __VA_ARGS__) +#define SRV_INF(fmt, ...) LOG_INF("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define SRV_WRN(fmt, ...) LOG_WRN("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define SRV_ERR(fmt, ...) LOG_ERR("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define SRV_DBG(fmt, ...) LOG_DBG("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) -static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, - const json &extra); +#define QUE_INF(fmt, ...) LOG_INF("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define QUE_WRN(fmt, ...) LOG_WRN("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define QUE_ERR(fmt, ...) LOG_ERR("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) +#define QUE_DBG(fmt, ...) LOG_DBG("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) -template static T json_value(const json &body, const std::string &key, const T &default_value) -{ +template +static T json_value(const json & body, const std::string & key, const T & default_value) { // Fallback null to default value - if (body.contains(key) && !body.at(key).is_null()) - { - try - { + if (body.contains(key) && !body.at(key).is_null()) { + try { return body.at(key); - } - catch (NLOHMANN_JSON_NAMESPACE::detail::type_error const &) - { - std::stringstream ss; - ss << "Wrong type supplied for parameter '" << key << "'. Expected '" << json(default_value).type_name() - << "', using default value."; - LOG_WARNING(ss.str().c_str(), body); + } catch (NLOHMANN_JSON_NAMESPACE::detail::type_error const &) { + LOG_WRN("Wrong type supplied for parameter '%s'. Expected '%s', using default value\n", key.c_str(), json(default_value).type_name()); return default_value; } - } - else - { + } else { return default_value; } } -static const char *log_level_to_string(ggml_log_level level) -{ - switch (level) - { - case GGML_LOG_LEVEL_ERROR: - return "ERROR"; - case GGML_LOG_LEVEL_WARN: - return "WARN"; - default: - case GGML_LOG_LEVEL_INFO: - return "INFO"; - case GGML_LOG_LEVEL_DEBUG: - return "DEBUG"; +const static std::string build_info("b" + std::to_string(LLAMA_BUILD_NUMBER) + "-" + LLAMA_COMMIT); + +// +// tokenizer and input processing utils +// + +static bool json_is_array_of_numbers(const json & data) { + if (data.is_array()) { + for (const auto & e : data) { + if (!e.is_number_integer()) { + return false; + } + } + return true; } + return false; } -static inline void server_log(ggml_log_level level, const char *function, int line, const char *message, - const json &extra) -{ - std::stringstream ss_tid; - ss_tid << std::this_thread::get_id(); - - if (log_json) - { - json log = json{ - {"msg", message}, -#if SERVER_VERBOSE - {"ts", time(nullptr)}, {"level", log_level_to_string(level)}, {"tid", ss_tid.str()}, {"function", function}, - {"line", line}, -#endif - }; - - if (!extra.empty()) - { - log.merge_patch(extra); +// is array having BOTH numbers & strings? +static bool json_is_array_of_mixed_numbers_strings(const json & data) { + bool seen_string = false; + bool seen_number = false; + if (data.is_array()) { + for (const auto & e : data) { + seen_string |= e.is_string(); + seen_number |= e.is_number_integer(); + if (seen_number && seen_string) { + return true; + } } + } + return false; +} - auto dump = log.dump(-1, ' ', false, json::error_handler_t::replace); - if (log_callback == nullptr) - { - printf("%s\n", dump.c_str()); +// get value by path(key1 / key2) +static json json_get_nested_values(const std::vector & paths, const json & js) { + json result = json::object(); + + for (const std::string & path : paths) { + json current = js; + const auto keys = string_split(path, /*separator*/ '/'); + bool valid_path = true; + for (const std::string & k : keys) { + if (valid_path && current.is_object() && current.contains(k)) { + current = current[k]; + } else { + valid_path = false; + } } - else - { - log_callback(level, dump.c_str(), nullptr); + if (valid_path) { + result[path] = current; } } - else - { - std::stringstream ss; - ss << message; - - if (!extra.empty()) - { - for (const auto &el : extra.items()) - { - const std::string value = el.value().dump(-1, ' ', false, json::error_handler_t::replace); - ss << " " << el.key() << "=" << value; + return result; +} + +/** + * this handles 2 cases: + * - only string, example: "string" + * - mixed string and tokens, example: [12, 34, "string", 56, 78] + */ +static llama_tokens tokenize_mixed(const llama_vocab * vocab, const json & json_prompt, bool add_special, bool parse_special) { + // If `add_bos` is true, we only add BOS, when json_prompt is a string, + // or the first element of the json_prompt array is a string. + llama_tokens prompt_tokens; + + if (json_prompt.is_array()) { + bool first = true; + for (const auto & p : json_prompt) { + if (p.is_string()) { + auto s = p.template get(); + + llama_tokens p; + if (first) { + p = common_tokenize(vocab, s, add_special, parse_special); + first = false; + } else { + p = common_tokenize(vocab, s, false, parse_special); + } + + prompt_tokens.insert(prompt_tokens.end(), p.begin(), p.end()); + } else { + if (first) { + first = false; + } + + prompt_tokens.push_back(p.template get()); } } + } else { + auto s = json_prompt.template get(); + prompt_tokens = common_tokenize(vocab, s, add_special, parse_special); + } -#if SERVER_VERBOSE - ss << " | ts " << time(nullptr) << " | tid " << ss_tid.str() << " | " << function << " line " << line; -#endif + return prompt_tokens; +} - const std::string str = ss.str(); - if (log_callback == nullptr) - { - printf("[%4s] %.*s\n", log_level_to_string(level), (int)str.size(), str.data()); +/** + * break the input "prompt" object into multiple prompt if needed, then tokenize them + * this supports these cases: + * - "prompt": "string" + * - "prompt": [12, 34, 56] + * - "prompt": [12, 34, "string", 56, 78] + * and multiple prompts (multi-tasks): + * - "prompt": ["string1", "string2"] + * - "prompt": ["string1", [12, 34, 56]] + * - "prompt": [[12, 34, 56], [78, 90, 12]] + * - "prompt": [[12, 34, "string", 56, 78], [12, 34, 56]] + */ +static std::vector tokenize_input_prompts(const llama_vocab * vocab, const json & json_prompt, bool add_special, bool parse_special) { + std::vector result; + if (json_prompt.is_string() || json_is_array_of_mixed_numbers_strings(json_prompt)) { + // string or mixed + result.push_back(tokenize_mixed(vocab, json_prompt, add_special, parse_special)); + } else if (json_is_array_of_numbers(json_prompt)) { + // array of tokens + result.push_back(json_prompt.get()); + } else if (json_prompt.is_array()) { + // array of prompts + result.reserve(json_prompt.size()); + for (const auto & p : json_prompt) { + if (p.is_string() || json_is_array_of_mixed_numbers_strings(p)) { + result.push_back(tokenize_mixed(vocab, p, add_special, parse_special)); + } else if (json_is_array_of_numbers(p)) { + // array of tokens + result.push_back(p.get()); + } else { + throw std::runtime_error("element of \"prompt\" must be a string, an list of tokens, or a list of mixed strings & tokens"); + } } - else - { - log_callback(level, str.c_str(), nullptr); + } else { + throw std::runtime_error("\"prompt\" must be a string, an list of tokens, a list of mixed strings & tokens, or a list of prompts"); + } + if (result.empty()) { + throw std::runtime_error("\"prompt\" must not be empty"); + } + return result; +} + +// return the last index of character that can form a valid string +// if the last character is potentially cut in half, return the index before the cut +// if validate_utf8(text) == text.size(), then the whole text is valid utf8 +static size_t validate_utf8(const std::string& text) { + size_t len = text.size(); + if (len == 0) return 0; + + // Check the last few bytes to see if a multi-byte character is cut off + for (size_t i = 1; i <= 4 && i <= len; ++i) { + unsigned char c = text[len - i]; + // Check for start of a multi-byte sequence from the end + if ((c & 0xE0) == 0xC0) { + // 2-byte character start: 110xxxxx + // Needs at least 2 bytes + if (i < 2) return len - i; + } else if ((c & 0xF0) == 0xE0) { + // 3-byte character start: 1110xxxx + // Needs at least 3 bytes + if (i < 3) return len - i; + } else if ((c & 0xF8) == 0xF0) { + // 4-byte character start: 11110xxx + // Needs at least 4 bytes + if (i < 4) return len - i; } } - fflush(stdout); + + // If no cut-off multi-byte character is found, return full length + return len; } // -// chat template utils +// template utils // -// Format given chat. If tmpl is empty, we take the template from model metadata -inline std::string format_chat(const struct llama_model *model, const std::string &tmpl, - const std::vector &messages) -{ - std::vector chat; +// format rerank task: [BOS]query[EOS][SEP]doc[EOS] +static llama_tokens format_rerank(const struct llama_vocab * vocab, const llama_tokens & query, const llama_tokens & doc) { + llama_tokens result; + + result.reserve(doc.size() + query.size() + 4); + result.push_back(llama_vocab_bos(vocab)); + result.insert(result.end(), query.begin(), query.end()); + result.push_back(llama_vocab_eos(vocab)); + result.push_back(llama_vocab_sep(vocab)); + result.insert(result.end(), doc.begin(), doc.end()); + result.push_back(llama_vocab_eos(vocab)); + + return result; +} + +// format infill task +static llama_tokens format_infill( + const llama_vocab * vocab, + const json & input_prefix, + const json & input_suffix, + const json & input_extra, + const int n_batch, + const int n_predict, + const int n_ctx, + const bool spm_infill, + const llama_tokens & tokens_prompt + ) { + // TODO: optimize this block by reducing memory allocations and movement + + // use FIM repo-level pattern: + // ref: https://arxiv.org/pdf/2409.12186 + // + // [FIM_REP]myproject + // [FIM_SEP]filename0 + // extra chunk 0 + // [FIM_SEP]filename1 + // extra chunk 1 + // ... + // [FIM_SEP]filename + // [FIM_PRE]prefix[FIM_SUF]suffix[FIM_MID]prompt + // + llama_tokens extra_tokens; + extra_tokens.reserve(n_ctx); + + auto tokens_prefix = tokenize_mixed(vocab, input_prefix, false, false); + auto tokens_suffix = tokenize_mixed(vocab, input_suffix, false, false); + + if (llama_vocab_fim_rep(vocab) != LLAMA_TOKEN_NULL) { + // TODO: make project name an input + static const auto k_fim_repo = common_tokenize(vocab, "myproject\n", false, false); + + extra_tokens.push_back(llama_vocab_fim_rep(vocab)); + extra_tokens.insert(extra_tokens.end(), k_fim_repo.begin(), k_fim_repo.end()); + } + for (const auto & chunk : input_extra) { + // { "text": string, "filename": string } + const std::string text = json_value(chunk, "text", std::string()); + const std::string filename = json_value(chunk, "filename", std::string("tmp")); + + if (llama_vocab_fim_sep(vocab) != LLAMA_TOKEN_NULL) { + const auto k_fim_file = common_tokenize(vocab, filename + "\n", false, false); + + extra_tokens.insert(extra_tokens.end(), llama_vocab_fim_sep(vocab)); + extra_tokens.insert(extra_tokens.end(), k_fim_file.begin(), k_fim_file.end()); + } else { + // chunk separator in binary form to avoid confusing the AI + static const char k_chunk_prefix_str[] = {0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x20, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x00}; + static const auto k_chunk_prefix_tokens = common_tokenize(vocab, k_chunk_prefix_str, false, false); + + extra_tokens.insert(extra_tokens.end(), k_chunk_prefix_tokens.begin(), k_chunk_prefix_tokens.end()); + } + + const auto chunk_tokens = common_tokenize(vocab, text, false, false); + extra_tokens.insert(extra_tokens.end(), chunk_tokens.begin(), chunk_tokens.end()); + } - for (size_t i = 0; i < messages.size(); ++i) - { - const auto &curr_msg = messages[i]; + if (llama_vocab_fim_sep(vocab) != LLAMA_TOKEN_NULL) { + // TODO: current filename + static const auto k_fim_file = common_tokenize(vocab, "filename\n", false, false); + + extra_tokens.insert(extra_tokens.end(), llama_vocab_fim_sep(vocab)); + extra_tokens.insert(extra_tokens.end(), k_fim_file.begin(), k_fim_file.end()); + } + + // for now pick FIM context to fit in a batch (ratio prefix:suffix = 3:1, TODO: configurable?) + const int n_prefix_take = std::min(tokens_prefix.size(), 3*(n_batch/4)); + const int n_suffix_take = std::min(tokens_suffix.size(), std::max(0, (n_batch/4) - (2 + tokens_prompt.size()))); + + SRV_DBG("n_prefix_take = %d, n_suffix_take = %d, total = %d\n", n_prefix_take, n_suffix_take, (n_prefix_take + n_suffix_take)); + + // fill the rest of the context with extra chunks + const int n_extra_take = std::min(std::max(0, n_ctx - (n_batch) - 2*n_predict), extra_tokens.size()); + + tokens_prefix.erase(tokens_prefix.begin(), tokens_prefix.begin() + tokens_prefix.size() - n_prefix_take); + tokens_suffix.resize(n_suffix_take); + + tokens_prefix.insert(tokens_prefix.begin(), llama_vocab_fim_pre(vocab)); + tokens_prefix.insert(tokens_prefix.end(), tokens_prompt.begin(), tokens_prompt.end()); + tokens_suffix.insert(tokens_suffix.begin(), llama_vocab_fim_suf(vocab)); + + auto embd_inp = spm_infill ? tokens_suffix : tokens_prefix; + auto embd_end = spm_infill ? tokens_prefix : tokens_suffix; + + if (llama_vocab_get_add_bos(vocab)) { + embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); + } + + SRV_DBG("extra: n_ctx = %d, n_extra_take = %d, n_extra = %d\n", n_ctx, n_extra_take, (int) extra_tokens.size()); + + // put the extra context before the FIM prefix + embd_inp.insert(embd_inp.begin(), extra_tokens.end() - n_extra_take, extra_tokens.end()); + + embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); + embd_inp.push_back(llama_vocab_fim_mid(vocab)); + + return embd_inp; +} + +/// Format given chat. If tmpl is empty, we take the template from model metadata +inline std::string format_chat(const common_chat_template & tmpl, const std::vector & messages) { + std::vector chat; + + for (size_t i = 0; i < messages.size(); ++i) { + const auto & curr_msg = messages[i]; std::string role = json_value(curr_msg, "role", std::string("")); std::string content; - if (curr_msg.contains("content")) - { - if (curr_msg["content"].is_string()) - { + if (curr_msg.contains("content")) { + if (curr_msg["content"].is_string()) { content = curr_msg["content"].get(); - } - else if (curr_msg["content"].is_array()) - { - for (const auto &part : curr_msg["content"]) - { - if (part.contains("text")) - { + } else if (curr_msg["content"].is_array()) { + for (const auto & part : curr_msg["content"]) { + if (part.contains("text")) { content += "\n" + part["text"].get(); } } + } else { + throw std::runtime_error("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); } - else - { - throw std::runtime_error( - "Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); - } - } - else - { + } else { throw std::runtime_error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); } - chat.push_back({role, content}); + chat.push_back({role, content, /* tool_calls= */ {}}); } - auto formatted_chat = llama_chat_apply_template(model, tmpl, chat, true); - LOG_VERBOSE("formatted_chat", {{"text", formatted_chat.c_str()}}); + const auto formatted_chat = common_chat_apply_template(tmpl, chat, true, /* use_jinja= */ false); + LOG_DBG("formatted_chat: '%s'\n", formatted_chat.c_str()); + return formatted_chat; } @@ -204,17 +391,16 @@ inline std::string format_chat(const struct llama_model *model, const std::strin // base64 utils (TODO: move to common in the future) // -static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; -static inline bool is_base64(uint8_t c) -{ +static inline bool is_base64(uint8_t c) { return (isalnum(c) || (c == '+') || (c == '/')); } -static inline std::vector base64_decode(const std::string &encoded_string) -{ +static inline std::vector base64_decode(const std::string & encoded_string) { int i = 0; int j = 0; int in_ = 0; @@ -226,23 +412,18 @@ static inline std::vector base64_decode(const std::string &encoded_stri std::vector ret; - while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) - { - char_array_4[i++] = encoded_string[in_]; - in_++; - if (i == 4) - { - for (i = 0; i < 4; i++) - { + while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i == 4) { + for (i = 0; i < 4; i++) { char_array_4[i] = base64_chars.find(char_array_4[i]); } - char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - for (i = 0; (i < 3); i++) - { + for (i = 0; (i < 3); i++) { ret.push_back(char_array_3[i]); } @@ -250,24 +431,20 @@ static inline std::vector base64_decode(const std::string &encoded_stri } } - if (i) - { - for (j = i; j < 4; j++) - { + if (i) { + for (j = i; j < 4; j++) { char_array_4[j] = 0; } - for (j = 0; j < 4; j++) - { + for (j = 0; j < 4; j++) { char_array_4[j] = base64_chars.find(char_array_4[j]); } - char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - for (j = 0; j < i - 1; j++) - { + for (j = 0; j < i - 1; j++) { ret.push_back(char_array_3[j]); } } @@ -279,8 +456,7 @@ static inline std::vector base64_decode(const std::string &encoded_stri // random string / id // -static std::string random_string() -{ +static std::string random_string() { static const std::string str("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); std::random_device rd; @@ -288,63 +464,32 @@ static std::string random_string() std::string result(32, ' '); - for (int i = 0; i < 32; ++i) - { + for (int i = 0; i < 32; ++i) { result[i] = str[generator() % str.size()]; } return result; } -static std::string gen_chatcmplid() -{ - std::stringstream chatcmplid; - chatcmplid << "chatcmpl-" << random_string(); - - return chatcmplid.str(); +static std::string gen_chatcmplid() { + return "chatcmpl-" + random_string(); } // // other common utils // -static size_t common_part(const std::vector &a, const std::vector &b) -{ - size_t i; - for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) - { - } - - return i; -} - -static size_t common_part(const std::string &a, const std::string &b) -{ - size_t i; - for (i = 0; i < a.size() && i < b.size() && a[i] == b[i]; i++) - { - } - - return i; -} - -static bool ends_with(const std::string &str, const std::string &suffix) -{ +static bool ends_with(const std::string & str, const std::string & suffix) { return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); } -static size_t find_partial_stop_string(const std::string &stop, const std::string &text) -{ - if (!text.empty() && !stop.empty()) - { +static size_t find_partial_stop_string(const std::string &stop, const std::string &text) { + if (!text.empty() && !stop.empty()) { const char text_last_char = text.back(); - for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) - { - if (stop[char_index] == text_last_char) - { + for (int64_t char_index = stop.size() - 1; char_index >= 0; char_index--) { + if (stop[char_index] == text_last_char) { const std::string current_partial = stop.substr(0, char_index + 1); - if (ends_with(text, current_partial)) - { + if (ends_with(text, current_partial)) { return text.size() - char_index - 1; } } @@ -355,26 +500,23 @@ static size_t find_partial_stop_string(const std::string &stop, const std::strin } // TODO: reuse llama_detokenize -template static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) -{ +template +static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { std::string ret; - for (; begin != end; ++begin) - { - ret += llama_token_to_piece(ctx, *begin); + for (; begin != end; ++begin) { + ret += common_token_to_piece(ctx, *begin); } return ret; } // format incomplete utf-8 multibyte character for output -static std::string tokens_to_output_formatted_string(const llama_context *ctx, const llama_token token) -{ - std::string out = token == -1 ? "" : llama_token_to_piece(ctx, token); +static std::string tokens_to_output_formatted_string(const llama_context * ctx, const llama_token token) { + std::string out = token == LLAMA_TOKEN_NULL ? "" : common_token_to_piece(ctx, token); // if the size is 1 and first bit is 1, meaning it's a partial character // (size > 1 meaning it's already a known token) - if (out.size() == 1 && (out[0] & 0x80) == 0x80) - { + if (out.size() == 1 && (out[0] & 0x80) == 0x80) { std::stringstream ss; ss << std::hex << (out[0] & 0xff); std::string res(ss.str()); @@ -384,126 +526,160 @@ static std::string tokens_to_output_formatted_string(const llama_context *ctx, c return out; } -struct completion_token_output -{ - llama_token tok; - std::string text_to_send; +// +// OAI utils +// - struct token_prob - { - llama_token tok; - float prob; - }; +static json oaicompat_completion_params_parse(const json & body) { + json llama_params; - std::vector probs; -}; + if (!body.contains("prompt")) { + throw std::runtime_error("\"prompt\" is required"); + } -// convert a vector of completion_token_output to json -static json probs_vector_to_json(const llama_context *ctx, const std::vector &probs) -{ - json out = json::array(); - - for (const auto &prob : probs) - { - json probs_for_token = json::array(); - - for (const auto &p : prob.probs) - { - const std::string tok_str = tokens_to_output_formatted_string(ctx, p.tok); - probs_for_token.push_back(json{ - {"tok_str", tok_str}, - {"prob", p.prob}, - }); + // Handle "stop" field + if (body.contains("stop") && body.at("stop").is_string()) { + llama_params["stop"] = json::array({body.at("stop").get()}); + } else { + llama_params["stop"] = json_value(body, "stop", json::array()); + } + + // Handle "n" field + int n_choices = json_value(body, "n", 1); + if (n_choices != 1) { + throw std::runtime_error("Only one completion choice is allowed"); + } + + // Params supported by OAI but unsupported by llama.cpp + static const std::vector unsupported_params { "best_of", "echo", "suffix" }; + for (const auto & param : unsupported_params) { + if (body.contains(param)) { + throw std::runtime_error("Unsupported param: " + param); } + } - const std::string tok_str = tokens_to_output_formatted_string(ctx, prob.tok); - out.push_back(json{ - {"content", tok_str}, - {"probs", probs_for_token}, - }); + // Copy remaining properties to llama_params + for (const auto & item : body.items()) { + // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" + if (!llama_params.contains(item.key()) || item.key() == "n_predict") { + llama_params[item.key()] = item.value(); + } } - return out; + return llama_params; } -// -// OAI utils -// - -static json oaicompat_completion_params_parse(const struct llama_model *model, - const json &body, /* openai api json semantics */ - const std::string &chat_template) +static json oaicompat_completion_params_parse( + const json & body, /* openai api json semantics */ + bool use_jinja, + const common_chat_templates & chat_templates) { json llama_params; + const auto & tmpl = body.contains("tools") && chat_templates.template_tool_use + ? *chat_templates.template_tool_use + : *chat_templates.template_default; - llama_params["__oaicompat"] = true; + auto tools = json_value(body, "tools", json()); + auto stream = json_value(body, "stream", false); - // Apply chat template to the list of messages - llama_params["prompt"] = format_chat(model, chat_template, body.at("messages")); + if (tools.is_array() && !tools.empty()) { + if (stream) { + throw std::runtime_error("Cannot use tools with stream"); + } + if (!use_jinja) { + throw std::runtime_error("tools param requires --jinja flag"); + } + } + if (!use_jinja) { + if (body.contains("tool_choice") && !body.at("tool_choice").is_null()) { + throw std::runtime_error("Unsupported param: tool_choice"); + } + } // Handle "stop" field - if (body.contains("stop") && body.at("stop").is_string()) - { + if (body.contains("stop") && body.at("stop").is_string()) { llama_params["stop"] = json::array({body.at("stop").get()}); - } - else - { + } else { llama_params["stop"] = json_value(body, "stop", json::array()); } // Handle "response_format" field - if (body.contains("response_format")) - { - json response_format = json_value(body, "response_format", json::object()); + if (body.contains("response_format")) { + json response_format = json_value(body, "response_format", json::object()); std::string response_type = json_value(response_format, "type", std::string()); - if (response_type == "json_object") - { + if (response_type == "json_object") { llama_params["json_schema"] = json_value(response_format, "schema", json::object()); + } else if (response_type == "json_schema") { + json json_schema = json_value(response_format, "json_schema", json::object()); + llama_params["json_schema"] = json_value(json_schema, "schema", json::object()); + } else if (!response_type.empty() && response_type != "text") { + throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); + } + } + + // Apply chat template to the list of messages + if (use_jinja) { + auto tool_choice = json_value(body, "tool_choice", std::string("auto")); + if (tool_choice != "none" && tool_choice != "auto" && tool_choice != "required") { + throw std::runtime_error("Invalid tool_choice: " + tool_choice); + } + if (tool_choice != "none" && llama_params.contains("grammar")) { + throw std::runtime_error("Cannot use custom grammar constraints with tools."); + } + common_chat_inputs inputs; + inputs.messages = body.at("messages"); + inputs.tools = tools; + inputs.tool_choice = tool_choice; + inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); + if (inputs.parallel_tool_calls && !tmpl.original_caps().supports_parallel_tool_calls) { + LOG_DBG("Disabling parallel_tool_calls because the template does not support it\n"); + inputs.parallel_tool_calls = false; } - else if (!response_type.empty() && response_type != "text") - { - throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + - response_type); + inputs.stream = stream; + // TODO: support mixing schema w/ tools beyond generic format. + inputs.json_schema = json_value(llama_params, "json_schema", json()); + auto chat_params = common_chat_params_init(tmpl, inputs); + + llama_params["chat_format"] = static_cast(chat_params.format); + llama_params["prompt"] = chat_params.prompt; + llama_params["grammar"] = chat_params.grammar; + llama_params["grammar_lazy"] = chat_params.grammar_lazy; + auto grammar_triggers = json::array(); + for (const auto & trigger : chat_params.grammar_triggers) { + grammar_triggers.push_back({ + {"word", trigger.word}, + {"at_start", trigger.at_start}, + }); + } + llama_params["grammar_triggers"] = grammar_triggers; + llama_params["preserved_tokens"] = chat_params.preserved_tokens; + for (const auto & stop : chat_params.additional_stops) { + llama_params["stop"].push_back(stop); } + } else { + llama_params["prompt"] = format_chat(tmpl, body.at("messages")); } // Handle "n" field int n_choices = json_value(body, "n", 1); - if (n_choices != 1) - { + if (n_choices != 1) { throw std::runtime_error("Only one completion choice is allowed"); } // Handle "logprobs" field - // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may - // need to fix it in the future - if (body.contains("logprobs")) - { + // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may need to fix it in the future + if (json_value(body, "logprobs", false)) { llama_params["n_probs"] = json_value(body, "top_logprobs", 20); - } - else if (body.contains("top_logprobs")) - { + } else if (body.contains("top_logprobs") && !body.at("top_logprobs").is_null()) { throw std::runtime_error("top_logprobs requires logprobs to be set to true"); } - // Params supported by OAI but unsupported by llama.cpp - static const std::vector unsupported_params{"tools", "tool_choice"}; - for (auto ¶m : unsupported_params) - { - if (body.contains(param)) - { - throw std::runtime_error("Unsupported param: " + param); - } - } - // Copy remaining properties to llama_params - // This allows user to use llama.cpp-specific params like "mirostat", "tfs_z",... via OAI endpoint. + // This allows user to use llama.cpp-specific params like "mirostat", ... via OAI endpoint. // See "launch_slot_with_task()" for a complete list of params supported by llama.cpp - for (const auto &item : body.items()) - { + for (const auto & item : body.items()) { // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" - if (!llama_params.contains(item.key()) || item.key() == "n_predict") - { + if (!llama_params.contains(item.key()) || item.key() == "n_predict") { llama_params[item.key()] = item.value(); } } @@ -511,219 +687,205 @@ static json oaicompat_completion_params_parse(const struct llama_model *model, return llama_params; } -static json format_final_response_oaicompat(const json &request, json result, const std::string &completion_id, - bool streaming = false) -{ - bool stopped_word = result.count("stopped_word") != 0; - bool stopped_eos = json_value(result, "stopped_eos", false); - int num_tokens_predicted = json_value(result, "tokens_predicted", 0); - int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); - std::string content = json_value(result, "content", std::string("")); - - std::string finish_reason = "length"; - if (stopped_word || stopped_eos) - { - finish_reason = "stop"; - } - - json choices = streaming - ? json::array({json{{"finish_reason", finish_reason}, {"index", 0}, {"delta", json::object()}}}) - : json::array({json{{"finish_reason", finish_reason}, - {"index", 0}, - {"message", json{{"content", content}, {"role", "assistant"}}}}}); - - std::time_t t = std::time(0); - - json res = json{{"choices", choices}, - {"created", t}, - {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", streaming ? "chat.completion.chunk" : "chat.completion"}, - {"usage", json{{"completion_tokens", num_tokens_predicted}, - {"prompt_tokens", num_prompt_tokens}, - {"total_tokens", num_tokens_predicted + num_prompt_tokens}}}, - {"id", completion_id}}; - -#if SERVER_VERBOSE - res["__verbose"] = result; -#endif +static json format_embeddings_response_oaicompat(const json & request, const json & embeddings, bool use_base64 = false) { + json data = json::array(); + int32_t n_tokens = 0; + int i = 0; + for (const auto & elem : embeddings) { + json embedding_obj; + + if (use_base64) { + const auto& vec = json_value(elem, "embedding", json::array()).get>(); + const char* data_ptr = reinterpret_cast(vec.data()); + size_t data_size = vec.size() * sizeof(float); + embedding_obj = { + {"embedding", base64::encode(data_ptr, data_size)}, + {"index", i++}, + {"object", "embedding"}, + {"encoding_format", "base64"} + }; + } else { + embedding_obj = { + {"embedding", json_value(elem, "embedding", json::array())}, + {"index", i++}, + {"object", "embedding"} + }; + } + data.push_back(embedding_obj); - if (result.contains("completion_probabilities")) - { - res["completion_probabilities"] = json_value(result, "completion_probabilities", json::array()); + n_tokens += json_value(elem, "tokens_evaluated", 0); } + json res = json { + {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json { + {"prompt_tokens", n_tokens}, + {"total_tokens", n_tokens} + }}, + {"data", data} + }; + return res; } -// return value is vector as there is one case where we might need to generate two responses -static std::vector format_partial_response_oaicompat(json result, const std::string &completion_id) -{ - if (!result.contains("model") || !result.contains("oaicompat_token_ctr")) - { - return std::vector({result}); +static json format_response_rerank(const json & request, const json & ranks) { + json data = json::array(); + int32_t n_tokens = 0; + int i = 0; + for (const auto & rank : ranks) { + data.push_back(json{ + {"index", i++}, + {"relevance_score", json_value(rank, "score", 0.0)}, + }); + + n_tokens += json_value(rank, "tokens_evaluated", 0); } - bool first = json_value(result, "oaicompat_token_ctr", 0) == 0; - std::string modelname = json_value(result, "model", std::string(DEFAULT_OAICOMPAT_MODEL)); + json res = json { + {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json { + {"prompt_tokens", n_tokens}, + {"total_tokens", n_tokens} + }}, + {"results", data} + }; - bool stopped_word = json_value(result, "stopped_word", false); - bool stopped_eos = json_value(result, "stopped_eos", false); - bool stopped_limit = json_value(result, "stopped_limit", false); - std::string content = json_value(result, "content", std::string("")); + return res; +} - std::string finish_reason; - if (stopped_word || stopped_eos) - { - finish_reason = "stop"; - } - if (stopped_limit) - { - finish_reason = "length"; +static bool is_valid_utf8(const std::string & str) { + const unsigned char* bytes = reinterpret_cast(str.data()); + const unsigned char* end = bytes + str.length(); + + while (bytes < end) { + if (*bytes <= 0x7F) { + // 1-byte sequence (0xxxxxxx) + bytes++; + } else if ((*bytes & 0xE0) == 0xC0) { + // 2-byte sequence (110xxxxx 10xxxxxx) + if (end - bytes < 2 || (bytes[1] & 0xC0) != 0x80) + return false; + bytes += 2; + } else if ((*bytes & 0xF0) == 0xE0) { + // 3-byte sequence (1110xxxx 10xxxxxx 10xxxxxx) + if (end - bytes < 3 || (bytes[1] & 0xC0) != 0x80 || (bytes[2] & 0xC0) != 0x80) + return false; + bytes += 3; + } else if ((*bytes & 0xF8) == 0xF0) { + // 4-byte sequence (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx) + if (end - bytes < 4 || (bytes[1] & 0xC0) != 0x80 || + (bytes[2] & 0xC0) != 0x80 || (bytes[3] & 0xC0) != 0x80) + return false; + bytes += 4; + } else { + // Invalid UTF-8 lead byte + return false; + } } - std::time_t t = std::time(0); - - json choices; + return true; +} - if (!finish_reason.empty()) - { - choices = json::array({json{{"finish_reason", finish_reason}, {"index", 0}, {"delta", json::object()}}}); - } - else - { - if (first) - { - if (content.empty()) - { - choices = json::array( - {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"role", "assistant"}}}}}); - } - else - { - // We have to send this as two updates to conform to openai behavior - json initial_ret = json{{"choices", json::array({json{{"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{{"role", "assistant"}}}}})}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"}}; - - json second_ret = - json{{"choices", - json::array( - {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"content", content}}}}})}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"}}; - - return std::vector({initial_ret, second_ret}); - } - } - else - { - // Some idiosyncrasy in task processing logic makes several trailing calls - // with empty content, we ignore these at the calee site. - if (content.empty()) - { - return std::vector({json::object()}); - } +static json format_tokenizer_response(const json & tokens) { + return json { + {"tokens", tokens} + }; +} - choices = json::array({json{ - {"finish_reason", nullptr}, - {"index", 0}, - {"delta", - json{ - {"content", content}, - }}, - }}); - } - } +static json format_detokenized_response(const std::string & content) { + return json { + {"content", content} + }; +} - json ret = json{{"choices", choices}, - {"created", t}, - {"id", completion_id}, - {"model", modelname}, - {"object", "chat.completion.chunk"}}; - if (!finish_reason.empty()) - { - int num_tokens_predicted = json_value(result, "tokens_predicted", 0); - int num_prompt_tokens = json_value(result, "tokens_evaluated", 0); - ret.push_back({"usage", json{{"completion_tokens", num_tokens_predicted}, - {"prompt_tokens", num_prompt_tokens}, - {"total_tokens", num_tokens_predicted + num_prompt_tokens}}}); +static json format_logit_bias(const std::vector & logit_bias) { + json data = json::array(); + for (const auto & lb : logit_bias) { + data.push_back(json{ + {"bias", lb.bias}, + {"token", lb.token}, + }); } + return data; +} - return std::vector({ret}); +static std::string safe_json_to_str(const json & data) { + return data.dump(-1, ' ', false, json::error_handler_t::replace); } -static json format_embeddings_response_oaicompat(const json &request, const json &embeddings) -{ - json data = json::array(); - int i = 0; - for (auto &elem : embeddings) - { - data.push_back( - json{{"embedding", json_value(elem, "embedding", json::array())}, {"index", i++}, {"object", "embedding"}}); +static std::vector get_token_probabilities(llama_context * ctx, int idx) { + std::vector cur; + const auto * logits = llama_get_logits_ith(ctx, idx); + + const llama_model * model = llama_get_model(ctx); + const llama_vocab * vocab = llama_model_get_vocab(model); + + const int n_vocab = llama_vocab_n_tokens(vocab); + + cur.resize(n_vocab); + for (llama_token token_id = 0; token_id < n_vocab; token_id++) { + cur[token_id] = llama_token_data{token_id, logits[token_id], 0.0f}; } - json res = json{{"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", "list"}, - {"usage", json{{"prompt_tokens", 0}, {"total_tokens", 0}}}, - {"data", data}}; + // sort tokens by logits + std::sort(cur.begin(), cur.end(), [](const llama_token_data & a, const llama_token_data & b) { + return a.logit > b.logit; + }); - return res; -} + // apply softmax + float max_l = cur[0].logit; + float cum_sum = 0.0f; + for (size_t i = 0; i < cur.size(); ++i) { + float p = expf(cur[i].logit - max_l); + cur[i].p = p; + cum_sum += p; + } + for (size_t i = 0; i < cur.size(); ++i) { + cur[i].p /= cum_sum; + } -static json format_tokenizer_response(const std::vector &tokens) -{ - return json{{"tokens", tokens}}; + return cur; } -static json format_detokenized_response(const std::string &content) -{ - return json{{"content", content}}; +static bool are_lora_equal( + const std::vector & l1, + const std::vector & l2) { + if (l1.size() != l2.size()) { + return false; + } + for (size_t i = 0; i < l1.size(); ++i) { + // we don't check lora.path to reduce the time complexity + if (l1[i].scale != l2[i].scale || l1[i].ptr != l2[i].ptr) { + return false; + } + } + return true; } -static json format_error_response(const std::string &message, const enum error_type type) -{ - std::string type_str; - int code = 500; - switch (type) - { - case ERROR_TYPE_INVALID_REQUEST: - type_str = "invalid_request_error"; - code = 400; - break; - case ERROR_TYPE_AUTHENTICATION: - type_str = "authentication_error"; - code = 401; - break; - case ERROR_TYPE_NOT_FOUND: - type_str = "not_found_error"; - code = 404; - break; - case ERROR_TYPE_SERVER: - type_str = "server_error"; - code = 500; - break; - case ERROR_TYPE_PERMISSION: - type_str = "permission_error"; - code = 403; - break; - case ERROR_TYPE_NOT_SUPPORTED: - type_str = "not_supported_error"; - code = 501; - break; - case ERROR_TYPE_UNAVAILABLE: - type_str = "unavailable_error"; - code = 503; - break; - } - return json{ - {"code", code}, - {"message", message}, - {"type", type_str}, - }; +// parse lora config from JSON request, returned a copy of lora_base with updated scale +static std::vector parse_lora_request( + const std::vector & lora_base, + const json & data) { + std::vector lora(lora_base); + int max_idx = lora.size(); + + // clear existing value + for (auto & entry : lora) { + entry.scale = 0.0f; + } + + // set value + for (const auto & entry : data) { + int id = json_value(entry, "id", -1); + float scale = json_value(entry, "scale", 0.0f); + if (0 <= id && id < max_idx) { + lora[id].scale = scale; + } else { + throw std::runtime_error("invalid adapter id"); + } + } + + return lora; } diff --git a/src/main/java/de/kherud/llama/CliParameters.java b/src/main/java/de/kherud/llama/CliParameters.java new file mode 100644 index 00000000..4142628e --- /dev/null +++ b/src/main/java/de/kherud/llama/CliParameters.java @@ -0,0 +1,40 @@ +package de.kherud.llama; + +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +abstract class CliParameters { + + final Map parameters = new HashMap<>(); + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + for (String key : parameters.keySet()) { + String value = parameters.get(key); + builder.append(key).append(" "); + if (value != null) { + builder.append(value).append(" "); + } + } + return builder.toString(); + } + + public String[] toArray() { + List result = new ArrayList<>(); + result.add(""); // c args contain the program name as the first argument, so we add an empty entry + for (String key : parameters.keySet()) { + result.add(key); + String value = parameters.get(key); + if (value != null) { + result.add(value); + } + } + return result.toArray(new String[0]); + } + +} diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index d2698753..2c494c8c 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -459,12 +459,6 @@ public InferenceParameters setSamplers(Sampler... samplers) { case TOP_K: builder.append("\"top_k\""); break; - case TFS_Z: - builder.append("\"tfs_z\""); - break; - case TYPICAL_P: - builder.append("\"typical_p\""); - break; case TOP_P: builder.append("\"top_p\""); break; diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index b78e056e..1e8878c0 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -16,7 +16,7 @@ *
      *
    • Streaming answers (and probabilities) via {@link #generate(InferenceParameters)}
    • *
    • Creating whole responses to prompts via {@link #complete(InferenceParameters)}
    • - *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters#setEmbedding(boolean)}
    • + *
    • Creating embeddings via {@link #embed(String)} (make sure to configure {@link ModelParameters#enableEmbedding()}
    • *
    • Accessing the tokenizer via {@link #encode(String)} and {@link #decode(int[])}
    • *
    */ @@ -32,16 +32,16 @@ public class LlamaModel implements AutoCloseable { /** * Load with the given {@link ModelParameters}. Make sure to either set *
      - *
    • {@link ModelParameters#setModelFilePath(String)}
    • + *
    • {@link ModelParameters#setModel(String)}
    • *
    • {@link ModelParameters#setModelUrl(String)}
    • - *
    • {@link ModelParameters#setHuggingFaceRepository(String)}}, {@link ModelParameters#setHuggingFaceFile(String)}
    • + *
    • {@link ModelParameters#setHfRepo(String)}, {@link ModelParameters#setHfFile(String)}
    • *
    * * @param parameters the set of options * @throws LlamaException if no model could be loaded from the given file path */ public LlamaModel(ModelParameters parameters) { - loadModel(parameters.toString()); + loadModel(parameters.toArray()); } /** @@ -66,17 +66,19 @@ public String complete(InferenceParameters parameters) { public LlamaIterable generate(InferenceParameters parameters) { return () -> new LlamaIterator(this, parameters); } - + + + /** * Get the embedding of a string. Note, that the prompt isn't preprocessed in any way, nothing like * "User: ", "###Instruction", etc. is added. * * @param prompt the string to embed * @return an embedding float array - * @throws IllegalStateException if embedding mode was not activated (see - * {@link ModelParameters#setEmbedding(boolean)}) + * @throws IllegalStateException if embedding mode was not activated (see {@link ModelParameters#enableEmbedding()}) */ - public native float[] embed(String prompt); + public native float[] embed(String prompt); + /** * Tokenize a prompt given the native tokenizer @@ -124,7 +126,7 @@ public void close() { native byte[] decodeBytes(int[] tokens); - private native void loadModel(String parameters) throws LlamaException; + private native void loadModel(String... parameters) throws LlamaException; private native void delete(); diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 3b34d3f3..91587001 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -1,557 +1,954 @@ package de.kherud.llama; -import java.util.Map; - -import de.kherud.llama.args.GpuSplitMode; -import de.kherud.llama.args.NumaStrategy; -import de.kherud.llama.args.PoolingType; -import de.kherud.llama.args.RopeScalingType; +import de.kherud.llama.args.*; /*** * Parameters used for initializing a {@link LlamaModel}. */ -public final class ModelParameters extends JsonParameters { - - private static final String PARAM_SEED = "seed"; - private static final String PARAM_N_THREADS = "n_threads"; - private static final String PARAM_N_THREADS_DRAFT = "n_threads_draft"; - private static final String PARAM_N_THREADS_BATCH = "n_threads_batch"; - private static final String PARAM_N_THREADS_BATCH_DRAFT = "n_threads_batch_draft"; - private static final String PARAM_N_PREDICT = "n_predict"; - private static final String PARAM_N_CTX = "n_ctx"; - private static final String PARAM_N_BATCH = "n_batch"; - private static final String PARAM_N_UBATCH = "n_ubatch"; - private static final String PARAM_N_KEEP = "n_keep"; - private static final String PARAM_N_DRAFT = "n_draft"; - private static final String PARAM_N_CHUNKS = "n_chunks"; - private static final String PARAM_N_PARALLEL = "n_parallel"; - private static final String PARAM_N_SEQUENCES = "n_sequences"; - private static final String PARAM_P_SPLIT = "p_split"; - private static final String PARAM_N_GPU_LAYERS = "n_gpu_layers"; - private static final String PARAM_N_GPU_LAYERS_DRAFT = "n_gpu_layers_draft"; - private static final String PARAM_SPLIT_MODE = "split_mode"; - private static final String PARAM_MAIN_GPU = "main_gpu"; - private static final String PARAM_TENSOR_SPLIT = "tensor_split"; - private static final String PARAM_GRP_ATTN_N = "grp_attn_n"; - private static final String PARAM_GRP_ATTN_W = "grp_attn_w"; - private static final String PARAM_ROPE_FREQ_BASE = "rope_freq_base"; - private static final String PARAM_ROPE_FREQ_SCALE = "rope_freq_scale"; - private static final String PARAM_YARN_EXT_FACTOR = "yarn_ext_factor"; - private static final String PARAM_YARN_ATTN_FACTOR = "yarn_attn_factor"; - private static final String PARAM_YARN_BETA_FAST = "yarn_beta_fast"; - private static final String PARAM_YARN_BETA_SLOW = "yarn_beta_slow"; - private static final String PARAM_YARN_ORIG_CTX = "yarn_orig_ctx"; - private static final String PARAM_DEFRAG_THOLD = "defrag_thold"; - private static final String PARAM_NUMA = "numa"; - private static final String PARAM_ROPE_SCALING_TYPE = "rope_scaling_type"; - private static final String PARAM_POOLING_TYPE = "pooling_type"; - private static final String PARAM_MODEL = "model"; - private static final String PARAM_MODEL_DRAFT = "model_draft"; - private static final String PARAM_MODEL_ALIAS = "model_alias"; - private static final String PARAM_MODEL_URL = "model_url"; - private static final String PARAM_HF_REPO = "hf_repo"; - private static final String PARAM_HF_FILE = "hf_file"; - private static final String PARAM_LOOKUP_CACHE_STATIC = "lookup_cache_static"; - private static final String PARAM_LOOKUP_CACHE_DYNAMIC = "lookup_cache_dynamic"; - private static final String PARAM_LORA_ADAPTER = "lora_adapter"; - private static final String PARAM_EMBEDDING = "embedding"; - private static final String PARAM_CONT_BATCHING = "cont_batching"; - private static final String PARAM_FLASH_ATTENTION = "flash_attn"; - private static final String PARAM_INPUT_PREFIX_BOS = "input_prefix_bos"; - private static final String PARAM_IGNORE_EOS = "ignore_eos"; - private static final String PARAM_USE_MMAP = "use_mmap"; - private static final String PARAM_USE_MLOCK = "use_mlock"; - private static final String PARAM_NO_KV_OFFLOAD = "no_kv_offload"; - private static final String PARAM_SYSTEM_PROMPT = "system_prompt"; - private static final String PARAM_CHAT_TEMPLATE = "chat_template"; - - /** - * Set the RNG seed - */ - public ModelParameters setSeed(int seed) { - parameters.put(PARAM_SEED, String.valueOf(seed)); - return this; - } - - /** - * Set the number of threads to use during generation (default: 8) - */ - public ModelParameters setNThreads(int nThreads) { - parameters.put(PARAM_N_THREADS, String.valueOf(nThreads)); - return this; - } - - /** - * Set the number of threads to use during draft generation (default: same as {@link #setNThreads(int)}) - */ - public ModelParameters setNThreadsDraft(int nThreadsDraft) { - parameters.put(PARAM_N_THREADS_DRAFT, String.valueOf(nThreadsDraft)); - return this; - } - - /** - * Set the number of threads to use during batch and prompt processing (default: same as {@link #setNThreads(int)}) - */ - public ModelParameters setNThreadsBatch(int nThreadsBatch) { - parameters.put(PARAM_N_THREADS_BATCH, String.valueOf(nThreadsBatch)); - return this; - } - - /** - * Set the number of threads to use during batch and prompt processing (default: same as - * {@link #setNThreadsDraft(int)}) - */ - public ModelParameters setNThreadsBatchDraft(int nThreadsBatchDraft) { - parameters.put(PARAM_N_THREADS_BATCH_DRAFT, String.valueOf(nThreadsBatchDraft)); - return this; - } - - /** - * Set the number of tokens to predict (default: -1, -1 = infinity, -2 = until context filled) - */ - public ModelParameters setNPredict(int nPredict) { - parameters.put(PARAM_N_PREDICT, String.valueOf(nPredict)); - return this; - } - - /** - * Set the size of the prompt context (default: 512, 0 = loaded from model) - */ - public ModelParameters setNCtx(int nCtx) { - parameters.put(PARAM_N_CTX, String.valueOf(nCtx)); - return this; - } - - /** - * Set the logical batch size for prompt processing (must be >=32 to use BLAS) - */ - public ModelParameters setNBatch(int nBatch) { - parameters.put(PARAM_N_BATCH, String.valueOf(nBatch)); - return this; - } - - /** - * Set the physical batch size for prompt processing (must be >=32 to use BLAS) - */ - public ModelParameters setNUbatch(int nUbatch) { - parameters.put(PARAM_N_UBATCH, String.valueOf(nUbatch)); - return this; - } - - /** - * Set the number of tokens to keep from the initial prompt (default: 0, -1 = all) - */ - public ModelParameters setNKeep(int nKeep) { - parameters.put(PARAM_N_KEEP, String.valueOf(nKeep)); - return this; - } - - /** - * Set the number of tokens to draft for speculative decoding (default: 5) - */ - public ModelParameters setNDraft(int nDraft) { - parameters.put(PARAM_N_DRAFT, String.valueOf(nDraft)); - return this; - } - - /** - * Set the maximal number of chunks to process (default: -1, -1 = all) - */ - public ModelParameters setNChunks(int nChunks) { - parameters.put(PARAM_N_CHUNKS, String.valueOf(nChunks)); - return this; - } - - /** - * Set the number of parallel sequences to decode (default: 1) - */ - public ModelParameters setNParallel(int nParallel) { - parameters.put(PARAM_N_PARALLEL, String.valueOf(nParallel)); - return this; - } - - /** - * Set the number of sequences to decode (default: 1) - */ - public ModelParameters setNSequences(int nSequences) { - parameters.put(PARAM_N_SEQUENCES, String.valueOf(nSequences)); - return this; - } - - /** - * Set the speculative decoding split probability (default: 0.1) - */ - public ModelParameters setPSplit(float pSplit) { - parameters.put(PARAM_P_SPLIT, String.valueOf(pSplit)); - return this; - } - - /** - * Set the number of layers to store in VRAM (-1 - use default) - */ - public ModelParameters setNGpuLayers(int nGpuLayers) { - parameters.put(PARAM_N_GPU_LAYERS, String.valueOf(nGpuLayers)); - return this; - } - - /** - * Set the number of layers to store in VRAM for the draft model (-1 - use default) - */ - public ModelParameters setNGpuLayersDraft(int nGpuLayersDraft) { - parameters.put(PARAM_N_GPU_LAYERS_DRAFT, String.valueOf(nGpuLayersDraft)); - return this; - } - - /** - * Set how to split the model across GPUs - */ - public ModelParameters setSplitMode(GpuSplitMode splitMode) { -// switch (splitMode) { -// case NONE: parameters.put(PARAM_SPLIT_MODE, "\"none\""); break; -// case ROW: parameters.put(PARAM_SPLIT_MODE, "\"row\""); break; -// case LAYER: parameters.put(PARAM_SPLIT_MODE, "\"layer\""); break; -// } - parameters.put(PARAM_SPLIT_MODE, String.valueOf(splitMode.ordinal())); - return this; - } - - /** - * Set the GPU that is used for scratch and small tensors - */ - public ModelParameters setMainGpu(int mainGpu) { - parameters.put(PARAM_MAIN_GPU, String.valueOf(mainGpu)); - return this; - } - - /** - * Set how split tensors should be distributed across GPUs - */ - public ModelParameters setTensorSplit(float[] tensorSplit) { - if (tensorSplit.length > 0) { - StringBuilder builder = new StringBuilder(); - builder.append("["); - for (int i = 0; i < tensorSplit.length; i++) { - builder.append(tensorSplit[i]); - if (i < tensorSplit.length - 1) { - builder.append(", "); - } - } - builder.append("]"); - parameters.put(PARAM_TENSOR_SPLIT, builder.toString()); - } - return this; - } - - /** - * Set the group-attention factor (default: 1) - */ - public ModelParameters setGrpAttnN(int grpAttnN) { - parameters.put(PARAM_GRP_ATTN_N, String.valueOf(grpAttnN)); - return this; - } - - /** - * Set the group-attention width (default: 512.0) - */ - public ModelParameters setGrpAttnW(int grpAttnW) { - parameters.put(PARAM_GRP_ATTN_W, String.valueOf(grpAttnW)); - return this; - } - - /** - * Set the RoPE base frequency, used by NTK-aware scaling (default: loaded from model) - */ - public ModelParameters setRopeFreqBase(float ropeFreqBase) { - parameters.put(PARAM_ROPE_FREQ_BASE, String.valueOf(ropeFreqBase)); - return this; - } - - /** - * Set the RoPE frequency scaling factor, expands context by a factor of 1/N - */ - public ModelParameters setRopeFreqScale(float ropeFreqScale) { - parameters.put(PARAM_ROPE_FREQ_SCALE, String.valueOf(ropeFreqScale)); - return this; - } - - /** - * Set the YaRN extrapolation mix factor (default: 1.0, 0.0 = full interpolation) - */ - public ModelParameters setYarnExtFactor(float yarnExtFactor) { - parameters.put(PARAM_YARN_EXT_FACTOR, String.valueOf(yarnExtFactor)); - return this; - } - - /** - * Set the YaRN scale sqrt(t) or attention magnitude (default: 1.0) - */ - public ModelParameters setYarnAttnFactor(float yarnAttnFactor) { - parameters.put(PARAM_YARN_ATTN_FACTOR, String.valueOf(yarnAttnFactor)); - return this; - } - - /** - * Set the YaRN low correction dim or beta (default: 32.0) - */ - public ModelParameters setYarnBetaFast(float yarnBetaFast) { - parameters.put(PARAM_YARN_BETA_FAST, String.valueOf(yarnBetaFast)); - return this; - } - - /** - * Set the YaRN high correction dim or alpha (default: 1.0) - */ - public ModelParameters setYarnBetaSlow(float yarnBetaSlow) { - parameters.put(PARAM_YARN_BETA_SLOW, String.valueOf(yarnBetaSlow)); - return this; - } - - /** - * Set the YaRN original context size of model (default: 0 = model training context size) - */ - public ModelParameters setYarnOrigCtx(int yarnOrigCtx) { - parameters.put(PARAM_YARN_ORIG_CTX, String.valueOf(yarnOrigCtx)); - return this; - } - - /** - * Set the KV cache defragmentation threshold (default: -1.0, < 0 - disabled) - */ - public ModelParameters setDefragmentationThreshold(float defragThold) { - parameters.put(PARAM_DEFRAG_THOLD, String.valueOf(defragThold)); - return this; - } - - /** - * Set optimization strategies that help on some NUMA systems (if available) - *
      - *
    • distribute: spread execution evenly over all nodes
    • - *
    • isolate: only spawn threads on CPUs on the node that execution started on
    • - *
    • numactl: use the CPU map provided by numactl
    • - *
    - * If run without this previously, it is recommended to drop the system page cache before using this - * (see #1437). - */ - public ModelParameters setNuma(NumaStrategy numa) { -// switch (numa) { -// case DISTRIBUTE: -// parameters.put(PARAM_NUMA, "\"distribute\""); -// break; -// case ISOLATE: -// parameters.put(PARAM_NUMA, "\"isolate\""); -// break; -// case NUMA_CTL: -// parameters.put(PARAM_NUMA, "\"numactl\""); -// break; -// case MIRROR: -// parameters.put(PARAM_NUMA, "\"mirror\""); -// break; -// } - parameters.put(PARAM_NUMA, String.valueOf(numa.ordinal())); - return this; - } - - /** - * Set the RoPE frequency scaling method, defaults to linear unless specified by the model - */ - public ModelParameters setRopeScalingType(RopeScalingType ropeScalingType) { -// switch (ropeScalingType) { -// case LINEAR: -// parameters.put(PARAM_ROPE_SCALING_TYPE, "\"linear\""); -// break; -// case YARN: -// parameters.put(PARAM_ROPE_SCALING_TYPE, "\"yarn\""); -// break; -// } - parameters.put(PARAM_ROPE_SCALING_TYPE, String.valueOf(ropeScalingType.ordinal())); - return this; - } - - /** - * Set the pooling type for embeddings, use model default if unspecified - */ - public ModelParameters setPoolingType(PoolingType poolingType) { -// switch (poolingType) { -// case MEAN: -// parameters.put(PARAM_POOLING_TYPE, "\"mean\""); -// break; -// case CLS: -// parameters.put(PARAM_POOLING_TYPE, "\"cls\""); -// break; -// } - parameters.put(PARAM_POOLING_TYPE, String.valueOf(poolingType.ordinal())); - return this; - } - - /** - * Set the model file path to load (default: models/7B/ggml-model-f16.gguf) - */ - public ModelParameters setModelFilePath(String model) { - parameters.put(PARAM_MODEL, toJsonString(model)); - return this; - } - - /** - * Set the draft model for speculative decoding (default: unused) - */ - public ModelParameters setModelDraft(String modelDraft) { - parameters.put(PARAM_MODEL_DRAFT, toJsonString(modelDraft)); - return this; - } - - /** - * Set a model alias - */ - public ModelParameters setModelAlias(String modelAlias) { - parameters.put(PARAM_MODEL_ALIAS, toJsonString(modelAlias)); - return this; - } - - /** - * Set a URL to download a model from (default: unused). - * Note, that this requires the library to be built with CURL (-DLLAMA_CURL=ON). - */ - public ModelParameters setModelUrl(String modelUrl) { - parameters.put(PARAM_MODEL_URL, toJsonString(modelUrl)); - return this; - } - - /** - * Set a Hugging Face model repository to use a model from (default: unused, see - * {@link #setHuggingFaceFile(String)}) - */ - public ModelParameters setHuggingFaceRepository(String hfRepo) { - parameters.put(PARAM_HF_REPO, toJsonString(hfRepo)); - return this; - } - - /** - * Set a Hugging Face model file to use (default: unused, see {@link #setHuggingFaceRepository(String)}) - */ - public ModelParameters setHuggingFaceFile(String hfFile) { - parameters.put(PARAM_HF_FILE, toJsonString(hfFile)); - return this; - } - - /** - * Set path to static lookup cache to use for lookup decoding (not updated by generation) - */ - public ModelParameters setLookupCacheStaticFilePath(String lookupCacheStatic) { - parameters.put(PARAM_LOOKUP_CACHE_STATIC, toJsonString(lookupCacheStatic)); - return this; - } - - /** - * Set path to dynamic lookup cache to use for lookup decoding (updated by generation) - */ - public ModelParameters setLookupCacheDynamicFilePath(String lookupCacheDynamic) { - parameters.put(PARAM_LOOKUP_CACHE_DYNAMIC, toJsonString(lookupCacheDynamic)); - return this; - } - - /** - * Set LoRA adapters to use (implies --no-mmap). - * The key is expected to be a file path, the values are expected to be scales. - */ - public ModelParameters setLoraAdapters(Map loraAdapters) { - if (!loraAdapters.isEmpty()) { - StringBuilder builder = new StringBuilder(); - builder.append("{"); - int i = 0; - for (Map.Entry entry : loraAdapters.entrySet()) { - String key = entry.getKey(); - Float value = entry.getValue(); - builder.append(toJsonString(key)) - .append(": ") - .append(value); - if (i++ < loraAdapters.size() - 1) { - builder.append(", "); - } - } - builder.append("}"); - parameters.put(PARAM_LORA_ADAPTER, builder.toString()); - } - return this; - } - - /** - * Whether to load model with embedding support - */ - public ModelParameters setEmbedding(boolean embedding) { - parameters.put(PARAM_EMBEDDING, String.valueOf(embedding)); - return this; - } - - /** - * Whether to enable continuous batching (also called "dynamic batching") (default: disabled) - */ - public ModelParameters setContinuousBatching(boolean contBatching) { - parameters.put(PARAM_CONT_BATCHING, String.valueOf(contBatching)); - return this; - } - - /** - * Whether to enable Flash Attention (default: disabled) - */ - public ModelParameters setFlashAttention(boolean flashAttention) { - parameters.put(PARAM_FLASH_ATTENTION, String.valueOf(flashAttention)); - return this; - } - - /** - * Whether to add prefix BOS to user inputs, preceding the `--in-prefix` string - */ - public ModelParameters setInputPrefixBos(boolean inputPrefixBos) { - parameters.put(PARAM_INPUT_PREFIX_BOS, String.valueOf(inputPrefixBos)); - return this; - } - - /** - * Whether to ignore end of stream token and continue generating (implies --logit-bias 2-inf) - */ - public ModelParameters setIgnoreEos(boolean ignoreEos) { - parameters.put(PARAM_IGNORE_EOS, String.valueOf(ignoreEos)); - return this; - } - - /** - * Whether to use memory-map model (faster load but may increase pageouts if not using mlock) - */ - public ModelParameters setUseMmap(boolean useMmap) { - parameters.put(PARAM_USE_MMAP, String.valueOf(useMmap)); - return this; - } - - /** - * Whether to force the system to keep model in RAM rather than swapping or compressing - */ - public ModelParameters setUseMlock(boolean useMlock) { - parameters.put(PARAM_USE_MLOCK, String.valueOf(useMlock)); - return this; - } - - /** - * Whether to disable KV offload - */ - public ModelParameters setNoKvOffload(boolean noKvOffload) { - parameters.put(PARAM_NO_KV_OFFLOAD, String.valueOf(noKvOffload)); - return this; - } - - /** - * Set a system prompt to use - */ - public ModelParameters setSystemPrompt(String systemPrompt) { - parameters.put(PARAM_SYSTEM_PROMPT, toJsonString(systemPrompt)); - return this; - } - - /** - * The chat template to use (default: empty) - */ - public ModelParameters setChatTemplate(String chatTemplate) { - parameters.put(PARAM_CHAT_TEMPLATE, toJsonString(chatTemplate)); - return this; - } +@SuppressWarnings("unused") +public final class ModelParameters extends CliParameters { + + /** + * Set the number of threads to use during generation (default: -1). + */ + public ModelParameters setThreads(int nThreads) { + parameters.put("--threads", String.valueOf(nThreads)); + return this; + } + + /** + * Set the number of threads to use during batch and prompt processing (default: same as --threads). + */ + public ModelParameters setThreadsBatch(int nThreads) { + parameters.put("--threads-batch", String.valueOf(nThreads)); + return this; + } + + /** + * Set the CPU affinity mask: arbitrarily long hex. Complements cpu-range (default: ""). + */ + public ModelParameters setCpuMask(String mask) { + parameters.put("--cpu-mask", mask); + return this; + } + + /** + * Set the range of CPUs for affinity. Complements --cpu-mask. + */ + public ModelParameters setCpuRange(String range) { + parameters.put("--cpu-range", range); + return this; + } + + /** + * Use strict CPU placement (default: 0). + */ + public ModelParameters setCpuStrict(int strictCpu) { + parameters.put("--cpu-strict", String.valueOf(strictCpu)); + return this; + } + + /** + * Set process/thread priority: 0-normal, 1-medium, 2-high, 3-realtime (default: 0). + */ + public ModelParameters setPriority(int priority) { + if (priority < 0 || priority > 3) { + throw new IllegalArgumentException("Invalid value for priority"); + } + parameters.put("--prio", String.valueOf(priority)); + return this; + } + + /** + * Set the polling level to wait for work (0 - no polling, default: 0). + */ + public ModelParameters setPoll(int poll) { + parameters.put("--poll", String.valueOf(poll)); + return this; + } + + /** + * Set the CPU affinity mask for batch processing: arbitrarily long hex. Complements cpu-range-batch (default: same as --cpu-mask). + */ + public ModelParameters setCpuMaskBatch(String mask) { + parameters.put("--cpu-mask-batch", mask); + return this; + } + + /** + * Set the ranges of CPUs for batch affinity. Complements --cpu-mask-batch. + */ + public ModelParameters setCpuRangeBatch(String range) { + parameters.put("--cpu-range-batch", range); + return this; + } + + /** + * Use strict CPU placement for batch processing (default: same as --cpu-strict). + */ + public ModelParameters setCpuStrictBatch(int strictCpuBatch) { + parameters.put("--cpu-strict-batch", String.valueOf(strictCpuBatch)); + return this; + } + + /** + * Set process/thread priority for batch processing: 0-normal, 1-medium, 2-high, 3-realtime (default: 0). + */ + public ModelParameters setPriorityBatch(int priorityBatch) { + if (priorityBatch < 0 || priorityBatch > 3) { + throw new IllegalArgumentException("Invalid value for priority batch"); + } + parameters.put("--prio-batch", String.valueOf(priorityBatch)); + return this; + } + + /** + * Set the polling level for batch processing (default: same as --poll). + */ + public ModelParameters setPollBatch(int pollBatch) { + parameters.put("--poll-batch", String.valueOf(pollBatch)); + return this; + } + + /** + * Set the size of the prompt context (default: 0, 0 = loaded from model). + */ + public ModelParameters setCtxSize(int ctxSize) { + parameters.put("--ctx-size", String.valueOf(ctxSize)); + return this; + } + + /** + * Set the number of tokens to predict (default: -1 = infinity, -2 = until context filled). + */ + public ModelParameters setPredict(int nPredict) { + parameters.put("--predict", String.valueOf(nPredict)); + return this; + } + + /** + * Set the logical maximum batch size (default: 0). + */ + public ModelParameters setBatchSize(int batchSize) { + parameters.put("--batch-size", String.valueOf(batchSize)); + return this; + } + + /** + * Set the physical maximum batch size (default: 0). + */ + public ModelParameters setUbatchSize(int ubatchSize) { + parameters.put("--ubatch-size", String.valueOf(ubatchSize)); + return this; + } + + /** + * Set the number of tokens to keep from the initial prompt (default: -1 = all). + */ + public ModelParameters setKeep(int keep) { + parameters.put("--keep", String.valueOf(keep)); + return this; + } + + /** + * Disable context shift on infinite text generation (default: enabled). + */ + public ModelParameters disableContextShift() { + parameters.put("--no-context-shift", null); + return this; + } + + /** + * Enable Flash Attention (default: disabled). + */ + public ModelParameters enableFlashAttn() { + parameters.put("--flash-attn", null); + return this; + } + + /** + * Disable internal libllama performance timings (default: false). + */ + public ModelParameters disablePerf() { + parameters.put("--no-perf", null); + return this; + } + + /** + * Process escape sequences (default: true). + */ + public ModelParameters enableEscape() { + parameters.put("--escape", null); + return this; + } + + /** + * Do not process escape sequences (default: false). + */ + public ModelParameters disableEscape() { + parameters.put("--no-escape", null); + return this; + } + + /** + * Enable special tokens output (default: true). + */ + public ModelParameters enableSpecial() { + parameters.put("--special", null); + return this; + } + + /** + * Skip warming up the model with an empty run (default: false). + */ + public ModelParameters skipWarmup() { + parameters.put("--no-warmup", null); + return this; + } + + /** + * Use Suffix/Prefix/Middle pattern for infill (instead of Prefix/Suffix/Middle) as some models prefer this. + * (default: disabled) + */ + public ModelParameters setSpmInfill() { + parameters.put("--spm-infill", null); + return this; + } + + /** + * Set samplers that will be used for generation in the order, separated by ';' (default: all). + */ + public ModelParameters setSamplers(Sampler... samplers) { + if (samplers.length > 0) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < samplers.length; i++) { + Sampler sampler = samplers[i]; + builder.append(sampler.name().toLowerCase()); + if (i < samplers.length - 1) { + builder.append(";"); + } + } + parameters.put("--samplers", builder.toString()); + } + return this; + } + + /** + * Set RNG seed (default: -1, use random seed). + */ + public ModelParameters setSeed(long seed) { + parameters.put("--seed", String.valueOf(seed)); + return this; + } + + /** + * Ignore end of stream token and continue generating (implies --logit-bias EOS-inf). + */ + public ModelParameters ignoreEos() { + parameters.put("--ignore-eos", null); + return this; + } + + /** + * Set temperature for sampling (default: 0.8). + */ + public ModelParameters setTemp(float temp) { + parameters.put("--temp", String.valueOf(temp)); + return this; + } + + /** + * Set top-k sampling (default: 40, 0 = disabled). + */ + public ModelParameters setTopK(int topK) { + parameters.put("--top-k", String.valueOf(topK)); + return this; + } + + /** + * Set top-p sampling (default: 0.95, 1.0 = disabled). + */ + public ModelParameters setTopP(float topP) { + parameters.put("--top-p", String.valueOf(topP)); + return this; + } + + /** + * Set min-p sampling (default: 0.05, 0.0 = disabled). + */ + public ModelParameters setMinP(float minP) { + parameters.put("--min-p", String.valueOf(minP)); + return this; + } + + /** + * Set xtc probability (default: 0.0, 0.0 = disabled). + */ + public ModelParameters setXtcProbability(float xtcProbability) { + parameters.put("--xtc-probability", String.valueOf(xtcProbability)); + return this; + } + + /** + * Set xtc threshold (default: 0.1, 1.0 = disabled). + */ + public ModelParameters setXtcThreshold(float xtcThreshold) { + parameters.put("--xtc-threshold", String.valueOf(xtcThreshold)); + return this; + } + + /** + * Set locally typical sampling parameter p (default: 1.0, 1.0 = disabled). + */ + public ModelParameters setTypical(float typP) { + parameters.put("--typical", String.valueOf(typP)); + return this; + } + + /** + * Set last n tokens to consider for penalize (default: 64, 0 = disabled, -1 = ctx_size). + */ + public ModelParameters setRepeatLastN(int repeatLastN) { + if (repeatLastN < -1) { + throw new RuntimeException("Invalid repeat-last-n value"); + } + parameters.put("--repeat-last-n", String.valueOf(repeatLastN)); + return this; + } + + /** + * Set penalize repeat sequence of tokens (default: 1.0, 1.0 = disabled). + */ + public ModelParameters setRepeatPenalty(float repeatPenalty) { + parameters.put("--repeat-penalty", String.valueOf(repeatPenalty)); + return this; + } + + /** + * Set repeat alpha presence penalty (default: 0.0, 0.0 = disabled). + */ + public ModelParameters setPresencePenalty(float presencePenalty) { + parameters.put("--presence-penalty", String.valueOf(presencePenalty)); + return this; + } + + /** + * Set repeat alpha frequency penalty (default: 0.0, 0.0 = disabled). + */ + public ModelParameters setFrequencyPenalty(float frequencyPenalty) { + parameters.put("--frequency-penalty", String.valueOf(frequencyPenalty)); + return this; + } + + /** + * Set DRY sampling multiplier (default: 0.0, 0.0 = disabled). + */ + public ModelParameters setDryMultiplier(float dryMultiplier) { + parameters.put("--dry-multiplier", String.valueOf(dryMultiplier)); + return this; + } + + /** + * Set DRY sampling base value (default: 1.75). + */ + public ModelParameters setDryBase(float dryBase) { + parameters.put("--dry-base", String.valueOf(dryBase)); + return this; + } + + /** + * Set allowed length for DRY sampling (default: 2). + */ + public ModelParameters setDryAllowedLength(int dryAllowedLength) { + parameters.put("--dry-allowed-length", String.valueOf(dryAllowedLength)); + return this; + } + + /** + * Set DRY penalty for the last n tokens (default: -1, 0 = disable, -1 = context size). + */ + public ModelParameters setDryPenaltyLastN(int dryPenaltyLastN) { + if (dryPenaltyLastN < -1) { + throw new RuntimeException("Invalid dry-penalty-last-n value"); + } + parameters.put("--dry-penalty-last-n", String.valueOf(dryPenaltyLastN)); + return this; + } + + /** + * Add sequence breaker for DRY sampling, clearing out default breakers (default: none). + */ + public ModelParameters setDrySequenceBreaker(String drySequenceBreaker) { + parameters.put("--dry-sequence-breaker", drySequenceBreaker); + return this; + } + + /** + * Set dynamic temperature range (default: 0.0, 0.0 = disabled). + */ + public ModelParameters setDynatempRange(float dynatempRange) { + parameters.put("--dynatemp-range", String.valueOf(dynatempRange)); + return this; + } + + /** + * Set dynamic temperature exponent (default: 1.0). + */ + public ModelParameters setDynatempExponent(float dynatempExponent) { + parameters.put("--dynatemp-exp", String.valueOf(dynatempExponent)); + return this; + } + + /** + * Use Mirostat sampling (default: PLACEHOLDER, 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0). + */ + public ModelParameters setMirostat(MiroStat mirostat) { + parameters.put("--mirostat", String.valueOf(mirostat.ordinal())); + return this; + } + + /** + * Set Mirostat learning rate, parameter eta (default: 0.1). + */ + public ModelParameters setMirostatLR(float mirostatLR) { + parameters.put("--mirostat-lr", String.valueOf(mirostatLR)); + return this; + } + + /** + * Set Mirostat target entropy, parameter tau (default: 5.0). + */ + public ModelParameters setMirostatEnt(float mirostatEnt) { + parameters.put("--mirostat-ent", String.valueOf(mirostatEnt)); + return this; + } + + /** + * Modify the likelihood of token appearing in the completion. + */ + public ModelParameters setLogitBias(String tokenIdAndBias) { + parameters.put("--logit-bias", tokenIdAndBias); + return this; + } + + /** + * Set BNF-like grammar to constrain generations (default: empty). + */ + public ModelParameters setGrammar(String grammar) { + parameters.put("--grammar", grammar); + return this; + } + + /** + * Specify the file to read grammar from. + */ + public ModelParameters setGrammarFile(String fileName) { + parameters.put("--grammar-file", fileName); + return this; + } + + /** + * Specify the JSON schema to constrain generations (default: empty). + */ + public ModelParameters setJsonSchema(String schema) { + parameters.put("--json-schema", schema); + return this; + } + + /** + * Set pooling type for embeddings (default: model default if unspecified). + */ + public ModelParameters setPoolingType(PoolingType type) { + parameters.put("--pooling", String.valueOf(type.getId())); + return this; + } + + /** + * Set RoPE frequency scaling method (default: linear unless specified by the model). + */ + public ModelParameters setRopeScaling(RopeScalingType type) { + parameters.put("--rope-scaling", String.valueOf(type.getId())); + return this; + } + + /** + * Set RoPE context scaling factor, expands context by a factor of N. + */ + public ModelParameters setRopeScale(float ropeScale) { + parameters.put("--rope-scale", String.valueOf(ropeScale)); + return this; + } + + /** + * Set RoPE base frequency, used by NTK-aware scaling (default: loaded from model). + */ + public ModelParameters setRopeFreqBase(float ropeFreqBase) { + parameters.put("--rope-freq-base", String.valueOf(ropeFreqBase)); + return this; + } + + /** + * Set RoPE frequency scaling factor, expands context by a factor of 1/N. + */ + public ModelParameters setRopeFreqScale(float ropeFreqScale) { + parameters.put("--rope-freq-scale", String.valueOf(ropeFreqScale)); + return this; + } + + /** + * Set YaRN: original context size of model (default: model training context size). + */ + public ModelParameters setYarnOrigCtx(int yarnOrigCtx) { + parameters.put("--yarn-orig-ctx", String.valueOf(yarnOrigCtx)); + return this; + } + + /** + * Set YaRN: extrapolation mix factor (default: 0.0 = full interpolation). + */ + public ModelParameters setYarnExtFactor(float yarnExtFactor) { + parameters.put("--yarn-ext-factor", String.valueOf(yarnExtFactor)); + return this; + } + + /** + * Set YaRN: scale sqrt(t) or attention magnitude (default: 1.0). + */ + public ModelParameters setYarnAttnFactor(float yarnAttnFactor) { + parameters.put("--yarn-attn-factor", String.valueOf(yarnAttnFactor)); + return this; + } + + /** + * Set YaRN: high correction dim or alpha (default: 1.0). + */ + public ModelParameters setYarnBetaSlow(float yarnBetaSlow) { + parameters.put("--yarn-beta-slow", String.valueOf(yarnBetaSlow)); + return this; + } + + /** + * Set YaRN: low correction dim or beta (default: 32.0). + */ + public ModelParameters setYarnBetaFast(float yarnBetaFast) { + parameters.put("--yarn-beta-fast", String.valueOf(yarnBetaFast)); + return this; + } + + /** + * Set group-attention factor (default: 1). + */ + public ModelParameters setGrpAttnN(int grpAttnN) { + parameters.put("--grp-attn-n", String.valueOf(grpAttnN)); + return this; + } + + /** + * Set group-attention width (default: 512). + */ + public ModelParameters setGrpAttnW(int grpAttnW) { + parameters.put("--grp-attn-w", String.valueOf(grpAttnW)); + return this; + } + + /** + * Enable verbose printing of the KV cache. + */ + public ModelParameters enableDumpKvCache() { + parameters.put("--dump-kv-cache", null); + return this; + } + + /** + * Disable KV offload. + */ + public ModelParameters disableKvOffload() { + parameters.put("--no-kv-offload", null); + return this; + } + + /** + * Set KV cache data type for K (allowed values: F16). + */ + public ModelParameters setCacheTypeK(CacheType type) { + parameters.put("--cache-type-k", type.name().toLowerCase()); + return this; + } + + /** + * Set KV cache data type for V (allowed values: F16). + */ + public ModelParameters setCacheTypeV(CacheType type) { + parameters.put("--cache-type-v", type.name().toLowerCase()); + return this; + } + + /** + * Set KV cache defragmentation threshold (default: 0.1, < 0 - disabled). + */ + public ModelParameters setDefragThold(float defragThold) { + parameters.put("--defrag-thold", String.valueOf(defragThold)); + return this; + } + + /** + * Set the number of parallel sequences to decode (default: 1). + */ + public ModelParameters setParallel(int nParallel) { + parameters.put("--parallel", String.valueOf(nParallel)); + return this; + } + + /** + * Enable continuous batching (a.k.a dynamic batching) (default: disabled). + */ + public ModelParameters enableContBatching() { + parameters.put("--cont-batching", null); + return this; + } + + /** + * Disable continuous batching. + */ + public ModelParameters disableContBatching() { + parameters.put("--no-cont-batching", null); + return this; + } + + /** + * Force system to keep model in RAM rather than swapping or compressing. + */ + public ModelParameters enableMlock() { + parameters.put("--mlock", null); + return this; + } + + /** + * Do not memory-map model (slower load but may reduce pageouts if not using mlock). + */ + public ModelParameters disableMmap() { + parameters.put("--no-mmap", null); + return this; + } + + /** + * Set NUMA optimization type for system. + */ + public ModelParameters setNuma(NumaStrategy numaStrategy) { + parameters.put("--numa", numaStrategy.name().toLowerCase()); + return this; + } + + /** + * Set comma-separated list of devices to use for offloading (none = don't offload). + */ + public ModelParameters setDevices(String devices) { + parameters.put("--device", devices); + return this; + } + + /** + * Set the number of layers to store in VRAM. + */ + public ModelParameters setGpuLayers(int gpuLayers) { + parameters.put("--gpu-layers", String.valueOf(gpuLayers)); + return this; + } + + /** + * Set how to split the model across multiple GPUs (none, layer, row). + */ + public ModelParameters setSplitMode(GpuSplitMode splitMode) { + parameters.put("--split-mode", splitMode.name().toLowerCase()); + return this; + } + + /** + * Set fraction of the model to offload to each GPU, comma-separated list of proportions N0,N1,N2,.... + */ + public ModelParameters setTensorSplit(String tensorSplit) { + parameters.put("--tensor-split", tensorSplit); + return this; + } + + /** + * Set the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row). + */ + public ModelParameters setMainGpu(int mainGpu) { + parameters.put("--main-gpu", String.valueOf(mainGpu)); + return this; + } + + /** + * Enable checking model tensor data for invalid values. + */ + public ModelParameters enableCheckTensors() { + parameters.put("--check-tensors", null); + return this; + } + + /** + * Override model metadata by key. This option can be specified multiple times. + */ + public ModelParameters setOverrideKv(String keyValue) { + parameters.put("--override-kv", keyValue); + return this; + } + + /** + * Add a LoRA adapter (can be repeated to use multiple adapters). + */ + public ModelParameters addLoraAdapter(String fname) { + parameters.put("--lora", fname); + return this; + } + + /** + * Add a LoRA adapter with user-defined scaling (can be repeated to use multiple adapters). + */ + public ModelParameters addLoraScaledAdapter(String fname, float scale) { + parameters.put("--lora-scaled", fname + "," + scale); + return this; + } + + /** + * Add a control vector (this argument can be repeated to add multiple control vectors). + */ + public ModelParameters addControlVector(String fname) { + parameters.put("--control-vector", fname); + return this; + } + + /** + * Add a control vector with user-defined scaling (can be repeated to add multiple scaled control vectors). + */ + public ModelParameters addControlVectorScaled(String fname, float scale) { + parameters.put("--control-vector-scaled", fname + "," + scale); + return this; + } + + /** + * Set the layer range to apply the control vector(s) to (start and end inclusive). + */ + public ModelParameters setControlVectorLayerRange(int start, int end) { + parameters.put("--control-vector-layer-range", start + "," + end); + return this; + } + + /** + * Set the model path from which to load the base model. + */ + public ModelParameters setModel(String model) { + parameters.put("--model", model); + return this; + } + + /** + * Set the model download URL (default: unused). + */ + public ModelParameters setModelUrl(String modelUrl) { + parameters.put("--model-url", modelUrl); + return this; + } + + /** + * Set the Hugging Face model repository (default: unused). + */ + public ModelParameters setHfRepo(String hfRepo) { + parameters.put("--hf-repo", hfRepo); + return this; + } + + /** + * Set the Hugging Face model file (default: unused). + */ + public ModelParameters setHfFile(String hfFile) { + parameters.put("--hf-file", hfFile); + return this; + } + + /** + * Set the Hugging Face model repository for the vocoder model (default: unused). + */ + public ModelParameters setHfRepoV(String hfRepoV) { + parameters.put("--hf-repo-v", hfRepoV); + return this; + } + + /** + * Set the Hugging Face model file for the vocoder model (default: unused). + */ + public ModelParameters setHfFileV(String hfFileV) { + parameters.put("--hf-file-v", hfFileV); + return this; + } + + /** + * Set the Hugging Face access token (default: value from HF_TOKEN environment variable). + */ + public ModelParameters setHfToken(String hfToken) { + parameters.put("--hf-token", hfToken); + return this; + } + + /** + * Enable embedding use case; use only with dedicated embedding models. + */ + public ModelParameters enableEmbedding() { + parameters.put("--embedding", null); + return this; + } + + /** + * Enable reranking endpoint on server. + */ + public ModelParameters enableReranking() { + parameters.put("--reranking", null); + return this; + } + + /** + * Set minimum chunk size to attempt reusing from the cache via KV shifting. + */ + public ModelParameters setCacheReuse(int cacheReuse) { + parameters.put("--cache-reuse", String.valueOf(cacheReuse)); + return this; + } + + /** + * Set the path to save the slot kv cache. + */ + public ModelParameters setSlotSavePath(String slotSavePath) { + parameters.put("--slot-save-path", slotSavePath); + return this; + } + + /** + * Set custom jinja chat template. + */ + public ModelParameters setChatTemplate(String chatTemplate) { + parameters.put("--chat-template", chatTemplate); + return this; + } + + /** + * Set how much the prompt of a request must match the prompt of a slot in order to use that slot. + */ + public ModelParameters setSlotPromptSimilarity(float similarity) { + parameters.put("--slot-prompt-similarity", String.valueOf(similarity)); + return this; + } + + /** + * Load LoRA adapters without applying them (apply later via POST /lora-adapters). + */ + public ModelParameters setLoraInitWithoutApply() { + parameters.put("--lora-init-without-apply", null); + return this; + } + + /** + * Disable logging. + */ + public ModelParameters disableLog() { + parameters.put("--log-disable", null); + return this; + } + + /** + * Set the log file path. + */ + public ModelParameters setLogFile(String logFile) { + parameters.put("--log-file", logFile); + return this; + } + + /** + * Set verbosity level to infinity (log all messages, useful for debugging). + */ + public ModelParameters setVerbose() { + parameters.put("--verbose", null); + return this; + } + + /** + * Set the verbosity threshold (messages with a higher verbosity will be ignored). + */ + public ModelParameters setLogVerbosity(int verbosity) { + parameters.put("--log-verbosity", String.valueOf(verbosity)); + return this; + } + + /** + * Enable prefix in log messages. + */ + public ModelParameters enableLogPrefix() { + parameters.put("--log-prefix", null); + return this; + } + + /** + * Enable timestamps in log messages. + */ + public ModelParameters enableLogTimestamps() { + parameters.put("--log-timestamps", null); + return this; + } + + /** + * Set the number of tokens to draft for speculative decoding. + */ + public ModelParameters setDraftMax(int draftMax) { + parameters.put("--draft-max", String.valueOf(draftMax)); + return this; + } + + /** + * Set the minimum number of draft tokens to use for speculative decoding. + */ + public ModelParameters setDraftMin(int draftMin) { + parameters.put("--draft-min", String.valueOf(draftMin)); + return this; + } + + /** + * Set the minimum speculative decoding probability for greedy decoding. + */ + public ModelParameters setDraftPMin(float draftPMin) { + parameters.put("--draft-p-min", String.valueOf(draftPMin)); + return this; + } + + /** + * Set the size of the prompt context for the draft model. + */ + public ModelParameters setCtxSizeDraft(int ctxSizeDraft) { + parameters.put("--ctx-size-draft", String.valueOf(ctxSizeDraft)); + return this; + } + + /** + * Set the comma-separated list of devices to use for offloading the draft model. + */ + public ModelParameters setDeviceDraft(String deviceDraft) { + parameters.put("--device-draft", deviceDraft); + return this; + } + + /** + * Set the number of layers to store in VRAM for the draft model. + */ + public ModelParameters setGpuLayersDraft(int gpuLayersDraft) { + parameters.put("--gpu-layers-draft", String.valueOf(gpuLayersDraft)); + return this; + } + + /** + * Set the draft model for speculative decoding. + */ + public ModelParameters setModelDraft(String modelDraft) { + parameters.put("--model-draft", modelDraft); + return this; + } } diff --git a/src/main/java/de/kherud/llama/args/CacheType.java b/src/main/java/de/kherud/llama/args/CacheType.java new file mode 100644 index 00000000..8404ed75 --- /dev/null +++ b/src/main/java/de/kherud/llama/args/CacheType.java @@ -0,0 +1,15 @@ +package de.kherud.llama.args; + +public enum CacheType { + + F32, + F16, + BF16, + Q8_0, + Q4_0, + Q4_1, + IQ4_NL, + Q5_0, + Q5_1 + +} diff --git a/src/main/java/de/kherud/llama/args/NumaStrategy.java b/src/main/java/de/kherud/llama/args/NumaStrategy.java index 35b24e19..fa7a61b0 100644 --- a/src/main/java/de/kherud/llama/args/NumaStrategy.java +++ b/src/main/java/de/kherud/llama/args/NumaStrategy.java @@ -2,9 +2,7 @@ public enum NumaStrategy { - DISABLED, DISTRIBUTE, ISOLATE, - NUMA_CTL, - MIRROR + NUMACTL } diff --git a/src/main/java/de/kherud/llama/args/PoolingType.java b/src/main/java/de/kherud/llama/args/PoolingType.java index e9b441d4..a9c9dbae 100644 --- a/src/main/java/de/kherud/llama/args/PoolingType.java +++ b/src/main/java/de/kherud/llama/args/PoolingType.java @@ -2,7 +2,20 @@ public enum PoolingType { - UNSPECIFIED, - MEAN, - CLS + UNSPECIFIED(-1), + NONE(0), + MEAN(1), + CLS(2), + LAST(3), + RANK(4); + + private final int id; + + PoolingType(int value) { + this.id = value; + } + + public int getId() { + return id; + } } diff --git a/src/main/java/de/kherud/llama/args/RopeScalingType.java b/src/main/java/de/kherud/llama/args/RopeScalingType.java index a69596f5..eed939a1 100644 --- a/src/main/java/de/kherud/llama/args/RopeScalingType.java +++ b/src/main/java/de/kherud/llama/args/RopeScalingType.java @@ -2,7 +2,20 @@ public enum RopeScalingType { - UNSPECIFIED, - LINEAR, - YARN + UNSPECIFIED(-1), + NONE(0), + LINEAR(1), + YARN2(2), + LONGROPE(3), + MAX_VALUE(3); + + private final int id; + + RopeScalingType(int value) { + this.id = value; + } + + public int getId() { + return id; + } } diff --git a/src/main/java/de/kherud/llama/args/Sampler.java b/src/main/java/de/kherud/llama/args/Sampler.java index 0864e91b..564a2e6f 100644 --- a/src/main/java/de/kherud/llama/args/Sampler.java +++ b/src/main/java/de/kherud/llama/args/Sampler.java @@ -2,10 +2,14 @@ public enum Sampler { - TOP_K, - TFS_Z, - TYPICAL_P, - TOP_P, - MIN_P, - TEMPERATURE + DRY, + TOP_K, + TOP_P, + TYP_P, + MIN_P, + TEMPERATURE, + XTC, + INFILL, + PENALTIES + } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index b5481cef..f4fbb0d6 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -15,7 +15,7 @@ public class LlamaModelTest { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; - private static final int nPredict = 10; + private static final int nPredict = 1024; private static LlamaModel model; @@ -24,11 +24,11 @@ public static void setup() { // LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> System.out.println(level + ": " + msg)); model = new LlamaModel( new ModelParameters() - .setNCtx(128) - .setModelFilePath("models/codellama-7b.Q2_K.gguf") +// .setCtxSize(128) + .setModel("/Users/vrao/Work/ml/llm_models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf") // .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") - .setNGpuLayers(43) - .setEmbedding(true) + .setGpuLayers(43) + .enableEmbedding().enableLogTimestamps().enableLogPrefix() ); } @@ -155,7 +155,7 @@ public void testCancelGenerating() { @Test public void testEmbedding() { float[] embedding = model.embed(prefix); - Assert.assertEquals(4096, embedding.length); + Assert.assertEquals(1536, embedding.length); } @Test @@ -164,10 +164,10 @@ public void testTokenization() { int[] encoded = model.encode(prompt); String decoded = model.decode(encoded); // the llama tokenizer adds a space before the prompt - Assert.assertEquals(" " + prompt, decoded); + Assert.assertEquals(prompt, decoded); } - @Test + @Ignore public void testLogText() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> messages.add(new LogMessage(level, msg))); @@ -186,7 +186,7 @@ public void testLogText() { } } - @Test + @Ignore public void testLogJSON() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.JSON, (level, msg) -> messages.add(new LogMessage(level, msg))); diff --git a/src/test/java/examples/GrammarExample.java b/src/test/java/examples/GrammarExample.java index a2fec2fb..d90de206 100644 --- a/src/test/java/examples/GrammarExample.java +++ b/src/test/java/examples/GrammarExample.java @@ -13,7 +13,7 @@ public static void main(String... args) { "expr ::= term ([-+*/] term)*\n" + "term ::= [0-9]"; ModelParameters modelParams = new ModelParameters() - .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf"); + .setModel("models/mistral-7b-instruct-v0.2.Q2_K.gguf"); InferenceParameters inferParams = new InferenceParameters("") .setGrammar(grammar); try (LlamaModel model = new LlamaModel(modelParams)) { diff --git a/src/test/java/examples/InfillExample.java b/src/test/java/examples/InfillExample.java index b73eeb0f..e13ecb7c 100644 --- a/src/test/java/examples/InfillExample.java +++ b/src/test/java/examples/InfillExample.java @@ -9,8 +9,8 @@ public class InfillExample { public static void main(String... args) { ModelParameters modelParams = new ModelParameters() - .setModelFilePath("models/codellama-7b.Q2_K.gguf") - .setNGpuLayers(43); + .setModel("models/codellama-7b.Q2_K.gguf") + .setGpuLayers(43); String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; String suffix = "\n return result\n"; diff --git a/src/test/java/examples/MainExample.java b/src/test/java/examples/MainExample.java index 92581144..2b5150a5 100644 --- a/src/test/java/examples/MainExample.java +++ b/src/test/java/examples/MainExample.java @@ -16,8 +16,8 @@ public class MainExample { public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() - .setModelFilePath("models/mistral-7b-instruct-v0.2.Q2_K.gguf") - .setNGpuLayers(43); + .setModel("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setGpuLayers(43); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + "requests immediately and with precision.\n\n" + From a718e2e1c5613309ea51e8a225e10e0c7887136a Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Feb 2025 11:08:13 -0800 Subject: [PATCH 298/384] replacing local model with modelWithUri --- src/main/cpp/jllama.cpp | 8 +++--- .../java/de/kherud/llama/LlamaModelTest.java | 25 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 29568727..c5dbfa17 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -554,7 +554,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) server_task_result_ptr result = ctx_server->queue_results.recv(id_task); - + if (result->is_error()) { std::string response = result->to_json()["message"].get(); @@ -563,6 +563,9 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE return nullptr; } const auto out_res = result->to_json(); + + + std::string response = out_res["content"].get(); if (result->is_stop()) { @@ -588,9 +591,6 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE } } } - - ctx_server->queue_results.remove_waiting_task_id(id_task); - jbyteArray jbytes = parse_jbytes(env, response); return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result->is_stop()); } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index f4fbb0d6..ae8ada74 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -15,7 +15,7 @@ public class LlamaModelTest { private static final String prefix = "def remove_non_ascii(s: str) -> str:\n \"\"\" "; private static final String suffix = "\n return result\n"; - private static final int nPredict = 1024; + private static final int nPredict = 10; private static LlamaModel model; @@ -24,9 +24,8 @@ public static void setup() { // LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> System.out.println(level + ": " + msg)); model = new LlamaModel( new ModelParameters() -// .setCtxSize(128) - .setModel("/Users/vrao/Work/ml/llm_models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf") -// .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") + .setCtxSize(128) + .setModelUrl("https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-1.5B-GGUF/resolve/main/DeepSeek-R1-Distill-Qwen-1.5B-Q2_K.gguf") .setGpuLayers(43) .enableEmbedding().enableLogTimestamps().enableLogPrefix() ); @@ -43,7 +42,7 @@ public static void tearDown() { public void testGenerateAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters(prefix) + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) @@ -62,8 +61,8 @@ public void testGenerateInfill() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") - .setInputPrefix(prefix) - .setInputSuffix(suffix) + .setInputPrefix("<|User|> " + prefix + " <|Assistant|> ") + .setInputSuffix(suffix ) .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) @@ -97,7 +96,7 @@ public void testGenerateGrammar() { public void testCompleteAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters(prefix) + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) @@ -113,7 +112,7 @@ public void testCompleteInfillCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") - .setInputPrefix(prefix) + .setInputPrefix("<|User|> " + prefix +" <|Assistant|> ") .setInputSuffix(suffix) .setTemperature(0.95f) .setStopStrings("\"\"\"") @@ -138,7 +137,7 @@ public void testCompleteGrammar() { @Test public void testCancelGenerating() { - InferenceParameters params = new InferenceParameters(prefix).setNPredict(nPredict); + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ").setNPredict(nPredict); int generated = 0; LlamaIterator iterator = model.generate(params).iterator(); @@ -172,7 +171,7 @@ public void testLogText() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> messages.add(new LogMessage(level, msg))); - InferenceParameters params = new InferenceParameters(prefix) + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") .setNPredict(nPredict) .setSeed(42); model.complete(params); @@ -191,7 +190,7 @@ public void testLogJSON() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.JSON, (level, msg) -> messages.add(new LogMessage(level, msg))); - InferenceParameters params = new InferenceParameters(prefix) + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") .setNPredict(nPredict) .setSeed(42); model.complete(params); @@ -208,7 +207,7 @@ public void testLogJSON() { @Test public void testLogStdout() { // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. - InferenceParameters params = new InferenceParameters(prefix) + InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") .setNPredict(nPredict) .setSeed(42); From 5745611ce90e63a159e7718895cec4e91d541cdd Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Feb 2025 12:34:20 -0800 Subject: [PATCH 299/384] updating version and readme and parameter. --- README.md | 6 +++--- pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 718ec4be..341e740c 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Access this library via Maven: de.kherud llama - 3.4.1 + 3.4.2 ``` @@ -37,7 +37,7 @@ Bu default the default library artifact is built only with CPU inference support de.kherud llama - 3.4.1 + 3.4.2 cuda12-linux-x86-64 ``` @@ -78,7 +78,7 @@ cmake --build build --config Release ``` > [!TIP] -> Use `-DGGML_CURL=ON` to download models via Java code using `ModelParameters#setModelUrl(String)`. +> Use `-DLLAMA_CURL=ON` to download models via Java code using `ModelParameters#setModelUrl(String)`. All compiled libraries will be put in a resources directory matching your platform, which will appear in the cmake output. For example something like: diff --git a/pom.xml b/pom.xml index 68674de9..a086bef1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.4.1 + 3.4.2 jar ${project.groupId}:${project.artifactId} From 091337388595a007285b04a2f1433084e04aba06 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Feb 2025 09:24:19 -0800 Subject: [PATCH 300/384] adding releaseTask and updated test to match workflow --- src/main/cpp/jllama.cpp | 10 ++++++++++ src/main/cpp/jllama.h | 9 +++++++++ src/main/java/de/kherud/llama/LlamaModel.java | 3 +++ src/test/java/de/kherud/llama/LlamaModelTest.java | 6 +++--- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index c5dbfa17..00eccbb7 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -548,6 +548,13 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv return *task_ids.begin(); } +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask(JNIEnv *env, jobject obj, jint id_task) +{ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + ctx_server->queue_results.remove_waiting_task_id(id_task); +} + JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) { jlong server_handle = env->GetLongField(obj, f_model_pointer); @@ -722,6 +729,9 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv return parse_jbytes(env, text); } + + + JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) { jlong server_handle = env->GetLongField(obj, f_model_pointer); diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 0ab39ea4..39048686 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -97,6 +97,15 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete (JNIEnv *, jobject); + + +/* + * Class: de_kherud_llama_LlamaModel + * Method: releaseTask + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask + (JNIEnv *, jobject, jint); #ifdef __cplusplus } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 1e8878c0..fc0e70fa 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -54,6 +54,7 @@ public String complete(InferenceParameters parameters) { parameters.setStream(false); int taskId = requestCompletion(parameters.toString()); LlamaOutput output = receiveCompletion(taskId); + releaseTask(taskId); return output.text; } @@ -129,5 +130,7 @@ public void close() { private native void loadModel(String... parameters) throws LlamaException; private native void delete(); + + private native void releaseTask(int taskId); } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index ae8ada74..35f3b092 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -25,7 +25,7 @@ public static void setup() { model = new LlamaModel( new ModelParameters() .setCtxSize(128) - .setModelUrl("https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-1.5B-GGUF/resolve/main/DeepSeek-R1-Distill-Qwen-1.5B-Q2_K.gguf") + .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setGpuLayers(43) .enableEmbedding().enableLogTimestamps().enableLogPrefix() ); @@ -154,7 +154,7 @@ public void testCancelGenerating() { @Test public void testEmbedding() { float[] embedding = model.embed(prefix); - Assert.assertEquals(1536, embedding.length); + Assert.assertEquals(4096, embedding.length); } @Test @@ -163,7 +163,7 @@ public void testTokenization() { int[] encoded = model.encode(prompt); String decoded = model.decode(encoded); // the llama tokenizer adds a space before the prompt - Assert.assertEquals(prompt, decoded); + Assert.assertEquals(" " +prompt, decoded); } @Ignore From 7c54bd386257a0e9200c2c5d1459195b3f38957b Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Feb 2025 10:33:25 -0800 Subject: [PATCH 301/384] replacing the modelPath --- src/test/java/de/kherud/llama/LlamaModelTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 35f3b092..c757d0c3 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -25,7 +25,8 @@ public static void setup() { model = new LlamaModel( new ModelParameters() .setCtxSize(128) - .setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") + .setModel("models/codellama-7b.Q2_K.gguf") + //.setModelUrl("https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf") .setGpuLayers(43) .enableEmbedding().enableLogTimestamps().enableLogPrefix() ); From d87a103a3c8d5288382ba373b093a7d09be25b66 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Feb 2025 14:38:52 -0800 Subject: [PATCH 302/384] adding chat format and LLAMA_CURL=ON to build --- .github/workflows/ci.yml | 8 ++++---- src/main/cpp/jllama.h | 18 ------------------ src/main/cpp/server.hpp | 1 + .../de/kherud/llama/InferenceParameters.java | 7 ++++++- .../java/de/kherud/llama/ModelParameters.java | 8 ++++++++ 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1db8b696..a13f5b4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile - .github/build.sh -DLLAMA_VERBOSE=ON + .github/build.sh -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON - name: Download model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests @@ -43,11 +43,11 @@ jobs: target: - { runner: macos-13, - cmake: '-DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON' + cmake: '-DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON' } - { runner: macos-14, - cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON' + cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON' } steps: - uses: actions/checkout@v4 @@ -82,7 +82,7 @@ jobs: - name: Build libraries run: | mvn compile - .github\build.bat -DLLAMA_VERBOSE=ON + .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 39048686..fcc01486 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -8,24 +8,6 @@ extern "C" { #endif -/* - * Class: de_kherud_llama_LlamaModel - * Method: requestEmbedding - * Signature: (Ljava/lang/String;)[F - */ -JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestEmbedding - (JNIEnv *, jobject, jstring); - - -/* - * Class: de_kherud_llama_LlamaModel - * Method: receiveEmbedding - * Signature: (Ljava/lang/Int;)[F - */ -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_receiveEmbedding - (JNIEnv *, jobject, jint); - - /* * Class: de_kherud_llama_LlamaModel * Method: embed diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 70e7236d..beed793d 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -164,6 +164,7 @@ struct slot_params { {"grammar_trigger_words", grammar_trigger_words}, {"grammar_trigger_tokens", sampling.grammar_trigger_tokens}, {"preserved_tokens", sampling.preserved_tokens}, + {"chat_format", common_chat_format_name(oaicompat_chat_format)}, {"samplers", samplers}, {"speculative.n_max", speculative.n_max}, {"speculative.n_min", speculative.n_min}, diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 2c494c8c..0ac1b1dc 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -46,6 +46,7 @@ public final class InferenceParameters extends JsonParameters { private static final String PARAM_SAMPLERS = "samplers"; private static final String PARAM_STREAM = "stream"; private static final String PARAM_USE_CHAT_TEMPLATE = "use_chat_template"; + private static final String PARAM_USE_JINJA = "use_jinja"; public InferenceParameters(String prompt) { // we always need a prompt @@ -488,8 +489,12 @@ InferenceParameters setStream(boolean stream) { * Set whether or not generate should apply a chat template (default: false) */ public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { - parameters.put(PARAM_USE_CHAT_TEMPLATE, String.valueOf(useChatTemplate)); + parameters.put(PARAM_USE_JINJA, String.valueOf(useChatTemplate)); return this; } + + + + } diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 91587001..8615bd50 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -950,5 +950,13 @@ public ModelParameters setModelDraft(String modelDraft) { parameters.put("--model-draft", modelDraft); return this; } + + /** + * Enable jinja for templating + */ + public ModelParameters enableJinja() { + parameters.put("--jinja", null); + return this; + } } From b7962aa0188e8e1b059e6c03170ebf3de9c35429 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Feb 2025 23:47:35 -0800 Subject: [PATCH 303/384] updating version to latest. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b5f08f3..64d3d0dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4689 + GIT_TAG b4702 ) FetchContent_MakeAvailable(llama.cpp) From dcb14ff567619ddbb076d9a0a28ad18971db0ac4 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 14 Feb 2025 01:33:24 -0800 Subject: [PATCH 304/384] reverting to older version of llamacpp --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 64d3d0dc..1b5f08f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4702 + GIT_TAG b4689 ) FetchContent_MakeAvailable(llama.cpp) From e9b3d52e59ba5b15431539c675efc92e4b9f78b4 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 14 Feb 2025 22:32:15 -0800 Subject: [PATCH 305/384] adding tool support --- CMakeLists.txt | 2 +- src/main/cpp/server.hpp | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b5f08f3..3cf89dc6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4689 + GIT_TAG b4719 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index beed793d..b435c3d4 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -705,7 +705,7 @@ struct server_task_result_cmpl_final : server_task_result { return res; } - json to_json_oaicompat_chat() { +json to_json_oaicompat_chat() { std::string finish_reason = "length"; common_chat_msg msg; if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { @@ -716,9 +716,19 @@ struct server_task_result_cmpl_final : server_task_result { msg.content = content; } - json tool_calls; + json message { + {"role", "assistant"}, + }; + if (!msg.reasoning_content.empty()) { + message["reasoning_content"] = msg.reasoning_content; + } + if (msg.content.empty() && !msg.tool_calls.empty()) { + message["content"] = json(); + } else { + message["content"] = msg.content; + } if (!msg.tool_calls.empty()) { - tool_calls = json::array(); + auto tool_calls = json::array(); for (const auto & tc : msg.tool_calls) { tool_calls.push_back({ {"type", "function"}, @@ -729,15 +739,7 @@ struct server_task_result_cmpl_final : server_task_result { {"id", tc.id}, }); } - } - - json message { - {"content", msg.content}, - {"tool_calls", tool_calls}, - {"role", "assistant"}, - }; - if (!msg.tool_plan.empty()) { - message["tool_plan"] = msg.tool_plan; + message["tool_calls"] = tool_calls; } json choice { From ea1327a0a2548f75aa3266a4d2dfc05e55a27385 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Sat, 15 Feb 2025 13:54:51 -0800 Subject: [PATCH 306/384] adding condition for Grammar --- src/main/cpp/utils.hpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 5ff886da..1c5e276a 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -642,16 +642,18 @@ static json oaicompat_completion_params_parse( llama_params["chat_format"] = static_cast(chat_params.format); llama_params["prompt"] = chat_params.prompt; - llama_params["grammar"] = chat_params.grammar; - llama_params["grammar_lazy"] = chat_params.grammar_lazy; - auto grammar_triggers = json::array(); - for (const auto & trigger : chat_params.grammar_triggers) { - grammar_triggers.push_back({ - {"word", trigger.word}, - {"at_start", trigger.at_start}, - }); + if (inputs.json_schema == nullptr) { + llama_params["grammar"] = chat_params.grammar; + llama_params["grammar_lazy"] = chat_params.grammar_lazy; + auto grammar_triggers = json::array(); + for (const auto & trigger : chat_params.grammar_triggers) { + grammar_triggers.push_back({ + {"word", trigger.word}, + {"at_start", trigger.at_start}, + }); + } + llama_params["grammar_triggers"] = grammar_triggers; } - llama_params["grammar_triggers"] = grammar_triggers; llama_params["preserved_tokens"] = chat_params.preserved_tokens; for (const auto & stop : chat_params.additional_stops) { llama_params["stop"].push_back(stop); From 9fbebbab17c047b875eb3666ee5ada843ab4926a Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Sat, 15 Feb 2025 13:57:48 -0800 Subject: [PATCH 307/384] fixing code for apply template --- src/main/cpp/server.hpp | 46 ++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index b435c3d4..332c1edc 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1893,31 +1893,43 @@ struct server_context { return true; } + + bool validate_jinja_templates() const { + auto templates = common_chat_templates_from_model(model, ""); + common_chat_inputs inputs; + inputs.messages = json::array({ + { + { "role", "user" }, + { "content", "test" }, + } + }); + GGML_ASSERT(templates.template_default); + try { + common_chat_params_init(*templates.template_default, inputs); + if (templates.template_tool_use) { + common_chat_params_init(*templates.template_tool_use, inputs); + } + + return true; + } catch (const std::exception & e) { + SRV_ERR("failed to apply template: %s\n", e.what()); + + return false; + } + } + bool validate_builtin_chat_template(bool use_jinja) const { llama_chat_message chat[] = {{"user", "test"}}; if (use_jinja) { - auto templates = common_chat_templates_from_model(model, ""); - common_chat_inputs inputs; - inputs.messages = json::array({{ - {"role", "user"}, - {"content", "test"}, - }}); - GGML_ASSERT(templates.template_default); - try { - common_chat_params_init(*templates.template_default, inputs); - if (templates.template_tool_use) { - common_chat_params_init(*templates.template_tool_use, inputs); - } - return true; - } catch (const std::exception & e) { - SRV_ERR("failed to apply template: %s\n", e.what()); - return false; - } + return validate_jinja_templates(); } else { const char * tmpl = llama_model_chat_template(model, /* name */ nullptr); const int32_t chat_res = llama_chat_apply_template(tmpl, chat, 1, true, nullptr, 0); + if (chat_res < 0) { + return validate_jinja_templates(); + } return chat_res > 0; } } From 22cefc5c279683357866d4e3feebbcdedc3c2c56 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 16 Feb 2025 13:27:52 +0100 Subject: [PATCH 308/384] install libcurl in github workflows --- .github/workflows/ci.yml | 6 +++++- .github/workflows/release.yaml | 6 +++++- .gitignore | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a13f5b4a..d8db1a21 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,8 @@ jobs: with: distribution: 'zulu' java-version: '11' + - name: Install libcurl + run: sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | @@ -79,10 +81,12 @@ jobs: with: distribution: 'zulu' java-version: '11' + - name: Install libcurl + run: vcpkg install curl - name: Build libraries run: | mvn compile - .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON + .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 85829ed9..2e60bffc 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,6 +18,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Install libcurl + run: sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries shell: bash run: | @@ -121,10 +123,12 @@ jobs: } steps: - uses: actions/checkout@v4 + - name: Install curl + run: vcpkg install curl - name: Build libraries shell: cmd run: | - .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} + .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - name: Upload artifacts uses: actions/upload-artifact@v4 with: diff --git a/.gitignore b/.gitignore index 8857fd04..274f8687 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea target build +cmake-build-* .DS_Store .directory .vscode From 2f8d2b0a0fb7671b399876109bdd8275a4ff130b Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 21 Feb 2025 10:09:16 -0800 Subject: [PATCH 309/384] updating test case to make codellama model --- .../java/de/kherud/llama/LlamaModelTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index c757d0c3..6fbe2e43 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -43,7 +43,7 @@ public static void tearDown() { public void testGenerateAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") + InferenceParameters params = new InferenceParameters(prefix) .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) @@ -62,7 +62,7 @@ public void testGenerateInfill() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") - .setInputPrefix("<|User|> " + prefix + " <|Assistant|> ") + .setInputPrefix(prefix) .setInputSuffix(suffix ) .setTemperature(0.95f) .setStopStrings("\"\"\"") @@ -97,7 +97,7 @@ public void testGenerateGrammar() { public void testCompleteAnswer() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") + InferenceParameters params = new InferenceParameters(prefix) .setTemperature(0.95f) .setStopStrings("\"\"\"") .setNPredict(nPredict) @@ -113,7 +113,7 @@ public void testCompleteInfillCustom() { Map logitBias = new HashMap<>(); logitBias.put(2, 2.0f); InferenceParameters params = new InferenceParameters("") - .setInputPrefix("<|User|> " + prefix +" <|Assistant|> ") + .setInputPrefix(prefix) .setInputSuffix(suffix) .setTemperature(0.95f) .setStopStrings("\"\"\"") @@ -138,7 +138,7 @@ public void testCompleteGrammar() { @Test public void testCancelGenerating() { - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ").setNPredict(nPredict); + InferenceParameters params = new InferenceParameters(prefix).setNPredict(nPredict); int generated = 0; LlamaIterator iterator = model.generate(params).iterator(); @@ -172,7 +172,7 @@ public void testLogText() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.TEXT, (level, msg) -> messages.add(new LogMessage(level, msg))); - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") + InferenceParameters params = new InferenceParameters(prefix) .setNPredict(nPredict) .setSeed(42); model.complete(params); @@ -191,7 +191,7 @@ public void testLogJSON() { List messages = new ArrayList<>(); LlamaModel.setLogger(LogFormat.JSON, (level, msg) -> messages.add(new LogMessage(level, msg))); - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") + InferenceParameters params = new InferenceParameters(prefix) .setNPredict(nPredict) .setSeed(42); model.complete(params); @@ -208,7 +208,7 @@ public void testLogJSON() { @Test public void testLogStdout() { // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. - InferenceParameters params = new InferenceParameters("<|User|> " + prefix +" <|Assistant|> ") + InferenceParameters params = new InferenceParameters(prefix) .setNPredict(nPredict) .setSeed(42); From 54bf4bd58ed47010369c1ecbf2e17bc4456914ce Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 21 Feb 2025 11:09:10 -0800 Subject: [PATCH 310/384] updating to add speculative execution. --- CMakeLists.txt | 2 +- src/main/cpp/jllama.cpp | 66 +++++++++++--- src/main/cpp/server.hpp | 65 +++----------- src/main/cpp/utils.hpp | 189 ++++++++++++++++++---------------------- 4 files changed, 150 insertions(+), 172 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cf89dc6..216faed6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4719 + GIT_TAG b4753 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 00eccbb7..b719a551 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -443,23 +443,63 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo LOG_INF("%s: model loaded\n", __func__); const auto model_meta = ctx_server->model_meta(); + + if (!params.speculative.model.empty() || !params.speculative.hf_repo.empty()) { + SRV_INF("loading draft model '%s'\n", params.speculative.model.c_str()); + auto params_dft = params; - // if a custom chat template is not supplied, we will use the one that comes with the model (if any) - if (params.chat_template.empty()) - { - if (!ctx_server->validate_builtin_chat_template(params.use_jinja)) - { - LOG_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. " - "This may cause the model to output suboptimal responses\n", - __func__); - params.chat_template = "chatml"; + params_dft.devices = params.speculative.devices; + params_dft.hf_file = params.speculative.hf_file; + params_dft.hf_repo = params.speculative.hf_repo; + params_dft.model = params.speculative.model; + params_dft.model_url = params.speculative.model_url; + params_dft.n_ctx = params.speculative.n_ctx == 0 ? params.n_ctx / params.n_parallel : params.speculative.n_ctx; + params_dft.n_gpu_layers = params.speculative.n_gpu_layers; + params_dft.n_parallel = 1; + + common_init_result llama_init_dft = common_init_from_params(params_dft); + + llama_model * model_dft = llama_init_dft.model.get(); + + if (model_dft == nullptr) { + SRV_ERR("failed to load draft model, '%s'\n", params.speculative.model.c_str()); + } + + if (!common_speculative_are_compatible(ctx_server->ctx, llama_init_dft.context.get())) { + SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", params.speculative.model.c_str(), params.model.c_str()); + } + + const int n_ctx_dft = llama_n_ctx(llama_init_dft.context.get()); + + ctx_server->cparams_dft = common_context_params_to_llama(params_dft); + ctx_server->cparams_dft.n_batch = n_ctx_dft; + + // force F16 KV cache for the draft model for extra performance + ctx_server->cparams_dft.type_k = GGML_TYPE_F16; + ctx_server->cparams_dft.type_v = GGML_TYPE_F16; + + // the context is not needed - we will create one for each slot + llama_init_dft.context.reset(); } - } - // print sample chat example to make it clear which template is used + ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, params.chat_template); + try { + common_chat_format_example(ctx_server->chat_templates.get(), params.use_jinja); + } catch (const std::exception & e) { + SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); + ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, "chatml"); + } + + // print sample chat example to make it clear which template is used LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, - params.chat_template.empty() ? "(built-in)" : params.chat_template.c_str(), - common_chat_format_example(*ctx_server->chat_templates.template_default, ctx_server->params_base.use_jinja) .c_str()); + common_chat_templates_source(ctx_server->chat_templates.get()), + common_chat_format_example(ctx_server->chat_templates.get(), ctx_server->params_base.use_jinja).c_str()); + + + // print sample chat example to make it clear which template is used +// LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, + // common_chat_templates_source(ctx_server->chat_templates.get()), + // common_chat_format_example(*ctx_server->chat_templates.template_default, ctx_server->params_base.use_jinja) .c_str()); ctx_server->queue_tasks.on_new_task( std::bind(&server_context::process_single_task, ctx_server, std::placeholders::_1)); diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 332c1edc..40c65889 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -265,7 +265,7 @@ struct server_task { params.speculative.p_min = json_value(data, "speculative.p_min", defaults.speculative.p_min); params.speculative.n_min = std::min(params.speculative.n_max, params.speculative.n_min); - params.speculative.n_min = std::max(params.speculative.n_min, 2); + params.speculative.n_min = std::max(params.speculative.n_min, 0); params.speculative.n_max = std::max(params.speculative.n_max, 0); // Use OpenAI API logprobs only if n_probs wasn't provided @@ -320,9 +320,6 @@ struct server_task { } // process "json_schema" and "grammar" - if (data.contains("json_schema") && !data.at("json_schema").is_null() && data.contains("grammar") && !data.at("grammar").is_null()) { - throw std::runtime_error("Either \"json_schema\" or \"grammar\" can be specified, but not both"); - } if (data.contains("json_schema") && !data.contains("grammar")) { try { auto schema = json_value(data, "json_schema", json::object()); @@ -705,7 +702,7 @@ struct server_task_result_cmpl_final : server_task_result { return res; } -json to_json_oaicompat_chat() { + json to_json_oaicompat_chat() { std::string finish_reason = "length"; common_chat_msg msg; if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { @@ -984,6 +981,7 @@ struct server_task_result_cmpl_partial : server_task_result { } }; + struct server_task_result_embd : server_task_result { int index = 0; std::vector> embedding; @@ -1430,7 +1428,6 @@ struct server_slot { } }; - struct server_metrics { int64_t t_start = 0; @@ -1483,6 +1480,7 @@ struct server_metrics { } }; + struct server_queue { int id = 0; bool running; @@ -1799,7 +1797,7 @@ struct server_context { // Necessary similarity of prompt for slot selection float slot_prompt_similarity = 0.0f; - common_chat_templates chat_templates; + common_chat_templates_ptr chat_templates; ~server_context() { // Clear any sampling context @@ -1883,55 +1881,15 @@ struct server_context { llama_init_dft.context.reset(); } - if (params_base.chat_template.empty() && !validate_builtin_chat_template(params.use_jinja)) { - SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); - chat_templates = common_chat_templates_from_model(model, "chatml"); - } else { - chat_templates = common_chat_templates_from_model(model, params_base.chat_template); - } - GGML_ASSERT(chat_templates.template_default.get() != nullptr); - - return true; - } - - bool validate_jinja_templates() const { - auto templates = common_chat_templates_from_model(model, ""); - common_chat_inputs inputs; - inputs.messages = json::array({ - { - { "role", "user" }, - { "content", "test" }, - } - }); - GGML_ASSERT(templates.template_default); + chat_templates = common_chat_templates_init(model, params_base.chat_template); try { - common_chat_params_init(*templates.template_default, inputs); - if (templates.template_tool_use) { - common_chat_params_init(*templates.template_tool_use, inputs); - } - - return true; + common_chat_format_example(chat_templates.get(), params.use_jinja); } catch (const std::exception & e) { - SRV_ERR("failed to apply template: %s\n", e.what()); - - return false; + SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); + chat_templates = common_chat_templates_init(model, "chatml"); } - } - - - bool validate_builtin_chat_template(bool use_jinja) const { - llama_chat_message chat[] = {{"user", "test"}}; - if (use_jinja) { - return validate_jinja_templates(); - } else { - const char * tmpl = llama_model_chat_template(model, /* name */ nullptr); - const int32_t chat_res = llama_chat_apply_template(tmpl, chat, 1, true, nullptr, 0); - if (chat_res < 0) { - return validate_jinja_templates(); - } - return chat_res > 0; - } + return true; } void init() { @@ -2080,8 +2038,8 @@ struct server_context { if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { // Might be better to reject the request with a 400 ? + SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d", slot.params.n_predict, slot.n_predict); slot.params.n_predict = slot.n_predict; - SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d", slot.n_predict, slot.n_predict); } if (slot.params.ignore_eos && has_eos_token) { @@ -3358,6 +3316,7 @@ struct server_context { } }; + static void common_params_handle_model_default( std::string & model, const std::string & model_url, diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index 1c5e276a..b454465f 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -18,8 +18,7 @@ #define JSON_ASSERT GGML_ASSERT #include "json.hpp" -#include "chat.hpp" -#include "chat-template.hpp" +#include "chat.h" #include #include @@ -352,41 +351,6 @@ static llama_tokens format_infill( return embd_inp; } -/// Format given chat. If tmpl is empty, we take the template from model metadata -inline std::string format_chat(const common_chat_template & tmpl, const std::vector & messages) { - std::vector chat; - - for (size_t i = 0; i < messages.size(); ++i) { - const auto & curr_msg = messages[i]; - - std::string role = json_value(curr_msg, "role", std::string("")); - - std::string content; - if (curr_msg.contains("content")) { - if (curr_msg["content"].is_string()) { - content = curr_msg["content"].get(); - } else if (curr_msg["content"].is_array()) { - for (const auto & part : curr_msg["content"]) { - if (part.contains("text")) { - content += "\n" + part["text"].get(); - } - } - } else { - throw std::runtime_error("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); - } - } else { - throw std::runtime_error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)"); - } - - chat.push_back({role, content, /* tool_calls= */ {}}); - } - - const auto formatted_chat = common_chat_apply_template(tmpl, chat, true, /* use_jinja= */ false); - LOG_DBG("formatted_chat: '%s'\n", formatted_chat.c_str()); - - return formatted_chat; -} - // // base64 utils (TODO: move to common in the future) // @@ -572,12 +536,10 @@ static json oaicompat_completion_params_parse(const json & body) { static json oaicompat_completion_params_parse( const json & body, /* openai api json semantics */ bool use_jinja, - const common_chat_templates & chat_templates) + common_reasoning_format reasoning_format, + const struct common_chat_templates * tmpls) { json llama_params; - const auto & tmpl = body.contains("tools") && chat_templates.template_tool_use - ? *chat_templates.template_tool_use - : *chat_templates.template_default; auto tools = json_value(body, "tools", json()); auto stream = json_value(body, "stream", false); @@ -603,63 +565,58 @@ static json oaicompat_completion_params_parse( llama_params["stop"] = json_value(body, "stop", json::array()); } + auto json_schema = json_value(body, "json_schema", json()); + auto grammar = json_value(body, "grammar", std::string()); + if (!json_schema.is_null() && !grammar.empty()) { + throw std::runtime_error("Cannot use both json_schema and grammar"); + } + // Handle "response_format" field if (body.contains("response_format")) { json response_format = json_value(body, "response_format", json::object()); std::string response_type = json_value(response_format, "type", std::string()); if (response_type == "json_object") { - llama_params["json_schema"] = json_value(response_format, "schema", json::object()); + json_schema = json_value(response_format, "schema", json::object()); } else if (response_type == "json_schema") { json json_schema = json_value(response_format, "json_schema", json::object()); - llama_params["json_schema"] = json_value(json_schema, "schema", json::object()); + json_schema = json_value(json_schema, "schema", json::object()); } else if (!response_type.empty() && response_type != "text") { throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); } } + common_chat_templates_inputs inputs; + inputs.messages = common_chat_msgs_parse_oaicompat(body.at("messages")); + inputs.tools = common_chat_tools_parse_oaicompat(tools); + inputs.tool_choice = common_chat_tool_choice_parse_oaicompat(json_value(body, "tool_choice", std::string("auto"))); + inputs.json_schema = json_schema.is_null() ? "" : json_schema.dump(); + inputs.grammar = grammar; + inputs.add_generation_prompt = true; + inputs.use_jinja = use_jinja; + inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); + inputs.extract_reasoning = reasoning_format != COMMON_REASONING_FORMAT_NONE; + if (!inputs.tools.empty() && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && body.contains("grammar")) { + throw std::runtime_error("Cannot use custom grammar constraints with tools."); + } + // Apply chat template to the list of messages - if (use_jinja) { - auto tool_choice = json_value(body, "tool_choice", std::string("auto")); - if (tool_choice != "none" && tool_choice != "auto" && tool_choice != "required") { - throw std::runtime_error("Invalid tool_choice: " + tool_choice); - } - if (tool_choice != "none" && llama_params.contains("grammar")) { - throw std::runtime_error("Cannot use custom grammar constraints with tools."); - } - common_chat_inputs inputs; - inputs.messages = body.at("messages"); - inputs.tools = tools; - inputs.tool_choice = tool_choice; - inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); - if (inputs.parallel_tool_calls && !tmpl.original_caps().supports_parallel_tool_calls) { - LOG_DBG("Disabling parallel_tool_calls because the template does not support it\n"); - inputs.parallel_tool_calls = false; - } - inputs.stream = stream; - // TODO: support mixing schema w/ tools beyond generic format. - inputs.json_schema = json_value(llama_params, "json_schema", json()); - auto chat_params = common_chat_params_init(tmpl, inputs); - - llama_params["chat_format"] = static_cast(chat_params.format); - llama_params["prompt"] = chat_params.prompt; - if (inputs.json_schema == nullptr) { - llama_params["grammar"] = chat_params.grammar; - llama_params["grammar_lazy"] = chat_params.grammar_lazy; - auto grammar_triggers = json::array(); - for (const auto & trigger : chat_params.grammar_triggers) { - grammar_triggers.push_back({ - {"word", trigger.word}, - {"at_start", trigger.at_start}, - }); - } - llama_params["grammar_triggers"] = grammar_triggers; - } - llama_params["preserved_tokens"] = chat_params.preserved_tokens; - for (const auto & stop : chat_params.additional_stops) { - llama_params["stop"].push_back(stop); - } - } else { - llama_params["prompt"] = format_chat(tmpl, body.at("messages")); + auto chat_params = common_chat_templates_apply(tmpls, inputs); + + llama_params["chat_format"] = static_cast(chat_params.format); + llama_params["prompt"] = chat_params.prompt; + llama_params["grammar"] = chat_params.grammar; + llama_params["grammar_lazy"] = chat_params.grammar_lazy; + auto grammar_triggers = json::array(); + for (const auto & trigger : chat_params.grammar_triggers) { + grammar_triggers.push_back({ + {"word", trigger.word}, + {"at_start", trigger.at_start}, + }); + } + llama_params["grammar_triggers"] = grammar_triggers; + llama_params["preserved_tokens"] = chat_params.preserved_tokens; + for (const auto & stop : chat_params.additional_stops) { + llama_params["stop"].push_back(stop); } // Handle "n" field @@ -731,29 +688,51 @@ static json format_embeddings_response_oaicompat(const json & request, const jso return res; } -static json format_response_rerank(const json & request, const json & ranks) { - json data = json::array(); - int32_t n_tokens = 0; - int i = 0; - for (const auto & rank : ranks) { - data.push_back(json{ - {"index", i++}, - {"relevance_score", json_value(rank, "score", 0.0)}, - }); +static json format_response_rerank( + const json & request, + const json & ranks, + bool is_tei_format, + std::vector & texts) { + json res; + if (is_tei_format) { + // TEI response format + res = json::array(); + bool return_text = json_value(request, "return_text", false); + for (const auto & rank : ranks) { + int index = json_value(rank, "index", 0); + json elem = json{ + {"index", index}, + {"score", json_value(rank, "score", 0.0)}, + }; + if (return_text) { + elem["text"] = std::move(texts[index]); + } + res.push_back(elem); + } + } else { + // Jina response format + json results = json::array(); + int32_t n_tokens = 0; + for (const auto & rank : ranks) { + results.push_back(json{ + {"index", json_value(rank, "index", 0)}, + {"relevance_score", json_value(rank, "score", 0.0)}, + }); + + n_tokens += json_value(rank, "tokens_evaluated", 0); + } - n_tokens += json_value(rank, "tokens_evaluated", 0); + res = json{ + {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json{ + {"prompt_tokens", n_tokens}, + {"total_tokens", n_tokens} + }}, + {"results", results} + }; } - json res = json { - {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", "list"}, - {"usage", json { - {"prompt_tokens", n_tokens}, - {"total_tokens", n_tokens} - }}, - {"results", data} - }; - return res; } From 2e107d56c64bb465be5da31a3e0a11c81d855276 Mon Sep 17 00:00:00 2001 From: Gleb Sizov Date: Mon, 3 Mar 2025 09:25:56 +0100 Subject: [PATCH 311/384] Added json schema to grammar method --- pom.xml | 2 +- src/main/cpp/jllama.cpp | 9 +++++++ src/main/cpp/jllama.h | 8 ++++++ src/main/java/de/kherud/llama/LlamaModel.java | 5 ++++ .../java/de/kherud/llama/LlamaModelTest.java | 25 +++++++++++++++++++ 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 68674de9..a086bef1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.4.1 + 3.4.2 jar ${project.groupId}:${project.artifactId} diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index d59f3b77..8ea501bf 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,6 +1,7 @@ #include "jllama.h" #include "llama.h" +#include "json-schema-to-grammar.h" #include "nlohmann/json.hpp" #include "server.hpp" @@ -667,3 +668,11 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc } } } + +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes(JNIEnv *env, jclass clazz, jstring j_schema) +{ + const std::string c_schema = parse_jstring(env, j_schema); + nlohmann::ordered_json c_schema_json = nlohmann::ordered_json::parse(c_schema); + const std::string c_grammar = json_schema_to_grammar(c_schema_json); + return parse_jbytes(env, c_grammar); +} \ No newline at end of file diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 2fd0529e..2b3a6bc4 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -78,6 +78,14 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel */ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete (JNIEnv *, jobject); + +/* + * Class: de_kherud_llama_LlamaModel + * Method: jsonSchemaToGrammarBytes + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes + (JNIEnv *, jclass, jstring); #ifdef __cplusplus } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index b78e056e..5535dbbe 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -128,4 +128,9 @@ public void close() { private native void delete(); + private static native byte[] jsonSchemaToGrammarBytes(String schema); + + public static String jsonSchemaToGrammar(String schema) { + return new String(jsonSchemaToGrammarBytes(schema), StandardCharsets.UTF_8); + } } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index b5481cef..7253f8b6 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -269,4 +269,29 @@ private LogMessage(LogLevel level, String text) { this.text = text; } } + + @Test + public void testJsonSchemaToGrammar() { + String schema = "{\n" + + " \"properties\": {\n" + + " \"a\": {\"type\": \"string\"},\n" + + " \"b\": {\"type\": \"string\"},\n" + + " \"c\": {\"type\": \"string\"}\n" + + " },\n" + + " \"additionalProperties\": false\n" + + "}"; + + String expectedGrammar = "a-kv ::= \"\\\"a\\\"\" space \":\" space string\n" + + "a-rest ::= ( \",\" space b-kv )? b-rest\n" + + "b-kv ::= \"\\\"b\\\"\" space \":\" space string\n" + + "b-rest ::= ( \",\" space c-kv )?\n" + + "c-kv ::= \"\\\"c\\\"\" space \":\" space string\n" + + "char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n" + + "root ::= \"{\" space (a-kv a-rest | b-kv b-rest | c-kv )? \"}\" space\n" + + "space ::= | \" \" | \"\\n\" [ \\t]{0,20}\n" + + "string ::= \"\\\"\" char* \"\\\"\" space\n"; + + String actualGrammar = LlamaModel.jsonSchemaToGrammar(schema); + Assert.assertEquals(expectedGrammar, actualGrammar); + } } From 15dbe6857767ab84939f0721b0d21e542e546ac5 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 5 Mar 2025 16:53:50 -0800 Subject: [PATCH 312/384] updating dependency to latest llamacpp version --- CMakeLists.txt | 2 +- src/main/cpp/server.hpp | 71 +++++++++++++++++++++++------------------ src/main/cpp/utils.hpp | 32 +++++++++++++------ 3 files changed, 64 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 216faed6..6fe8778b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4753 + GIT_TAG b4831 ) FetchContent_MakeAvailable(llama.cpp) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 40c65889..da2b410b 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -26,6 +26,7 @@ using json = nlohmann::ordered_json; constexpr int HTTP_POLLING_SECONDS = 1; + enum stop_type { STOP_TYPE_NONE, STOP_TYPE_EOS, @@ -33,7 +34,7 @@ enum stop_type { STOP_TYPE_LIMIT, }; -// state diagram: https://github.com/ggerganov/llama.cpp/pull/9283 +// state diagram: https://github.com/ggml-org/llama.cpp/pull/9283 enum slot_state { SLOT_STATE_IDLE, SLOT_STATE_STARTED, // TODO: this state is only used for setting up the initial prompt processing; maybe merge it with launch_slot_with_task in the future @@ -122,9 +123,9 @@ struct slot_params { lora.push_back({{"id", i}, {"scale", this->lora[i].scale}}); } - std::vector grammar_trigger_words; - for (const auto & trigger : sampling.grammar_trigger_words) { - grammar_trigger_words.push_back(trigger.word); + auto grammar_triggers = json::array(); + for (const auto & trigger : sampling.grammar_triggers) { + grammar_triggers.push_back(trigger.to_json()); } return json { @@ -161,8 +162,8 @@ struct slot_params { {"n_probs", sampling.n_probs}, {"min_keep", sampling.min_keep}, {"grammar", sampling.grammar}, - {"grammar_trigger_words", grammar_trigger_words}, - {"grammar_trigger_tokens", sampling.grammar_trigger_tokens}, + {"grammar_lazy", sampling.grammar_lazy}, + {"grammar_triggers", grammar_triggers}, {"preserved_tokens", sampling.preserved_tokens}, {"chat_format", common_chat_format_name(oaicompat_chat_format)}, {"samplers", samplers}, @@ -347,24 +348,6 @@ struct server_task { } { - const auto grammar_triggers = data.find("grammar_triggers"); - if (grammar_triggers != data.end()) { - for (const auto & t : *grammar_triggers) { - common_grammar_trigger trigger; - trigger.word = t.at("word"); - trigger.at_start = t.at("at_start"); - - auto ids = common_tokenize(vocab, trigger.word, /* add_special= */ false, /* parse_special= */ true); - if (ids.size() == 1) { - SRV_DBG("Grammar trigger token: %d (`%s`)\n", ids[0], trigger.word.c_str()); - params.sampling.grammar_trigger_tokens.push_back(ids[0]); - params.sampling.preserved_tokens.insert(ids[0]); - continue; - } - SRV_DBG("Grammar trigger word: `%s`\n", trigger.word.c_str()); - params.sampling.grammar_trigger_words.push_back(trigger); - } - } const auto preserved_tokens = data.find("preserved_tokens"); if (preserved_tokens != data.end()) { for (const auto & t : *preserved_tokens) { @@ -374,12 +357,38 @@ struct server_task { params.sampling.preserved_tokens.insert(ids[0]); } else { // This may happen when using a tool call style meant for a model with special tokens to preserve on a model without said tokens. - SRV_WRN("Not preserved because more than 1 token (wrong chat template override?): %s\n", t.get().c_str()); + SRV_DBG("Not preserved because more than 1 token: %s\n", t.get().c_str()); } } } - if (params.sampling.grammar_lazy) { - GGML_ASSERT(params.sampling.grammar_trigger_tokens.size() > 0 || params.sampling.grammar_trigger_words.size() > 0); + const auto grammar_triggers = data.find("grammar_triggers"); + if (grammar_triggers != data.end()) { + for (const auto & t : *grammar_triggers) { + auto ct = common_grammar_trigger::from_json(t); + if (ct.type == COMMON_GRAMMAR_TRIGGER_TYPE_WORD) { + const auto & word = ct.value; + auto ids = common_tokenize(vocab, word, /* add_special= */ false, /* parse_special= */ true); + if (ids.size() == 1) { + auto token = ids[0]; + if (std::find(params.sampling.preserved_tokens.begin(), params.sampling.preserved_tokens.end(), (llama_token) token) == params.sampling.preserved_tokens.end()) { + throw std::runtime_error("Grammar trigger word should be marked as preserved token: " + word); + } + SRV_DBG("Grammar trigger token: %d (`%s`)\n", token, word.c_str()); + common_grammar_trigger trigger; + trigger.type = COMMON_GRAMMAR_TRIGGER_TYPE_TOKEN; + trigger.value = (llama_token) token; + params.sampling.grammar_triggers.push_back(trigger); + } else { + SRV_DBG("Grammar trigger word: `%s`\n", word.c_str()); + params.sampling.grammar_triggers.push_back({COMMON_GRAMMAR_TRIGGER_TYPE_WORD, word}); + } + } else { + params.sampling.grammar_triggers.push_back(ct); + } + } + } + if (params.sampling.grammar_lazy && params.sampling.grammar_triggers.empty()) { + throw std::runtime_error("Error: no triggers set for lazy grammar!"); } } @@ -981,7 +990,6 @@ struct server_task_result_cmpl_partial : server_task_result { } }; - struct server_task_result_embd : server_task_result { int index = 0; std::vector> embedding; @@ -1480,7 +1488,6 @@ struct server_metrics { } }; - struct server_queue { int id = 0; bool running; @@ -2038,7 +2045,7 @@ struct server_context { if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { // Might be better to reject the request with a 400 ? - SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d", slot.params.n_predict, slot.n_predict); + SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d\n", slot.params.n_predict, slot.n_predict); slot.params.n_predict = slot.n_predict; } @@ -2996,7 +3003,7 @@ struct server_context { const int64_t kv_shift = (int64_t) head_p - (int64_t) head_c; llama_kv_cache_seq_rm (ctx, slot.id, head_p, head_c); - llama_kv_cache_seq_add(ctx, slot.id, head_c, -1, kv_shift); + llama_kv_cache_seq_add(ctx, slot.id, head_c, head_c + n_match, kv_shift); for (size_t i = 0; i < n_match; i++) { slot.cache_tokens[head_p + i] = slot.cache_tokens[head_c + i]; @@ -3317,6 +3324,8 @@ struct server_context { }; + + static void common_params_handle_model_default( std::string & model, const std::string & model_url, diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index b454465f..cc384d96 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -490,6 +490,17 @@ static std::string tokens_to_output_formatted_string(const llama_context * ctx, return out; } +//static bool server_sent_event(httplib::DataSink & sink, const char * event, const json & data) { +// const std::string str = +// std::string(event) + ": " + +// data.dump(-1, ' ', false, json::error_handler_t::replace) + +// "\n\n"; // required by RFC 8895 - A message is terminated by a blank line (two line terminators in a row). +// +// LOG_DBG("data stream, to_send: %s", str.c_str()); +// +// return sink.write(str.c_str(), str.size()); +//} + // // OAI utils // @@ -514,8 +525,13 @@ static json oaicompat_completion_params_parse(const json & body) { throw std::runtime_error("Only one completion choice is allowed"); } + // Handle "echo" field + if (json_value(body, "echo", false)) { + throw std::runtime_error("Only no echo is supported"); + } + // Params supported by OAI but unsupported by llama.cpp - static const std::vector unsupported_params { "best_of", "echo", "suffix" }; + static const std::vector unsupported_params { "best_of", "suffix" }; for (const auto & param : unsupported_params) { if (body.contains(param)) { throw std::runtime_error("Unsupported param: " + param); @@ -578,8 +594,8 @@ static json oaicompat_completion_params_parse( if (response_type == "json_object") { json_schema = json_value(response_format, "schema", json::object()); } else if (response_type == "json_schema") { - json json_schema = json_value(response_format, "json_schema", json::object()); - json_schema = json_value(json_schema, "schema", json::object()); + auto schema_wrapper = json_value(response_format, "json_schema", json::object()); + json_schema = json_value(schema_wrapper, "schema", json::object()); } else if (!response_type.empty() && response_type != "text") { throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); } @@ -591,10 +607,11 @@ static json oaicompat_completion_params_parse( inputs.tool_choice = common_chat_tool_choice_parse_oaicompat(json_value(body, "tool_choice", std::string("auto"))); inputs.json_schema = json_schema.is_null() ? "" : json_schema.dump(); inputs.grammar = grammar; - inputs.add_generation_prompt = true; + inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true); inputs.use_jinja = use_jinja; inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); inputs.extract_reasoning = reasoning_format != COMMON_REASONING_FORMAT_NONE; + inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true); if (!inputs.tools.empty() && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && body.contains("grammar")) { throw std::runtime_error("Cannot use custom grammar constraints with tools."); } @@ -608,10 +625,7 @@ static json oaicompat_completion_params_parse( llama_params["grammar_lazy"] = chat_params.grammar_lazy; auto grammar_triggers = json::array(); for (const auto & trigger : chat_params.grammar_triggers) { - grammar_triggers.push_back({ - {"word", trigger.word}, - {"at_start", trigger.at_start}, - }); + grammar_triggers.push_back(trigger.to_json()); } llama_params["grammar_triggers"] = grammar_triggers; llama_params["preserved_tokens"] = chat_params.preserved_tokens; @@ -869,4 +883,4 @@ static std::vector parse_lora_request( } return lora; -} +} \ No newline at end of file From c00de24bd632b0a7d804bcaf5ba1e306e2ad777c Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 5 Mar 2025 20:26:20 -0800 Subject: [PATCH 313/384] removed releaseTask --- src/main/java/de/kherud/llama/LlamaModel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index fc0e70fa..43bf0772 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -54,7 +54,6 @@ public String complete(InferenceParameters parameters) { parameters.setStream(false); int taskId = requestCompletion(parameters.toString()); LlamaOutput output = receiveCompletion(taskId); - releaseTask(taskId); return output.text; } From 7a3f6726bf40cba45fe6370e42a7801577fe2583 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 5 Mar 2025 21:11:59 -0800 Subject: [PATCH 314/384] updated to remove unused and duplicate imports --- src/main/cpp/jllama.cpp | 2 +- src/main/cpp/server.hpp | 5 ----- src/main/cpp/utils.hpp | 2 +- src/test/java/de/kherud/llama/LlamaModelTest.java | 3 ++- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index b719a551..3a547bc8 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -777,7 +777,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobje jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) ctx_server->queue_tasks.terminate(); - delete ctx_server; + //delete ctx_server; } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv *env, jobject obj, jint id_task) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index da2b410b..031c4a6b 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -1,14 +1,9 @@ #include "utils.hpp" -#include "common.h" #include "json-schema-to-grammar.h" -#include "llama.h" -#include "log.h" #include "sampling.h" #include "speculative.h" -#include "nlohmann/json.hpp" - #include #include #include diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index cc384d96..e9498014 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -16,7 +16,7 @@ // Change JSON_ASSERT from assert() to GGML_ASSERT: #define JSON_ASSERT GGML_ASSERT -#include "json.hpp" +#include "nlohmann/json.hpp" #include "chat.h" diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 6fbe2e43..9e5b767b 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -133,7 +133,8 @@ public void testCompleteGrammar() { String output = model.complete(params); Assert.assertTrue(output + " doesn't match [ab]+", output.matches("[ab]+")); int generated = model.encode(output).length; - Assert.assertTrue(generated > 0 && generated <= nPredict + 1); + Assert.assertTrue("generated count is: " + generated, generated > 0 && generated <= nPredict + 1); + } @Test From cc8f1327b1d6c8c62281a0055a33861dc3b90d98 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 6 Mar 2025 23:13:24 -0800 Subject: [PATCH 315/384] adding x64 arch for windows --- src/main/java/de/kherud/llama/OSInfo.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java index a62861bf..772aeaef 100644 --- a/src/main/java/de/kherud/llama/OSInfo.java +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -32,6 +32,7 @@ @SuppressWarnings("UseOfSystemOutOrSystemErr") class OSInfo { public static final String X86 = "x86"; + public static final String X64 = "x64"; public static final String X86_64 = "x86_64"; public static final String IA64_32 = "ia64_32"; public static final String IA64 = "ia64"; @@ -78,6 +79,9 @@ class OSInfo { archMapping.put("power_rs64", PPC64); archMapping.put("ppc64el", PPC64); archMapping.put("ppc64le", PPC64); + + // TODO: Adding X64 support + archMapping.put(X64, X64); } public static void main(String[] args) { From 27dacab3438b3953b0b66262b2b875b22a6a3bf9 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 13:39:11 -0800 Subject: [PATCH 316/384] updating windows workflow to copy all the dlls --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8db1a21..54a9435c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,6 +87,10 @@ jobs: run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include + - name: Copy DLL to Java resources + run: | + mkdir -Force "target/classes/Windows/x86_64" + Copy-Item ".\build\Release\*.dll" "target/classes/Windows/x86_64/" - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests From 036e020e6a9201ee6a6bdd1291afca8623932753 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 13:59:00 -0800 Subject: [PATCH 317/384] updating windows workflow. --- .github/workflows/ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54a9435c..0ebdd7bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,17 +84,25 @@ jobs: - name: Install libcurl run: vcpkg install curl - name: Build libraries - run: | + run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include + - name: Copy DLL to Java resources - run: | + run: | mkdir -Force "target/classes/Windows/x86_64" - Copy-Item ".\build\Release\*.dll" "target/classes/Windows/x86_64/" + Copy-Item ".\build\Release\llama.dll" "target/classes/Windows/x86_64/" + + - name: Verify DLL placement (debug step) + run: dir target\classes\Windows\x86_64\ + - name: Download model - run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - - name: Run tests - run: mvn test + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME + + - name: Run tests with explicit DLL path + run: | + mvn test -Djava.library.path="${{ github.workspace }}\target\classes\Windows\x86_64" + - if: failure() uses: actions/upload-artifact@v4 with: From aef5b69a9691294bfca2dc1931599c33170cdabf Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 14:13:45 -0800 Subject: [PATCH 318/384] validated yml file using lint --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0ebdd7bc..0d7be03f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,23 +84,23 @@ jobs: - name: Install libcurl run: vcpkg install curl - name: Build libraries - run: | + run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - name: Copy DLL to Java resources - run: | + run: | mkdir -Force "target/classes/Windows/x86_64" Copy-Item ".\build\Release\llama.dll" "target/classes/Windows/x86_64/" - name: Verify DLL placement (debug step) - run: dir target\classes\Windows\x86_64\ + run: dir target\classes\Windows\x86_64\ - name: Download model - run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME + run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests with explicit DLL path - run: | + run: | mvn test -Djava.library.path="${{ github.workspace }}\target\classes\Windows\x86_64" - if: failure() From 6ea33c3a6b386fb40c1b641ffc1545c71cb86c79 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 14:31:57 -0800 Subject: [PATCH 319/384] trying few suggestion --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d7be03f..0a91e787 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,17 +91,18 @@ jobs: - name: Copy DLL to Java resources run: | mkdir -Force "target/classes/Windows/x86_64" - Copy-Item ".\build\Release\llama.dll" "target/classes/Windows/x86_64/" + Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - name: Verify DLL placement (debug step) - run: dir target\classes\Windows\x86_64\ + run: | + dir target\classes\de\kherud\llama\Windows\x86_64\ - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests with explicit DLL path run: | - mvn test -Djava.library.path="${{ github.workspace }}\target\classes\Windows\x86_64" + mvn test - if: failure() uses: actions/upload-artifact@v4 From 230b72f5ddc817e466816d3b9f51722ed1f16606 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 14:50:02 -0800 Subject: [PATCH 320/384] update the workflow path --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a91e787..820fa397 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,7 +90,7 @@ jobs: - name: Copy DLL to Java resources run: | - mkdir -Force "target/classes/Windows/x86_64" + mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - name: Verify DLL placement (debug step) From 746c31ab27fd9f3b471ce17dfe32bb2c934af693 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 14:58:52 -0800 Subject: [PATCH 321/384] trying to find which library we are missing --- src/main/java/de/kherud/llama/LlamaLoader.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index a0239d20..6bb6ace2 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -152,7 +152,8 @@ private static void loadNativeLibrary(String name) { throw new UnsatisfiedLinkError( String.format( - "No native library found for os.name=%s, os.arch=%s, paths=[%s]", + "No native library found for name=%s os.name=%s, os.arch=%s, paths=[%s]", + name, OSInfo.getOSName(), OSInfo.getArchName(), String.join(File.pathSeparator, triedPaths) From 8b5de74948c358dcb4e8c300340eae3de12ebb16 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 17:15:23 -0800 Subject: [PATCH 322/384] update the workflow path --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 820fa397..6b694ca9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: - name: Run tests with explicit DLL path run: | - mvn test + mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" - if: failure() uses: actions/upload-artifact@v4 From e0efe9f40b920beb1051d863f13aae92887cbad2 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 17:28:47 -0800 Subject: [PATCH 323/384] update the workflow path --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b694ca9..ad6606a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,6 +92,7 @@ jobs: run: | mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" + Copy-Item "C:\vcpkg\installed\x64-windows\bin\curl.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - name: Verify DLL placement (debug step) run: | From 12220ea579fa0cb9d831e69c93eb45cd9715906d Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 17:42:38 -0800 Subject: [PATCH 324/384] update the workflow path --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad6606a2..96b78d6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,7 +92,8 @@ jobs: run: | mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - Copy-Item "C:\vcpkg\installed\x64-windows\bin\curl.dll" "target/classes/de/kherud/llama/Windows/x86_64/" + Get-ChildItem "C:/vcpkg/packages/curl_x64-windows" -Filter *.dll -Recurse ` + | ForEach-Object { Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose } - name: Verify DLL placement (debug step) run: | From 859844f6d807c2162d306fb745c9eefacf5c1ca5 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 17:57:39 -0800 Subject: [PATCH 325/384] update the workflow path --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96b78d6a..e99e510e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -104,6 +104,7 @@ jobs: - name: Run tests with explicit DLL path run: | + $env:PATH = "C:\vcpkg\installed\x64-windows\bin;${env:PATH}" mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" - if: failure() From ed2421cc01a513422713afbf768f9da58c14daf8 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 20:56:59 -0800 Subject: [PATCH 326/384] update the workflow path --- .github/workflows/ci.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e99e510e..3929ae63 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,12 +88,30 @@ jobs: mvn compile .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - - name: Copy DLL to Java resources + - name: Prepare DLL directory run: | mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - Get-ChildItem "C:/vcpkg/packages/curl_x64-windows" -Filter *.dll -Recurse ` - | ForEach-Object { Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose } + + # Copy curl and all its dependencies to our directory + Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + + # Also copy from curl packages directory for completeness + Get-ChildItem "C:/vcpkg/packages/curl_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + + # Copy OpenSSL DLLs if needed by curl + Get-ChildItem "C:/vcpkg/packages/openssl_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + + # Copy zlib DLLs if needed + Get-ChildItem "C:/vcpkg/packages/zlib_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } - name: Verify DLL placement (debug step) run: | From 605c600a25d689975006a5e919f605f97e718b55 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 21:06:07 -0800 Subject: [PATCH 327/384] update the workflow path --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3929ae63..3ec192e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,8 +81,12 @@ jobs: with: distribution: 'zulu' java-version: '11' - - name: Install libcurl - run: vcpkg install curl + - name: Install libcurl and dependencies + run: | + vcpkg install curl:x64-windows + vcpkg install openssl:x64-windows + vcpkg install zlib:x64-windows + - name: Build libraries run: | mvn compile From d2677762e6116325d5e3dd9c3e54ead15246660e Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 21:30:40 -0800 Subject: [PATCH 328/384] update the workflow path --- .github/workflows/ci.yml | 82 ++++--- .../java/de/kherud/llama/LlamaLoader.java | 225 +++++++++++++----- 2 files changed, 221 insertions(+), 86 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ec192e1..b3275047 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,40 +86,68 @@ jobs: vcpkg install curl:x64-windows vcpkg install openssl:x64-windows vcpkg install zlib:x64-windows + vcpkg install boost-filesystem:x64-windows # Often needed for C++ projects + vcpkg install boost-system:x64-windows # Often needed for C++ projects + + - name: Download Dependency Walker + run: | + Invoke-WebRequest -Uri "https://www.dependencywalker.com/depends22_x64.zip" -OutFile "depends.zip" + Expand-Archive -Path "depends.zip" -DestinationPath "depends" - name: Build libraries run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - - name: Prepare DLL directory - run: | - mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" - Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - - # Copy curl and all its dependencies to our directory - Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - - # Also copy from curl packages directory for completeness - Get-ChildItem "C:/vcpkg/packages/curl_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - - # Copy OpenSSL DLLs if needed by curl - Get-ChildItem "C:/vcpkg/packages/openssl_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - - # Copy zlib DLLs if needed - Get-ChildItem "C:/vcpkg/packages/zlib_x64-windows/bin" -Filter *.dll -Recurse | ForEach-Object { - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + - name: Prepare DLL directory + run: | + mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" + Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" + + # Copy ALL DLLs from vcpkg directories to ensure we have everything + Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + + # Also from the packages directory + Get-ChildItem "C:/vcpkg/packages" -Recurse -Filter "*.dll" | Where-Object { $_.Directory -like "*bin*" } | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + + # Copy Visual C++ Redistributable DLLs + $vcredistPath = "C:\Windows\System32" + @( + "msvcp140.dll", + "vcruntime140.dll", + "vcruntime140_1.dll", + "msvcp140_1.dll", + "msvcp140_2.dll", + "concrt140.dll" + ) | ForEach-Object { + if (Test-Path "$vcredistPath\$_") { + Copy-Item "$vcredistPath\$_" -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose } + } + + - name: Analyze DLL dependencies + run: | + # Run dependency walker on ggml.dll to see what's missing + .\depends\depends.exe -c -oc:deps_ggml.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" + # Also analyze jllama.dll and llama.dll + .\depends\depends.exe -c -oc:deps_jllama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" + .\depends\depends.exe -c -oc:deps_llama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" + + # Display the results + Get-Content deps_ggml.txt + echo "--------------------" + Get-Content deps_jllama.txt + echo "--------------------" + Get-Content deps_llama.txt + + - name: Verify DLL placement + run: | + dir target\classes\de\kherud\llama\Windows\x86_64\ - - name: Verify DLL placement (debug step) - run: | - dir target\classes\de\kherud\llama\Windows\x86_64\ - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME @@ -127,7 +155,7 @@ jobs: - name: Run tests with explicit DLL path run: | $env:PATH = "C:\vcpkg\installed\x64-windows\bin;${env:PATH}" - mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" + mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" -Ddebug.native.loading=true - if: failure() uses: actions/upload-artifact@v4 diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 6bb6ace2..2605d96e 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -26,6 +26,7 @@ import java.nio.file.StandardCopyOption; import java.util.LinkedList; import java.util.List; +import java.util.UUID; import java.util.stream.Stream; import org.jetbrains.annotations.Nullable; @@ -95,70 +96,176 @@ private static void cleanPath(Path path) { } private static void loadNativeLibrary(String name) { - List triedPaths = new LinkedList<>(); + List triedPaths = new LinkedList<>(); + boolean isDebug = System.getProperty("debug.native.loading", "false").equals("true"); + + if (isDebug) { + System.out.println("[DEBUG] Attempting to load native library: " + name); + System.out.println("[DEBUG] Current working directory: " + System.getProperty("user.dir")); + System.out.println("[DEBUG] java.library.path: " + System.getProperty("java.library.path", "")); + System.out.println("[DEBUG] PATH environment: " + System.getenv("PATH")); + } - String nativeLibName = System.mapLibraryName(name); - String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); - if (nativeLibPath != null) { - Path path = Paths.get(nativeLibPath, nativeLibName); - if (loadNativeLibrary(path)) { - return; - } - else { - triedPaths.add(nativeLibPath); - } - } + String nativeLibName = System.mapLibraryName(name); + if (isDebug) { + System.out.println("[DEBUG] Mapped library name: " + nativeLibName); + } + + String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); + if (nativeLibPath != null) { + Path path = Paths.get(nativeLibPath, nativeLibName); + if (isDebug) { + System.out.println("[DEBUG] Trying custom lib path: " + path); + } + if (loadNativeLibraryWithDebug(path, isDebug)) { + return; + } else { + triedPaths.add(nativeLibPath); + } + } - if (OSInfo.isAndroid()) { - try { - // loadLibrary can load directly from packed apk file automatically - // if java-llama.cpp is added as code source - System.loadLibrary(name); - return; - } - catch (UnsatisfiedLinkError e) { - triedPaths.add("Directly from .apk/lib"); - } - } + if (OSInfo.isAndroid()) { + try { + if (isDebug) { + System.out.println("[DEBUG] Android detected, trying System.loadLibrary directly"); + } + // loadLibrary can load directly from packed apk file automatically + // if java-llama.cpp is added as code source + System.loadLibrary(name); + return; + } catch (UnsatisfiedLinkError e) { + if (isDebug) { + System.out.println("[DEBUG] Failed to load from APK: " + e.getMessage()); + } + triedPaths.add("Directly from .apk/lib"); + } + } - // Try to load the library from java.library.path - String javaLibraryPath = System.getProperty("java.library.path", ""); - for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { - if (ldPath.isEmpty()) { - continue; - } - Path path = Paths.get(ldPath, nativeLibName); - if (loadNativeLibrary(path)) { - return; - } - else { - triedPaths.add(ldPath); - } - } + // Try to load the library from java.library.path + String javaLibraryPath = System.getProperty("java.library.path", ""); + for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { + if (ldPath.isEmpty()) { + continue; + } + Path path = Paths.get(ldPath, nativeLibName); + if (isDebug) { + System.out.println("[DEBUG] Trying java.library.path entry: " + path); + if (Files.exists(path)) { + System.out.println("[DEBUG] File exists at path: " + path); + } else { + System.out.println("[DEBUG] File does NOT exist at path: " + path); + } + } + if (loadNativeLibraryWithDebug(path, isDebug)) { + return; + } else { + triedPaths.add(ldPath); + } + } - // As a last resort try load the os-dependent library from the jar file - nativeLibPath = getNativeResourcePath(); - if (hasNativeLib(nativeLibPath, nativeLibName)) { - // temporary library folder - String tempFolder = getTempDir().getAbsolutePath(); - // Try extracting the library from jar - if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { - return; - } - else { - triedPaths.add(nativeLibPath); - } - } + // As a last resort try load the os-dependent library from the jar file + nativeLibPath = getNativeResourcePath(); + if (isDebug) { + System.out.println("[DEBUG] Trying to extract from JAR, native resource path: " + nativeLibPath); + } + + if (hasNativeLib(nativeLibPath, nativeLibName)) { + // temporary library folder + String tempFolder = getTempDir().getAbsolutePath(); + if (isDebug) { + System.out.println("[DEBUG] Extracting library to temp folder: " + tempFolder); + } + + // Try extracting the library from jar + if (extractAndLoadLibraryFileWithDebug(nativeLibPath, nativeLibName, tempFolder, isDebug)) { + return; + } else { + triedPaths.add(nativeLibPath); + } + } else if (isDebug) { + System.out.println("[DEBUG] Native library not found in JAR at path: " + nativeLibPath + "/" + nativeLibName); + } + + throw new UnsatisfiedLinkError( + String.format( + "No native library found for name=%s os.name=%s, os.arch=%s, paths=[%s]", + name, + OSInfo.getOSName(), + OSInfo.getArchName(), + String.join(File.pathSeparator, triedPaths) + ) + ); + } + + // Add these helper methods + + private static boolean loadNativeLibraryWithDebug(Path path, boolean isDebug) { + try { + if (isDebug) { + System.out.println("[DEBUG] Attempting to load: " + path.toAbsolutePath()); + } + + if (!Files.exists(path)) { + if (isDebug) System.out.println("[DEBUG] File doesn't exist: " + path); + return false; + } + + System.load(path.toAbsolutePath().toString()); + if (isDebug) System.out.println("[DEBUG] Successfully loaded: " + path); + return true; + } catch (UnsatisfiedLinkError e) { + if (isDebug) { + System.out.println("[DEBUG] Failed to load " + path + ": " + e.getMessage()); + e.printStackTrace(); + } + return false; + } + } - throw new UnsatisfiedLinkError( - String.format( - "No native library found for name=%s os.name=%s, os.arch=%s, paths=[%s]", - name, - OSInfo.getOSName(), - OSInfo.getArchName(), - String.join(File.pathSeparator, triedPaths) - ) - ); + private static boolean extractAndLoadLibraryFileWithDebug(String libFolderForCurrentOS, String libraryFileName, + String targetFolder, boolean isDebug) { + String nativeLibraryFilePath = libFolderForCurrentOS + "/" + libraryFileName; + + // Include architecture name in temporary filename to avoid naming conflicts + String uuid = UUID.randomUUID().toString(); + String extractedLibFileName = String.format("%s-%s-%s", libraryFileName, uuid, OSInfo.getArchName()); + File extractedLibFile = new File(targetFolder, extractedLibFileName); + + try (InputStream reader = LlamaLoader.class.getResourceAsStream(nativeLibraryFilePath)) { + if (isDebug) { + System.out.println("[DEBUG] Extracting native library from JAR: " + nativeLibraryFilePath); + } + + if (reader == null) { + if (isDebug) System.out.println("[DEBUG] Cannot find native library in JAR: " + nativeLibraryFilePath); + return false; + } + + Files.copy(reader, extractedLibFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + + if (isDebug) { + System.out.println("[DEBUG] Extracted to: " + extractedLibFile.getAbsolutePath()); + System.out.println("[DEBUG] Attempting to load extracted file"); + } + + try { + System.load(extractedLibFile.getAbsolutePath()); + if (isDebug) System.out.println("[DEBUG] Successfully loaded: " + extractedLibFile.getAbsolutePath()); + return true; + } catch (UnsatisfiedLinkError e) { + if (isDebug) { + System.out.println("[DEBUG] Failed to load extracted library: " + e.getMessage()); + e.printStackTrace(); + } + return false; + } + } catch (IOException e) { + if (isDebug) { + System.out.println("[DEBUG] Failed to extract library: " + e.getMessage()); + e.printStackTrace(); + } + return false; + } } /** From 2e8be8a40b4ebb89f26013195e0756e735de8eac Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 21:35:00 -0800 Subject: [PATCH 329/384] update the workflow path --- .github/workflows/ci.yml | 174 +++++++++++++++++++++------------------ 1 file changed, 94 insertions(+), 80 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b3275047..7d9fe776 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,14 +1,12 @@ -# This work flow runs all Java tests for continuous integration. -# Since it has to build llama.cpp first, for speed, it only runs / tests on the natively supported GitHub runners. - +--- name: Continuous Integration -on: [ "pull_request", "workflow_dispatch" ] +on: + - pull_request + - workflow_dispatch env: - MODEL_URL: "https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf" - MODEL_NAME: "codellama-7b.Q2_K.gguf" + MODEL_URL: https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf + MODEL_NAME: codellama-7b.Q2_K.gguf jobs: - - # don't split build and test jobs to keep the workflow simple build-and-test-linux: name: ubuntu-latest runs-on: ubuntu-latest @@ -16,12 +14,11 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: '11' + distribution: zulu + java-version: "11" - name: Install libcurl run: sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries - # cmake should figure out OS and ARCH automatically when running build.sh (but we need mvn compile for it) run: | mvn compile .github/build.sh -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON @@ -35,7 +32,6 @@ jobs: name: error-log-linux path: ${{ github.workspace }}/hs_err_pid*.log if-no-files-found: warn - build-and-test-macos: name: ${{ matrix.target.runner }} runs-on: ${{ matrix.target.runner }} @@ -43,20 +39,17 @@ jobs: fail-fast: false matrix: target: - - { - runner: macos-13, - cmake: '-DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON' - } - - { - runner: macos-14, - cmake: '-DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON' - } + - runner: macos-13 + cmake: -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON + - runner: macos-14 + cmake: -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON + -DLLAMA_CURL=ON steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: '11' + distribution: zulu + java-version: "11" - name: Build libraries run: | mvn compile @@ -71,7 +64,6 @@ jobs: name: error-log-macos path: ${{ github.workspace }}/hs_err_pid*.log if-no-files-found: warn - build-and-test-windows: name: windows-latest runs-on: windows-latest @@ -79,87 +71,109 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: '11' + distribution: zulu + java-version: "11" - name: Install libcurl and dependencies - run: | + run: > vcpkg install curl:x64-windows + vcpkg install openssl:x64-windows + vcpkg install zlib:x64-windows + vcpkg install boost-filesystem:x64-windows # Often needed for C++ projects - vcpkg install boost-system:x64-windows # Often needed for C++ projects - - name: Download Dependency Walker - run: | - Invoke-WebRequest -Uri "https://www.dependencywalker.com/depends22_x64.zip" -OutFile "depends.zip" - Expand-Archive -Path "depends.zip" -DestinationPath "depends" + vcpkg install boost-system:x64-windows # Often needed for C++ projects + - name: Download Dependency Walker + run: > + Invoke-WebRequest -Uri "https://www.dependencywalker.com/depends22_x64.zip" + -OutFile "depends.zip" + Expand-Archive -Path "depends.zip" -DestinationPath "depends" - name: Build libraries - run: | + run: > mvn compile + .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include + - name: Prepare DLL directory + run: > + mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" + + Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" + + + #Copy ALL DLLs from vcpkg directories to ensure we have everything + + Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { - - name: Prepare DLL directory - run: | - mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" - Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - - # Copy ALL DLLs from vcpkg directories to ensure we have everything - Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - - # Also from the packages directory - Get-ChildItem "C:/vcpkg/packages" -Recurse -Filter "*.dll" | Where-Object { $_.Directory -like "*bin*" } | ForEach-Object { + + } + + + # Also from the packages directory + + Get-ChildItem "C:/vcpkg/packages" -Recurse -Filter "*.dll" | Where-Object { $_.Directory -like "*bin*" } | ForEach-Object { + Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - - # Copy Visual C++ Redistributable DLLs - $vcredistPath = "C:\Windows\System32" - @( - "msvcp140.dll", - "vcruntime140.dll", - "vcruntime140_1.dll", - "msvcp140_1.dll", - "msvcp140_2.dll", - "concrt140.dll" - ) | ForEach-Object { - if (Test-Path "$vcredistPath\$_") { - Copy-Item "$vcredistPath\$_" -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } - } - - - name: Analyze DLL dependencies - run: | - # Run dependency walker on ggml.dll to see what's missing - .\depends\depends.exe -c -oc:deps_ggml.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" - # Also analyze jllama.dll and llama.dll - .\depends\depends.exe -c -oc:deps_jllama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" - .\depends\depends.exe -c -oc:deps_llama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" - - # Display the results - Get-Content deps_ggml.txt - echo "--------------------" - Get-Content deps_jllama.txt - echo "--------------------" - Get-Content deps_llama.txt - - - name: Verify DLL placement - run: | - dir target\classes\de\kherud\llama\Windows\x86_64\ + # Copy Visual C++ Redistributable DLLs + + $vcredistPath = "C:\Windows\System32" + + @( + "msvcp140.dll", + "vcruntime140.dll", + "vcruntime140_1.dll", + "msvcp140_1.dll", + "msvcp140_2.dll", + "concrt140.dll" + ) | ForEach-Object { + if (Test-Path "$vcredistPath\$_") { + Copy-Item "$vcredistPath\$_" -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose + } + } + - name: Analyze DLL dependencies + run: > + # Run dependency walker on ggml.dll to see what's missing + + .\depends\depends.exe -c -oc:deps_ggml.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" + + # Also analyze jllama.dll and llama.dll + + .\depends\depends.exe -c -oc:deps_jllama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" + + .\depends\depends.exe -c -oc:deps_llama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" + + + # Display the results + + Get-Content deps_ggml.txt + + echo "--------------------" + + Get-Content deps_jllama.txt + + echo "--------------------" + + Get-Content deps_llama.txt + - name: Verify DLL placement + run: | + dir target\classes\de\kherud\llama\Windows\x86_64\ - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - - name: Run tests with explicit DLL path - run: | + run: > $env:PATH = "C:\vcpkg\installed\x64-windows\bin;${env:PATH}" - mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" -Ddebug.native.loading=true + mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" -Ddebug.native.loading=true - if: failure() uses: actions/upload-artifact@v4 with: name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log if-no-files-found: warn + From f7bc392c4153946a003e2b4ee1db64e72bc8dcea Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 22:13:51 -0800 Subject: [PATCH 330/384] update the workflow path --- .github/workflows/ci.yml | 79 ++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d9fe776..112d7216 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,6 +90,8 @@ jobs: -OutFile "depends.zip" Expand-Archive -Path "depends.zip" -DestinationPath "depends" + # Verify it was extracted correctly + dir depends - name: Build libraries run: > mvn compile @@ -137,29 +139,60 @@ jobs: } } - name: Analyze DLL dependencies - run: > - # Run dependency walker on ggml.dll to see what's missing - - .\depends\depends.exe -c -oc:deps_ggml.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" - - # Also analyze jllama.dll and llama.dll - - .\depends\depends.exe -c -oc:deps_jllama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" - - .\depends\depends.exe -c -oc:deps_llama.txt "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" - - - # Display the results - - Get-Content deps_ggml.txt - - echo "--------------------" - - Get-Content deps_jllama.txt - - echo "--------------------" - - Get-Content deps_llama.txt + run: | + # Create directory for outputs + mkdir -Force "dependency_reports" + + # Get paths to DLLs for analysis + $ggmlPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" + $llamaPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" + $jllamaPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" + + # Verify files exist before analysis + Write-Host "Verifying DLL files exist:" + if (Test-Path $ggmlPath) { Write-Host "ggml.dll exists at $ggmlPath" } else { Write-Host "ERROR: ggml.dll NOT FOUND at $ggmlPath" } + if (Test-Path $llamaPath) { Write-Host "llama.dll exists at $llamaPath" } else { Write-Host "ERROR: llama.dll NOT FOUND at $llamaPath" } + if (Test-Path $jllamaPath) { Write-Host "jllama.dll exists at $jllamaPath" } else { Write-Host "ERROR: jllama.dll NOT FOUND at $jllamaPath" } + + # Alternative approach using dumpbin (available on Windows) + Write-Host "Analyzing dependencies with dumpbin..." + + # Create a function to extract dependencies + function Get-Dependencies { + param([string]$dllPath, [string]$outputPath) + + if (Test-Path $dllPath) { + Write-Host "Running dumpbin on $dllPath" + & "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /DEPENDENTS $dllPath > $outputPath + if ($LASTEXITCODE -eq 0) { + Write-Host "Successfully wrote dependencies to $outputPath" + Get-Content $outputPath | Select-String -Pattern "Image has the following dependencies" + Get-Content $outputPath | Select-String -Pattern "\.dll" + } else { + Write-Host "Error running dumpbin: $LASTEXITCODE" + } + } else { + Write-Host "ERROR: File not found: $dllPath" + } + } + + # Run dependency analysis + Get-Dependencies -dllPath $ggmlPath -outputPath "dependency_reports\deps_ggml.txt" + Get-Dependencies -dllPath $llamaPath -outputPath "dependency_reports\deps_llama.txt" + Get-Dependencies -dllPath $jllamaPath -outputPath "dependency_reports\deps_jllama.txt" + + # List files in the output directory + Write-Host "Files in dependency_reports directory:" + dir dependency_reports + + - name: Upload dependency reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: dependency-reports + path: dependency_reports\* + if-no-files-found: warn + - name: Verify DLL placement run: | dir target\classes\de\kherud\llama\Windows\x86_64\ From 932fac3fd992cf5102f7688cc23ec7c6e3324365 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 7 Mar 2025 23:58:58 -0800 Subject: [PATCH 331/384] removing curl support from windows --- .github/workflows/ci.yml | 136 ++------------------------------------- 1 file changed, 7 insertions(+), 129 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 112d7216..5d8e290a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,142 +71,20 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: zulu - java-version: "11" - - name: Install libcurl and dependencies - run: > - vcpkg install curl:x64-windows - - vcpkg install openssl:x64-windows - - vcpkg install zlib:x64-windows - - vcpkg install boost-filesystem:x64-windows # Often needed for C++ projects - - vcpkg install boost-system:x64-windows # Often needed for C++ projects - - name: Download Dependency Walker - run: > - Invoke-WebRequest -Uri "https://www.dependencywalker.com/depends22_x64.zip" - -OutFile "depends.zip" - - Expand-Archive -Path "depends.zip" -DestinationPath "depends" - # Verify it was extracted correctly - dir depends + distribution: 'zulu' + java-version: '11' - name: Build libraries - run: > - mvn compile - - .github\build.bat -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include - - name: Prepare DLL directory - run: > - mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" - - Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - - - #Copy ALL DLLs from vcpkg directories to ensure we have everything - - Get-ChildItem "C:/vcpkg/installed/x64-windows/bin" -Filter *.dll | ForEach-Object { - - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - - } - - - # Also from the packages directory - - Get-ChildItem "C:/vcpkg/packages" -Recurse -Filter "*.dll" | Where-Object { $_.Directory -like "*bin*" } | ForEach-Object { - - Copy-Item $_.FullName -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - - } - - - # Copy Visual C++ Redistributable DLLs - - $vcredistPath = "C:\Windows\System32" - - @( - "msvcp140.dll", - "vcruntime140.dll", - "vcruntime140_1.dll", - "msvcp140_1.dll", - "msvcp140_2.dll", - "concrt140.dll" - ) | ForEach-Object { - if (Test-Path "$vcredistPath\$_") { - Copy-Item "$vcredistPath\$_" -Destination "target/classes/de/kherud/llama/Windows/x86_64/" -Verbose - } - } - - name: Analyze DLL dependencies run: | - # Create directory for outputs - mkdir -Force "dependency_reports" - - # Get paths to DLLs for analysis - $ggmlPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\ggml.dll" - $llamaPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\llama.dll" - $jllamaPath = "${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64\jllama.dll" - - # Verify files exist before analysis - Write-Host "Verifying DLL files exist:" - if (Test-Path $ggmlPath) { Write-Host "ggml.dll exists at $ggmlPath" } else { Write-Host "ERROR: ggml.dll NOT FOUND at $ggmlPath" } - if (Test-Path $llamaPath) { Write-Host "llama.dll exists at $llamaPath" } else { Write-Host "ERROR: llama.dll NOT FOUND at $llamaPath" } - if (Test-Path $jllamaPath) { Write-Host "jllama.dll exists at $jllamaPath" } else { Write-Host "ERROR: jllama.dll NOT FOUND at $jllamaPath" } - - # Alternative approach using dumpbin (available on Windows) - Write-Host "Analyzing dependencies with dumpbin..." - - # Create a function to extract dependencies - function Get-Dependencies { - param([string]$dllPath, [string]$outputPath) - - if (Test-Path $dllPath) { - Write-Host "Running dumpbin on $dllPath" - & "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe" /DEPENDENTS $dllPath > $outputPath - if ($LASTEXITCODE -eq 0) { - Write-Host "Successfully wrote dependencies to $outputPath" - Get-Content $outputPath | Select-String -Pattern "Image has the following dependencies" - Get-Content $outputPath | Select-String -Pattern "\.dll" - } else { - Write-Host "Error running dumpbin: $LASTEXITCODE" - } - } else { - Write-Host "ERROR: File not found: $dllPath" - } - } - - # Run dependency analysis - Get-Dependencies -dllPath $ggmlPath -outputPath "dependency_reports\deps_ggml.txt" - Get-Dependencies -dllPath $llamaPath -outputPath "dependency_reports\deps_llama.txt" - Get-Dependencies -dllPath $jllamaPath -outputPath "dependency_reports\deps_jllama.txt" - - # List files in the output directory - Write-Host "Files in dependency_reports directory:" - dir dependency_reports - - - name: Upload dependency reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: dependency-reports - path: dependency_reports\* - if-no-files-found: warn - - - name: Verify DLL placement - run: | - dir target\classes\de\kherud\llama\Windows\x86_64\ + mvn compile + .github\build.bat -DLLAMA_VERBOSE=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - - name: Run tests with explicit DLL path - run: > - $env:PATH = "C:\vcpkg\installed\x64-windows\bin;${env:PATH}" - - mvn test "-Djava.library.path=${env:PATH};target/classes/de/kherud/llama/Windows/x86_64" -Ddebug.native.loading=true + - name: Run tests + run: mvn test - if: failure() uses: actions/upload-artifact@v4 with: name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log - if-no-files-found: warn + if-no-files-found: warn From 894262891928f9ea9e707586bcedf07adcd51fb2 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Sat, 8 Mar 2025 00:13:44 -0800 Subject: [PATCH 332/384] adding copy and verify step --- .github/workflows/ci.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d8e290a..a27cb5c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -77,10 +77,17 @@ jobs: run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON + - name: Copy DLLs (including curl.dll) from vcpkg explicitly + run: | + mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" + Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" + - name: Verify DLL placement + run: | + dir target\classes\de\kherud\llama\Windows\x86_64\ - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests - run: mvn test + run: mvn test "-Djava.library.path=${env:PATH};${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64" -Ddebug.native.loading=true - if: failure() uses: actions/upload-artifact@v4 with: From 28c17b825e63b5bdaf549685198e199f9b4a470d Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Sat, 8 Mar 2025 00:25:17 -0800 Subject: [PATCH 333/384] adding copy and verify step --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a27cb5c8..5891f90b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,7 +87,7 @@ jobs: - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests - run: mvn test "-Djava.library.path=${env:PATH};${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64" -Ddebug.native.loading=true + run: mvn test "-Djava.library.path=${env:PATH};${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64 -Ddebug.native.loading=true" - if: failure() uses: actions/upload-artifact@v4 with: From 0b304b8e65d1d5b0b8937cb9fb630389e827ba51 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 20:54:16 +0100 Subject: [PATCH 334/384] statically link dependencies --- CMakeLists.txt | 3 ++- src/main/java/de/kherud/llama/LlamaLoader.java | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fe8778b..2851774b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ include(FetchContent) set(BUILD_SHARED_LIBS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(BUILD_SHARED_LIBS OFF) option(LLAMA_VERBOSE "llama: verbose output" OFF) @@ -103,7 +104,7 @@ target_compile_definitions(jllama PRIVATE ) if(OS_NAME STREQUAL "Windows") - set_target_properties(jllama llama ggml PROPERTIES + set_target_properties(jllama llama ggml PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${JLLAMA_DIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} ) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index 2605d96e..a083a1ec 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -63,8 +63,6 @@ static synchronized void initialize() throws UnsatisfiedLinkError { System.err.println("'ggml-metal.metal' not found"); } } - loadNativeLibrary("ggml"); - loadNativeLibrary("llama"); loadNativeLibrary("jllama"); extracted = true; } From a93a79e305284bfdc8bee662865b40a507bf45ce Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 20:54:44 +0100 Subject: [PATCH 335/384] ci workflow disable curl build --- .github/workflows/ci.yml | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5891f90b..f4e351c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,7 @@ env: MODEL_URL: https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf MODEL_NAME: codellama-7b.Q2_K.gguf jobs: + build-and-test-linux: name: ubuntu-latest runs-on: ubuntu-latest @@ -16,12 +17,10 @@ jobs: with: distribution: zulu java-version: "11" - - name: Install libcurl - run: sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries run: | mvn compile - .github/build.sh -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON + .github/build.sh -DLLAMA_VERBOSE=ON - name: Download model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Run tests @@ -32,6 +31,7 @@ jobs: name: error-log-linux path: ${{ github.workspace }}/hs_err_pid*.log if-no-files-found: warn + build-and-test-macos: name: ${{ matrix.target.runner }} runs-on: ${{ matrix.target.runner }} @@ -40,10 +40,9 @@ jobs: matrix: target: - runner: macos-13 - cmake: -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON -DLLAMA_CURL=ON + cmake: -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON - runner: macos-14 cmake: -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON - -DLLAMA_CURL=ON steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 @@ -64,6 +63,7 @@ jobs: name: error-log-macos path: ${{ github.workspace }}/hs_err_pid*.log if-no-files-found: warn + build-and-test-windows: name: windows-latest runs-on: windows-latest @@ -77,21 +77,13 @@ jobs: run: | mvn compile .github\build.bat -DLLAMA_VERBOSE=ON - - name: Copy DLLs (including curl.dll) from vcpkg explicitly - run: | - mkdir -Force "target/classes/de/kherud/llama/Windows/x86_64" - Copy-Item ".\src\main\resources\de\kherud\llama\Windows\x86_64\*.dll" "target/classes/de/kherud/llama/Windows/x86_64/" - - name: Verify DLL placement - run: | - dir target\classes\de\kherud\llama\Windows\x86_64\ - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests - run: mvn test "-Djava.library.path=${env:PATH};${{ github.workspace }}\target\classes\de\kherud\llama\Windows\x86_64 -Ddebug.native.loading=true" + run: mvn test - if: failure() uses: actions/upload-artifact@v4 with: name: error-log-windows path: ${{ github.workspace }}\hs_err_pid*.log - if-no-files-found: warn - + if-no-files-found: warn From 01c202b0e0d7c6eadc2fb8d4a1237aae29e149e7 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 21:26:10 +0100 Subject: [PATCH 336/384] ci workflow enable llama metal --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4e351c0..2e1e743c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: - runner: macos-13 cmake: -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON - runner: macos-14 - cmake: -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_METAL=OFF -DLLAMA_VERBOSE=ON + cmake: -DLLAMA_METAL_EMBED_LIBRARY=ON -DLLAMA_VERBOSE=ON steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 From 6c70a31d79036e0d21c495eeeda5648529e9d6fa Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 21:26:22 +0100 Subject: [PATCH 337/384] ignore logging test --- src/test/java/de/kherud/llama/LlamaModelTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 9e5b767b..39b4e0d7 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -206,6 +206,7 @@ public void testLogJSON() { } } + @Ignore @Test public void testLogStdout() { // Unfortunately, `printf` can't be easily re-directed to Java. This test only works manually, thus. From be6e34a693b798a4e4d9422a2afcb32c28b251a5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 21:33:12 +0100 Subject: [PATCH 338/384] ci workflow disable native ggml windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e1e743c..906a58fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Build libraries run: | mvn compile - .github\build.bat -DLLAMA_VERBOSE=ON + .github\build.bat -DGGML_NATIVE=OFF -DLLAMA_VERBOSE=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests From e9df628fcf10096cbd6595bf5da4818e4c4ddd40 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 22:00:33 +0100 Subject: [PATCH 339/384] ci workflow upload windows libraries --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 906a58fd..b0d63c8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,7 @@ jobs: - name: Build libraries run: | mvn compile - .github\build.bat -DGGML_NATIVE=OFF -DLLAMA_VERBOSE=ON + .github\build.bat -DLLAMA_VERBOSE=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Run tests @@ -84,6 +84,8 @@ jobs: - if: failure() uses: actions/upload-artifact@v4 with: - name: error-log-windows - path: ${{ github.workspace }}\hs_err_pid*.log + name: windows-output + path: | + ${{ github.workspace }}\hs_err_pid*.log + ${{ github.workspace }}/src/main/resources/de/kherud/llama/**/* if-no-files-found: warn From 20a7df4b4f512814ae9d339a4a5bdf8ee1e99ed1 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 22:06:43 +0100 Subject: [PATCH 340/384] ci workflow build windows in release-debug mode --- .github/build.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/build.bat b/.github/build.bat index a904405e..5cfa26c0 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config Release +cmake --build build --config RelWithDebInfo if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file From b9bc6f3167a9c3c0c1669280cbd23281320c5da6 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 22:19:28 +0100 Subject: [PATCH 341/384] cmakelists add windows relwithdebinfo output path --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2851774b..2278d454 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,6 +107,7 @@ if(OS_NAME STREQUAL "Windows") set_target_properties(jllama llama ggml PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${JLLAMA_DIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${JLLAMA_DIR} + RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${JLLAMA_DIR} ) else() set_target_properties(jllama llama ggml PROPERTIES From 3c5b489c53b14fa35ea1d24a19f22be4c952998b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 22:31:17 +0100 Subject: [PATCH 342/384] ci workflow build windows in debug mode --- .github/build.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/build.bat b/.github/build.bat index 5cfa26c0..2fefa247 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config RelWithDebInfo +cmake --build build --config Debug if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file From 50129c9c316fe4546d1b56b2be079f513f368fc8 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sat, 8 Mar 2025 22:36:43 +0100 Subject: [PATCH 343/384] add debug statements to jni load --- .github/build.bat | 2 +- src/main/cpp/jllama.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/build.bat b/.github/build.bat index 2fefa247..5cfa26c0 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config Debug +cmake --build build --config RelWithDebInfo if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 3a547bc8..cad3ca43 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -326,8 +326,12 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } + printf("loaded JNI symbols\n"); fflush(stdout); + llama_backend_init(); + printf("loaded llama.cpp backend\n"); fflush(stdout); + goto success; error: @@ -391,6 +395,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo { common_params params; + printf("load model\n"); fflush(stdout); const jsize argc = env->GetArrayLength(jparams); char **argv = parse_string_array(env, jparams, argc); if (argv == nullptr) @@ -398,22 +403,25 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } + printf("loaded jargs\n"); fflush(stdout); const auto parsed_params = common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SERVER); free_string_array(argv, argc); if (!parsed_params) { return; } - + + printf("parsed params\n"); fflush(stdout); SRV_INF("loading model '%s'\n", params.model.c_str()); common_init(); + printf("initialized common\n"); fflush(stdout); // struct that contains llama context and inference auto *ctx_server = new server_context(); - llama_backend_init(); llama_numa_init(params.numa); + printf("created ctx\n"); fflush(stdout); LOG_INF("system info: n_threads = %d, n_threads_batch = %d, total_threads = %d\n", params.cpuparams.n_threads, params.cpuparams_batch.n_threads, std::thread::hardware_concurrency()); From 4481c1c71d24115023a0edd877c4e69bb72f550d Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 14:30:57 +0100 Subject: [PATCH 344/384] ci workflow windows use zulu 17 --- .github/build.bat | 2 +- .github/workflows/ci.yml | 2 +- src/main/cpp/jllama.cpp | 10 +--------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/.github/build.bat b/.github/build.bat index 5cfa26c0..a904405e 100755 --- a/.github/build.bat +++ b/.github/build.bat @@ -2,6 +2,6 @@ mkdir build cmake -Bbuild %* -cmake --build build --config RelWithDebInfo +cmake --build build --config Release if errorlevel 1 exit /b %ERRORLEVEL% \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0d63c8c..74151b9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: - uses: actions/setup-java@v4 with: distribution: 'zulu' - java-version: '11' + java-version: '17' - name: Build libraries run: | mvn compile diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index cad3ca43..0e70e624 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -326,12 +326,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } - printf("loaded JNI symbols\n"); fflush(stdout); - llama_backend_init(); - printf("loaded llama.cpp backend\n"); fflush(stdout); - goto success; error: @@ -395,7 +391,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo { common_params params; - printf("load model\n"); fflush(stdout); const jsize argc = env->GetArrayLength(jparams); char **argv = parse_string_array(env, jparams, argc); if (argv == nullptr) @@ -403,7 +398,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } - printf("loaded jargs\n"); fflush(stdout); const auto parsed_params = common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SERVER); free_string_array(argv, argc); if (!parsed_params) @@ -411,17 +405,15 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo return; } - printf("parsed params\n"); fflush(stdout); SRV_INF("loading model '%s'\n", params.model.c_str()); common_init(); - printf("initialized common\n"); fflush(stdout); // struct that contains llama context and inference auto *ctx_server = new server_context(); + llama_backend_init(); llama_numa_init(params.numa); - printf("created ctx\n"); fflush(stdout); LOG_INF("system info: n_threads = %d, n_threads_batch = %d, total_threads = %d\n", params.cpuparams.n_threads, params.cpuparams_batch.n_threads, std::thread::hardware_concurrency()); From d549764f6158b8d8a100e3d11f4a945b905037ec Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 14:41:57 +0100 Subject: [PATCH 345/384] defer llama backend initialization --- .github/workflows/ci.yml | 2 +- src/main/cpp/jllama.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74151b9b..b0d63c8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: - uses: actions/setup-java@v4 with: distribution: 'zulu' - java-version: '17' + java-version: '11' - name: Build libraries run: | mvn compile diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 0e70e624..5eb688ce 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -326,8 +326,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } - llama_backend_init(); - goto success; error: From 66b31d9013aba18014cf17ecbb33dac6b10f8cec Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:06:54 +0100 Subject: [PATCH 346/384] statically link windows system libraries --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2278d454..83f5906a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,11 @@ set(BUILD_SHARED_LIBS OFF) option(LLAMA_VERBOSE "llama: verbose output" OFF) +if(MSVC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + add_compile_options(/MT) +endif() + #################### json #################### FetchContent_Declare( From 5e6c5c9a4eb93992981230b37b5cf396bb0b7e4b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:14:39 +0100 Subject: [PATCH 347/384] remove static linking and use older msvc in release workflow --- .github/workflows/ci.yml | 4 ++-- CMakeLists.txt | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0d63c8c..631fc86d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,8 @@ jobs: if-no-files-found: warn build-and-test-windows: - name: windows-latest - runs-on: windows-latest + name: windows-2019 + runs-on: windows-2019 steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 83f5906a..bfca2cc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,10 +10,8 @@ set(BUILD_SHARED_LIBS OFF) option(LLAMA_VERBOSE "llama: verbose output" OFF) -if(MSVC) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - add_compile_options(/MT) -endif() +message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}") +message(STATUS "C++ Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}") #################### json #################### From f6ca909178a9af1837d6defd74a0261bcf8d3e0e Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:20:27 +0100 Subject: [PATCH 348/384] initialize llama backend on jni load and remove cmake debug statements --- CMakeLists.txt | 3 --- src/main/cpp/jllama.cpp | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfca2cc1..2278d454 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,9 +10,6 @@ set(BUILD_SHARED_LIBS OFF) option(LLAMA_VERBOSE "llama: verbose output" OFF) -message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}") -message(STATUS "C++ Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}") - #################### json #################### FetchContent_Declare( diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 5eb688ce..3e17e5dc 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -326,6 +326,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) goto error; } + llama_backend_init(); + goto success; error: @@ -410,7 +412,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo // struct that contains llama context and inference auto *ctx_server = new server_context(); - llama_backend_init(); llama_numa_init(params.numa); LOG_INF("system info: n_threads = %d, n_threads_batch = %d, total_threads = %d\n", params.cpuparams.n_threads, From 8630eab5ba91426bf5da3f883db8b309151a10bb Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:36:37 +0100 Subject: [PATCH 349/384] simplify native library loader --- .../java/de/kherud/llama/LlamaLoader.java | 226 +++++------------- 1 file changed, 59 insertions(+), 167 deletions(-) diff --git a/src/main/java/de/kherud/llama/LlamaLoader.java b/src/main/java/de/kherud/llama/LlamaLoader.java index a083a1ec..58692522 100644 --- a/src/main/java/de/kherud/llama/LlamaLoader.java +++ b/src/main/java/de/kherud/llama/LlamaLoader.java @@ -26,7 +26,6 @@ import java.nio.file.StandardCopyOption; import java.util.LinkedList; import java.util.List; -import java.util.UUID; import java.util.stream.Stream; import org.jetbrains.annotations.Nullable; @@ -94,176 +93,69 @@ private static void cleanPath(Path path) { } private static void loadNativeLibrary(String name) { - List triedPaths = new LinkedList<>(); - boolean isDebug = System.getProperty("debug.native.loading", "false").equals("true"); - - if (isDebug) { - System.out.println("[DEBUG] Attempting to load native library: " + name); - System.out.println("[DEBUG] Current working directory: " + System.getProperty("user.dir")); - System.out.println("[DEBUG] java.library.path: " + System.getProperty("java.library.path", "")); - System.out.println("[DEBUG] PATH environment: " + System.getenv("PATH")); - } + List triedPaths = new LinkedList<>(); - String nativeLibName = System.mapLibraryName(name); - if (isDebug) { - System.out.println("[DEBUG] Mapped library name: " + nativeLibName); - } - - String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); - if (nativeLibPath != null) { - Path path = Paths.get(nativeLibPath, nativeLibName); - if (isDebug) { - System.out.println("[DEBUG] Trying custom lib path: " + path); - } - if (loadNativeLibraryWithDebug(path, isDebug)) { - return; - } else { - triedPaths.add(nativeLibPath); - } - } - - if (OSInfo.isAndroid()) { - try { - if (isDebug) { - System.out.println("[DEBUG] Android detected, trying System.loadLibrary directly"); - } - // loadLibrary can load directly from packed apk file automatically - // if java-llama.cpp is added as code source - System.loadLibrary(name); - return; - } catch (UnsatisfiedLinkError e) { - if (isDebug) { - System.out.println("[DEBUG] Failed to load from APK: " + e.getMessage()); - } - triedPaths.add("Directly from .apk/lib"); - } - } - - // Try to load the library from java.library.path - String javaLibraryPath = System.getProperty("java.library.path", ""); - for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { - if (ldPath.isEmpty()) { - continue; - } - Path path = Paths.get(ldPath, nativeLibName); - if (isDebug) { - System.out.println("[DEBUG] Trying java.library.path entry: " + path); - if (Files.exists(path)) { - System.out.println("[DEBUG] File exists at path: " + path); - } else { - System.out.println("[DEBUG] File does NOT exist at path: " + path); - } - } - if (loadNativeLibraryWithDebug(path, isDebug)) { - return; - } else { - triedPaths.add(ldPath); - } - } - - // As a last resort try load the os-dependent library from the jar file - nativeLibPath = getNativeResourcePath(); - if (isDebug) { - System.out.println("[DEBUG] Trying to extract from JAR, native resource path: " + nativeLibPath); - } - - if (hasNativeLib(nativeLibPath, nativeLibName)) { - // temporary library folder - String tempFolder = getTempDir().getAbsolutePath(); - if (isDebug) { - System.out.println("[DEBUG] Extracting library to temp folder: " + tempFolder); - } - - // Try extracting the library from jar - if (extractAndLoadLibraryFileWithDebug(nativeLibPath, nativeLibName, tempFolder, isDebug)) { - return; - } else { - triedPaths.add(nativeLibPath); - } - } else if (isDebug) { - System.out.println("[DEBUG] Native library not found in JAR at path: " + nativeLibPath + "/" + nativeLibName); - } + String nativeLibName = System.mapLibraryName(name); + String nativeLibPath = System.getProperty("de.kherud.llama.lib.path"); + if (nativeLibPath != null) { + Path path = Paths.get(nativeLibPath, nativeLibName); + if (loadNativeLibrary(path)) { + return; + } + else { + triedPaths.add(nativeLibPath); + } + } - throw new UnsatisfiedLinkError( - String.format( - "No native library found for name=%s os.name=%s, os.arch=%s, paths=[%s]", - name, - OSInfo.getOSName(), - OSInfo.getArchName(), - String.join(File.pathSeparator, triedPaths) - ) - ); - } + if (OSInfo.isAndroid()) { + try { + // loadLibrary can load directly from packed apk file automatically + // if java-llama.cpp is added as code source + System.loadLibrary(name); + return; + } + catch (UnsatisfiedLinkError e) { + triedPaths.add("Directly from .apk/lib"); + } + } - // Add these helper methods + // Try to load the library from java.library.path + String javaLibraryPath = System.getProperty("java.library.path", ""); + for (String ldPath : javaLibraryPath.split(File.pathSeparator)) { + if (ldPath.isEmpty()) { + continue; + } + Path path = Paths.get(ldPath, nativeLibName); + if (loadNativeLibrary(path)) { + return; + } + else { + triedPaths.add(ldPath); + } + } - private static boolean loadNativeLibraryWithDebug(Path path, boolean isDebug) { - try { - if (isDebug) { - System.out.println("[DEBUG] Attempting to load: " + path.toAbsolutePath()); - } - - if (!Files.exists(path)) { - if (isDebug) System.out.println("[DEBUG] File doesn't exist: " + path); - return false; - } - - System.load(path.toAbsolutePath().toString()); - if (isDebug) System.out.println("[DEBUG] Successfully loaded: " + path); - return true; - } catch (UnsatisfiedLinkError e) { - if (isDebug) { - System.out.println("[DEBUG] Failed to load " + path + ": " + e.getMessage()); - e.printStackTrace(); - } - return false; - } - } + // As a last resort try load the os-dependent library from the jar file + nativeLibPath = getNativeResourcePath(); + if (hasNativeLib(nativeLibPath, nativeLibName)) { + // temporary library folder + String tempFolder = getTempDir().getAbsolutePath(); + // Try extracting the library from jar + if (extractAndLoadLibraryFile(nativeLibPath, nativeLibName, tempFolder)) { + return; + } + else { + triedPaths.add(nativeLibPath); + } + } - private static boolean extractAndLoadLibraryFileWithDebug(String libFolderForCurrentOS, String libraryFileName, - String targetFolder, boolean isDebug) { - String nativeLibraryFilePath = libFolderForCurrentOS + "/" + libraryFileName; - - // Include architecture name in temporary filename to avoid naming conflicts - String uuid = UUID.randomUUID().toString(); - String extractedLibFileName = String.format("%s-%s-%s", libraryFileName, uuid, OSInfo.getArchName()); - File extractedLibFile = new File(targetFolder, extractedLibFileName); - - try (InputStream reader = LlamaLoader.class.getResourceAsStream(nativeLibraryFilePath)) { - if (isDebug) { - System.out.println("[DEBUG] Extracting native library from JAR: " + nativeLibraryFilePath); - } - - if (reader == null) { - if (isDebug) System.out.println("[DEBUG] Cannot find native library in JAR: " + nativeLibraryFilePath); - return false; - } - - Files.copy(reader, extractedLibFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - - if (isDebug) { - System.out.println("[DEBUG] Extracted to: " + extractedLibFile.getAbsolutePath()); - System.out.println("[DEBUG] Attempting to load extracted file"); - } - - try { - System.load(extractedLibFile.getAbsolutePath()); - if (isDebug) System.out.println("[DEBUG] Successfully loaded: " + extractedLibFile.getAbsolutePath()); - return true; - } catch (UnsatisfiedLinkError e) { - if (isDebug) { - System.out.println("[DEBUG] Failed to load extracted library: " + e.getMessage()); - e.printStackTrace(); - } - return false; - } - } catch (IOException e) { - if (isDebug) { - System.out.println("[DEBUG] Failed to extract library: " + e.getMessage()); - e.printStackTrace(); - } - return false; - } + throw new UnsatisfiedLinkError( + String.format( + "No native library found for os.name=%s, os.arch=%s, paths=[%s]", + OSInfo.getOSName(), + OSInfo.getArchName(), + String.join(File.pathSeparator, triedPaths) + ) + ); } /** @@ -272,7 +164,7 @@ private static boolean extractAndLoadLibraryFileWithDebug(String libFolderForCur * @param path path of the native library * @return true for successfully loading, otherwise false */ - private static boolean loadNativeLibrary(Path path) { + public static boolean loadNativeLibrary(Path path) { if (!Files.exists(path)) { return false; } From 6a9f941aeb4cd3cc73a6ac54927e8834f870c7eb Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:49:03 +0100 Subject: [PATCH 350/384] re-generate jni header --- src/main/cpp/jllama.h | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 1f67b231..a97463e8 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -81,20 +81,19 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete /* * Class: de_kherud_llama_LlamaModel - * Method: jsonSchemaToGrammarBytes - * Signature: (Ljava/lang/String;)[B + * Method: releaseTask + * Signature: (I)V */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes - (JNIEnv *, jclass, jstring); - +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask + (JNIEnv *, jobject, jint); /* * Class: de_kherud_llama_LlamaModel - * Method: releaseTask - * Signature: ()V + * Method: jsonSchemaToGrammarBytes + * Signature: (Ljava/lang/String;)[B */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask - (JNIEnv *, jobject, jint); +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes + (JNIEnv *, jclass, jstring); #ifdef __cplusplus } From 9ff59aad3af0e3a58c48aea7af4d0b8388afdbf6 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 15:50:25 +0100 Subject: [PATCH 351/384] minor test json schema to grammar test fix --- src/test/java/de/kherud/llama/LlamaModelTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index f622e178..f2e931b4 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -290,7 +290,7 @@ public void testJsonSchemaToGrammar() { "c-kv ::= \"\\\"c\\\"\" space \":\" space string\n" + "char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n" + "root ::= \"{\" space (a-kv a-rest | b-kv b-rest | c-kv )? \"}\" space\n" + - "space ::= | \" \" | \"\\n\" [ \\t]{0,20}\n" + + "space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n" + "string ::= \"\\\"\" char* \"\\\"\" space\n"; String actualGrammar = LlamaModel.jsonSchemaToGrammar(schema); From 6c5ef7a57d608b55e2f94b0ba977b345c3852b2e Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:07:05 +0100 Subject: [PATCH 352/384] update pom.xml version 3.4.2 -> 4.0.0 --- README.md | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 341e740c..971c06af 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Access this library via Maven: de.kherud llama - 3.4.2 + 3.4.1 ``` @@ -37,7 +37,7 @@ Bu default the default library artifact is built only with CPU inference support de.kherud llama - 3.4.2 + 3.4.1 cuda12-linux-x86-64 ``` diff --git a/pom.xml b/pom.xml index a086bef1..c081e192 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.kherud llama - 3.4.2 + 4.0.0 jar ${project.groupId}:${project.artifactId} From bce868675b3b7afedac247fa91f3bd124bc51ad5 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:07:24 +0100 Subject: [PATCH 353/384] update clang format --- .clang-format | 53 ++++++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/.clang-format b/.clang-format index 1d24348d..a113c01c 100644 --- a/.clang-format +++ b/.clang-format @@ -1,6 +1,6 @@ --- Language: Cpp -# BasedOnStyle: Microsoft +# BasedOnStyle: LLVM AccessModifierOffset: -2 AlignAfterOpenBracket: Align AlignArrayOfStructures: None @@ -28,11 +28,6 @@ AlignConsecutiveMacros: AcrossComments: false AlignCompound: false PadOperators: false -AlignConsecutiveShortCaseStatements: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCaseColons: false AlignEscapedNewlines: Right AlignOperands: Align AlignTrailingComments: @@ -42,8 +37,8 @@ AllowAllArgumentsOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false -AllowShortEnumsOnASingleLine: false -AllowShortFunctionsOnASingleLine: None +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: All AllowShortLoopsOnASingleLine: false @@ -58,17 +53,17 @@ BinPackParameters: true BitFieldColonSpacing: Both BraceWrapping: AfterCaseLabel: false - AfterClass: true - AfterControlStatement: Always - AfterEnum: true - AfterExternBlock: true - AfterFunction: true - AfterNamespace: true - AfterObjCDeclaration: true - AfterStruct: true + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false AfterUnion: false - BeforeCatch: true - BeforeElse: true + BeforeCatch: false + BeforeElse: false BeforeLambdaBody: false BeforeWhile: false IndentBraces: false @@ -80,7 +75,7 @@ BreakAfterJavaFieldAnnotations: false BreakArrays: true BreakBeforeBinaryOperators: None BreakBeforeConceptDeclarations: Always -BreakBeforeBraces: Custom +BreakBeforeBraces: Attach BreakBeforeInlineASMColon: OnlyMultiline BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeColon @@ -142,7 +137,6 @@ IntegerLiteralSeparator: JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: true -KeepEmptyLinesAtEOF: false LambdaBodyIndentation: Signature LineEnding: DeriveLF MacroBlockBegin: '' @@ -150,7 +144,7 @@ MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 2 +ObjCBlockIndentWidth: 4 ObjCBreakBeforeNestedBlockParam: true ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true @@ -164,14 +158,13 @@ PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 PenaltyIndentedWhitespace: 0 -PenaltyReturnTypeOnItsOwnLine: 1000 +PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right PPIndentWidth: -1 QualifierAlignment: Leave ReferenceAlignment: Pointer ReflowComments: true RemoveBracesLLVM: false -RemoveParentheses: Leave RemoveSemicolon: false RequiresClausePosition: OwnLine RequiresExpressionIndentation: OuterScope @@ -189,7 +182,6 @@ SpaceBeforeCaseColon: false SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true -SpaceBeforeJsonColon: false SpaceBeforeParens: ControlStatements SpaceBeforeParensOptions: AfterControlStatements: true @@ -204,18 +196,16 @@ SpaceBeforeParensOptions: SpaceBeforeRangeBasedForLoopColon: true SpaceBeforeSquareBrackets: false SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: Never +SpacesInConditionalStatement: false SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false SpacesInLineCommentPrefix: Minimum: 1 Maximum: -1 -SpacesInParens: Never -SpacesInParensOptions: - InCStyleCasts: false - InConditionalStatements: false - InEmptyParentheses: false - Other: false +SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Latest StatementAttributeLikeMacros: @@ -223,9 +213,8 @@ StatementAttributeLikeMacros: StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION -TabWidth: 4 +TabWidth: 8 UseTab: Never -VerilogBreakBetweenInstancePorts: true WhitespaceSensitiveMacros: - BOOST_PP_STRINGIZE - CF_SWIFT_NAME From 71f24a71916e6c665844dfd93ffcde363dc8fe18 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:07:55 +0100 Subject: [PATCH 354/384] reformat c++ code --- src/main/cpp/jllama.cpp | 329 +++---- src/main/cpp/jllama.h | 33 +- src/main/cpp/server.hpp | 1948 +++++++++++++++++++-------------------- src/main/cpp/utils.hpp | 332 +++---- 4 files changed, 1236 insertions(+), 1406 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 0e0826a2..0db026ea 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -1,9 +1,9 @@ #include "jllama.h" #include "arg.h" +#include "json-schema-to-grammar.h" #include "llama.h" #include "log.h" -#include "json-schema-to-grammar.h" #include "nlohmann/json.hpp" #include "server.hpp" @@ -15,8 +15,7 @@ // early on if anything can't be found. This happens when the JVM loads the shared library (see `JNI_OnLoad`). // The references remain valid throughout the whole life of the shared library, on `JNI_OnUnload` they are released. -namespace -{ +namespace { JavaVM *g_vm = nullptr; // classes @@ -82,8 +81,7 @@ jobject o_log_callback = nullptr; /** * Convert a Java string to a std::string */ -std::string parse_jstring(JNIEnv *env, jstring java_string) -{ +std::string parse_jstring(JNIEnv *env, jstring java_string) { auto *const string_bytes = (jbyteArray)env->CallObjectMethod(java_string, m_get_bytes, o_utf_8); auto length = (size_t)env->GetArrayLength(string_bytes); @@ -97,17 +95,14 @@ std::string parse_jstring(JNIEnv *env, jstring java_string) return string; } -char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const jsize length) -{ +char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const jsize length) { auto *const result = static_cast(malloc(length * sizeof(char *))); - if (result == nullptr) - { + if (result == nullptr) { return nullptr; } - for (jsize i = 0; i < length; i++) - { + for (jsize i = 0; i < length; i++) { auto *const javaString = static_cast(env->GetObjectArrayElement(string_array, i)); const char *cString = env->GetStringUTFChars(javaString, nullptr); result[i] = strdup(cString); @@ -117,12 +112,9 @@ char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const js return result; } -void free_string_array(char **array, jsize length) -{ - if (array != nullptr) - { - for (jsize i = 0; i < length; i++) - { +void free_string_array(char **array, jsize length) { + if (array != nullptr) { + for (jsize i = 0; i < length; i++) { free(array[i]); } free(array); @@ -134,8 +126,7 @@ void free_string_array(char **array, jsize length) * but we directly send the bytes and do the conversion in Java. Unfortunately, there isn't a nice/standardized way to * do this conversion in C++ */ -jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) -{ +jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) { jsize length = string.size(); // NOLINT(*-narrowing-conversions) jbyteArray bytes = env->NewByteArray(length); env->SetByteArrayRegion(bytes, 0, length, reinterpret_cast(string.c_str())); @@ -145,10 +136,8 @@ jbyteArray parse_jbytes(JNIEnv *env, const std::string &string) /** * Map a llama.cpp log level to its Java enumeration option. */ -jobject log_level_to_jobject(ggml_log_level level) -{ - switch (level) - { +jobject log_level_to_jobject(ggml_log_level level) { + switch (level) { case GGML_LOG_LEVEL_ERROR: return o_log_level_error; case GGML_LOG_LEVEL_WARN: @@ -164,11 +153,9 @@ jobject log_level_to_jobject(ggml_log_level level) /** * Returns the JNIEnv of the current thread. */ -JNIEnv *get_jni_env() -{ +JNIEnv *get_jni_env() { JNIEnv *env = nullptr; - if (g_vm == nullptr || g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) - { + if (g_vm == nullptr || g_vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { throw std::runtime_error("Thread is not attached to the JVM"); } return env; @@ -180,10 +167,8 @@ std::function log_callback; /** * Invoke the log callback if there is any. */ -void log_callback_trampoline(ggml_log_level level, const char *text, void *user_data) -{ - if (log_callback != nullptr) - { +void log_callback_trampoline(ggml_log_level level, const char *text, void *user_data) { + if (log_callback != nullptr) { log_callback(level, text, user_data); } } @@ -197,13 +182,11 @@ void log_callback_trampoline(ggml_log_level level, const char *text, void *user_ * only requires JNI version `JNI_VERSION_1_1`. If the VM does not recognize the version number returned by `JNI_OnLoad`, the VM will unload the library and act as if the library was never loaded. */ -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) -{ +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { g_vm = vm; JNIEnv *env = nullptr; - if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) - { + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_1)) { goto error; } @@ -228,8 +211,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) if (!(c_llama_model && c_llama_iterator && c_standard_charsets && c_output && c_string && c_hash_map && c_map && c_set && c_entry && c_iterator && c_integer && c_float && c_biconsumer && c_llama_error && c_log_level && - c_log_format && c_error_oom)) - { + c_log_format && c_error_oom)) { goto error; } @@ -257,8 +239,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) cc_integer = env->GetMethodID(c_integer, "", "(I)V"); cc_float = env->GetMethodID(c_float, "", "(F)V"); - if (!(cc_output && cc_hash_map && cc_integer && cc_float)) - { + if (!(cc_output && cc_hash_map && cc_integer && cc_float)) { goto error; } @@ -276,8 +257,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) m_biconsumer_accept = env->GetMethodID(c_biconsumer, "accept", "(Ljava/lang/Object;Ljava/lang/Object;)V"); if (!(m_get_bytes && m_entry_set && m_set_iterator && m_iterator_has_next && m_iterator_next && m_entry_key && - m_entry_value && m_map_put && m_int_value && m_float_value && m_biconsumer_accept)) - { + m_entry_value && m_map_put && m_int_value && m_float_value && m_biconsumer_accept)) { goto error; } @@ -294,8 +274,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) f_log_format_text = env->GetStaticFieldID(c_log_format, "TEXT", "Lde/kherud/llama/args/LogFormat;"); if (!(f_model_pointer && f_task_id && f_utf_8 && f_iter_has_next && f_log_level_debug && f_log_level_info && - f_log_level_warn && f_log_level_error && f_log_format_json && f_log_format_text)) - { + f_log_level_warn && f_log_level_error && f_log_format_json && f_log_format_text)) { goto error; } @@ -308,8 +287,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) o_log_format_text = env->GetStaticObjectField(c_log_format, f_log_format_text); if (!(o_utf_8 && o_log_level_debug && o_log_level_info && o_log_level_warn && o_log_level_error && - o_log_format_json && o_log_format_text)) - { + o_log_format_json && o_log_format_text)) { goto error; } @@ -321,8 +299,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) o_log_format_json = env->NewGlobalRef(o_log_format_json); o_log_format_text = env->NewGlobalRef(o_log_format_text); - if (env->ExceptionCheck()) - { + if (env->ExceptionCheck()) { env->ExceptionDescribe(); goto error; } @@ -346,12 +323,10 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) * Note that `JNI_OnLoad` and `JNI_OnUnload` are two functions optionally supplied by JNI libraries, not exported from * the VM. */ -JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) -{ +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { JNIEnv *env = nullptr; - if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_6)) - { + if (JNI_OK != vm->GetEnv((void **)&env, JNI_VERSION_1_6)) { return; } @@ -380,33 +355,29 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) env->DeleteGlobalRef(o_log_format_json); env->DeleteGlobalRef(o_log_format_text); - if (o_log_callback != nullptr) - { + if (o_log_callback != nullptr) { env->DeleteGlobalRef(o_log_callback); } llama_backend_free(); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jobjectArray jparams) -{ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jobject obj, jobjectArray jparams) { common_params params; const jsize argc = env->GetArrayLength(jparams); char **argv = parse_string_array(env, jparams, argc); - if (argv == nullptr) - { + if (argv == nullptr) { return; } const auto parsed_params = common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SERVER); free_string_array(argv, argc); - if (!parsed_params) - { + if (!parsed_params) { return; } - SRV_INF("loading model '%s'\n", params.model.c_str()); + SRV_INF("loading model '%s'\n", params.model.c_str()); common_init(); @@ -429,8 +400,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo LOG_INF("%s: loading model\n", __func__); // load the model - if (!ctx_server->load_model(params)) - { + if (!ctx_server->load_model(params)) { llama_backend_free(); env->ThrowNew(c_llama_error, "could not load model from given file path"); return; @@ -443,62 +413,65 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo const auto model_meta = ctx_server->model_meta(); - if (!params.speculative.model.empty() || !params.speculative.hf_repo.empty()) { - SRV_INF("loading draft model '%s'\n", params.speculative.model.c_str()); - auto params_dft = params; + if (!params.speculative.model.empty() || !params.speculative.hf_repo.empty()) { + SRV_INF("loading draft model '%s'\n", params.speculative.model.c_str()); + auto params_dft = params; - params_dft.devices = params.speculative.devices; - params_dft.hf_file = params.speculative.hf_file; - params_dft.hf_repo = params.speculative.hf_repo; - params_dft.model = params.speculative.model; - params_dft.model_url = params.speculative.model_url; - params_dft.n_ctx = params.speculative.n_ctx == 0 ? params.n_ctx / params.n_parallel : params.speculative.n_ctx; - params_dft.n_gpu_layers = params.speculative.n_gpu_layers; - params_dft.n_parallel = 1; + params_dft.devices = params.speculative.devices; + params_dft.hf_file = params.speculative.hf_file; + params_dft.hf_repo = params.speculative.hf_repo; + params_dft.model = params.speculative.model; + params_dft.model_url = params.speculative.model_url; + params_dft.n_ctx = params.speculative.n_ctx == 0 ? params.n_ctx / params.n_parallel : params.speculative.n_ctx; + params_dft.n_gpu_layers = params.speculative.n_gpu_layers; + params_dft.n_parallel = 1; - common_init_result llama_init_dft = common_init_from_params(params_dft); + common_init_result llama_init_dft = common_init_from_params(params_dft); - llama_model * model_dft = llama_init_dft.model.get(); + llama_model *model_dft = llama_init_dft.model.get(); - if (model_dft == nullptr) { - SRV_ERR("failed to load draft model, '%s'\n", params.speculative.model.c_str()); - } + if (model_dft == nullptr) { + SRV_ERR("failed to load draft model, '%s'\n", params.speculative.model.c_str()); + } - if (!common_speculative_are_compatible(ctx_server->ctx, llama_init_dft.context.get())) { - SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", params.speculative.model.c_str(), params.model.c_str()); - } + if (!common_speculative_are_compatible(ctx_server->ctx, llama_init_dft.context.get())) { + SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", + params.speculative.model.c_str(), params.model.c_str()); + } - const int n_ctx_dft = llama_n_ctx(llama_init_dft.context.get()); + const int n_ctx_dft = llama_n_ctx(llama_init_dft.context.get()); - ctx_server->cparams_dft = common_context_params_to_llama(params_dft); - ctx_server->cparams_dft.n_batch = n_ctx_dft; + ctx_server->cparams_dft = common_context_params_to_llama(params_dft); + ctx_server->cparams_dft.n_batch = n_ctx_dft; - // force F16 KV cache for the draft model for extra performance - ctx_server->cparams_dft.type_k = GGML_TYPE_F16; - ctx_server->cparams_dft.type_v = GGML_TYPE_F16; + // force F16 KV cache for the draft model for extra performance + ctx_server->cparams_dft.type_k = GGML_TYPE_F16; + ctx_server->cparams_dft.type_v = GGML_TYPE_F16; - // the context is not needed - we will create one for each slot - llama_init_dft.context.reset(); - } + // the context is not needed - we will create one for each slot + llama_init_dft.context.reset(); + } - ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, params.chat_template); - try { - common_chat_format_example(ctx_server->chat_templates.get(), params.use_jinja); - } catch (const std::exception & e) { - SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); - ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, "chatml"); - } + ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, params.chat_template); + try { + common_chat_format_example(ctx_server->chat_templates.get(), params.use_jinja); + } catch (const std::exception &e) { + SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This " + "may cause the model to output suboptimal responses\n", + __func__); + ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, "chatml"); + } - // print sample chat example to make it clear which template is used + // print sample chat example to make it clear which template is used LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, - common_chat_templates_source(ctx_server->chat_templates.get()), - common_chat_format_example(ctx_server->chat_templates.get(), ctx_server->params_base.use_jinja).c_str()); - + common_chat_templates_source(ctx_server->chat_templates.get()), + common_chat_format_example(ctx_server->chat_templates.get(), ctx_server->params_base.use_jinja).c_str()); // print sample chat example to make it clear which template is used -// LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, - // common_chat_templates_source(ctx_server->chat_templates.get()), - // common_chat_format_example(*ctx_server->chat_templates.template_default, ctx_server->params_base.use_jinja) .c_str()); + // LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, + // common_chat_templates_source(ctx_server->chat_templates.get()), + // common_chat_format_example(*ctx_server->chat_templates.template_default, + // ctx_server->params_base.use_jinja) .c_str()); ctx_server->queue_tasks.on_new_task( std::bind(&server_context::process_single_task, ctx_server, std::placeholders::_1)); @@ -507,11 +480,9 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo std::thread t([ctx_server]() { JNIEnv *env; jint res = g_vm->GetEnv((void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { + if (res == JNI_EDETACHED) { res = g_vm->AttachCurrentThread((void **)&env, nullptr); - if (res != JNI_OK) - { + if (res != JNI_OK) { throw std::runtime_error("Failed to attach thread to JVM"); } } @@ -522,8 +493,7 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo env->SetLongField(obj, f_model_pointer, reinterpret_cast(ctx_server)); } -JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) -{ +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *env, jobject obj, jstring jparams) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) @@ -532,23 +502,20 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv server_task_type type = SERVER_TASK_TYPE_COMPLETION; - if (data.contains("input_prefix") || data.contains("input_suffix")) - { + if (data.contains("input_prefix") || data.contains("input_suffix")) { type = SERVER_TASK_TYPE_INFILL; } auto completion_id = gen_chatcmplid(); std::vector tasks; - try - { - const auto & prompt = data.at("prompt"); + try { + const auto &prompt = data.at("prompt"); std::vector tokenized_prompts = tokenize_input_prompts(ctx_server->vocab, prompt, true, true); tasks.reserve(tokenized_prompts.size()); - for (size_t i = 0; i < tokenized_prompts.size(); i++) - { + for (size_t i = 0; i < tokenized_prompts.size(); i++) { server_task task = server_task(type); task.id = ctx_server->queue_tasks.get_new_id(); @@ -565,9 +532,7 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv tasks.push_back(task); } - } - catch (const std::exception &e) - { + } catch (const std::exception &e) { const auto &err = format_error_response(e.what(), ERROR_TYPE_INVALID_REQUEST); env->ThrowNew(c_llama_error, err.dump().c_str()); return 0; @@ -578,8 +543,7 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv const auto task_ids = server_task::get_list_id(tasks); - if (task_ids.size() != 1) - { + if (task_ids.size() != 1) { env->ThrowNew(c_llama_error, "multitasking currently not supported"); return 0; } @@ -587,22 +551,19 @@ JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv return *task_ids.begin(); } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask(JNIEnv *env, jobject obj, jint id_task) -{ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask(JNIEnv *env, jobject obj, jint id_task) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) ctx_server->queue_results.remove_waiting_task_id(id_task); } -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) -{ +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *env, jobject obj, jint id_task) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) server_task_result_ptr result = ctx_server->queue_results.recv(id_task); - if (result->is_error()) - { + if (result->is_error()) { std::string response = result->to_json()["message"].get(); ctx_server->queue_results.remove_waiting_task_id(id_task); env->ThrowNew(c_llama_error, response.c_str()); @@ -610,23 +571,17 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE } const auto out_res = result->to_json(); - - std::string response = out_res["content"].get(); - if (result->is_stop()) - { + if (result->is_stop()) { ctx_server->queue_results.remove_waiting_task_id(id_task); } jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - if (out_res.contains("completion_probabilities")) - { + if (out_res.contains("completion_probabilities")) { auto completion_probabilities = out_res["completion_probabilities"]; - for (const auto &entry : completion_probabilities) - { + for (const auto &entry : completion_probabilities) { auto probs = entry["probs"]; - for (const auto &tp : probs) - { + for (const auto &tp : probs) { std::string tok_str = tp["tok_str"]; jstring jtok_str = env->NewStringUTF(tok_str.c_str()); float prob = tp["prob"]; @@ -641,20 +596,16 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIE return env->NewObject(c_output, cc_output, jbytes, o_probabilities, result->is_stop()); } -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring jprompt) -{ +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - if (!ctx_server->params_base.embedding) - { + if (!ctx_server->params_base.embedding) { env->ThrowNew(c_llama_error, "model was not loaded with embedding support (see ModelParameters#setEmbedding(boolean))"); return nullptr; } - - const std::string prompt = parse_jstring(env, jprompt); SRV_INF("Calling embedding '%s'\n", prompt.c_str()); @@ -685,9 +636,8 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, server_task_result_ptr result = ctx_server->queue_results.recv(id_task); ctx_server->queue_results.remove_waiting_task_id(id_task); - json response_str = result->to_json(); - if (result->is_error()) - { + json response_str = result->to_json(); + if (result->is_error()) { std::string response = result->to_json()["message"].get(); ctx_server->queue_results.remove_waiting_task_id(id_task); env->ThrowNew(c_llama_error, response.c_str()); @@ -696,42 +646,40 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, const auto out_res = result->to_json(); - // Extract "embedding" as a vector of vectors (2D array) - std::vector> embedding = out_res["embedding"].get>>(); + // Extract "embedding" as a vector of vectors (2D array) + std::vector> embedding = out_res["embedding"].get>>(); - // Get total number of rows in the embedding - jsize embedding_rows = embedding.size(); + // Get total number of rows in the embedding + jsize embedding_rows = embedding.size(); - // Get total number of columns in the first row (assuming all rows are of equal length) - jsize embedding_cols = embedding_rows > 0 ? embedding[0].size() : 0; + // Get total number of columns in the first row (assuming all rows are of equal length) + jsize embedding_cols = embedding_rows > 0 ? embedding[0].size() : 0; - SRV_INF("Embedding has %d rows and %d columns\n", embedding_rows, embedding_cols); + SRV_INF("Embedding has %d rows and %d columns\n", embedding_rows, embedding_cols); // Ensure embedding is not empty - if (embedding.empty() || embedding[0].empty()) { - env->ThrowNew(c_error_oom, "embedding array is empty"); - return nullptr; - } - - // Extract only the first row - const std::vector& first_row = embedding[0]; // Reference to avoid copying + if (embedding.empty() || embedding[0].empty()) { + env->ThrowNew(c_error_oom, "embedding array is empty"); + return nullptr; + } + // Extract only the first row + const std::vector &first_row = embedding[0]; // Reference to avoid copying - // Create a new float array in JNI - jfloatArray j_embedding = env->NewFloatArray(embedding_cols); - if (j_embedding == nullptr) { - env->ThrowNew(c_error_oom, "could not allocate embedding"); - return nullptr; - } + // Create a new float array in JNI + jfloatArray j_embedding = env->NewFloatArray(embedding_cols); + if (j_embedding == nullptr) { + env->ThrowNew(c_error_oom, "could not allocate embedding"); + return nullptr; + } - // Copy the first row into the JNI float array - env->SetFloatArrayRegion(j_embedding, 0, embedding_cols, reinterpret_cast(first_row.data())); + // Copy the first row into the JNI float array + env->SetFloatArrayRegion(j_embedding, 0, embedding_cols, reinterpret_cast(first_row.data())); - return j_embedding; + return j_embedding; } -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) -{ +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) @@ -741,8 +689,7 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jsize token_size = tokens.size(); // NOLINT(*-narrowing-conversions) jintArray java_tokens = env->NewIntArray(token_size); - if (java_tokens == nullptr) - { + if (java_tokens == nullptr) { env->ThrowNew(c_error_oom, "could not allocate token memory"); return nullptr; } @@ -753,8 +700,7 @@ JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, } JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *env, jobject obj, - jintArray java_tokens) -{ + jintArray java_tokens) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) @@ -768,19 +714,14 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv return parse_jbytes(env, text); } - - - -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) -{ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *env, jobject obj) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) ctx_server->queue_tasks.terminate(); - //delete ctx_server; + // delete ctx_server; } -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv *env, jobject obj, jint id_task) -{ +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv *env, jobject obj, jint id_task) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) std::unordered_set id_tasks = {id_task}; @@ -789,22 +730,17 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv * } JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jclass clazz, jobject log_format, - jobject jcallback) -{ - if (o_log_callback != nullptr) - { + jobject jcallback) { + if (o_log_callback != nullptr) { env->DeleteGlobalRef(o_log_callback); } log_json = env->IsSameObject(log_format, o_log_format_json); - if (jcallback == nullptr) - { + if (jcallback == nullptr) { log_callback = nullptr; llama_log_set(nullptr, nullptr); - } - else - { + } else { o_log_callback = env->NewGlobalRef(jcallback); log_callback = [](enum ggml_log_level level, const char *text, void *user_data) { JNIEnv *env = get_jni_env(); @@ -813,15 +749,14 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *env, jc env->CallVoidMethod(o_log_callback, m_biconsumer_accept, log_level, message); env->DeleteLocalRef(message); }; - if (!log_json) - { + if (!log_json) { llama_log_set(log_callback_trampoline, nullptr); } } } -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes(JNIEnv *env, jclass clazz, jstring j_schema) -{ +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes(JNIEnv *env, jclass clazz, + jstring j_schema) { const std::string c_schema = parse_jstring(env, j_schema); nlohmann::ordered_json c_schema_json = nlohmann::ordered_json::parse(c_schema); const std::string c_grammar = json_schema_to_grammar(c_schema_json); diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index a97463e8..63d95b71 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -12,88 +12,77 @@ extern "C" { * Method: embed * Signature: (Ljava/lang/String;)[F */ -JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed - (JNIEnv *, jobject, jstring); +JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *, jobject, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: encode * Signature: (Ljava/lang/String;)[I */ -JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode - (JNIEnv *, jobject, jstring); +JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *, jobject, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: setLogger * Signature: (Lde/kherud/llama/args/LogFormat;Ljava/util/function/BiConsumer;)V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger - (JNIEnv *, jclass, jobject, jobject); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_setLogger(JNIEnv *, jclass, jobject, jobject); /* * Class: de_kherud_llama_LlamaModel * Method: requestCompletion * Signature: (Ljava/lang/String;)I */ -JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion - (JNIEnv *, jobject, jstring); +JNIEXPORT jint JNICALL Java_de_kherud_llama_LlamaModel_requestCompletion(JNIEnv *, jobject, jstring); /* * Class: de_kherud_llama_LlamaModel * Method: receiveCompletion * Signature: (I)Lde/kherud/llama/LlamaOutput; */ -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion - (JNIEnv *, jobject, jint); +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_receiveCompletion(JNIEnv *, jobject, jint); /* * Class: de_kherud_llama_LlamaModel * Method: cancelCompletion * Signature: (I)V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion - (JNIEnv *, jobject, jint); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_cancelCompletion(JNIEnv *, jobject, jint); /* * Class: de_kherud_llama_LlamaModel * Method: decodeBytes * Signature: ([I)[B */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes - (JNIEnv *, jobject, jintArray); +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_decodeBytes(JNIEnv *, jobject, jintArray); /* * Class: de_kherud_llama_LlamaModel * Method: loadModel * Signature: ([Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel - (JNIEnv *, jobject, jobjectArray); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *, jobject, jobjectArray); /* * Class: de_kherud_llama_LlamaModel * Method: delete * Signature: ()V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete - (JNIEnv *, jobject); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_delete(JNIEnv *, jobject); /* * Class: de_kherud_llama_LlamaModel * Method: releaseTask * Signature: (I)V */ -JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask - (JNIEnv *, jobject, jint); +JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask(JNIEnv *, jobject, jint); /* * Class: de_kherud_llama_LlamaModel * Method: jsonSchemaToGrammarBytes * Signature: (Ljava/lang/String;)[B */ -JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes - (JNIEnv *, jclass, jstring); +JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes(JNIEnv *, jclass, jstring); #ifdef __cplusplus } diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 031c4a6b..66169a83 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -6,9 +6,9 @@ #include #include +#include #include #include -#include #include #include #include @@ -21,7 +21,6 @@ using json = nlohmann::ordered_json; constexpr int HTTP_POLLING_SECONDS = 1; - enum stop_type { STOP_TYPE_NONE, STOP_TYPE_EOS, @@ -32,15 +31,16 @@ enum stop_type { // state diagram: https://github.com/ggml-org/llama.cpp/pull/9283 enum slot_state { SLOT_STATE_IDLE, - SLOT_STATE_STARTED, // TODO: this state is only used for setting up the initial prompt processing; maybe merge it with launch_slot_with_task in the future + SLOT_STATE_STARTED, // TODO: this state is only used for setting up the initial prompt processing; maybe merge it + // with launch_slot_with_task in the future SLOT_STATE_PROCESSING_PROMPT, SLOT_STATE_DONE_PROMPT, SLOT_STATE_GENERATING, }; enum server_state { - SERVER_STATE_LOADING_MODEL, // Server is starting up, model not fully loaded yet - SERVER_STATE_READY, // Server is ready and model is loaded + SERVER_STATE_LOADING_MODEL, // Server is starting up, model not fully loaded yet + SERVER_STATE_READY, // Server is ready and model is loaded }; enum server_task_type { @@ -71,21 +71,22 @@ enum error_type { ERROR_TYPE_SERVER, ERROR_TYPE_NOT_FOUND, ERROR_TYPE_PERMISSION, - ERROR_TYPE_UNAVAILABLE, // custom error + ERROR_TYPE_UNAVAILABLE, // custom error ERROR_TYPE_NOT_SUPPORTED, // custom error }; struct slot_params { - bool stream = true; - bool cache_prompt = true; // remember the prompt to avoid reprocessing all prompt + bool stream = true; + bool cache_prompt = true; // remember the prompt to avoid reprocessing all prompt bool return_tokens = false; - int32_t n_keep = 0; // number of tokens to keep from initial prompt - int32_t n_discard = 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half + int32_t n_keep = 0; // number of tokens to keep from initial prompt + int32_t n_discard = + 0; // number of tokens after n_keep that may be discarded when shifting context, 0 defaults to half int32_t n_predict = -1; // new tokens to predict - int32_t n_indent = 0; // mininum line indentation for the generated text in number of whitespace characters + int32_t n_indent = 0; // mininum line indentation for the generated text in number of whitespace characters - int64_t t_max_prompt_ms = -1; // TODO: implement + int64_t t_max_prompt_ms = -1; // TODO: implement int64_t t_max_predict_ms = -1; // if positive, limit the generation phase to this time limit std::vector lora; @@ -100,16 +101,16 @@ struct slot_params { struct common_params_speculative speculative; // OAI-compat fields - bool verbose = false; - oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; - std::string oaicompat_model; - std::string oaicompat_cmpl_id; - common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; + bool verbose = false; + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; + common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; json to_json() const { std::vector samplers; samplers.reserve(sampling.samplers.size()); - for (const auto & sampler : sampling.samplers) { + for (const auto &sampler : sampling.samplers) { samplers.emplace_back(common_sampler_type_to_str(sampler)); } @@ -119,61 +120,61 @@ struct slot_params { } auto grammar_triggers = json::array(); - for (const auto & trigger : sampling.grammar_triggers) { + for (const auto &trigger : sampling.grammar_triggers) { grammar_triggers.push_back(trigger.to_json()); } - return json { - {"n_predict", n_predict}, // Server configured n_predict - {"seed", sampling.seed}, - {"temperature", sampling.temp}, - {"dynatemp_range", sampling.dynatemp_range}, - {"dynatemp_exponent", sampling.dynatemp_exponent}, - {"top_k", sampling.top_k}, - {"top_p", sampling.top_p}, - {"min_p", sampling.min_p}, - {"xtc_probability", sampling.xtc_probability}, - {"xtc_threshold", sampling.xtc_threshold}, - {"typical_p", sampling.typ_p}, - {"repeat_last_n", sampling.penalty_last_n}, - {"repeat_penalty", sampling.penalty_repeat}, - {"presence_penalty", sampling.penalty_present}, - {"frequency_penalty", sampling.penalty_freq}, - {"dry_multiplier", sampling.dry_multiplier}, - {"dry_base", sampling.dry_base}, - {"dry_allowed_length", sampling.dry_allowed_length}, - {"dry_penalty_last_n", sampling.dry_penalty_last_n}, - {"dry_sequence_breakers", sampling.dry_sequence_breakers}, - {"mirostat", sampling.mirostat}, - {"mirostat_tau", sampling.mirostat_tau}, - {"mirostat_eta", sampling.mirostat_eta}, - {"stop", antiprompt}, - {"max_tokens", n_predict}, // User configured n_predict - {"n_keep", n_keep}, - {"n_discard", n_discard}, - {"ignore_eos", sampling.ignore_eos}, - {"stream", stream}, - {"logit_bias", format_logit_bias(sampling.logit_bias)}, - {"n_probs", sampling.n_probs}, - {"min_keep", sampling.min_keep}, - {"grammar", sampling.grammar}, - {"grammar_lazy", sampling.grammar_lazy}, - {"grammar_triggers", grammar_triggers}, - {"preserved_tokens", sampling.preserved_tokens}, - {"chat_format", common_chat_format_name(oaicompat_chat_format)}, - {"samplers", samplers}, - {"speculative.n_max", speculative.n_max}, - {"speculative.n_min", speculative.n_min}, - {"speculative.p_min", speculative.p_min}, - {"timings_per_token", timings_per_token}, - {"post_sampling_probs", post_sampling_probs}, - {"lora", lora}, + return json{ + {"n_predict", n_predict}, // Server configured n_predict + {"seed", sampling.seed}, + {"temperature", sampling.temp}, + {"dynatemp_range", sampling.dynatemp_range}, + {"dynatemp_exponent", sampling.dynatemp_exponent}, + {"top_k", sampling.top_k}, + {"top_p", sampling.top_p}, + {"min_p", sampling.min_p}, + {"xtc_probability", sampling.xtc_probability}, + {"xtc_threshold", sampling.xtc_threshold}, + {"typical_p", sampling.typ_p}, + {"repeat_last_n", sampling.penalty_last_n}, + {"repeat_penalty", sampling.penalty_repeat}, + {"presence_penalty", sampling.penalty_present}, + {"frequency_penalty", sampling.penalty_freq}, + {"dry_multiplier", sampling.dry_multiplier}, + {"dry_base", sampling.dry_base}, + {"dry_allowed_length", sampling.dry_allowed_length}, + {"dry_penalty_last_n", sampling.dry_penalty_last_n}, + {"dry_sequence_breakers", sampling.dry_sequence_breakers}, + {"mirostat", sampling.mirostat}, + {"mirostat_tau", sampling.mirostat_tau}, + {"mirostat_eta", sampling.mirostat_eta}, + {"stop", antiprompt}, + {"max_tokens", n_predict}, // User configured n_predict + {"n_keep", n_keep}, + {"n_discard", n_discard}, + {"ignore_eos", sampling.ignore_eos}, + {"stream", stream}, + {"logit_bias", format_logit_bias(sampling.logit_bias)}, + {"n_probs", sampling.n_probs}, + {"min_keep", sampling.min_keep}, + {"grammar", sampling.grammar}, + {"grammar_lazy", sampling.grammar_lazy}, + {"grammar_triggers", grammar_triggers}, + {"preserved_tokens", sampling.preserved_tokens}, + {"chat_format", common_chat_format_name(oaicompat_chat_format)}, + {"samplers", samplers}, + {"speculative.n_max", speculative.n_max}, + {"speculative.n_min", speculative.n_min}, + {"speculative.p_min", speculative.p_min}, + {"timings_per_token", timings_per_token}, + {"post_sampling_probs", post_sampling_probs}, + {"lora", lora}, }; } }; struct server_task { - int id = -1; // to be filled by server_queue + int id = -1; // to be filled by server_queue int index = -1; // used when there are multiple prompts (batch request) server_task_type type; @@ -182,7 +183,7 @@ struct server_task { int id_target = -1; // used by SERVER_TASK_TYPE_INFERENCE - slot_params params; + slot_params params; llama_tokens prompt_tokens; int id_selected_slot = -1; @@ -202,59 +203,61 @@ struct server_task { server_task(server_task_type type) : type(type) {} - static slot_params params_from_json_cmpl( - const llama_context * ctx, - const common_params & params_base, - const json & data) { - const llama_model * model = llama_get_model(ctx); - const llama_vocab * vocab = llama_model_get_vocab(model); + static slot_params params_from_json_cmpl(const llama_context *ctx, const common_params ¶ms_base, + const json &data) { + const llama_model *model = llama_get_model(ctx); + const llama_vocab *vocab = llama_model_get_vocab(model); slot_params params; - // Sampling parameter defaults are loaded from the global server context (but individual requests can still override them) + // Sampling parameter defaults are loaded from the global server context (but individual requests can still + // override them) slot_params defaults; - defaults.sampling = params_base.sampling; + defaults.sampling = params_base.sampling; defaults.speculative = params_base.speculative; // enabling this will output extra debug information in the HTTP responses from the server - params.verbose = params_base.verbosity > 9; + params.verbose = params_base.verbosity > 9; params.timings_per_token = json_value(data, "timings_per_token", false); - params.stream = json_value(data, "stream", false); - params.cache_prompt = json_value(data, "cache_prompt", true); - params.return_tokens = json_value(data, "return_tokens", false); - params.n_predict = json_value(data, "n_predict", json_value(data, "max_tokens", defaults.n_predict)); - params.n_indent = json_value(data, "n_indent", defaults.n_indent); - params.n_keep = json_value(data, "n_keep", defaults.n_keep); - params.n_discard = json_value(data, "n_discard", defaults.n_discard); - //params.t_max_prompt_ms = json_value(data, "t_max_prompt_ms", defaults.t_max_prompt_ms); // TODO: implement - params.t_max_predict_ms = json_value(data, "t_max_predict_ms", defaults.t_max_predict_ms); - params.response_fields = json_value(data, "response_fields", std::vector()); - - params.sampling.top_k = json_value(data, "top_k", defaults.sampling.top_k); - params.sampling.top_p = json_value(data, "top_p", defaults.sampling.top_p); - params.sampling.min_p = json_value(data, "min_p", defaults.sampling.min_p); - params.sampling.xtc_probability = json_value(data, "xtc_probability", defaults.sampling.xtc_probability); - params.sampling.xtc_threshold = json_value(data, "xtc_threshold", defaults.sampling.xtc_threshold); - params.sampling.typ_p = json_value(data, "typical_p", defaults.sampling.typ_p); - params.sampling.temp = json_value(data, "temperature", defaults.sampling.temp); - params.sampling.dynatemp_range = json_value(data, "dynatemp_range", defaults.sampling.dynatemp_range); - params.sampling.dynatemp_exponent = json_value(data, "dynatemp_exponent", defaults.sampling.dynatemp_exponent); - params.sampling.penalty_last_n = json_value(data, "repeat_last_n", defaults.sampling.penalty_last_n); - params.sampling.penalty_repeat = json_value(data, "repeat_penalty", defaults.sampling.penalty_repeat); - params.sampling.penalty_freq = json_value(data, "frequency_penalty", defaults.sampling.penalty_freq); - params.sampling.penalty_present = json_value(data, "presence_penalty", defaults.sampling.penalty_present); - params.sampling.dry_multiplier = json_value(data, "dry_multiplier", defaults.sampling.dry_multiplier); - params.sampling.dry_base = json_value(data, "dry_base", defaults.sampling.dry_base); - params.sampling.dry_allowed_length = json_value(data, "dry_allowed_length", defaults.sampling.dry_allowed_length); - params.sampling.dry_penalty_last_n = json_value(data, "dry_penalty_last_n", defaults.sampling.dry_penalty_last_n); - params.sampling.mirostat = json_value(data, "mirostat", defaults.sampling.mirostat); - params.sampling.mirostat_tau = json_value(data, "mirostat_tau", defaults.sampling.mirostat_tau); - params.sampling.mirostat_eta = json_value(data, "mirostat_eta", defaults.sampling.mirostat_eta); - params.sampling.seed = json_value(data, "seed", defaults.sampling.seed); - params.sampling.n_probs = json_value(data, "n_probs", defaults.sampling.n_probs); - params.sampling.min_keep = json_value(data, "min_keep", defaults.sampling.min_keep); - params.post_sampling_probs = json_value(data, "post_sampling_probs", defaults.post_sampling_probs); + params.stream = json_value(data, "stream", false); + params.cache_prompt = json_value(data, "cache_prompt", true); + params.return_tokens = json_value(data, "return_tokens", false); + params.n_predict = json_value(data, "n_predict", json_value(data, "max_tokens", defaults.n_predict)); + params.n_indent = json_value(data, "n_indent", defaults.n_indent); + params.n_keep = json_value(data, "n_keep", defaults.n_keep); + params.n_discard = json_value(data, "n_discard", defaults.n_discard); + // params.t_max_prompt_ms = json_value(data, "t_max_prompt_ms", defaults.t_max_prompt_ms); // TODO: + // implement + params.t_max_predict_ms = json_value(data, "t_max_predict_ms", defaults.t_max_predict_ms); + params.response_fields = json_value(data, "response_fields", std::vector()); + + params.sampling.top_k = json_value(data, "top_k", defaults.sampling.top_k); + params.sampling.top_p = json_value(data, "top_p", defaults.sampling.top_p); + params.sampling.min_p = json_value(data, "min_p", defaults.sampling.min_p); + params.sampling.xtc_probability = json_value(data, "xtc_probability", defaults.sampling.xtc_probability); + params.sampling.xtc_threshold = json_value(data, "xtc_threshold", defaults.sampling.xtc_threshold); + params.sampling.typ_p = json_value(data, "typical_p", defaults.sampling.typ_p); + params.sampling.temp = json_value(data, "temperature", defaults.sampling.temp); + params.sampling.dynatemp_range = json_value(data, "dynatemp_range", defaults.sampling.dynatemp_range); + params.sampling.dynatemp_exponent = json_value(data, "dynatemp_exponent", defaults.sampling.dynatemp_exponent); + params.sampling.penalty_last_n = json_value(data, "repeat_last_n", defaults.sampling.penalty_last_n); + params.sampling.penalty_repeat = json_value(data, "repeat_penalty", defaults.sampling.penalty_repeat); + params.sampling.penalty_freq = json_value(data, "frequency_penalty", defaults.sampling.penalty_freq); + params.sampling.penalty_present = json_value(data, "presence_penalty", defaults.sampling.penalty_present); + params.sampling.dry_multiplier = json_value(data, "dry_multiplier", defaults.sampling.dry_multiplier); + params.sampling.dry_base = json_value(data, "dry_base", defaults.sampling.dry_base); + params.sampling.dry_allowed_length = + json_value(data, "dry_allowed_length", defaults.sampling.dry_allowed_length); + params.sampling.dry_penalty_last_n = + json_value(data, "dry_penalty_last_n", defaults.sampling.dry_penalty_last_n); + params.sampling.mirostat = json_value(data, "mirostat", defaults.sampling.mirostat); + params.sampling.mirostat_tau = json_value(data, "mirostat_tau", defaults.sampling.mirostat_tau); + params.sampling.mirostat_eta = json_value(data, "mirostat_eta", defaults.sampling.mirostat_eta); + params.sampling.seed = json_value(data, "seed", defaults.sampling.seed); + params.sampling.n_probs = json_value(data, "n_probs", defaults.sampling.n_probs); + params.sampling.min_keep = json_value(data, "min_keep", defaults.sampling.min_keep); + params.post_sampling_probs = json_value(data, "post_sampling_probs", defaults.post_sampling_probs); params.speculative.n_min = json_value(data, "speculative.n_min", defaults.speculative.n_min); params.speculative.n_max = json_value(data, "speculative.n_max", defaults.speculative.n_max); @@ -265,7 +268,7 @@ struct server_task { params.speculative.n_max = std::max(params.speculative.n_max, 0); // Use OpenAI API logprobs only if n_probs wasn't provided - if (data.contains("logprobs") && params.sampling.n_probs == defaults.sampling.n_probs){ + if (data.contains("logprobs") && params.sampling.n_probs == defaults.sampling.n_probs) { params.sampling.n_probs = json_value(data, "logprobs", defaults.sampling.n_probs); } @@ -305,10 +308,12 @@ struct server_task { // sequence breakers for DRY { // Currently, this is not compatible with TextGen WebUI, Koboldcpp and SillyTavern format - // Ref: https://github.com/oobabooga/text-generation-webui/blob/d1af7a41ade7bd3c3a463bfa640725edb818ebaf/extensions/openai/typing.py#L39 + // Ref: + // https://github.com/oobabooga/text-generation-webui/blob/d1af7a41ade7bd3c3a463bfa640725edb818ebaf/extensions/openai/typing.py#L39 if (data.contains("dry_sequence_breakers")) { - params.sampling.dry_sequence_breakers = json_value(data, "dry_sequence_breakers", std::vector()); + params.sampling.dry_sequence_breakers = + json_value(data, "dry_sequence_breakers", std::vector()); if (params.sampling.dry_sequence_breakers.empty()) { throw std::runtime_error("Error: dry_sequence_breakers must be a non-empty array of strings"); } @@ -318,15 +323,15 @@ struct server_task { // process "json_schema" and "grammar" if (data.contains("json_schema") && !data.contains("grammar")) { try { - auto schema = json_value(data, "json_schema", json::object()); + auto schema = json_value(data, "json_schema", json::object()); SRV_DBG("JSON schema: %s\n", schema.dump(2).c_str()); - params.sampling.grammar = json_schema_to_grammar(schema); + params.sampling.grammar = json_schema_to_grammar(schema); SRV_DBG("Converted grammar: %s\n", params.sampling.grammar.c_str()); - } catch (const std::exception & e) { + } catch (const std::exception &e) { throw std::runtime_error(std::string("\"json_schema\": ") + e.what()); } } else { - params.sampling.grammar = json_value(data, "grammar", defaults.sampling.grammar); + params.sampling.grammar = json_value(data, "grammar", defaults.sampling.grammar); SRV_DBG("Grammar: %s\n", params.sampling.grammar.c_str()); params.sampling.grammar_lazy = json_value(data, "grammar_lazy", defaults.sampling.grammar_lazy); SRV_DBG("Grammar lazy: %s\n", params.sampling.grammar_lazy ? "true" : "false"); @@ -345,33 +350,38 @@ struct server_task { { const auto preserved_tokens = data.find("preserved_tokens"); if (preserved_tokens != data.end()) { - for (const auto & t : *preserved_tokens) { - auto ids = common_tokenize(vocab, t.get(), /* add_special= */ false, /* parse_special= */ true); + for (const auto &t : *preserved_tokens) { + auto ids = common_tokenize(vocab, t.get(), /* add_special= */ false, + /* parse_special= */ true); if (ids.size() == 1) { SRV_DBG("Preserved token: %d\n", ids[0]); params.sampling.preserved_tokens.insert(ids[0]); } else { - // This may happen when using a tool call style meant for a model with special tokens to preserve on a model without said tokens. + // This may happen when using a tool call style meant for a model with special tokens to + // preserve on a model without said tokens. SRV_DBG("Not preserved because more than 1 token: %s\n", t.get().c_str()); } } } const auto grammar_triggers = data.find("grammar_triggers"); if (grammar_triggers != data.end()) { - for (const auto & t : *grammar_triggers) { + for (const auto &t : *grammar_triggers) { auto ct = common_grammar_trigger::from_json(t); if (ct.type == COMMON_GRAMMAR_TRIGGER_TYPE_WORD) { - const auto & word = ct.value; + const auto &word = ct.value; auto ids = common_tokenize(vocab, word, /* add_special= */ false, /* parse_special= */ true); if (ids.size() == 1) { auto token = ids[0]; - if (std::find(params.sampling.preserved_tokens.begin(), params.sampling.preserved_tokens.end(), (llama_token) token) == params.sampling.preserved_tokens.end()) { - throw std::runtime_error("Grammar trigger word should be marked as preserved token: " + word); + if (std::find(params.sampling.preserved_tokens.begin(), + params.sampling.preserved_tokens.end(), + (llama_token)token) == params.sampling.preserved_tokens.end()) { + throw std::runtime_error("Grammar trigger word should be marked as preserved token: " + + word); } SRV_DBG("Grammar trigger token: %d (`%s`)\n", token, word.c_str()); common_grammar_trigger trigger; trigger.type = COMMON_GRAMMAR_TRIGGER_TYPE_TOKEN; - trigger.value = (llama_token) token; + trigger.value = (llama_token)token; params.sampling.grammar_triggers.push_back(trigger); } else { SRV_DBG("Grammar trigger word: `%s`\n", word.c_str()); @@ -391,10 +401,10 @@ struct server_task { params.sampling.logit_bias.clear(); params.ignore_eos = json_value(data, "ignore_eos", false); - const auto & logit_bias = data.find("logit_bias"); + const auto &logit_bias = data.find("logit_bias"); if (logit_bias != data.end() && logit_bias->is_array()) { const int n_vocab = llama_vocab_n_tokens(vocab); - for (const auto & el : *logit_bias) { + for (const auto &el : *logit_bias) { // TODO: we may want to throw errors here, in case "el" is incorrect if (el.is_array() && el.size() == 2) { float bias; @@ -425,9 +435,9 @@ struct server_task { { params.antiprompt.clear(); - const auto & stop = data.find("stop"); + const auto &stop = data.find("stop"); if (stop != data.end() && stop->is_array()) { - for (const auto & word : *stop) { + for (const auto &word : *stop) { if (!word.empty()) { params.antiprompt.push_back(word); } @@ -440,7 +450,7 @@ struct server_task { if (samplers != data.end()) { if (samplers->is_array()) { params.sampling.samplers = common_sampler_types_from_names(*samplers, false); - } else if (samplers->is_string()){ + } else if (samplers->is_string()) { params.sampling.samplers = common_sampler_types_from_chars(samplers->get()); } } else { @@ -455,7 +465,7 @@ struct server_task { } // utility function - static std::unordered_set get_list_id(const std::vector & tasks) { + static std::unordered_set get_list_id(const std::vector &tasks) { std::unordered_set ids(tasks.size()); for (size_t i = 0; i < tasks.size(); i++) { ids.insert(tasks[i].id); @@ -477,22 +487,22 @@ struct result_timings { json to_json() const { return { - {"prompt_n", prompt_n}, - {"prompt_ms", prompt_ms}, - {"prompt_per_token_ms", prompt_per_token_ms}, - {"prompt_per_second", prompt_per_second}, + {"prompt_n", prompt_n}, + {"prompt_ms", prompt_ms}, + {"prompt_per_token_ms", prompt_per_token_ms}, + {"prompt_per_second", prompt_per_second}, - {"predicted_n", predicted_n}, - {"predicted_ms", predicted_ms}, + {"predicted_n", predicted_n}, + {"predicted_ms", predicted_ms}, {"predicted_per_token_ms", predicted_per_token_ms}, - {"predicted_per_second", predicted_per_second}, + {"predicted_per_second", predicted_per_second}, }; } }; struct server_task_result { - int id = -1; - int id_slot = -1; + int id = -1; + int id_slot = -1; virtual bool is_error() { // only used by server_task_result_error return false; @@ -501,9 +511,7 @@ struct server_task_result { // only used by server_task_result_cmpl_* return false; } - virtual int get_index() { - return -1; - } + virtual int get_index() { return -1; } virtual json to_json() = 0; virtual ~server_task_result() = default; }; @@ -513,10 +521,14 @@ using server_task_result_ptr = std::unique_ptr; inline std::string stop_type_to_str(stop_type type) { switch (type) { - case STOP_TYPE_EOS: return "eos"; - case STOP_TYPE_WORD: return "word"; - case STOP_TYPE_LIMIT: return "limit"; - default: return "none"; + case STOP_TYPE_EOS: + return "eos"; + case STOP_TYPE_WORD: + return "word"; + case STOP_TYPE_LIMIT: + return "limit"; + default: + return "none"; } } @@ -533,39 +545,30 @@ struct completion_token_output { json to_json(bool post_sampling_probs) const { json probs_for_token = json::array(); - for (const auto & p : probs) { + for (const auto &p : probs) { std::string txt(p.txt); txt.resize(validate_utf8(txt)); - probs_for_token.push_back(json { - {"id", p.tok}, - {"token", txt}, - {"bytes", str_to_bytes(p.txt)}, - { - post_sampling_probs ? "prob" : "logprob", - post_sampling_probs ? p.prob : logarithm(p.prob) - }, + probs_for_token.push_back(json{ + {"id", p.tok}, + {"token", txt}, + {"bytes", str_to_bytes(p.txt)}, + {post_sampling_probs ? "prob" : "logprob", post_sampling_probs ? p.prob : logarithm(p.prob)}, }); } return probs_for_token; } - static json probs_vector_to_json(const std::vector & probs, bool post_sampling_probs) { + static json probs_vector_to_json(const std::vector &probs, bool post_sampling_probs) { json out = json::array(); - for (const auto & p : probs) { + for (const auto &p : probs) { std::string txt(p.text_to_send); txt.resize(validate_utf8(txt)); - out.push_back(json { - {"id", p.tok}, - {"token", txt}, - {"bytes", str_to_bytes(p.text_to_send)}, - { - post_sampling_probs ? "prob" : "logprob", - post_sampling_probs ? p.prob : logarithm(p.prob) - }, - { - post_sampling_probs ? "top_probs" : "top_logprobs", - p.to_json(post_sampling_probs) - }, + out.push_back(json{ + {"id", p.tok}, + {"token", txt}, + {"bytes", str_to_bytes(p.text_to_send)}, + {post_sampling_probs ? "prob" : "logprob", post_sampling_probs ? p.prob : logarithm(p.prob)}, + {post_sampling_probs ? "top_probs" : "top_logprobs", p.to_json(post_sampling_probs)}, }); } return out; @@ -576,7 +579,7 @@ struct completion_token_output { return x == 0.0f ? std::numeric_limits::lowest() : std::log(x); } - static std::vector str_to_bytes(const std::string & str) { + static std::vector str_to_bytes(const std::string &str) { std::vector bytes; for (unsigned char c : str) { bytes.push_back(c); @@ -605,20 +608,18 @@ struct server_task_result_cmpl_final : server_task_result { bool post_sampling_probs; std::vector probs_output; - std::vector response_fields; + std::vector response_fields; slot_params generation_params; // OAI-compat fields - bool verbose = false; - oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; - std::string oaicompat_model; - std::string oaicompat_cmpl_id; - common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; + bool verbose = false; + oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; + common_chat_format oaicompat_chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; - virtual int get_index() override { - return index; - } + virtual int get_index() override { return index; } virtual bool is_stop() override { return true; // in stream mode, final responses are considered stop @@ -626,38 +627,39 @@ struct server_task_result_cmpl_final : server_task_result { virtual json to_json() override { switch (oaicompat) { - case OAICOMPAT_TYPE_NONE: - return to_json_non_oaicompat(); - case OAICOMPAT_TYPE_COMPLETION: - return to_json_oaicompat(); - case OAICOMPAT_TYPE_CHAT: - return stream ? to_json_oaicompat_chat_stream() : to_json_oaicompat_chat(); - default: - GGML_ASSERT(false && "Invalid oaicompat_type"); + case OAICOMPAT_TYPE_NONE: + return to_json_non_oaicompat(); + case OAICOMPAT_TYPE_COMPLETION: + return to_json_oaicompat(); + case OAICOMPAT_TYPE_CHAT: + return stream ? to_json_oaicompat_chat_stream() : to_json_oaicompat_chat(); + default: + GGML_ASSERT(false && "Invalid oaicompat_type"); } } json to_json_non_oaicompat() { - json res = json { - {"index", index}, - {"content", stream ? "" : content}, // in stream mode, content is already in last partial chunk - {"tokens", stream ? llama_tokens {} : tokens}, - {"id_slot", id_slot}, - {"stop", true}, - {"model", oaicompat_model}, - {"tokens_predicted", n_decoded}, - {"tokens_evaluated", n_prompt_tokens}, + json res = json{ + {"index", index}, + {"content", stream ? "" : content}, // in stream mode, content is already in last partial chunk + {"tokens", stream ? llama_tokens{} : tokens}, + {"id_slot", id_slot}, + {"stop", true}, + {"model", oaicompat_model}, + {"tokens_predicted", n_decoded}, + {"tokens_evaluated", n_prompt_tokens}, {"generation_settings", generation_params.to_json()}, - {"prompt", prompt}, - {"has_new_line", has_new_line}, - {"truncated", truncated}, - {"stop_type", stop_type_to_str(stop)}, - {"stopping_word", stopping_word}, - {"tokens_cached", n_tokens_cached}, - {"timings", timings.to_json()}, + {"prompt", prompt}, + {"has_new_line", has_new_line}, + {"truncated", truncated}, + {"stop_type", stop_type_to_str(stop)}, + {"stopping_word", stopping_word}, + {"tokens_cached", n_tokens_cached}, + {"timings", timings.to_json()}, }; if (!stream && !probs_output.empty()) { - res["completion_probabilities"] = completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs); + res["completion_probabilities"] = + completion_token_output::probs_vector_to_json(probs_output, post_sampling_probs); } return response_fields.empty() ? res : json_get_nested_values(response_fields, res); } @@ -674,26 +676,21 @@ struct server_task_result_cmpl_final : server_task_result { if (stop == STOP_TYPE_WORD || stop == STOP_TYPE_EOS) { finish_reason = "stop"; } - json res = json { - {"choices", json::array({ - json{ - {"text", stream ? "" : content}, // in stream mode, content is already in last partial chunk - {"index", index}, - {"logprobs", logprobs}, - {"finish_reason", finish_reason}, - } - })}, - {"created", t}, - {"model", oaicompat_model}, + json res = json{ + {"choices", json::array({json{ + {"text", stream ? "" : content}, // in stream mode, content is already in last partial chunk + {"index", index}, + {"logprobs", logprobs}, + {"finish_reason", finish_reason}, + }})}, + {"created", t}, + {"model", oaicompat_model}, {"system_fingerprint", build_info}, - {"object", "text_completion"}, - {"usage", json { - {"completion_tokens", n_decoded}, - {"prompt_tokens", n_prompt_tokens}, - {"total_tokens", n_decoded + n_prompt_tokens} - }}, - {"id", oaicompat_cmpl_id} - }; + {"object", "text_completion"}, + {"usage", json{{"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens}}}, + {"id", oaicompat_cmpl_id}}; // extra fields for debugging purposes if (verbose) { @@ -717,7 +714,7 @@ struct server_task_result_cmpl_final : server_task_result { msg.content = content; } - json message { + json message{ {"role", "assistant"}, }; if (!msg.reasoning_content.empty()) { @@ -730,20 +727,21 @@ struct server_task_result_cmpl_final : server_task_result { } if (!msg.tool_calls.empty()) { auto tool_calls = json::array(); - for (const auto & tc : msg.tool_calls) { + for (const auto &tc : msg.tool_calls) { tool_calls.push_back({ {"type", "function"}, - {"function", { - {"name", tc.name}, - {"arguments", tc.arguments}, - }}, + {"function", + { + {"name", tc.name}, + {"arguments", tc.arguments}, + }}, {"id", tc.id}, }); } message["tool_calls"] = tool_calls; } - json choice { + json choice{ {"finish_reason", finish_reason}, {"index", 0}, {"message", message}, @@ -757,19 +755,15 @@ struct server_task_result_cmpl_final : server_task_result { std::time_t t = std::time(0); - json res = json { - {"choices", json::array({choice})}, - {"created", t}, - {"model", oaicompat_model}, - {"system_fingerprint", build_info}, - {"object", "chat.completion"}, - {"usage", json { - {"completion_tokens", n_decoded}, - {"prompt_tokens", n_prompt_tokens}, - {"total_tokens", n_decoded + n_prompt_tokens} - }}, - {"id", oaicompat_cmpl_id} - }; + json res = json{{"choices", json::array({choice})}, + {"created", t}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "chat.completion"}, + {"usage", json{{"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens}}}, + {"id", oaicompat_cmpl_id}}; // extra fields for debugging purposes if (verbose) { @@ -789,24 +783,21 @@ struct server_task_result_cmpl_final : server_task_result { finish_reason = "stop"; } - json choice = json { - {"finish_reason", finish_reason}, - {"index", 0}, - {"delta", json::object()} - }; + json choice = json{{"finish_reason", finish_reason}, {"index", 0}, {"delta", json::object()}}; - json ret = json { - {"choices", json::array({choice})}, - {"created", t}, - {"id", oaicompat_cmpl_id}, - {"model", oaicompat_model}, + json ret = json{ + {"choices", json::array({choice})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, {"system_fingerprint", build_info}, - {"object", "chat.completion.chunk"}, - {"usage", json { - {"completion_tokens", n_decoded}, - {"prompt_tokens", n_prompt_tokens}, - {"total_tokens", n_decoded + n_prompt_tokens}, - }}, + {"object", "chat.completion.chunk"}, + {"usage", + json{ + {"completion_tokens", n_decoded}, + {"prompt_tokens", n_prompt_tokens}, + {"total_tokens", n_decoded + n_prompt_tokens}, + }}, }; if (timings.prompt_n >= 0) { @@ -820,7 +811,7 @@ struct server_task_result_cmpl_final : server_task_result { struct server_task_result_cmpl_partial : server_task_result { int index = 0; - std::string content; + std::string content; llama_tokens tokens; int32_t n_decoded; @@ -831,14 +822,12 @@ struct server_task_result_cmpl_partial : server_task_result { result_timings timings; // OAI-compat fields - bool verbose = false; + bool verbose = false; oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; - std::string oaicompat_model; - std::string oaicompat_cmpl_id; + std::string oaicompat_model; + std::string oaicompat_cmpl_id; - virtual int get_index() override { - return index; - } + virtual int get_index() override { return index; } virtual bool is_stop() override { return false; // in stream mode, partial responses are not considered stop @@ -846,25 +835,25 @@ struct server_task_result_cmpl_partial : server_task_result { virtual json to_json() override { switch (oaicompat) { - case OAICOMPAT_TYPE_NONE: - return to_json_non_oaicompat(); - case OAICOMPAT_TYPE_COMPLETION: - return to_json_oaicompat(); - case OAICOMPAT_TYPE_CHAT: - return to_json_oaicompat_chat(); - default: - GGML_ASSERT(false && "Invalid oaicompat_type"); + case OAICOMPAT_TYPE_NONE: + return to_json_non_oaicompat(); + case OAICOMPAT_TYPE_COMPLETION: + return to_json_oaicompat(); + case OAICOMPAT_TYPE_CHAT: + return to_json_oaicompat_chat(); + default: + GGML_ASSERT(false && "Invalid oaicompat_type"); } } json to_json_non_oaicompat() { // non-OAI-compat JSON - json res = json { - {"index", index}, - {"content", content}, - {"tokens", tokens}, - {"stop", false}, - {"id_slot", id_slot}, + json res = json{ + {"index", index}, + {"content", content}, + {"tokens", tokens}, + {"stop", false}, + {"id_slot", id_slot}, {"tokens_predicted", n_decoded}, {"tokens_evaluated", n_prompt_tokens}, }; @@ -873,7 +862,8 @@ struct server_task_result_cmpl_partial : server_task_result { res.push_back({"timings", timings.to_json()}); } if (!prob_output.probs.empty()) { - res["completion_probabilities"] = completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs); + res["completion_probabilities"] = + completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs); } return res; } @@ -886,21 +876,17 @@ struct server_task_result_cmpl_partial : server_task_result { {"content", completion_token_output::probs_vector_to_json({prob_output}, post_sampling_probs)}, }; } - json res = json { - {"choices", json::array({ - json{ - {"text", content}, - {"index", index}, - {"logprobs", logprobs}, - {"finish_reason", nullptr}, - } - })}, - {"created", t}, - {"model", oaicompat_model}, - {"system_fingerprint", build_info}, - {"object", "text_completion"}, - {"id", oaicompat_cmpl_id} - }; + json res = json{{"choices", json::array({json{ + {"text", content}, + {"index", index}, + {"logprobs", logprobs}, + {"finish_reason", nullptr}, + }})}, + {"created", t}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "text_completion"}, + {"id", oaicompat_cmpl_id}}; // extra fields for debugging purposes if (verbose) { @@ -920,32 +906,26 @@ struct server_task_result_cmpl_partial : server_task_result { if (first) { if (content.empty()) { - choices = json::array({json{{"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{{"role", "assistant"}}}}}); + choices = json::array( + {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"role", "assistant"}}}}}); } else { // We have to send this as two updates to conform to openai behavior - json initial_ret = json{{"choices", json::array({json{ - {"finish_reason", nullptr}, - {"index", 0}, - {"delta", json{ - {"role", "assistant"} - }}}})}, - {"created", t}, - {"id", oaicompat_cmpl_id}, - {"model", oaicompat_model}, - {"object", "chat.completion.chunk"}}; - - json second_ret = json{ - {"choices", json::array({json{{"finish_reason", nullptr}, - {"index", 0}, - {"delta", json { - {"content", content}}} - }})}, - {"created", t}, - {"id", oaicompat_cmpl_id}, - {"model", oaicompat_model}, - {"object", "chat.completion.chunk"}}; + json initial_ret = json{{"choices", json::array({json{{"finish_reason", nullptr}, + {"index", 0}, + {"delta", json{{"role", "assistant"}}}}})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"object", "chat.completion.chunk"}}; + + json second_ret = + json{{"choices", + json::array( + {json{{"finish_reason", nullptr}, {"index", 0}, {"delta", json{{"content", content}}}}})}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"object", "chat.completion.chunk"}}; return std::vector({initial_ret, second_ret}); } @@ -954,9 +934,9 @@ struct server_task_result_cmpl_partial : server_task_result { {"finish_reason", nullptr}, {"index", 0}, {"delta", - json { - {"content", content}, - }}, + json{ + {"content", content}, + }}, }}); } @@ -968,14 +948,12 @@ struct server_task_result_cmpl_partial : server_task_result { }; } - json ret = json { - {"choices", choices}, - {"created", t}, - {"id", oaicompat_cmpl_id}, - {"model", oaicompat_model}, - {"system_fingerprint", build_info}, - {"object", "chat.completion.chunk"} - }; + json ret = json{{"choices", choices}, + {"created", t}, + {"id", oaicompat_cmpl_id}, + {"model", oaicompat_model}, + {"system_fingerprint", build_info}, + {"object", "chat.completion.chunk"}}; if (timings.prompt_n >= 0) { ret.push_back({"timings", timings.to_json()}); @@ -994,27 +972,23 @@ struct server_task_result_embd : server_task_result { // OAI-compat fields oaicompat_type oaicompat = OAICOMPAT_TYPE_NONE; - virtual int get_index() override { - return index; - } + virtual int get_index() override { return index; } virtual json to_json() override { - return oaicompat == OAICOMPAT_TYPE_EMBEDDING - ? to_json_oaicompat() - : to_json_non_oaicompat(); + return oaicompat == OAICOMPAT_TYPE_EMBEDDING ? to_json_oaicompat() : to_json_non_oaicompat(); } json to_json_non_oaicompat() { - return json { - {"index", index}, + return json{ + {"index", index}, {"embedding", embedding}, }; } json to_json_oaicompat() { - return json { - {"index", index}, - {"embedding", embedding[0]}, + return json{ + {"index", index}, + {"embedding", embedding[0]}, {"tokens_evaluated", n_tokens}, }; } @@ -1026,54 +1000,52 @@ struct server_task_result_rerank : server_task_result { int32_t n_tokens; - virtual int get_index() override { - return index; - } + virtual int get_index() override { return index; } virtual json to_json() override { - return json { - {"index", index}, - {"score", score}, + return json{ + {"index", index}, + {"score", score}, {"tokens_evaluated", n_tokens}, }; } }; // this function maybe used outside of server_task_result_error -static json format_error_response(const std::string & message, const enum error_type type) { +static json format_error_response(const std::string &message, const enum error_type type) { std::string type_str; int code = 500; switch (type) { - case ERROR_TYPE_INVALID_REQUEST: - type_str = "invalid_request_error"; - code = 400; - break; - case ERROR_TYPE_AUTHENTICATION: - type_str = "authentication_error"; - code = 401; - break; - case ERROR_TYPE_NOT_FOUND: - type_str = "not_found_error"; - code = 404; - break; - case ERROR_TYPE_SERVER: - type_str = "server_error"; - code = 500; - break; - case ERROR_TYPE_PERMISSION: - type_str = "permission_error"; - code = 403; - break; - case ERROR_TYPE_NOT_SUPPORTED: - type_str = "not_supported_error"; - code = 501; - break; - case ERROR_TYPE_UNAVAILABLE: - type_str = "unavailable_error"; - code = 503; - break; - } - return json { + case ERROR_TYPE_INVALID_REQUEST: + type_str = "invalid_request_error"; + code = 400; + break; + case ERROR_TYPE_AUTHENTICATION: + type_str = "authentication_error"; + code = 401; + break; + case ERROR_TYPE_NOT_FOUND: + type_str = "not_found_error"; + code = 404; + break; + case ERROR_TYPE_SERVER: + type_str = "server_error"; + code = 500; + break; + case ERROR_TYPE_PERMISSION: + type_str = "permission_error"; + code = 403; + break; + case ERROR_TYPE_NOT_SUPPORTED: + type_str = "not_supported_error"; + code = 501; + break; + case ERROR_TYPE_UNAVAILABLE: + type_str = "unavailable_error"; + code = 503; + break; + } + return json{ {"code", code}, {"message", message}, {"type", type_str}, @@ -1085,13 +1057,9 @@ struct server_task_result_error : server_task_result { error_type err_type = ERROR_TYPE_SERVER; std::string err_msg; - virtual bool is_error() override { - return true; - } + virtual bool is_error() override { return true; } - virtual json to_json() override { - return format_error_response(err_msg, err_type); - } + virtual json to_json() override { return format_error_response(err_msg, err_type); } }; struct server_task_result_metrics : server_task_result { @@ -1105,17 +1073,17 @@ struct server_task_result_metrics : server_task_result { // TODO: somehow reuse server_metrics in the future, instead of duplicating the fields uint64_t n_prompt_tokens_processed_total = 0; - uint64_t t_prompt_processing_total = 0; - uint64_t n_tokens_predicted_total = 0; - uint64_t t_tokens_generation_total = 0; + uint64_t t_prompt_processing_total = 0; + uint64_t n_tokens_predicted_total = 0; + uint64_t t_tokens_generation_total = 0; uint64_t n_prompt_tokens_processed = 0; - uint64_t t_prompt_processing = 0; + uint64_t t_prompt_processing = 0; - uint64_t n_tokens_predicted = 0; + uint64_t n_tokens_predicted = 0; uint64_t t_tokens_generation = 0; - uint64_t n_decode_total = 0; + uint64_t n_decode_total = 0; uint64_t n_busy_slots_total = 0; // while we can also use std::vector this requires copying the slot object which can be quite messy @@ -1123,29 +1091,29 @@ struct server_task_result_metrics : server_task_result { json slots_data = json::array(); virtual json to_json() override { - return json { - { "idle", n_idle_slots }, - { "processing", n_processing_slots }, - { "deferred", n_tasks_deferred }, - { "t_start", t_start }, + return json{ + {"idle", n_idle_slots}, + {"processing", n_processing_slots}, + {"deferred", n_tasks_deferred}, + {"t_start", t_start}, - { "n_prompt_tokens_processed_total", n_prompt_tokens_processed_total }, - { "t_tokens_generation_total", t_tokens_generation_total }, - { "n_tokens_predicted_total", n_tokens_predicted_total }, - { "t_prompt_processing_total", t_prompt_processing_total }, + {"n_prompt_tokens_processed_total", n_prompt_tokens_processed_total}, + {"t_tokens_generation_total", t_tokens_generation_total}, + {"n_tokens_predicted_total", n_tokens_predicted_total}, + {"t_prompt_processing_total", t_prompt_processing_total}, - { "n_prompt_tokens_processed", n_prompt_tokens_processed }, - { "t_prompt_processing", t_prompt_processing }, - { "n_tokens_predicted", n_tokens_predicted }, - { "t_tokens_generation", t_tokens_generation }, + {"n_prompt_tokens_processed", n_prompt_tokens_processed}, + {"t_prompt_processing", t_prompt_processing}, + {"n_tokens_predicted", n_tokens_predicted}, + {"t_tokens_generation", t_tokens_generation}, - { "n_decode_total", n_decode_total }, - { "n_busy_slots_total", n_busy_slots_total }, + {"n_decode_total", n_decode_total}, + {"n_busy_slots_total", n_busy_slots_total}, - { "kv_cache_tokens_count", kv_cache_tokens_count }, - { "kv_cache_used_cells", kv_cache_used_cells }, + {"kv_cache_tokens_count", kv_cache_tokens_count}, + {"kv_cache_used_cells", kv_cache_used_cells}, - { "slots", slots_data }, + {"slots", slots_data}, }; } }; @@ -1160,24 +1128,17 @@ struct server_task_result_slot_save_load : server_task_result { virtual json to_json() override { if (is_save) { - return json { - { "id_slot", id_slot }, - { "filename", filename }, - { "n_saved", n_tokens }, - { "n_written", n_bytes }, - { "timings", { - { "save_ms", t_ms } - }}, + return json{ + {"id_slot", id_slot}, {"filename", filename}, {"n_saved", n_tokens}, + {"n_written", n_bytes}, {"timings", {{"save_ms", t_ms}}}, }; } else { - return json { - { "id_slot", id_slot }, - { "filename", filename }, - { "n_restored", n_tokens }, - { "n_read", n_bytes }, - { "timings", { - { "restore_ms", t_ms } - }}, + return json{ + {"id_slot", id_slot}, + {"filename", filename}, + {"n_restored", n_tokens}, + {"n_read", n_bytes}, + {"timings", {{"restore_ms", t_ms}}}, }; } } @@ -1187,17 +1148,15 @@ struct server_task_result_slot_erase : server_task_result { size_t n_erased; virtual json to_json() override { - return json { - { "id_slot", id_slot }, - { "n_erased", n_erased }, + return json{ + {"id_slot", id_slot}, + {"n_erased", n_erased}, }; } }; struct server_task_result_apply_lora : server_task_result { - virtual json to_json() override { - return json {{ "success", true }}; - } + virtual json to_json() override { return json{{"success", true}}; } }; struct server_slot { @@ -1209,10 +1168,10 @@ struct server_slot { llama_batch batch_spec = {}; - llama_context * ctx = nullptr; - llama_context * ctx_dft = nullptr; + llama_context *ctx = nullptr; + llama_context *ctx_dft = nullptr; - common_speculative * spec = nullptr; + common_speculative *spec = nullptr; std::vector lora; @@ -1227,15 +1186,15 @@ struct server_slot { int64_t t_last_used = -1; // generation props - int32_t n_ctx = 0; // context size per slot - int32_t n_past = 0; - int32_t n_decoded = 0; + int32_t n_ctx = 0; // context size per slot + int32_t n_past = 0; + int32_t n_decoded = 0; int32_t n_remaining = -1; - int32_t i_batch = -1; - int32_t n_predict = -1; // TODO: disambiguate from params.n_predict + int32_t i_batch = -1; + int32_t n_predict = -1; // TODO: disambiguate from params.n_predict // n_prompt_tokens may not be equal to prompt_tokens.size(), because prompt maybe truncated - int32_t n_prompt_tokens = 0; + int32_t n_prompt_tokens = 0; int32_t n_prompt_tokens_processed = 0; // input prompt tokens @@ -1243,7 +1202,7 @@ struct server_slot { size_t last_nl_pos = 0; - std::string generated_text; + std::string generated_text; llama_tokens generated_tokens; llama_tokens cache_tokens; @@ -1251,8 +1210,8 @@ struct server_slot { std::vector generated_token_probs; bool has_next_token = true; - bool has_new_line = false; - bool truncated = false; + bool has_new_line = false; + bool truncated = false; stop_type stop; std::string stopping_word; @@ -1260,14 +1219,14 @@ struct server_slot { // sampling json json_schema; - struct common_sampler * smpl = nullptr; + struct common_sampler *smpl = nullptr; llama_token sampled; common_chat_format chat_format = COMMON_CHAT_FORMAT_CONTENT_ONLY; // stats - size_t n_sent_text = 0; // number of sent text character + size_t n_sent_text = 0; // number of sent text character int64_t t_start_process_prompt; int64_t t_start_generation; @@ -1280,16 +1239,16 @@ struct server_slot { void reset() { SLT_DBG(*this, "%s", "\n"); - n_prompt_tokens = 0; - last_nl_pos = 0; - generated_text = ""; - has_new_line = false; - truncated = false; - stop = STOP_TYPE_NONE; - stopping_word = ""; - n_past = 0; - n_sent_text = 0; - task_type = SERVER_TASK_TYPE_COMPLETION; + n_prompt_tokens = 0; + last_nl_pos = 0; + generated_text = ""; + has_new_line = false; + truncated = false; + stop = STOP_TYPE_NONE; + stopping_word = ""; + n_past = 0; + n_sent_text = 0; + task_type = SERVER_TASK_TYPE_COMPLETION; generated_tokens.clear(); generated_token_probs.clear(); @@ -1299,12 +1258,11 @@ struct server_slot { return task_type == SERVER_TASK_TYPE_EMBEDDING || task_type == SERVER_TASK_TYPE_RERANK; } - bool can_batch_with(server_slot & other_slot) { - return is_non_causal() == other_slot.is_non_causal() - && are_lora_equal(lora, other_slot.lora); + bool can_batch_with(server_slot &other_slot) { + return is_non_causal() == other_slot.is_non_causal() && are_lora_equal(lora, other_slot.lora); } - bool has_budget(const common_params & global_params) { + bool has_budget(const common_params &global_params) { if (params.n_predict == -1 && global_params.n_predict == -1) { return true; // limitless } @@ -1320,15 +1278,11 @@ struct server_slot { return n_remaining > 0; // no budget } - bool is_processing() const { - return state != SLOT_STATE_IDLE; - } + bool is_processing() const { return state != SLOT_STATE_IDLE; } - bool can_speculate() const { - return ctx_dft && params.speculative.n_max > 0 && params.cache_prompt; - } + bool can_speculate() const { return ctx_dft && params.speculative.n_max > 0 && params.cache_prompt; } - void add_token(const completion_token_output & token) { + void add_token(const completion_token_output &token) { if (!is_processing()) { SLT_WRN(*this, "%s", "slot is not processing\n"); return; @@ -1362,14 +1316,14 @@ struct server_slot { return timings; } - size_t find_stopping_strings(const std::string & text, const size_t last_token_size, bool is_full_stop) { + size_t find_stopping_strings(const std::string &text, const size_t last_token_size, bool is_full_stop) { size_t stop_pos = std::string::npos; - for (const std::string & word : params.antiprompt) { + for (const std::string &word : params.antiprompt) { size_t pos; if (is_full_stop) { - const size_t tmp = word.size() + last_token_size; + const size_t tmp = word.size() + last_token_size; const size_t from_pos = text.size() > tmp ? text.size() - tmp : 0; pos = text.find(word, from_pos); @@ -1380,8 +1334,8 @@ struct server_slot { if (pos != std::string::npos && (stop_pos == std::string::npos || pos < stop_pos)) { if (is_full_stop) { - stop = STOP_TYPE_WORD; - stopping_word = word; + stop = STOP_TYPE_WORD; + stopping_word = word; has_next_token = false; } stop_pos = pos; @@ -1392,10 +1346,10 @@ struct server_slot { } void print_timings() const { - const double t_prompt = t_prompt_processing / n_prompt_tokens_processed; + const double t_prompt = t_prompt_processing / n_prompt_tokens_processed; const double n_prompt_second = 1e3 / t_prompt_processing * n_prompt_tokens_processed; - const double t_gen = t_token_generation / n_decoded; + const double t_gen = t_token_generation / n_decoded; const double n_gen_second = 1e3 / t_token_generation * n_decoded; SLT_INF(*this, @@ -1403,30 +1357,29 @@ struct server_slot { "prompt eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)\n" " eval time = %10.2f ms / %5d tokens (%8.2f ms per token, %8.2f tokens per second)\n" " total time = %10.2f ms / %5d tokens\n", - t_prompt_processing, n_prompt_tokens_processed, t_prompt, n_prompt_second, - t_token_generation, n_decoded, t_gen, n_gen_second, - t_prompt_processing + t_token_generation, n_prompt_tokens_processed + n_decoded); + t_prompt_processing, n_prompt_tokens_processed, t_prompt, n_prompt_second, t_token_generation, + n_decoded, t_gen, n_gen_second, t_prompt_processing + t_token_generation, + n_prompt_tokens_processed + n_decoded); } json to_json() const { - return json { - {"id", id}, - {"id_task", id_task}, - {"n_ctx", n_ctx}, - {"speculative", can_speculate()}, + return json{ + {"id", id}, + {"id_task", id_task}, + {"n_ctx", n_ctx}, + {"speculative", can_speculate()}, {"is_processing", is_processing()}, - {"non_causal", is_non_causal()}, - {"params", params.to_json()}, - {"prompt", common_detokenize(ctx, prompt_tokens)}, + {"non_causal", is_non_causal()}, + {"params", params.to_json()}, + {"prompt", common_detokenize(ctx, prompt_tokens)}, {"next_token", - { - {"has_next_token", has_next_token}, - {"has_new_line", has_new_line}, - {"n_remain", n_remaining}, - {"n_decoded", n_decoded}, - {"stopping_word", stopping_word}, - } - }, + { + {"has_next_token", has_next_token}, + {"has_new_line", has_new_line}, + {"n_remain", n_remaining}, + {"n_decoded", n_decoded}, + {"stopping_word", stopping_word}, + }}, }; } }; @@ -1435,40 +1388,38 @@ struct server_metrics { int64_t t_start = 0; uint64_t n_prompt_tokens_processed_total = 0; - uint64_t t_prompt_processing_total = 0; - uint64_t n_tokens_predicted_total = 0; - uint64_t t_tokens_generation_total = 0; + uint64_t t_prompt_processing_total = 0; + uint64_t n_tokens_predicted_total = 0; + uint64_t t_tokens_generation_total = 0; uint64_t n_prompt_tokens_processed = 0; - uint64_t t_prompt_processing = 0; + uint64_t t_prompt_processing = 0; - uint64_t n_tokens_predicted = 0; + uint64_t n_tokens_predicted = 0; uint64_t t_tokens_generation = 0; - uint64_t n_decode_total = 0; + uint64_t n_decode_total = 0; uint64_t n_busy_slots_total = 0; - void init() { - t_start = ggml_time_us(); - } + void init() { t_start = ggml_time_us(); } - void on_prompt_eval(const server_slot & slot) { + void on_prompt_eval(const server_slot &slot) { n_prompt_tokens_processed_total += slot.n_prompt_tokens_processed; - n_prompt_tokens_processed += slot.n_prompt_tokens_processed; - t_prompt_processing += slot.t_prompt_processing; - t_prompt_processing_total += slot.t_prompt_processing; + n_prompt_tokens_processed += slot.n_prompt_tokens_processed; + t_prompt_processing += slot.t_prompt_processing; + t_prompt_processing_total += slot.t_prompt_processing; } - void on_prediction(const server_slot & slot) { - n_tokens_predicted_total += slot.n_decoded; - n_tokens_predicted += slot.n_decoded; - t_tokens_generation += slot.t_token_generation; - t_tokens_generation_total += slot.t_token_generation; + void on_prediction(const server_slot &slot) { + n_tokens_predicted_total += slot.n_decoded; + n_tokens_predicted += slot.n_decoded; + t_tokens_generation += slot.t_token_generation; + t_tokens_generation_total += slot.t_token_generation; } - void on_decoded(const std::vector & slots) { + void on_decoded(const std::vector &slots) { n_decode_total++; - for (const auto & slot : slots) { + for (const auto &slot : slots) { if (slot.is_processing()) { n_busy_slots_total++; } @@ -1477,9 +1428,9 @@ struct server_metrics { void reset_bucket() { n_prompt_tokens_processed = 0; - t_prompt_processing = 0; - n_tokens_predicted = 0; - t_tokens_generation = 0; + t_prompt_processing = 0; + n_tokens_predicted = 0; + t_tokens_generation = 0; } }; @@ -1496,7 +1447,7 @@ struct server_queue { // callback functions std::function callback_new_task; - std::function callback_update_slots; + std::function callback_update_slots; // Add a new task to the end of the queue int post(server_task task, bool front = false) { @@ -1517,9 +1468,9 @@ struct server_queue { } // multi-task version of post() - int post(std::vector & tasks, bool front = false) { + int post(std::vector &tasks, bool front = false) { std::unique_lock lock(mutex_tasks); - for (auto & task : tasks) { + for (auto &task : tasks) { if (task.id == -1) { task.id = id++; } @@ -1527,7 +1478,7 @@ struct server_queue { if (task.type == SERVER_TASK_TYPE_CANCEL) { cleanup_pending_task(task.id_target); } - QUE_DBG("new task, id = %d/%d, front = %d\n", task.id, (int) tasks.size(), front); + QUE_DBG("new task, id = %d/%d, front = %d\n", task.id, (int)tasks.size(), front); if (front) { queue_tasks.push_front(std::move(task)); } else { @@ -1554,14 +1505,10 @@ struct server_queue { } // Register function to process a new task - void on_new_task(std::function callback) { - callback_new_task = std::move(callback); - } + void on_new_task(std::function callback) { callback_new_task = std::move(callback); } // Register the function to be called when all slots data is ready to be processed - void on_update_slots(std::function callback) { - callback_update_slots = std::move(callback); - } + void on_update_slots(std::function callback) { callback_update_slots = std::move(callback); } // Call when the state of one slot is changed, it will move one task from deferred to main queue void pop_deferred_task() { @@ -1624,26 +1571,19 @@ struct server_queue { return; } if (queue_tasks.empty()) { - condition_tasks.wait(lock, [&]{ - return (!queue_tasks.empty() || !running); - }); + condition_tasks.wait(lock, [&] { return (!queue_tasks.empty() || !running); }); } } } } -private: + private: void cleanup_pending_task(int id_target) { // no need lock because this is called exclusively by post() - auto rm_func = [id_target](const server_task & task) { - return task.id_target == id_target; - }; - queue_tasks.erase( - std::remove_if(queue_tasks.begin(), queue_tasks.end(), rm_func), - queue_tasks.end()); - queue_tasks_deferred.erase( - std::remove_if(queue_tasks_deferred.begin(), queue_tasks_deferred.end(), rm_func), - queue_tasks_deferred.end()); + auto rm_func = [id_target](const server_task &task) { return task.id_target == id_target; }; + queue_tasks.erase(std::remove_if(queue_tasks.begin(), queue_tasks.end(), rm_func), queue_tasks.end()); + queue_tasks_deferred.erase(std::remove_if(queue_tasks_deferred.begin(), queue_tasks_deferred.end(), rm_func), + queue_tasks_deferred.end()); } }; @@ -1659,51 +1599,51 @@ struct server_response { // add the id_task to the list of tasks waiting for response void add_waiting_task_id(int id_task) { - SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", id_task, (int) waiting_task_ids.size()); + SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", id_task, + (int)waiting_task_ids.size()); std::unique_lock lock(mutex_results); waiting_task_ids.insert(id_task); } - void add_waiting_tasks(const std::vector & tasks) { + void add_waiting_tasks(const std::vector &tasks) { std::unique_lock lock(mutex_results); - for (const auto & task : tasks) { - SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", task.id, (int) waiting_task_ids.size()); + for (const auto &task : tasks) { + SRV_DBG("add task %d to waiting list. current waiting = %d (before add)\n", task.id, + (int)waiting_task_ids.size()); waiting_task_ids.insert(task.id); } } // when the request is finished, we can remove task associated with it void remove_waiting_task_id(int id_task) { - SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, (int) waiting_task_ids.size()); + SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, + (int)waiting_task_ids.size()); std::unique_lock lock(mutex_results); waiting_task_ids.erase(id_task); // make sure to clean up all pending results - queue_results.erase( - std::remove_if(queue_results.begin(), queue_results.end(), [id_task](const server_task_result_ptr & res) { - return res->id == id_task; - }), - queue_results.end()); + queue_results.erase(std::remove_if(queue_results.begin(), queue_results.end(), + [id_task](const server_task_result_ptr &res) { return res->id == id_task; }), + queue_results.end()); } - void remove_waiting_task_ids(const std::unordered_set & id_tasks) { + void remove_waiting_task_ids(const std::unordered_set &id_tasks) { std::unique_lock lock(mutex_results); - for (const auto & id_task : id_tasks) { - SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, (int) waiting_task_ids.size()); + for (const auto &id_task : id_tasks) { + SRV_DBG("remove task %d from waiting list. current waiting = %d (before remove)\n", id_task, + (int)waiting_task_ids.size()); waiting_task_ids.erase(id_task); } } // This function blocks the thread until there is a response for one of the id_tasks - server_task_result_ptr recv(const std::unordered_set & id_tasks) { + server_task_result_ptr recv(const std::unordered_set &id_tasks) { while (true) { std::unique_lock lock(mutex_results); - condition_results.wait(lock, [&]{ - return !queue_results.empty(); - }); + condition_results.wait(lock, [&] { return !queue_results.empty(); }); for (size_t i = 0; i < queue_results.size(); i++) { if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) { @@ -1719,11 +1659,11 @@ struct server_response { // same as recv(), but have timeout in seconds // if timeout is reached, nullptr is returned - server_task_result_ptr recv_with_timeout(const std::unordered_set & id_tasks, int timeout) { + server_task_result_ptr recv_with_timeout(const std::unordered_set &id_tasks, int timeout) { while (true) { std::unique_lock lock(mutex_results); - for (int i = 0; i < (int) queue_results.size(); i++) { + for (int i = 0; i < (int)queue_results.size(); i++) { if (id_tasks.find(queue_results[i]->id) != id_tasks.end()) { server_task_result_ptr res = std::move(queue_results[i]); queue_results.erase(queue_results.begin() + i); @@ -1747,11 +1687,11 @@ struct server_response { } // Send a new result to a waiting id_task - void send(server_task_result_ptr && result) { + void send(server_task_result_ptr &&result) { SRV_DBG("sending result for task id = %d\n", result->id); std::unique_lock lock(mutex_results); - for (const auto & id_task : waiting_task_ids) { + for (const auto &id_task : waiting_task_ids) { if (result->id == id_task) { SRV_DBG("task id = %d pushed to result queue\n", result->id); @@ -1770,20 +1710,20 @@ struct server_context { common_init_result llama_init; common_init_result llama_init_dft; - llama_model * model = nullptr; - llama_context * ctx = nullptr; + llama_model *model = nullptr; + llama_context *ctx = nullptr; - const llama_vocab * vocab = nullptr; + const llama_vocab *vocab = nullptr; - llama_model * model_dft = nullptr; + llama_model *model_dft = nullptr; llama_context_params cparams_dft; llama_batch batch = {}; bool clean_kv_cache = true; - bool add_bos_token = true; - bool has_eos_token = false; + bool add_bos_token = true; + bool has_eos_token = false; int32_t n_ctx; // total context for all clients / slots @@ -1791,7 +1731,7 @@ struct server_context { std::vector slots; json default_generation_settings_for_props; - server_queue queue_tasks; + server_queue queue_tasks; server_response queue_results; server_metrics metrics; @@ -1803,7 +1743,7 @@ struct server_context { ~server_context() { // Clear any sampling context - for (server_slot & slot : slots) { + for (server_slot &slot : slots) { common_sampler_free(slot.smpl); slot.smpl = nullptr; @@ -1819,7 +1759,7 @@ struct server_context { llama_batch_free(batch); } - bool load_model(const common_params & params) { + bool load_model(const common_params ¶ms) { SRV_INF("loading model '%s'\n", params.model.c_str()); params_base = params; @@ -1827,7 +1767,7 @@ struct server_context { llama_init = common_init_from_params(params_base); model = llama_init.model.get(); - ctx = llama_init.context.get(); + ctx = llama_init.context.get(); if (model == nullptr) { SRV_ERR("failed to load model, '%s'\n", params_base.model.c_str()); @@ -1846,14 +1786,15 @@ struct server_context { auto params_dft = params_base; - params_dft.devices = params_base.speculative.devices; - params_dft.hf_file = params_base.speculative.hf_file; - params_dft.hf_repo = params_base.speculative.hf_repo; - params_dft.model = params_base.speculative.model; - params_dft.model_url = params_base.speculative.model_url; - params_dft.n_ctx = params_base.speculative.n_ctx == 0 ? params_base.n_ctx / params_base.n_parallel : params_base.speculative.n_ctx; + params_dft.devices = params_base.speculative.devices; + params_dft.hf_file = params_base.speculative.hf_file; + params_dft.hf_repo = params_base.speculative.hf_repo; + params_dft.model = params_base.speculative.model; + params_dft.model_url = params_base.speculative.model_url; + params_dft.n_ctx = params_base.speculative.n_ctx == 0 ? params_base.n_ctx / params_base.n_parallel + : params_base.speculative.n_ctx; params_dft.n_gpu_layers = params_base.speculative.n_gpu_layers; - params_dft.n_parallel = 1; + params_dft.n_parallel = 1; llama_init_dft = common_init_from_params(params_dft); @@ -1865,7 +1806,8 @@ struct server_context { } if (!common_speculative_are_compatible(ctx, llama_init_dft.context.get())) { - SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", params_base.speculative.model.c_str(), params_base.model.c_str()); + SRV_ERR("the draft model '%s' is not compatible with the target model '%s'\n", + params_base.speculative.model.c_str(), params_base.model.c_str()); return false; } @@ -1886,8 +1828,10 @@ struct server_context { chat_templates = common_chat_templates_init(model, params_base.chat_template); try { common_chat_format_example(chat_templates.get(), params.use_jinja); - } catch (const std::exception & e) { - SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This may cause the model to output suboptimal responses\n", __func__); + } catch (const std::exception &e) { + SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. " + "This may cause the model to output suboptimal responses\n", + __func__); chat_templates = common_chat_templates_init(model, "chatml"); } @@ -1927,9 +1871,7 @@ struct server_context { slot.params.sampling = params_base.sampling; - slot.callback_on_release = [this](int) { - queue_tasks.pop_deferred_task(); - }; + slot.callback_on_release = [this](int) { queue_tasks.pop_deferred_task(); }; slot.reset(); @@ -1939,7 +1881,8 @@ struct server_context { default_generation_settings_for_props = slots[0].to_json(); // the update_slots() logic will always submit a maximum of n_batch or n_parallel tokens - // note that n_batch can be > n_ctx (e.g. for non-causal attention models such as BERT where the KV cache is not used) + // note that n_batch can be > n_ctx (e.g. for non-causal attention models such as BERT where the KV cache is not + // used) { const int32_t n_batch = llama_n_batch(ctx); @@ -1950,8 +1893,8 @@ struct server_context { metrics.init(); } - server_slot * get_slot_by_id(int id) { - for (server_slot & slot : slots) { + server_slot *get_slot_by_id(int id) { + for (server_slot &slot : slots) { if (slot.id == id) { return &slot; } @@ -1960,15 +1903,15 @@ struct server_context { return nullptr; } - server_slot * get_available_slot(const server_task & task) { - server_slot * ret = nullptr; + server_slot *get_available_slot(const server_task &task) { + server_slot *ret = nullptr; // find the slot that has at least n% prompt similarity if (ret == nullptr && slot_prompt_similarity != 0.0f) { int lcs_len = 0; float similarity = 0; - for (server_slot & slot : slots) { + for (server_slot &slot : slots) { // skip the slot if it is not available if (slot.is_processing()) { continue; @@ -2001,7 +1944,7 @@ struct server_context { // find the slot that has been least recently used if (ret == nullptr) { int64_t t_last = ggml_time_us(); - for (server_slot & slot : slots) { + for (server_slot &slot : slots) { // skip the slot if it is not available if (slot.is_processing()) { continue; @@ -2022,12 +1965,12 @@ struct server_context { return ret; } - bool launch_slot_with_task(server_slot & slot, const server_task & task) { + bool launch_slot_with_task(server_slot &slot, const server_task &task) { slot.reset(); - slot.id_task = task.id; - slot.index = task.index; - slot.task_type = task.type; - slot.params = std::move(task.params); + slot.id_task = task.id; + slot.index = task.index; + slot.task_type = task.type; + slot.params = std::move(task.params); slot.prompt_tokens = std::move(task.prompt_tokens); if (!are_lora_equal(task.params.lora, slot.lora)) { @@ -2040,7 +1983,8 @@ struct server_context { if (slot.n_predict > 0 && slot.params.n_predict > slot.n_predict) { // Might be better to reject the request with a 400 ? - SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d\n", slot.params.n_predict, slot.n_predict); + SLT_WRN(slot, "n_predict = %d exceeds server configuration, setting to %d\n", slot.params.n_predict, + slot.n_predict); slot.params.n_predict = slot.n_predict; } @@ -2082,7 +2026,7 @@ struct server_context { clean_kv_cache = false; } - bool process_token(completion_token_output & result, server_slot & slot) { + bool process_token(completion_token_output &result, server_slot &slot) { // remember which tokens were sampled - used for repetition penalties during sampling const std::string token_str = result.text_to_send; slot.sampled = result.tok; @@ -2105,9 +2049,7 @@ struct server_context { size_t stop_pos = slot.find_stopping_strings(str_test, token_str.size(), true); if (stop_pos != std::string::npos) { - slot.generated_text.erase( - slot.generated_text.begin() + pos + stop_pos, - slot.generated_text.end()); + slot.generated_text.erase(slot.generated_text.begin() + pos + stop_pos, slot.generated_text.end()); pos = std::min(slot.n_sent_text, slot.generated_text.size()); } else if (slot.has_next_token) { stop_pos = slot.find_stopping_strings(str_test, token_str.size(), false); @@ -2136,7 +2078,7 @@ struct server_context { // check the limits if (slot.n_decoded > 0 && slot.has_next_token && !slot.has_budget(params_base)) { - slot.stop = STOP_TYPE_LIMIT; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; SLT_DBG(slot, "stopped by limit, n_decoded = %d, n_predict = %d\n", slot.n_decoded, slot.params.n_predict); @@ -2144,11 +2086,13 @@ struct server_context { if (slot.has_new_line) { // if we have already seen a new line, we stop after a certain time limit - if (slot.params.t_max_predict_ms > 0 && (ggml_time_us() - slot.t_start_generation > 1000.0f*slot.params.t_max_predict_ms)) { - slot.stop = STOP_TYPE_LIMIT; + if (slot.params.t_max_predict_ms > 0 && + (ggml_time_us() - slot.t_start_generation > 1000.0f * slot.params.t_max_predict_ms)) { + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; - SLT_DBG(slot, "stopped by time limit, n_decoded = %d, t_max_predict_ms = %d ms\n", slot.n_decoded, (int) slot.params.t_max_predict_ms); + SLT_DBG(slot, "stopped by time limit, n_decoded = %d, t_max_predict_ms = %d ms\n", slot.n_decoded, + (int)slot.params.t_max_predict_ms); } // require that each new line has a whitespace prefix (i.e. indentation) of at least slot.params.n_indent @@ -2159,19 +2103,21 @@ struct server_context { size_t pos = slot.last_nl_pos; int n_indent = 0; - while (pos < slot.generated_text.size() && (slot.generated_text[pos] == ' ' || slot.generated_text[pos] == '\t')) { + while (pos < slot.generated_text.size() && + (slot.generated_text[pos] == ' ' || slot.generated_text[pos] == '\t')) { n_indent++; pos++; } if (pos < slot.generated_text.size() && n_indent < slot.params.n_indent) { - slot.stop = STOP_TYPE_LIMIT; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; // cut the last line slot.generated_text.erase(pos, std::string::npos); - SLT_DBG(slot, "stopped by indentation limit, n_decoded = %d, n_indent = %d\n", slot.n_decoded, n_indent); + SLT_DBG(slot, "stopped by indentation limit, n_decoded = %d, n_indent = %d\n", slot.n_decoded, + n_indent); } } @@ -2193,16 +2139,18 @@ struct server_context { // if context shift is disabled, we stop when it reaches the context limit if (slot.n_past >= slot.n_ctx) { - slot.truncated = true; - slot.stop = STOP_TYPE_LIMIT; + slot.truncated = true; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; - SLT_DBG(slot, "stopped due to running out of context capacity, n_past = %d, n_prompt_tokens = %d, n_decoded = %d, n_ctx = %d\n", + SLT_DBG(slot, + "stopped due to running out of context capacity, n_past = %d, n_prompt_tokens = %d, n_decoded = " + "%d, n_ctx = %d\n", slot.n_decoded, slot.n_prompt_tokens, slot.n_past, slot.n_ctx); } if (llama_vocab_is_eog(vocab, result.tok)) { - slot.stop = STOP_TYPE_EOS; + slot.stop = STOP_TYPE_EOS; slot.has_next_token = false; SLT_DBG(slot, "%s", "stopped by EOS\n"); @@ -2211,8 +2159,8 @@ struct server_context { const auto n_ctx_train = llama_model_n_ctx_train(model); if (slot.params.n_predict < 1 && slot.n_predict < 1 && slot.n_prompt_tokens + slot.n_decoded >= n_ctx_train) { - slot.truncated = true; - slot.stop = STOP_TYPE_LIMIT; + slot.truncated = true; + slot.stop = STOP_TYPE_LIMIT; slot.has_next_token = false; // stop prediction SLT_WRN(slot, @@ -2221,16 +2169,18 @@ struct server_context { slot.params.n_predict, n_ctx_train); } - SLT_DBG(slot, "n_decoded = %d, n_remaining = %d, next token: %5d '%s'\n", slot.n_decoded, slot.n_remaining, result.tok, token_str.c_str()); + SLT_DBG(slot, "n_decoded = %d, n_remaining = %d, next token: %5d '%s'\n", slot.n_decoded, slot.n_remaining, + result.tok, token_str.c_str()); return slot.has_next_token; // continue } - void populate_token_probs(const server_slot & slot, completion_token_output & result, bool post_sampling, bool special, int idx) { + void populate_token_probs(const server_slot &slot, completion_token_output &result, bool post_sampling, + bool special, int idx) { size_t n_probs = slot.params.sampling.n_probs; size_t n_vocab = llama_vocab_n_tokens(vocab); if (post_sampling) { - const auto * cur_p = common_sampler_get_candidates(slot.smpl); + const auto *cur_p = common_sampler_get_candidates(slot.smpl); const size_t max_probs = cur_p->size; // set probability for sampled token @@ -2244,11 +2194,8 @@ struct server_context { // set probability for top n_probs tokens result.probs.reserve(max_probs); for (size_t i = 0; i < std::min(max_probs, n_probs); i++) { - result.probs.push_back({ - cur_p->data[i].id, - common_token_to_piece(ctx, cur_p->data[i].id, special), - cur_p->data[i].p - }); + result.probs.push_back( + {cur_p->data[i].id, common_token_to_piece(ctx, cur_p->data[i].id, special), cur_p->data[i].p}); } } else { // TODO: optimize this with min-p optimization @@ -2266,49 +2213,45 @@ struct server_context { // set probability for top n_probs tokens result.probs.reserve(n_probs); for (size_t i = 0; i < std::min(n_vocab, n_probs); i++) { - result.probs.push_back({ - cur[i].id, - common_token_to_piece(ctx, cur[i].id, special), - cur[i].p - }); + result.probs.push_back({cur[i].id, common_token_to_piece(ctx, cur[i].id, special), cur[i].p}); } } } - void send_error(const server_task & task, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + void send_error(const server_task &task, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) { send_error(task.id, error, type); } - void send_error(const server_slot & slot, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + void send_error(const server_slot &slot, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) { send_error(slot.id_task, error, type); } - void send_error(const int id_task, const std::string & error, const enum error_type type = ERROR_TYPE_SERVER) { + void send_error(const int id_task, const std::string &error, const enum error_type type = ERROR_TYPE_SERVER) { SRV_ERR("task id = %d, error: %s\n", id_task, error.c_str()); auto res = std::make_unique(); - res->id = id_task; + res->id = id_task; res->err_type = type; - res->err_msg = error; + res->err_msg = error; queue_results.send(std::move(res)); } - void send_partial_response(server_slot & slot, const completion_token_output & tkn) { + void send_partial_response(server_slot &slot, const completion_token_output &tkn) { auto res = std::make_unique(); - res->id = slot.id_task; - res->index = slot.index; + res->id = slot.id_task; + res->index = slot.index; res->content = tkn.text_to_send; - res->tokens = { tkn.tok }; + res->tokens = {tkn.tok}; - res->n_decoded = slot.n_decoded; - res->n_prompt_tokens = slot.n_prompt_tokens; + res->n_decoded = slot.n_decoded; + res->n_prompt_tokens = slot.n_prompt_tokens; res->post_sampling_probs = slot.params.post_sampling_probs; - res->verbose = slot.params.verbose; - res->oaicompat = slot.params.oaicompat; - res->oaicompat_model = slot.params.oaicompat_model; + res->verbose = slot.params.verbose; + res->oaicompat = slot.params.oaicompat; + res->oaicompat_model = slot.params.oaicompat_model; res->oaicompat_cmpl_id = slot.params.oaicompat_cmpl_id; // populate res.probs_output @@ -2324,32 +2267,32 @@ struct server_context { queue_results.send(std::move(res)); } - void send_final_response(server_slot & slot) { + void send_final_response(server_slot &slot) { auto res = std::make_unique(); - res->id = slot.id_task; - res->id_slot = slot.id; - - res->index = slot.index; - res->content = std::move(slot.generated_text); - res->tokens = std::move(slot.generated_tokens); - res->timings = slot.get_timings(); - res->prompt = common_detokenize(ctx, slot.prompt_tokens, true); + res->id = slot.id_task; + res->id_slot = slot.id; + + res->index = slot.index; + res->content = std::move(slot.generated_text); + res->tokens = std::move(slot.generated_tokens); + res->timings = slot.get_timings(); + res->prompt = common_detokenize(ctx, slot.prompt_tokens, true); res->response_fields = std::move(slot.params.response_fields); - res->truncated = slot.truncated; - res->n_decoded = slot.n_decoded; - res->n_prompt_tokens = slot.n_prompt_tokens; - res->n_tokens_cached = slot.n_past; - res->has_new_line = slot.has_new_line; - res->stopping_word = slot.stopping_word; - res->stop = slot.stop; + res->truncated = slot.truncated; + res->n_decoded = slot.n_decoded; + res->n_prompt_tokens = slot.n_prompt_tokens; + res->n_tokens_cached = slot.n_past; + res->has_new_line = slot.has_new_line; + res->stopping_word = slot.stopping_word; + res->stop = slot.stop; res->post_sampling_probs = slot.params.post_sampling_probs; - res->verbose = slot.params.verbose; - res->stream = slot.params.stream; - res->oaicompat = slot.params.oaicompat; - res->oaicompat_model = slot.params.oaicompat_model; - res->oaicompat_cmpl_id = slot.params.oaicompat_cmpl_id; + res->verbose = slot.params.verbose; + res->stream = slot.params.stream; + res->oaicompat = slot.params.oaicompat; + res->oaicompat_model = slot.params.oaicompat_model; + res->oaicompat_cmpl_id = slot.params.oaicompat_cmpl_id; res->oaicompat_chat_format = slot.params.oaicompat_chat_format; // populate res.probs_output if (slot.params.sampling.n_probs > 0) { @@ -2358,12 +2301,10 @@ struct server_context { size_t safe_offset = std::min(slot.generated_token_probs.size(), stop_word_toks.size()); res->probs_output = std::vector( - slot.generated_token_probs.begin(), - slot.generated_token_probs.end() - safe_offset); + slot.generated_token_probs.begin(), slot.generated_token_probs.end() - safe_offset); } else { - res->probs_output = std::vector( - slot.generated_token_probs.begin(), - slot.generated_token_probs.end()); + res->probs_output = std::vector(slot.generated_token_probs.begin(), + slot.generated_token_probs.end()); } } @@ -2372,11 +2313,11 @@ struct server_context { queue_results.send(std::move(res)); } - void send_embedding(const server_slot & slot, const llama_batch & batch) { + void send_embedding(const server_slot &slot, const llama_batch &batch) { auto res = std::make_unique(); - res->id = slot.id_task; - res->index = slot.index; - res->n_tokens = slot.n_prompt_tokens; + res->id = slot.id_task; + res->index = slot.index; + res->n_tokens = slot.n_prompt_tokens; res->oaicompat = slot.params.oaicompat; const int n_embd = llama_model_n_embd(model); @@ -2388,13 +2329,14 @@ struct server_context { continue; } - const float * embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); + const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); if (embd == NULL) { embd = llama_get_embeddings_ith(ctx, i); } if (embd == NULL) { - SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], batch.seq_id[i][0]); + SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], + batch.seq_id[i][0]); res->embedding.push_back(std::vector(n_embd, 0.0f)); continue; @@ -2406,7 +2348,7 @@ struct server_context { common_embd_normalize(embd, embd_res.data(), n_embd, 2); res->embedding.push_back(embd_res); } else { - res->embedding.push_back({ embd, embd + n_embd }); + res->embedding.push_back({embd, embd + n_embd}); } } @@ -2415,9 +2357,9 @@ struct server_context { queue_results.send(std::move(res)); } - void send_rerank(const server_slot & slot, const llama_batch & batch) { + void send_rerank(const server_slot &slot, const llama_batch &batch) { auto res = std::make_unique(); - res->id = slot.id_task; + res->id = slot.id_task; res->index = slot.index; res->n_tokens = slot.n_prompt_tokens; @@ -2426,13 +2368,14 @@ struct server_context { continue; } - const float * embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); + const float *embd = llama_get_embeddings_seq(ctx, batch.seq_id[i][0]); if (embd == NULL) { embd = llama_get_embeddings_ith(ctx, i); } if (embd == NULL) { - SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], batch.seq_id[i][0]); + SLT_ERR(slot, "failed to get embeddings, token = %d, seq_id = %d\n", batch.token[i], + batch.seq_id[i][0]); res->score = -1e6; continue; @@ -2450,10 +2393,10 @@ struct server_context { // Functions to create new task(s) and receive result(s) // - void cancel_tasks(const std::unordered_set & id_tasks) { + void cancel_tasks(const std::unordered_set &id_tasks) { std::vector cancel_tasks; cancel_tasks.reserve(id_tasks.size()); - for (const auto & id_task : id_tasks) { + for (const auto &id_task : id_tasks) { SRV_WRN("cancel task, id_task = %d\n", id_task); server_task task(SERVER_TASK_TYPE_CANCEL); @@ -2466,11 +2409,10 @@ struct server_context { } // receive the results from task(s) - void receive_multi_results( - const std::unordered_set & id_tasks, - const std::function&)> & result_handler, - const std::function & error_handler, - const std::function & is_connection_closed) { + void receive_multi_results(const std::unordered_set &id_tasks, + const std::function &)> &result_handler, + const std::function &error_handler, + const std::function &is_connection_closed) { std::vector results(id_tasks.size()); for (int i = 0; i < (int)id_tasks.size(); i++) { server_task_result_ptr result = queue_results.recv_with_timeout(id_tasks, HTTP_POLLING_SECONDS); @@ -2491,11 +2433,9 @@ struct server_context { return; } - GGML_ASSERT( - dynamic_cast(result.get()) != nullptr - || dynamic_cast(result.get()) != nullptr - || dynamic_cast(result.get()) != nullptr - ); + GGML_ASSERT(dynamic_cast(result.get()) != nullptr || + dynamic_cast(result.get()) != nullptr || + dynamic_cast(result.get()) != nullptr); const size_t idx = result->get_index(); GGML_ASSERT(idx < results.size() && "index out of range"); results[idx] = std::move(result); @@ -2504,11 +2444,10 @@ struct server_context { } // receive the results from task(s), in stream mode - void receive_cmpl_results_stream( - const std::unordered_set & id_tasks, - const std::function & result_handler, - const std::function & error_handler, - const std::function & is_connection_closed) { + void receive_cmpl_results_stream(const std::unordered_set &id_tasks, + const std::function &result_handler, + const std::function &error_handler, + const std::function &is_connection_closed) { size_t n_finished = 0; while (true) { server_task_result_ptr result = queue_results.recv_with_timeout(id_tasks, HTTP_POLLING_SECONDS); @@ -2528,10 +2467,8 @@ struct server_context { return; } - GGML_ASSERT( - dynamic_cast(result.get()) != nullptr - || dynamic_cast(result.get()) != nullptr - ); + GGML_ASSERT(dynamic_cast(result.get()) != nullptr || + dynamic_cast(result.get()) != nullptr); if (!result_handler(result)) { cancel_tasks(id_tasks); break; @@ -2551,208 +2488,203 @@ struct server_context { void process_single_task(server_task task) { switch (task.type) { - case SERVER_TASK_TYPE_COMPLETION: - case SERVER_TASK_TYPE_INFILL: - case SERVER_TASK_TYPE_EMBEDDING: - case SERVER_TASK_TYPE_RERANK: - { - const int id_slot = task.id_selected_slot; + case SERVER_TASK_TYPE_COMPLETION: + case SERVER_TASK_TYPE_INFILL: + case SERVER_TASK_TYPE_EMBEDDING: + case SERVER_TASK_TYPE_RERANK: { + const int id_slot = task.id_selected_slot; + + server_slot *slot = id_slot != -1 ? get_slot_by_id(id_slot) : get_available_slot(task); + + if (slot == nullptr) { + // if no slot is available, we defer this task for processing later + SRV_DBG("no slot is available, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - server_slot * slot = id_slot != -1 ? get_slot_by_id(id_slot) : get_available_slot(task); + if (!launch_slot_with_task(*slot, task)) { + SRV_ERR("failed to launch slot with task, id_task = %d\n", task.id); + break; + } + } break; + case SERVER_TASK_TYPE_CANCEL: { + // release slot linked with the task id + for (auto &slot : slots) { + if (slot.id_task == task.id_target) { + slot.release(); + break; + } + } + } break; + case SERVER_TASK_TYPE_NEXT_RESPONSE: { + // do nothing + } break; + case SERVER_TASK_TYPE_METRICS: { + json slots_data = json::array(); - if (slot == nullptr) { - // if no slot is available, we defer this task for processing later - SRV_DBG("no slot is available, defer task, id_task = %d\n", task.id); - queue_tasks.defer(task); - break; - } - if (slot->is_processing()) { - // if requested slot is unavailable, we defer this task for processing later - SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); - queue_tasks.defer(task); - break; - } + int n_idle_slots = 0; + int n_processing_slots = 0; - if (!launch_slot_with_task(*slot, task)) { - SRV_ERR("failed to launch slot with task, id_task = %d\n", task.id); - break; - } - } break; - case SERVER_TASK_TYPE_CANCEL: - { - // release slot linked with the task id - for (auto & slot : slots) { - if (slot.id_task == task.id_target) { - slot.release(); - break; - } - } - } break; - case SERVER_TASK_TYPE_NEXT_RESPONSE: - { - // do nothing - } break; - case SERVER_TASK_TYPE_METRICS: - { - json slots_data = json::array(); + for (server_slot &slot : slots) { + json slot_data = slot.to_json(); - int n_idle_slots = 0; - int n_processing_slots = 0; + if (slot.is_processing()) { + n_processing_slots++; + } else { + n_idle_slots++; + } - for (server_slot & slot : slots) { - json slot_data = slot.to_json(); + slots_data.push_back(slot_data); + } + SRV_DBG("n_idle_slots = %d, n_processing_slots = %d\n", n_idle_slots, n_processing_slots); - if (slot.is_processing()) { - n_processing_slots++; - } else { - n_idle_slots++; - } + auto res = std::make_unique(); + res->id = task.id; + res->slots_data = std::move(slots_data); + res->n_idle_slots = n_idle_slots; + res->n_processing_slots = n_processing_slots; + res->n_tasks_deferred = queue_tasks.queue_tasks_deferred.size(); + res->t_start = metrics.t_start; - slots_data.push_back(slot_data); - } - SRV_DBG("n_idle_slots = %d, n_processing_slots = %d\n", n_idle_slots, n_processing_slots); - - auto res = std::make_unique(); - res->id = task.id; - res->slots_data = std::move(slots_data); - res->n_idle_slots = n_idle_slots; - res->n_processing_slots = n_processing_slots; - res->n_tasks_deferred = queue_tasks.queue_tasks_deferred.size(); - res->t_start = metrics.t_start; - - res->kv_cache_tokens_count = llama_get_kv_cache_token_count(ctx); - res->kv_cache_used_cells = llama_get_kv_cache_used_cells(ctx); - - res->n_prompt_tokens_processed_total = metrics.n_prompt_tokens_processed_total; - res->t_prompt_processing_total = metrics.t_prompt_processing_total; - res->n_tokens_predicted_total = metrics.n_tokens_predicted_total; - res->t_tokens_generation_total = metrics.t_tokens_generation_total; - - res->n_prompt_tokens_processed = metrics.n_prompt_tokens_processed; - res->t_prompt_processing = metrics.t_prompt_processing; - res->n_tokens_predicted = metrics.n_tokens_predicted; - res->t_tokens_generation = metrics.t_tokens_generation; - - res->n_decode_total = metrics.n_decode_total; - res->n_busy_slots_total = metrics.n_busy_slots_total; - - if (task.metrics_reset_bucket) { - metrics.reset_bucket(); - } - queue_results.send(std::move(res)); - } break; - case SERVER_TASK_TYPE_SLOT_SAVE: - { - int id_slot = task.slot_action.slot_id; - server_slot * slot = get_slot_by_id(id_slot); - if (slot == nullptr) { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (slot->is_processing()) { - // if requested slot is unavailable, we defer this task for processing later - SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); - queue_tasks.defer(task); - break; - } + res->kv_cache_tokens_count = llama_get_kv_cache_token_count(ctx); + res->kv_cache_used_cells = llama_get_kv_cache_used_cells(ctx); - const size_t token_count = slot->cache_tokens.size(); - const int64_t t_start = ggml_time_us(); + res->n_prompt_tokens_processed_total = metrics.n_prompt_tokens_processed_total; + res->t_prompt_processing_total = metrics.t_prompt_processing_total; + res->n_tokens_predicted_total = metrics.n_tokens_predicted_total; + res->t_tokens_generation_total = metrics.t_tokens_generation_total; - std::string filename = task.slot_action.filename; - std::string filepath = task.slot_action.filepath; + res->n_prompt_tokens_processed = metrics.n_prompt_tokens_processed; + res->t_prompt_processing = metrics.t_prompt_processing; + res->n_tokens_predicted = metrics.n_tokens_predicted; + res->t_tokens_generation = metrics.t_tokens_generation; - const size_t nwrite = llama_state_seq_save_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), token_count); + res->n_decode_total = metrics.n_decode_total; + res->n_busy_slots_total = metrics.n_busy_slots_total; - const int64_t t_end = ggml_time_us(); - const double t_save_ms = (t_end - t_start) / 1000.0; + if (task.metrics_reset_bucket) { + metrics.reset_bucket(); + } + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_SAVE: { + int id_slot = task.slot_action.slot_id; + server_slot *slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - auto res = std::make_unique(); - res->id = task.id; - res->id_slot = id_slot; - res->filename = filename; - res->is_save = true; - res->n_tokens = token_count; - res->n_bytes = nwrite; - res->t_ms = t_save_ms; - queue_results.send(std::move(res)); - } break; - case SERVER_TASK_TYPE_SLOT_RESTORE: - { - int id_slot = task.slot_action.slot_id; - server_slot * slot = get_slot_by_id(id_slot); - if (slot == nullptr) { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (slot->is_processing()) { - // if requested slot is unavailable, we defer this task for processing later - SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); - queue_tasks.defer(task); - break; - } + const size_t token_count = slot->cache_tokens.size(); + const int64_t t_start = ggml_time_us(); + + std::string filename = task.slot_action.filename; + std::string filepath = task.slot_action.filepath; + + const size_t nwrite = + llama_state_seq_save_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), token_count); + + const int64_t t_end = ggml_time_us(); + const double t_save_ms = (t_end - t_start) / 1000.0; + + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->filename = filename; + res->is_save = true; + res->n_tokens = token_count; + res->n_bytes = nwrite; + res->t_ms = t_save_ms; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_RESTORE: { + int id_slot = task.slot_action.slot_id; + server_slot *slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - const int64_t t_start = ggml_time_us(); + const int64_t t_start = ggml_time_us(); - std::string filename = task.slot_action.filename; - std::string filepath = task.slot_action.filepath; + std::string filename = task.slot_action.filename; + std::string filepath = task.slot_action.filepath; - slot->cache_tokens.resize(slot->n_ctx); - size_t token_count = 0; - size_t nread = llama_state_seq_load_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), slot->cache_tokens.size(), &token_count); - if (nread == 0) { - slot->cache_tokens.resize(0); - send_error(task, "Unable to restore slot, no available space in KV cache or invalid slot save file", ERROR_TYPE_INVALID_REQUEST); - break; - } - slot->cache_tokens.resize(token_count); - - const int64_t t_end = ggml_time_us(); - const double t_restore_ms = (t_end - t_start) / 1000.0; - - auto res = std::make_unique(); - res->id = task.id; - res->id_slot = id_slot; - res->filename = filename; - res->is_save = false; - res->n_tokens = token_count; - res->n_bytes = nread; - res->t_ms = t_restore_ms; - queue_results.send(std::move(res)); - } break; - case SERVER_TASK_TYPE_SLOT_ERASE: - { - int id_slot = task.slot_action.slot_id; - server_slot * slot = get_slot_by_id(id_slot); - if (slot == nullptr) { - send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); - break; - } - if (slot->is_processing()) { - // if requested slot is unavailable, we defer this task for processing later - SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); - queue_tasks.defer(task); - break; - } + slot->cache_tokens.resize(slot->n_ctx); + size_t token_count = 0; + size_t nread = llama_state_seq_load_file(ctx, filepath.c_str(), slot->id, slot->cache_tokens.data(), + slot->cache_tokens.size(), &token_count); + if (nread == 0) { + slot->cache_tokens.resize(0); + send_error(task, "Unable to restore slot, no available space in KV cache or invalid slot save file", + ERROR_TYPE_INVALID_REQUEST); + break; + } + slot->cache_tokens.resize(token_count); + + const int64_t t_end = ggml_time_us(); + const double t_restore_ms = (t_end - t_start) / 1000.0; + + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->filename = filename; + res->is_save = false; + res->n_tokens = token_count; + res->n_bytes = nread; + res->t_ms = t_restore_ms; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SLOT_ERASE: { + int id_slot = task.slot_action.slot_id; + server_slot *slot = get_slot_by_id(id_slot); + if (slot == nullptr) { + send_error(task, "Invalid slot ID", ERROR_TYPE_INVALID_REQUEST); + break; + } + if (slot->is_processing()) { + // if requested slot is unavailable, we defer this task for processing later + SRV_DBG("requested slot is unavailable, defer task, id_task = %d\n", task.id); + queue_tasks.defer(task); + break; + } - // Erase token cache - const size_t n_erased = slot->cache_tokens.size(); - llama_kv_cache_seq_rm(ctx, slot->id, -1, -1); - slot->cache_tokens.clear(); - - auto res = std::make_unique(); - res->id = task.id; - res->id_slot = id_slot; - res->n_erased = n_erased; - queue_results.send(std::move(res)); - } break; - case SERVER_TASK_TYPE_SET_LORA: - { - params_base.lora_adapters = std::move(task.set_lora); - auto res = std::make_unique(); - res->id = task.id; - queue_results.send(std::move(res)); - } break; + // Erase token cache + const size_t n_erased = slot->cache_tokens.size(); + llama_kv_cache_seq_rm(ctx, slot->id, -1, -1); + slot->cache_tokens.clear(); + + auto res = std::make_unique(); + res->id = task.id; + res->id_slot = id_slot; + res->n_erased = n_erased; + queue_results.send(std::move(res)); + } break; + case SERVER_TASK_TYPE_SET_LORA: { + params_base.lora_adapters = std::move(task.set_lora); + auto res = std::make_unique(); + res->id = task.id; + queue_results.send(std::move(res)); + } break; } } @@ -2761,7 +2693,7 @@ struct server_context { { bool all_idle = true; - for (auto & slot : slots) { + for (auto &slot : slots) { if (slot.is_processing()) { all_idle = false; break; @@ -2788,7 +2720,7 @@ struct server_context { // apply context-shift if needed // TODO: simplify and improve - for (server_slot & slot : slots) { + for (server_slot &slot : slots) { if (slot.is_processing() && slot.n_past + 1 >= slot.n_ctx) { if (!params_base.ctx_shift) { // this check is redundant (for good) @@ -2799,14 +2731,15 @@ struct server_context { } // Shift context - const int n_keep = slot.params.n_keep + add_bos_token; - const int n_left = slot.n_past - n_keep; + const int n_keep = slot.params.n_keep + add_bos_token; + const int n_left = slot.n_past - n_keep; const int n_discard = slot.params.n_discard ? slot.params.n_discard : (n_left / 2); - SLT_WRN(slot, "slot context shift, n_keep = %d, n_left = %d, n_discard = %d\n", n_keep, n_left, n_discard); + SLT_WRN(slot, "slot context shift, n_keep = %d, n_left = %d, n_discard = %d\n", n_keep, n_left, + n_discard); - llama_kv_cache_seq_rm (ctx, slot.id, n_keep , n_keep + n_discard); - llama_kv_cache_seq_add(ctx, slot.id, n_keep + n_discard, slot.n_past, -n_discard); + llama_kv_cache_seq_rm(ctx, slot.id, n_keep, n_keep + n_discard); + llama_kv_cache_seq_add(ctx, slot.id, n_keep + n_discard, slot.n_past, -n_discard); if (slot.params.cache_prompt) { for (size_t i = n_keep + n_discard; i < slot.cache_tokens.size(); i++) { @@ -2826,14 +2759,15 @@ struct server_context { common_batch_clear(batch); // track if given slot can be batched with slots already in the batch - server_slot * slot_batched = nullptr; + server_slot *slot_batched = nullptr; - auto accept_special_token = [&](server_slot & slot, llama_token token) { - return params_base.special || slot.params.sampling.preserved_tokens.find(token) != slot.params.sampling.preserved_tokens.end(); + auto accept_special_token = [&](server_slot &slot, llama_token token) { + return params_base.special || + slot.params.sampling.preserved_tokens.find(token) != slot.params.sampling.preserved_tokens.end(); }; // frist, add sampled tokens from any ongoing sequences - for (auto & slot : slots) { + for (auto &slot : slots) { if (slot.state != SLOT_STATE_GENERATING) { continue; } @@ -2847,7 +2781,7 @@ struct server_context { slot.i_batch = batch.n_tokens; - common_batch_add(batch, slot.sampled, slot.n_past, { slot.id }, true); + common_batch_add(batch, slot.sampled, slot.n_past, {slot.id}, true); slot.n_past += 1; @@ -2856,16 +2790,16 @@ struct server_context { } SLT_DBG(slot, "slot decode token, n_ctx = %d, n_past = %d, n_cache_tokens = %d, truncated = %d\n", - slot.n_ctx, slot.n_past, (int) slot.cache_tokens.size(), slot.truncated); + slot.n_ctx, slot.n_past, (int)slot.cache_tokens.size(), slot.truncated); } // process in chunks of params.n_batch - int32_t n_batch = llama_n_batch(ctx); + int32_t n_batch = llama_n_batch(ctx); int32_t n_ubatch = llama_n_ubatch(ctx); // next, batch any pending prompts without exceeding n_batch if (params_base.cont_batching || batch.n_tokens == 0) { - for (auto & slot : slots) { + for (auto &slot : slots) { // check if we can batch this slot with the previous one if (slot.is_processing()) { if (!slot_batched) { @@ -2877,7 +2811,7 @@ struct server_context { // this slot still has a prompt to be processed if (slot.state == SLOT_STATE_PROCESSING_PROMPT || slot.state == SLOT_STATE_STARTED) { - auto & prompt_tokens = slot.prompt_tokens; + auto &prompt_tokens = slot.prompt_tokens; // TODO: maybe move branch to outside of this loop in the future if (slot.state == SLOT_STATE_STARTED) { @@ -2888,18 +2822,21 @@ struct server_context { slot.n_prompt_tokens = prompt_tokens.size(); slot.state = SLOT_STATE_PROCESSING_PROMPT; - SLT_INF(slot, "new prompt, n_ctx_slot = %d, n_keep = %d, n_prompt_tokens = %d\n", slot.n_ctx, slot.params.n_keep, slot.n_prompt_tokens); + SLT_INF(slot, "new prompt, n_ctx_slot = %d, n_keep = %d, n_prompt_tokens = %d\n", slot.n_ctx, + slot.params.n_keep, slot.n_prompt_tokens); // print prompt tokens (for debugging) if (1) { // first 16 tokens (avoid flooding logs) for (int i = 0; i < std::min(16, prompt_tokens.size()); i++) { - SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); + SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], + common_token_to_piece(ctx, prompt_tokens[i]).c_str()); } } else { // all - for (int i = 0; i < (int) prompt_tokens.size(); i++) { - SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); + for (int i = 0; i < (int)prompt_tokens.size(); i++) { + SLT_DBG(slot, "prompt token %3d: %6d '%s'\n", i, prompt_tokens[i], + common_token_to_piece(ctx, prompt_tokens[i]).c_str()); } } @@ -2916,13 +2853,15 @@ struct server_context { if (slot.is_non_causal()) { if (slot.n_prompt_tokens > n_ubatch) { slot.release(); - send_error(slot, "input is too large to process. increase the physical batch size", ERROR_TYPE_SERVER); + send_error(slot, "input is too large to process. increase the physical batch size", + ERROR_TYPE_SERVER); continue; } if (slot.n_prompt_tokens > slot.n_ctx) { slot.release(); - send_error(slot, "input is larger than the max context size. skipping", ERROR_TYPE_SERVER); + send_error(slot, "input is larger than the max context size. skipping", + ERROR_TYPE_SERVER); continue; } } else { @@ -2932,7 +2871,10 @@ struct server_context { // context shift should be applied only during the generation phase if (slot.n_prompt_tokens >= slot.n_ctx) { slot.release(); - send_error(slot, "the request exceeds the available context size. try increasing the context size or enable context shift", ERROR_TYPE_INVALID_REQUEST); + send_error(slot, + "the request exceeds the available context size. try increasing the " + "context size or enable context shift", + ERROR_TYPE_INVALID_REQUEST); continue; } } @@ -2946,23 +2888,25 @@ struct server_context { const int n_left = slot.n_ctx - slot.params.n_keep; const int n_block_size = n_left / 2; - const int erased_blocks = (slot.n_prompt_tokens - slot.params.n_keep - n_block_size) / n_block_size; + const int erased_blocks = + (slot.n_prompt_tokens - slot.params.n_keep - n_block_size) / n_block_size; - llama_tokens new_tokens( - prompt_tokens.begin(), - prompt_tokens.begin() + slot.params.n_keep); + llama_tokens new_tokens(prompt_tokens.begin(), + prompt_tokens.begin() + slot.params.n_keep); - new_tokens.insert( - new_tokens.end(), - prompt_tokens.begin() + slot.params.n_keep + erased_blocks * n_block_size, - prompt_tokens.end()); + new_tokens.insert(new_tokens.end(), + prompt_tokens.begin() + slot.params.n_keep + + erased_blocks * n_block_size, + prompt_tokens.end()); prompt_tokens = std::move(new_tokens); slot.truncated = true; slot.n_prompt_tokens = prompt_tokens.size(); - SLT_WRN(slot, "input truncated, n_ctx = %d, n_keep = %d, n_left = %d, n_prompt_tokens = %d\n", slot.n_ctx, slot.params.n_keep, n_left, slot.n_prompt_tokens); + SLT_WRN(slot, + "input truncated, n_ctx = %d, n_keep = %d, n_left = %d, n_prompt_tokens = %d\n", + slot.n_ctx, slot.params.n_keep, n_left, slot.n_prompt_tokens); GGML_ASSERT(slot.n_prompt_tokens < slot.n_ctx); } @@ -2976,28 +2920,32 @@ struct server_context { size_t head_c = slot.n_past; // cache size_t head_p = slot.n_past; // current prompt - SLT_DBG(slot, "trying to reuse chunks with size > %d, slot.n_past = %d\n", params_base.n_cache_reuse, slot.n_past); + SLT_DBG(slot, "trying to reuse chunks with size > %d, slot.n_past = %d\n", + params_base.n_cache_reuse, slot.n_past); - while (head_c < slot.cache_tokens.size() && - head_p < prompt_tokens.size()) { + while (head_c < slot.cache_tokens.size() && head_p < prompt_tokens.size()) { size_t n_match = 0; while (head_c + n_match < slot.cache_tokens.size() && - head_p + n_match < prompt_tokens.size() && + head_p + n_match < prompt_tokens.size() && slot.cache_tokens[head_c + n_match] == prompt_tokens[head_p + n_match]) { n_match++; } - if (n_match >= (size_t) params_base.n_cache_reuse) { - SLT_INF(slot, "reusing chunk with size %zu, shifting KV cache [%zu, %zu) -> [%zu, %zu)\n", n_match, head_c, head_c + n_match, head_p, head_p + n_match); - //for (size_t i = head_p; i < head_p + n_match; i++) { - // SLT_DBG(slot, "cache token %3zu: %6d '%s'\n", i, prompt_tokens[i], common_token_to_piece(ctx, prompt_tokens[i]).c_str()); - //} + if (n_match >= (size_t)params_base.n_cache_reuse) { + SLT_INF(slot, + "reusing chunk with size %zu, shifting KV cache [%zu, %zu) -> " + "[%zu, %zu)\n", + n_match, head_c, head_c + n_match, head_p, head_p + n_match); + // for (size_t i = head_p; i < head_p + n_match; i++) { + // SLT_DBG(slot, "cache token %3zu: %6d '%s'\n", i, prompt_tokens[i], + // common_token_to_piece(ctx, prompt_tokens[i]).c_str()); + // } - const int64_t kv_shift = (int64_t) head_p - (int64_t) head_c; + const int64_t kv_shift = (int64_t)head_p - (int64_t)head_c; - llama_kv_cache_seq_rm (ctx, slot.id, head_p, head_c); + llama_kv_cache_seq_rm(ctx, slot.id, head_p, head_c); llama_kv_cache_seq_add(ctx, slot.id, head_c, head_c + n_match, kv_shift); for (size_t i = 0; i < n_match; i++) { @@ -3019,7 +2967,10 @@ struct server_context { if (slot.n_past == slot.n_prompt_tokens && slot.n_past > 0) { // we have to evaluate at least 1 token to generate logits. - SLT_WRN(slot, "need to evaluate at least 1 token to generate logits, n_past = %d, n_prompt_tokens = %d\n", slot.n_past, slot.n_prompt_tokens); + SLT_WRN(slot, + "need to evaluate at least 1 token to generate logits, n_past = %d, " + "n_prompt_tokens = %d\n", + slot.n_past, slot.n_prompt_tokens); slot.n_past--; } @@ -3052,9 +3003,10 @@ struct server_context { // add prompt tokens for processing in the current batch while (slot.n_past < slot.n_prompt_tokens && batch.n_tokens < n_batch) { // without pooling, we want to output the embeddings for all the tokens in the batch - const bool need_embd = slot.task_type == SERVER_TASK_TYPE_EMBEDDING && llama_pooling_type(slot.ctx) == LLAMA_POOLING_TYPE_NONE; + const bool need_embd = slot.task_type == SERVER_TASK_TYPE_EMBEDDING && + llama_pooling_type(slot.ctx) == LLAMA_POOLING_TYPE_NONE; - common_batch_add(batch, prompt_tokens[slot.n_past], slot.n_past, { slot.id }, need_embd); + common_batch_add(batch, prompt_tokens[slot.n_past], slot.n_past, {slot.id}, need_embd); if (slot.params.cache_prompt) { slot.cache_tokens.push_back(prompt_tokens[slot.n_past]); @@ -3064,7 +3016,8 @@ struct server_context { slot.n_past++; } - SLT_INF(slot, "prompt processing progress, n_past = %d, n_tokens = %d, progress = %f\n", slot.n_past, batch.n_tokens, (float) slot.n_prompt_tokens_processed / slot.n_prompt_tokens); + SLT_INF(slot, "prompt processing progress, n_past = %d, n_tokens = %d, progress = %f\n", + slot.n_past, batch.n_tokens, (float)slot.n_prompt_tokens_processed / slot.n_prompt_tokens); // entire prompt has been processed if (slot.n_past == slot.n_prompt_tokens) { @@ -3083,7 +3036,7 @@ struct server_context { batch.logits[batch.n_tokens - 1] = true; slot.n_decoded = 0; - slot.i_batch = batch.n_tokens - 1; + slot.i_batch = batch.n_tokens - 1; SLT_INF(slot, "prompt done, n_past = %d, n_tokens = %d\n", slot.n_past, batch.n_tokens); } @@ -3114,13 +3067,8 @@ struct server_context { const int32_t n_tokens = std::min(n_batch, batch.n_tokens - i); llama_batch batch_view = { - n_tokens, - batch.token + i, - nullptr, - batch.pos + i, - batch.n_seq_id + i, - batch.seq_id + i, - batch.logits + i, + n_tokens, batch.token + i, nullptr, batch.pos + i, + batch.n_seq_id + i, batch.seq_id + i, batch.logits + i, }; const int ret = llama_decode(ctx, batch_view); @@ -3129,8 +3077,10 @@ struct server_context { if (ret != 0) { if (n_batch == 1 || ret < 0) { // if you get here, it means the KV cache is full - try increasing it via the context size - SRV_ERR("failed to decode the batch: KV cache is full - try increasing it via the context size, i = %d, n_batch = %d, ret = %d\n", i, n_batch, ret); - for (auto & slot : slots) { + SRV_ERR("failed to decode the batch: KV cache is full - try increasing it via the context size, i " + "= %d, n_batch = %d, ret = %d\n", + i, n_batch, ret); + for (auto &slot : slots) { slot.release(); send_error(slot, "Input prompt is too big compared to KV size. Please try increasing KV size."); } @@ -3141,13 +3091,15 @@ struct server_context { n_batch /= 2; i -= n_batch; - SRV_WRN("failed to find free space in the KV cache, retrying with smaller batch size - try increasing it via the context size or enable defragmentation, i = %d, n_batch = %d, ret = %d\n", i, n_batch, ret); + SRV_WRN("failed to find free space in the KV cache, retrying with smaller batch size - try increasing " + "it via the context size or enable defragmentation, i = %d, n_batch = %d, ret = %d\n", + i, n_batch, ret); continue; // continue loop of n_batch } - for (auto & slot : slots) { - if (slot.i_batch < (int) i || slot.i_batch >= (int) (i + n_tokens)) { + for (auto &slot : slots) { + if (slot.i_batch < (int)i || slot.i_batch >= (int)(i + n_tokens)) { continue; // continue loop of slots } @@ -3194,9 +3146,9 @@ struct server_context { slot.t_token_generation = (t_current - slot.t_start_generation) / 1e3; completion_token_output result; - result.tok = id; + result.tok = id; result.text_to_send = common_token_to_piece(ctx, result.tok, accept_special_token(slot, result.tok)); - result.prob = 1.0f; // TODO: set it here instead of doing inside populate_token_probs + result.prob = 1.0f; // TODO: set it here instead of doing inside populate_token_probs if (slot.params.sampling.n_probs > 0) { populate_token_probs(slot, result, slot.params.post_sampling_probs, params_base.special, tok_idx); @@ -3213,7 +3165,7 @@ struct server_context { } // do speculative decoding - for (auto & slot : slots) { + for (auto &slot : slots) { if (!slot.is_processing() || !slot.can_speculate()) { continue; } @@ -3236,7 +3188,8 @@ struct server_context { SLT_DBG(slot, "max possible draft: %d\n", n_draft_max); if (n_draft_max < slot.params.speculative.n_min) { - SLT_DBG(slot, "the max possible draft is too small: %d < %d - skipping speculative decoding\n", n_draft_max, slot.params.speculative.n_min); + SLT_DBG(slot, "the max possible draft is too small: %d < %d - skipping speculative decoding\n", + n_draft_max, slot.params.speculative.n_min); continue; } @@ -3244,25 +3197,25 @@ struct server_context { llama_token id = slot.sampled; struct common_speculative_params params_spec; - params_spec.n_draft = n_draft_max; - params_spec.n_reuse = llama_n_ctx(slot.ctx_dft) - slot.params.speculative.n_max; - params_spec.p_min = slot.params.speculative.p_min; + params_spec.n_draft = n_draft_max; + params_spec.n_reuse = llama_n_ctx(slot.ctx_dft) - slot.params.speculative.n_max; + params_spec.p_min = slot.params.speculative.p_min; llama_tokens draft = common_speculative_gen_draft(slot.spec, params_spec, slot.cache_tokens, id); // ignore small drafts - if (slot.params.speculative.n_min > (int) draft.size()) { - SLT_DBG(slot, "ignoring small draft: %d < %d\n", (int) draft.size(), slot.params.speculative.n_min); + if (slot.params.speculative.n_min > (int)draft.size()) { + SLT_DBG(slot, "ignoring small draft: %d < %d\n", (int)draft.size(), slot.params.speculative.n_min); continue; } // construct the speculation batch common_batch_clear(slot.batch_spec); - common_batch_add (slot.batch_spec, id, slot.n_past, { slot.id }, true); + common_batch_add(slot.batch_spec, id, slot.n_past, {slot.id}, true); for (size_t i = 0; i < draft.size(); ++i) { - common_batch_add(slot.batch_spec, draft[i], slot.n_past + 1 + i, { slot.id }, true); + common_batch_add(slot.batch_spec, draft[i], slot.n_past + 1 + i, {slot.id}, true); } SLT_DBG(slot, "decoding speculative batch, size = %d\n", slot.batch_spec.n_tokens); @@ -3272,7 +3225,7 @@ struct server_context { // the accepted tokens from the speculation const auto ids = common_sampler_sample_and_accept_n(slot.smpl, ctx, draft); - slot.n_past += ids.size(); + slot.n_past += ids.size(); slot.n_decoded += ids.size(); slot.cache_tokens.push_back(id); @@ -3283,9 +3236,10 @@ struct server_context { for (size_t i = 0; i < ids.size(); ++i) { completion_token_output result; - result.tok = ids[i]; - result.text_to_send = common_token_to_piece(ctx, result.tok, accept_special_token(slot, result.tok)); - result.prob = 1.0f; // set later + result.tok = ids[i]; + result.text_to_send = + common_token_to_piece(ctx, result.tok, accept_special_token(slot, result.tok)); + result.prob = 1.0f; // set later // TODO: set result.probs @@ -3299,7 +3253,8 @@ struct server_context { } } - SLT_DBG(slot, "accepted %d/%d draft tokens, new n_past = %d\n", (int) ids.size() - 1, (int) draft.size(), slot.n_past); + SLT_DBG(slot, "accepted %d/%d draft tokens, new n_past = %d\n", (int)ids.size() - 1, (int)draft.size(), + slot.n_past); } } @@ -3307,26 +3262,16 @@ struct server_context { } json model_meta() const { - return json { - {"vocab_type", llama_vocab_type (vocab)}, - {"n_vocab", llama_vocab_n_tokens (vocab)}, - {"n_ctx_train", llama_model_n_ctx_train(model)}, - {"n_embd", llama_model_n_embd (model)}, - {"n_params", llama_model_n_params (model)}, - {"size", llama_model_size (model)}, + return json{ + {"vocab_type", llama_vocab_type(vocab)}, {"n_vocab", llama_vocab_n_tokens(vocab)}, + {"n_ctx_train", llama_model_n_ctx_train(model)}, {"n_embd", llama_model_n_embd(model)}, + {"n_params", llama_model_n_params(model)}, {"size", llama_model_size(model)}, }; } }; - - - -static void common_params_handle_model_default( - std::string & model, - const std::string & model_url, - std::string & hf_repo, - std::string & hf_file, - const std::string & hf_token) { +static void common_params_handle_model_default(std::string &model, const std::string &model_url, std::string &hf_repo, + std::string &hf_file, const std::string &hf_token) { if (!hf_repo.empty()) { // short-hand to avoid specifying --hf-file -> default it to --model if (hf_file.empty()) { @@ -3361,15 +3306,16 @@ static void common_params_handle_model_default( } // parse the given jparams (see de.kherud.llama.args.ModelParameters#toString()) from JSON to the required C++ struct. -static void server_params_parse(json jparams, common_params ¶ms) -{ +static void server_params_parse(json jparams, common_params ¶ms) { common_params default_params; params.sampling.seed = json_value(jparams, "seed", default_params.sampling.seed); params.cpuparams.n_threads = json_value(jparams, "n_threads", default_params.cpuparams.n_threads); - params.speculative.cpuparams.n_threads = json_value(jparams, "n_threads_draft", default_params.speculative.cpuparams.n_threads); + params.speculative.cpuparams.n_threads = + json_value(jparams, "n_threads_draft", default_params.speculative.cpuparams.n_threads); params.cpuparams_batch.n_threads = json_value(jparams, "n_threads_batch", default_params.cpuparams_batch.n_threads); - params.speculative.cpuparams_batch.n_threads = json_value(jparams, "n_threads_batch_draft", default_params.speculative.cpuparams_batch.n_threads ); + params.speculative.cpuparams_batch.n_threads = + json_value(jparams, "n_threads_batch_draft", default_params.speculative.cpuparams_batch.n_threads); params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); @@ -3424,23 +3370,19 @@ static void server_params_parse(json jparams, common_params ¶ms) params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); params.chat_template = json_value(jparams, "chat_template", default_params.chat_template); - if (jparams.contains("n_gpu_layers")) - { - if (llama_supports_gpu_offload()) - { + if (jparams.contains("n_gpu_layers")) { + if (llama_supports_gpu_offload()) { params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); - params.speculative.n_gpu_layers = json_value(jparams, "n_gpu_layers_draft", default_params.speculative.n_gpu_layers); - } - else - { + params.speculative.n_gpu_layers = + json_value(jparams, "n_gpu_layers_draft", default_params.speculative.n_gpu_layers); + } else { SRV_WRN("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support: %s = %d", - "n_gpu_layers", params.n_gpu_layers); + "See main README.md for information on enabling GPU BLAS support: %s = %d", + "n_gpu_layers", params.n_gpu_layers); } } - if (jparams.contains("split_mode")) - { + if (jparams.contains("split_mode")) { params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); // todo: the definition checks here currently don't work due to cmake visibility reasons #ifndef GGML_USE_CUDA @@ -3448,36 +3390,30 @@ static void server_params_parse(json jparams, common_params ¶ms) #endif } - if (jparams.contains("tensor_split")) - { + if (jparams.contains("tensor_split")) { #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) std::vector tensor_split = jparams["tensor_split"].get>(); GGML_ASSERT(tensor_split.size() <= llama_max_devices()); - for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) - { - if (i_device < tensor_split.size()) - { + for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) { + if (i_device < tensor_split.size()) { params.tensor_split[i_device] = tensor_split.at(i_device); - } - else - { + } else { params.tensor_split[i_device] = 0.0f; } } #else - SRV_WRN("%s","llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n"); + SRV_WRN("%s", "llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n"); #endif // GGML_USE_CUDA } - if (jparams.contains("main_gpu")) - { + if (jparams.contains("main_gpu")) { #if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); #else - SRV_WRN("%s","llama.cpp was compiled without CUDA. It is not possible to set a main GPU."); + SRV_WRN("%s", "llama.cpp was compiled without CUDA. It is not possible to set a main GPU."); #endif } - common_params_handle_model_default(params.model, params.model_url, params.hf_repo, params.hf_file, params.hf_token); + common_params_handle_model_default(params.model, params.model_url, params.hf_repo, params.hf_file, params.hf_token); } diff --git a/src/main/cpp/utils.hpp b/src/main/cpp/utils.hpp index e9498014..603424b4 100644 --- a/src/main/cpp/utils.hpp +++ b/src/main/cpp/utils.hpp @@ -1,10 +1,9 @@ #pragma once +#include "base64.hpp" #include "common.h" -#include "log.h" #include "llama.h" -#include "base64.hpp" - +#include "log.h" #ifndef NDEBUG // crash the server in debug mode, otherwise send an http 500 error @@ -12,7 +11,7 @@ #endif // increase max payload length to allow use of larger context size #define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576 -//#include "httplib.h" +// #include "httplib.h" // Change JSON_ASSERT from assert() to GGML_ASSERT: #define JSON_ASSERT GGML_ASSERT @@ -20,20 +19,24 @@ #include "chat.h" +#include #include #include #include #include -#include #define DEFAULT_OAICOMPAT_MODEL "gpt-3.5-turbo" using json = nlohmann::ordered_json; -#define SLT_INF(slot, fmt, ...) LOG_INF("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) -#define SLT_WRN(slot, fmt, ...) LOG_WRN("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) -#define SLT_ERR(slot, fmt, ...) LOG_ERR("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) -#define SLT_DBG(slot, fmt, ...) LOG_DBG("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_INF(slot, fmt, ...) \ + LOG_INF("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_WRN(slot, fmt, ...) \ + LOG_WRN("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_ERR(slot, fmt, ...) \ + LOG_ERR("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) +#define SLT_DBG(slot, fmt, ...) \ + LOG_DBG("slot %12.*s: id %2d | task %d | " fmt, 12, __func__, (slot).id, (slot).id_task, __VA_ARGS__) #define SRV_INF(fmt, ...) LOG_INF("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) #define SRV_WRN(fmt, ...) LOG_WRN("srv %12.*s: " fmt, 12, __func__, __VA_ARGS__) @@ -45,14 +48,14 @@ using json = nlohmann::ordered_json; #define QUE_ERR(fmt, ...) LOG_ERR("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) #define QUE_DBG(fmt, ...) LOG_DBG("que %12.*s: " fmt, 12, __func__, __VA_ARGS__) -template -static T json_value(const json & body, const std::string & key, const T & default_value) { +template static T json_value(const json &body, const std::string &key, const T &default_value) { // Fallback null to default value if (body.contains(key) && !body.at(key).is_null()) { try { return body.at(key); } catch (NLOHMANN_JSON_NAMESPACE::detail::type_error const &) { - LOG_WRN("Wrong type supplied for parameter '%s'. Expected '%s', using default value\n", key.c_str(), json(default_value).type_name()); + LOG_WRN("Wrong type supplied for parameter '%s'. Expected '%s', using default value\n", key.c_str(), + json(default_value).type_name()); return default_value; } } else { @@ -66,9 +69,9 @@ const static std::string build_info("b" + std::to_string(LLAMA_BUILD_NUMBER) + " // tokenizer and input processing utils // -static bool json_is_array_of_numbers(const json & data) { +static bool json_is_array_of_numbers(const json &data) { if (data.is_array()) { - for (const auto & e : data) { + for (const auto &e : data) { if (!e.is_number_integer()) { return false; } @@ -79,11 +82,11 @@ static bool json_is_array_of_numbers(const json & data) { } // is array having BOTH numbers & strings? -static bool json_is_array_of_mixed_numbers_strings(const json & data) { +static bool json_is_array_of_mixed_numbers_strings(const json &data) { bool seen_string = false; bool seen_number = false; if (data.is_array()) { - for (const auto & e : data) { + for (const auto &e : data) { seen_string |= e.is_string(); seen_number |= e.is_number_integer(); if (seen_number && seen_string) { @@ -95,14 +98,14 @@ static bool json_is_array_of_mixed_numbers_strings(const json & data) { } // get value by path(key1 / key2) -static json json_get_nested_values(const std::vector & paths, const json & js) { +static json json_get_nested_values(const std::vector &paths, const json &js) { json result = json::object(); - for (const std::string & path : paths) { + for (const std::string &path : paths) { json current = js; const auto keys = string_split(path, /*separator*/ '/'); bool valid_path = true; - for (const std::string & k : keys) { + for (const std::string &k : keys) { if (valid_path && current.is_object() && current.contains(k)) { current = current[k]; } else { @@ -121,14 +124,15 @@ static json json_get_nested_values(const std::vector & paths, const * - only string, example: "string" * - mixed string and tokens, example: [12, 34, "string", 56, 78] */ -static llama_tokens tokenize_mixed(const llama_vocab * vocab, const json & json_prompt, bool add_special, bool parse_special) { +static llama_tokens tokenize_mixed(const llama_vocab *vocab, const json &json_prompt, bool add_special, + bool parse_special) { // If `add_bos` is true, we only add BOS, when json_prompt is a string, // or the first element of the json_prompt array is a string. llama_tokens prompt_tokens; if (json_prompt.is_array()) { bool first = true; - for (const auto & p : json_prompt) { + for (const auto &p : json_prompt) { if (p.is_string()) { auto s = p.template get(); @@ -169,7 +173,8 @@ static llama_tokens tokenize_mixed(const llama_vocab * vocab, const json & json_ * - "prompt": [[12, 34, 56], [78, 90, 12]] * - "prompt": [[12, 34, "string", 56, 78], [12, 34, 56]] */ -static std::vector tokenize_input_prompts(const llama_vocab * vocab, const json & json_prompt, bool add_special, bool parse_special) { +static std::vector tokenize_input_prompts(const llama_vocab *vocab, const json &json_prompt, + bool add_special, bool parse_special) { std::vector result; if (json_prompt.is_string() || json_is_array_of_mixed_numbers_strings(json_prompt)) { // string or mixed @@ -180,18 +185,20 @@ static std::vector tokenize_input_prompts(const llama_vocab * voca } else if (json_prompt.is_array()) { // array of prompts result.reserve(json_prompt.size()); - for (const auto & p : json_prompt) { + for (const auto &p : json_prompt) { if (p.is_string() || json_is_array_of_mixed_numbers_strings(p)) { result.push_back(tokenize_mixed(vocab, p, add_special, parse_special)); } else if (json_is_array_of_numbers(p)) { // array of tokens result.push_back(p.get()); } else { - throw std::runtime_error("element of \"prompt\" must be a string, an list of tokens, or a list of mixed strings & tokens"); + throw std::runtime_error( + "element of \"prompt\" must be a string, an list of tokens, or a list of mixed strings & tokens"); } } } else { - throw std::runtime_error("\"prompt\" must be a string, an list of tokens, a list of mixed strings & tokens, or a list of prompts"); + throw std::runtime_error( + "\"prompt\" must be a string, an list of tokens, a list of mixed strings & tokens, or a list of prompts"); } if (result.empty()) { throw std::runtime_error("\"prompt\" must not be empty"); @@ -202,9 +209,10 @@ static std::vector tokenize_input_prompts(const llama_vocab * voca // return the last index of character that can form a valid string // if the last character is potentially cut in half, return the index before the cut // if validate_utf8(text) == text.size(), then the whole text is valid utf8 -static size_t validate_utf8(const std::string& text) { +static size_t validate_utf8(const std::string &text) { size_t len = text.size(); - if (len == 0) return 0; + if (len == 0) + return 0; // Check the last few bytes to see if a multi-byte character is cut off for (size_t i = 1; i <= 4 && i <= len; ++i) { @@ -213,15 +221,18 @@ static size_t validate_utf8(const std::string& text) { if ((c & 0xE0) == 0xC0) { // 2-byte character start: 110xxxxx // Needs at least 2 bytes - if (i < 2) return len - i; + if (i < 2) + return len - i; } else if ((c & 0xF0) == 0xE0) { // 3-byte character start: 1110xxxx // Needs at least 3 bytes - if (i < 3) return len - i; + if (i < 3) + return len - i; } else if ((c & 0xF8) == 0xF0) { // 4-byte character start: 11110xxx // Needs at least 4 bytes - if (i < 4) return len - i; + if (i < 4) + return len - i; } } @@ -234,7 +245,7 @@ static size_t validate_utf8(const std::string& text) { // // format rerank task: [BOS]query[EOS][SEP]doc[EOS] -static llama_tokens format_rerank(const struct llama_vocab * vocab, const llama_tokens & query, const llama_tokens & doc) { +static llama_tokens format_rerank(const struct llama_vocab *vocab, const llama_tokens &query, const llama_tokens &doc) { llama_tokens result; result.reserve(doc.size() + query.size() + 4); @@ -249,17 +260,9 @@ static llama_tokens format_rerank(const struct llama_vocab * vocab, const llama_ } // format infill task -static llama_tokens format_infill( - const llama_vocab * vocab, - const json & input_prefix, - const json & input_suffix, - const json & input_extra, - const int n_batch, - const int n_predict, - const int n_ctx, - const bool spm_infill, - const llama_tokens & tokens_prompt - ) { +static llama_tokens format_infill(const llama_vocab *vocab, const json &input_prefix, const json &input_suffix, + const json &input_extra, const int n_batch, const int n_predict, const int n_ctx, + const bool spm_infill, const llama_tokens &tokens_prompt) { // TODO: optimize this block by reducing memory allocations and movement // use FIM repo-level pattern: @@ -287,9 +290,9 @@ static llama_tokens format_infill( extra_tokens.push_back(llama_vocab_fim_rep(vocab)); extra_tokens.insert(extra_tokens.end(), k_fim_repo.begin(), k_fim_repo.end()); } - for (const auto & chunk : input_extra) { + for (const auto &chunk : input_extra) { // { "text": string, "filename": string } - const std::string text = json_value(chunk, "text", std::string()); + const std::string text = json_value(chunk, "text", std::string()); const std::string filename = json_value(chunk, "filename", std::string("tmp")); if (llama_vocab_fim_sep(vocab) != LLAMA_TOKEN_NULL) { @@ -299,7 +302,8 @@ static llama_tokens format_infill( extra_tokens.insert(extra_tokens.end(), k_fim_file.begin(), k_fim_file.end()); } else { // chunk separator in binary form to avoid confusing the AI - static const char k_chunk_prefix_str[] = {0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x20, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x00}; + static const char k_chunk_prefix_str[] = {0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x20, 0x73, 0x6e, 0x69, 0x70, + 0x70, 0x65, 0x74, 0x20, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x00}; static const auto k_chunk_prefix_tokens = common_tokenize(vocab, k_chunk_prefix_str, false, false); extra_tokens.insert(extra_tokens.end(), k_chunk_prefix_tokens.begin(), k_chunk_prefix_tokens.end()); @@ -318,19 +322,21 @@ static llama_tokens format_infill( } // for now pick FIM context to fit in a batch (ratio prefix:suffix = 3:1, TODO: configurable?) - const int n_prefix_take = std::min(tokens_prefix.size(), 3*(n_batch/4)); - const int n_suffix_take = std::min(tokens_suffix.size(), std::max(0, (n_batch/4) - (2 + tokens_prompt.size()))); + const int n_prefix_take = std::min(tokens_prefix.size(), 3 * (n_batch / 4)); + const int n_suffix_take = + std::min(tokens_suffix.size(), std::max(0, (n_batch / 4) - (2 + tokens_prompt.size()))); - SRV_DBG("n_prefix_take = %d, n_suffix_take = %d, total = %d\n", n_prefix_take, n_suffix_take, (n_prefix_take + n_suffix_take)); + SRV_DBG("n_prefix_take = %d, n_suffix_take = %d, total = %d\n", n_prefix_take, n_suffix_take, + (n_prefix_take + n_suffix_take)); // fill the rest of the context with extra chunks - const int n_extra_take = std::min(std::max(0, n_ctx - (n_batch) - 2*n_predict), extra_tokens.size()); + const int n_extra_take = std::min(std::max(0, n_ctx - (n_batch)-2 * n_predict), extra_tokens.size()); tokens_prefix.erase(tokens_prefix.begin(), tokens_prefix.begin() + tokens_prefix.size() - n_prefix_take); tokens_suffix.resize(n_suffix_take); tokens_prefix.insert(tokens_prefix.begin(), llama_vocab_fim_pre(vocab)); - tokens_prefix.insert(tokens_prefix.end(), tokens_prompt.begin(), tokens_prompt.end()); + tokens_prefix.insert(tokens_prefix.end(), tokens_prompt.begin(), tokens_prompt.end()); tokens_suffix.insert(tokens_suffix.begin(), llama_vocab_fim_suf(vocab)); auto embd_inp = spm_infill ? tokens_suffix : tokens_prefix; @@ -340,7 +346,7 @@ static llama_tokens format_infill( embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); } - SRV_DBG("extra: n_ctx = %d, n_extra_take = %d, n_extra = %d\n", n_ctx, n_extra_take, (int) extra_tokens.size()); + SRV_DBG("extra: n_ctx = %d, n_extra_take = %d, n_extra = %d\n", n_ctx, n_extra_take, (int)extra_tokens.size()); // put the extra context before the FIM prefix embd_inp.insert(embd_inp.begin(), extra_tokens.end() - n_extra_take, extra_tokens.end()); @@ -355,16 +361,13 @@ static llama_tokens format_infill( // base64 utils (TODO: move to common in the future) // -static const std::string base64_chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; +static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; -static inline bool is_base64(uint8_t c) { - return (isalnum(c) || (c == '+') || (c == '/')); -} +static inline bool is_base64(uint8_t c) { return (isalnum(c) || (c == '+') || (c == '/')); } -static inline std::vector base64_decode(const std::string & encoded_string) { +static inline std::vector base64_decode(const std::string &encoded_string) { int i = 0; int j = 0; int in_ = 0; @@ -377,15 +380,16 @@ static inline std::vector base64_decode(const std::string & encoded_str std::vector ret; while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { - char_array_4[i++] = encoded_string[in_]; in_++; + char_array_4[i++] = encoded_string[in_]; + in_++; if (i == 4) { for (i = 0; i < 4; i++) { char_array_4[i] = base64_chars.find(char_array_4[i]); } - char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; for (i = 0; (i < 3); i++) { ret.push_back(char_array_3[i]); @@ -404,9 +408,9 @@ static inline std::vector base64_decode(const std::string & encoded_str char_array_4[j] = base64_chars.find(char_array_4[j]); } - char_array_3[0] = ((char_array_4[0] ) << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[0] = ((char_array_4[0]) << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; for (j = 0; j < i - 1; j++) { ret.push_back(char_array_3[j]); @@ -435,15 +439,13 @@ static std::string random_string() { return result; } -static std::string gen_chatcmplid() { - return "chatcmpl-" + random_string(); -} +static std::string gen_chatcmplid() { return "chatcmpl-" + random_string(); } // // other common utils // -static bool ends_with(const std::string & str, const std::string & suffix) { +static bool ends_with(const std::string &str, const std::string &suffix) { return str.size() >= suffix.size() && 0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix); } @@ -464,8 +466,7 @@ static size_t find_partial_stop_string(const std::string &stop, const std::strin } // TODO: reuse llama_detokenize -template -static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { +template static std::string tokens_to_str(llama_context *ctx, Iter begin, Iter end) { std::string ret; for (; begin != end; ++begin) { ret += common_token_to_piece(ctx, *begin); @@ -475,7 +476,7 @@ static std::string tokens_to_str(llama_context * ctx, Iter begin, Iter end) { } // format incomplete utf-8 multibyte character for output -static std::string tokens_to_output_formatted_string(const llama_context * ctx, const llama_token token) { +static std::string tokens_to_output_formatted_string(const llama_context *ctx, const llama_token token) { std::string out = token == LLAMA_TOKEN_NULL ? "" : common_token_to_piece(ctx, token); // if the size is 1 and first bit is 1, meaning it's a partial character @@ -490,22 +491,22 @@ static std::string tokens_to_output_formatted_string(const llama_context * ctx, return out; } -//static bool server_sent_event(httplib::DataSink & sink, const char * event, const json & data) { -// const std::string str = -// std::string(event) + ": " + -// data.dump(-1, ' ', false, json::error_handler_t::replace) + -// "\n\n"; // required by RFC 8895 - A message is terminated by a blank line (two line terminators in a row). +// static bool server_sent_event(httplib::DataSink & sink, const char * event, const json & data) { +// const std::string str = +// std::string(event) + ": " + +// data.dump(-1, ' ', false, json::error_handler_t::replace) + +// "\n\n"; // required by RFC 8895 - A message is terminated by a blank line (two line terminators in a row). // -// LOG_DBG("data stream, to_send: %s", str.c_str()); +// LOG_DBG("data stream, to_send: %s", str.c_str()); // -// return sink.write(str.c_str(), str.size()); -//} +// return sink.write(str.c_str(), str.size()); +// } // // OAI utils // -static json oaicompat_completion_params_parse(const json & body) { +static json oaicompat_completion_params_parse(const json &body) { json llama_params; if (!body.contains("prompt")) { @@ -531,15 +532,15 @@ static json oaicompat_completion_params_parse(const json & body) { } // Params supported by OAI but unsupported by llama.cpp - static const std::vector unsupported_params { "best_of", "suffix" }; - for (const auto & param : unsupported_params) { + static const std::vector unsupported_params{"best_of", "suffix"}; + for (const auto ¶m : unsupported_params) { if (body.contains(param)) { throw std::runtime_error("Unsupported param: " + param); } } // Copy remaining properties to llama_params - for (const auto & item : body.items()) { + for (const auto &item : body.items()) { // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" if (!llama_params.contains(item.key()) || item.key() == "n_predict") { llama_params[item.key()] = item.value(); @@ -549,12 +550,9 @@ static json oaicompat_completion_params_parse(const json & body) { return llama_params; } -static json oaicompat_completion_params_parse( - const json & body, /* openai api json semantics */ - bool use_jinja, - common_reasoning_format reasoning_format, - const struct common_chat_templates * tmpls) -{ +static json oaicompat_completion_params_parse(const json &body, /* openai api json semantics */ + bool use_jinja, common_reasoning_format reasoning_format, + const struct common_chat_templates *tmpls) { json llama_params; auto tools = json_value(body, "tools", json()); @@ -589,7 +587,7 @@ static json oaicompat_completion_params_parse( // Handle "response_format" field if (body.contains("response_format")) { - json response_format = json_value(body, "response_format", json::object()); + json response_format = json_value(body, "response_format", json::object()); std::string response_type = json_value(response_format, "type", std::string()); if (response_type == "json_object") { json_schema = json_value(response_format, "schema", json::object()); @@ -597,20 +595,21 @@ static json oaicompat_completion_params_parse( auto schema_wrapper = json_value(response_format, "json_schema", json::object()); json_schema = json_value(schema_wrapper, "schema", json::object()); } else if (!response_type.empty() && response_type != "text") { - throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type); + throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + + response_type); } } common_chat_templates_inputs inputs; - inputs.messages = common_chat_msgs_parse_oaicompat(body.at("messages")); - inputs.tools = common_chat_tools_parse_oaicompat(tools); - inputs.tool_choice = common_chat_tool_choice_parse_oaicompat(json_value(body, "tool_choice", std::string("auto"))); - inputs.json_schema = json_schema.is_null() ? "" : json_schema.dump(); - inputs.grammar = grammar; + inputs.messages = common_chat_msgs_parse_oaicompat(body.at("messages")); + inputs.tools = common_chat_tools_parse_oaicompat(tools); + inputs.tool_choice = common_chat_tool_choice_parse_oaicompat(json_value(body, "tool_choice", std::string("auto"))); + inputs.json_schema = json_schema.is_null() ? "" : json_schema.dump(); + inputs.grammar = grammar; inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true); - inputs.use_jinja = use_jinja; - inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); - inputs.extract_reasoning = reasoning_format != COMMON_REASONING_FORMAT_NONE; + inputs.use_jinja = use_jinja; + inputs.parallel_tool_calls = json_value(body, "parallel_tool_calls", false); + inputs.extract_reasoning = reasoning_format != COMMON_REASONING_FORMAT_NONE; inputs.add_generation_prompt = json_value(body, "add_generation_prompt", true); if (!inputs.tools.empty() && inputs.tool_choice != COMMON_CHAT_TOOL_CHOICE_NONE && body.contains("grammar")) { throw std::runtime_error("Cannot use custom grammar constraints with tools."); @@ -619,17 +618,17 @@ static json oaicompat_completion_params_parse( // Apply chat template to the list of messages auto chat_params = common_chat_templates_apply(tmpls, inputs); - llama_params["chat_format"] = static_cast(chat_params.format); - llama_params["prompt"] = chat_params.prompt; - llama_params["grammar"] = chat_params.grammar; - llama_params["grammar_lazy"] = chat_params.grammar_lazy; + llama_params["chat_format"] = static_cast(chat_params.format); + llama_params["prompt"] = chat_params.prompt; + llama_params["grammar"] = chat_params.grammar; + llama_params["grammar_lazy"] = chat_params.grammar_lazy; auto grammar_triggers = json::array(); - for (const auto & trigger : chat_params.grammar_triggers) { + for (const auto &trigger : chat_params.grammar_triggers) { grammar_triggers.push_back(trigger.to_json()); } llama_params["grammar_triggers"] = grammar_triggers; llama_params["preserved_tokens"] = chat_params.preserved_tokens; - for (const auto & stop : chat_params.additional_stops) { + for (const auto &stop : chat_params.additional_stops) { llama_params["stop"].push_back(stop); } @@ -640,7 +639,8 @@ static json oaicompat_completion_params_parse( } // Handle "logprobs" field - // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may need to fix it in the future + // TODO: The response format of this option is not yet OAI-compatible, but seems like no one really using it; We may + // need to fix it in the future if (json_value(body, "logprobs", false)) { llama_params["n_probs"] = json_value(body, "top_logprobs", 20); } else if (body.contains("top_logprobs") && !body.at("top_logprobs").is_null()) { @@ -650,7 +650,7 @@ static json oaicompat_completion_params_parse( // Copy remaining properties to llama_params // This allows user to use llama.cpp-specific params like "mirostat", ... via OAI endpoint. // See "launch_slot_with_task()" for a complete list of params supported by llama.cpp - for (const auto & item : body.items()) { + for (const auto &item : body.items()) { // Exception: if "n_predict" is present, we overwrite the value specified earlier by "max_tokens" if (!llama_params.contains(item.key()) || item.key() == "n_predict") { llama_params[item.key()] = item.value(); @@ -660,59 +660,46 @@ static json oaicompat_completion_params_parse( return llama_params; } -static json format_embeddings_response_oaicompat(const json & request, const json & embeddings, bool use_base64 = false) { +static json format_embeddings_response_oaicompat(const json &request, const json &embeddings, bool use_base64 = false) { json data = json::array(); int32_t n_tokens = 0; int i = 0; - for (const auto & elem : embeddings) { + for (const auto &elem : embeddings) { json embedding_obj; if (use_base64) { - const auto& vec = json_value(elem, "embedding", json::array()).get>(); - const char* data_ptr = reinterpret_cast(vec.data()); + const auto &vec = json_value(elem, "embedding", json::array()).get>(); + const char *data_ptr = reinterpret_cast(vec.data()); size_t data_size = vec.size() * sizeof(float); - embedding_obj = { - {"embedding", base64::encode(data_ptr, data_size)}, - {"index", i++}, - {"object", "embedding"}, - {"encoding_format", "base64"} - }; + embedding_obj = {{"embedding", base64::encode(data_ptr, data_size)}, + {"index", i++}, + {"object", "embedding"}, + {"encoding_format", "base64"}}; } else { embedding_obj = { - {"embedding", json_value(elem, "embedding", json::array())}, - {"index", i++}, - {"object", "embedding"} - }; + {"embedding", json_value(elem, "embedding", json::array())}, {"index", i++}, {"object", "embedding"}}; } data.push_back(embedding_obj); n_tokens += json_value(elem, "tokens_evaluated", 0); } - json res = json { - {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", "list"}, - {"usage", json { - {"prompt_tokens", n_tokens}, - {"total_tokens", n_tokens} - }}, - {"data", data} - }; + json res = json{{"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json{{"prompt_tokens", n_tokens}, {"total_tokens", n_tokens}}}, + {"data", data}}; return res; } -static json format_response_rerank( - const json & request, - const json & ranks, - bool is_tei_format, - std::vector & texts) { +static json format_response_rerank(const json &request, const json &ranks, bool is_tei_format, + std::vector &texts) { json res; if (is_tei_format) { // TEI response format res = json::array(); bool return_text = json_value(request, "return_text", false); - for (const auto & rank : ranks) { + for (const auto &rank : ranks) { int index = json_value(rank, "index", 0); json elem = json{ {"index", index}, @@ -727,32 +714,27 @@ static json format_response_rerank( // Jina response format json results = json::array(); int32_t n_tokens = 0; - for (const auto & rank : ranks) { + for (const auto &rank : ranks) { results.push_back(json{ - {"index", json_value(rank, "index", 0)}, + {"index", json_value(rank, "index", 0)}, {"relevance_score", json_value(rank, "score", 0.0)}, }); n_tokens += json_value(rank, "tokens_evaluated", 0); } - res = json{ - {"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, - {"object", "list"}, - {"usage", json{ - {"prompt_tokens", n_tokens}, - {"total_tokens", n_tokens} - }}, - {"results", results} - }; + res = json{{"model", json_value(request, "model", std::string(DEFAULT_OAICOMPAT_MODEL))}, + {"object", "list"}, + {"usage", json{{"prompt_tokens", n_tokens}, {"total_tokens", n_tokens}}}, + {"results", results}}; } return res; } -static bool is_valid_utf8(const std::string & str) { - const unsigned char* bytes = reinterpret_cast(str.data()); - const unsigned char* end = bytes + str.length(); +static bool is_valid_utf8(const std::string &str) { + const unsigned char *bytes = reinterpret_cast(str.data()); + const unsigned char *end = bytes + str.length(); while (bytes < end) { if (*bytes <= 0x7F) { @@ -770,8 +752,7 @@ static bool is_valid_utf8(const std::string & str) { bytes += 3; } else if ((*bytes & 0xF8) == 0xF0) { // 4-byte sequence (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx) - if (end - bytes < 4 || (bytes[1] & 0xC0) != 0x80 || - (bytes[2] & 0xC0) != 0x80 || (bytes[3] & 0xC0) != 0x80) + if (end - bytes < 4 || (bytes[1] & 0xC0) != 0x80 || (bytes[2] & 0xC0) != 0x80 || (bytes[3] & 0xC0) != 0x80) return false; bytes += 4; } else { @@ -783,21 +764,13 @@ static bool is_valid_utf8(const std::string & str) { return true; } -static json format_tokenizer_response(const json & tokens) { - return json { - {"tokens", tokens} - }; -} +static json format_tokenizer_response(const json &tokens) { return json{{"tokens", tokens}}; } -static json format_detokenized_response(const std::string & content) { - return json { - {"content", content} - }; -} +static json format_detokenized_response(const std::string &content) { return json{{"content", content}}; } -static json format_logit_bias(const std::vector & logit_bias) { +static json format_logit_bias(const std::vector &logit_bias) { json data = json::array(); - for (const auto & lb : logit_bias) { + for (const auto &lb : logit_bias) { data.push_back(json{ {"bias", lb.bias}, {"token", lb.token}, @@ -806,16 +779,16 @@ static json format_logit_bias(const std::vector & logit_bias) return data; } -static std::string safe_json_to_str(const json & data) { +static std::string safe_json_to_str(const json &data) { return data.dump(-1, ' ', false, json::error_handler_t::replace); } -static std::vector get_token_probabilities(llama_context * ctx, int idx) { +static std::vector get_token_probabilities(llama_context *ctx, int idx) { std::vector cur; - const auto * logits = llama_get_logits_ith(ctx, idx); + const auto *logits = llama_get_logits_ith(ctx, idx); - const llama_model * model = llama_get_model(ctx); - const llama_vocab * vocab = llama_model_get_vocab(model); + const llama_model *model = llama_get_model(ctx); + const llama_vocab *vocab = llama_model_get_vocab(model); const int n_vocab = llama_vocab_n_tokens(vocab); @@ -825,9 +798,8 @@ static std::vector get_token_probabilities(llama_context * ctx } // sort tokens by logits - std::sort(cur.begin(), cur.end(), [](const llama_token_data & a, const llama_token_data & b) { - return a.logit > b.logit; - }); + std::sort(cur.begin(), cur.end(), + [](const llama_token_data &a, const llama_token_data &b) { return a.logit > b.logit; }); // apply softmax float max_l = cur[0].logit; @@ -844,9 +816,8 @@ static std::vector get_token_probabilities(llama_context * ctx return cur; } -static bool are_lora_equal( - const std::vector & l1, - const std::vector & l2) { +static bool are_lora_equal(const std::vector &l1, + const std::vector &l2) { if (l1.size() != l2.size()) { return false; } @@ -860,20 +831,19 @@ static bool are_lora_equal( } // parse lora config from JSON request, returned a copy of lora_base with updated scale -static std::vector parse_lora_request( - const std::vector & lora_base, - const json & data) { +static std::vector parse_lora_request(const std::vector &lora_base, + const json &data) { std::vector lora(lora_base); int max_idx = lora.size(); // clear existing value - for (auto & entry : lora) { + for (auto &entry : lora) { entry.scale = 0.0f; } // set value - for (const auto & entry : data) { - int id = json_value(entry, "id", -1); + for (const auto &entry : data) { + int id = json_value(entry, "id", -1); float scale = json_value(entry, "scale", 0.0f); if (0 <= id && id < max_idx) { lora[id].scale = scale; From 14025b932c1a9c5622444fa57ff49c48b1591f8a Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:10:51 +0100 Subject: [PATCH 355/384] update release workflow --- .github/workflows/release.yaml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2e60bffc..04b4a147 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -18,8 +18,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install libcurl - run: sudo apt-get install -y libcurl4-openssl-dev - name: Build libraries shell: bash run: | @@ -96,7 +94,7 @@ jobs: build-win-native: name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} - runs-on: windows-latest + runs-on: windows-2019 strategy: fail-fast: false matrix: @@ -123,12 +121,10 @@ jobs: } steps: - uses: actions/checkout@v4 - - name: Install curl - run: vcpkg install curl - name: Build libraries shell: cmd run: | - .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} -DCURL_LIBRARY=C:/vcpkg/packages/curl_x64-windows/lib/libcurl.lib -DCURL_INCLUDE_DIR=C:/vcpkg/packages/curl_x64-windows/include + .github\build.bat ${{ matrix.target.cmake }} -DOS_NAME=${{ matrix.target.os }} -DOS_ARCH=${{ matrix.target.arch }} - name: Upload artifacts uses: actions/upload-artifact@v4 with: From 8e4c24cf796624b80585bbb4aa98224ffbcbef40 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:21:11 +0100 Subject: [PATCH 356/384] release workflow downgrade compiler generator versions --- .github/workflows/release.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 04b4a147..103580ac 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -102,22 +102,22 @@ jobs: - { os: Windows, arch: x86_64, - cmake: '-G "Visual Studio 17 2022" -A "x64"' + cmake: '-G "Visual Studio 16 2019" -A "x64"' } - { os: Windows, arch: aarch64, - cmake: '-G "Visual Studio 17 2022" -A "ARM64"' + cmake: '-G "Visual Studio 16 2019" -A "ARM64"' } - { os: Windows, arch: x86, - cmake: '-G "Visual Studio 17 2022" -A "Win32"' + cmake: '-G "Visual Studio 16 2019" -A "Win32"' } - { os: Windows, arch: arm, - cmake: '-G "Visual Studio 17 2022" -A "ARM"' + cmake: '-G "Visual Studio 16 2019" -A "ARM"' } steps: - uses: actions/checkout@v4 From d7b9304bf58b716398269f13888b3852975b9378 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:26:02 +0100 Subject: [PATCH 357/384] release workflow remove windows arm builds --- .github/workflows/release.yaml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 103580ac..f8cd6e53 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -104,21 +104,22 @@ jobs: arch: x86_64, cmake: '-G "Visual Studio 16 2019" -A "x64"' } - - { - os: Windows, - arch: aarch64, - cmake: '-G "Visual Studio 16 2019" -A "ARM64"' - } - { os: Windows, arch: x86, cmake: '-G "Visual Studio 16 2019" -A "Win32"' } - - { - os: Windows, - arch: arm, - cmake: '-G "Visual Studio 16 2019" -A "ARM"' - } +# MSVC aarch64 builds no longer work with llama.cpp (requires clang instead) +# - { +# os: Windows, +# arch: aarch64, +# cmake: '-G "Visual Studio 16 2019" -A "ARM64"' +# } +# - { +# os: Windows, +# arch: arm, +# cmake: '-G "Visual Studio 16 2019" -A "ARM"' +# } steps: - uses: actions/checkout@v4 - name: Build libraries From ccbec25e9c6408c9e87a96e703502d63a239f6d0 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:28:12 +0100 Subject: [PATCH 358/384] update readme --- README.md | 40 +++++----------------------------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 971c06af..cffdae76 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,6 @@ Inference of Meta's LLaMA model (and others) in pure C/C++. 2.3 [Infilling](#infilling) 3. [Android](#importing-in-android) -> [!NOTE] -> Now with support for Llama 3, Phi-3, and flash attention - ## Quick Start Access this library via Maven: @@ -27,18 +24,7 @@ Access this library via Maven: de.kherud llama - 3.4.1 - -``` - -Bu default the default library artifact is built only with CPU inference support. To enable CUDA, use a `cuda12-linux-x86-64` maven classifier: - -```xml - - de.kherud - llama - 3.4.1 - cuda12-linux-x86-64 + 4.0.0 ``` @@ -50,11 +36,7 @@ We support CPU inference for the following platforms out of the box: - Linux x86-64, aarch64 - MacOS x86-64, aarch64 (M-series) -- Windows x86-64, x64, arm (32 bit) - -For GPU inference, we support: - -- Linux x86-64 with CUDA 12.1+ +- Windows x86-64, x64 If any of these match your platform, you can include the Maven dependency and get started. @@ -88,13 +70,9 @@ All compiled libraries will be put in a resources directory matching your platfo #### Library Location -This project has to load three shared libraries: +This project has to load a single shared library `jllama`. -- ggml -- llama -- jllama - -Note, that the file names vary between operating systems, e.g., `ggml.dll` on Windows, `libggml.so` on Linux, and `libggml.dylib` on macOS. +Note, that the file name varies between operating systems, e.g., `jllama.dll` on Windows, `jllama.so` on Linux, and `jllama.dylib` on macOS. The application will search in the following order in the following locations: @@ -105,14 +83,6 @@ The application will search in the following order in the following locations: - From the **JAR**: If any of the libraries weren't found yet, the application will try to use a prebuilt shared library. This of course only works for the [supported platforms](#no-setup-required) . -Not all libraries have to be in the same location. -For example, if you already have a llama.cpp and ggml version you can install them as a system library and rely on the jllama library from the JAR. -This way, you don't have to compile anything. - -#### CUDA - -On Linux x86-64 with CUDA 12.1+, the library assumes that your CUDA libraries are findable in `java.library.path`. If you have CUDA installed in a non-standard location, then point the `java.library.path` to the directory containing the `libcudart.so.12` library. - ## Documentation ### Example @@ -234,7 +204,7 @@ LlamaModel.setLogger(null, (level, message) -> {}); ## Importing in Android You can use this library in Android project. -1. Add java-llama.cpp as a submodule in your android `app` project directory +1. Add java-llama.cpp as a submodule in your an droid `app` project directory ```shell git submodule add https://github.com/kherud/java-llama.cpp ``` From bccab5fdbfd91923828b62c96bfb0a4fed44769b Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:31:37 +0100 Subject: [PATCH 359/384] release workflow remove cuda build --- .github/workflows/release.yaml | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f8cd6e53..d571a2c4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -13,20 +13,21 @@ env: MODEL_NAME: "codellama-7b.Q2_K.gguf" jobs: - build-linux-cuda: - name: Build Linux x86-64 CUDA12 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Build libraries - shell: bash - run: | - .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: linux-libraries-cuda - path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ +# todo: doesn't work with the newest llama.cpp version +# build-linux-cuda: +# name: Build Linux x86-64 CUDA12 +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# - name: Build libraries +# shell: bash +# run: | +# .github/dockcross/dockcross-manylinux_2_28-x64 .github/build_cuda_linux.sh "-DOS_NAME=Linux -DOS_ARCH=x86_64" +# - name: Upload artifacts +# uses: actions/upload-artifact@v4 +# with: +# name: linux-libraries-cuda +# path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ build-linux-docker: name: Build ${{ matrix.target.os }}-${{ matrix.target.arch }} @@ -194,7 +195,7 @@ jobs: publish: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.build_only == 'no' }} - needs: [ test-linux,build-macos-native,build-win-native,build-linux-cuda ] + needs: [ test-linux,build-macos-native,build-win-native ] #,build-linux-cuda runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 0b84ea49d9a2d02cb283ea70b636e4c64e0b5c82 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:36:17 +0100 Subject: [PATCH 360/384] minor release workflow fix --- .github/workflows/release.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d571a2c4..ff566ad5 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -204,10 +204,10 @@ jobs: pattern: "*-libraries" merge-multiple: true path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - uses: actions/download-artifact@v4 - with: - name: linux-libraries-cuda - path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ +# - uses: actions/download-artifact@v4 +# with: +# name: linux-libraries-cuda +# path: ${{ github.workspace }}/src/main/resources_linux_cuda/de/kherud/llama/ - name: Set up Maven Central Repository uses: actions/setup-java@v3 with: From a1a74746a3ceca924db1397ae57ff9a339346544 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 16:45:27 +0100 Subject: [PATCH 361/384] minor doc comment fix --- src/main/java/de/kherud/llama/ModelParameters.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index 8615bd50..e4947d4e 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -584,7 +584,7 @@ public ModelParameters setCacheTypeV(CacheType type) { } /** - * Set KV cache defragmentation threshold (default: 0.1, < 0 - disabled). + * Set KV cache defragmentation threshold (default: 0.1, < 0 - disabled). */ public ModelParameters setDefragThold(float defragThold) { parameters.put("--defrag-thold", String.valueOf(defragThold)); @@ -640,7 +640,7 @@ public ModelParameters setNuma(NumaStrategy numaStrategy) { } /** - * Set comma-separated list of devices to use for offloading (none = don't offload). + * Set comma-separated list of devices to use for offloading <dev1,dev2,..> (none = don't offload). */ public ModelParameters setDevices(String devices) { parameters.put("--device", devices); From ca148c87ecaa483288f412aa23e53e94b9f09446 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Sun, 9 Mar 2025 17:32:45 +0100 Subject: [PATCH 362/384] update readme llama.cpp tag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cffdae76..32f555ea 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b3534](https://img.shields.io/badge/llama.cpp-%23b3534-informational) +![llama.cpp b4831](https://img.shields.io/badge/llama.cpp-%23b4831-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) From 71373681d3b460bb384750d3e6fd9f17e6055089 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Mar 2025 12:19:56 -0700 Subject: [PATCH 363/384] adding re-ranking --- pom.xml | 34 ++++-- src/main/cpp/jllama.cpp | 111 +++++++++++++++++- src/main/cpp/jllama.h | 7 ++ src/main/java/de/kherud/llama/LlamaModel.java | 3 + .../java/de/kherud/llama/LlamaModelTest.java | 20 ++++ 5 files changed, 163 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index c081e192..fba7eb4a 100644 --- a/pom.xml +++ b/pom.xml @@ -1,14 +1,16 @@ - 4.0.0 de.kherud llama - 4.0.0 + 4.0.1 jar ${project.groupId}:${project.artifactId} - Java Bindings for llama.cpp - A Port of Facebook's LLaMA model in C/C++. + Java Bindings for llama.cpp - A Port of Facebook's LLaMA model + in C/C++. https://github.com/kherud/java-llama.cpp @@ -39,7 +41,8 @@ ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ @@ -62,6 +65,7 @@ 24.1.0 compile + @@ -71,17 +75,21 @@ maven-compiler-plugin 3.13.0 - + gpu compile - compile + + compile + -h src/main/cpp - ${project.build.outputDirectory}_cuda + + ${project.build.outputDirectory}_cuda @@ -98,10 +106,12 @@ copy-resources - ${project.build.outputDirectory}_cuda + + ${project.build.outputDirectory}_cuda - ${basedir}/src/main/resources_linux_cuda/ + + ${basedir}/src/main/resources_linux_cuda/ **/*.* @@ -176,7 +186,8 @@ maven-jar-plugin 3.4.2 - + cuda package @@ -185,7 +196,8 @@ cuda12-linux-x86-64 - ${project.build.outputDirectory}_cuda + + ${project.build.outputDirectory}_cuda diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 0db026ea..9fafb6fe 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -112,6 +112,26 @@ char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const js return result; } +std::vector parse_string_array_for_rerank(JNIEnv *env, const jobjectArray string_array, const jsize length) { + std::vector result; + result.reserve(length); // Reserve memory for efficiency + + for (jsize i = 0; i < length; i++) { + jstring javaString = static_cast(env->GetObjectArrayElement(string_array, i)); + if (javaString == nullptr) continue; + + const char *cString = env->GetStringUTFChars(javaString, nullptr); + if (cString != nullptr) { + result.emplace_back(cString); // Add to vector + env->ReleaseStringUTFChars(javaString, cString); + } + + env->DeleteLocalRef(javaString); // Avoid memory leaks + } + + return result; +} + void free_string_array(char **array, jsize length) { if (array != nullptr) { for (jsize i = 0; i < length; i++) { @@ -239,6 +259,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { cc_integer = env->GetMethodID(c_integer, "", "(I)V"); cc_float = env->GetMethodID(c_float, "", "(F)V"); + if (!(cc_output && cc_hash_map && cc_integer && cc_float)) { goto error; } @@ -634,7 +655,6 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, json error = nullptr; server_task_result_ptr result = ctx_server->queue_results.recv(id_task); - ctx_server->queue_results.remove_waiting_task_id(id_task); json response_str = result->to_json(); if (result->is_error()) { @@ -643,6 +663,11 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } + + if (result->is_stop()) { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + const auto out_res = result->to_json(); @@ -679,6 +704,90 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, return j_embedding; } +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jobject obj, jstring jprompt, jobjectArray documents) { + jlong server_handle = env->GetLongField(obj, f_model_pointer); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + + if (!ctx_server->params_base.reranking || ctx_server->params_base.embedding) { + env->ThrowNew(c_llama_error, + "This server does not support reranking. Start it with `--reranking` and without `--embedding`"); + return nullptr; + } + + + const std::string prompt = parse_jstring(env, jprompt); + + + + const auto tokenized_query = tokenize_mixed(ctx_server->vocab, prompt, true, true); + + json responses = json::array(); + bool error = false; + + std::vector tasks; + const jsize argc = env->GetArrayLength(documents); + std::vector documentsArray = parse_string_array_for_rerank(env, documents, argc); + + std::vector tokenized_docs = tokenize_input_prompts(ctx_server->vocab, documentsArray, true, true); + + tasks.reserve(tokenized_docs.size()); + for (size_t i = 0; i < tokenized_docs.size(); i++) { + server_task task = server_task(SERVER_TASK_TYPE_RERANK); + task.id = ctx_server->queue_tasks.get_new_id(); + task.index = i; + task.prompt_tokens = format_rerank(ctx_server->vocab, tokenized_query, tokenized_docs[i]); + tasks.push_back(task); + } + ctx_server->queue_results.add_waiting_tasks(tasks); + ctx_server->queue_tasks.post(tasks); + + // get the result + std::unordered_set task_ids = server_task::get_list_id(tasks); + std::vector results(task_ids.size()); + + // Create a new HashMap instance + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + if (o_probabilities == nullptr) { + env->ThrowNew(c_llama_error, "Failed to create HashMap object."); + return nullptr; + } + + for (int i = 0; i < (int)task_ids.size(); i++) { + server_task_result_ptr result = ctx_server->queue_results.recv(task_ids); + if (result->is_error()) { + std::string response = result->to_json()["message"].get(); + for (const int id_task : task_ids) { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + env->ThrowNew(c_llama_error, response.c_str()); + return nullptr; + } + + const auto out_res = result->to_json(); + + std::cout << out_res.dump(4) << std::endl; + + if (result->is_stop()) { + for (const int id_task : task_ids) { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + } + + int index = out_res["index"].get(); + float score = out_res["score"].get(); + std::string tok_str = documentsArray[index]; + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + + jobject jprob = env->NewObject(c_float, cc_float, score); + env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); + env->DeleteLocalRef(jtok_str); + env->DeleteLocalRef(jprob); + } + jbyteArray jbytes = parse_jbytes(env, prompt); + return env->NewObject(c_output, cc_output, jbytes, o_probabilities, true); + +} + JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 63d95b71..01e4d20b 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -84,6 +84,13 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_releaseTask(JNIEnv *, job */ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammarBytes(JNIEnv *, jclass, jstring); +/* + * Class: de_kherud_llama_LlamaModel + * Method: rerank + * Signature: (Ljava/lang/String;[Ljava/lang/String;)Lde/kherud/llama/LlamaOutput; + */ +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *, jobject, jstring, jobjectArray); + #ifdef __cplusplus } #endif diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 7749b321..ffa9675c 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -5,6 +5,7 @@ import java.lang.annotation.Native; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.function.BiConsumer; /** @@ -137,4 +138,6 @@ public void close() { public static String jsonSchemaToGrammar(String schema) { return new String(jsonSchemaToGrammarBytes(schema), StandardCharsets.UTF_8); } + + public native LlamaOutput rerank(String query, String... documents); } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index f2e931b4..6481f09e 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -158,6 +158,26 @@ public void testEmbedding() { float[] embedding = model.embed(prefix); Assert.assertEquals(4096, embedding.length); } + + + @Ignore + /** + * To run this test download the model from here https://huggingface.co/mradermacher/jina-reranker-v1-tiny-en-GGUF/tree/main + * remove .enableEmbedding() from model setup and add .enableReRanking() and then enable the test. + */ + public void testReRanking() { + + String query = "Machine learning is"; + String [] TEST_DOCUMENTS = new String[] { + "A machine is a physical system that uses power to apply forces and control movement to perform an action. The term is commonly applied to artificial devices, such as those employing engines or motors, but also to natural biological macromolecules, such as molecular machines.", + "Learning is the process of acquiring new understanding, knowledge, behaviors, skills, values, attitudes, and preferences. The ability to learn is possessed by humans, non-human animals, and some machines; there is also evidence for some kind of learning in certain plants.", + "Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalize to unseen data, and thus perform tasks without explicit instructions.", + "Paris, capitale de la France, est une grande ville européenne et un centre mondial de l'art, de la mode, de la gastronomie et de la culture. Son paysage urbain du XIXe siècle est traversé par de larges boulevards et la Seine." + }; + LlamaOutput llamaOutput = model.rerank(query, TEST_DOCUMENTS[0], TEST_DOCUMENTS[1], TEST_DOCUMENTS[2], TEST_DOCUMENTS[3] ); + + System.out.println(llamaOutput); + } @Test public void testTokenization() { From e9c3de7ef5918c86fd8cca03efb58f8852339212 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Mar 2025 19:08:02 -0700 Subject: [PATCH 364/384] moving reranking to it's own test. --- .github/workflows/ci.yml | 14 +++++- .../de/kherud/llama/RerankingModelTest.java | 47 +++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/test/java/de/kherud/llama/RerankingModelTest.java diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 631fc86d..9e913a9e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,8 @@ on: env: MODEL_URL: https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf MODEL_NAME: codellama-7b.Q2_K.gguf + RERANKING_MODEL_URL: https://huggingface.co/gpustack/jina-reranker-v1-tiny-en-GGUF/resolve/main/jina-reranker-v1-tiny-en-Q4_0.gguf + RERANKING_MODEL_NAME: jina-reranker-v1-tiny-en-Q4_0.gguf jobs: build-and-test-linux: @@ -21,8 +23,10 @@ jobs: run: | mvn compile .github/build.sh -DLLAMA_VERBOSE=ON - - name: Download model + - name: Download text generation model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - name: Download reranking model + run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} - name: Run tests run: mvn test - if: failure() @@ -53,8 +57,11 @@ jobs: run: | mvn compile .github/build.sh ${{ matrix.target.cmake }} - - name: Download model + - name: Download text generaton model model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - name: Download reranking model + run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} + - name: Run tests run: mvn test - if: failure() @@ -79,6 +86,9 @@ jobs: .github\build.bat -DLLAMA_VERBOSE=ON - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME + - name: Download reranking model + run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} + - name: Run tests run: mvn test - if: failure() diff --git a/src/test/java/de/kherud/llama/RerankingModelTest.java b/src/test/java/de/kherud/llama/RerankingModelTest.java new file mode 100644 index 00000000..38ca7e21 --- /dev/null +++ b/src/test/java/de/kherud/llama/RerankingModelTest.java @@ -0,0 +1,47 @@ +package de.kherud.llama; + +import java.io.*; +import java.util.*; +import java.util.regex.Pattern; + +import de.kherud.llama.args.LogFormat; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +public class RerankingModelTest { + + private static LlamaModel model; + + @BeforeClass + public static void setup() { + model = new LlamaModel( + new ModelParameters().setCtxSize(128).setModel("models/jina-reranker-v1-tiny-en.Q4_K_M.gguf") + .setGpuLayers(43).enableReranking().enableLogTimestamps().enableLogPrefix()); + } + + @AfterClass + public static void tearDown() { + if (model != null) { + model.close(); + } + } + + @Test + public void testReRanking() { + + String query = "Machine learning is"; + String[] TEST_DOCUMENTS = new String[] { + "A machine is a physical system that uses power to apply forces and control movement to perform an action. The term is commonly applied to artificial devices, such as those employing engines or motors, but also to natural biological macromolecules, such as molecular machines.", + "Learning is the process of acquiring new understanding, knowledge, behaviors, skills, values, attitudes, and preferences. The ability to learn is possessed by humans, non-human animals, and some machines; there is also evidence for some kind of learning in certain plants.", + "Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalize to unseen data, and thus perform tasks without explicit instructions.", + "Paris, capitale de la France, est une grande ville européenne et un centre mondial de l'art, de la mode, de la gastronomie et de la culture. Son paysage urbain du XIXe siècle est traversé par de larges boulevards et la Seine." }; + LlamaOutput llamaOutput = model.rerank(query, TEST_DOCUMENTS[0], TEST_DOCUMENTS[1], TEST_DOCUMENTS[2], + TEST_DOCUMENTS[3]); + + System.out.println(llamaOutput); + } + +} From 01a6f83726cbae097fb282e6095f12e1dc10da4b Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Mar 2025 20:46:15 -0700 Subject: [PATCH 365/384] updating the workflow and reranking --- .github/workflows/ci.yml | 8 ++++++-- src/test/java/de/kherud/llama/RerankingModelTest.java | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e913a9e..9ff9dfb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,8 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Download reranking model run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} + - name: List files in models directory + run: ls -l models/ - name: Run tests run: mvn test - if: failure() @@ -61,7 +63,8 @@ jobs: run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} - name: Download reranking model run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} - + - name: List files in models directory + run: ls -l models/ - name: Run tests run: mvn test - if: failure() @@ -88,7 +91,8 @@ jobs: run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Download reranking model run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} - + - name: List files in models directory + run: ls -l models/ - name: Run tests run: mvn test - if: failure() diff --git a/src/test/java/de/kherud/llama/RerankingModelTest.java b/src/test/java/de/kherud/llama/RerankingModelTest.java index 38ca7e21..69adb7f0 100644 --- a/src/test/java/de/kherud/llama/RerankingModelTest.java +++ b/src/test/java/de/kherud/llama/RerankingModelTest.java @@ -18,7 +18,7 @@ public class RerankingModelTest { @BeforeClass public static void setup() { model = new LlamaModel( - new ModelParameters().setCtxSize(128).setModel("models/jina-reranker-v1-tiny-en.Q4_K_M.gguf") + new ModelParameters().setCtxSize(128).setModel("models/jina-reranker-v1-tiny-en-Q4_0.gguf") .setGpuLayers(43).enableReranking().enableLogTimestamps().enableLogPrefix()); } From 1685c3e5044fa4012595d5b7ea113da41f6c0ee8 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Mar 2025 20:57:02 -0700 Subject: [PATCH 366/384] updating windows build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ff9dfb9..a15f809d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,7 +90,7 @@ jobs: - name: Download model run: curl -L $env:MODEL_URL --create-dirs -o models/$env:MODEL_NAME - name: Download reranking model - run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} + run: curl -L $env:RERANKING_MODEL_URL --create-dirs -o models/$env:RERANKING_MODEL_NAME - name: List files in models directory run: ls -l models/ - name: Run tests From 06b11a705669ac09864338b9c55364cf886b7e1e Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Wed, 12 Mar 2025 21:36:17 -0700 Subject: [PATCH 367/384] updated the test. --- .../de/kherud/llama/RerankingModelTest.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/test/java/de/kherud/llama/RerankingModelTest.java b/src/test/java/de/kherud/llama/RerankingModelTest.java index 69adb7f0..8145829b 100644 --- a/src/test/java/de/kherud/llama/RerankingModelTest.java +++ b/src/test/java/de/kherud/llama/RerankingModelTest.java @@ -1,14 +1,10 @@ package de.kherud.llama; -import java.io.*; -import java.util.*; -import java.util.regex.Pattern; +import java.util.Map; -import de.kherud.llama.args.LogFormat; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; public class RerankingModelTest { @@ -41,7 +37,32 @@ public void testReRanking() { LlamaOutput llamaOutput = model.rerank(query, TEST_DOCUMENTS[0], TEST_DOCUMENTS[1], TEST_DOCUMENTS[2], TEST_DOCUMENTS[3]); - System.out.println(llamaOutput); + Map rankedDocumentsMap = llamaOutput.probabilities; + Assert.assertTrue(rankedDocumentsMap.size()==TEST_DOCUMENTS.length); + + // Finding the most and least relevant documents + String mostRelevantDoc = null; + String leastRelevantDoc = null; + float maxScore = Float.MIN_VALUE; + float minScore = Float.MAX_VALUE; + + for (Map.Entry entry : rankedDocumentsMap.entrySet()) { + if (entry.getValue() > maxScore) { + maxScore = entry.getValue(); + mostRelevantDoc = entry.getKey(); + } + if (entry.getValue() < minScore) { + minScore = entry.getValue(); + leastRelevantDoc = entry.getKey(); + } + } + + // Assertions + Assert.assertTrue(maxScore > minScore); + Assert.assertEquals("Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalize to unseen data, and thus perform tasks without explicit instructions.", mostRelevantDoc); + Assert.assertEquals("Paris, capitale de la France, est une grande ville européenne et un centre mondial de l'art, de la mode, de la gastronomie et de la culture. Son paysage urbain du XIXe siècle est traversé par de larges boulevards et la Seine.", leastRelevantDoc); + + } } From faa494e886824a888ea12cf388c9f45229ff35e7 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Mar 2025 15:41:56 -0700 Subject: [PATCH 368/384] removed std print and adding ranking test. --- src/main/cpp/jllama.cpp | 2 - .../java/de/kherud/llama/LlamaIterator.java | 3 ++ src/main/java/de/kherud/llama/LlamaModel.java | 25 +++++++++- src/main/java/de/kherud/llama/Pair.java | 48 +++++++++++++++++++ .../de/kherud/llama/RerankingModelTest.java | 29 ++++++++--- 5 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 src/main/java/de/kherud/llama/Pair.java diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index 9fafb6fe..b0242c31 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -765,8 +765,6 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jo const auto out_res = result->to_json(); - std::cout << out_res.dump(4) << std::endl; - if (result->is_stop()) { for (const int id_task : task_ids) { ctx_server->queue_results.remove_waiting_task_id(id_task); diff --git a/src/main/java/de/kherud/llama/LlamaIterator.java b/src/main/java/de/kherud/llama/LlamaIterator.java index fdff993b..cb1c5c2c 100644 --- a/src/main/java/de/kherud/llama/LlamaIterator.java +++ b/src/main/java/de/kherud/llama/LlamaIterator.java @@ -35,6 +35,9 @@ public LlamaOutput next() { } LlamaOutput output = model.receiveCompletion(taskId); hasNext = !output.stop; + if (output.stop) { + model.releaseTask(taskId); + } return output; } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index ffa9675c..9ed86d01 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -5,7 +5,9 @@ import java.lang.annotation.Native; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.function.BiConsumer; /** @@ -131,7 +133,7 @@ public void close() { private native void delete(); - private native void releaseTask(int taskId); + native void releaseTask(int taskId); private static native byte[] jsonSchemaToGrammarBytes(String schema); @@ -139,5 +141,26 @@ public static String jsonSchemaToGrammar(String schema) { return new String(jsonSchemaToGrammarBytes(schema), StandardCharsets.UTF_8); } + public List> rerank(boolean reRank, String query, String ... documents) { + LlamaOutput output = rerank(query, documents); + + Map scoredDocumentMap = output.probabilities; + + List> rankedDocuments = new ArrayList<>(); + + if (reRank) { + // Sort in descending order based on Float values + scoredDocumentMap.entrySet() + .stream() + .sorted((a, b) -> Float.compare(b.getValue(), a.getValue())) // Descending order + .forEach(entry -> rankedDocuments.add(new Pair<>(entry.getKey(), entry.getValue()))); + } else { + // Copy without sorting + scoredDocumentMap.forEach((key, value) -> rankedDocuments.add(new Pair<>(key, value))); + } + + return rankedDocuments; + } + public native LlamaOutput rerank(String query, String... documents); } diff --git a/src/main/java/de/kherud/llama/Pair.java b/src/main/java/de/kherud/llama/Pair.java new file mode 100644 index 00000000..48ac648b --- /dev/null +++ b/src/main/java/de/kherud/llama/Pair.java @@ -0,0 +1,48 @@ +package de.kherud.llama; + +import java.util.Objects; + +public class Pair { + + private final K key; + private final V value; + + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + public K getKey() { + return key; + } + + public V getValue() { + return value; + } + + @Override + public int hashCode() { + return Objects.hash(key, value); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Pair other = (Pair) obj; + return Objects.equals(key, other.key) && Objects.equals(value, other.value); + } + + @Override + public String toString() { + return "Pair [key=" + key + ", value=" + value + "]"; + } + + + + +} diff --git a/src/test/java/de/kherud/llama/RerankingModelTest.java b/src/test/java/de/kherud/llama/RerankingModelTest.java index 8145829b..60d32bde 100644 --- a/src/test/java/de/kherud/llama/RerankingModelTest.java +++ b/src/test/java/de/kherud/llama/RerankingModelTest.java @@ -1,5 +1,6 @@ package de.kherud.llama; +import java.util.List; import java.util.Map; import org.junit.AfterClass; @@ -10,6 +11,13 @@ public class RerankingModelTest { private static LlamaModel model; + + String query = "Machine learning is"; + String[] TEST_DOCUMENTS = new String[] { + "A machine is a physical system that uses power to apply forces and control movement to perform an action. The term is commonly applied to artificial devices, such as those employing engines or motors, but also to natural biological macromolecules, such as molecular machines.", + "Learning is the process of acquiring new understanding, knowledge, behaviors, skills, values, attitudes, and preferences. The ability to learn is possessed by humans, non-human animals, and some machines; there is also evidence for some kind of learning in certain plants.", + "Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalize to unseen data, and thus perform tasks without explicit instructions.", + "Paris, capitale de la France, est une grande ville européenne et un centre mondial de l'art, de la mode, de la gastronomie et de la culture. Son paysage urbain du XIXe siècle est traversé par de larges boulevards et la Seine." }; @BeforeClass public static void setup() { @@ -28,12 +36,7 @@ public static void tearDown() { @Test public void testReRanking() { - String query = "Machine learning is"; - String[] TEST_DOCUMENTS = new String[] { - "A machine is a physical system that uses power to apply forces and control movement to perform an action. The term is commonly applied to artificial devices, such as those employing engines or motors, but also to natural biological macromolecules, such as molecular machines.", - "Learning is the process of acquiring new understanding, knowledge, behaviors, skills, values, attitudes, and preferences. The ability to learn is possessed by humans, non-human animals, and some machines; there is also evidence for some kind of learning in certain plants.", - "Machine learning is a field of study in artificial intelligence concerned with the development and study of statistical algorithms that can learn from data and generalize to unseen data, and thus perform tasks without explicit instructions.", - "Paris, capitale de la France, est une grande ville européenne et un centre mondial de l'art, de la mode, de la gastronomie et de la culture. Son paysage urbain du XIXe siècle est traversé par de larges boulevards et la Seine." }; + LlamaOutput llamaOutput = model.rerank(query, TEST_DOCUMENTS[0], TEST_DOCUMENTS[1], TEST_DOCUMENTS[2], TEST_DOCUMENTS[3]); @@ -64,5 +67,17 @@ public void testReRanking() { } - + + @Test + public void testSortedReRanking() { + List> rankedDocuments = model.rerank(true, query, TEST_DOCUMENTS); + Assert.assertEquals(rankedDocuments.size(), TEST_DOCUMENTS.length); + + // Check the ranking order: each score should be >= the next one + for (int i = 0; i < rankedDocuments.size() - 1; i++) { + float currentScore = rankedDocuments.get(i).getValue(); + float nextScore = rankedDocuments.get(i + 1).getValue(); + Assert.assertTrue("Ranking order incorrect at index " + i, currentScore >= nextScore); + } + } } From fe7c337a76f498f2fb7b7e1c501386554554235c Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Thu, 13 Mar 2025 16:57:46 -0700 Subject: [PATCH 369/384] updating release.yaml file for reranking --- .github/workflows/release.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ff566ad5..64032028 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -11,6 +11,8 @@ on: env: MODEL_URL: "https://huggingface.co/TheBloke/CodeLlama-7B-GGUF/resolve/main/codellama-7b.Q2_K.gguf" MODEL_NAME: "codellama-7b.Q2_K.gguf" + RERANKING_MODEL_URL: "https://huggingface.co/gpustack/jina-reranker-v1-tiny-en-GGUF/resolve/main/jina-reranker-v1-tiny-en-Q4_0.gguf" + RERANKING_MODEL_NAME: "jina-reranker-v1-tiny-en-Q4_0.gguf" jobs: # todo: doesn't work with the newest llama.cpp version @@ -144,8 +146,10 @@ jobs: with: name: Linux-x86_64-libraries path: ${{ github.workspace }}/src/main/resources/de/kherud/llama/ - - name: Download model + - name: Download text generation model run: curl -L ${MODEL_URL} --create-dirs -o models/${MODEL_NAME} + - name: Download reranking model + run: curl -L ${RERANKING_MODEL_URL} --create-dirs -o models/${RERANKING_MODEL_NAME} - uses: actions/setup-java@v4 with: distribution: 'zulu' From 3d28a989ee7741715d1c593ab3282363185a72e4 Mon Sep 17 00:00:00 2001 From: Vaijanath Rao Date: Fri, 14 Mar 2025 02:36:21 -0700 Subject: [PATCH 370/384] adding support for messages. --- pom.xml | 8 +++- src/main/cpp/jllama.cpp | 14 ++++++ src/main/cpp/jllama.h | 7 +++ .../de/kherud/llama/InferenceParameters.java | 45 ++++++++++++++++++- src/main/java/de/kherud/llama/LlamaModel.java | 5 +++ .../java/de/kherud/llama/LlamaModelTest.java | 16 +++++++ 6 files changed, 92 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index fba7eb4a..f4e1e45d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ de.kherud llama - 4.0.1 + 4.0.0 jar ${project.groupId}:${project.artifactId} @@ -65,7 +65,11 @@ 24.1.0 compile - + + com.fasterxml.jackson.core + jackson-databind + 2.16.0 + diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index b0242c31..a0aca717 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -786,6 +786,20 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jo } +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_applyTemplate(JNIEnv *env, jobject obj, jstring jparams){ + jlong server_handle = env->GetLongField(obj, f_model_pointer); + auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) + + std::string c_params = parse_jstring(env, jparams); + json data = json::parse(c_params); + + json templateData = oaicompat_completion_params_parse(data, ctx_server->params_base.use_jinja, ctx_server->params_base.reasoning_format, ctx_server->chat_templates.get()); + std::string tok_str = templateData.at("prompt"); + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + + return jtok_str; +} + JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) diff --git a/src/main/cpp/jllama.h b/src/main/cpp/jllama.h index 01e4d20b..dc17fa83 100644 --- a/src/main/cpp/jllama.h +++ b/src/main/cpp/jllama.h @@ -91,6 +91,13 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammar */ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *, jobject, jstring, jobjectArray); +/* + * Class: de_kherud_llama_LlamaModel + * Method: applyTemplate + * Signature: (Ljava/lang/String;)Ljava/lang/String;; + */ +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_applyTemplate(JNIEnv *, jobject, jstring); + #ifdef __cplusplus } #endif diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index 0ac1b1dc..e868be0c 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -1,8 +1,13 @@ package de.kherud.llama; import java.util.Collection; +import java.util.List; import java.util.Map; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + import de.kherud.llama.args.MiroStat; import de.kherud.llama.args.Sampler; @@ -12,6 +17,9 @@ * {@link LlamaModel#complete(InferenceParameters)}. */ public final class InferenceParameters extends JsonParameters { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); // Reusable ObjectMapper + private static final String PARAM_PROMPT = "prompt"; private static final String PARAM_INPUT_PREFIX = "input_prefix"; @@ -47,6 +55,7 @@ public final class InferenceParameters extends JsonParameters { private static final String PARAM_STREAM = "stream"; private static final String PARAM_USE_CHAT_TEMPLATE = "use_chat_template"; private static final String PARAM_USE_JINJA = "use_jinja"; + private static final String PARAM_MESSAGES = "messages"; public InferenceParameters(String prompt) { // we always need a prompt @@ -493,7 +502,41 @@ public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { return this; } - + /** + * Set the messages for chat-based inference. + * - Allows **only one** system message. + * - Allows **one or more** user/assistant messages. + */ + public InferenceParameters setMessages(String systemMessage, List> messages) { + ArrayNode messagesArray = OBJECT_MAPPER.createArrayNode(); + + // Add system message (if provided) + if (systemMessage != null && !systemMessage.isEmpty()) { + ObjectNode systemObj = OBJECT_MAPPER.createObjectNode(); + systemObj.put("role", "system"); + systemObj.put("content", systemMessage); + messagesArray.add(systemObj); + } + + // Add user/assistant messages + for (Pair message : messages) { + String role = message.getKey(); + String content = message.getValue(); + + if (!role.equals("user") && !role.equals("assistant")) { + throw new IllegalArgumentException("Invalid role: " + role + ". Role must be 'user' or 'assistant'."); + } + + ObjectNode messageObj = OBJECT_MAPPER.createObjectNode(); + messageObj.put("role", role); + messageObj.put("content", content); + messagesArray.add(messageObj); + } + + // Convert ArrayNode to a JSON string and store it in parameters + parameters.put(PARAM_MESSAGES, messagesArray.toString()); + return this; + } diff --git a/src/main/java/de/kherud/llama/LlamaModel.java b/src/main/java/de/kherud/llama/LlamaModel.java index 9ed86d01..eab36202 100644 --- a/src/main/java/de/kherud/llama/LlamaModel.java +++ b/src/main/java/de/kherud/llama/LlamaModel.java @@ -163,4 +163,9 @@ public List> rerank(boolean reRank, String query, String ... } public native LlamaOutput rerank(String query, String... documents); + + public String applyTemplate(InferenceParameters parameters) { + return applyTemplate(parameters.toString()); + } + public native String applyTemplate(String parametersJson); } diff --git a/src/test/java/de/kherud/llama/LlamaModelTest.java b/src/test/java/de/kherud/llama/LlamaModelTest.java index 6481f09e..e3e69d8c 100644 --- a/src/test/java/de/kherud/llama/LlamaModelTest.java +++ b/src/test/java/de/kherud/llama/LlamaModelTest.java @@ -316,4 +316,20 @@ public void testJsonSchemaToGrammar() { String actualGrammar = LlamaModel.jsonSchemaToGrammar(schema); Assert.assertEquals(expectedGrammar, actualGrammar); } + + @Test + public void testTemplate() { + + List> userMessages = new ArrayList<>(); + userMessages.add(new Pair<>("user", "What is the best book?")); + userMessages.add(new Pair<>("assistant", "It depends on your interests. Do you like fiction or non-fiction?")); + + InferenceParameters params = new InferenceParameters("A book recommendation system.") + .setMessages("Book", userMessages) + .setTemperature(0.95f) + .setStopStrings("\"\"\"") + .setNPredict(nPredict) + .setSeed(42); + Assert.assertEquals(model.applyTemplate(params), "<|im_start|>system\nBook<|im_end|>\n<|im_start|>user\nWhat is the best book?<|im_end|>\n<|im_start|>assistant\nIt depends on your interests. Do you like fiction or non-fiction?<|im_end|>\n<|im_start|>assistant\n"); + } } From 6e95f61d51afa629b8a998d34f3cc3c4eb623709 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:01:25 +0100 Subject: [PATCH 371/384] reformat c++ code --- src/main/cpp/jllama.cpp | 159 ++++++++++++++++++++-------------------- 1 file changed, 79 insertions(+), 80 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index a0aca717..b9436b7c 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -112,13 +112,15 @@ char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const js return result; } -std::vector parse_string_array_for_rerank(JNIEnv *env, const jobjectArray string_array, const jsize length) { +std::vector parse_string_array_for_rerank(JNIEnv *env, const jobjectArray string_array, + const jsize length) { std::vector result; result.reserve(length); // Reserve memory for efficiency for (jsize i = 0; i < length; i++) { jstring javaString = static_cast(env->GetObjectArrayElement(string_array, i)); - if (javaString == nullptr) continue; + if (javaString == nullptr) + continue; const char *cString = env->GetStringUTFChars(javaString, nullptr); if (cString != nullptr) { @@ -259,7 +261,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { cc_integer = env->GetMethodID(c_integer, "", "(I)V"); cc_float = env->GetMethodID(c_float, "", "(F)V"); - if (!(cc_output && cc_hash_map && cc_integer && cc_float)) { goto error; } @@ -663,12 +664,11 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, env->ThrowNew(c_llama_error, response.c_str()); return nullptr; } - + if (result->is_stop()) { ctx_server->queue_results.remove_waiting_task_id(id_task); } - const auto out_res = result->to_json(); // Extract "embedding" as a vector of vectors (2D array) @@ -704,100 +704,99 @@ JNIEXPORT jfloatArray JNICALL Java_de_kherud_llama_LlamaModel_embed(JNIEnv *env, return j_embedding; } -JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jobject obj, jstring jprompt, jobjectArray documents) { +JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jobject obj, jstring jprompt, + jobjectArray documents) { jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) - if (!ctx_server->params_base.reranking || ctx_server->params_base.embedding) { - env->ThrowNew(c_llama_error, + if (!ctx_server->params_base.reranking || ctx_server->params_base.embedding) { + env->ThrowNew(c_llama_error, "This server does not support reranking. Start it with `--reranking` and without `--embedding`"); - return nullptr; + return nullptr; } - const std::string prompt = parse_jstring(env, jprompt); - - const auto tokenized_query = tokenize_mixed(ctx_server->vocab, prompt, true, true); - + json responses = json::array(); bool error = false; - - std::vector tasks; - const jsize argc = env->GetArrayLength(documents); - std::vector documentsArray = parse_string_array_for_rerank(env, documents, argc); - - std::vector tokenized_docs = tokenize_input_prompts(ctx_server->vocab, documentsArray, true, true); - - tasks.reserve(tokenized_docs.size()); - for (size_t i = 0; i < tokenized_docs.size(); i++) { - server_task task = server_task(SERVER_TASK_TYPE_RERANK); - task.id = ctx_server->queue_tasks.get_new_id(); - task.index = i; - task.prompt_tokens = format_rerank(ctx_server->vocab, tokenized_query, tokenized_docs[i]); - tasks.push_back(task); - } - ctx_server->queue_results.add_waiting_tasks(tasks); - ctx_server->queue_tasks.post(tasks); - - // get the result - std::unordered_set task_ids = server_task::get_list_id(tasks); - std::vector results(task_ids.size()); - - // Create a new HashMap instance - jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); - if (o_probabilities == nullptr) { - env->ThrowNew(c_llama_error, "Failed to create HashMap object."); - return nullptr; - } - - for (int i = 0; i < (int)task_ids.size(); i++) { - server_task_result_ptr result = ctx_server->queue_results.recv(task_ids); - if (result->is_error()) { - std::string response = result->to_json()["message"].get(); - for (const int id_task : task_ids) { - ctx_server->queue_results.remove_waiting_task_id(id_task); - } - env->ThrowNew(c_llama_error, response.c_str()); - return nullptr; - } - - const auto out_res = result->to_json(); - - if (result->is_stop()) { - for (const int id_task : task_ids) { - ctx_server->queue_results.remove_waiting_task_id(id_task); - } - } - - int index = out_res["index"].get(); - float score = out_res["score"].get(); - std::string tok_str = documentsArray[index]; - jstring jtok_str = env->NewStringUTF(tok_str.c_str()); - - jobject jprob = env->NewObject(c_float, cc_float, score); - env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); - env->DeleteLocalRef(jtok_str); - env->DeleteLocalRef(jprob); - } + + std::vector tasks; + const jsize argc = env->GetArrayLength(documents); + std::vector documentsArray = parse_string_array_for_rerank(env, documents, argc); + + std::vector tokenized_docs = tokenize_input_prompts(ctx_server->vocab, documentsArray, true, true); + + tasks.reserve(tokenized_docs.size()); + for (size_t i = 0; i < tokenized_docs.size(); i++) { + server_task task = server_task(SERVER_TASK_TYPE_RERANK); + task.id = ctx_server->queue_tasks.get_new_id(); + task.index = i; + task.prompt_tokens = format_rerank(ctx_server->vocab, tokenized_query, tokenized_docs[i]); + tasks.push_back(task); + } + ctx_server->queue_results.add_waiting_tasks(tasks); + ctx_server->queue_tasks.post(tasks); + + // get the result + std::unordered_set task_ids = server_task::get_list_id(tasks); + std::vector results(task_ids.size()); + + // Create a new HashMap instance + jobject o_probabilities = env->NewObject(c_hash_map, cc_hash_map); + if (o_probabilities == nullptr) { + env->ThrowNew(c_llama_error, "Failed to create HashMap object."); + return nullptr; + } + + for (int i = 0; i < (int)task_ids.size(); i++) { + server_task_result_ptr result = ctx_server->queue_results.recv(task_ids); + if (result->is_error()) { + std::string response = result->to_json()["message"].get(); + for (const int id_task : task_ids) { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + env->ThrowNew(c_llama_error, response.c_str()); + return nullptr; + } + + const auto out_res = result->to_json(); + + if (result->is_stop()) { + for (const int id_task : task_ids) { + ctx_server->queue_results.remove_waiting_task_id(id_task); + } + } + + int index = out_res["index"].get(); + float score = out_res["score"].get(); + std::string tok_str = documentsArray[index]; + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + + jobject jprob = env->NewObject(c_float, cc_float, score); + env->CallObjectMethod(o_probabilities, m_map_put, jtok_str, jprob); + env->DeleteLocalRef(jtok_str); + env->DeleteLocalRef(jprob); + } jbyteArray jbytes = parse_jbytes(env, prompt); - return env->NewObject(c_output, cc_output, jbytes, o_probabilities, true); - + return env->NewObject(c_output, cc_output, jbytes, o_probabilities, true); } -JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_applyTemplate(JNIEnv *env, jobject obj, jstring jparams){ - jlong server_handle = env->GetLongField(obj, f_model_pointer); +JNIEXPORT jstring JNICALL Java_de_kherud_llama_LlamaModel_applyTemplate(JNIEnv *env, jobject obj, jstring jparams) { + jlong server_handle = env->GetLongField(obj, f_model_pointer); auto *ctx_server = reinterpret_cast(server_handle); // NOLINT(*-no-int-to-ptr) std::string c_params = parse_jstring(env, jparams); json data = json::parse(c_params); - - json templateData = oaicompat_completion_params_parse(data, ctx_server->params_base.use_jinja, ctx_server->params_base.reasoning_format, ctx_server->chat_templates.get()); + + json templateData = + oaicompat_completion_params_parse(data, ctx_server->params_base.use_jinja, + ctx_server->params_base.reasoning_format, ctx_server->chat_templates.get()); std::string tok_str = templateData.at("prompt"); - jstring jtok_str = env->NewStringUTF(tok_str.c_str()); - - return jtok_str; + jstring jtok_str = env->NewStringUTF(tok_str.c_str()); + + return jtok_str; } JNIEXPORT jintArray JNICALL Java_de_kherud_llama_LlamaModel_encode(JNIEnv *env, jobject obj, jstring jprompt) { From 986bddf63bd294c37d903d14906bed25ba95d6e9 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:25:18 +0100 Subject: [PATCH 372/384] re-use parse_string_array for re-ranking --- src/main/cpp/jllama.cpp | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index b9436b7c..ac056b94 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -112,28 +112,6 @@ char **parse_string_array(JNIEnv *env, const jobjectArray string_array, const js return result; } -std::vector parse_string_array_for_rerank(JNIEnv *env, const jobjectArray string_array, - const jsize length) { - std::vector result; - result.reserve(length); // Reserve memory for efficiency - - for (jsize i = 0; i < length; i++) { - jstring javaString = static_cast(env->GetObjectArrayElement(string_array, i)); - if (javaString == nullptr) - continue; - - const char *cString = env->GetStringUTFChars(javaString, nullptr); - if (cString != nullptr) { - result.emplace_back(cString); // Add to vector - env->ReleaseStringUTFChars(javaString, cString); - } - - env->DeleteLocalRef(javaString); // Avoid memory leaks - } - - return result; -} - void free_string_array(char **array, jsize length) { if (array != nullptr) { for (jsize i = 0; i < length; i++) { @@ -720,17 +698,18 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jo const auto tokenized_query = tokenize_mixed(ctx_server->vocab, prompt, true, true); json responses = json::array(); - bool error = false; std::vector tasks; - const jsize argc = env->GetArrayLength(documents); - std::vector documentsArray = parse_string_array_for_rerank(env, documents, argc); + const jsize amount_documents = env->GetArrayLength(documents); + auto *document_array = parse_string_array(env, documents, amount_documents); + auto document_vector = std::vector(document_array, document_array + amount_documents); + free_string_array(document_array, amount_documents); - std::vector tokenized_docs = tokenize_input_prompts(ctx_server->vocab, documentsArray, true, true); + std::vector tokenized_docs = tokenize_input_prompts(ctx_server->vocab, document_vector, true, true); tasks.reserve(tokenized_docs.size()); - for (size_t i = 0; i < tokenized_docs.size(); i++) { - server_task task = server_task(SERVER_TASK_TYPE_RERANK); + for (int i = 0; i < tokenized_docs.size(); i++) { + auto task = server_task(SERVER_TASK_TYPE_RERANK); task.id = ctx_server->queue_tasks.get_new_id(); task.index = i; task.prompt_tokens = format_rerank(ctx_server->vocab, tokenized_query, tokenized_docs[i]); @@ -753,7 +732,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jo for (int i = 0; i < (int)task_ids.size(); i++) { server_task_result_ptr result = ctx_server->queue_results.recv(task_ids); if (result->is_error()) { - std::string response = result->to_json()["message"].get(); + auto response = result->to_json()["message"].get(); for (const int id_task : task_ids) { ctx_server->queue_results.remove_waiting_task_id(id_task); } @@ -771,7 +750,7 @@ JNIEXPORT jobject JNICALL Java_de_kherud_llama_LlamaModel_rerank(JNIEnv *env, jo int index = out_res["index"].get(); float score = out_res["score"].get(); - std::string tok_str = documentsArray[index]; + std::string tok_str = document_vector[index]; jstring jtok_str = env->NewStringUTF(tok_str.c_str()); jobject jprob = env->NewObject(c_float, cc_float, score); From 62cc40eff9e322815b2c750b95215b78597dc099 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:25:39 +0100 Subject: [PATCH 373/384] replace jackson with string builder --- pom.xml | 5 -- .../de/kherud/llama/InferenceParameters.java | 55 ++++++++++--------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index f4e1e45d..4982f405 100644 --- a/pom.xml +++ b/pom.xml @@ -65,11 +65,6 @@ 24.1.0 compile - - com.fasterxml.jackson.core - jackson-databind - 2.16.0 - diff --git a/src/main/java/de/kherud/llama/InferenceParameters.java b/src/main/java/de/kherud/llama/InferenceParameters.java index e868be0c..41f74cc9 100644 --- a/src/main/java/de/kherud/llama/InferenceParameters.java +++ b/src/main/java/de/kherud/llama/InferenceParameters.java @@ -4,10 +4,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - import de.kherud.llama.args.MiroStat; import de.kherud.llama.args.Sampler; @@ -16,10 +12,8 @@ * and * {@link LlamaModel#complete(InferenceParameters)}. */ +@SuppressWarnings("unused") public final class InferenceParameters extends JsonParameters { - - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); // Reusable ObjectMapper - private static final String PARAM_PROMPT = "prompt"; private static final String PARAM_INPUT_PREFIX = "input_prefix"; @@ -489,13 +483,8 @@ public InferenceParameters setSamplers(Sampler... samplers) { return this; } - InferenceParameters setStream(boolean stream) { - parameters.put(PARAM_STREAM, String.valueOf(stream)); - return this; - } - /** - * Set whether or not generate should apply a chat template (default: false) + * Set whether generate should apply a chat template (default: false) */ public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { parameters.put(PARAM_USE_JINJA, String.valueOf(useChatTemplate)); @@ -508,18 +497,22 @@ public InferenceParameters setUseChatTemplate(boolean useChatTemplate) { * - Allows **one or more** user/assistant messages. */ public InferenceParameters setMessages(String systemMessage, List> messages) { - ArrayNode messagesArray = OBJECT_MAPPER.createArrayNode(); + StringBuilder messagesBuilder = new StringBuilder(); + messagesBuilder.append("["); // Add system message (if provided) if (systemMessage != null && !systemMessage.isEmpty()) { - ObjectNode systemObj = OBJECT_MAPPER.createObjectNode(); - systemObj.put("role", "system"); - systemObj.put("content", systemMessage); - messagesArray.add(systemObj); + messagesBuilder.append("{\"role\": \"system\", \"content\": ") + .append(toJsonString(systemMessage)) + .append("}"); + if (!messages.isEmpty()) { + messagesBuilder.append(", "); + } } // Add user/assistant messages - for (Pair message : messages) { + for (int i = 0; i < messages.size(); i++) { + Pair message = messages.get(i); String role = message.getKey(); String content = message.getValue(); @@ -527,17 +520,27 @@ public InferenceParameters setMessages(String systemMessage, List Date: Tue, 18 Mar 2025 21:29:57 +0100 Subject: [PATCH 374/384] update readme code examples --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 32f555ea..1990aacf 100644 --- a/README.md +++ b/README.md @@ -94,8 +94,8 @@ public class Example { public static void main(String... args) throws IOException { ModelParameters modelParams = new ModelParameters() - .setModelFilePath("/path/to/model.gguf") - .setNGpuLayers(43); + .setModel("models/mistral-7b-instruct-v0.2.Q2_K.gguf") + .setGpuLayers(43); String system = "This is a conversation between User and Llama, a friendly chatbot.\n" + "Llama is helpful, kind, honest, good at writing, and never fails to answer any " + @@ -114,8 +114,8 @@ public class Example { InferenceParameters inferParams = new InferenceParameters(prompt) .setTemperature(0.7f) .setPenalizeNl(true) - .setMirostat(InferenceParameters.MiroStat.V2) - .setAntiPrompt("\n"); + .setMiroStat(MiroStat.V2) + .setStopStrings("User:"); for (LlamaOutput output : model.generate(inferParams)) { System.out.print(output); prompt += output; @@ -135,7 +135,7 @@ model to your prompt in order to extend the context. If there is repeated conten cache this, to improve performance. ```java -ModelParameters modelParams = new ModelParameters().setModelFilePath("/path/to/model.gguf"); +ModelParameters modelParams = new ModelParameters().setModel("/path/to/model.gguf"); InferenceParameters inferParams = new InferenceParameters("Tell me a joke."); try (LlamaModel model = new LlamaModel(modelParams)) { // Stream a response and access more information about each output. @@ -167,9 +167,8 @@ for every inference task. All non-specified options have sensible defaults. ```java ModelParameters modelParams = new ModelParameters() - .setModelFilePath("/path/to/model.gguf") - .setLoraAdapter("/path/to/lora/adapter") - .setLoraBase("/path/to/lora/base"); + .setModel("/path/to/model.gguf") + .addLoraAdapter("/path/to/lora/adapter"); String grammar = """ root ::= (expr "=" term "\\n")+ expr ::= term ([-+*/] term)* From 1ad2bf6840fb6a2033f9b9a717031d7ca0e26259 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:32:14 +0100 Subject: [PATCH 375/384] update to latest llama.cpp version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2278d454..8f402fa2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(LLAMA_BUILD_COMMON ON) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b4831 + GIT_TAG b4916 ) FetchContent_MakeAvailable(llama.cpp) From 56d7d2d3c5b8e9ed27c5367f383d2b9faf3f9cd4 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:44:17 +0100 Subject: [PATCH 376/384] update pom.xml version 4.0.0 -> 4.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4982f405..3916a9e7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ de.kherud llama - 4.0.0 + 4.1.0 jar ${project.groupId}:${project.artifactId} From 481714559fd5c80bad3a51edfa4c5887c0b528b3 Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Tue, 18 Mar 2025 21:54:26 +0100 Subject: [PATCH 377/384] update readme versions --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1990aacf..1bc278b1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![Java 11+](https://img.shields.io/badge/Java-11%2B-informational) -![llama.cpp b4831](https://img.shields.io/badge/llama.cpp-%23b4831-informational) +![llama.cpp b4916](https://img.shields.io/badge/llama.cpp-%23b4916-informational) # Java Bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) @@ -16,6 +16,9 @@ Inference of Meta's LLaMA model (and others) in pure C/C++. 2.3 [Infilling](#infilling) 3. [Android](#importing-in-android) +> [!NOTE] +> Now with support for Gemma 3 + ## Quick Start Access this library via Maven: @@ -24,7 +27,7 @@ Access this library via Maven: de.kherud llama - 4.0.0 + 4.1.0 ``` From d34c1a1db7ba116277a82539c267cca146458264 Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 28 Apr 2025 15:26:08 +0200 Subject: [PATCH 378/384] Fix the enums PoolingType and RopeScalingType and their calls in ModelParameters --- .../java/de/kherud/llama/ModelParameters.java | 6 +++-- .../de/kherud/llama/args/PoolingType.java | 24 +++++++++---------- .../de/kherud/llama/args/RopeScalingType.java | 24 +++++++++---------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/kherud/llama/ModelParameters.java b/src/main/java/de/kherud/llama/ModelParameters.java index e4947d4e..7999295d 100644 --- a/src/main/java/de/kherud/llama/ModelParameters.java +++ b/src/main/java/de/kherud/llama/ModelParameters.java @@ -459,7 +459,7 @@ public ModelParameters setJsonSchema(String schema) { * Set pooling type for embeddings (default: model default if unspecified). */ public ModelParameters setPoolingType(PoolingType type) { - parameters.put("--pooling", String.valueOf(type.getId())); + parameters.put("--pooling", type.getArgValue()); return this; } @@ -467,7 +467,7 @@ public ModelParameters setPoolingType(PoolingType type) { * Set RoPE frequency scaling method (default: linear unless specified by the model). */ public ModelParameters setRopeScaling(RopeScalingType type) { - parameters.put("--rope-scaling", String.valueOf(type.getId())); + parameters.put("--rope-scaling", type.getArgValue()); return this; } @@ -960,3 +960,5 @@ public ModelParameters enableJinja() { } } + + diff --git a/src/main/java/de/kherud/llama/args/PoolingType.java b/src/main/java/de/kherud/llama/args/PoolingType.java index a9c9dbae..c0379c85 100644 --- a/src/main/java/de/kherud/llama/args/PoolingType.java +++ b/src/main/java/de/kherud/llama/args/PoolingType.java @@ -2,20 +2,20 @@ public enum PoolingType { - UNSPECIFIED(-1), - NONE(0), - MEAN(1), - CLS(2), - LAST(3), - RANK(4); + UNSPECIFIED("unspecified"), + NONE("none"), + MEAN("mean"), + CLS("cls"), + LAST("last"), + RANK("rank"); - private final int id; + private final String argValue; - PoolingType(int value) { - this.id = value; + PoolingType(String value) { + this.argValue = value; } - public int getId() { - return id; + public String getArgValue() { + return argValue; } -} +} \ No newline at end of file diff --git a/src/main/java/de/kherud/llama/args/RopeScalingType.java b/src/main/java/de/kherud/llama/args/RopeScalingType.java index eed939a1..138d05be 100644 --- a/src/main/java/de/kherud/llama/args/RopeScalingType.java +++ b/src/main/java/de/kherud/llama/args/RopeScalingType.java @@ -2,20 +2,20 @@ public enum RopeScalingType { - UNSPECIFIED(-1), - NONE(0), - LINEAR(1), - YARN2(2), - LONGROPE(3), - MAX_VALUE(3); + UNSPECIFIED("unspecified"), + NONE("none"), + LINEAR("linear"), + YARN2("yarn"), + LONGROPE("longrope"), + MAX_VALUE("maxvalue"); - private final int id; + private final String argValue; - RopeScalingType(int value) { - this.id = value; + RopeScalingType(String value) { + this.argValue = value; } - public int getId() { - return id; + public String getArgValue() { + return argValue; } -} +} \ No newline at end of file From b17e212d0a71c100ff9925b1bcf09d44093a7b57 Mon Sep 17 00:00:00 2001 From: prabhdatnoor <--get> Date: Wed, 7 May 2025 22:40:12 -0400 Subject: [PATCH 379/384] change os name to darwin --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f402fa2..b95d4ea9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,7 @@ endif() # include jni.h and jni_md.h if(NOT DEFINED JNI_INCLUDE_DIRS) - if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Mac") + if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Darwin") set(JNI_INCLUDE_DIRS .github/include/unix) elseif(OS_NAME STREQUAL "Windows") set(JNI_INCLUDE_DIRS .github/include/windows) From a850c2ba1c3bbdedb0ec0c556615bab87e5b0f7a Mon Sep 17 00:00:00 2001 From: prabhdatnoor <--get> Date: Sat, 10 May 2025 17:12:57 -0400 Subject: [PATCH 380/384] also add Mac for arm mac support --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b95d4ea9..96c62950 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,7 @@ endif() # include jni.h and jni_md.h if(NOT DEFINED JNI_INCLUDE_DIRS) - if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Darwin") + if(OS_NAME MATCHES "^Linux" OR OS_NAME STREQUAL "Mac" OR OS_NAME STREQUAL "Darwin") set(JNI_INCLUDE_DIRS .github/include/unix) elseif(OS_NAME STREQUAL "Windows") set(JNI_INCLUDE_DIRS .github/include/windows) From 31b08480f36dec728de8cb5d10f11bb158a2c1cd Mon Sep 17 00:00:00 2001 From: Holger Voormann Date: Mon, 19 May 2025 20:13:13 +0200 Subject: [PATCH 381/384] OSInfo: Update link to Java bug #8005545 In a comment, update the link to Java bug #8005545, as the current one leads to a webpage saying: "This bug is not available." --- src/main/java/de/kherud/llama/OSInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/kherud/llama/OSInfo.java b/src/main/java/de/kherud/llama/OSInfo.java index 772aeaef..9354ec2f 100644 --- a/src/main/java/de/kherud/llama/OSInfo.java +++ b/src/main/java/de/kherud/llama/OSInfo.java @@ -200,7 +200,7 @@ else if (armType.startsWith("aarch64")) { } // Java 1.8 introduces a system property to determine armel or armhf - // http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8005545 + // https://bugs.openjdk.org/browse/JDK-8005545 String abi = System.getProperty("sun.arch.abi"); if (abi != null && abi.startsWith("gnueabihf")) { return "armv7"; From 711990c1544a2a923453721073a6ae6ed1bd2a65 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Fri, 20 Jun 2025 18:23:34 +0000 Subject: [PATCH 382/384] remove unused code --- src/main/cpp/server.hpp | 148 ---------------------------------------- 1 file changed, 148 deletions(-) diff --git a/src/main/cpp/server.hpp b/src/main/cpp/server.hpp index 66169a83..9686f2af 100644 --- a/src/main/cpp/server.hpp +++ b/src/main/cpp/server.hpp @@ -3269,151 +3269,3 @@ struct server_context { }; } }; - -static void common_params_handle_model_default(std::string &model, const std::string &model_url, std::string &hf_repo, - std::string &hf_file, const std::string &hf_token) { - if (!hf_repo.empty()) { - // short-hand to avoid specifying --hf-file -> default it to --model - if (hf_file.empty()) { - if (model.empty()) { - auto auto_detected = common_get_hf_file(hf_repo, hf_token); - if (auto_detected.first.empty() || auto_detected.second.empty()) { - exit(1); // built without CURL, error message already printed - } - hf_repo = auto_detected.first; - hf_file = auto_detected.second; - } else { - hf_file = model; - } - } - // make sure model path is present (for caching purposes) - if (model.empty()) { - // this is to avoid different repo having same file name, or same file name in different subdirs - std::string filename = hf_repo + "_" + hf_file; - // to make sure we don't have any slashes in the filename - string_replace_all(filename, "/", "_"); - model = fs_get_cache_file(filename); - } - } else if (!model_url.empty()) { - if (model.empty()) { - auto f = string_split(model_url, '#').front(); - f = string_split(f, '?').front(); - model = fs_get_cache_file(string_split(f, '/').back()); - } - } else if (model.empty()) { - model = DEFAULT_MODEL_PATH; - } -} - -// parse the given jparams (see de.kherud.llama.args.ModelParameters#toString()) from JSON to the required C++ struct. -static void server_params_parse(json jparams, common_params ¶ms) { - common_params default_params; - - params.sampling.seed = json_value(jparams, "seed", default_params.sampling.seed); - params.cpuparams.n_threads = json_value(jparams, "n_threads", default_params.cpuparams.n_threads); - params.speculative.cpuparams.n_threads = - json_value(jparams, "n_threads_draft", default_params.speculative.cpuparams.n_threads); - params.cpuparams_batch.n_threads = json_value(jparams, "n_threads_batch", default_params.cpuparams_batch.n_threads); - params.speculative.cpuparams_batch.n_threads = - json_value(jparams, "n_threads_batch_draft", default_params.speculative.cpuparams_batch.n_threads); - params.n_predict = json_value(jparams, "n_predict", default_params.n_predict); - params.n_ctx = json_value(jparams, "n_ctx", default_params.n_ctx); - params.n_batch = json_value(jparams, "n_batch", default_params.n_batch); - params.n_ubatch = json_value(jparams, "n_ubatch", default_params.n_ubatch); - params.n_keep = json_value(jparams, "n_keep", default_params.n_keep); - - params.speculative.n_max = json_value(jparams, "n_draft", default_params.speculative.n_max); - params.speculative.n_min = json_value(jparams, "n_draft_min", default_params.speculative.n_min); - - params.n_chunks = json_value(jparams, "n_chunks", default_params.n_chunks); - params.n_parallel = json_value(jparams, "n_parallel", default_params.n_parallel); - params.n_sequences = json_value(jparams, "n_sequences", default_params.n_sequences); - params.speculative.p_split = json_value(jparams, "p_split", default_params.speculative.p_split); - params.grp_attn_n = json_value(jparams, "grp_attn_n", default_params.grp_attn_n); - params.grp_attn_w = json_value(jparams, "grp_attn_w", default_params.grp_attn_w); - params.n_print = json_value(jparams, "n_print", default_params.n_print); - params.rope_freq_base = json_value(jparams, "rope_freq_base", default_params.rope_freq_base); - params.rope_freq_scale = json_value(jparams, "rope_freq_scale", default_params.rope_freq_scale); - params.yarn_ext_factor = json_value(jparams, "yarn_ext_factor", default_params.yarn_ext_factor); - params.yarn_attn_factor = json_value(jparams, "yarn_attn_factor", default_params.yarn_attn_factor); - params.yarn_beta_fast = json_value(jparams, "yarn_beta_fast", default_params.yarn_beta_fast); - params.yarn_beta_slow = json_value(jparams, "yarn_beta_slow", default_params.yarn_beta_slow); - params.yarn_orig_ctx = json_value(jparams, "yarn_orig_ctx", default_params.yarn_orig_ctx); - params.defrag_thold = json_value(jparams, "defrag_thold", default_params.defrag_thold); - params.numa = json_value(jparams, "numa", default_params.numa); - params.rope_scaling_type = json_value(jparams, "rope_scaling_type", default_params.rope_scaling_type); - params.pooling_type = json_value(jparams, "pooling_type", default_params.pooling_type); - params.model = json_value(jparams, "model", default_params.model); - params.speculative.model = json_value(jparams, "model_draft", default_params.speculative.model); - params.model_alias = json_value(jparams, "model_alias", default_params.model_alias); - params.model_url = json_value(jparams, "model_url", default_params.model_url); - params.hf_repo = json_value(jparams, "hf_repo", default_params.hf_repo); - params.hf_file = json_value(jparams, "hf_file", default_params.hf_file); - params.prompt = json_value(jparams, "prompt", default_params.prompt); - params.prompt_file = json_value(jparams, "prompt_file", default_params.prompt_file); - params.path_prompt_cache = json_value(jparams, "path_prompt_cache", default_params.path_prompt_cache); - params.input_prefix = json_value(jparams, "input_prefix", default_params.input_prefix); - params.input_suffix = json_value(jparams, "input_suffix", default_params.input_suffix); - params.antiprompt = json_value(jparams, "antiprompt", default_params.antiprompt); - params.lookup_cache_static = json_value(jparams, "lookup_cache_static", default_params.lookup_cache_static); - params.lookup_cache_dynamic = json_value(jparams, "lookup_cache_dynamic", default_params.lookup_cache_dynamic); - params.logits_file = json_value(jparams, "logits_file", default_params.logits_file); - // params.lora_adapters = json_value(jparams, "lora_adapter", default_params.lora_adapters); - params.embedding = json_value(jparams, "embedding", default_params.embedding); - params.escape = json_value(jparams, "escape", default_params.escape); - params.cont_batching = json_value(jparams, "cont_batching", default_params.cont_batching); - params.flash_attn = json_value(jparams, "flash_attn", default_params.flash_attn); - params.input_prefix_bos = json_value(jparams, "input_prefix_bos", default_params.input_prefix_bos); - params.sampling.ignore_eos = json_value(jparams, "ignore_eos", default_params.sampling.ignore_eos); - params.use_mmap = json_value(jparams, "use_mmap", default_params.use_mmap); - params.use_mlock = json_value(jparams, "use_mlock", default_params.use_mlock); - params.no_kv_offload = json_value(jparams, "no_kv_offload", default_params.no_kv_offload); - params.chat_template = json_value(jparams, "chat_template", default_params.chat_template); - - if (jparams.contains("n_gpu_layers")) { - if (llama_supports_gpu_offload()) { - params.n_gpu_layers = json_value(jparams, "n_gpu_layers", default_params.n_gpu_layers); - params.speculative.n_gpu_layers = - json_value(jparams, "n_gpu_layers_draft", default_params.speculative.n_gpu_layers); - } else { - SRV_WRN("Not compiled with GPU offload support, --n-gpu-layers option will be ignored. " - "See main README.md for information on enabling GPU BLAS support: %s = %d", - "n_gpu_layers", params.n_gpu_layers); - } - } - - if (jparams.contains("split_mode")) { - params.split_mode = json_value(jparams, "split_mode", default_params.split_mode); -// todo: the definition checks here currently don't work due to cmake visibility reasons -#ifndef GGML_USE_CUDA - fprintf(stderr, "warning: llama.cpp was compiled without CUDA. Setting the split mode has no effect.\n"); -#endif - } - - if (jparams.contains("tensor_split")) { -#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - std::vector tensor_split = jparams["tensor_split"].get>(); - GGML_ASSERT(tensor_split.size() <= llama_max_devices()); - - for (size_t i_device = 0; i_device < llama_max_devices(); ++i_device) { - if (i_device < tensor_split.size()) { - params.tensor_split[i_device] = tensor_split.at(i_device); - } else { - params.tensor_split[i_device] = 0.0f; - } - } -#else - SRV_WRN("%s", "llama.cpp was compiled without CUDA. It is not possible to set a tensor split.\n"); -#endif // GGML_USE_CUDA - } - - if (jparams.contains("main_gpu")) { -#if defined(GGML_USE_CUDA) || defined(GGML_USE_SYCL) - params.main_gpu = json_value(jparams, "main_gpu", default_params.main_gpu); -#else - SRV_WRN("%s", "llama.cpp was compiled without CUDA. It is not possible to set a main GPU."); -#endif - } - - common_params_handle_model_default(params.model, params.model_url, params.hf_repo, params.hf_file, params.hf_token); -} From 1aa872a2329d8efe4b85cb5ed80f9ab7b7df754a Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Fri, 20 Jun 2025 18:24:35 +0000 Subject: [PATCH 383/384] remove duplicated code common_chat_templates_init is already done at end of load_model in server.hpp --- src/main/cpp/jllama.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/main/cpp/jllama.cpp b/src/main/cpp/jllama.cpp index ac056b94..11c80ae0 100644 --- a/src/main/cpp/jllama.cpp +++ b/src/main/cpp/jllama.cpp @@ -452,16 +452,6 @@ JNIEXPORT void JNICALL Java_de_kherud_llama_LlamaModel_loadModel(JNIEnv *env, jo llama_init_dft.context.reset(); } - ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, params.chat_template); - try { - common_chat_format_example(ctx_server->chat_templates.get(), params.use_jinja); - } catch (const std::exception &e) { - SRV_WRN("%s: The chat template that comes with this model is not yet supported, falling back to chatml. This " - "may cause the model to output suboptimal responses\n", - __func__); - ctx_server->chat_templates = common_chat_templates_init(ctx_server->model, "chatml"); - } - // print sample chat example to make it clear which template is used LOG_INF("%s: chat template, chat_template: %s, example_format: '%s'\n", __func__, common_chat_templates_source(ctx_server->chat_templates.get()), @@ -860,4 +850,4 @@ JNIEXPORT jbyteArray JNICALL Java_de_kherud_llama_LlamaModel_jsonSchemaToGrammar nlohmann::ordered_json c_schema_json = nlohmann::ordered_json::parse(c_schema); const std::string c_grammar = json_schema_to_grammar(c_schema_json); return parse_jbytes(env, c_grammar); -} \ No newline at end of file +} From 49be66475700487e9ae9be5ba1d22b5855bb0d1c Mon Sep 17 00:00:00 2001 From: Konstantin Herud Date: Fri, 20 Jun 2025 21:25:39 +0200 Subject: [PATCH 384/384] bump pom.xml version 4.1.0 -> 4.20 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3916a9e7..67b366ee 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ de.kherud llama - 4.1.0 + 4.2.0 jar ${project.groupId}:${project.artifactId}
  • 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⪚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⪚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

    N|z{^nM-?P#U!T1wB~te`El|IN93^#v1srNAvUa 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