From b871a556d7a2b3086e2e70ca254bb742e4f99021 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 12:13:04 +0100 Subject: [PATCH 01/22] Init framebuffer using render size (should be same as currentFbo) --- src/rcore.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index 49a928372..97a6cce0e 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -682,8 +682,6 @@ void InitWindow(int width, int height, const char *title) // Initialize window data CORE.Window.screen.width = width; CORE.Window.screen.height = height; - CORE.Window.currentFbo.width = CORE.Window.screen.width; - CORE.Window.currentFbo.height = CORE.Window.screen.height; CORE.Window.eventWaiting = false; CORE.Window.screenScale = MatrixIdentity(); // No draw scaling required by default @@ -709,10 +707,10 @@ void InitWindow(int width, int height, const char *title) // Initialize rlgl default data (buffers and shaders) // NOTE: Current fbo size stored as globals in rlgl for convenience - rlglInit(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height); + rlglInit(CORE.Window.render.width, CORE.Window.render.height); // Setup default viewport - SetupViewport(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height); + SetupViewport(CORE.Window.render.width, CORE.Window.render.height); #if defined(SUPPORT_MODULE_RTEXT) #if defined(SUPPORT_DEFAULT_FONT) From 4678a544b6f74753755c09291c63215bb37fc535 Mon Sep 17 00:00:00 2001 From: paddy <0xPD33@proton.me> Date: Tue, 17 Feb 2026 12:43:52 +0100 Subject: [PATCH 02/22] [rcore][glfw] Fix window scaling on Wayland with GLFW 3.4+ (#5564) * Fix window scaling on Wayland with GLFW 3.4+ display scaling GLFW 3.4 defaults GLFW_SCALE_FRAMEBUFFER to TRUE on all platforms, causing framebuffer/window size mismatch on Wayland with display scaling (content renders in a subset of the window, mouse coordinates are wrong). Three fixes: - Disable GLFW_SCALE_FRAMEBUFFER on Wayland when FLAG_WINDOW_HIGHDPI is not set, restoring 1:1 window-to-framebuffer mapping - With FLAG_WINDOW_HIGHDPI, read actual framebuffer size from GLFW instead of resizing the window (which double-scales on Wayland where GLFW_SCALE_TO_MONITOR has no effect) - Skip mouse coordinate scaling on Wayland since GLFW already reports coordinates in logical (window) space Tested on NixOS/Niri with GLFW 3.4 at 1x, 1.5x, and 2x scaling. Fixes #5504 * Fix fullscreen and borderless windowed scaling on Wayland with HiDPI ToggleFullscreen and ToggleBorderlessWindowed exit paths manually scale screen size by DPI before passing to glfwSetWindowMonitor, which double-scales on Wayland where GLFW_SCALE_FRAMEBUFFER already handles it. Skip the manual resize on Wayland. Also fix FramebufferSizeCallback fullscreen branch: on Wayland with GLFW_SCALE_FRAMEBUFFER the framebuffer is still scaled in fullscreen, so use the logical window size as screen size and derive screenScale from the framebuffer/window ratio. Fixes #5504 * Apply style fixes from code review: remove duplicate screenScale assignment, collapse single-statement ifs to one line, remove trailing periods from comments --- src/platforms/rcore_desktop_glfw.c | 56 +++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 68a321ffd..4cb3726e1 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -221,7 +221,9 @@ void ToggleFullscreen(void) #if !defined(__APPLE__) // Make sure to restore render size considering HighDPI scaling - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && + (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -300,7 +302,9 @@ void ToggleBorderlessWindowed(void) #if !defined(__APPLE__) // Make sure to restore size considering HighDPI scaling - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && + (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -1465,6 +1469,8 @@ int InitPlatform(void) #if defined(__APPLE__) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); #endif + // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, causing framebuffer/window size mismatch on Wayland with display scaling + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); } // Mouse passthrough @@ -1663,15 +1669,23 @@ int InitPlatform(void) // NOTE: On APPLE platforms system manage window and input scaling // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); - // Screen scaling matrix is required in case desired screen area is different from display area - CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); - #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) + { + // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size instead of resizing the window (which would double-scale) + int fbWidth, fbHeight; + glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + CORE.Window.render.width = fbWidth; + CORE.Window.render.height = fbHeight; + } + else + { + // Mouse input scaling for the new screen size + SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); - // Force window size (and framebuffer) refresh - glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); + // Force window size (and framebuffer) refresh + glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); + } #endif } else CORE.Window.render = CORE.Window.screen; @@ -1855,6 +1869,22 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.height = height; CORE.Window.screenScale = MatrixScale(1.0f, 1.0f, 1.0f); SetMouseScale(1.0f, 1.0f); + + // On Wayland with GLFW_SCALE_FRAMEBUFFER, the framebuffer is still scaled in fullscreen, use logical window size as screen and apply screenScale + if ((glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) && + FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + { + int winWidth, winHeight; + glfwGetWindowSize(platform.handle, &winWidth, &winHeight); + if ((winWidth != width) || (winHeight != height)) + { + CORE.Window.screen.width = winWidth; + CORE.Window.screen.height = winHeight; + float scaleX = (float)width/winWidth; + float scaleY = (float)height/winHeight; + CORE.Window.screenScale = MatrixScale(scaleX, scaleY, 1.0f); + } + } } else // Window mode (including borderless window) { @@ -1867,8 +1897,8 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.height = (int)((float)height/scaleDpi.y); CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); + // On Wayland, mouse coords are already in logical space + if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); #endif } else @@ -1897,8 +1927,8 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f); #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scalex, 1.0f/scaley); + // On Wayland, mouse coords are already in logical space + if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scalex, 1.0f/scaley); #endif } From 5bbb2fc1df612d48f53e23c586779ae383b8725d Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 13:22:11 +0100 Subject: [PATCH 03/22] REVIEWED: Wayland checks, using compilation flags when possible #5564 --- src/platforms/rcore_desktop_glfw.c | 46 ++++++++++++++++++------------ 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 4cb3726e1..af3e6b6c1 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -219,11 +219,10 @@ void ToggleFullscreen(void) // and considered by GetWindowScaleDPI() FLAG_CLEAR(CORE.Window.flags, FLAG_FULLSCREEN_MODE); -#if !defined(__APPLE__) +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) // Make sure to restore render size considering HighDPI scaling // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && - (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -300,11 +299,10 @@ void ToggleBorderlessWindowed(void) glfwSetWindowAttrib(platform.handle, GLFW_DECORATED, GLFW_TRUE); FLAG_CLEAR(CORE.Window.flags, FLAG_WINDOW_UNDECORATED); - #if !defined(__APPLE__) + #if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) // Make sure to restore size considering HighDPI scaling // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && - (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -1469,8 +1467,11 @@ int InitPlatform(void) #if defined(__APPLE__) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); #endif - // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, causing framebuffer/window size mismatch on Wayland with display scaling - if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); +#if defined(_GLFW_WAYLAND) && !defined(_GLFW_X11) + // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, + // causing framebuffer/window size mismatch on Wayland with display scaling + glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); +#endif } // Mouse passthrough @@ -1672,9 +1673,12 @@ int InitPlatform(void) #if !defined(__APPLE__) if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) { - // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size instead of resizing the window (which would double-scale) - int fbWidth, fbHeight; + // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size + // instead of resizing the window (which would double-scale) + int fbWidth = 0; + int fbHeight = 0; glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + CORE.Window.render.width = fbWidth; CORE.Window.render.height = fbHeight; } @@ -1871,20 +1875,24 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) SetMouseScale(1.0f, 1.0f); // On Wayland with GLFW_SCALE_FRAMEBUFFER, the framebuffer is still scaled in fullscreen, use logical window size as screen and apply screenScale - if ((glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) && - FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) +#if defined(_GLFW_WAYLAND) && !defined(_GLFW_X11) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { - int winWidth, winHeight; + int winWidth = 0; + int winHeight = 0; glfwGetWindowSize(platform.handle, &winWidth, &winHeight); + if ((winWidth != width) || (winHeight != height)) { CORE.Window.screen.width = winWidth; CORE.Window.screen.height = winHeight; float scaleX = (float)width/winWidth; float scaleY = (float)height/winHeight; + CORE.Window.screenScale = MatrixScale(scaleX, scaleY, 1.0f); } } +#endif } else // Window mode (including borderless window) { @@ -1896,9 +1904,9 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.width = (int)((float)width/scaleDpi.x); CORE.Window.screen.height = (int)((float)height/scaleDpi.y); CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); -#if !defined(__APPLE__) - // On Wayland, mouse coords are already in logical space - if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) + // On macOS and Linux-Wayland, mouse coords are already in logical space + SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); #endif } else @@ -1926,9 +1934,9 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f); -#if !defined(__APPLE__) - // On Wayland, mouse coords are already in logical space - if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scalex, 1.0f/scaley); +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) + // On macOS and Linux-Wayland, mouse coords are already in logical space + SetMouseScale(1.0f/scalex, 1.0f/scaley); #endif } From 4311df1e6d5632d718fb6b14f5d4b72ce6b7744f Mon Sep 17 00:00:00 2001 From: dmitrii-brand <114125495+dmitrii-brand@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:43:46 +0000 Subject: [PATCH 04/22] Add bone blending animation example (#5543) - Demonstrates per-bone animation blending for smooth transitions - Supports upper/lower body selective blending (walk + attack) - Includes uniform blending mode for comparison - Uses GPU skinning for performance - Follows raylib example conventions --- examples/examples_list.txt | 1 + .../models/models_animation_bone_blending.c | 291 ++++++++++++++++++ 2 files changed, 292 insertions(+) create mode 100644 examples/models/models_animation_bone_blending.c diff --git a/examples/examples_list.txt b/examples/examples_list.txt index eda62ee13..f4cfa0e47 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -163,6 +163,7 @@ models;models_heightmap_rendering;★☆☆☆;1.8;3.5;2015;2025;"Ramon Santamar models;models_skybox_rendering;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 models;models_textured_cube;★★☆☆;4.5;4.5;2022;2025;"Ramon Santamaria";@raysan5 models;models_animation_gpu_skinning;★★★☆;4.5;4.5;2024;2025;"Daniel Holden";@orangeduck +models;models_animation_bone_blending;★★★★;5.5;5.5;2025;2025;"[Your Name]";@[your_github] models;models_bone_socket;★★★★;4.5;4.5;2024;2025;"iP";@ipzaur models;models_tesseract_view;★★☆☆;5.6-dev;5.6-dev;2024;2025;"Timothy van der Valk";@arceryz models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle diff --git a/examples/models/models_animation_bone_blending.c b/examples/models/models_animation_bone_blending.c new file mode 100644 index 000000000..ea6827762 --- /dev/null +++ b/examples/models/models_animation_bone_blending.c @@ -0,0 +1,291 @@ +/******************************************************************************************* +* +* raylib [models] example - animation bone blending +* +* Example complexity rating: [★★★★] 4/4 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.5 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* This example demonstrates per-bone animation blending, allowing smooth transitions +* between two animations by interpolating bone transforms. This is useful for: +* - Blending movement animations (walk/run) with action animations (jump/attack) +* - Creating smooth animation transitions +* - Layering animations (e.g., upper body attack while lower body walks) +* +* Note: Due to limitations in the Apple OpenGL driver, GPU skinning does not work on MacOS +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" +#include // For memcpy +#include // For NULL + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +//------------------------------------------------------------------------------------ +// Check if a bone is part of upper body (for selective blending) +//------------------------------------------------------------------------------------ +bool IsUpperBodyBone(const char *boneName) +{ + // Common upper body bone names (adjust based on your model) + if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || + TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || + TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || + TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || + TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || + TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || + TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || + TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) + { + return true; + } + + // Check if bone name contains upper body keywords + if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || + strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || + strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || + strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) + { + return true; + } + + return false; +} + +//------------------------------------------------------------------------------------ +// Blend two animations per-bone with selective upper/lower body blending +//------------------------------------------------------------------------------------ +void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) +{ + // Clamp blend factor to [0, 1] + blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); + + // Validate inputs + if (anim1->boneCount == 0 || anim1->framePoses == NULL || + anim2->boneCount == 0 || anim2->framePoses == NULL || + model->boneCount == 0 || model->bindPose == NULL) + { + return; + } + + // Ensure frame indices are valid + if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; + if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; + if (frame1 < 0) frame1 = 0; + if (frame2 < 0) frame2 = 0; + + // Find first mesh with bones + int firstMeshWithBones = -1; + for (int i = 0; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + firstMeshWithBones = i; + break; + } + } + + if (firstMeshWithBones == -1) return; + + // Get bone count (use minimum of all to be safe) + int boneCount = model->boneCount; + if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; + if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; + + // Blend each bone + for (int boneId = 0; boneId < boneCount; boneId++) + { + // Determine blend factor for this bone + float boneBlendFactor = blendFactor; + + // If upper body blending is enabled, use different blend factors for upper vs lower body + if (upperBodyBlend) + { + const char *boneName = model->bones[boneId].name; + bool isUpperBody = IsUpperBodyBone(boneName); + + // Upper body: use anim2 (attack), Lower body: use anim1 (walk) + // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) + if (isUpperBody) + { + // Upper body: blend towards anim2 (attack) + boneBlendFactor = blendFactor; + } + else + { + // Lower body: blend towards anim1 (walk) - invert the blend + boneBlendFactor = 1.0f - blendFactor; + } + } + + // Get transforms from both animations + Transform *bindTransform = &model->bindPose[boneId]; + Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; + Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; + + // Blend the transforms + Transform blended; + blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); + blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); + blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); + + // Convert bind pose to matrix + Matrix bindMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), + QuaternionToMatrix(bindTransform->rotation)), + MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); + + // Convert blended transform to matrix + Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), + QuaternionToMatrix(blended.rotation)), + MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); + + // Calculate final bone matrix (similar to UpdateModelAnimationBones) + model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); + } + + // Copy bone matrices to remaining meshes + for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + memcpy(model->meshes[i].boneMatrices, + model->meshes[firstMeshWithBones].boneMatrices, + model->meshes[i].boneCount * sizeof(model->meshes[i].boneMatrices[0])); + } + } +} + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [models] example - animation bone blending"); + + // Define the camera to look into our 3d world + Camera camera = { 0 }; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + + // Load gltf model + Model characterModel = LoadModel("resources/models/gltf/greenman.glb"); + + // Load skinning shader + Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), + TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); + + characterModel.materials[1].shader = skinningShader; + + // Load gltf model animations + int animsCount = 0; + ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/greenman.glb", &animsCount); + + // Log all available animations for debugging + TraceLog(LOG_INFO, "Found %d animations:", animsCount); + for (int i = 0; i < animsCount; i++) + { + TraceLog(LOG_INFO, " Animation %d: %s (%d frames)", i, modelAnimations[i].name, modelAnimations[i].frameCount); + } + + // Use specific indices: walk/move = 2, attack = 3 + unsigned int animIndex1 = 2; // Walk/Move animation (index 2) + unsigned int animIndex2 = 3; // Attack animation (index 3) + unsigned int animCurrentFrame1 = 0; + unsigned int animCurrentFrame2 = 0; + + // Validate indices + if (animIndex1 >= animsCount) animIndex1 = 0; + if (animIndex2 >= animsCount) animIndex2 = (animsCount > 1) ? 1 : 0; + + TraceLog(LOG_INFO, "Using Walk (index %d): %s", animIndex1, modelAnimations[animIndex1].name); + TraceLog(LOG_INFO, "Using Attack (index %d): %s", animIndex2, modelAnimations[animIndex2].name); + + Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position + bool upperBodyBlend = true; // Toggle: true = upper/lower body blending, false = uniform blending (50/50) + + DisableCursor(); // Limit cursor to relative movement inside the window + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + UpdateCamera(&camera, CAMERA_THIRD_PERSON); + + // Toggle upper/lower body blending mode (SPACE key) + if (IsKeyPressed(KEY_SPACE)) upperBodyBlend = !upperBodyBlend; + + // Update animation frames + ModelAnimation anim1 = modelAnimations[animIndex1]; + ModelAnimation anim2 = modelAnimations[animIndex2]; + + animCurrentFrame1 = (animCurrentFrame1 + 1) % anim1.frameCount; + animCurrentFrame2 = (animCurrentFrame2 + 1) % anim2.frameCount; + + // Blend the two animations + characterModel.transform = MatrixTranslate(position.x, position.y, position.z); + // When upperBodyBlend is ON: upper body = attack (1.0), lower body = walk (0.0) + // When upperBodyBlend is OFF: uniform blend at 0.5 (50% walk, 50% attack) + float blendFactor = upperBodyBlend ? 1.0f : 0.5f; + BlendModelAnimationsBones(&characterModel, &anim1, animCurrentFrame1, &anim2, animCurrentFrame2, blendFactor, upperBodyBlend); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + + // Draw character mesh, pose calculation is done in shader (GPU skinning) + DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform); + + DrawGrid(10, 1.0f); + + EndMode3D(); + + // Draw UI + DrawText("BONE BLENDING EXAMPLE", 10, 10, 20, DARKGRAY); + DrawText(TextFormat("Walk (Animation 2): %s", anim1.name), 10, 35, 10, GRAY); + DrawText(TextFormat("Attack (Animation 3): %s", anim2.name), 10, 50, 10, GRAY); + DrawText(TextFormat("Mode: %s", upperBodyBlend ? "Upper/Lower Body Blending" : "Uniform Blending"), 10, 65, 10, GRAY); + DrawText("SPACE - Toggle blending mode", 10, GetScreenHeight() - 20, 10, DARKGRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation + UnloadModel(characterModel); // Unload model and meshes/material + UnloadShader(skinningShader); // Unload GPU skinning shader + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} From 95edeeccd27c1cafb2241237415da28cc6dce6f0 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:17:14 +0100 Subject: [PATCH 05/22] REVIEWED: example: `models_animation_bone_blending` --- examples/examples_list.txt | 1 - .../models/models_animation_bone_blending.c | 297 +++++++++--------- 2 files changed, 151 insertions(+), 147 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index f4cfa0e47..eda62ee13 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -163,7 +163,6 @@ models;models_heightmap_rendering;★☆☆☆;1.8;3.5;2015;2025;"Ramon Santamar models;models_skybox_rendering;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 models;models_textured_cube;★★☆☆;4.5;4.5;2022;2025;"Ramon Santamaria";@raysan5 models;models_animation_gpu_skinning;★★★☆;4.5;4.5;2024;2025;"Daniel Holden";@orangeduck -models;models_animation_bone_blending;★★★★;5.5;5.5;2025;2025;"[Your Name]";@[your_github] models;models_bone_socket;★★★★;4.5;4.5;2024;2025;"iP";@ipzaur models;models_tesseract_view;★★☆☆;5.6-dev;5.6-dev;2024;2025;"Timothy van der Valk";@arceryz models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle diff --git a/examples/models/models_animation_bone_blending.c b/examples/models/models_animation_bone_blending.c index ea6827762..11e05a305 100644 --- a/examples/models/models_animation_bone_blending.c +++ b/examples/models/models_animation_bone_blending.c @@ -6,23 +6,29 @@ * * Example originally created with raylib 5.5, last time updated with raylib 5.5 * +* This example demonstrates per-bone animation blending, allowing smooth transitions +* between two animations by interpolating bone transforms. This is useful for: +* - Blending movement animations (walk/run) with action animations (jump/attack) +* - Creating smooth animation transitions +* - Layering animations (e.g., upper body attack while lower body walks) +* +* Example contributed by dmitrii-brand (@dmitrii-brand) and reviewed by Ramon Santamaria (@raysan5) +* +* NOTE: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS +* * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software * -* This example demonstrates per-bone animation blending, allowing smooth transitions -* between two animations by interpolating bone transforms. This is useful for: -* - Blending movement animations (walk/run) with action animations (jump/attack) -* - Creating smooth animation transitions -* - Layering animations (e.g., upper body attack while lower body walks) -* -* Note: Due to limitations in the Apple OpenGL driver, GPU skinning does not work on MacOS +* Copyright (c) 2026 dmitrii-brand (@dmitrii-brand) * ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" -#include // For memcpy -#include // For NULL + +#include // Required for: memcpy() +#include // Required for: NULL #if defined(PLATFORM_DESKTOP) #define GLSL_VERSION 330 @@ -31,140 +37,11 @@ #endif //------------------------------------------------------------------------------------ -// Check if a bone is part of upper body (for selective blending) +// Module Functions Declaration //------------------------------------------------------------------------------------ -bool IsUpperBodyBone(const char *boneName) -{ - // Common upper body bone names (adjust based on your model) - if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || - TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || - TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || - TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || - TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || - TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || - TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || - TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) - { - return true; - } - - // Check if bone name contains upper body keywords - if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || - strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || - strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || - strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) - { - return true; - } - - return false; -} - -//------------------------------------------------------------------------------------ -// Blend two animations per-bone with selective upper/lower body blending -//------------------------------------------------------------------------------------ -void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, - ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) -{ - // Clamp blend factor to [0, 1] - blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); - - // Validate inputs - if (anim1->boneCount == 0 || anim1->framePoses == NULL || - anim2->boneCount == 0 || anim2->framePoses == NULL || - model->boneCount == 0 || model->bindPose == NULL) - { - return; - } - - // Ensure frame indices are valid - if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; - if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; - if (frame1 < 0) frame1 = 0; - if (frame2 < 0) frame2 = 0; - - // Find first mesh with bones - int firstMeshWithBones = -1; - for (int i = 0; i < model->meshCount; i++) - { - if (model->meshes[i].boneMatrices) - { - firstMeshWithBones = i; - break; - } - } - - if (firstMeshWithBones == -1) return; - - // Get bone count (use minimum of all to be safe) - int boneCount = model->boneCount; - if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; - if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; - - // Blend each bone - for (int boneId = 0; boneId < boneCount; boneId++) - { - // Determine blend factor for this bone - float boneBlendFactor = blendFactor; - - // If upper body blending is enabled, use different blend factors for upper vs lower body - if (upperBodyBlend) - { - const char *boneName = model->bones[boneId].name; - bool isUpperBody = IsUpperBodyBone(boneName); - - // Upper body: use anim2 (attack), Lower body: use anim1 (walk) - // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) - if (isUpperBody) - { - // Upper body: blend towards anim2 (attack) - boneBlendFactor = blendFactor; - } - else - { - // Lower body: blend towards anim1 (walk) - invert the blend - boneBlendFactor = 1.0f - blendFactor; - } - } - - // Get transforms from both animations - Transform *bindTransform = &model->bindPose[boneId]; - Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; - Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; - - // Blend the transforms - Transform blended; - blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); - blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); - blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); - - // Convert bind pose to matrix - Matrix bindMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), - QuaternionToMatrix(bindTransform->rotation)), - MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); - - // Convert blended transform to matrix - Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), - QuaternionToMatrix(blended.rotation)), - MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); - - // Calculate final bone matrix (similar to UpdateModelAnimationBones) - model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); - } - - // Copy bone matrices to remaining meshes - for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) - { - if (model->meshes[i].boneMatrices) - { - memcpy(model->meshes[i].boneMatrices, - model->meshes[firstMeshWithBones].boneMatrices, - model->meshes[i].boneCount * sizeof(model->meshes[i].boneMatrices[0])); - } - } -} +static bool IsUpperBodyBone(const char *boneName); +static void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend); //------------------------------------------------------------------------------------ // Program main entry point @@ -207,8 +84,8 @@ int main(void) } // Use specific indices: walk/move = 2, attack = 3 - unsigned int animIndex1 = 2; // Walk/Move animation (index 2) - unsigned int animIndex2 = 3; // Attack animation (index 3) + unsigned int animIndex1 = 2; // Walk/Move animation (index 2) + unsigned int animIndex2 = 3; // Attack animation (index 3) unsigned int animCurrentFrame1 = 0; unsigned int animCurrentFrame2 = 0; @@ -241,8 +118,8 @@ int main(void) ModelAnimation anim1 = modelAnimations[animIndex1]; ModelAnimation anim2 = modelAnimations[animIndex2]; - animCurrentFrame1 = (animCurrentFrame1 + 1) % anim1.frameCount; - animCurrentFrame2 = (animCurrentFrame2 + 1) % anim2.frameCount; + animCurrentFrame1 = (animCurrentFrame1 + 1)%anim1.frameCount; + animCurrentFrame2 = (animCurrentFrame2 + 1)%anim2.frameCount; // Blend the two animations characterModel.transform = MatrixTranslate(position.x, position.y, position.z); @@ -289,3 +166,131 @@ int main(void) return 0; } + +//---------------------------------------------------------------------------------- +// Module Functions Definition +//---------------------------------------------------------------------------------- +// Check if a bone is part of upper body (for selective blending) +static bool IsUpperBodyBone(const char *boneName) +{ + // Common upper body bone names (adjust based on your model) + if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || + TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || + TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || + TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || + TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || + TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || + TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || + TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) + { + return true; + } + + // Check if bone name contains upper body keywords + if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || + strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || + strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || + strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) + { + return true; + } + + return false; +} + +// Blend two animations per-bone with selective upper/lower body blending +static void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) +{ + // Validate inputs + if (anim1->boneCount == 0 || anim1->framePoses == NULL || + anim2->boneCount == 0 || anim2->framePoses == NULL || + model->boneCount == 0 || model->bindPose == NULL) + { + return; + } + + // Clamp blend factor to [0, 1] + blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); + + // Ensure frame indices are valid + if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; + if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; + if (frame1 < 0) frame1 = 0; + if (frame2 < 0) frame2 = 0; + + // Find first mesh with bones + int firstMeshWithBones = -1; + for (int i = 0; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + firstMeshWithBones = i; + break; + } + } + + if (firstMeshWithBones == -1) return; + + // Get bone count (use minimum of all to be safe) + int boneCount = model->boneCount; + if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; + if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; + + // Blend each bone + for (int boneId = 0; boneId < boneCount; boneId++) + { + // Determine blend factor for this bone + float boneBlendFactor = blendFactor; + + // If upper body blending is enabled, use different blend factors for upper vs lower body + if (upperBodyBlend) + { + const char *boneName = model->bones[boneId].name; + bool isUpperBody = IsUpperBodyBone(boneName); + + // Upper body: use anim2 (attack), Lower body: use anim1 (walk) + // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) + if (isUpperBody) boneBlendFactor = blendFactor; // Upper body: blend towards anim2 (attack) + else boneBlendFactor = 1.0f - blendFactor; // Lower body: blend towards anim1 (walk) - invert the blend + } + + // Get transforms from both animations + Transform *bindTransform = &model->bindPose[boneId]; + Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; + Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; + + // Blend the transforms + Transform blended; + blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); + blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); + blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); + + // Convert bind pose to matrix + Matrix bindMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), + QuaternionToMatrix(bindTransform->rotation)), + MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); + + // Convert blended transform to matrix + Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), + QuaternionToMatrix(blended.rotation)), + MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); + + // Calculate final bone matrix (similar to UpdateModelAnimationBones) + model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); + } + + // Copy bone matrices to remaining meshes + for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + memcpy(model->meshes[i].boneMatrices, + model->meshes[firstMeshWithBones].boneMatrices, + model->meshes[i].boneCount*sizeof(model->meshes[i].boneMatrices[0])); + } + } +} + From 1955516f54585c6a4418866fbaf96cb62eec91ed Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:39:02 +0100 Subject: [PATCH 06/22] Updated raygui for examples --- examples/core/core_directory_files.c | 20 +- examples/core/raygui.h | 390 +- .../models/models_directional_billboard.c | 2 + examples/models/raygui.h | 6043 +++++++++++++++++ examples/shaders/raygui.h | 390 +- examples/shapes/raygui.h | 390 +- 6 files changed, 6732 insertions(+), 503 deletions(-) create mode 100644 examples/models/raygui.h diff --git a/examples/core/core_directory_files.c b/examples/core/core_directory_files.c index a98c950f6..5bc7b7e57 100644 --- a/examples/core/core_directory_files.c +++ b/examples/core/core_directory_files.c @@ -37,10 +37,17 @@ int main(void) char directory[MAX_FILEPATH_SIZE] = { 0 }; strcpy(directory, GetWorkingDirectory()); + // Load file-paths on current working directory + // NOTE: LoadDirectoryFiles() loads files and directories by default, + // use LoadDirectoryFilesEx() for custom filters and recursive directories loading FilePathList files = LoadDirectoryFiles(directory); int btnBackPressed = false; + int listScrollIndex = 0; + int listItemActive = -1; + int listItemFocused = -1; + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -62,10 +69,18 @@ int main(void) BeginDrawing(); ClearBackground(RAYWHITE); - DrawText(directory, 100, 40, 20, DARKGRAY); + btnBackPressed = GuiButton((Rectangle){ 40.0f, 10.0f, 48, 28 }, "<"); - btnBackPressed = GuiButton((Rectangle){ 40.0f, 38.0f, 48, 24 }, "<"); + GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize*2); + GuiLabel((Rectangle){ 40 + 48 + 10, 10, 700, 28 }, directory); + GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize); + GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(LISTVIEW, TEXT_PADDING, 40); + GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 40 }, + files.paths, files.count, &listScrollIndex, &listItemActive, &listItemFocused); + + /* for (int i = 0; i < (int)files.count; i++) { Color color = Fade(LIGHTGRAY, 0.3f); @@ -84,6 +99,7 @@ int main(void) DrawRectangle(0, 85 + 40*i, screenWidth, 40, color); DrawText(GetFileName(files.paths[i]), 120, 100 + 40*i, 10, GRAY); } + */ EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/core/raygui.h b/examples/core/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/core/raygui.h +++ b/examples/core/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { diff --git a/examples/models/models_directional_billboard.c b/examples/models/models_directional_billboard.c index e2c75c15a..caab94afb 100644 --- a/examples/models/models_directional_billboard.c +++ b/examples/models/models_directional_billboard.c @@ -17,7 +17,9 @@ ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" + #include //------------------------------------------------------------------------------------ diff --git a/examples/models/raygui.h b/examples/models/raygui.h new file mode 100644 index 000000000..67c16be45 --- /dev/null +++ b/examples/models/raygui.h @@ -0,0 +1,6043 @@ +/******************************************************************************************* +* +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library +* +* DESCRIPTION: +* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also +* available as a standalone library, as long as input and drawing functions are provided +* +* FEATURES: +* - Immediate-mode gui, minimal retained data +* - +25 controls provided (basic and advanced) +* - Styling system for colors, font and metrics +* - Icons supported, embedded as a 1-bit icons pack +* - Standalone mode option (custom input/graphics backend) +* - Multiple support tools provided for raygui development +* +* POSSIBLE IMPROVEMENTS: +* - Better standalone mode API for easy plug of custom backends +* - Externalize required inputs, allow user easier customization +* +* LIMITATIONS: +* - No editable multi-line word-wraped text box supported +* - No auto-layout mechanism, up to the user to define controls position and size +* - Standalone mode requires library modification and some user work to plug another backend +* +* NOTES: +* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for +* font atlas recs and glyphs, freeing that memory is (usually) up to the user, +* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads +* by default any previously loaded font (texture, recs, glyphs) +* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions +* +* CONTROLS PROVIDED: +* # Container/separators Controls +* - WindowBox --> StatusBar, Panel +* - GroupBox --> Line +* - Line +* - Panel --> StatusBar +* - ScrollPanel --> StatusBar +* - TabBar --> Button +* +* # Basic Controls +* - Label +* - LabelButton --> Label +* - Button +* - Toggle +* - ToggleGroup --> Toggle +* - ToggleSlider +* - CheckBox +* - ComboBox +* - DropdownBox +* - TextBox +* - ValueBox --> TextBox +* - Spinner --> Button, ValueBox +* - Slider +* - SliderBar --> Slider +* - ProgressBar +* - StatusBar +* - DummyRec +* - Grid +* +* # Advance Controls +* - ListView +* - ColorPicker --> ColorPanel, ColorBarHue +* - MessageBox --> Window, Label, Button +* - TextInputBox --> Window, Label, TextBox, Button +* +* It also provides a set of functions for styling the controls based on its properties (size, color) +* +* +* RAYGUI STYLE (guiStyle): +* raygui uses a global data array for all gui style properties (allocated on data segment by default), +* when a new style is loaded, it is loaded over the global style... but a default gui style could always be +* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one +* +* The global style array size is fixed and depends on the number of controls and properties: +* +* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; +* +* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB +* +* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style +* used for all controls, when any of those base values is set, it is automatically populated to all +* controls, so, specific control values overwriting generic style should be set after base values +* +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR +* +* Custom control properties can be defined using the EXTENDED properties for each independent control. +* +* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler +* +* +* RAYGUI ICONS (guiIcons): +* raygui could use a global array containing icons data (allocated on data segment by default), +* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set +* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded +* +* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon +* requires 8 integers (16*16/32) to be stored in memory. +* +* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set +* +* The global icons array size is fixed and depends on the number of icons and size: +* +* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; +* +* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +* +* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons +* +* RAYGUI LAYOUT: +* raygui currently does not provide an auto-layout mechanism like other libraries, +* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it +* +* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout +* +* CONFIGURATION: +* #define RAYGUI_IMPLEMENTATION +* Generates the implementation of the library into the included file +* If not defined, the library is in header only mode and can be included in other headers +* or source files without problems. But only ONE file should hold the implementation +* +* #define RAYGUI_STANDALONE +* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined +* internally in the library and input management and drawing functions must be provided by +* the user (check library implementation for further details) +* +* #define RAYGUI_NO_ICONS +* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) +* +* #define RAYGUI_CUSTOM_ICONS +* Includes custom ricons.h header defining a set of custom icons, +* this file can be generated using rGuiIcons tool +* +* #define RAYGUI_DEBUG_RECS_BOUNDS +* Draw control bounds rectangles for debug +* +* #define RAYGUI_DEBUG_TEXT_BOUNDS +* Draw text bounds rectangles for debug +* +* VERSIONS HISTORY: +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) +* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes +* ADDED: GuiValueBoxFloat() +* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP +* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH +* ADDED: GuiLoadIconsFromMemory() +* ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling +* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties +* REMOVED: GuiSliderPro(), functionality was redundant +* REVIEWED: Controls using text labels to use LABEL properties +* REVIEWED: Replaced sprintf() by snprintf() for more safety +* REVIEWED: GuiTabBar(), close tab with mouse middle button +* REVIEWED: GuiScrollPanel(), scroll speed proportional to content +* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow +* REVIEWED: GuiTextBox(), cursor position initialization +* REVIEWED: GuiSliderPro(), control value change check +* REVIEWED: GuiGrid(), simplified implementation +* REVIEWED: GuiIconText(), increase buffer size and reviewed padding +* REVIEWED: GuiDrawText(), improved wrap mode drawing +* REVIEWED: GuiScrollBar(), minor tweaks +* REVIEWED: GuiProgressBar(), improved borders computing +* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more +* REVIEWED: Functions descriptions, removed wrong return value reference +* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing +* +* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() +* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() +* ADDED: Multiple new icons, mostly compiler related +* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE +* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode +* ADDED: Support loading styles with custom font charset from external file +* REDESIGNED: GuiTextBox(), support mouse cursor positioning +* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) +* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color +* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() +* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value +* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value +* REDESIGNED: GuiComboBox(), get parameters by reference and return result value +* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value +* REDESIGNED: GuiSlider(), get parameters by reference and return result value +* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value +* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value +* REDESIGNED: GuiListView(), get parameters by reference and return result value +* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value +* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value +* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value +* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value +* REDESIGNED: GuiGrid(), get parameters by reference and return result value +* REDESIGNED: GuiGrid(), added extra parameter +* REDESIGNED: GuiListViewEx(), change parameters order +* REDESIGNED: All controls return result as int value +* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars +* REVIEWED: All examples and specially controls_test_suite +* RENAMED: gui_file_dialog module to gui_window_file_dialog +* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) +* +* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER +* ADDED: GuiLoadStyleFromMemory() (binary only) +* REVIEWED: GuiScrollBar() horizontal movement key +* REVIEWED: GuiTextBox() crash on cursor movement +* REVIEWED: GuiTextBox(), additional inputs support +* REVIEWED: GuiLabelButton(), avoid text cut +* REVIEWED: GuiTextInputBox(), password input +* REVIEWED: Local GetCodepointNext(), aligned with raylib +* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds +* +* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() +* ADDED: Helper functions to split text in separate lines +* ADDED: Multiple new icons, useful for code editing tools +* REMOVED: Unneeded icon editing functions +* REMOVED: GuiTextBoxMulti(), very limited and broken +* REMOVED: MeasureTextEx() dependency, logic directly implemented +* REMOVED: DrawTextEx() dependency, logic directly implemented +* REVIEWED: GuiScrollBar(), improve mouse-click behaviour +* REVIEWED: Library header info, more info, better organized +* REDESIGNED: GuiTextBox() to support cursor movement +* REDESIGNED: GuiDrawText() to divide drawing by lines +* +* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes +* REMOVED: GuiScrollBar(), only internal +* REDESIGNED: GuiPanel() to support text parameter +* REDESIGNED: GuiScrollPanel() to support text parameter +* REDESIGNED: GuiColorPicker() to support text parameter +* REDESIGNED: GuiColorPanel() to support text parameter +* REDESIGNED: GuiColorBarAlpha() to support text parameter +* REDESIGNED: GuiColorBarHue() to support text parameter +* REDESIGNED: GuiTextInputBox() to support password +* +* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) +* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures +* REVIEWED: External icons usage logic +* REVIEWED: GuiLine() for centered alignment when including text +* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ +* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency +* Projects updated and multiple tweaks +* +* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file +* REDESIGNED: GuiTextBoxMulti() +* REMOVED: GuiImageButton*() +* Multiple minor tweaks and bugs corrected +* +* 2.9 (17-Mar-2021) REMOVED: Tooltip API +* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() +* 2.7 (20-Feb-2020) ADDED: Possible tooltips API +* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() +* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() +* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() +* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties +* ADDED: 8 new custom styles ready to use +* Multiple minor tweaks and bugs corrected +* +* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() +* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed +* Refactor all controls drawing mechanism to use control state +* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls +* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string +* REDESIGNED: Style system (breaking change) +* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts +* REVIEWED: GuiComboBox(), GuiListView()... +* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... +* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout +* 1.5 (21-Jun-2017) Working in an improved styles system +* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) +* 1.3 (12-Jun-2017) Complete redesign of style system +* 1.1 (01-Jun-2017) Complete review of the library +* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria +* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria +* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria +* +* DEPENDENCIES: +* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing +* +* STANDALONE MODE: +* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled +* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs +* +* The following functions should be redefined for a custom backend: +* +* - Vector2 GetMousePosition(void); +* - float GetMouseWheelMove(void); +* - bool IsMouseButtonDown(int button); +* - bool IsMouseButtonPressed(int button); +* - bool IsMouseButtonReleased(int button); +* - bool IsKeyDown(int key); +* - bool IsKeyPressed(int key); +* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +* +* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() +* +* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() +* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() +* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image +* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) +* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data +* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data +* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs +* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list +* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list +* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() +* +* CONTRIBUTORS: +* Ramon Santamaria: Supervision, review, redesign, update and maintenance +* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) +* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) +* Adria Arranz: Testing and implementation of additional controls (2018) +* Jordi Jorba: Testing and implementation of additional controls (2018) +* Albert Martos: Review and testing of the library (2015) +* Ian Eito: Review and testing of the library (2015) +* Kevin Gato: Initial implementation of basic components (2014) +* Daniel Nicolas: Initial implementation of basic components (2014) +* +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYGUI_H +#define RAYGUI_H + +#define RAYGUI_VERSION_MAJOR 4 +#define RAYGUI_VERSION_MINOR 5 +#define RAYGUI_VERSION_PATCH 0 +#define RAYGUI_VERSION "5.0-dev" + +#if !defined(RAYGUI_STANDALONE) + #include "raylib.h" +#endif + +// Function specifiers in case library is build/used as a shared library (Windows) +// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll +#if defined(_WIN32) + #if defined(BUILD_LIBTYPE_SHARED) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) + #elif defined(USE_LIBTYPE_SHARED) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) + #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC +#endif + +// Function specifiers definition +#ifndef RAYGUIAPI + #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) +#endif + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +// Simple log system to avoid printf() calls if required +// NOTE: Avoiding those calls, also avoids const strings memory usage +#define RAYGUI_SUPPORT_LOG_INFO +#if defined(RAYGUI_SUPPORT_LOG_INFO) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) +#else + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +// NOTE: Some types are required for RAYGUI_STANDALONE usage +//---------------------------------------------------------------------------------- +#if defined(RAYGUI_STANDALONE) + #ifndef __cplusplus + // Boolean type + #ifndef true + typedef enum { false, true } bool; + #endif + #endif + + // Vector2 type + typedef struct Vector2 { + float x; + float y; + } Vector2; + + // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() + typedef struct Vector3 { + float x; + float y; + float z; + } Vector3; + + // Color type, RGBA (32bit) + typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; + } Color; + + // Rectangle type + typedef struct Rectangle { + float x; + float y; + float width; + float height; + } Rectangle; + + // TODO: Texture2D type is very coupled to raylib, required by Font type + // It should be redesigned to be provided by user + typedef struct Texture { + unsigned int id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) + } Texture; + + // Texture2D, same as Texture + typedef Texture Texture2D; + + // Image, pixel data stored in CPU memory (RAM) + typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) + } Image; + + // GlyphInfo, font characters glyphs info + typedef struct GlyphInfo { + int value; // Character value (Unicode) + int offsetX; // Character offset X when drawing + int offsetY; // Character offset Y when drawing + int advanceX; // Character advance position X + Image image; // Character image data + } GlyphInfo; + + // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() + // It should be redesigned to be provided by user + typedef struct Font { + int baseSize; // Base size (default chars height) + int glyphCount; // Number of glyph characters + int glyphPadding; // Padding around the glyph characters + Texture2D texture; // Texture atlas containing the glyphs + Rectangle *recs; // Rectangles in texture for the glyphs + GlyphInfo *glyphs; // Glyphs info data + } Font; +#endif + +// Style property +// NOTE: Used when exporting style as code for convenience +typedef struct GuiStyleProp { + unsigned short controlId; // Control identifier + unsigned short propertyId; // Property identifier + int propertyValue; // Property value +} GuiStyleProp; + +/* +// Controls text style -NOT USED- +// NOTE: Text style is defined by control +typedef struct GuiTextStyle { + unsigned int size; + int charSpacing; + int lineSpacing; + int alignmentH; + int alignmentV; + int padding; +} GuiTextStyle; +*/ + +// Gui control state +typedef enum { + STATE_NORMAL = 0, + STATE_FOCUSED, + STATE_PRESSED, + STATE_DISABLED +} GuiState; + +// Gui control text alignment +typedef enum { + TEXT_ALIGN_LEFT = 0, + TEXT_ALIGN_CENTER, + TEXT_ALIGN_RIGHT +} GuiTextAlignment; + +// Gui control text alignment vertical +// NOTE: Text vertical position inside the text bounds +typedef enum { + TEXT_ALIGN_TOP = 0, + TEXT_ALIGN_MIDDLE, + TEXT_ALIGN_BOTTOM +} GuiTextAlignmentVertical; + +// Gui control text wrap mode +// NOTE: Useful for multiline text +typedef enum { + TEXT_WRAP_NONE = 0, + TEXT_WRAP_CHAR, + TEXT_WRAP_WORD +} GuiTextWrapMode; + +// Gui controls +typedef enum { + // Default -> populates to all controls when set + DEFAULT = 0, + + // Basic controls + LABEL, // Used also for: LABELBUTTON + BUTTON, + TOGGLE, // Used also for: TOGGLEGROUP + SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER + PROGRESSBAR, + CHECKBOX, + COMBOBOX, + DROPDOWNBOX, + TEXTBOX, // Used also for: TEXTBOXMULTI + VALUEBOX, + CONTROL11, + LISTVIEW, + COLORPICKER, + SCROLLBAR, + STATUSBAR +} GuiControl; + +// Gui base properties for every control +// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) +typedef enum { + BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL + BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL + TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL + BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED + BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED + TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED + BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED + BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED + TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED + BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED + BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED + TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED + BORDER_WIDTH = 12, // Control border size, 0 for no border + //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls + //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls + //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls + TEXT_PADDING = 13, // Control text padding, not considering border + TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) + //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls +} GuiControlProperty; + +// TODO: Which text styling properties should be global or per-control? +// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while +// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and +// should be configured by user as needed while defining the UI layout + +// Gui extended properties depend on control +// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) +//---------------------------------------------------------------------------------- +// DEFAULT extended properties +// NOTE: Those properties are common to all controls or global +// WARNING: Only 8 slots vailable for those properties by default +typedef enum { + TEXT_SIZE = 16, // Text size (glyphs max height) + TEXT_SPACING, // Text spacing between glyphs + LINE_COLOR, // Line control color + BACKGROUND_COLOR, // Background color + TEXT_LINE_SPACING, // Text spacing between lines + TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) + TEXT_WRAP_MODE // Text wrap-mode inside text bounds + //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline + //TEXT_DECORATION_THICK // Text decoration line thickness +} GuiDefaultProperty; + +// Other possible text properties: +// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change +// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... + +// Label +//typedef enum { } GuiLabelProperty; + +// Button/Spinner +//typedef enum { } GuiButtonProperty; + +// Toggle/ToggleGroup +typedef enum { + GROUP_PADDING = 16, // ToggleGroup separation between toggles +} GuiToggleProperty; + +// Slider/SliderBar +typedef enum { + SLIDER_WIDTH = 16, // Slider size of internal bar + SLIDER_PADDING // Slider/SliderBar internal bar padding +} GuiSliderProperty; + +// ProgressBar +typedef enum { + PROGRESS_PADDING = 16, // ProgressBar internal padding +} GuiProgressBarProperty; + +// ScrollBar +typedef enum { + ARROWS_SIZE = 16, // ScrollBar arrows size + ARROWS_VISIBLE, // ScrollBar arrows visible + SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding + SCROLL_SLIDER_SIZE, // ScrollBar slider size + SCROLL_PADDING, // ScrollBar scroll padding from arrows + SCROLL_SPEED, // ScrollBar scrolling speed +} GuiScrollBarProperty; + +// CheckBox +typedef enum { + CHECK_PADDING = 16 // CheckBox internal check padding +} GuiCheckBoxProperty; + +// ComboBox +typedef enum { + COMBO_BUTTON_WIDTH = 16, // ComboBox right button width + COMBO_BUTTON_SPACING // ComboBox button separation +} GuiComboBoxProperty; + +// DropdownBox +typedef enum { + ARROW_PADDING = 16, // DropdownBox arrow separation from border and items + DROPDOWN_ITEMS_SPACING, // DropdownBox items separation + DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden + DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) +} GuiDropdownBoxProperty; + +// TextBox/TextBoxMulti/ValueBox/Spinner +typedef enum { + TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable +} GuiTextBoxProperty; + +// ValueBox/Spinner +typedef enum { + SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width + SPINNER_BUTTON_SPACING, // Spinner buttons separation +} GuiValueBoxProperty; + +// Control11 +//typedef enum { } GuiControl11Property; + +// ListView +typedef enum { + LIST_ITEMS_HEIGHT = 16, // ListView items height + LIST_ITEMS_SPACING, // ListView items separation + SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) + SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) + LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state + LIST_ITEMS_BORDER_WIDTH // ListView items border width +} GuiListViewProperty; + +// ColorPicker +typedef enum { + COLOR_SELECTOR_SIZE = 16, + HUEBAR_WIDTH, // ColorPicker right hue bar width + HUEBAR_PADDING, // ColorPicker right hue bar separation from panel + HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height + HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow +} GuiColorPickerProperty; + +#define SCROLLBAR_LEFT_SIDE 0 +#define SCROLLBAR_RIGHT_SIDE 1 + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +// ... + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- + +#if defined(__cplusplus) +extern "C" { // Prevents name mangling of functions +#endif + +// Global gui state control functions +RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) +RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) +RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) +RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) +RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) +RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f +RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) +RAYGUIAPI int GuiGetState(void); // Get gui state (global state) + +// Font set/get functions +RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) +RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) + +// Style set/get functions +RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property +RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property + +// Styles loading functions +RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) +RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style + +// Tooltips management functions +RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) +RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) +RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string + +// Icons functionality +RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) +#if !defined(RAYGUI_NO_ICONS) +RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size +RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer +RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data +RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position +#endif + +// Utility functions +RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) + +// Controls +//---------------------------------------------------------------------------------------------------------- +// Container/separator controls, useful for controls organization +RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed +RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name +RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text +RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls +RAYGUIAPI int GuiTabBar(Rectangle bounds, const char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 +RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control + +// Basic controls set +RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control +RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked +RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked +RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control +RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control +RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control +RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active +RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control + +RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control +RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control +RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers +RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values +RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text + +RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control +RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control +RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control +RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text +RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders +RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control + +// Advance controls set +RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control +RAYGUIAPI int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters +RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message +RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret +RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) +RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control +RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control +RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control +RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) +RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() +//---------------------------------------------------------------------------------------------------------- + +#if !defined(RAYGUI_NO_ICONS) + +#if !defined(RAYGUI_CUSTOM_ICONS) +//---------------------------------------------------------------------------------- +// Icons enumeration +//---------------------------------------------------------------------------------- +typedef enum { + ICON_NONE = 0, + ICON_FOLDER_FILE_OPEN = 1, + ICON_FILE_SAVE_CLASSIC = 2, + ICON_FOLDER_OPEN = 3, + ICON_FOLDER_SAVE = 4, + ICON_FILE_OPEN = 5, + ICON_FILE_SAVE = 6, + ICON_FILE_EXPORT = 7, + ICON_FILE_ADD = 8, + ICON_FILE_DELETE = 9, + ICON_FILETYPE_TEXT = 10, + ICON_FILETYPE_AUDIO = 11, + ICON_FILETYPE_IMAGE = 12, + ICON_FILETYPE_PLAY = 13, + ICON_FILETYPE_VIDEO = 14, + ICON_FILETYPE_INFO = 15, + ICON_FILE_COPY = 16, + ICON_FILE_CUT = 17, + ICON_FILE_PASTE = 18, + ICON_CURSOR_HAND = 19, + ICON_CURSOR_POINTER = 20, + ICON_CURSOR_CLASSIC = 21, + ICON_PENCIL = 22, + ICON_PENCIL_BIG = 23, + ICON_BRUSH_CLASSIC = 24, + ICON_BRUSH_PAINTER = 25, + ICON_WATER_DROP = 26, + ICON_COLOR_PICKER = 27, + ICON_RUBBER = 28, + ICON_COLOR_BUCKET = 29, + ICON_TEXT_T = 30, + ICON_TEXT_A = 31, + ICON_SCALE = 32, + ICON_RESIZE = 33, + ICON_FILTER_POINT = 34, + ICON_FILTER_BILINEAR = 35, + ICON_CROP = 36, + ICON_CROP_ALPHA = 37, + ICON_SQUARE_TOGGLE = 38, + ICON_SYMMETRY = 39, + ICON_SYMMETRY_HORIZONTAL = 40, + ICON_SYMMETRY_VERTICAL = 41, + ICON_LENS = 42, + ICON_LENS_BIG = 43, + ICON_EYE_ON = 44, + ICON_EYE_OFF = 45, + ICON_FILTER_TOP = 46, + ICON_FILTER = 47, + ICON_TARGET_POINT = 48, + ICON_TARGET_SMALL = 49, + ICON_TARGET_BIG = 50, + ICON_TARGET_MOVE = 51, + ICON_CURSOR_MOVE = 52, + ICON_CURSOR_SCALE = 53, + ICON_CURSOR_SCALE_RIGHT = 54, + ICON_CURSOR_SCALE_LEFT = 55, + ICON_UNDO = 56, + ICON_REDO = 57, + ICON_REREDO = 58, + ICON_MUTATE = 59, + ICON_ROTATE = 60, + ICON_REPEAT = 61, + ICON_SHUFFLE = 62, + ICON_EMPTYBOX = 63, + ICON_TARGET = 64, + ICON_TARGET_SMALL_FILL = 65, + ICON_TARGET_BIG_FILL = 66, + ICON_TARGET_MOVE_FILL = 67, + ICON_CURSOR_MOVE_FILL = 68, + ICON_CURSOR_SCALE_FILL = 69, + ICON_CURSOR_SCALE_RIGHT_FILL = 70, + ICON_CURSOR_SCALE_LEFT_FILL = 71, + ICON_UNDO_FILL = 72, + ICON_REDO_FILL = 73, + ICON_REREDO_FILL = 74, + ICON_MUTATE_FILL = 75, + ICON_ROTATE_FILL = 76, + ICON_REPEAT_FILL = 77, + ICON_SHUFFLE_FILL = 78, + ICON_EMPTYBOX_SMALL = 79, + ICON_BOX = 80, + ICON_BOX_TOP = 81, + ICON_BOX_TOP_RIGHT = 82, + ICON_BOX_RIGHT = 83, + ICON_BOX_BOTTOM_RIGHT = 84, + ICON_BOX_BOTTOM = 85, + ICON_BOX_BOTTOM_LEFT = 86, + ICON_BOX_LEFT = 87, + ICON_BOX_TOP_LEFT = 88, + ICON_BOX_CENTER = 89, + ICON_BOX_CIRCLE_MASK = 90, + ICON_POT = 91, + ICON_ALPHA_MULTIPLY = 92, + ICON_ALPHA_CLEAR = 93, + ICON_DITHERING = 94, + ICON_MIPMAPS = 95, + ICON_BOX_GRID = 96, + ICON_GRID = 97, + ICON_BOX_CORNERS_SMALL = 98, + ICON_BOX_CORNERS_BIG = 99, + ICON_FOUR_BOXES = 100, + ICON_GRID_FILL = 101, + ICON_BOX_MULTISIZE = 102, + ICON_ZOOM_SMALL = 103, + ICON_ZOOM_MEDIUM = 104, + ICON_ZOOM_BIG = 105, + ICON_ZOOM_ALL = 106, + ICON_ZOOM_CENTER = 107, + ICON_BOX_DOTS_SMALL = 108, + ICON_BOX_DOTS_BIG = 109, + ICON_BOX_CONCENTRIC = 110, + ICON_BOX_GRID_BIG = 111, + ICON_OK_TICK = 112, + ICON_CROSS = 113, + ICON_ARROW_LEFT = 114, + ICON_ARROW_RIGHT = 115, + ICON_ARROW_DOWN = 116, + ICON_ARROW_UP = 117, + ICON_ARROW_LEFT_FILL = 118, + ICON_ARROW_RIGHT_FILL = 119, + ICON_ARROW_DOWN_FILL = 120, + ICON_ARROW_UP_FILL = 121, + ICON_AUDIO = 122, + ICON_FX = 123, + ICON_WAVE = 124, + ICON_WAVE_SINUS = 125, + ICON_WAVE_SQUARE = 126, + ICON_WAVE_TRIANGULAR = 127, + ICON_CROSS_SMALL = 128, + ICON_PLAYER_PREVIOUS = 129, + ICON_PLAYER_PLAY_BACK = 130, + ICON_PLAYER_PLAY = 131, + ICON_PLAYER_PAUSE = 132, + ICON_PLAYER_STOP = 133, + ICON_PLAYER_NEXT = 134, + ICON_PLAYER_RECORD = 135, + ICON_MAGNET = 136, + ICON_LOCK_CLOSE = 137, + ICON_LOCK_OPEN = 138, + ICON_CLOCK = 139, + ICON_TOOLS = 140, + ICON_GEAR = 141, + ICON_GEAR_BIG = 142, + ICON_BIN = 143, + ICON_HAND_POINTER = 144, + ICON_LASER = 145, + ICON_COIN = 146, + ICON_EXPLOSION = 147, + ICON_1UP = 148, + ICON_PLAYER = 149, + ICON_PLAYER_JUMP = 150, + ICON_KEY = 151, + ICON_DEMON = 152, + ICON_TEXT_POPUP = 153, + ICON_GEAR_EX = 154, + ICON_CRACK = 155, + ICON_CRACK_POINTS = 156, + ICON_STAR = 157, + ICON_DOOR = 158, + ICON_EXIT = 159, + ICON_MODE_2D = 160, + ICON_MODE_3D = 161, + ICON_CUBE = 162, + ICON_CUBE_FACE_TOP = 163, + ICON_CUBE_FACE_LEFT = 164, + ICON_CUBE_FACE_FRONT = 165, + ICON_CUBE_FACE_BOTTOM = 166, + ICON_CUBE_FACE_RIGHT = 167, + ICON_CUBE_FACE_BACK = 168, + ICON_CAMERA = 169, + ICON_SPECIAL = 170, + ICON_LINK_NET = 171, + ICON_LINK_BOXES = 172, + ICON_LINK_MULTI = 173, + ICON_LINK = 174, + ICON_LINK_BROKE = 175, + ICON_TEXT_NOTES = 176, + ICON_NOTEBOOK = 177, + ICON_SUITCASE = 178, + ICON_SUITCASE_ZIP = 179, + ICON_MAILBOX = 180, + ICON_MONITOR = 181, + ICON_PRINTER = 182, + ICON_PHOTO_CAMERA = 183, + ICON_PHOTO_CAMERA_FLASH = 184, + ICON_HOUSE = 185, + ICON_HEART = 186, + ICON_CORNER = 187, + ICON_VERTICAL_BARS = 188, + ICON_VERTICAL_BARS_FILL = 189, + ICON_LIFE_BARS = 190, + ICON_INFO = 191, + ICON_CROSSLINE = 192, + ICON_HELP = 193, + ICON_FILETYPE_ALPHA = 194, + ICON_FILETYPE_HOME = 195, + ICON_LAYERS_VISIBLE = 196, + ICON_LAYERS = 197, + ICON_WINDOW = 198, + ICON_HIDPI = 199, + ICON_FILETYPE_BINARY = 200, + ICON_HEX = 201, + ICON_SHIELD = 202, + ICON_FILE_NEW = 203, + ICON_FOLDER_ADD = 204, + ICON_ALARM = 205, + ICON_CPU = 206, + ICON_ROM = 207, + ICON_STEP_OVER = 208, + ICON_STEP_INTO = 209, + ICON_STEP_OUT = 210, + ICON_RESTART = 211, + ICON_BREAKPOINT_ON = 212, + ICON_BREAKPOINT_OFF = 213, + ICON_BURGER_MENU = 214, + ICON_CASE_SENSITIVE = 215, + ICON_REG_EXP = 216, + ICON_FOLDER = 217, + ICON_FILE = 218, + ICON_SAND_TIMER = 219, + ICON_WARNING = 220, + ICON_HELP_BOX = 221, + ICON_INFO_BOX = 222, + ICON_PRIORITY = 223, + ICON_LAYERS_ISO = 224, + ICON_LAYERS2 = 225, + ICON_MLAYERS = 226, + ICON_MAPS = 227, + ICON_HOT = 228, + ICON_LABEL = 229, + ICON_NAME_ID = 230, + ICON_SLICING = 231, + ICON_MANUAL_CONTROL = 232, + ICON_COLLISION = 233, + ICON_CIRCLE_ADD = 234, + ICON_CIRCLE_ADD_FILL = 235, + ICON_CIRCLE_WARNING = 236, + ICON_CIRCLE_WARNING_FILL = 237, + ICON_BOX_MORE = 238, + ICON_BOX_MORE_FILL = 239, + ICON_BOX_MINUS = 240, + ICON_BOX_MINUS_FILL = 241, + ICON_UNION = 242, + ICON_INTERSECTION = 243, + ICON_DIFFERENCE = 244, + ICON_SPHERE = 245, + ICON_CYLINDER = 246, + ICON_CONE = 247, + ICON_ELLIPSOID = 248, + ICON_CAPSULE = 249, + ICON_250 = 250, + ICON_251 = 251, + ICON_252 = 252, + ICON_253 = 253, + ICON_254 = 254, + ICON_255 = 255 +} GuiIconName; +#endif + +#endif + +#if defined(__cplusplus) +} // Prevents name mangling of functions +#endif + +#endif // RAYGUI_H + +/*********************************************************************************** +* +* RAYGUI IMPLEMENTATION +* +************************************************************************************/ + +#if defined(RAYGUI_IMPLEMENTATION) + +#include // required for: isspace() [GuiTextBox()] +#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] +#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() +#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] +#include // Required for: roundf() [GuiColorPicker()] + +// Allow custom memory allocators +#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) + #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) + #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" + #endif +#else + #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] + + #define RAYGUI_MALLOC(sz) malloc(sz) + #define RAYGUI_CALLOC(n,sz) calloc(n,sz) + #define RAYGUI_FREE(p) free(p) +#endif + +#ifdef __cplusplus + #define RAYGUI_CLITERAL(name) name +#else + #define RAYGUI_CLITERAL(name) (name) +#endif + +// Check if two rectangles are equal, used to validate a slider bounds as an id +#ifndef CHECK_BOUNDS_ID + #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) +#endif + +#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) + +// Embedded icons, no external file provided +#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) +#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons +#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id + +// Icons data is defined by bit array (every bit represents one pixel) +// Those arrays are stored as unsigned int data arrays, so, +// every array element defines 32 pixels (bits) of information +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) +// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) +#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) + +//---------------------------------------------------------------------------------- +// Icons data for all gui possible icons (allocated on data segment by default) +// +// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, +// every 16x16 icon requires 8 integers (16*16/32) to be stored +// +// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), +// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS +// +// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +//---------------------------------------------------------------------------------- +static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE + 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN + 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE + 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT + 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO + 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE + 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY + 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO + 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO + 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY + 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT + 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE + 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND + 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER + 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC + 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL + 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG + 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC + 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER + 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP + 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER + 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER + 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET + 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T + 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A + 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE + 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE + 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT + 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR + 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP + 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA + 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE + 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY + 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL + 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL + 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS + 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG + 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON + 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF + 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP + 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER + 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT + 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL + 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG + 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE + 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE + 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE + 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT + 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT + 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO + 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE + 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT + 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE + 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX + 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET + 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL + 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL + 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL + 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL + 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL + 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL + 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL + 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL + 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL + 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX + 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP + 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT + 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER + 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK + 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR + 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING + 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS + 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID + 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID + 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL + 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG + 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES + 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL + 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE + 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL + 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM + 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG + 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL + 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER + 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL + 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG + 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC + 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG + 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK + 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS + 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT + 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT + 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN + 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP + 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL + 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL + 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL + 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL + 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO + 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX + 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE + 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS + 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE + 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR + 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL + 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS + 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK + 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY + 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE + 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP + 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT + 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD + 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET + 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE + 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN + 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK + 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS + 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR + 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG + 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN + 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER + 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER + 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN + 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION + 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP + 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER + 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP + 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY + 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON + 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP + 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX + 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK + 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS + 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR + 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR + 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT + 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D + 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE + 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP + 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM + 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT + 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK + 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA + 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL + 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET + 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES + 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI + 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK + 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE + 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES + 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK + 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE + 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP + 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX + 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR + 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER + 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA + 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH + 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE + 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER + 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS + 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL + 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS + 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO + 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE + 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP + 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA + 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME + 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE + 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS + 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW + 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI + 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY + 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX + 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD + 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW + 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD + 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM + 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU + 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM + 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER + 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO + 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT + 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART + 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON + 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF + 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU + 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE + 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE + 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER + 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING + 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX + 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX + 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY + 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO + 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 + 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS + 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS + 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT + 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL + 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID + 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING + 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL + 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION + 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD + 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL + 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING + 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL + 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE + 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL + 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS + 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL + 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION + 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION + 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE + 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE + 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER + 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE + 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID + 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 +}; + +// NOTE: A pointer to current icons array should be defined +static unsigned int *guiIconsPtr = guiIcons; + +#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS + +#ifndef RAYGUI_ICON_SIZE + #define RAYGUI_ICON_SIZE 0 +#endif + +// WARNING: Those values define the total size of the style data array, +// if changed, previous saved styles could become incompatible +#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls +#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties +#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties + +//---------------------------------------------------------------------------------- +// Module Types and Structures Definition +//---------------------------------------------------------------------------------- +// Gui control property style color element +typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state + +static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) +static bool guiLocked = false; // Gui lock state (no inputs processed) +static float guiAlpha = 1.0f; // Gui controls transparency + +static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) + +static bool guiTooltip = false; // Tooltip enabled/disabled +static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) + +static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) +static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier + +static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() +//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking +static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) + +//---------------------------------------------------------------------------------- +// Style data array for all gui style properties (allocated on data segment by default) +// +// NOTE 1: First set of BASE properties are generic to all controls but could be individually +// overwritten per control, first set of EXTENDED properties are generic to all controls and +// can not be overwritten individually but custom EXTENDED properties can be used by control +// +// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), +// but default gui style could always be recovered with GuiLoadStyleDefault() +// +// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB +//---------------------------------------------------------------------------------- +static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; + +static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization + +//---------------------------------------------------------------------------------- +// Standalone Mode Functions Declaration +// +// NOTE: raygui depend on some raylib input and drawing functions +// To use raygui as standalone library, below functions must be defined by the user +//---------------------------------------------------------------------------------- +#if defined(RAYGUI_STANDALONE) + +#define KEY_RIGHT 262 +#define KEY_LEFT 263 +#define KEY_DOWN 264 +#define KEY_UP 265 +#define KEY_BACKSPACE 259 +#define KEY_ENTER 257 + +#define MOUSE_LEFT_BUTTON 0 + +// Input required functions +//------------------------------------------------------------------------------- +static Vector2 GetMousePosition(void); +static float GetMouseWheelMove(void); +static bool IsMouseButtonDown(int button); +static bool IsMouseButtonPressed(int button); +static bool IsMouseButtonReleased(int button); + +static bool IsKeyDown(int key); +static bool IsKeyPressed(int key); +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +//------------------------------------------------------------------------------- + +// Drawing required functions +//------------------------------------------------------------------------------- +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() +//------------------------------------------------------------------------------- + +// Text required functions +//------------------------------------------------------------------------------- +static Font GetFontDefault(void); // -- GuiLoadStyleDefault() +static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font + +static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image +static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) + +static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data +static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data + +static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs + +static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list +static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list + +static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() +//------------------------------------------------------------------------------- + +// raylib functions already implemented in raygui +//------------------------------------------------------------------------------- +static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value +static int ColorToInt(Color color); // Returns hexadecimal value for a Color +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' +static const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +static int TextToInteger(const char *text); // Get integer value from text +static float TextToFloat(const char *text); // Get float value from text + +static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text +static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) + +static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient +//------------------------------------------------------------------------------- + +#endif // RAYGUI_STANDALONE + +//---------------------------------------------------------------------------------- +// Module Internal Functions Declaration +//---------------------------------------------------------------------------------- +static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) + +static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds +static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor + +static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font +static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style + +static const char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings +static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB +static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV + +static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() +static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position + +static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor + +//---------------------------------------------------------------------------------- +// Gui Setup Functions Definition +//---------------------------------------------------------------------------------- +// Enable gui global state +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups +void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } + +// Disable gui global state +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups +void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } + +// Lock gui global state +void GuiLock(void) { guiLocked = true; } + +// Unlock gui global state +void GuiUnlock(void) { guiLocked = false; } + +// Check if gui is locked (global state) +bool GuiIsLocked(void) { return guiLocked; } + +// Set gui controls alpha global state +void GuiSetAlpha(float alpha) +{ + if (alpha < 0.0f) alpha = 0.0f; + else if (alpha > 1.0f) alpha = 1.0f; + + guiAlpha = alpha; +} + +// Set gui state (global state) +void GuiSetState(int state) { guiState = (GuiState)state; } + +// Get gui state (global state) +int GuiGetState(void) { return guiState; } + +// Set custom gui font +// NOTE: Font loading/unloading is external to raygui +void GuiSetFont(Font font) +{ + if (font.texture.id > 0) + { + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first + if (!guiStyleLoaded) GuiLoadStyleDefault(); + + guiFont = font; + } +} + +// Get custom gui font +Font GuiGetFont(void) +{ + return guiFont; +} + +// Set control style property value +void GuiSetStyle(int control, int property, int value) +{ + if (!guiStyleLoaded) GuiLoadStyleDefault(); + guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; + + // Default properties are propagated to all controls + if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) + { + for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; + } +} + +// Get control style property value +int GuiGetStyle(int control, int property) +{ + if (!guiStyleLoaded) GuiLoadStyleDefault(); + return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; +} + +//---------------------------------------------------------------------------------- +// Gui Controls Functions Definition +//---------------------------------------------------------------------------------- + +// Window Box control +int GuiWindowBox(Rectangle bounds, const char *title) +{ + // Window title bar height (including borders) + // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() + #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) + #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 + #endif + + #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) + #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 + #endif + + int result = 0; + //GuiState state = guiState; + + int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); + + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; + if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; + + const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; + + // Update control + //-------------------------------------------------------------------- + // NOTE: Logic is directly managed by button + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar + + // Draw window close button + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); +#if defined(RAYGUI_NO_ICONS) + result = GuiButton(closeButtonRec, "x"); +#else + result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); +#endif + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); + //-------------------------------------------------------------------- + + return result; // Window close button clicked: result = 1 +} + +// Group Box control with text name +int GuiGroupBox(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_GROUPBOX_LINE_THICK) + #define RAYGUI_GROUPBOX_LINE_THICK 1 + #endif + + int result = 0; + GuiState state = guiState; + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + + GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); + //-------------------------------------------------------------------- + + return result; +} + +// Line control +int GuiLine(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_LINE_MARGIN_TEXT) + #define RAYGUI_LINE_MARGIN_TEXT 12 + #endif + #if !defined(RAYGUI_LINE_TEXT_PADDING) + #define RAYGUI_LINE_TEXT_PADDING 4 + #endif + + int result = 0; + GuiState state = guiState; + + Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); + + // Draw control + //-------------------------------------------------------------------- + if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); + else + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = bounds.height; + textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; + textBounds.y = bounds.y; + + // Draw line with embedded text label: "--- text --------------" + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); + GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); + } + //-------------------------------------------------------------------- + + return result; +} + +// Panel control +int GuiPanel(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_PANEL_BORDER_WIDTH) + #define RAYGUI_PANEL_BORDER_WIDTH 1 + #endif + + int result = 0; + GuiState state = guiState; + + // Text will be drawn as a header bar (if provided) + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; + if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; + + if (text != NULL) + { + // Move panel bounds after the header bar + bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + } + + // Draw control + //-------------------------------------------------------------------- + if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar + + GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), + GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); + //-------------------------------------------------------------------- + + return result; +} + +// Tab Bar control +// NOTE: Using GuiToggle() for the TABS +int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) +{ + #define RAYGUI_TABBAR_ITEM_WIDTH 148 + + int result = -1; + //GuiState state = guiState; + + Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; + + if (*active < 0) *active = 0; + else if (*active > count - 1) *active = count - 1; + + int offsetX = 0; // Required in case tabs go out of screen + offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); + if (offsetX < 0) offsetX = 0; + + bool toggle = false; // Required for individual toggles + + // Draw control + //-------------------------------------------------------------------- + for (int i = 0; i < count; i++) + { + tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; + + if (tabBounds.x < GetScreenWidth()) + { + // Draw tabs as toggle controls + int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); + int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); + GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(TOGGLE, TEXT_PADDING, 8); + + if (i == (*active)) + { + toggle = true; + GuiToggle(tabBounds, text[i], &toggle); + } + else + { + toggle = false; + GuiToggle(tabBounds, text[i], &toggle); + if (toggle) *active = i; + } + + // Close tab with middle mouse button pressed + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + + GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); + GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); + + // Draw tab close button + // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); +#if defined(RAYGUI_NO_ICONS) + if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; +#else + if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; +#endif + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); + } + } + + // Draw tab-bar bottom line + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); + //-------------------------------------------------------------------- + + return result; // Return as result the current TAB closing requested +} + +// Scroll Panel control +int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) +{ + #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 + #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 + #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 + + int result = 0; + GuiState state = guiState; + + Rectangle temp = { 0 }; + if (view == NULL) view = &temp; + + Vector2 scrollPos = { 0.0f, 0.0f }; + if (scroll != NULL) scrollPos = *scroll; + + // Text will be drawn as a header bar (if provided) + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; + if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; + + if (text != NULL) + { + // Move panel bounds after the header bar + bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; + } + + bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; + bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; + + // Recheck to account for the other scrollbar being visible + if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; + if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; + + int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; + int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; + Rectangle horizontalScrollBar = { + (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)horizontalScrollBarWidth + }; + Rectangle verticalScrollBar = { + (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), + (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)verticalScrollBarWidth, + (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) + }; + + // Make sure scroll bars have a minimum width/height + if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; + if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; + + // Calculate view area (area without the scrollbars) + *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? + RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : + RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; + + // Clip view area to the actual content size + if (view->width > content.width) view->width = content.width; + if (view->height > content.height) view->height = content.height; + + float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); + float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); + float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; + float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + +#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) + if (hasHorizontalScrollBar) + { + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + } + + if (hasVerticalScrollBar) + { + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + } +#endif + float scrollDelta = GUI_SCROLL_DELTA; + + // Set scrolling speed with mouse wheel based on ratio between bounds and content + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + + // Horizontal and vertical scrolling with mouse wheel + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll + } + } + + // Normalize scroll values + if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; + if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; + if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; + if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar + + GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background + + // Save size of the scrollbar slider + const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); + + // Draw horizontal scrollbar if visible + if (hasHorizontalScrollBar) + { + // Change scrollbar slider size to show the diff in size between the content width and the widget width + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); + scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); + } + else scrollPos.x = 0.0f; + + // Draw vertical scrollbar if visible + if (hasVerticalScrollBar) + { + // Change scrollbar slider size to show the diff in size between the content height and the widget height + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); + scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); + } + else scrollPos.y = 0.0f; + + // Draw detail corner rectangle if both scroll bars are visible + if (hasHorizontalScrollBar && hasVerticalScrollBar) + { + Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; + GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); + } + + // Draw scrollbar lines depending on current state + GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); + + // Set scrollbar slider size back to the way it was before + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); + //-------------------------------------------------------------------- + + if (scroll != NULL) *scroll = scrollPos; + + return result; +} + +// Label control +int GuiLabel(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + //... + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Button control, returns true when clicked +int GuiButton(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) result = 1; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); + GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); + + if (state == STATE_FOCUSED) GuiTooltip(bounds); + //------------------------------------------------------------------ + + return result; // Button pressed: result = 1 +} + +// Label button control +int GuiLabelButton(Rectangle bounds, const char *text) +{ + GuiState state = guiState; + bool pressed = false; + + // NOTE: Force bounds.width to be all text + float textWidth = (float)GuiGetTextWidth(text); + if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check checkbox state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) pressed = true; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return pressed; +} + +// Toggle Button control +int GuiToggle(Rectangle bounds, const char *text, bool *active) +{ + int result = 0; + GuiState state = guiState; + + bool temp = false; + if (active == NULL) active = &temp; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check toggle button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) + { + state = STATE_NORMAL; + *active = !(*active); + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_NORMAL) + { + GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); + GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); + } + else + { + GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); + GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); + } + + if (state == STATE_FOCUSED) GuiTooltip(bounds); + //-------------------------------------------------------------------- + + return result; +} + +// Toggle Group control +int GuiToggleGroup(Rectangle bounds, const char *text, int *active) +{ + #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) + #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 + #endif + + int result = 0; + float initBoundsX = bounds.x; + + int temp = 0; + if (active == NULL) active = &temp; + + bool toggle = false; // Required for individual toggles + + // Get substrings items from text (items pointers) + int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, rows); + + int prevRow = rows[0]; + + for (int i = 0; i < itemCount; i++) + { + if (prevRow != rows[i]) + { + bounds.x = initBoundsX; + bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); + prevRow = rows[i]; + } + + if (i == (*active)) + { + toggle = true; + GuiToggle(bounds, items[i], &toggle); + } + else + { + toggle = false; + GuiToggle(bounds, items[i], &toggle); + if (toggle) *active = i; + } + + bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); + } + + return result; +} + +// Toggle Slider control extended +int GuiToggleSlider(Rectangle bounds, const char *text, int *active) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + //bool toggle = false; // Required for individual toggles + + // Get substrings items from text (items pointers) + int itemCount = 0; + const char **items = NULL; + + if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); + + Rectangle slider = { + 0, // Calculated later depending on the active toggle + bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), + (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, + bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) + { + state = STATE_PRESSED; + (*active)++; + result = 1; + } + else state = STATE_FOCUSED; + } + + if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; + } + + if (*active >= itemCount) *active = 0; + slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), + GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); + + // Draw internal slider + if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); + else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + + // Draw text in slider + if (text != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(text); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = slider.x + slider.width/2 - textBounds.width/2; + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); + } + //-------------------------------------------------------------------- + + return result; +} + +// Check Box control, returns 1 when state changed +int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) +{ + int result = 0; + GuiState state = guiState; + + bool temp = false; + if (checked == NULL) checked = &temp; + + Rectangle textBounds = { 0 }; + + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + Rectangle totalBounds = { + (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, + bounds.y, + bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), + bounds.height, + }; + + // Check checkbox state + if (CheckCollisionPointRec(mousePoint, totalBounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) + { + *checked = !(*checked); + result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); + + if (*checked) + { + Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), + bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), + bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), + bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; + GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); + } + + GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Combo Box control +int GuiComboBox(Rectangle bounds, const char *text, int *active) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); + + Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), + (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; + + // Get substrings items from text (items pointers, lengths and count) + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, NULL); + + if (*active < 0) *active = 0; + else if (*active > (itemCount - 1)) *active = itemCount - 1; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (CheckCollisionPointRec(mousePoint, bounds) || + CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_PRESSED) + { + *active += 1; + if (*active >= itemCount) *active = 0; // Cyclic combobox + } + + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + // Draw combo box main + GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); + GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); + + // Draw selector using a custom button + // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + //-------------------------------------------------------------------- + + return result; +} + +// Dropdown Box control +// NOTE: Returns mouse click +int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + int itemSelected = *active; + int itemFocused = -1; + + int direction = 0; // Dropdown box open direction: down (default) + if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up + + // Get substrings items from text (items pointers, lengths and count) + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, NULL); + + Rectangle boundsOpen = bounds; + boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); + + Rectangle itemBounds = bounds; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (editMode) + { + state = STATE_PRESSED; + + // Check if mouse has been pressed or released outside limits + if (!CheckCollisionPointRec(mousePoint, boundsOpen)) + { + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; + } + + // Check if already selected item has been pressed again + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; + + // Check focused and selected item + for (int i = 0; i < itemCount; i++) + { + // Update item rectangle y position for next item + if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + + if (CheckCollisionPointRec(mousePoint, itemBounds)) + { + itemFocused = i; + if (GUI_BUTTON_RELEASED) + { + itemSelected = i; + result = 1; // Item selected + } + break; + } + } + + itemBounds = bounds; + } + else + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_PRESSED) + { + result = 1; + state = STATE_PRESSED; + } + else state = STATE_FOCUSED; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (editMode) GuiPanel(boundsOpen, NULL); + + GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); + GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); + + if (editMode) + { + // Draw visible items + for (int i = 0; i < itemCount; i++) + { + // Update item rectangle y position for next item + if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + + if (i == itemSelected) + { + GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); + GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); + } + else if (i == itemFocused) + { + GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); + GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); + } + else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); + } + } + + if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) + { + // Draw arrows (using icon if available) +#if defined(RAYGUI_NO_ICONS) + GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); +#else + GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL +#endif + } + //-------------------------------------------------------------------- + + *active = itemSelected; + + // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... + return result; // Mouse click: result = 1 +} + +// Text Box control +// NOTE: Returns true on ENTER pressed (useful for data validation) +int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) +{ + #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) + #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement + #endif + #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) + #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement + #endif + + int result = 0; + GuiState state = guiState; + + bool multiline = false; // TODO: Consider multiline text input + int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); + + Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); + int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length + int thisCursorIndex = textBoxCursorIndex; + if (thisCursorIndex > textLength) thisCursorIndex = textLength; + int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); + int textIndexOffset = 0; // Text index offset to start drawing in the box + + // Cursor rectangle + // NOTE: Position X value should be updated + Rectangle cursor = { + textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), + textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), + 2, + (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 + }; + + if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; + if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); + + // Mouse cursor rectangle + // NOTE: Initialized outside of screen + Rectangle mouseCursor = cursor; + mouseCursor.x = -1; + mouseCursor.width = 1; + + // Blink-cursor frame counter + //if (!autoCursorMode) blinkCursorFrameCounter++; + //else blinkCursorFrameCounter = 0; + + // Update control + //-------------------------------------------------------------------- + // WARNING: Text editing is only supported under certain conditions: + if ((state != STATE_DISABLED) && // Control not disabled + !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode + !guiLocked && // Gui not locked + !guiControlExclusiveMode && // No gui slider on dragging + (wrapMode == TEXT_WRAP_NONE)) // No wrap mode + { + Vector2 mousePosition = GUI_POINTER_POSITION; + + if (editMode) + { + // GLOBAL: Auto-cursor movement logic + // NOTE: Keystrokes are handled repeatedly when button is held down for some time + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; + else autoCursorCounter = 0; + + bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); + + state = STATE_PRESSED; + + if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; + + // If text does not fit in the textbox and current cursor position is out of bounds, + // adding an index offset to text for drawing only what requires depending on cursor + while (textWidth >= textBounds.width) + { + int nextCodepointSize = 0; + GetCodepointNext(text + textIndexOffset, &nextCodepointSize); + + textIndexOffset += nextCodepointSize; + + textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); + } + + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; + + // Encode codepoint as UTF-8 + int codepointSize = 0; + const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); + + // Handle text paste action + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + const char *pasteText = GetClipboardText(); + if (pasteText != NULL) + { + int pasteLength = 0; + int pasteCodepoint; + int pasteCodepointSize; + + // Count how many codepoints to copy, stopping at the first unwanted control character + while (true) + { + pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); + if (textLength + pasteLength + pasteCodepointSize >= textSize) break; + if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; + pasteLength += pasteCodepointSize; + } + + if (pasteLength > 0) + { + // Move forward data from cursor position + for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; + + // Paste data in at cursor + for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; + + textBoxCursorIndex += pasteLength; + textLength += pasteLength; + text[textLength] = '\0'; + } + } + } + else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) + { + // Adding codepoint to text, at current cursor position + + // Move forward data from cursor position + for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; + + // Add new codepoint in current cursor position + for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; + + textBoxCursorIndex += codepointSize; + textLength += codepointSize; + + // Make sure text last character is EOL + text[textLength] = '\0'; + } + + // Move cursor to start + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; + + // Move cursor to end + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; + + // Delete related codepoints from text, after current cursor position + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + int accCodepointSize = 0; + int nextCodepointSize; + int nextCodepoint; + + // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + bool puctuation = ispunct(nextCodepoint & 0xff); + while (offset < textLength) + { + if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) + break; + offset += nextCodepointSize; + accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Check whitespace to delete (ASCII only) + while (offset < textLength) + { + if (!isspace(nextCodepoint & 0xff)) break; + + offset += nextCodepointSize; + accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Move text after cursor forward (including final null terminator) + for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; + + textLength -= accCodepointSize; + } + + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) + { + // Delete single codepoint from text, after current cursor position + + int nextCodepointSize = 0; + GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; + + textLength -= nextCodepointSize; + } + + // Delete related codepoints from text, before current cursor position + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + int accCodepointSize = 0; + int prevCodepointSize = 0; + int prevCodepoint = 0; + + // Check whitespace to delete (ASCII only) + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if (!isspace(prevCodepoint & 0xff)) break; + + offset -= prevCodepointSize; + accCodepointSize += prevCodepointSize; + } + + // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + bool puctuation = ispunct(prevCodepoint & 0xff); + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; + + offset -= prevCodepointSize; + accCodepointSize += prevCodepointSize; + } + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; + + textLength -= accCodepointSize; + textBoxCursorIndex -= accCodepointSize; + } + + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) + { + // Delete single codepoint from text, before current cursor position + + int prevCodepointSize = 0; + + GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; + + textLength -= prevCodepointSize; + textBoxCursorIndex -= prevCodepointSize; + } + + // Move cursor position with keys + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + //int accCodepointSize = 0; + int prevCodepointSize = 0; + int prevCodepoint = 0; + + // Check whitespace to skip (ASCII only) + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if (!isspace(prevCodepoint & 0xff)) break; + + offset -= prevCodepointSize; + //accCodepointSize += prevCodepointSize; + } + + // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + bool puctuation = ispunct(prevCodepoint & 0xff); + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; + + offset -= prevCodepointSize; + //accCodepointSize += prevCodepointSize; + } + + textBoxCursorIndex = offset; + } + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) + { + int prevCodepointSize = 0; + GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); + + textBoxCursorIndex -= prevCodepointSize; + } + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + //int accCodepointSize = 0; + int nextCodepointSize; + int nextCodepoint; + + // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + bool puctuation = ispunct(nextCodepoint & 0xff); + while (offset < textLength) + { + if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; + + offset += nextCodepointSize; + //accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Check whitespace to skip (ASCII only) + while (offset < textLength) + { + if (!isspace(nextCodepoint & 0xff)) break; + + offset += nextCodepointSize; + //accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + textBoxCursorIndex = offset; + } + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) + { + int nextCodepointSize = 0; + GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); + + textBoxCursorIndex += nextCodepointSize; + } + + // Move cursor position with mouse + if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text + { + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; + int codepointIndex = 0; + float glyphWidth = 0.0f; + float widthToMouseX = 0; + int mouseCursorIndex = 0; + + for (int i = textIndexOffset; i < textLength; i += codepointSize) + { + codepoint = GetCodepointNext(&text[i], &codepointSize); + codepointIndex = GetGlyphIndex(guiFont, codepoint); + + if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); + else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); + + if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) + { + mouseCursor.x = textBounds.x + widthToMouseX; + mouseCursorIndex = i; + break; + } + + widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + + // Check if mouse cursor is at the last position + int textEndWidth = GuiGetTextWidth(text + textIndexOffset); + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) + { + mouseCursor.x = textBounds.x + textEndWidth; + mouseCursorIndex = textLength; + } + + // Place cursor at required index on mouse click + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) + { + cursor.x = mouseCursor.x; + textBoxCursorIndex = mouseCursorIndex; + } + } + else mouseCursor.x = -1; + + // Recalculate cursor position.y depending on textBoxCursorIndex + cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); + //if (multiline) cursor.y = GetTextLines() + + // Finish text editing on ENTER or mouse click outside bounds + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) + { + textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index + autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes + result = 1; + } + } + else + { + if (CheckCollisionPointRec(mousePosition, bounds)) + { + state = STATE_FOCUSED; + + if (GUI_BUTTON_PRESSED) + { + textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text + autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes + result = 1; + } + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_PRESSED) + { + GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); + } + else if (state == STATE_DISABLED) + { + GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); + } + else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); + + // Draw text considering index offset if required + // NOTE: Text index offset depends on cursor position + GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); + + // Draw cursor + if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) + { + //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); + + // Draw mouse position cursor (if required) + if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); + } + else if (state == STATE_FOCUSED) GuiTooltip(bounds); + //-------------------------------------------------------------------- + + return result; // Mouse button pressed: result = 1 +} + +/* +// Text Box control with multiple lines and word-wrap +// NOTE: This text-box is readonly, no editing supported by default +bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) +{ + bool pressed = false; + + GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); + GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); + + // TODO: Implement methods to calculate cursor position properly + pressed = GuiTextBox(bounds, text, textSize, editMode); + + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); + GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); + GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); + + return pressed; +} +*/ + +// Spinner control, returns selected value +int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) +{ + int result = 1; + GuiState state = guiState; + + int tempValue = *value; + + Rectangle valueBoxBounds = { + bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), + bounds.y, + bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; + Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; + Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, + (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check spinner state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + +#if defined(RAYGUI_NO_ICONS) + if (GuiButton(leftButtonBound, "<")) tempValue--; + if (GuiButton(rightButtonBound, ">")) tempValue++; +#else + if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; + if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; +#endif + + if (!editMode) + { + if (tempValue < minValue) tempValue = minValue; + if (tempValue > maxValue) tempValue = maxValue; + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); + + // Draw value selector custom buttons + // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + + // Draw text label if provided + GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + *value = tempValue; + return result; +} + +// Value Box control, updates input text with numbers +// NOTE: Requires static variables: frameCounter +int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) +{ + #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) + #define RAYGUI_VALUEBOX_MAX_CHARS 32 + #endif + + int result = 0; + GuiState state = guiState; + + char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; + snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + bool valueHasChanged = false; + + if (editMode) + { + state = STATE_PRESSED; + + int keyCount = (int)strlen(textValue); + + // Add or remove minus symbol + if (GUI_KEY_PRESSED(KEY_MINUS)) + { + if (textValue[0] == '-') + { + for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; + + keyCount--; + valueHasChanged = true; + } + else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) + { + if (keyCount == 0) + { + textValue[0] = '0'; + textValue[1] = '\0'; + keyCount++; + } + + for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; + + textValue[0] = '-'; + keyCount++; + valueHasChanged = true; + } + } + + // Add new digit to text value + if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) + { + int key = GUI_INPUT_KEY; + + // Only allow keys in range [48..57] + if ((key >= 48) && (key <= 57)) + { + textValue[keyCount] = (char)key; + keyCount++; + valueHasChanged = true; + } + } + + // Delete text + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) + { + keyCount--; + textValue[keyCount] = '\0'; + valueHasChanged = true; + } + + if (valueHasChanged) *value = TextToInteger(textValue); + + // NOTE: Values are not clamped until user input finishes + //if (*value > maxValue) *value = maxValue; + //else if (*value < minValue) *value = minValue; + + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) + { + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + + result = 1; + } + } + else + { + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + if (GUI_BUTTON_PRESSED) result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + Color baseColor = BLANK; + if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); + else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); + + GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); + GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); + + // Draw cursor rectangle + if (editMode) + { + // NOTE: ValueBox internal text is always centered + Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, + bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, + 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; + if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); + } + + // Draw text label if provided + GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Floating point Value Box control, updates input val_str with numbers +// NOTE: Requires static variables: frameCounter +int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) +{ + #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) + #define RAYGUI_VALUEBOX_MAX_CHARS 32 + #endif + + int result = 0; + GuiState state = guiState; + + //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; + //snprintf(textValue, sizeof(textValue), "%2.2f", *value); + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + bool valueHasChanged = false; + + if (editMode) + { + state = STATE_PRESSED; + + int keyCount = (int)strlen(textValue); + + // Add or remove minus symbol + if (GUI_KEY_PRESSED(KEY_MINUS)) + { + if (textValue[0] == '-') + { + for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; + + keyCount--; + valueHasChanged = true; + } + else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) + { + if (keyCount == 0) + { + textValue[0] = '0'; + textValue[1] = '\0'; + keyCount++; + } + + for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; + + textValue[0] = '-'; + keyCount++; + valueHasChanged = true; + } + } + + // Only allow keys in range [48..57] + if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) + { + if (GuiGetTextWidth(textValue) < bounds.width) + { + int key = GUI_INPUT_KEY; + if (((key >= 48) && (key <= 57)) || + (key == '.') || + ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position + ((keyCount == 0) && (key == '-'))) + { + textValue[keyCount] = (char)key; + keyCount++; + + valueHasChanged = true; + } + } + } + + // Pressed backspace + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) + { + if (keyCount > 0) + { + keyCount--; + textValue[keyCount] = '\0'; + valueHasChanged = true; + } + } + + if (valueHasChanged) *value = TextToFloat(textValue); + + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; + } + else + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + if (GUI_BUTTON_PRESSED) result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + Color baseColor = BLANK; + if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); + else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); + + GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); + GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); + + // Draw cursor + if (editMode) + { + // NOTE: ValueBox internal text is always centered + Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, + bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, + bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); + } + + // Draw text label if provided + GuiDrawText(text, textBounds, + (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, + GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Slider control with pro parameters +// NOTE: Other GuiSlider*() controls use this one +int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + GuiState state = guiState; + + float temp = (maxValue - minValue)/2.0f; + if (value == NULL) value = &temp; + float oldValue = *value; + + int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); + + Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), + 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + // Get equivalent value and slider position from mousePosition.x + *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + if (!CheckCollisionPointRec(mousePoint, slider)) + { + // Get equivalent value and slider position from mousePosition.x + *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; + } + } + else state = STATE_FOCUSED; + } + + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + } + + // Control value change check + if (oldValue == *value) result = 0; + else result = 1; + + // Slider bar limits check + float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); + if (sliderWidth > 0) // Slider + { + slider.x += sliderValue; + slider.width = (float)sliderWidth; + if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); + else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); + } + else if (sliderWidth == 0) // SliderBar + { + slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); + slider.width = sliderValue; + if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); + + // Draw slider internal bar (depends on state) + if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); + else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); + else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); + + // Draw left/right text if provided + if (textLeft != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textLeft); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + + if (textRight != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textRight); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + //-------------------------------------------------------------------- + + return result; +} + +// Slider Bar control extended, returns selected value +int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); + GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); + result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); + GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); + + return result; +} + +// Progress Bar control extended, shows current progress value +int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + GuiState state = guiState; + + float temp = (maxValue - minValue)/2.0f; + if (value == NULL) value = &temp; + + // Progress bar + Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), + bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, + bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; + + // Update control + //-------------------------------------------------------------------- + if (*value > maxValue) *value = maxValue; + + // WARNING: Working with floats could lead to rounding issues + if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_DISABLED) + { + GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); + } + else + { + if (*value > minValue) + { + // Draw progress bar with colored border, more visual + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + } + else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + + if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + else + { + // Draw borders not yet reached by value + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + } + + // Draw slider internal progress bar (depends on state) + GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); + } + + // Draw left/right text if provided + if (textLeft != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textLeft); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + + if (textRight != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textRight); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + //-------------------------------------------------------------------- + + return result; +} + +// Status Bar control +int GuiStatusBar(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); + GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Dummy rectangle control, intended for placeholding +int GuiDummyRec(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); + GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); + //------------------------------------------------------------------ + + return result; +} + +// List View control +int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) +{ + int result = 0; + int itemCount = 0; + const char **items = NULL; + + if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); + + result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); + + return result; +} + +// List View control with extended parameters +int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollIndex, int *active, int *focus) +{ + int result = 0; + GuiState state = guiState; + + int itemFocused = (focus == NULL)? -1 : *focus; + int itemSelected = (active == NULL)? -1 : *active; + + // Check if scroll bar is needed + bool useScrollBar = false; + if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; + + // Define base item rectangle [0] + Rectangle itemBounds = { 0 }; + itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); + itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); + itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); + itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); + if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); + + // Get items on the list + int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + if (visibleItems > count) visibleItems = count; + + int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; + if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; + int endIndex = startIndex + visibleItems; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check mouse inside list view + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + + // Check focused and selected item + for (int i = 0; i < visibleItems; i++) + { + if (CheckCollisionPointRec(mousePoint, itemBounds)) + { + itemFocused = startIndex + i; + if (GUI_BUTTON_PRESSED) + { + if (itemSelected == (startIndex + i)) itemSelected = -1; + else itemSelected = startIndex + i; + } + break; + } + + // Update item rectangle y position for next item + itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + } + + if (useScrollBar) + { + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; + + if (startIndex < 0) startIndex = 0; + else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; + + endIndex = startIndex + visibleItems; + if (endIndex > count) endIndex = count; + } + } + else itemFocused = -1; + + // Reset item rectangle y to [0] + itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background + + // Draw visible items + for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) + { + if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); + + if (state == STATE_DISABLED) + { + if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); + + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + } + else + { + if (((startIndex + i) == itemSelected) && (active != NULL)) + { + // Draw item selected + GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + } + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned + { + // Draw item focused + GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + } + else + { + // Draw item normal (no rectangle) + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + } + } + + // Update item rectangle y position for next item + itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + } + + if (useScrollBar) + { + Rectangle scrollBarBounds = { + bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), + bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), + bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) + }; + + // Calculate percentage of visible items and apply same percentage to scrollbar + float percentVisible = (float)(endIndex - startIndex)/count; + float sliderSize = bounds.height*percentVisible; + + int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size + int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed + + startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); + + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default + } + //-------------------------------------------------------------------- + + if (active != NULL) *active = itemSelected; + if (focus != NULL) *focus = itemFocused; + if (scrollIndex != NULL) *scrollIndex = startIndex; + + return result; +} + +// Color Panel control - Color (RGBA) variant +int GuiColorPanel(Rectangle bounds, const char *text, Color *color) +{ + int result = 0; + + Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; + Vector3 hsv = ConvertRGBtoHSV(vcolor); + Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv + + GuiColorPanelHSV(bounds, text, &hsv); + + // Check if the hsv was changed, only then change the color + // This is required, because the Color->HSV->Color conversion has precision errors + // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value + // Otherwise GuiColorPanel would often modify it's color without user input + // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check + if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) + { + Vector3 rgb = ConvertHSVtoRGB(hsv); + + // NOTE: Vector3ToColor() only available on raylib 1.8.1 + *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), + (unsigned char)(255.0f*rgb.y), + (unsigned char)(255.0f*rgb.z), + color->a }; + } + return result; +} + +// Color Bar Alpha control +// NOTE: Returns alpha value normalized [0..1] +int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) +{ + #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) + #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 + #endif + + int result = 0; + GuiState state = guiState; + Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, + (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), + (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), + (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + *alpha = (mousePoint.x - bounds.x)/bounds.width; + if (*alpha <= 0.0f) *alpha = 0.0f; + if (*alpha >= 1.0f) *alpha = 1.0f; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + *alpha = (mousePoint.x - bounds.x)/bounds.width; + if (*alpha <= 0.0f) *alpha = 0.0f; + if (*alpha >= 1.0f) *alpha = 1.0f; + //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + // Draw alpha bar: checked background + if (state != STATE_DISABLED) + { + int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; + int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; + + for (int x = 0; x < checksX; x++) + { + for (int y = 0; y < checksY; y++) + { + Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; + GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); + } + } + + DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); + } + else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + + // Draw alpha bar: selector + GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); + //-------------------------------------------------------------------- + + return result; +} + +// Color Bar Hue control +// Returns hue value normalized [0..1] +// NOTE: Other similar bars (for reference): +// Color GuiColorBarSat() [WHITE->color] +// Color GuiColorBarValue() [BLACK->color], HSV/HSL +// float GuiColorBarLuminance() [BLACK->WHITE] +int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) +{ + int result = 0; + GuiState state = guiState; + Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + *hue = (mousePoint.y - bounds.y)*360/bounds.height; + if (*hue <= 0.0f) *hue = 0.0f; + if (*hue >= 359.0f) *hue = 359.0f; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + *hue = (mousePoint.y - bounds.y)*360/bounds.height; + if (*hue <= 0.0f) *hue = 0.0f; + if (*hue >= 359.0f) *hue = 359.0f; + + } + else state = STATE_FOCUSED; + + /*if (GUI_KEY_DOWN(KEY_UP)) + { + hue -= 2.0f; + if (hue <= 0.0f) hue = 0.0f; + } + else if (GUI_KEY_DOWN(KEY_DOWN)) + { + hue += 2.0f; + if (hue >= 360.0f) hue = 360.0f; + }*/ + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state != STATE_DISABLED) + { + // Draw hue bar:color bars + // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); + } + else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + + // Draw hue bar: selector + GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); + //-------------------------------------------------------------------- + + return result; +} + +// Color Picker control +// NOTE: It's divided in multiple controls: +// Color GuiColorPanel(Rectangle bounds, Color color) +// float GuiColorBarAlpha(Rectangle bounds, float alpha) +// float GuiColorBarHue(Rectangle bounds, float value) +// NOTE: bounds define GuiColorPanel() size +// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead +int GuiColorPicker(Rectangle bounds, const char *text, Color *color) +{ + int result = 0; + + Color temp = { 200, 0, 0, 255 }; + if (color == NULL) color = &temp; + + GuiColorPanel(bounds, NULL, color); + + Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; + //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; + + // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used + Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); + + GuiColorBarHue(boundsHue, NULL, &hsv.x); + + //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); + Vector3 rgb = ConvertHSVtoRGB(hsv); + + *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; + + return result; +} + +// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering +// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB +// NOTE: It's divided in multiple controls: +// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) +// float GuiColorBarHue(Rectangle bounds, float value) +// NOTE: bounds define GuiColorPanelHSV() size +int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +{ + int result = 0; + + Vector3 tempHsv = { 0 }; + + if (colorHsv == NULL) + { + const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; + tempHsv = ConvertRGBtoHSV(tempColor); + colorHsv = &tempHsv; + } + + GuiColorPanelHSV(bounds, NULL, colorHsv); + + const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; + + GuiColorBarHue(boundsHue, NULL, &colorHsv->x); + + return result; +} + +// Color Panel control - HSV variant +int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +{ + int result = 0; + GuiState state = guiState; + Vector2 pickerSelector = { 0 }; + + const Color colWhite = { 255, 255, 255, 255 }; + const Color colBlack = { 0, 0, 0, 255 }; + + pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation + pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value + + Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; + Vector3 rgbHue = ConvertHSVtoRGB(maxHue); + Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), + (unsigned char)(255.0f*rgbHue.y), + (unsigned char)(255.0f*rgbHue.z), 255 }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + pickerSelector = mousePoint; + + if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; + if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; + if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; + if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; + + // Calculate color from picker + Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; + + colorPick.x /= (float)bounds.width; // Get normalized value on x + colorPick.y /= (float)bounds.height; // Get normalized value on y + + colorHsv->y = colorPick.x; + colorHsv->z = 1.0f - colorPick.y; + + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; + pickerSelector = mousePoint; + + // Calculate color from picker + Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; + + colorPick.x /= (float)bounds.width; // Get normalized value on x + colorPick.y /= (float)bounds.height; // Get normalized value on y + + colorHsv->y = colorPick.x; + colorHsv->z = 1.0f - colorPick.y; + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state != STATE_DISABLED) + { + DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); + DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); + + // Draw color picker: selector + Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; + GuiDrawRectangle(selector, 0, BLANK, colWhite); + } + else + { + DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); + } + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + //-------------------------------------------------------------------- + + return result; +} + +// Message Box control +int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) +{ + #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) + #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 + #endif + #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) + #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 + #endif + + int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button + + int buttonCount = 0; + const char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); + Rectangle buttonBounds = { 0 }; + buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; + buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; + buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; + + //int textWidth = GuiGetTextWidth(message) + 2; + + Rectangle textBounds = { 0 }; + textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; + textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; + + // Draw control + //-------------------------------------------------------------------- + if (GuiWindowBox(bounds, title)) result = 0; + + int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(textBounds, message); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); + + prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + for (int i = 0; i < buttonCount; i++) + { + if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; + buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); + } + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); + //-------------------------------------------------------------------- + + return result; +} + +// Text Input Box control, ask for text +int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) +{ + #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) + #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 + #endif + #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) + #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 + #endif + #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) + #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 + #endif + + // Used to enable text edit mode + // WARNING: No more than one GuiTextInputBox() should be open at the same time + static bool textEditMode = false; + + int result = -1; + + int buttonCount = 0; + const char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); + Rectangle buttonBounds = { 0 }; + buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; + buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; + + int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + + Rectangle textBounds = { 0 }; + if (message != NULL) + { + int textSize = GuiGetTextWidth(message) + 2; + + textBounds.x = bounds.x + bounds.width/2 - textSize/2; + textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + textBounds.width = (float)textSize; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + } + + Rectangle textBoxBounds = { 0 }; + textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; + if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); + textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; + textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; + + // Draw control + //-------------------------------------------------------------------- + if (GuiWindowBox(bounds, title)) result = 0; + + // Draw message if available + if (message != NULL) + { + int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(textBounds, message); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); + } + + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + + if (secretViewActive != NULL) + { + static char stars[] = "****************"; + if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, + ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; + + GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); + } + else + { + if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; + } + + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + for (int i = 0; i < buttonCount; i++) + { + if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; + buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); + } + + if (result >= 0) textEditMode = false; + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); + //-------------------------------------------------------------------- + + return result; // Result is the pressed button index +} + +// Grid control +// NOTE: Returns grid mouse-hover selected cell +// About drawing lines at subpixel spacing, simple put, not easy solution: +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) +{ + // Grid lines alpha amount + #if !defined(RAYGUI_GRID_ALPHA) + #define RAYGUI_GRID_ALPHA 0.15f + #endif + + int result = 0; + GuiState state = guiState; + + Vector2 mousePoint = GUI_POINTER_POSITION; + Vector2 currentMouseCell = { -1, -1 }; + + float spaceWidth = spacing/(float)subdivs; + int linesV = (int)(bounds.width/spaceWidth) + 1; + int linesH = (int)(bounds.height/spaceWidth) + 1; + + int color = GuiGetStyle(DEFAULT, LINE_COLOR); + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + // NOTE: Cell values must be the upper left of the cell the mouse is in + currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); + currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); + + if (subdivs > 0) + { + // Draw vertical grid lines + for (int i = 0; i < linesV; i++) + { + Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; + GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); + } + + // Draw horizontal grid lines + for (int i = 0; i < linesH; i++) + { + Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; + GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); + } + } + + if (mouseCell != NULL) *mouseCell = currentMouseCell; + return result; +} + +//---------------------------------------------------------------------------------- +// Tooltip management functions +// NOTE: Tooltips requires some global variables: tooltipPtr +//---------------------------------------------------------------------------------- +// Enable gui tooltips (global state) +void GuiEnableTooltip(void) { guiTooltip = true; } + +// Disable gui tooltips (global state) +void GuiDisableTooltip(void) { guiTooltip = false; } + +// Set tooltip string +void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } + +//---------------------------------------------------------------------------------- +// Styles loading functions +//---------------------------------------------------------------------------------- + +// Load raygui style file (.rgs) +// NOTE: By default a binary file is expected, that file could contain a custom font, +// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) +void GuiLoadStyle(const char *fileName) +{ + #define MAX_LINE_BUFFER_SIZE 256 + + bool tryBinary = false; + if (!guiStyleLoaded) GuiLoadStyleDefault(); + + // Try reading the files as text file first + FILE *rgsFile = fopen(fileName, "rt"); + + if (rgsFile != NULL) + { + char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; + fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); + + if (buffer[0] == '#') + { + int controlId = 0; + int propertyId = 0; + unsigned int propertyValue = 0; + + while (!feof(rgsFile)) + { + switch (buffer[0]) + { + case 'p': + { + // Style property: p + + sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); + GuiSetStyle(controlId, propertyId, (int)propertyValue); + + } break; + case 'f': + { + // Style font: f + + int fontSize = 0; + char charmapFileName[256] = { 0 }; + char fontFileName[256] = { 0 }; + sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); + + Font font = { 0 }; + int *codepoints = NULL; + int codepointCount = 0; + + if (charmapFileName[0] != '0') + { + // Load text data from file + // NOTE: Expected an UTF-8 array of codepoints, no separation + char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); + codepoints = LoadCodepoints(textData, &codepointCount); + UnloadFileText(textData); + } + + if (fontFileName[0] != '\0') + { + // In case a font is already loaded and it is not default internal font, unload it + if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); + + if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); + else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints + } + + // If font texture not properly loaded, revert to default font and size/spacing + if (font.texture.id == 0) + { + font = GetFontDefault(); + GuiSetStyle(DEFAULT, TEXT_SIZE, 10); + GuiSetStyle(DEFAULT, TEXT_SPACING, 1); + } + + UnloadCodepoints(codepoints); + + if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); + + } break; + default: break; + } + + fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); + } + } + else tryBinary = true; + + fclose(rgsFile); + } + + if (tryBinary) + { + rgsFile = fopen(fileName, "rb"); + + if (rgsFile != NULL) + { + fseek(rgsFile, 0, SEEK_END); + int fileDataSize = ftell(rgsFile); + fseek(rgsFile, 0, SEEK_SET); + + if (fileDataSize > 0) + { + unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + + GuiLoadStyleFromMemory(fileData, fileDataSize); + + RAYGUI_FREE(fileData); + } + } + + fclose(rgsFile); + } + } +} + +// Load style default over global style +void GuiLoadStyleDefault(void) +{ + // Setting this flag first to avoid cyclic function calls + // when calling GuiSetStyle() and GuiGetStyle() + guiStyleLoaded = true; + + // Initialize default LIGHT style property values + // WARNING: Default value are applied to all controls on set but + // they can be overwritten later on for every custom control + GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); + GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); + GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); + GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); + GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); + GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); + GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); + GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); + GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); + GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); + GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); + GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); + GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); + GuiSetStyle(DEFAULT, TEXT_PADDING, 0); + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + // Initialize default extended property values + // NOTE: By default, extended property values are initialized to 0 + GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls + GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls + GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property + GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds + + // Initialize control-specific property values + // NOTE: Those properties are in default list but require specific values by control type + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 2); + GuiSetStyle(SLIDER, TEXT_PADDING, 4); + GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); + GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); + GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); + GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); + GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); + GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); + GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + + // Initialize extended property values + // NOTE: By default, extended property values are initialized to 0 + GuiSetStyle(TOGGLE, GROUP_PADDING, 2); + GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); + GuiSetStyle(SLIDER, SLIDER_PADDING, 1); + GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); + GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); + GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); + GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); + GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); + GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); + GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); + GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); + GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); + GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); + GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); + GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); + GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); + GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); + GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); + GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); + GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); + GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); + GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); + GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); + GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); + GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); + + if (guiFont.texture.id != GetFontDefault().texture.id) + { + // Unload previous font texture + UnloadTexture(guiFont.texture); + RAYGUI_FREE(guiFont.recs); + RAYGUI_FREE(guiFont.glyphs); + guiFont.recs = NULL; + guiFont.glyphs = NULL; + + // Setup default raylib font + guiFont = GetFontDefault(); + + // NOTE: Default raylib font character 95 is a white square + Rectangle whiteChar = guiFont.recs[95]; + + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); + } +} + +// Get text with icon id prepended +// NOTE: Useful to add icons by name id (enum) instead of +// a number that can change between ricon versions +const char *GuiIconText(int iconId, const char *text) +{ +#if defined(RAYGUI_NO_ICONS) + return NULL; +#else + static char buffer[1024] = { 0 }; + static char iconBuffer[16] = { 0 }; + + if (text != NULL) + { + memset(buffer, 0, 1024); + snprintf(buffer, 1024, "#%03i#", iconId); + + for (int i = 5; i < 1024; i++) + { + buffer[i] = text[i - 5]; + if (text[i - 5] == '\0') break; + } + + return buffer; + } + else + { + snprintf(iconBuffer, 16, "#%03i#", iconId); + + return iconBuffer; + } +#endif +} + +#if !defined(RAYGUI_NO_ICONS) +// Get full icons data pointer +unsigned int *GuiGetIcons(void) { return guiIconsPtr; } + +// Load raygui icons file (.rgi) +// NOTE: In case nameIds are required, they can be requested with loadIconsName, +// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], +// WARNING: guiIconsName[]][] memory should be manually freed! +char **GuiLoadIcons(const char *fileName, bool loadIconsName) +{ + // Style File Structure (.rgi) + // ------------------------------------------------------ + // Offset | Size | Type | Description + // ------------------------------------------------------ + // 0 | 4 | char | Signature: "rGI " + // 4 | 2 | short | Version: 100 + // 6 | 2 | short | reserved + + // 8 | 2 | short | Num icons (N) + // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) + + // Icons name id (32 bytes per name id) + // foreach (icon) + // { + // 12+32*i | 32 | char | Icon NameId + // } + + // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) + // S*S pixels/32bit per unsigned int = K unsigned int per icon + // foreach (icon) + // { + // ... | K | unsigned int | Icon Data + // } + + FILE *rgiFile = fopen(fileName, "rb"); + + char **guiIconsName = NULL; + + if (rgiFile != NULL) + { + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + short iconCount = 0; + short iconSize = 0; + + fread(signature, 1, 4, rgiFile); + fread(&version, sizeof(short), 1, rgiFile); + fread(&reserved, sizeof(short), 1, rgiFile); + fread(&iconCount, sizeof(short), 1, rgiFile); + fread(&iconSize, sizeof(short), 1, rgiFile); + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'I') && + (signature[3] == ' ')) + { + if (loadIconsName) + { + guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); + for (int i = 0; i < iconCount; i++) + { + guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); + fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); + } + } + else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); + + // Read icons data directly over internal icons array + fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); + } + + fclose(rgiFile); + } + + return guiIconsName; +} + +// Load icons from memory +// WARNING: Binary files only +char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) +{ + unsigned char *fileDataPtr = (unsigned char *)fileData; + char **guiIconsName = NULL; + + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + short iconCount = 0; + short iconSize = 0; + + memcpy(signature, fileDataPtr, 4); + memcpy(&version, fileDataPtr + 4, sizeof(short)); + memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); + memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); + memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); + fileDataPtr += 12; + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'I') && + (signature[3] == ' ')) + { + if (loadIconsName) + { + guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); + for (int i = 0; i < iconCount; i++) + { + guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); + memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); + fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; + } + } + else + { + // Skip icon name data if not required + fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; + } + + int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); + guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); + + memcpy(guiIconsPtr, fileDataPtr, iconDataSize); + } + + return guiIconsName; +} + +// Draw selected icon using rectangles pixel-by-pixel +void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) +{ + #define BIT_CHECK(a,b) ((a) & (1u<<(b))) + + for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) + { + for (int k = 0; k < 32; k++) + { + if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) + { + #if !defined(RAYGUI_STANDALONE) + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); + #endif + } + + if ((k == 15) || (k == 31)) y++; + } + } +} + +// Set icon drawing size +void GuiSetIconScale(int scale) +{ + if (scale >= 1) guiIconScale = scale; +} + +// Get text width considering gui style and icon size (if required) +int GuiGetTextWidth(const char *text) +{ + #if !defined(ICON_TEXT_PADDING) + #define ICON_TEXT_PADDING 4 + #endif + + Vector2 textSize = { 0 }; + int textIconOffset = 0; + + if ((text != NULL) && (text[0] != '\0')) + { + if (text[0] == '#') + { + for (int i = 1; (i < 5) && (text[i] != '\0'); i++) + { + if (text[i] == '#') + { + textIconOffset = i; + break; + } + } + } + + text += textIconOffset; + + // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly + float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + + // Custom MeasureText() implementation + if ((guiFont.texture.id > 0) && (text != NULL)) + { + // Get size in bytes of text, considering end of line and line break + int size = 0; + for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) + { + if ((text[i] != '\0') && (text[i] != '\n')) size++; + else break; + } + + float scaleFactor = fontSize/(float)guiFont.baseSize; + textSize.y = (float)guiFont.baseSize*scaleFactor; + float glyphWidth = 0.0f; + + for (int i = 0, codepointSize = 0; i < size; i += codepointSize) + { + int codepoint = GetCodepointNext(&text[i], &codepointSize); + int codepointIndex = GetGlyphIndex(guiFont, codepoint); + + if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); + else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); + + textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + } + + if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); + } + + return (int)textSize.x; +} + +#endif // !RAYGUI_NO_ICONS + +//---------------------------------------------------------------------------------- +// Module Internal Functions Definition +//---------------------------------------------------------------------------------- +// Load style from memory +// WARNING: Binary files only +static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) +{ + unsigned char *fileDataPtr = (unsigned char *)fileData; + + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + int propertyCount = 0; + + memcpy(signature, fileDataPtr, 4); + memcpy(&version, fileDataPtr + 4, sizeof(short)); + memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); + memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); + fileDataPtr += 12; + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'S') && + (signature[3] == ' ')) + { + short controlId = 0; + short propertyId = 0; + unsigned int propertyValue = 0; + + for (int i = 0; i < propertyCount; i++) + { + memcpy(&controlId, fileDataPtr, sizeof(short)); + memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); + memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); + fileDataPtr += 8; + + if (controlId == 0) // DEFAULT control + { + // If a DEFAULT property is loaded, it is propagated to all controls + // NOTE: All DEFAULT properties should be defined first in the file + GuiSetStyle(0, (int)propertyId, propertyValue); + + if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); + } + else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); + } + + // Font loading is highly dependant on raylib API to load font data and image + +#if !defined(RAYGUI_STANDALONE) + // Load custom font if available + int fontDataSize = 0; + memcpy(&fontDataSize, fileDataPtr, sizeof(int)); + fileDataPtr += 4; + + if (fontDataSize > 0) + { + Font font = { 0 }; + int fontType = 0; // 0-Normal, 1-SDF + + memcpy(&font.baseSize, fileDataPtr, sizeof(int)); + memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); + memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); + fileDataPtr += 12; + + // Load font white rectangle + Rectangle fontWhiteRec = { 0 }; + memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); + fileDataPtr += 16; + + // Load font image parameters + int fontImageUncompSize = 0; + int fontImageCompSize = 0; + memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); + memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); + fileDataPtr += 8; + + Image imFont = { 0 }; + imFont.mipmaps = 1; + memcpy(&imFont.width, fileDataPtr, sizeof(int)); + memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); + memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); + fileDataPtr += 12; + + if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) + { + // Compressed font atlas image data (DEFLATE), it requires DecompressData() + int dataUncompSize = 0; + unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); + memcpy(compData, fileDataPtr, fontImageCompSize); + fileDataPtr += fontImageCompSize; + + imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); + + // Security check, dataUncompSize must match the provided fontImageUncompSize + if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); + + RAYGUI_FREE(compData); + } + else + { + // Font atlas image data is not compressed + imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); + memcpy(imFont.data, fileDataPtr, fontImageUncompSize); + fileDataPtr += fontImageUncompSize; + } + + if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); + font.texture = LoadTextureFromImage(imFont); + + RAYGUI_FREE(imFont.data); + + // Validate font atlas texture was loaded correctly + if (font.texture.id != 0) + { + // Load font recs data + int recsDataSize = font.glyphCount*sizeof(Rectangle); + int recsDataCompressedSize = 0; + + // WARNING: Version 400 adds the compression size parameter + if (version >= 400) + { + // RGS files version 400 support compressed recs data + memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); + fileDataPtr += sizeof(int); + } + + if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) + { + // Recs data is compressed, uncompress it + unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); + + memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); + fileDataPtr += recsDataCompressedSize; + + int recsDataUncompSize = 0; + font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); + + // Security check, data uncompressed size must match the expected original data size + if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); + + RAYGUI_FREE(recsDataCompressed); + } + else + { + // Recs data is uncompressed + font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); + fileDataPtr += sizeof(Rectangle); + } + } + + // Load font glyphs info data + int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph + int glyphsDataCompressedSize = 0; + + // WARNING: Version 400 adds the compression size parameter + if (version >= 400) + { + // RGS files version 400 support compressed glyphs data + memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); + fileDataPtr += sizeof(int); + } + + // Allocate required glyphs space to fill with data + font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); + + if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) + { + // Glyphs data is compressed, uncompress it + unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); + + memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); + fileDataPtr += glyphsDataCompressedSize; + + int glyphsDataUncompSize = 0; + unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); + + // Security check, data uncompressed size must match the expected original data size + if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); + + unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; + + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); + memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); + memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); + memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); + glyphsDataUncompPtr += 16; + } + + RAYGUI_FREE(glypsDataCompressed); + RAYGUI_FREE(glyphsDataUncomp); + } + else + { + // Glyphs data is uncompressed + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); + memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); + memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); + memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); + fileDataPtr += 16; + } + } + } + else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture + + GuiSetFont(font); + + // Set font texture source rectangle to be used as white texture to draw shapes + // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call + if ((fontWhiteRec.x > 0) && + (fontWhiteRec.y > 0) && + (fontWhiteRec.width > 0) && + (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); + } +#endif + } +} + +// Get text bounds considering control bounds +static Rectangle GetTextBounds(int control, Rectangle bounds) +{ + Rectangle textBounds = bounds; + + textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); + textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); + textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); + textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! + + // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds + switch (control) + { + case COMBOBOX: + case DROPDOWNBOX: + case LISTVIEW: + // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW + case SLIDER: + case CHECKBOX: + case VALUEBOX: + case CONTROL11: + // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER + default: + { + // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() + if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); + else textBounds.x += GuiGetStyle(control, TEXT_PADDING); + } + break; + } + + return textBounds; +} + +// Get text icon if provided and move text cursor +// NOTE: Up to #999# values supported for iconId +static const char *GetTextIcon(const char *text, int *iconId) +{ +#if !defined(RAYGUI_NO_ICONS) + *iconId = -1; + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found + { + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + + int pos = 1; + while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) + { + iconValue[pos - 1] = text[pos]; + pos++; + } + + if (text[pos] == '#') + { + *iconId = TextToInteger(iconValue); + + // Move text pointer after icon + // WARNING: If only icon provided, it could point to EOL character: '\0' + if (*iconId >= 0) text += (pos + 1); + } + } +#endif + + return text; +} + +// Get text divided into lines (by line-breaks '\n') +// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! +static const char **GetTextLines(const char *text, int *count) +{ + #define RAYGUI_MAX_TEXT_LINES 128 + + static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; + for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings + + int textLength = (int)strlen(text); + + lines[0] = text; + *count = 1; + + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + { + if (text[i] == '\n') + { + k++; + lines[k] = &text[i + 1]; // WARNING: next value is valid? + *count += 1; + } + } + + return lines; +} + +// Get text width to next space for provided string +static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) +{ + float width = 0; + int codepointByteCount = 0; + int codepoint = 0; + int index = 0; + float glyphWidth = 0; + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; + + for (int i = 0; text[i] != '\0'; i++) + { + if (text[i] != ' ') + { + codepoint = GetCodepoint(&text[i], &codepointByteCount); + index = GetGlyphIndex(guiFont, codepoint); + glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; + width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + else + { + *nextSpaceIndex = i; + break; + } + } + + return width; +} + +// Gui draw text using default font +static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) +{ + #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect + + #if !defined(ICON_TEXT_PADDING) + #define ICON_TEXT_PADDING 4 + #endif + + if ((text == NULL) || (text[0] == '\0')) return; // Security check + + // PROCEDURE: + // - Text is processed line per line + // - For every line, horizontal alignment is defined + // - For all text, vertical alignment is defined (multiline text only) + // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) + + // Get text lines (using '\n' as delimiter) to be processed individually + // WARNING: GuiTextSplit() function can't be used now because it can have already been used + // before the GuiDrawText() call and its buffer is static, it would be overriden :( + int lineCount = 0; + const char **lines = GetTextLines(text, &lineCount); + + // Text style variables + //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); + int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); + int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing + + // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + float posOffsetY = 0.0f; + + for (int i = 0; i < lineCount; i++) + { + int iconId = 0; + lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor + + // Get text position depending on alignment and iconId + //--------------------------------------------------------------------------------- + Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; + float textBoundsWidthOffset = 0.0f; + + // NOTE: Get text size after icon has been processed + // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? + int textSizeX = GuiGetTextWidth(lines[i]); + + // If text requires an icon, add size to measure + if (iconId >= 0) + { + textSizeX += RAYGUI_ICON_SIZE*guiIconScale; + + // WARNING: If only icon provided, text could be pointing to EOF character: '\0' +#if !defined(RAYGUI_NO_ICONS) + if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; +#endif + } + + // Check guiTextAlign global variables + switch (alignment) + { + case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; + case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; + case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; + default: break; + } + + if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; + + switch (alignmentVertical) + { + // Only valid in case of wordWrap = 0; + case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; + case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; + case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; + default: break; + } + + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts + textBoundsPosition.x = (float)((int)textBoundsPosition.x); + textBoundsPosition.y = (float)((int)textBoundsPosition.y); + //--------------------------------------------------------------------------------- + + // Draw text (with icon if available) + //--------------------------------------------------------------------------------- +#if !defined(RAYGUI_NO_ICONS) + if (iconId >= 0) + { + // NOTE: Considering icon height, probably different than text size + GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); + textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); + textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); + } +#endif + // Get size in bytes of text, + // considering end of line and line break + int lineSize = 0; + for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; + + int lastSpaceIndex = 0; + bool tempWrapCharMode = false; + + int textOffsetY = 0; + float textOffsetX = 0.0f; + float glyphWidth = 0; + + int ellipsisWidth = GuiGetTextWidth("..."); + bool textOverflow = false; + for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) + { + int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); + int index = GetGlyphIndex(guiFont, codepoint); + + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte + if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size + + // Get glyph width to check if it goes out of bounds + if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); + else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; + + // Wrap mode text measuring, to validate if + // it can be drawn or a new line is required + if (wrapMode == TEXT_WRAP_CHAR) + { + // Jump to next line if current character reach end of the box limits + if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) + { + textOffsetX = 0.0f; + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + + if (tempWrapCharMode) // Wrap at char level when too long words + { + wrapMode = TEXT_WRAP_WORD; + tempWrapCharMode = false; + } + } + } + else if (wrapMode == TEXT_WRAP_WORD) + { + if (codepoint == 32) lastSpaceIndex = c; + + // Get width to next space in line + int nextSpaceIndex = 0; + float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); + + int nextSpaceIndex2 = 0; + float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); + + if (nextWordSize > textBounds.width - textBoundsWidthOffset) + { + // Considering the case the next word is longer than bounds + tempWrapCharMode = true; + wrapMode = TEXT_WRAP_CHAR; + } + else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) + { + textOffsetX = 0.0f; + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + } + } + + if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint + else + { + // TODO: There are multiple types of spaces in Unicode, + // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html + if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph + { + if (wrapMode == TEXT_WRAP_NONE) + { + // Draw only required text glyphs fitting the textBounds.width + if (textSizeX > textBounds.width) + { + if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + else if (!textOverflow) + { + textOverflow = true; + + for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) + { + DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + } + else + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) + { + // Draw only glyphs inside the bounds + if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + } + + if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + } + + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + //--------------------------------------------------------------------------------- + } + +#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) + GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); +#endif +} + +// Gui draw rectangle using default raygui plain style with borders +static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) +{ + if (color.a > 0) + { + // Draw rectangle filled with color + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); + } + + if (borderWidth > 0) + { + // Draw rectangle border lines with color + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); + } + +#if defined(RAYGUI_DEBUG_RECS_BOUNDS) + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); +#endif +} + +// Draw tooltip using control bounds +static void GuiTooltip(Rectangle controlRec) +{ + if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) + { + Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + + if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); + + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); + + int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); + int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_PADDING, 0); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); + GuiSetStyle(LABEL, TEXT_PADDING, textPadding); + } +} + +// Split controls text into multiple strings +// Also check for multiple columns (required by GuiToggleGroup()) +static const char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) +{ + // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) + // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, + // all used memory is static... it has some limitations: + // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS + // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE + // NOTE: Those definitions could be externally provided if required + + // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user + // textRow is an externally provided array of integers that stores row number for every splitted string + + #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) + #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 + #endif + #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) + #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 + #endif + + static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) + static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) + memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); + + result[0] = buffer; + int counter = 1; + + if (textRow != NULL) textRow[0] = 0; + + // Count how many substrings text contains and point to every one of them + for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) + { + buffer[i] = text[i]; + if (buffer[i] == '\0') break; + else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) + { + result[counter] = buffer + i + 1; + + if (textRow != NULL) + { + if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; + else textRow[counter] = textRow[counter - 1]; + } + + buffer[i] = '\0'; // Set an end of string at this point + + counter++; + if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; + } + } + + *count = counter; + + return result; +} + +// Convert color data from RGB to HSV +// NOTE: Color data should be passed normalized +static Vector3 ConvertRGBtoHSV(Vector3 rgb) +{ + Vector3 hsv = { 0 }; + float min = 0.0f; + float max = 0.0f; + float delta = 0.0f; + + min = (rgb.x < rgb.y)? rgb.x : rgb.y; + min = (min < rgb.z)? min : rgb.z; + + max = (rgb.x > rgb.y)? rgb.x : rgb.y; + max = (max > rgb.z)? max : rgb.z; + + hsv.z = max; // Value + delta = max - min; + + if (delta < 0.00001f) + { + hsv.y = 0.0f; + hsv.x = 0.0f; // Undefined, maybe NAN? + return hsv; + } + + if (max > 0.0f) + { + // NOTE: If max is 0, this divide would cause a crash + hsv.y = (delta/max); // Saturation + } + else + { + // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined + hsv.y = 0.0f; + hsv.x = 0.0f; // Undefined, maybe NAN? + return hsv; + } + + // NOTE: Comparing float values could not work properly + if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta + else + { + if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow + else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan + } + + hsv.x *= 60.0f; // Convert to degrees + + if (hsv.x < 0.0f) hsv.x += 360.0f; + + return hsv; +} + +// Convert color data from HSV to RGB +// NOTE: Color data should be passed normalized +static Vector3 ConvertHSVtoRGB(Vector3 hsv) +{ + Vector3 rgb = { 0 }; + float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; + long i = 0; + + // NOTE: Comparing float values could not work properly + if (hsv.y <= 0.0f) + { + rgb.x = hsv.z; + rgb.y = hsv.z; + rgb.z = hsv.z; + return rgb; + } + + hh = hsv.x; + if (hh >= 360.0f) hh = 0.0f; + hh /= 60.0f; + + i = (long)hh; + ff = hh - i; + p = hsv.z*(1.0f - hsv.y); + q = hsv.z*(1.0f - (hsv.y*ff)); + t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); + + switch (i) + { + case 0: + { + rgb.x = hsv.z; + rgb.y = t; + rgb.z = p; + } break; + case 1: + { + rgb.x = q; + rgb.y = hsv.z; + rgb.z = p; + } break; + case 2: + { + rgb.x = p; + rgb.y = hsv.z; + rgb.z = t; + } break; + case 3: + { + rgb.x = p; + rgb.y = q; + rgb.z = hsv.z; + } break; + case 4: + { + rgb.x = t; + rgb.y = p; + rgb.z = hsv.z; + } break; + case 5: + default: + { + rgb.x = hsv.z; + rgb.y = p; + rgb.z = q; + } break; + } + + return rgb; +} + +// Scroll bar control (used by GuiScrollPanel()) +static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) +{ + GuiState state = guiState; + + // Is the scrollbar horizontal or vertical? + bool isVertical = (bounds.width > bounds.height)? false : true; + + // The size (width or height depending on scrollbar type) of the spinner buttons + const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? + (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : + (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; + + // Arrow buttons [<] [>] [∧] [∨] + Rectangle arrowUpLeft = { 0 }; + Rectangle arrowDownRight = { 0 }; + + // Actual area of the scrollbar excluding the arrow buttons + Rectangle scrollbar = { 0 }; + + // Slider bar that moves --[///]----- + Rectangle slider = { 0 }; + + // Normalize value + if (value > maxValue) value = maxValue; + if (value < minValue) value = minValue; + + int valueRange = maxValue - minValue; + if (valueRange <= 0) valueRange = 1; + + int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); + if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size + + // Calculate rectangles for all of the components + arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ + (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), + (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), + (float)spinnerSize, (float)spinnerSize }; + + if (isVertical) + { + arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; + scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; + + // Make sure the slider won't get outside of the scrollbar + sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; + slider = RAYGUI_CLITERAL(Rectangle){ + bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), + scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), + bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), + (float)sliderSize }; + } + else // horizontal + { + arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; + scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; + + // Make sure the slider won't get outside of the scrollbar + sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; + slider = RAYGUI_CLITERAL(Rectangle){ + scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), + bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), + (float)sliderSize, + bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN && + !CheckCollisionPointRec(mousePoint, arrowUpLeft) && + !CheckCollisionPointRec(mousePoint, arrowDownRight)) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); + else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + + // Handle mouse wheel + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; + + // Handle mouse button down + if (GUI_BUTTON_PRESSED) + { + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + // Check arrows click + if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + else if (!CheckCollisionPointRec(mousePoint, slider)) + { + // If click on scrollbar position but not on slider, place slider directly on that position + if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); + else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); + } + + state = STATE_PRESSED; + } + + // Keyboard control on mouse hover scrollbar + /* + if (isVertical) + { + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; + } + else + { + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; + } + */ + } + + // Normalize value + if (value > maxValue) value = maxValue; + if (value < minValue) value = minValue; + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background + + GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background + GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar + + // Draw arrows (using icon if available) + if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) + { +#if defined(RAYGUI_NO_ICONS) + GuiDrawText(isVertical? "^" : "<", + RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); + GuiDrawText(isVertical? "v" : ">", + RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); +#else + GuiDrawText(isVertical? "#121#" : "#118#", + RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL + GuiDrawText(isVertical? "#120#" : "#119#", + RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL +#endif + } + //-------------------------------------------------------------------- + + return value; +} + +// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f +// WARNING: It multiplies current alpha by alpha scale factor +static Color GuiFade(Color color, float alpha) +{ + if (alpha < 0.0f) alpha = 0.0f; + else if (alpha > 1.0f) alpha = 1.0f; + + Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; + + return result; +} + +#if defined(RAYGUI_STANDALONE) +// Returns a Color struct from hexadecimal value +static Color GetColor(int hexValue) +{ + Color color; + + color.r = (unsigned char)(hexValue >> 24) & 0xff; + color.g = (unsigned char)(hexValue >> 16) & 0xff; + color.b = (unsigned char)(hexValue >> 8) & 0xff; + color.a = (unsigned char)hexValue & 0xff; + + return color; +} + +// Returns hexadecimal value for a Color +static int ColorToInt(Color color) +{ + return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); +} + +// Check if point is inside rectangle +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) +{ + bool collision = false; + + if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && + (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; + + return collision; +} + +// Formatting of text with variables to 'embed' +static const char *TextFormat(const char *text, ...) +{ + #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) + #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 + #endif + + static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; + + va_list args; + va_start(args, text); + vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); + va_end(args); + + return buffer; +} + +// Draw rectangle with vertical gradient fill color +// NOTE: This function is only used by GuiColorPicker() +static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) +{ + Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; + DrawRectangleGradientEx(bounds, color1, color2, color2, color1); +} + +// Split string into multiple strings +const char **TextSplit(const char *text, char delimiter, int *count) +{ + // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) + // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, + // all used memory is static... it has some limitations: + // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS + // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE + + #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) + #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 + #endif + #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) + #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 + #endif + + static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; + static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; + memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); + + result[0] = buffer; + int counter = 0; + + if (text != NULL) + { + counter = 1; + + // Count how many substrings text contains and point to every one of them + for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) + { + buffer[i] = text[i]; + if (buffer[i] == '\0') break; + else if (buffer[i] == delimiter) + { + buffer[i] = '\0'; // Set an end of string at this point + result[counter] = buffer + i + 1; + counter++; + + if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; + } + } + } + + *count = counter; + return result; +} + +// Get integer value from text +// NOTE: This function replaces atoi() [stdlib.h] +static int TextToInteger(const char *text) +{ + int value = 0; + int sign = 1; + + if ((text[0] == '+') || (text[0] == '-')) + { + if (text[0] == '-') sign = -1; + text++; + } + + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); + + return value*sign; +} + +// Get float value from text +// NOTE: This function replaces atof() [stdlib.h] +// WARNING: Only '.' character is understood as decimal point +static float TextToFloat(const char *text) +{ + float value = 0.0f; + float sign = 1.0f; + + if ((text[0] == '+') || (text[0] == '-')) + { + if (text[0] == '-') sign = -1.0f; + text++; + } + + int i = 0; + for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); + + if (text[i++] != '.') value *= sign; + else + { + float divisor = 10.0f; + for (; ((text[i] >= '0') && (text[i] <= '9')); i++) + { + value += ((float)(text[i] - '0'))/divisor; + divisor = divisor*10.0f; + } + } + + return value; +} + +// Encode codepoint into UTF-8 text (char array size returned as parameter) +static const char *CodepointToUTF8(int codepoint, int *byteSize) +{ + static char utf8[6] = { 0 }; + int size = 0; + + if (codepoint <= 0x7f) + { + utf8[0] = (char)codepoint; + size = 1; + } + else if (codepoint <= 0x7ff) + { + utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); + utf8[1] = (char)((codepoint & 0x3f) | 0x80); + size = 2; + } + else if (codepoint <= 0xffff) + { + utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); + utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); + utf8[2] = (char)((codepoint & 0x3f) | 0x80); + size = 3; + } + else if (codepoint <= 0x10ffff) + { + utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); + utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); + utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); + utf8[3] = (char)((codepoint & 0x3f) | 0x80); + size = 4; + } + + *byteSize = size; + + return utf8; +} + +// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint +// Total number of bytes processed are returned as a parameter +// NOTE: The standard says U+FFFD should be returned in case of errors +// but that character is not supported by the default font in raylib +static int GetCodepointNext(const char *text, int *codepointSize) +{ + const char *ptr = text; + int codepoint = 0x3f; // Codepoint (defaults to '?') + *codepointSize = 1; + + // Get current codepoint and bytes processed + if (0xf0 == (0xf8 & ptr[0])) + { + // 4 byte UTF-8 codepoint + if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks + codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); + *codepointSize = 4; + } + else if (0xe0 == (0xf0 & ptr[0])) + { + // 3 byte UTF-8 codepoint + if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks + codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); + *codepointSize = 3; + } + else if (0xc0 == (0xe0 & ptr[0])) + { + // 2 byte UTF-8 codepoint + if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks + codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); + *codepointSize = 2; + } + else if (0x00 == (0x80 & ptr[0])) + { + // 1 byte UTF-8 codepoint + codepoint = ptr[0]; + *codepointSize = 1; + } + + return codepoint; +} +#endif // RAYGUI_STANDALONE + +#endif // RAYGUI_IMPLEMENTATION diff --git a/examples/shaders/raygui.h b/examples/shaders/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/shaders/raygui.h +++ b/examples/shaders/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { diff --git a/examples/shapes/raygui.h b/examples/shapes/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/shapes/raygui.h +++ b/examples/shapes/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { From 872cfae7ca4eb28d48201fd1478ea6235ecf1e6d Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:51:50 +0100 Subject: [PATCH 07/22] REVIEWED: `LoadDirectoryFilesEx()`, minor tweak #5569 --- examples/core/core_directory_files.c | 5 +++-- src/rcore.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/core/core_directory_files.c b/examples/core/core_directory_files.c index 5bc7b7e57..f879b933e 100644 --- a/examples/core/core_directory_files.c +++ b/examples/core/core_directory_files.c @@ -40,7 +40,8 @@ int main(void) // Load file-paths on current working directory // NOTE: LoadDirectoryFiles() loads files and directories by default, // use LoadDirectoryFilesEx() for custom filters and recursive directories loading - FilePathList files = LoadDirectoryFiles(directory); + //FilePathList files = LoadDirectoryFiles(directory); + FilePathList files = LoadDirectoryFilesEx(directory, ".png;.c", false); int btnBackPressed = false; @@ -77,7 +78,7 @@ int main(void) GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); GuiSetStyle(LISTVIEW, TEXT_PADDING, 40); - GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 40 }, + GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 50 }, files.paths, files.count, &listScrollIndex, &listItemActive, &listItemFocused); /* diff --git a/src/rcore.c b/src/rcore.c index 97a6cce0e..c29fb1e19 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2773,6 +2773,8 @@ FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool if (DirectoryExists(basePath)) // It's a directory { + if ((filter != NULL) && (filter[0] == '\0')) filter = NULL; + // SCAN 1: Count files unsigned int fileCounter = GetDirectoryFileCountEx(basePath, filter, scanSubdirs); From e8ce00dc0bf1a64e6d2ff191c91c2f17aee2a378 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 17:02:19 +0100 Subject: [PATCH 08/22] REVIEWED: `LoadGLTF()`, log warning about draco compression not supported #5567 --- src/rmodels.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/rmodels.c b/src/rmodels.c index eadc16f07..0ee103212 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -5373,6 +5373,7 @@ static Model LoadGLTF(const char *fileName) if (result != cgltf_result_success) TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load mesh/material buffers", fileName); int primitivesCount = 0; + bool dracoCompression = false; // NOTE: We will load every primitive in the glTF as a separate raylib Mesh // Determine total number of meshes needed from the node hierarchy @@ -5384,9 +5385,22 @@ static Model LoadGLTF(const char *fileName) for (unsigned int p = 0; p < mesh->primitives_count; p++) { - if (mesh->primitives[p].type == cgltf_primitive_type_triangles) primitivesCount++; + if (mesh->primitives[p].has_draco_mesh_compression) + { + dracoCompression = true; + TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load mesh data, Draco compression not supported", fileName); + break; + } + else if (mesh->primitives[p].type == cgltf_primitive_type_triangles) primitivesCount++; } } + + if (dracoCompression) + { + return model; + TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load glTF data", fileName); + } + TRACELOG(LOG_DEBUG, " > Primitives (triangles only) count based on hierarchy : %i", primitivesCount); // Load our model data: meshes and materials From 97023def48c4be1e27bbaab70242521dd0d829df Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 18:45:14 +0100 Subject: [PATCH 09/22] REVIEWED: `GenImageFontAtlas()`, scale image to fit all characters, in case it fails size estimation #5542 --- src/rtext.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 8e7fafec2..0fd2d8e6b 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -796,7 +796,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp if (glyphs == NULL) { - TRACELOG(LOG_WARNING, "FONT: Provided chars info not valid, returning empty image atlas"); + TRACELOG(LOG_WARNING, "FONT: Provided glyphs info not valid, returning empty image atlas"); return atlas; } @@ -881,16 +881,17 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp if (offsetY > (atlas.height - fontSize - padding)) { - for (int j = i + 1; j < glyphCount; j++) - { - TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[j].value); - // Make sure remaining recs contain valid data - recs[j].x = 0; - recs[j].y = 0; - recs[j].width = 0; - recs[j].height = 0; - } - break; // Break for() loop, stop processing glyphs + TRACELOG(LOG_WARNING, "FONT: Updating atlas size to fit all characters"); + + // TODO: Increment atlas size (atlas.height*2) and continue adding glyphs + int updatedAtlasHeight = atlas.height*2; + int updatedAtlasDataSize = atlas.width*atlas.height; + unsigned char *updatedAtlasData = (unsigned char *)RL_CALLOC(updatedAtlasDataSize, 1); + + memcpy(updatedAtlasData, atlas.data, atlasDataSize); + RL_FREE(atlas.data); + atlas.height = updatedAtlasHeight; + atlasDataSize = updatedAtlasDataSize; } } @@ -967,7 +968,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp } } } - else TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[i].value); + else TRACELOG(LOG_WARNING, "FONT: Failed to package glyph (0x%02x)", glyphs[i].value); } RL_FREE(rects); From 0e6cb0993d1b86c75771969cb998b682c77d546f Mon Sep 17 00:00:00 2001 From: Kirandeep-Singh-Khehra <107160937+Kirandeep-Singh-Khehra@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:27:05 +0530 Subject: [PATCH 10/22] [rmodels] Added implementation of `UpdateModelAnimationBonesWithBlending()` function (#4578) * [rmodels] Added implementation of `UpdateModelAnimationBonesWithBlending()` function Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Added example for animation blending and fixed wrap issue for blend factor Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated build information for animation blending example Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Fixed typos in anmation blending example Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated blend function signature and added function to update verts from bones Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated documentation Signed-off-by: Kirandeep-Singh-Khehra * rlparser: update raylib_api.* by CI * rlparser: update raylib_api.* by CI --------- Signed-off-by: Kirandeep-Singh-Khehra Co-authored-by: Ray Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/models/models_animation_blending.c | 152 + examples/models/models_animation_blending.png | Bin 0 -> 26143 bytes .../models_animation_blending.vcxproj | 387 + projects/VS2022/raylib.sln | 11340 ++++++++-------- src/raylib.h | 2 + src/rmodels.c | 77 +- tools/rlparser/output/raylib_api.json | 42 + tools/rlparser/output/raylib_api.lua | 21 + tools/rlparser/output/raylib_api.txt | 171 +- tools/rlparser/output/raylib_api.xml | 13 +- 10 files changed, 6451 insertions(+), 5754 deletions(-) create mode 100644 examples/models/models_animation_blending.c create mode 100644 examples/models/models_animation_blending.png create mode 100644 projects/VS2022/examples/models_animation_blending.vcxproj diff --git a/examples/models/models_animation_blending.c b/examples/models/models_animation_blending.c new file mode 100644 index 000000000..225c1bfbb --- /dev/null +++ b/examples/models/models_animation_blending.c @@ -0,0 +1,152 @@ +/******************************************************************************************* +* +* raylib [core] example - Model animation blending +* +* Example originally created with raylib 5.5 +* +* Example contributed by Kirandeep (@Kirandeep-Singh-Khehra) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2024 Kirandeep (@Kirandeep-Singh-Khehra) +* +* Note: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS +* Note: This example uses CPU for updating meshes. +* For GPU skinning see comments with 'INFO:'. +* +********************************************************************************************/ + +#include "raylib.h" + +#define clamp(x,a,b) ((x < a)? a : (x > b)? b : x) + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [models] example - Model Animation Blending"); + + // Define the camera to look into our 3d world + Camera camera = { 0 }; + camera.position = (Vector3){ 8.0f, 8.0f, 8.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + + // Load gltf model + Model characterModel = LoadModel("resources/models/gltf/robot.glb"); // Load character model + +/* INFO: Uncomment this to use GPU skinning + // Load skinning shader + Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), + TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); + + for (int i = 0; i < characterModel.materialCount; i++) + { + characterModel.materials[i].shader = skinningShader; + } +*/ + + // Load gltf model animations + int animsCount = 0; + unsigned int animIndex0 = 0; + unsigned int animIndex1 = 0; + unsigned int animCurrentFrame = 0; + ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/robot.glb", &animsCount); + + float blendFactor = 0.5f; + + DisableCursor(); // Limit cursor to relative movement inside the window + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + UpdateCamera(&camera, CAMERA_THIRD_PERSON); + + // Select current animation + if (IsKeyPressed(KEY_T)) animIndex0 = (animIndex0 + 1)%animsCount; + else if (IsKeyPressed(KEY_G)) animIndex0 = (animIndex0 + animsCount - 1)%animsCount; + if (IsKeyPressed(KEY_Y)) animIndex1 = (animIndex1 + 1)%animsCount; + else if (IsKeyPressed(KEY_H)) animIndex1 = (animIndex1 + animsCount - 1)%animsCount; + + // Select blend factor + if (IsKeyPressed(KEY_U)) blendFactor = clamp(blendFactor - 0.1, 0.0f, 1.0f); + else if (IsKeyPressed(KEY_J)) blendFactor = clamp(blendFactor + 0.1, 0.0f, 1.0f); + + // Update animation + animCurrentFrame++; + + // Update bones + // Note: Same animation frame index is used below. By default it loops both animations + UpdateModelAnimationBonesLerp(characterModel, modelAnimations[animIndex0], animCurrentFrame, modelAnimations[animIndex1], animCurrentFrame, blendFactor); + +// INFO: Comment the following line to use GPU skinning + UpdateModelVertsToCurrentBones(characterModel); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + +/* INFO: Uncomment this to use GPU skinning + // Draw character mesh, pose calculation is done in shader (GPU skinning) + for (int i = 0; i < characterModel.meshCount; i++) + { + DrawMesh(characterModel.meshes[i], characterModel.materials[characterModel.meshMaterial[i]], characterModel.transform); + } +*/ + +// INFO: Comment the following line to use GPU skinning + DrawModel(characterModel, (Vector3){0.0f, 0.0f, 0.0f}, 1.0f, WHITE); + + + DrawGrid(10, 1.0f); + + EndMode3D(); + + DrawText("Use the U/J to adjust blend factor", 10, 10, 20, GRAY); + DrawText("Use the T/G to switch first animation", 10, 30, 20, GRAY); + DrawText("Use the Y/H to switch second animation", 10, 50, 20, GRAY); + DrawText(TextFormat("Animations: %s, %s", modelAnimations[animIndex0].name, modelAnimations[animIndex1].name), 10, 70, 20, BLACK); + DrawText(TextFormat("Blend Factor: %f", blendFactor), 10, 86, 20, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation + UnloadModel(characterModel); // Unload model and meshes/material + +// INFO: Uncomment the following line to use GPU skinning + // UnloadShader(skinningShader); // Unload GPU skinning shader + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/models/models_animation_blending.png b/examples/models/models_animation_blending.png new file mode 100644 index 0000000000000000000000000000000000000000..0d70c1a88436a01b3689693035840c34133cd936 GIT binary patch literal 26143 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 + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {AFDDE100-2D36-4749-817D-12E54C56312F} + Win32Proj + models_animation_blending + 10.0 + models_animation_blending + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 47e83ef4c..8483dc563 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -1,5670 +1,5670 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31912.275 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_srcrec_dstrec", "examples\textures_srcrec_dstrec.vcxproj", "{103B292B-049B-4B15-85A1-9F902840DB2C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_drawing", "examples\textures_image_drawing.vcxproj", "{0C2D2F82-AE67-400C-B19C-8C9B957B132A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_module_playing", "examples\audio_module_playing.vcxproj", "{E6784F91-4E4E-4956-A079-73FAB1AC7BE6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_music_stream", "examples\audio_music_stream.vcxproj", "{BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_raw_stream", "examples\audio_raw_stream.vcxproj", "{93A1F656-0D29-4C5E-B140-11F23FF5D6AB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_loading", "examples\audio_sound_loading.vcxproj", "{F81C5819-85B6-4D2E-B6DC-104A7634461B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera", "examples\core_2d_camera.vcxproj", "{66CC5B13-881A-412F-8C51-746622A91C5A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_platformer", "examples\core_2d_camera_platformer.vcxproj", "{CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_first_person", "examples\core_3d_camera_first_person.vcxproj", "{557138B0-7BE2-4392-B2E2-B45734031A62}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_free", "examples\core_3d_camera_free.vcxproj", "{9EED87BB-527F-4D05-9384-6D16CFD627A8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_mode", "examples\core_3d_camera_mode.vcxproj", "{6D1CA2F1-7FCA-4249-9220-075C2DF4F965}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_split_screen", "examples\core_3d_camera_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_picking", "examples\core_3d_picking.vcxproj", "{FD193822-3D5C-4161-A147-884C2ABDE483}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_logging", "examples\core_custom_logging.vcxproj", "{20AD0AC9-9159-4744-99CC-6AC5779D6B87}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_drop_files", "examples\core_drop_files.vcxproj", "{0199E349-0701-40BC-8A7F-06A54FFA3E7C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_demo", "examples\core_highdpi_demo.vcxproj", "{BCB71111-8505-4B35-8CEF-EC6115DC9D4D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gamepad", "examples\core_input_gamepad.vcxproj", "{8F19E3DA-8929-4000-87B5-3CA6929636CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures", "examples\core_input_gestures.vcxproj", "{51A00565-5787-4911-9CC0-28403AA4909D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_keys", "examples\core_input_keys.vcxproj", "{92B64AE7-D773-4F05-89F1-CE59BBF4F053}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse", "examples\core_input_mouse.vcxproj", "{A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_multitouch", "examples\core_input_multitouch.vcxproj", "{A643BB06-735D-47F3-BFE7-B6D3C36F7097}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_sequence", "examples\core_random_sequence.vcxproj", "{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{B332DCA8-3599-4A99-917A-82261BDC27AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_scissor_test", "examples\core_scissor_test.vcxproj", "{59089B0C-AAB4-4532-B294-44DEAE7178B7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_storage_values", "examples\core_storage_values.vcxproj", "{C298876B-6C12-4EA4-903B-33450BCD9884}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_vr_simulator", "examples\core_vr_simulator.vcxproj", "{83F586FA-C801-4979-ACCA-006BD628CC88}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_flags", "examples\core_window_flags.vcxproj", "{86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_letterbox", "examples\core_window_letterbox.vcxproj", "{FF2970AE-E2E9-405F-B321-D523A1BD44A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_world_screen", "examples\core_world_screen.vcxproj", "{79417CE2-FEEB-42F0-BC53-62D5267B19B1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_playing", "examples\models_animation_playing.vcxproj", "{AFDDE100-2D36-4749-817D-12E54C56312F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_billboard_rendering", "examples\models_billboard_rendering.vcxproj", "{B7812167-50FB-4934-996F-DF6FE4CBBFDF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_box_collisions", "examples\models_box_collisions.vcxproj", "{39DB56C7-05F8-492C-A8D4-F19E40FECB59}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_cubicmap_rendering", "examples\models_cubicmap_rendering.vcxproj", "{82F3D34B-8DB2-4C6A-98B1-132245DD9D99}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_first_person_maze", "examples\models_first_person_maze.vcxproj", "{CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_geometric_shapes", "examples\models_geometric_shapes.vcxproj", "{14BA7F98-02CC-4648-9236-676BFF9458AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_heightmap_rendering", "examples\models_heightmap_rendering.vcxproj", "{0859A973-E4FE-4688-8D16-0253163FDE24}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading", "examples\models_loading.vcxproj", "{F3412853-2B6A-4334-8CF2-B796CDAE0850}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_generation", "examples\models_mesh_generation.vcxproj", "{BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_picking", "examples\models_mesh_picking.vcxproj", "{D03F2C82-9553-4AFA-8F49-9234009122B6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_orthographic_projection", "examples\models_orthographic_projection.vcxproj", "{FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rlgl_solar_system", "examples\models_rlgl_solar_system.vcxproj", "{A53CCF42-A972-478F-9336-0F618B3EC06A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_skybox_rendering", "examples\models_skybox_rendering.vcxproj", "{0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_waving_cubes", "examples\models_waving_cubes.vcxproj", "{870723DD-945A-4136-B65B-4AF3BF85369C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_yaw_pitch_roll", "examples\models_yaw_pitch_roll.vcxproj", "{EA6488AD-445B-4835-87FB-EBC9E2EDAF97}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_to_image", "examples\textures_to_image.vcxproj", "{E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_explosion", "examples\textures_sprite_explosion.vcxproj", "{472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_button", "examples\textures_sprite_button.vcxproj", "{589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_raw_data", "examples\textures_raw_data.vcxproj", "{3AD868E6-8355-4F29-B5ED-7DE94AD786E7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_particles_blending", "examples\textures_particles_blending.vcxproj", "{2B78CF0A-5403-45E2-99BD-493F1679BCDB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_npatch_drawing", "examples\textures_npatch_drawing.vcxproj", "{0AB968E0-E993-45CE-8875-7453C96DF583}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_mouse_painting", "examples\textures_mouse_painting.vcxproj", "{25923141-9859-4AFE-8168-0DF78322FC63}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_logo_raylib", "examples\textures_logo_raylib.vcxproj", "{7E855020-7FA4-482D-B510-2E709354FE8B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_text", "examples\textures_image_text.vcxproj", "{9782E0C8-2BD3-4F67-B420-21CF19CA2435}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_processing", "examples\textures_image_processing.vcxproj", "{9F4135E3-9814-452C-9B35-0EFBCD792B49}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_loading", "examples\textures_image_loading.vcxproj", "{C45343E6-DAB6-4F3A-A00A-8BED71A098BE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_generation", "examples\textures_image_generation.vcxproj", "{B19DD336-538E-4091-A559-EAA717FEC899}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_tiled_drawing", "examples\textures_tiled_drawing.vcxproj", "{0BF60202-43F7-48E9-8717-D31E56FA5BE0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_bunnymark", "examples\textures_bunnymark.vcxproj", "{4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_blend_modes", "examples\textures_blend_modes.vcxproj", "{6D75CD88-1A03-4955-B8C7-ACFC3742154F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_background_scrolling", "examples\textures_background_scrolling.vcxproj", "{8DD0EB7E-668E-452D-91D7-906C64A9C8AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_writing_anim", "examples\text_writing_anim.vcxproj", "{F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_emojis", "examples\text_unicode_emojis.vcxproj", "{1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_rectangle_bounds", "examples\text_rectangle_bounds.vcxproj", "{25BCB876-B60A-499B-9046-E9801CFD7780}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_sprite_fonts", "examples\text_sprite_fonts.vcxproj", "{56FB0A45-145F-4EAE-B2C8-E5833E682D8F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_input_box", "examples\text_input_box.vcxproj", "{2BB0C1D4-9298-45AC-B244-67A99769A292}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_format_text", "examples\text_format_text.vcxproj", "{99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_spritefont", "examples\text_font_spritefont.vcxproj", "{81064BCE-EEC1-43B0-9912-F05F2B54B11A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_sdf", "examples\text_font_sdf.vcxproj", "{31B41997-3890-45E3-93FE-C57B363E9C0D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_loading", "examples\text_font_loading.vcxproj", "{D550AB93-DF31-4B76-873F-F075018352F4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_filters", "examples\text_font_filters.vcxproj", "{8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_scaling", "examples\shapes_rectangle_scaling.vcxproj", "{F90FCDC5-EE14-4B89-96DB-4392E28F34AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib_anim", "examples\shapes_logo_raylib_anim.vcxproj", "{93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib", "examples\shapes_logo_raylib.vcxproj", "{56E68E37-B3FC-4799-91AF-0CA10B6D55A5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_bezier", "examples\shapes_lines_bezier.vcxproj", "{03E7018C-44A2-4C46-9CE7-F2A135A2692B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_following_eyes", "examples\shapes_following_eyes.vcxproj", "{F3F6FE4D-9D9E-451A-B0BA-81456104B672}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_basic_shapes", "examples\shapes_basic_shapes.vcxproj", "{C27794B5-1293-4EA7-BC0E-0F18E6325539}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bouncing_ball", "examples\shapes_bouncing_ball.vcxproj", "{02F41059-12A2-4A96-8D77-07EFE4B108FD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_collision_area", "examples\shapes_collision_area.vcxproj", "{B774E0B9-9514-4E88-975F-4EB6C3B8D519}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_colors_palette", "examples\shapes_colors_palette.vcxproj", "{D91367C2-2189-4859-A7FE-D2CAB84FA15C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_circle_sector_drawing", "examples\shapes_circle_sector_drawing.vcxproj", "{33459B4E-1839-4856-BF6B-22480D11FE31}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rounded_rectangle_drawing", "examples\shapes_rounded_rectangle_drawing.vcxproj", "{48871156-181A-475A-BD8D-200086A09675}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ring_drawing", "examples\shapes_ring_drawing.vcxproj", "{C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_ball", "examples\shapes_easings_ball.vcxproj", "{1C49E35A-2838-49D9-9D5F-4B8134960EF6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_box", "examples\shapes_easings_box.vcxproj", "{F91142E2-A999-47F0-9E74-38C1E2930EBE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_rectangles", "examples\shapes_easings_rectangles.vcxproj", "{1EDD4BCF-345C-4065-8CBD-7285224293C3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_lighting", "examples\shaders_basic_lighting.vcxproj", "{A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_custom_uniform", "examples\shaders_custom_uniform.vcxproj", "{B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_eratosthenes_sieve", "examples\shaders_eratosthenes_sieve.vcxproj", "{D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_fog_rendering", "examples\shaders_fog_rendering.vcxproj", "{4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hot_reloading", "examples\shaders_hot_reloading.vcxproj", "{CF3755C4-937D-4ABF-B7B3-95140808717F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_julia_set", "examples\shaders_julia_set.vcxproj", "{D34939FE-8873-4C53-8D6C-74DED78EA3C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_model_shader", "examples\shaders_model_shader.vcxproj", "{D408A730-363A-4ABF-BCEF-5D63DCC66042}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_multi_sample2d", "examples\shaders_multi_sample2d.vcxproj", "{F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_palette_switch", "examples\shaders_palette_switch.vcxproj", "{52FB7463-C128-42AF-A02F-78F48473EA9A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_postprocessing", "examples\shaders_postprocessing.vcxproj", "{7381D91E-5C72-48F0-AAB4-95C9B10D7484}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_raymarching_rendering", "examples\shaders_raymarching_rendering.vcxproj", "{D36EC43E-B31F-4CF4-8285-93A7A9D90189}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mesh_instancing", "examples\shaders_mesh_instancing.vcxproj", "{274C0319-7E1E-4188-936B-8DF3331230B3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shapes_textures", "examples\shaders_shapes_textures.vcxproj", "{41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_simple_mask", "examples\shaders_simple_mask.vcxproj", "{600C3D4F-0670-4DB4-B30F-520A729053B5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_spotlight_rendering", "examples\shaders_spotlight_rendering.vcxproj", "{11F33A39-74B7-4018-B5F9-CC285A673A8F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", "examples\shaders_texture_rendering.vcxproj", "{A6F5E35E-B4A7-41B3-853A-75558E6E0715}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_codepoints_loading", "examples\text_codepoints_loading.vcxproj", "{F2DB2E59-76BF-4D81-859A-AFC289C046C0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_should_close", "examples\core_window_should_close.vcxproj", "{3FE7E9B6-49AC-4246-A789-28DB4644567B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_fog_of_war", "examples\textures_fog_of_war.vcxproj", "{EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_gif_player", "examples\textures_gif_player.vcxproj", "{191A5289-BA65-4638-A215-C521F0187313}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_mouse_zoom", "examples\core_2d_camera_mouse_zoom.vcxproj", "{3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", "examples\core_basic_screen_manager.vcxproj", "{8B1AF423-00F1-4924-AC54-F77D402D2AC9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_stream_effects", "examples\audio_stream_effects.vcxproj", "{4A87569C-4BD3-4113-B4B9-573D65B3D3F8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_textured_curve", "examples\textures_textured_curve.vcxproj", "{769FF0C1-4424-4FA3-BC44-D7A7DA312A06}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_m3d", "examples\models_loading_m3d.vcxproj", "{6D9E00D8-2893-45E4-9363-3F7F61D416BD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_writing", "examples\shaders_depth_writing.vcxproj", "{70B35F59-AFC2-4D8F-8833-5314D2047A81}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_rendering", "examples\shaders_depth_rendering.vcxproj", "{DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hybrid_rendering", "examples\shaders_hybrid_rendering.vcxproj", "{3755E9F4-CB48-4EC3-B561-3B85964EBDEF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_multi", "examples\audio_sound_multi.vcxproj", "{F81C5819-85B4-4D2E-B6DC-104A7634461B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_split_screen", "examples\core_2d_camera_split_screen.vcxproj", "{CC62F7DB-D089-4677-8575-CAB7A7815C43}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_automation_events", "examples\core_automation_events.vcxproj", "{7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_mixed_processor", "examples\audio_mixed_processor.vcxproj", "{A4B0D971-3CD6-41C9-8AB2-055D25A33373}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse_wheel", "examples\core_input_mouse_wheel.vcxproj", "{15CDD310-6980-42A6-8082-3A6B7730D13F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_smooth_pixelperfect", "examples\core_smooth_pixelperfect.vcxproj", "{71DB4284-5B1C-4E86-9AF5-B91542D44A6F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_textured_cube", "examples\models_textured_cube.vcxproj", "{4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_deferred_rendering", "examples\shaders_deferred_rendering.vcxproj", "{88DE5AD6-0074-4A5A-BE22-C840153E35D5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_outline", "examples\shaders_texture_outline.vcxproj", "{A546E75A-5242-46E6-9A9E-6C91554EAB84}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_tiling", "examples\shaders_texture_tiling.vcxproj", "{EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_splines_drawing", "examples\shapes_splines_drawing.vcxproj", "{DF25E545-00FF-4E64-844C-7DF98991F901}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_top_down_lights", "examples\shapes_top_down_lights.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_advanced", "examples\shapes_rectangle_advanced.vcxproj", "{FAFEE2F9-24B0-4AF1-B512-433E9590033F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_gpu_skinning", "examples\models_animation_gpu_skinning.vcxproj", "{8245DAD9-D402-4D5C-8F45-32229CD3B263}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap_rendering", "examples\shaders_shadowmap_rendering.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rounded_rectangle", "examples\shaders_rounded_rectangle.vcxproj", "{D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_digital_clock", "examples\shapes_digital_clock.vcxproj", "{3384C257-3CFE-4A8F-838C-19DAC5C955DA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_double_pendulum", "examples\shapes_double_pendulum.vcxproj", "{2B140378-125F-4DE9-AC37-2CC1B73D7254}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_kernel", "examples\textures_image_kernel.vcxproj", "{F4C55B99-E1C5-496A-8AC2-40188C38F4F6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_rotate", "examples\textures_image_rotate.vcxproj", "{2AA91EED-2D32-4B09-84A3-53D41EED1005}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_channel", "examples\textures_image_channel.vcxproj", "{EC0910F6-8D66-4509-BF57-A5EE7AE9485F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_point_rendering", "examples\models_point_rendering.vcxproj", "{921391C6-7626-4212-9928-BC82BC785461}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_tesseract_view", "examples\models_tesseract_view.vcxproj", "{6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_pbr", "examples\shaders_basic_pbr.vcxproj", "{4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap_rendering", "examples\shaders_lightmap_rendering.vcxproj", "{C54703BF-D68A-480D-BE27-49B62E45D582}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap_rendering", "examples\shaders_normalmap_rendering.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_ranges", "examples\text_unicode_ranges.vcxproj", "{6777EC3C-077C-42FC-B4AD-B799CE55CCE4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures_testbed", "examples\core_input_gestures_testbed.vcxproj", "{A61DAD9C-271C-4E95-81AA-DB4CD58564D4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_render_texture", "examples\core_render_texture.vcxproj", "{49C67F03-1A56-4F96-B278-39B66EC93678}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_inline_styling", "examples\text_inline_styling.vcxproj", "{D496308F-3C3C-40B3-A3ED-EA327D244B3E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_undo_redo", "examples\core_undo_redo.vcxproj", "{3B27F358-2679-4F38-B297-17B536F580BB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_actions", "examples\core_input_actions.vcxproj", "{718FCBD0-591D-448C-B7D5-9F1CA8544E7B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_delta_time", "examples\core_delta_time.vcxproj", "{19CA0070-B4B2-4394-90B7-D0C259AA35BA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bullet_hell", "examples\shapes_bullet_hell.vcxproj", "{2CCCD9E4-9058-4291-BD89-39C979F0CA1E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_vector_angle", "examples\shapes_vector_angle.vcxproj", "{9DB1F875-6E65-4195-B23F-ED8095C0B99C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_basic_voxel", "examples\models_basic_voxel.vcxproj", "{52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_dashed_line", "examples\shapes_dashed_line.vcxproj", "{8E132D5A-2C00-48D0-8747-97E41356F26F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rotating_cube", "examples\models_rotating_cube.vcxproj", "{A4662163-83E7-4309-8CAA-B0BF13655FE6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", "examples\shaders_ascii_rendering.vcxproj", "{5F4B766F-DD52-4B53-B6C3-BC7611E17F20}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_triangle_strip", "examples\shapes_triangle_strip.vcxproj", "{BB58A5FB-1A35-4471-86D0-A5189EC541B3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_pie_chart", "examples\shapes_pie_chart.vcxproj", "{61997220-5383-4AE5-ABD4-5F45AE1B0F2A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_directory_files", "examples\core_directory_files.vcxproj", "{7467E9AE-844F-444D-8A3F-17397544BA21}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_simple_particles", "examples\shapes_simple_particles.vcxproj", "{497FDF54-9762-4048-A833-61CC3980A0FB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_words_alignment", "examples\text_words_alignment.vcxproj", "{29B00F47-BE91-4A1F-B87D-B1302F038316}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_clipboard_text", "examples\core_clipboard_text.vcxproj", "{124935CC-73BB-489E-92E8-4F922A85DB5D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_clock_of_clocks", "examples\shapes_clock_of_clocks.vcxproj", "{AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_mouse_trail", "examples\shapes_mouse_trail.vcxproj", "{0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_starfield_effect", "examples\shapes_starfield_effect.vcxproj", "{EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_testbed", "examples\core_highdpi_testbed.vcxproj", "{1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_screen_recording", "examples\core_screen_recording.vcxproj", "{9DE2FC01-A839-4F89-8319-9071D4C54821}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_text_file_loading", "examples\core_text_file_loading.vcxproj", "{2F578155-D51F-4C03-AB7F-5C5122CA46CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mandelbrot_set", "examples\shaders_mandelbrot_set.vcxproj", "{1C829D1A-892C-451C-AF0B-AC65C85F5CC6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_angle_rotation", "examples\shapes_math_angle_rotation.vcxproj", "{84DE22BB-C25F-425C-A7FE-0120CF107B83}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_color_correction", "examples\shaders_color_correction.vcxproj", "{98152EDD-7E28-4FA3-89D8-B636ED5D5F65}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_sine_cosine", "examples\shapes_math_sine_cosine.vcxproj", "{B7FDD40F-DDA4-468E-9C40-EEB175964A26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_decals", "examples\models_decals.vcxproj", "{028F0967-B253-45DA-B1C4-FACCE45D0D8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_drawing", "examples\shapes_lines_drawing.vcxproj", "{666346D7-C84B-498D-AE17-53B20C62DB1A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_viewport_scaling", "examples\core_viewport_scaling.vcxproj", "{AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_compute_hash", "examples\core_compute_hash.vcxproj", "{6C897101-BE52-4387-8AA2-062123A76BA1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_screen_buffer", "examples\textures_screen_buffer.vcxproj", "{4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_spectrum_visualizer", "examples\audio_spectrum_visualizer.vcxproj", "{2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_directional_billboard", "examples\models_directional_billboard.vcxproj", "{30011884-25EE-42C9-BB15-888CAFB1AA6E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_color_wheel", "examples\shapes_rlgl_color_wheel.vcxproj", "{32FE2658-1D70-442E-8672-0AC5C6F0BD7B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_triangle", "examples\shapes_rlgl_triangle.vcxproj", "{842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_stacking", "examples\textures_sprite_stacking.vcxproj", "{FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ball_physics", "examples\shapes_ball_physics.vcxproj", "{0653AFAF-5578-4C02-AF29-0C873E7634AE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_game_of_life", "examples\shaders_game_of_life.vcxproj", "{071E64F3-1396-4A97-97CA-98CAC059B168}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_penrose_tile", "examples\shapes_penrose_tile.vcxproj", "{7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_strings_management", "examples\text_strings_management.vcxproj", "{1F4722E7-F78E-413F-A106-D3490211EA57}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_cellular_automata", "examples\textures_cellular_automata.vcxproj", "{0A0FC982-6E31-401F-BA77-3C5E8AB02C68}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_hilbert_curve", "examples\shapes_hilbert_curve.vcxproj", "{DC163251-16C3-4B72-B965-ACDBA0F02BD1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "examples\core_keyboard_testbed.vcxproj", "{D35D2FDA-B53F-4F70-81CA-24D95812B89C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug.DLL|ARM64 = Debug.DLL|ARM64 - Debug.DLL|x64 = Debug.DLL|x64 - Debug.DLL|x86 = Debug.DLL|x86 - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release.DLL|ARM64 = Release.DLL|ARM64 - Release.DLL|x64 = Release.DLL|x64 - Release.DLL|x86 = Release.DLL|x86 - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.Build.0 = Debug|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.ActiveCfg = Release|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.Build.0 = Release|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.ActiveCfg = Debug|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.Build.0 = Debug|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.ActiveCfg = Debug|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.Build.0 = Debug|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.Build.0 = Release|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.ActiveCfg = Release|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.Build.0 = Release|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.ActiveCfg = Release|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.Build.0 = Release|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.Build.0 = Debug|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.ActiveCfg = Debug|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.Build.0 = Debug|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.ActiveCfg = Debug|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.Build.0 = Debug|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.ActiveCfg = Release|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.Build.0 = Release|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.ActiveCfg = Release|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.Build.0 = Release|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.ActiveCfg = Release|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.Build.0 = Release|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.Build.0 = Debug|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.ActiveCfg = Debug|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.Build.0 = Debug|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.ActiveCfg = Debug|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.Build.0 = Debug|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.ActiveCfg = Release|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.Build.0 = Release|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.ActiveCfg = Release|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.Build.0 = Release|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.ActiveCfg = Release|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.Build.0 = Release|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.Build.0 = Debug|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.ActiveCfg = Debug|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.Build.0 = Debug|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.ActiveCfg = Debug|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.Build.0 = Debug|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.ActiveCfg = Release|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.Build.0 = Release|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.ActiveCfg = Release|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.Build.0 = Release|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.ActiveCfg = Release|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.Build.0 = Release|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.Build.0 = Debug|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.ActiveCfg = Debug|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.Build.0 = Debug|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.ActiveCfg = Debug|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.Build.0 = Debug|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.ActiveCfg = Release|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.Build.0 = Release|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.ActiveCfg = Release|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.Build.0 = Release|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.ActiveCfg = Release|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.Build.0 = Release|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.Build.0 = Debug|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.ActiveCfg = Debug|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.Build.0 = Debug|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.ActiveCfg = Debug|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.Build.0 = Debug|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.ActiveCfg = Release|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.Build.0 = Release|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.ActiveCfg = Release|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.Build.0 = Release|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.ActiveCfg = Release|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.Build.0 = Release|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.Build.0 = Debug|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.ActiveCfg = Debug|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.Build.0 = Debug|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.ActiveCfg = Debug|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.Build.0 = Debug|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.ActiveCfg = Release|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.Build.0 = Release|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.ActiveCfg = Release|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.Build.0 = Release|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.ActiveCfg = Release|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.Build.0 = Release|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.Build.0 = Debug|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.ActiveCfg = Debug|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.Build.0 = Debug|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.ActiveCfg = Debug|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.Build.0 = Debug|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.ActiveCfg = Release|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.Build.0 = Release|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.ActiveCfg = Release|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.Build.0 = Release|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.ActiveCfg = Release|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.Build.0 = Release|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.Build.0 = Debug|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.ActiveCfg = Debug|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.Build.0 = Debug|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.ActiveCfg = Debug|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.Build.0 = Debug|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.ActiveCfg = Release|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.Build.0 = Release|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.ActiveCfg = Release|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.Build.0 = Release|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.ActiveCfg = Release|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.Build.0 = Release|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.Build.0 = Debug|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.ActiveCfg = Debug|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.Build.0 = Debug|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.ActiveCfg = Debug|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.Build.0 = Debug|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.ActiveCfg = Release|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.Build.0 = Release|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.ActiveCfg = Release|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.Build.0 = Release|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.ActiveCfg = Release|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.Build.0 = Release|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.ActiveCfg = Debug|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.Build.0 = Debug|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.ActiveCfg = Debug|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.Build.0 = Debug|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.Build.0 = Release|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.ActiveCfg = Release|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.Build.0 = Release|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.ActiveCfg = Release|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.Build.0 = Release|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.Build.0 = Release|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.Build.0 = Debug|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.ActiveCfg = Debug|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.Build.0 = Debug|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.ActiveCfg = Debug|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.Build.0 = Debug|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.ActiveCfg = Release|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.Build.0 = Release|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.ActiveCfg = Release|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.Build.0 = Release|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.ActiveCfg = Release|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.Build.0 = Release|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.Build.0 = Debug|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.ActiveCfg = Debug|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.Build.0 = Debug|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.ActiveCfg = Debug|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.Build.0 = Debug|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.ActiveCfg = Release|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.Build.0 = Release|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.ActiveCfg = Release|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.Build.0 = Release|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.ActiveCfg = Release|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.Build.0 = Release|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.Build.0 = Debug|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.ActiveCfg = Debug|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.Build.0 = Debug|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.ActiveCfg = Debug|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.Build.0 = Debug|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.ActiveCfg = Release|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.Build.0 = Release|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.ActiveCfg = Release|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.Build.0 = Release|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.ActiveCfg = Release|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.Build.0 = Release|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.Build.0 = Debug|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.ActiveCfg = Debug|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.Build.0 = Debug|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.ActiveCfg = Debug|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.Build.0 = Debug|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.ActiveCfg = Release|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.Build.0 = Release|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.ActiveCfg = Release|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.Build.0 = Release|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.ActiveCfg = Release|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.Build.0 = Release|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.ActiveCfg = Debug|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.Build.0 = Debug|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.ActiveCfg = Debug|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.Build.0 = Debug|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.Build.0 = Release|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.ActiveCfg = Release|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.Build.0 = Release|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.ActiveCfg = Release|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.Build.0 = Release|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.Build.0 = Debug|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.ActiveCfg = Debug|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.Build.0 = Debug|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.ActiveCfg = Debug|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.Build.0 = Debug|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.ActiveCfg = Release|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.Build.0 = Release|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.ActiveCfg = Release|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.Build.0 = Release|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.ActiveCfg = Release|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.Build.0 = Release|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.Build.0 = Debug|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.ActiveCfg = Debug|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.Build.0 = Debug|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.ActiveCfg = Debug|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.Build.0 = Debug|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.ActiveCfg = Release|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.Build.0 = Release|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.ActiveCfg = Release|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.Build.0 = Release|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.ActiveCfg = Release|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.Build.0 = Release|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.Build.0 = Debug|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.ActiveCfg = Debug|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.Build.0 = Debug|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.ActiveCfg = Debug|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.Build.0 = Debug|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.ActiveCfg = Release|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.Build.0 = Release|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.ActiveCfg = Release|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.Build.0 = Release|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.ActiveCfg = Release|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.Build.0 = Release|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.Build.0 = Debug|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.ActiveCfg = Debug|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.Build.0 = Debug|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.ActiveCfg = Debug|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.Build.0 = Debug|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.ActiveCfg = Release|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.Build.0 = Release|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.ActiveCfg = Release|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.Build.0 = Release|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.ActiveCfg = Release|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.Build.0 = Release|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.ActiveCfg = Debug|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.Build.0 = Debug|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.ActiveCfg = Debug|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.Build.0 = Debug|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.Build.0 = Release|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.ActiveCfg = Release|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.Build.0 = Release|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.ActiveCfg = Release|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.Build.0 = Release|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.ActiveCfg = Debug|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.Build.0 = Debug|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.ActiveCfg = Debug|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.Build.0 = Debug|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.Build.0 = Release|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.ActiveCfg = Release|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.Build.0 = Release|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.ActiveCfg = Release|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.Build.0 = Release|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.Build.0 = Debug|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.ActiveCfg = Debug|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.Build.0 = Debug|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.ActiveCfg = Debug|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.Build.0 = Debug|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.ActiveCfg = Release|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.Build.0 = Release|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.ActiveCfg = Release|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.Build.0 = Release|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.ActiveCfg = Release|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.Build.0 = Release|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.Build.0 = Debug|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.ActiveCfg = Debug|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.Build.0 = Debug|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.ActiveCfg = Debug|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.Build.0 = Debug|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.ActiveCfg = Release|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.Build.0 = Release|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.ActiveCfg = Release|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.Build.0 = Release|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.ActiveCfg = Release|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.Build.0 = Release|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.Build.0 = Debug|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.ActiveCfg = Debug|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.Build.0 = Debug|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.ActiveCfg = Debug|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.Build.0 = Debug|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.ActiveCfg = Release|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.Build.0 = Release|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.ActiveCfg = Release|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.Build.0 = Release|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.ActiveCfg = Release|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.Build.0 = Release|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.Build.0 = Debug|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.ActiveCfg = Debug|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.Build.0 = Debug|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.ActiveCfg = Debug|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.Build.0 = Debug|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.ActiveCfg = Release|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.Build.0 = Release|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.ActiveCfg = Release|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.Build.0 = Release|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.ActiveCfg = Release|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.Build.0 = Release|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.Build.0 = Debug|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.ActiveCfg = Debug|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.Build.0 = Debug|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.ActiveCfg = Debug|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.Build.0 = Debug|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.ActiveCfg = Release|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.Build.0 = Release|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.ActiveCfg = Release|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.Build.0 = Release|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.ActiveCfg = Release|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.Build.0 = Release|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.Build.0 = Debug|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.ActiveCfg = Debug|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.Build.0 = Debug|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.ActiveCfg = Debug|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.Build.0 = Debug|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.ActiveCfg = Release|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.Build.0 = Release|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.ActiveCfg = Release|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.Build.0 = Release|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.ActiveCfg = Release|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.Build.0 = Release|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.Build.0 = Debug|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.ActiveCfg = Debug|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.Build.0 = Debug|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.ActiveCfg = Debug|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.Build.0 = Debug|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.ActiveCfg = Release|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.Build.0 = Release|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.ActiveCfg = Release|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.Build.0 = Release|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.ActiveCfg = Release|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.Build.0 = Release|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.Build.0 = Debug|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.ActiveCfg = Debug|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.Build.0 = Debug|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.ActiveCfg = Debug|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.Build.0 = Debug|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.ActiveCfg = Release|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.Build.0 = Release|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.ActiveCfg = Release|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.Build.0 = Release|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.ActiveCfg = Release|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.Build.0 = Release|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.Build.0 = Debug|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.ActiveCfg = Debug|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.Build.0 = Debug|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.ActiveCfg = Debug|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.Build.0 = Debug|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.ActiveCfg = Release|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.Build.0 = Release|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.ActiveCfg = Release|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.Build.0 = Release|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.ActiveCfg = Release|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.Build.0 = Release|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.Build.0 = Debug|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.ActiveCfg = Debug|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.Build.0 = Debug|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.ActiveCfg = Debug|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.Build.0 = Debug|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.ActiveCfg = Release|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.Build.0 = Release|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.ActiveCfg = Release|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.Build.0 = Release|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.ActiveCfg = Release|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.Build.0 = Release|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.Build.0 = Debug|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.ActiveCfg = Debug|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.Build.0 = Debug|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.ActiveCfg = Debug|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.Build.0 = Debug|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.ActiveCfg = Release|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.Build.0 = Release|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.ActiveCfg = Release|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.Build.0 = Release|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.ActiveCfg = Release|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.Build.0 = Release|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.Build.0 = Debug|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.ActiveCfg = Debug|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.Build.0 = Debug|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.ActiveCfg = Debug|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.Build.0 = Debug|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.ActiveCfg = Release|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.Build.0 = Release|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.ActiveCfg = Release|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.Build.0 = Release|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.ActiveCfg = Release|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.Build.0 = Release|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.Build.0 = Debug|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.ActiveCfg = Debug|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.Build.0 = Debug|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.ActiveCfg = Debug|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.Build.0 = Debug|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.ActiveCfg = Release|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.Build.0 = Release|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.ActiveCfg = Release|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.Build.0 = Release|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.ActiveCfg = Release|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.Build.0 = Release|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.Build.0 = Debug|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.ActiveCfg = Debug|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.Build.0 = Debug|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.ActiveCfg = Debug|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.Build.0 = Debug|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.ActiveCfg = Release|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.Build.0 = Release|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.ActiveCfg = Release|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.Build.0 = Release|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.ActiveCfg = Release|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.Build.0 = Release|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.Build.0 = Debug|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.ActiveCfg = Debug|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.Build.0 = Debug|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.ActiveCfg = Debug|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.Build.0 = Debug|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.ActiveCfg = Release|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.Build.0 = Release|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.ActiveCfg = Release|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.Build.0 = Release|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.ActiveCfg = Release|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.Build.0 = Release|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.Build.0 = Debug|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.ActiveCfg = Debug|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.Build.0 = Debug|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.ActiveCfg = Debug|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.Build.0 = Debug|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.ActiveCfg = Release|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.Build.0 = Release|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.ActiveCfg = Release|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.Build.0 = Release|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.ActiveCfg = Release|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.Build.0 = Release|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.Build.0 = Debug|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.ActiveCfg = Debug|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.Build.0 = Debug|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.ActiveCfg = Debug|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.Build.0 = Debug|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.ActiveCfg = Release|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.Build.0 = Release|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.ActiveCfg = Release|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.Build.0 = Release|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.ActiveCfg = Release|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.Build.0 = Release|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.Build.0 = Debug|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.ActiveCfg = Debug|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.Build.0 = Debug|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.ActiveCfg = Debug|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.Build.0 = Debug|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.ActiveCfg = Release|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.Build.0 = Release|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.ActiveCfg = Release|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.Build.0 = Release|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.ActiveCfg = Release|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.Build.0 = Release|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.Build.0 = Debug|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.ActiveCfg = Debug|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.Build.0 = Debug|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.ActiveCfg = Debug|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.Build.0 = Debug|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.ActiveCfg = Release|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.Build.0 = Release|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.ActiveCfg = Release|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.Build.0 = Release|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.ActiveCfg = Release|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.Build.0 = Release|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.Build.0 = Debug|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.ActiveCfg = Debug|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.Build.0 = Debug|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.ActiveCfg = Debug|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.Build.0 = Debug|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.ActiveCfg = Release|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.Build.0 = Release|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.ActiveCfg = Release|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.Build.0 = Release|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.ActiveCfg = Release|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.Build.0 = Release|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.Build.0 = Debug|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.ActiveCfg = Debug|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.Build.0 = Debug|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.ActiveCfg = Debug|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.Build.0 = Debug|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.ActiveCfg = Release|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.Build.0 = Release|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.ActiveCfg = Release|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.Build.0 = Release|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.ActiveCfg = Release|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.Build.0 = Release|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.Build.0 = Debug|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.ActiveCfg = Debug|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.Build.0 = Debug|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.ActiveCfg = Debug|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.Build.0 = Debug|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.ActiveCfg = Release|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.Build.0 = Release|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.ActiveCfg = Release|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.Build.0 = Release|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.ActiveCfg = Release|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.Build.0 = Release|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.Build.0 = Debug|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.ActiveCfg = Debug|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.Build.0 = Debug|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.ActiveCfg = Debug|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.Build.0 = Debug|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.ActiveCfg = Release|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.Build.0 = Release|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.ActiveCfg = Release|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.Build.0 = Release|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.ActiveCfg = Release|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.Build.0 = Release|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.Build.0 = Debug|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.ActiveCfg = Debug|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.Build.0 = Debug|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.ActiveCfg = Debug|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.Build.0 = Debug|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.ActiveCfg = Release|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.Build.0 = Release|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.ActiveCfg = Release|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.Build.0 = Release|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.ActiveCfg = Release|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.Build.0 = Release|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.Build.0 = Debug|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.ActiveCfg = Debug|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.Build.0 = Debug|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.ActiveCfg = Debug|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.Build.0 = Debug|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.ActiveCfg = Release|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.Build.0 = Release|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.ActiveCfg = Release|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.Build.0 = Release|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.ActiveCfg = Release|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.Build.0 = Release|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.ActiveCfg = Debug|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.Build.0 = Debug|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.ActiveCfg = Debug|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.Build.0 = Debug|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.Build.0 = Release|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.ActiveCfg = Release|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.Build.0 = Release|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.ActiveCfg = Release|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.Build.0 = Release|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.Build.0 = Debug|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.ActiveCfg = Debug|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.Build.0 = Debug|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.ActiveCfg = Debug|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.Build.0 = Debug|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.ActiveCfg = Release|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.Build.0 = Release|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.ActiveCfg = Release|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.Build.0 = Release|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.ActiveCfg = Release|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.Build.0 = Release|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.Build.0 = Debug|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.ActiveCfg = Debug|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.Build.0 = Debug|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.ActiveCfg = Debug|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.Build.0 = Debug|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.ActiveCfg = Release|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.Build.0 = Release|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.ActiveCfg = Release|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.Build.0 = Release|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.ActiveCfg = Release|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.Build.0 = Release|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.Build.0 = Debug|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.ActiveCfg = Debug|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.Build.0 = Debug|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.ActiveCfg = Debug|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.Build.0 = Debug|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.ActiveCfg = Release|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.Build.0 = Release|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.ActiveCfg = Release|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.Build.0 = Release|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.ActiveCfg = Release|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.Build.0 = Release|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.Build.0 = Debug|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.ActiveCfg = Debug|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.Build.0 = Debug|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.ActiveCfg = Debug|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.Build.0 = Debug|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.ActiveCfg = Release|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.Build.0 = Release|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.ActiveCfg = Release|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.Build.0 = Release|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.ActiveCfg = Release|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.Build.0 = Release|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.Build.0 = Debug|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.ActiveCfg = Debug|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.Build.0 = Debug|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.ActiveCfg = Debug|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.Build.0 = Debug|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.ActiveCfg = Release|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.Build.0 = Release|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.ActiveCfg = Release|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.Build.0 = Release|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.ActiveCfg = Release|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.Build.0 = Release|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.Build.0 = Debug|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.ActiveCfg = Debug|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.Build.0 = Debug|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.ActiveCfg = Debug|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.Build.0 = Debug|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.ActiveCfg = Release|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.Build.0 = Release|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.ActiveCfg = Release|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.Build.0 = Release|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.ActiveCfg = Release|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.Build.0 = Release|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.Build.0 = Debug|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.ActiveCfg = Debug|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.Build.0 = Debug|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.ActiveCfg = Debug|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.Build.0 = Debug|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.ActiveCfg = Release|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.Build.0 = Release|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.ActiveCfg = Release|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.Build.0 = Release|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.ActiveCfg = Release|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.Build.0 = Release|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.Build.0 = Debug|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.ActiveCfg = Debug|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.Build.0 = Debug|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.ActiveCfg = Debug|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.Build.0 = Debug|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.ActiveCfg = Release|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.Build.0 = Release|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.ActiveCfg = Release|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.Build.0 = Release|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.ActiveCfg = Release|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.Build.0 = Release|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.ActiveCfg = Debug|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.Build.0 = Debug|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.ActiveCfg = Debug|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.Build.0 = Debug|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.Build.0 = Release|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.ActiveCfg = Release|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.Build.0 = Release|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.ActiveCfg = Release|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.Build.0 = Release|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.ActiveCfg = Debug|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.Build.0 = Debug|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.ActiveCfg = Debug|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.Build.0 = Debug|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.Build.0 = Release|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.ActiveCfg = Release|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.Build.0 = Release|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.ActiveCfg = Release|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.Build.0 = Release|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.ActiveCfg = Debug|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.Build.0 = Debug|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.ActiveCfg = Debug|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.Build.0 = Debug|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.Build.0 = Release|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.ActiveCfg = Release|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.Build.0 = Release|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.ActiveCfg = Release|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.Build.0 = Release|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.Build.0 = Debug|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.ActiveCfg = Debug|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.Build.0 = Debug|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.ActiveCfg = Debug|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.Build.0 = Debug|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.ActiveCfg = Release|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.Build.0 = Release|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.ActiveCfg = Release|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.Build.0 = Release|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.ActiveCfg = Release|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.Build.0 = Release|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.Build.0 = Debug|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.ActiveCfg = Debug|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.Build.0 = Debug|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.ActiveCfg = Debug|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.Build.0 = Debug|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.ActiveCfg = Release|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.Build.0 = Release|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.ActiveCfg = Release|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.Build.0 = Release|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.ActiveCfg = Release|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.Build.0 = Release|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.Build.0 = Debug|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.ActiveCfg = Debug|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.Build.0 = Debug|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.ActiveCfg = Debug|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.Build.0 = Debug|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.ActiveCfg = Release|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.Build.0 = Release|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.ActiveCfg = Release|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.Build.0 = Release|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.ActiveCfg = Release|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.Build.0 = Release|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.Build.0 = Debug|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.ActiveCfg = Debug|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.Build.0 = Debug|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.ActiveCfg = Debug|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.Build.0 = Debug|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.ActiveCfg = Release|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.Build.0 = Release|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.ActiveCfg = Release|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.Build.0 = Release|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.ActiveCfg = Release|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.Build.0 = Release|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.Build.0 = Debug|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.ActiveCfg = Debug|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.Build.0 = Debug|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.ActiveCfg = Debug|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.Build.0 = Debug|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.ActiveCfg = Release|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.Build.0 = Release|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.ActiveCfg = Release|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.Build.0 = Release|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.ActiveCfg = Release|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.Build.0 = Release|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.Build.0 = Debug|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.ActiveCfg = Debug|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.Build.0 = Debug|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.ActiveCfg = Debug|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.Build.0 = Debug|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.ActiveCfg = Release|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.Build.0 = Release|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.ActiveCfg = Release|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.Build.0 = Release|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.ActiveCfg = Release|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.Build.0 = Release|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.Build.0 = Debug|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.ActiveCfg = Debug|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.Build.0 = Debug|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.ActiveCfg = Debug|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.Build.0 = Debug|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.ActiveCfg = Release|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.Build.0 = Release|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.ActiveCfg = Release|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.Build.0 = Release|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.ActiveCfg = Release|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.Build.0 = Release|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.Build.0 = Debug|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.ActiveCfg = Debug|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.Build.0 = Debug|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.ActiveCfg = Debug|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.Build.0 = Debug|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.ActiveCfg = Release|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.Build.0 = Release|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.ActiveCfg = Release|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.Build.0 = Release|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.ActiveCfg = Release|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.Build.0 = Release|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.ActiveCfg = Debug|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.Build.0 = Debug|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.ActiveCfg = Debug|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.Build.0 = Debug|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.Build.0 = Release|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.ActiveCfg = Release|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.Build.0 = Release|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.ActiveCfg = Release|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.Build.0 = Release|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.Build.0 = Debug|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.ActiveCfg = Debug|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.Build.0 = Debug|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.ActiveCfg = Debug|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.Build.0 = Debug|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.ActiveCfg = Release|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.Build.0 = Release|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.ActiveCfg = Release|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.Build.0 = Release|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.ActiveCfg = Release|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.Build.0 = Release|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.Build.0 = Debug|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.ActiveCfg = Debug|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.Build.0 = Debug|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.ActiveCfg = Debug|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.Build.0 = Debug|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.ActiveCfg = Release|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.Build.0 = Release|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.ActiveCfg = Release|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.Build.0 = Release|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.ActiveCfg = Release|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.Build.0 = Release|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.Build.0 = Debug|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.ActiveCfg = Debug|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.Build.0 = Debug|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.ActiveCfg = Debug|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.Build.0 = Debug|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.ActiveCfg = Release|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.Build.0 = Release|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.ActiveCfg = Release|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.Build.0 = Release|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.ActiveCfg = Release|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.Build.0 = Release|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.Build.0 = Debug|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.ActiveCfg = Debug|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.Build.0 = Debug|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.ActiveCfg = Debug|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.Build.0 = Debug|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.ActiveCfg = Release|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.Build.0 = Release|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.ActiveCfg = Release|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.Build.0 = Release|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.ActiveCfg = Release|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.Build.0 = Release|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.Build.0 = Debug|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.ActiveCfg = Debug|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.Build.0 = Debug|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.ActiveCfg = Debug|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.Build.0 = Debug|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.ActiveCfg = Release|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.Build.0 = Release|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.ActiveCfg = Release|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.Build.0 = Release|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.ActiveCfg = Release|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.Build.0 = Release|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.Build.0 = Debug|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.ActiveCfg = Debug|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.Build.0 = Debug|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.ActiveCfg = Debug|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.Build.0 = Debug|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.ActiveCfg = Release|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.Build.0 = Release|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.ActiveCfg = Release|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.Build.0 = Release|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.ActiveCfg = Release|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.Build.0 = Release|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.Build.0 = Debug|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.ActiveCfg = Debug|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.Build.0 = Debug|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.ActiveCfg = Debug|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.Build.0 = Debug|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.ActiveCfg = Release|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.Build.0 = Release|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.ActiveCfg = Release|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.Build.0 = Release|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.ActiveCfg = Release|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.Build.0 = Release|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.Build.0 = Debug|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.ActiveCfg = Debug|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.Build.0 = Debug|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.ActiveCfg = Debug|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.Build.0 = Debug|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.ActiveCfg = Release|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.Build.0 = Release|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.ActiveCfg = Release|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.Build.0 = Release|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.ActiveCfg = Release|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.Build.0 = Release|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.Build.0 = Debug|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.ActiveCfg = Debug|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.Build.0 = Debug|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.ActiveCfg = Debug|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.Build.0 = Debug|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.ActiveCfg = Release|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.Build.0 = Release|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.ActiveCfg = Release|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.Build.0 = Release|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.ActiveCfg = Release|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.Build.0 = Release|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.Build.0 = Debug|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.ActiveCfg = Debug|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.Build.0 = Debug|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.ActiveCfg = Debug|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.Build.0 = Debug|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.ActiveCfg = Release|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.Build.0 = Release|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.ActiveCfg = Release|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.Build.0 = Release|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.ActiveCfg = Release|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.Build.0 = Release|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.Build.0 = Debug|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.ActiveCfg = Debug|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.Build.0 = Debug|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.ActiveCfg = Debug|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.Build.0 = Debug|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.ActiveCfg = Release|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.Build.0 = Release|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.ActiveCfg = Release|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.Build.0 = Release|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.ActiveCfg = Release|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.Build.0 = Release|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.Build.0 = Debug|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.ActiveCfg = Debug|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.Build.0 = Debug|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.ActiveCfg = Debug|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.Build.0 = Debug|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.ActiveCfg = Release|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.Build.0 = Release|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x64.ActiveCfg = Release|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x64.Build.0 = Release|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x86.ActiveCfg = Release|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release|x86.Build.0 = Release|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.Build.0 = Debug|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.ActiveCfg = Debug|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.Build.0 = Debug|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.ActiveCfg = Debug|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.Build.0 = Debug|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.ActiveCfg = Release|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.Build.0 = Release|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.ActiveCfg = Release|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.Build.0 = Release|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.ActiveCfg = Release|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.Build.0 = Release|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.Build.0 = Debug|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.ActiveCfg = Debug|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.Build.0 = Debug|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.ActiveCfg = Debug|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.Build.0 = Debug|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.ActiveCfg = Release|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.Build.0 = Release|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.ActiveCfg = Release|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.Build.0 = Release|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.ActiveCfg = Release|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.Build.0 = Release|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.Build.0 = Debug|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.ActiveCfg = Debug|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.Build.0 = Debug|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.ActiveCfg = Debug|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.Build.0 = Debug|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.ActiveCfg = Release|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.Build.0 = Release|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.ActiveCfg = Release|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.Build.0 = Release|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.ActiveCfg = Release|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.Build.0 = Release|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.Build.0 = Debug|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.ActiveCfg = Debug|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.Build.0 = Debug|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.ActiveCfg = Debug|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.Build.0 = Debug|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.ActiveCfg = Release|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.Build.0 = Release|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.ActiveCfg = Release|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.Build.0 = Release|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.ActiveCfg = Release|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.Build.0 = Release|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.Build.0 = Debug|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.ActiveCfg = Debug|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.Build.0 = Debug|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.ActiveCfg = Debug|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.Build.0 = Debug|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.ActiveCfg = Release|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.Build.0 = Release|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.ActiveCfg = Release|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.Build.0 = Release|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.ActiveCfg = Release|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.Build.0 = Release|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.Build.0 = Debug|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.ActiveCfg = Debug|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.Build.0 = Debug|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.ActiveCfg = Debug|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.Build.0 = Debug|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.ActiveCfg = Release|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.Build.0 = Release|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.ActiveCfg = Release|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.Build.0 = Release|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.ActiveCfg = Release|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.Build.0 = Release|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.Build.0 = Debug|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.ActiveCfg = Debug|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.Build.0 = Debug|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.ActiveCfg = Debug|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.Build.0 = Debug|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.ActiveCfg = Release|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.Build.0 = Release|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.ActiveCfg = Release|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.Build.0 = Release|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.ActiveCfg = Release|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.Build.0 = Release|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.ActiveCfg = Debug|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.Build.0 = Debug|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.ActiveCfg = Debug|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.Build.0 = Debug|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.Build.0 = Release|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.ActiveCfg = Release|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.Build.0 = Release|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.ActiveCfg = Release|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.Build.0 = Release|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.Build.0 = Debug|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.ActiveCfg = Debug|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.Build.0 = Debug|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.ActiveCfg = Debug|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.Build.0 = Debug|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.ActiveCfg = Release|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.Build.0 = Release|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.ActiveCfg = Release|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.Build.0 = Release|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.ActiveCfg = Release|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.Build.0 = Release|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.Build.0 = Debug|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.Build.0 = Debug|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.ActiveCfg = Release|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.Build.0 = Release|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.ActiveCfg = Release|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.Build.0 = Release|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.Build.0 = Debug|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.ActiveCfg = Debug|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.Build.0 = Debug|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.ActiveCfg = Debug|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.Build.0 = Debug|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.ActiveCfg = Release|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.Build.0 = Release|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.ActiveCfg = Release|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.Build.0 = Release|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.ActiveCfg = Release|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.Build.0 = Release|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.Build.0 = Debug|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.ActiveCfg = Debug|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.Build.0 = Debug|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.ActiveCfg = Debug|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.Build.0 = Debug|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.ActiveCfg = Release|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.Build.0 = Release|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.ActiveCfg = Release|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.Build.0 = Release|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.ActiveCfg = Release|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.Build.0 = Release|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.Build.0 = Debug|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.ActiveCfg = Debug|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.Build.0 = Debug|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.ActiveCfg = Debug|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.Build.0 = Debug|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.ActiveCfg = Release|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.Build.0 = Release|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.ActiveCfg = Release|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.Build.0 = Release|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.ActiveCfg = Release|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.Build.0 = Release|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.Build.0 = Debug|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.ActiveCfg = Debug|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.Build.0 = Debug|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.ActiveCfg = Debug|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.Build.0 = Debug|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.ActiveCfg = Release|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.Build.0 = Release|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.ActiveCfg = Release|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.Build.0 = Release|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.ActiveCfg = Release|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.Build.0 = Release|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.Build.0 = Debug|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.ActiveCfg = Debug|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.Build.0 = Debug|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.ActiveCfg = Debug|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.Build.0 = Debug|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.ActiveCfg = Release|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.Build.0 = Release|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.ActiveCfg = Release|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.Build.0 = Release|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.ActiveCfg = Release|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.Build.0 = Release|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.Build.0 = Debug|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.ActiveCfg = Debug|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.Build.0 = Debug|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.ActiveCfg = Debug|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.Build.0 = Debug|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.ActiveCfg = Release|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.Build.0 = Release|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.ActiveCfg = Release|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.Build.0 = Release|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.ActiveCfg = Release|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.Build.0 = Release|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.Build.0 = Debug|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.ActiveCfg = Debug|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.Build.0 = Debug|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.ActiveCfg = Debug|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.Build.0 = Debug|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.ActiveCfg = Release|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.Build.0 = Release|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.ActiveCfg = Release|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.Build.0 = Release|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.ActiveCfg = Release|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.Build.0 = Release|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.Build.0 = Debug|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.ActiveCfg = Debug|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.Build.0 = Debug|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.ActiveCfg = Debug|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.Build.0 = Debug|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.ActiveCfg = Release|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.Build.0 = Release|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.ActiveCfg = Release|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.Build.0 = Release|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.ActiveCfg = Release|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.Build.0 = Release|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.Build.0 = Debug|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.ActiveCfg = Debug|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.Build.0 = Debug|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.ActiveCfg = Debug|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.Build.0 = Debug|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.ActiveCfg = Release|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.Build.0 = Release|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.ActiveCfg = Release|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.Build.0 = Release|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.ActiveCfg = Release|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.Build.0 = Release|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.Build.0 = Debug|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.ActiveCfg = Debug|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.Build.0 = Debug|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.ActiveCfg = Debug|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.Build.0 = Debug|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.ActiveCfg = Release|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.Build.0 = Release|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.ActiveCfg = Release|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.Build.0 = Debug|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.ActiveCfg = Debug|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.Build.0 = Debug|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.ActiveCfg = Debug|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.Build.0 = Debug|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.ActiveCfg = Release|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.Build.0 = Release|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.ActiveCfg = Release|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.Build.0 = Release|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.ActiveCfg = Release|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.Build.0 = Release|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.Build.0 = Debug|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.ActiveCfg = Debug|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.Build.0 = Debug|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.ActiveCfg = Debug|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.Build.0 = Debug|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.ActiveCfg = Release|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.Build.0 = Release|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.ActiveCfg = Release|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.Build.0 = Release|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.ActiveCfg = Release|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.Build.0 = Release|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.Build.0 = Debug|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.ActiveCfg = Debug|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.Build.0 = Debug|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.ActiveCfg = Debug|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.Build.0 = Debug|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.ActiveCfg = Release|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.Build.0 = Release|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.ActiveCfg = Release|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.Build.0 = Release|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.ActiveCfg = Release|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.Build.0 = Release|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.Build.0 = Debug|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.ActiveCfg = Debug|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.Build.0 = Debug|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.ActiveCfg = Debug|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.Build.0 = Debug|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.ActiveCfg = Release|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.Build.0 = Release|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.ActiveCfg = Release|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.Build.0 = Release|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.ActiveCfg = Release|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.Build.0 = Release|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.Build.0 = Debug|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.ActiveCfg = Debug|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.Build.0 = Debug|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.ActiveCfg = Debug|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.Build.0 = Debug|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.ActiveCfg = Release|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.Build.0 = Release|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.ActiveCfg = Release|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.Build.0 = Release|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.ActiveCfg = Release|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.Build.0 = Release|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.Build.0 = Debug|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.ActiveCfg = Debug|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.Build.0 = Debug|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.ActiveCfg = Debug|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.Build.0 = Debug|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.ActiveCfg = Release|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.Build.0 = Release|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.ActiveCfg = Release|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.Build.0 = Release|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.ActiveCfg = Release|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.Build.0 = Release|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.Build.0 = Debug|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.ActiveCfg = Debug|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.Build.0 = Debug|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.ActiveCfg = Debug|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.Build.0 = Debug|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.ActiveCfg = Release|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.Build.0 = Release|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.ActiveCfg = Release|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.Build.0 = Release|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.ActiveCfg = Release|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.Build.0 = Release|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.Build.0 = Debug|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.ActiveCfg = Debug|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.Build.0 = Debug|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.ActiveCfg = Debug|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.Build.0 = Debug|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.ActiveCfg = Release|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.Build.0 = Release|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.ActiveCfg = Release|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.Build.0 = Release|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.ActiveCfg = Release|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.Build.0 = Release|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.Build.0 = Debug|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.ActiveCfg = Debug|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.Build.0 = Debug|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.ActiveCfg = Debug|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.Build.0 = Debug|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.ActiveCfg = Release|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.Build.0 = Release|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.ActiveCfg = Release|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.Build.0 = Debug|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.ActiveCfg = Debug|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.Build.0 = Debug|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.ActiveCfg = Debug|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.Build.0 = Debug|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.ActiveCfg = Release|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.Build.0 = Release|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.ActiveCfg = Release|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.Build.0 = Release|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.ActiveCfg = Release|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.Build.0 = Release|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.Build.0 = Debug|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.ActiveCfg = Debug|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.Build.0 = Debug|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.ActiveCfg = Debug|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.Build.0 = Debug|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.ActiveCfg = Release|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.Build.0 = Release|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.ActiveCfg = Release|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.Build.0 = Release|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.ActiveCfg = Release|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.Build.0 = Release|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.Build.0 = Debug|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.ActiveCfg = Debug|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.Build.0 = Debug|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.ActiveCfg = Debug|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.Build.0 = Debug|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.ActiveCfg = Release|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.Build.0 = Release|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.ActiveCfg = Release|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.Build.0 = Release|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.ActiveCfg = Release|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.Build.0 = Release|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.Build.0 = Debug|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.ActiveCfg = Debug|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.Build.0 = Debug|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.ActiveCfg = Debug|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.Build.0 = Debug|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.ActiveCfg = Release|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.Build.0 = Release|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.ActiveCfg = Release|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.Build.0 = Release|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.ActiveCfg = Release|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.Build.0 = Release|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.ActiveCfg = Debug|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.Build.0 = Debug|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.ActiveCfg = Debug|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.Build.0 = Debug|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.Build.0 = Release|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.ActiveCfg = Release|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.Build.0 = Release|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.ActiveCfg = Release|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.Build.0 = Release|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.Build.0 = Debug|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.ActiveCfg = Debug|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.Build.0 = Debug|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.ActiveCfg = Debug|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.Build.0 = Debug|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.ActiveCfg = Release|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.Build.0 = Release|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.ActiveCfg = Release|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.Build.0 = Release|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.ActiveCfg = Release|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.Build.0 = Release|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.Build.0 = Debug|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.ActiveCfg = Debug|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.Build.0 = Debug|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.ActiveCfg = Debug|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.Build.0 = Debug|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.ActiveCfg = Release|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.Build.0 = Release|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.ActiveCfg = Release|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.Build.0 = Release|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.ActiveCfg = Release|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.Build.0 = Release|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.Build.0 = Debug|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.ActiveCfg = Debug|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.Build.0 = Debug|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.ActiveCfg = Debug|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.Build.0 = Debug|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.ActiveCfg = Release|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.Build.0 = Release|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.ActiveCfg = Release|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.Build.0 = Release|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.ActiveCfg = Release|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.Build.0 = Release|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.Build.0 = Debug|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.ActiveCfg = Debug|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.Build.0 = Debug|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.ActiveCfg = Debug|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.Build.0 = Debug|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.ActiveCfg = Release|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.Build.0 = Release|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.ActiveCfg = Release|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.Build.0 = Release|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.ActiveCfg = Release|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.Build.0 = Release|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.Build.0 = Debug|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.ActiveCfg = Debug|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.Build.0 = Debug|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.ActiveCfg = Debug|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.Build.0 = Debug|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.ActiveCfg = Release|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.Build.0 = Release|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.ActiveCfg = Release|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.Build.0 = Release|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.ActiveCfg = Release|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.Build.0 = Release|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.Build.0 = Debug|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.ActiveCfg = Debug|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.Build.0 = Debug|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.ActiveCfg = Debug|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.Build.0 = Debug|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.ActiveCfg = Release|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.Build.0 = Release|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.ActiveCfg = Release|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.Build.0 = Release|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.ActiveCfg = Release|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.Build.0 = Release|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.Build.0 = Debug|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.ActiveCfg = Debug|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.Build.0 = Debug|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.ActiveCfg = Debug|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.Build.0 = Debug|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.ActiveCfg = Release|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.Build.0 = Release|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.ActiveCfg = Release|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.Build.0 = Release|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.ActiveCfg = Release|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.Build.0 = Release|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.Build.0 = Debug|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.ActiveCfg = Debug|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.Build.0 = Debug|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.ActiveCfg = Debug|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.Build.0 = Debug|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.ActiveCfg = Release|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.Build.0 = Release|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.ActiveCfg = Release|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.Build.0 = Release|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.ActiveCfg = Release|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.Build.0 = Release|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.Build.0 = Debug|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.ActiveCfg = Debug|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.Build.0 = Debug|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.ActiveCfg = Debug|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.Build.0 = Debug|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.ActiveCfg = Release|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.Build.0 = Release|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.ActiveCfg = Release|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.Build.0 = Release|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.ActiveCfg = Release|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.Build.0 = Release|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.Build.0 = Debug|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.ActiveCfg = Debug|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.Build.0 = Debug|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.ActiveCfg = Debug|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.Build.0 = Debug|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.ActiveCfg = Release|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.Build.0 = Release|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.ActiveCfg = Release|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.Build.0 = Release|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.ActiveCfg = Release|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.Build.0 = Release|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.Build.0 = Debug|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.ActiveCfg = Debug|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.Build.0 = Debug|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.ActiveCfg = Debug|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.Build.0 = Debug|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.ActiveCfg = Release|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.Build.0 = Release|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.ActiveCfg = Release|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.Build.0 = Release|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.ActiveCfg = Release|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.Build.0 = Release|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.Build.0 = Debug|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.ActiveCfg = Debug|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.Build.0 = Debug|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.ActiveCfg = Debug|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.Build.0 = Debug|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.ActiveCfg = Release|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.Build.0 = Release|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.ActiveCfg = Release|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.Build.0 = Release|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.ActiveCfg = Release|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.Build.0 = Release|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.Build.0 = Debug|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.ActiveCfg = Debug|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.Build.0 = Debug|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.ActiveCfg = Debug|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.Build.0 = Debug|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.ActiveCfg = Release|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.Build.0 = Release|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.ActiveCfg = Release|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.Build.0 = Release|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.ActiveCfg = Release|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.Build.0 = Release|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.Build.0 = Debug|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.ActiveCfg = Debug|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.Build.0 = Debug|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.ActiveCfg = Debug|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.Build.0 = Debug|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.ActiveCfg = Release|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.Build.0 = Release|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.ActiveCfg = Release|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.Build.0 = Release|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.ActiveCfg = Release|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.Build.0 = Release|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.Build.0 = Debug|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.ActiveCfg = Debug|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.Build.0 = Debug|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.ActiveCfg = Debug|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.Build.0 = Debug|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.ActiveCfg = Release|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.Build.0 = Release|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.ActiveCfg = Release|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.Build.0 = Release|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.ActiveCfg = Release|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.Build.0 = Release|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.Build.0 = Debug|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.ActiveCfg = Debug|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.Build.0 = Debug|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.ActiveCfg = Debug|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.Build.0 = Debug|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.ActiveCfg = Release|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.Build.0 = Release|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.ActiveCfg = Release|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.Build.0 = Release|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.ActiveCfg = Release|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.Build.0 = Release|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.Build.0 = Debug|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.ActiveCfg = Debug|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.Build.0 = Debug|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.ActiveCfg = Debug|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.Build.0 = Debug|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.ActiveCfg = Release|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.Build.0 = Release|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.ActiveCfg = Release|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.Build.0 = Release|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.ActiveCfg = Release|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.Build.0 = Release|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.Build.0 = Debug|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.ActiveCfg = Debug|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.Build.0 = Debug|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.ActiveCfg = Debug|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.Build.0 = Debug|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.ActiveCfg = Release|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.Build.0 = Release|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.ActiveCfg = Release|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.Build.0 = Release|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.ActiveCfg = Release|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.Build.0 = Release|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.Build.0 = Debug|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.ActiveCfg = Debug|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.Build.0 = Debug|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.ActiveCfg = Debug|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.Build.0 = Debug|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.ActiveCfg = Release|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.Build.0 = Release|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.ActiveCfg = Release|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.Build.0 = Release|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.ActiveCfg = Release|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.Build.0 = Release|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.ActiveCfg = Debug|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.Build.0 = Debug|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.ActiveCfg = Debug|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.Build.0 = Debug|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.Build.0 = Release|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.ActiveCfg = Release|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.Build.0 = Release|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.ActiveCfg = Release|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.Build.0 = Release|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.Build.0 = Debug|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.ActiveCfg = Debug|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.Build.0 = Debug|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.ActiveCfg = Debug|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.Build.0 = Debug|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.ActiveCfg = Release|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.Build.0 = Release|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.ActiveCfg = Release|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.Build.0 = Release|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.ActiveCfg = Release|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.Build.0 = Release|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.Build.0 = Debug|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.ActiveCfg = Debug|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.Build.0 = Debug|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.ActiveCfg = Debug|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.Build.0 = Debug|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.ActiveCfg = Release|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.Build.0 = Release|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.ActiveCfg = Release|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.Build.0 = Release|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.ActiveCfg = Release|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.Build.0 = Release|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.Build.0 = Debug|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.ActiveCfg = Debug|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.Build.0 = Debug|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.ActiveCfg = Debug|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.Build.0 = Debug|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.ActiveCfg = Release|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.Build.0 = Release|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.ActiveCfg = Release|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.Build.0 = Release|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.ActiveCfg = Release|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.Build.0 = Release|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.Build.0 = Debug|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.ActiveCfg = Debug|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.Build.0 = Debug|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.ActiveCfg = Debug|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.Build.0 = Debug|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.ActiveCfg = Release|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.Build.0 = Release|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.ActiveCfg = Release|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.Build.0 = Release|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.ActiveCfg = Release|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.Build.0 = Release|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.ActiveCfg = Debug|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.Build.0 = Debug|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.ActiveCfg = Debug|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.Build.0 = Debug|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.Build.0 = Release|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.ActiveCfg = Release|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.Build.0 = Release|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.ActiveCfg = Release|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.Build.0 = Release|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.Build.0 = Debug|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.ActiveCfg = Debug|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.Build.0 = Debug|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.ActiveCfg = Debug|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.Build.0 = Debug|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.ActiveCfg = Release|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.Build.0 = Release|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.ActiveCfg = Release|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.Build.0 = Release|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.ActiveCfg = Release|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.Build.0 = Release|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.Build.0 = Debug|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.ActiveCfg = Debug|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.Build.0 = Debug|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.ActiveCfg = Debug|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.Build.0 = Debug|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.ActiveCfg = Release|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.Build.0 = Release|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.ActiveCfg = Release|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.Build.0 = Release|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.ActiveCfg = Release|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.Build.0 = Release|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.Build.0 = Debug|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.ActiveCfg = Debug|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.Build.0 = Debug|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.ActiveCfg = Debug|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.Build.0 = Debug|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.ActiveCfg = Release|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.Build.0 = Release|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.ActiveCfg = Release|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.Build.0 = Debug|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.ActiveCfg = Debug|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.Build.0 = Debug|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.ActiveCfg = Debug|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.Build.0 = Debug|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.ActiveCfg = Release|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.Build.0 = Release|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.ActiveCfg = Release|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.Build.0 = Debug|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.ActiveCfg = Debug|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.Build.0 = Debug|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.ActiveCfg = Debug|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.Build.0 = Debug|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.ActiveCfg = Release|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.Build.0 = Release|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.ActiveCfg = Release|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.Build.0 = Release|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.ActiveCfg = Release|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.Build.0 = Release|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.Build.0 = Debug|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.ActiveCfg = Debug|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.Build.0 = Debug|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.ActiveCfg = Debug|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.Build.0 = Debug|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.ActiveCfg = Release|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.Build.0 = Release|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.ActiveCfg = Release|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.Build.0 = Release|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.ActiveCfg = Release|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.Build.0 = Release|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.Build.0 = Debug|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.ActiveCfg = Debug|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.Build.0 = Debug|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.ActiveCfg = Debug|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.Build.0 = Debug|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.ActiveCfg = Release|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.Build.0 = Release|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.ActiveCfg = Release|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.Build.0 = Release|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.ActiveCfg = Release|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.Build.0 = Release|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.Build.0 = Debug|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.ActiveCfg = Debug|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.Build.0 = Debug|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.ActiveCfg = Debug|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.Build.0 = Debug|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.ActiveCfg = Release|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.Build.0 = Release|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.ActiveCfg = Release|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.Build.0 = Release|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.ActiveCfg = Release|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.Build.0 = Release|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.Build.0 = Debug|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.ActiveCfg = Debug|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.Build.0 = Debug|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.ActiveCfg = Debug|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.Build.0 = Debug|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.ActiveCfg = Release|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.Build.0 = Release|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.ActiveCfg = Release|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.Build.0 = Release|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.ActiveCfg = Release|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.Build.0 = Release|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.Build.0 = Debug|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.ActiveCfg = Debug|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.Build.0 = Debug|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.ActiveCfg = Debug|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.Build.0 = Debug|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.ActiveCfg = Release|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.Build.0 = Release|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.ActiveCfg = Release|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.Build.0 = Release|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.ActiveCfg = Release|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.Build.0 = Release|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.Build.0 = Debug|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.ActiveCfg = Debug|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.Build.0 = Debug|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.ActiveCfg = Debug|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.Build.0 = Debug|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.ActiveCfg = Release|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.Build.0 = Release|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.ActiveCfg = Release|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.Build.0 = Release|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.ActiveCfg = Release|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.Build.0 = Release|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.Build.0 = Debug|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.ActiveCfg = Debug|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.Build.0 = Debug|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.ActiveCfg = Debug|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.Build.0 = Debug|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.ActiveCfg = Release|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.Build.0 = Release|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.ActiveCfg = Release|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.Build.0 = Release|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.ActiveCfg = Release|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.Build.0 = Release|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.Build.0 = Debug|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.ActiveCfg = Debug|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.Build.0 = Debug|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.ActiveCfg = Debug|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.Build.0 = Debug|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.ActiveCfg = Release|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.Build.0 = Release|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.ActiveCfg = Release|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.Build.0 = Release|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.ActiveCfg = Release|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.Build.0 = Release|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.Build.0 = Debug|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.ActiveCfg = Debug|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.Build.0 = Debug|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.ActiveCfg = Debug|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.Build.0 = Debug|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.ActiveCfg = Release|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.Build.0 = Release|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.ActiveCfg = Release|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.Build.0 = Release|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.ActiveCfg = Release|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.Build.0 = Release|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.Build.0 = Debug|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.ActiveCfg = Debug|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.Build.0 = Debug|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.ActiveCfg = Debug|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.Build.0 = Debug|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.ActiveCfg = Release|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.Build.0 = Release|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.ActiveCfg = Release|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.Build.0 = Release|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.ActiveCfg = Release|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.Build.0 = Release|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.Build.0 = Debug|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.ActiveCfg = Debug|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.Build.0 = Debug|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.ActiveCfg = Debug|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.Build.0 = Debug|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.ActiveCfg = Release|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.Build.0 = Release|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.ActiveCfg = Release|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.Build.0 = Release|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.ActiveCfg = Release|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.Build.0 = Release|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.Build.0 = Debug|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.ActiveCfg = Debug|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.Build.0 = Debug|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.ActiveCfg = Debug|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.Build.0 = Debug|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.ActiveCfg = Release|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.Build.0 = Release|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.ActiveCfg = Release|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.Build.0 = Release|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.ActiveCfg = Release|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.Build.0 = Release|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.Build.0 = Debug|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.ActiveCfg = Debug|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.Build.0 = Debug|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.ActiveCfg = Debug|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.Build.0 = Debug|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.ActiveCfg = Release|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.Build.0 = Release|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.ActiveCfg = Release|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.Build.0 = Debug|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.ActiveCfg = Debug|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.Build.0 = Debug|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.ActiveCfg = Debug|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.Build.0 = Debug|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.ActiveCfg = Release|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.Build.0 = Release|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.ActiveCfg = Release|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.Build.0 = Release|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.ActiveCfg = Release|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.Build.0 = Release|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.Build.0 = Debug|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.ActiveCfg = Debug|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.Build.0 = Debug|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.ActiveCfg = Debug|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.Build.0 = Debug|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.ActiveCfg = Release|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.Build.0 = Release|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.ActiveCfg = Release|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.Build.0 = Release|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.ActiveCfg = Release|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.Build.0 = Release|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.Build.0 = Debug|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.ActiveCfg = Debug|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.Build.0 = Debug|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.ActiveCfg = Debug|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.Build.0 = Debug|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.ActiveCfg = Release|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.Build.0 = Release|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.ActiveCfg = Release|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.Build.0 = Release|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.ActiveCfg = Release|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.Build.0 = Release|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.Build.0 = Debug|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.ActiveCfg = Debug|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.Build.0 = Debug|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.ActiveCfg = Debug|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.Build.0 = Debug|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.ActiveCfg = Release|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.Build.0 = Release|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.ActiveCfg = Release|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.Build.0 = Release|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.ActiveCfg = Release|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.Build.0 = Release|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.Build.0 = Debug|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.ActiveCfg = Debug|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.Build.0 = Debug|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.ActiveCfg = Debug|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.Build.0 = Debug|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.ActiveCfg = Release|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.Build.0 = Release|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.ActiveCfg = Release|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.Build.0 = Release|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.ActiveCfg = Release|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.Build.0 = Release|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.Build.0 = Debug|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.ActiveCfg = Debug|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.Build.0 = Debug|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.ActiveCfg = Debug|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.Build.0 = Debug|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.ActiveCfg = Release|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.Build.0 = Release|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.ActiveCfg = Release|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.Build.0 = Release|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.ActiveCfg = Release|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.Build.0 = Release|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.Build.0 = Debug|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.ActiveCfg = Debug|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.Build.0 = Debug|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.ActiveCfg = Debug|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.Build.0 = Debug|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.ActiveCfg = Release|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.Build.0 = Release|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.ActiveCfg = Release|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.Build.0 = Release|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.ActiveCfg = Release|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.Build.0 = Release|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.Build.0 = Debug|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.ActiveCfg = Debug|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.Build.0 = Debug|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.ActiveCfg = Debug|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.Build.0 = Debug|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.ActiveCfg = Release|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.Build.0 = Release|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.ActiveCfg = Release|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.Build.0 = Release|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.ActiveCfg = Release|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.Build.0 = Release|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.Build.0 = Debug|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.ActiveCfg = Debug|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.Build.0 = Debug|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.ActiveCfg = Debug|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.Build.0 = Debug|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.ActiveCfg = Release|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.Build.0 = Release|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.ActiveCfg = Release|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.Build.0 = Release|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.ActiveCfg = Release|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.Build.0 = Release|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.Build.0 = Debug|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.ActiveCfg = Debug|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.Build.0 = Debug|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.ActiveCfg = Debug|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.Build.0 = Debug|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.ActiveCfg = Release|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.Build.0 = Release|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.ActiveCfg = Release|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.Build.0 = Release|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.ActiveCfg = Release|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.Build.0 = Release|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.Build.0 = Debug|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.ActiveCfg = Debug|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.Build.0 = Debug|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.ActiveCfg = Debug|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.Build.0 = Debug|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.ActiveCfg = Release|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.Build.0 = Release|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.ActiveCfg = Release|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.Build.0 = Release|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.ActiveCfg = Release|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.Build.0 = Release|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.Build.0 = Debug|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.ActiveCfg = Debug|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.Build.0 = Debug|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.ActiveCfg = Debug|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.Build.0 = Debug|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.ActiveCfg = Release|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.Build.0 = Release|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.ActiveCfg = Release|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.Build.0 = Release|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.ActiveCfg = Release|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.Build.0 = Release|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.Build.0 = Debug|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.ActiveCfg = Debug|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.Build.0 = Debug|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.ActiveCfg = Debug|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.Build.0 = Debug|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.ActiveCfg = Release|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.Build.0 = Release|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.ActiveCfg = Release|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.Build.0 = Release|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.ActiveCfg = Release|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.Build.0 = Release|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.ActiveCfg = Debug|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.Build.0 = Debug|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.ActiveCfg = Debug|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.Build.0 = Debug|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.Build.0 = Release|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.ActiveCfg = Release|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.Build.0 = Release|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.ActiveCfg = Release|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.Build.0 = Release|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.Build.0 = Debug|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.ActiveCfg = Debug|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.Build.0 = Debug|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.ActiveCfg = Debug|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.Build.0 = Debug|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.ActiveCfg = Release|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.Build.0 = Release|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.ActiveCfg = Release|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.Build.0 = Release|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.ActiveCfg = Release|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.Build.0 = Release|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.Build.0 = Debug|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.ActiveCfg = Debug|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.Build.0 = Debug|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.ActiveCfg = Debug|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.Build.0 = Debug|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.ActiveCfg = Release|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.Build.0 = Release|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.ActiveCfg = Release|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.Build.0 = Release|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.ActiveCfg = Release|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.Build.0 = Release|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.Build.0 = Debug|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.ActiveCfg = Debug|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.Build.0 = Debug|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.ActiveCfg = Debug|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.Build.0 = Debug|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.ActiveCfg = Release|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.Build.0 = Release|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.ActiveCfg = Release|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.Build.0 = Release|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.ActiveCfg = Release|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.Build.0 = Release|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.Build.0 = Debug|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.ActiveCfg = Debug|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.Build.0 = Debug|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.ActiveCfg = Debug|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.Build.0 = Debug|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.ActiveCfg = Release|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.Build.0 = Release|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.ActiveCfg = Release|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.Build.0 = Release|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.ActiveCfg = Release|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.Build.0 = Release|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.Build.0 = Debug|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.ActiveCfg = Debug|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.Build.0 = Debug|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.ActiveCfg = Debug|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.Build.0 = Debug|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.ActiveCfg = Release|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.Build.0 = Release|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.ActiveCfg = Release|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.Build.0 = Release|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.ActiveCfg = Release|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.Build.0 = Release|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.Build.0 = Debug|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.ActiveCfg = Debug|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.Build.0 = Debug|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.ActiveCfg = Debug|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.Build.0 = Debug|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.ActiveCfg = Release|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.Build.0 = Release|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.ActiveCfg = Release|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.Build.0 = Release|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.ActiveCfg = Release|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.Build.0 = Release|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.Build.0 = Debug|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.ActiveCfg = Debug|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.Build.0 = Debug|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.ActiveCfg = Debug|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.Build.0 = Debug|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.ActiveCfg = Release|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.Build.0 = Release|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.ActiveCfg = Release|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.Build.0 = Release|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.ActiveCfg = Release|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.Build.0 = Release|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.Build.0 = Debug|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.ActiveCfg = Debug|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.Build.0 = Debug|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.ActiveCfg = Debug|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.Build.0 = Debug|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.ActiveCfg = Release|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.Build.0 = Release|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.ActiveCfg = Release|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.Build.0 = Release|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.ActiveCfg = Release|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.Build.0 = Release|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.Build.0 = Debug|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.ActiveCfg = Debug|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.Build.0 = Debug|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.ActiveCfg = Debug|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.Build.0 = Debug|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.ActiveCfg = Release|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.Build.0 = Release|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.ActiveCfg = Release|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.Build.0 = Release|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.ActiveCfg = Release|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.Build.0 = Release|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.ActiveCfg = Debug|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.Build.0 = Debug|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.ActiveCfg = Debug|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.Build.0 = Debug|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.Build.0 = Release|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.ActiveCfg = Release|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.Build.0 = Release|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.ActiveCfg = Release|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.Build.0 = Release|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.Build.0 = Debug|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.ActiveCfg = Debug|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.Build.0 = Debug|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.ActiveCfg = Debug|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.Build.0 = Debug|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.ActiveCfg = Release|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.Build.0 = Release|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.ActiveCfg = Release|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.Build.0 = Release|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.ActiveCfg = Release|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.Build.0 = Release|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.Build.0 = Debug|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.ActiveCfg = Debug|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.Build.0 = Debug|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.ActiveCfg = Debug|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.Build.0 = Debug|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.ActiveCfg = Release|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.Build.0 = Release|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.ActiveCfg = Release|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.Build.0 = Release|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.ActiveCfg = Release|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.Build.0 = Release|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.Build.0 = Debug|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.ActiveCfg = Debug|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.Build.0 = Debug|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.ActiveCfg = Debug|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.Build.0 = Debug|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.ActiveCfg = Release|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.Build.0 = Release|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.ActiveCfg = Release|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.Build.0 = Release|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.ActiveCfg = Release|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.Build.0 = Release|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.Build.0 = Debug|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.ActiveCfg = Debug|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.Build.0 = Debug|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.ActiveCfg = Debug|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.Build.0 = Debug|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.ActiveCfg = Release|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.Build.0 = Release|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.ActiveCfg = Release|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.Build.0 = Release|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.ActiveCfg = Release|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.Build.0 = Release|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.Build.0 = Debug|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.ActiveCfg = Debug|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.Build.0 = Debug|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.ActiveCfg = Debug|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.Build.0 = Debug|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.ActiveCfg = Release|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.Build.0 = Release|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.ActiveCfg = Release|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.Build.0 = Release|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.ActiveCfg = Release|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.Build.0 = Release|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.Build.0 = Debug|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.ActiveCfg = Debug|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.Build.0 = Debug|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.ActiveCfg = Debug|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.Build.0 = Debug|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.ActiveCfg = Release|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.Build.0 = Release|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.ActiveCfg = Release|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.Build.0 = Release|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.ActiveCfg = Release|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.Build.0 = Release|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.Build.0 = Debug|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.ActiveCfg = Debug|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.Build.0 = Debug|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.ActiveCfg = Debug|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.Build.0 = Debug|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.ActiveCfg = Release|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.Build.0 = Release|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.ActiveCfg = Release|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.Build.0 = Release|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.ActiveCfg = Release|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.Build.0 = Release|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.Build.0 = Debug|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.ActiveCfg = Debug|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.Build.0 = Debug|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.ActiveCfg = Debug|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.Build.0 = Debug|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.ActiveCfg = Release|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.Build.0 = Release|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.ActiveCfg = Release|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.Build.0 = Release|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.ActiveCfg = Release|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.Build.0 = Release|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.Build.0 = Debug|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.ActiveCfg = Debug|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.Build.0 = Debug|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.ActiveCfg = Debug|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.Build.0 = Debug|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.ActiveCfg = Release|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.Build.0 = Release|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.ActiveCfg = Release|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.Build.0 = Release|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.ActiveCfg = Release|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.Build.0 = Release|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.Build.0 = Debug|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.ActiveCfg = Debug|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.Build.0 = Debug|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.ActiveCfg = Debug|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.Build.0 = Debug|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.ActiveCfg = Release|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.Build.0 = Release|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.ActiveCfg = Release|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.Build.0 = Release|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.ActiveCfg = Release|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.Build.0 = Release|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.Build.0 = Debug|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.ActiveCfg = Debug|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.Build.0 = Debug|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.ActiveCfg = Debug|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.Build.0 = Debug|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.ActiveCfg = Release|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.Build.0 = Release|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.ActiveCfg = Release|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.Build.0 = Release|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.ActiveCfg = Release|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.Build.0 = Release|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.Build.0 = Debug|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.ActiveCfg = Debug|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.Build.0 = Debug|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.ActiveCfg = Debug|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.Build.0 = Debug|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.ActiveCfg = Release|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.Build.0 = Release|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.ActiveCfg = Release|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0C2D2F82-AE67-400C-B19C-8C9B957B132A} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {F81C5819-85B6-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {66CC5B13-881A-412F-8C51-746622A91C5A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {557138B0-7BE2-4392-B2E2-B45734031A62} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {9EED87BB-527F-4D05-9384-6D16CFD627A8} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {FD193822-3D5C-4161-A147-884C2ABDE483} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {20AD0AC9-9159-4744-99CC-6AC5779D6B87} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {0199E349-0701-40BC-8A7F-06A54FFA3E7C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {8F19E3DA-8929-4000-87B5-3CA6929636CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {51A00565-5787-4911-9CC0-28403AA4909D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {92B64AE7-D773-4F05-89F1-CE59BBF4F053} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A643BB06-735D-47F3-BFE7-B6D3C36F7097} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {B332DCA8-3599-4A99-917A-82261BDC27AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {59089B0C-AAB4-4532-B294-44DEAE7178B7} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {C298876B-6C12-4EA4-903B-33450BCD9884} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {83F586FA-C801-4979-ACCA-006BD628CC88} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {FF2970AE-E2E9-405F-B321-D523A1BD44A0} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {79417CE2-FEEB-42F0-BC53-62D5267B19B1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {AFDDE100-2D36-4749-817D-12E54C56312F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {B7812167-50FB-4934-996F-DF6FE4CBBFDF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {39DB56C7-05F8-492C-A8D4-F19E40FECB59} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {14BA7F98-02CC-4648-9236-676BFF9458AF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {0859A973-E4FE-4688-8D16-0253163FDE24} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F3412853-2B6A-4334-8CF2-B796CDAE0850} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {D03F2C82-9553-4AFA-8F49-9234009122B6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {A53CCF42-A972-478F-9336-0F618B3EC06A} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {870723DD-945A-4136-B65B-4AF3BF85369C} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2B78CF0A-5403-45E2-99BD-493F1679BCDB} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0AB968E0-E993-45CE-8875-7453C96DF583} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {25923141-9859-4AFE-8168-0DF78322FC63} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {7E855020-7FA4-482D-B510-2E709354FE8B} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9782E0C8-2BD3-4F67-B420-21CF19CA2435} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9F4135E3-9814-452C-9B35-0EFBCD792B49} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {B19DD336-538E-4091-A559-EAA717FEC899} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0BF60202-43F7-48E9-8717-D31E56FA5BE0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {6D75CD88-1A03-4955-B8C7-ACFC3742154F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {25BCB876-B60A-499B-9046-E9801CFD7780} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {2BB0C1D4-9298-45AC-B244-67A99769A292} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {81064BCE-EEC1-43B0-9912-F05F2B54B11A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {31B41997-3890-45E3-93FE-C57B363E9C0D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {D550AB93-DF31-4B76-873F-F075018352F4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF} = {278D8859-20B1-428F-8448-064F46E1F021} - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79} = {278D8859-20B1-428F-8448-064F46E1F021} - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5} = {278D8859-20B1-428F-8448-064F46E1F021} - {03E7018C-44A2-4C46-9CE7-F2A135A2692B} = {278D8859-20B1-428F-8448-064F46E1F021} - {F3F6FE4D-9D9E-451A-B0BA-81456104B672} = {278D8859-20B1-428F-8448-064F46E1F021} - {C27794B5-1293-4EA7-BC0E-0F18E6325539} = {278D8859-20B1-428F-8448-064F46E1F021} - {02F41059-12A2-4A96-8D77-07EFE4B108FD} = {278D8859-20B1-428F-8448-064F46E1F021} - {B774E0B9-9514-4E88-975F-4EB6C3B8D519} = {278D8859-20B1-428F-8448-064F46E1F021} - {D91367C2-2189-4859-A7FE-D2CAB84FA15C} = {278D8859-20B1-428F-8448-064F46E1F021} - {33459B4E-1839-4856-BF6B-22480D11FE31} = {278D8859-20B1-428F-8448-064F46E1F021} - {48871156-181A-475A-BD8D-200086A09675} = {278D8859-20B1-428F-8448-064F46E1F021} - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1} = {278D8859-20B1-428F-8448-064F46E1F021} - {1C49E35A-2838-49D9-9D5F-4B8134960EF6} = {278D8859-20B1-428F-8448-064F46E1F021} - {F91142E2-A999-47F0-9E74-38C1E2930EBE} = {278D8859-20B1-428F-8448-064F46E1F021} - {1EDD4BCF-345C-4065-8CBD-7285224293C3} = {278D8859-20B1-428F-8448-064F46E1F021} - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {CF3755C4-937D-4ABF-B7B3-95140808717F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D34939FE-8873-4C53-8D6C-74DED78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D408A730-363A-4ABF-BCEF-5D63DCC66042} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {52FB7463-C128-42AF-A02F-78F48473EA9A} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {7381D91E-5C72-48F0-AAB4-95C9B10D7484} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D36EC43E-B31F-4CF4-8285-93A7A9D90189} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {274C0319-7E1E-4188-936B-8DF3331230B3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {600C3D4F-0670-4DB4-B30F-520A729053B5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {3FE7E9B6-49AC-4246-A789-28DB4644567B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {191A5289-BA65-4638-A215-C521F0187313} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {6D9E00D8-2893-45E4-9363-3F7F61D416BD} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {70B35F59-AFC2-4D8F-8833-5314D2047A81} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {F81C5819-85B4-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {CC62F7DB-D089-4677-8575-CAB7A7815C43} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A4B0D971-3CD6-41C9-8AB2-055D25A33373} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {15CDD310-6980-42A6-8082-3A6B7730D13F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {88DE5AD6-0074-4A5A-BE22-C840153E35D5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {A546E75A-5242-46E6-9A9E-6C91554EAB84} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {DF25E545-00FF-4E64-844C-7DF98991F901} = {278D8859-20B1-428F-8448-064F46E1F021} - {703BE7BA-5B99-4F70-806D-3A259F6A991E} = {278D8859-20B1-428F-8448-064F46E1F021} - {FAFEE2F9-24B0-4AF1-B512-433E9590033F} = {278D8859-20B1-428F-8448-064F46E1F021} - {8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3384C257-3CFE-4A8F-838C-19DAC5C955DA} = {278D8859-20B1-428F-8448-064F46E1F021} - {2B140378-125F-4DE9-AC37-2CC1B73D7254} = {278D8859-20B1-428F-8448-064F46E1F021} - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2AA91EED-2D32-4B09-84A3-53D41EED1005} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {921391C6-7626-4212-9928-BC82BC785461} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {49C67F03-1A56-4F96-B278-39B66EC93678} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {D496308F-3C3C-40B3-A3ED-EA327D244B3E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} - {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} - {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} - {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A} = {278D8859-20B1-428F-8448-064F46E1F021} - {7467E9AE-844F-444D-8A3F-17397544BA21} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {497FDF54-9762-4048-A833-61CC3980A0FB} = {278D8859-20B1-428F-8448-064F46E1F021} - {29B00F47-BE91-4A1F-B87D-B1302F038316} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {124935CC-73BB-489E-92E8-4F922A85DB5D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F} = {278D8859-20B1-428F-8448-064F46E1F021} - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2} = {278D8859-20B1-428F-8448-064F46E1F021} - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91} = {278D8859-20B1-428F-8448-064F46E1F021} - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {9DE2FC01-A839-4F89-8319-9071D4C54821} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2F578155-D51F-4C03-AB7F-5C5122CA46CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {84DE22BB-C25F-425C-A7FE-0120CF107B83} = {278D8859-20B1-428F-8448-064F46E1F021} - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {B7FDD40F-DDA4-468E-9C40-EEB175964A26} = {278D8859-20B1-428F-8448-064F46E1F021} - {028F0967-B253-45DA-B1C4-FACCE45D0D8D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {666346D7-C84B-498D-AE17-53B20C62DB1A} = {278D8859-20B1-428F-8448-064F46E1F021} - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6C897101-BE52-4387-8AA2-062123A76BA1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {30011884-25EE-42C9-BB15-888CAFB1AA6E} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B} = {278D8859-20B1-428F-8448-064F46E1F021} - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F} = {278D8859-20B1-428F-8448-064F46E1F021} - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0653AFAF-5578-4C02-AF29-0C873E7634AE} = {278D8859-20B1-428F-8448-064F46E1F021} - {071E64F3-1396-4A97-97CA-98CAC059B168} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC} = {278D8859-20B1-428F-8448-064F46E1F021} - {1F4722E7-F78E-413F-A106-D3490211EA57} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} - {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_srcrec_dstrec", "examples\textures_srcrec_dstrec.vcxproj", "{103B292B-049B-4B15-85A1-9F902840DB2C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_drawing", "examples\textures_image_drawing.vcxproj", "{0C2D2F82-AE67-400C-B19C-8C9B957B132A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_module_playing", "examples\audio_module_playing.vcxproj", "{E6784F91-4E4E-4956-A079-73FAB1AC7BE6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_music_stream", "examples\audio_music_stream.vcxproj", "{BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_raw_stream", "examples\audio_raw_stream.vcxproj", "{93A1F656-0D29-4C5E-B140-11F23FF5D6AB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_loading", "examples\audio_sound_loading.vcxproj", "{F81C5819-85B6-4D2E-B6DC-104A7634461B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera", "examples\core_2d_camera.vcxproj", "{66CC5B13-881A-412F-8C51-746622A91C5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_platformer", "examples\core_2d_camera_platformer.vcxproj", "{CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_first_person", "examples\core_3d_camera_first_person.vcxproj", "{557138B0-7BE2-4392-B2E2-B45734031A62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_free", "examples\core_3d_camera_free.vcxproj", "{9EED87BB-527F-4D05-9384-6D16CFD627A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_mode", "examples\core_3d_camera_mode.vcxproj", "{6D1CA2F1-7FCA-4249-9220-075C2DF4F965}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_split_screen", "examples\core_3d_camera_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_picking", "examples\core_3d_picking.vcxproj", "{FD193822-3D5C-4161-A147-884C2ABDE483}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_logging", "examples\core_custom_logging.vcxproj", "{20AD0AC9-9159-4744-99CC-6AC5779D6B87}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_drop_files", "examples\core_drop_files.vcxproj", "{0199E349-0701-40BC-8A7F-06A54FFA3E7C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_demo", "examples\core_highdpi_demo.vcxproj", "{BCB71111-8505-4B35-8CEF-EC6115DC9D4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gamepad", "examples\core_input_gamepad.vcxproj", "{8F19E3DA-8929-4000-87B5-3CA6929636CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures", "examples\core_input_gestures.vcxproj", "{51A00565-5787-4911-9CC0-28403AA4909D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_keys", "examples\core_input_keys.vcxproj", "{92B64AE7-D773-4F05-89F1-CE59BBF4F053}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse", "examples\core_input_mouse.vcxproj", "{A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_multitouch", "examples\core_input_multitouch.vcxproj", "{A643BB06-735D-47F3-BFE7-B6D3C36F7097}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_sequence", "examples\core_random_sequence.vcxproj", "{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{B332DCA8-3599-4A99-917A-82261BDC27AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_scissor_test", "examples\core_scissor_test.vcxproj", "{59089B0C-AAB4-4532-B294-44DEAE7178B7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_storage_values", "examples\core_storage_values.vcxproj", "{C298876B-6C12-4EA4-903B-33450BCD9884}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_vr_simulator", "examples\core_vr_simulator.vcxproj", "{83F586FA-C801-4979-ACCA-006BD628CC88}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_flags", "examples\core_window_flags.vcxproj", "{86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_letterbox", "examples\core_window_letterbox.vcxproj", "{FF2970AE-E2E9-405F-B321-D523A1BD44A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_world_screen", "examples\core_world_screen.vcxproj", "{79417CE2-FEEB-42F0-BC53-62D5267B19B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_playing", "examples\models_animation_playing.vcxproj", "{AFDDE100-2D36-4749-817D-12E54C56312F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_billboard_rendering", "examples\models_billboard_rendering.vcxproj", "{B7812167-50FB-4934-996F-DF6FE4CBBFDF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_box_collisions", "examples\models_box_collisions.vcxproj", "{39DB56C7-05F8-492C-A8D4-F19E40FECB59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_cubicmap_rendering", "examples\models_cubicmap_rendering.vcxproj", "{82F3D34B-8DB2-4C6A-98B1-132245DD9D99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_first_person_maze", "examples\models_first_person_maze.vcxproj", "{CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_geometric_shapes", "examples\models_geometric_shapes.vcxproj", "{14BA7F98-02CC-4648-9236-676BFF9458AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_heightmap_rendering", "examples\models_heightmap_rendering.vcxproj", "{0859A973-E4FE-4688-8D16-0253163FDE24}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading", "examples\models_loading.vcxproj", "{F3412853-2B6A-4334-8CF2-B796CDAE0850}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_generation", "examples\models_mesh_generation.vcxproj", "{BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_picking", "examples\models_mesh_picking.vcxproj", "{D03F2C82-9553-4AFA-8F49-9234009122B6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_orthographic_projection", "examples\models_orthographic_projection.vcxproj", "{FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rlgl_solar_system", "examples\models_rlgl_solar_system.vcxproj", "{A53CCF42-A972-478F-9336-0F618B3EC06A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_skybox_rendering", "examples\models_skybox_rendering.vcxproj", "{0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_waving_cubes", "examples\models_waving_cubes.vcxproj", "{870723DD-945A-4136-B65B-4AF3BF85369C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_yaw_pitch_roll", "examples\models_yaw_pitch_roll.vcxproj", "{EA6488AD-445B-4835-87FB-EBC9E2EDAF97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_to_image", "examples\textures_to_image.vcxproj", "{E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_explosion", "examples\textures_sprite_explosion.vcxproj", "{472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_button", "examples\textures_sprite_button.vcxproj", "{589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_raw_data", "examples\textures_raw_data.vcxproj", "{3AD868E6-8355-4F29-B5ED-7DE94AD786E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_particles_blending", "examples\textures_particles_blending.vcxproj", "{2B78CF0A-5403-45E2-99BD-493F1679BCDB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_npatch_drawing", "examples\textures_npatch_drawing.vcxproj", "{0AB968E0-E993-45CE-8875-7453C96DF583}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_mouse_painting", "examples\textures_mouse_painting.vcxproj", "{25923141-9859-4AFE-8168-0DF78322FC63}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_logo_raylib", "examples\textures_logo_raylib.vcxproj", "{7E855020-7FA4-482D-B510-2E709354FE8B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_text", "examples\textures_image_text.vcxproj", "{9782E0C8-2BD3-4F67-B420-21CF19CA2435}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_processing", "examples\textures_image_processing.vcxproj", "{9F4135E3-9814-452C-9B35-0EFBCD792B49}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_loading", "examples\textures_image_loading.vcxproj", "{C45343E6-DAB6-4F3A-A00A-8BED71A098BE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_generation", "examples\textures_image_generation.vcxproj", "{B19DD336-538E-4091-A559-EAA717FEC899}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_tiled_drawing", "examples\textures_tiled_drawing.vcxproj", "{0BF60202-43F7-48E9-8717-D31E56FA5BE0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_bunnymark", "examples\textures_bunnymark.vcxproj", "{4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_blend_modes", "examples\textures_blend_modes.vcxproj", "{6D75CD88-1A03-4955-B8C7-ACFC3742154F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_background_scrolling", "examples\textures_background_scrolling.vcxproj", "{8DD0EB7E-668E-452D-91D7-906C64A9C8AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_writing_anim", "examples\text_writing_anim.vcxproj", "{F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_emojis", "examples\text_unicode_emojis.vcxproj", "{1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_rectangle_bounds", "examples\text_rectangle_bounds.vcxproj", "{25BCB876-B60A-499B-9046-E9801CFD7780}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_sprite_fonts", "examples\text_sprite_fonts.vcxproj", "{56FB0A45-145F-4EAE-B2C8-E5833E682D8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_input_box", "examples\text_input_box.vcxproj", "{2BB0C1D4-9298-45AC-B244-67A99769A292}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_format_text", "examples\text_format_text.vcxproj", "{99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_spritefont", "examples\text_font_spritefont.vcxproj", "{81064BCE-EEC1-43B0-9912-F05F2B54B11A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_sdf", "examples\text_font_sdf.vcxproj", "{31B41997-3890-45E3-93FE-C57B363E9C0D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_loading", "examples\text_font_loading.vcxproj", "{D550AB93-DF31-4B76-873F-F075018352F4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_filters", "examples\text_font_filters.vcxproj", "{8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_scaling", "examples\shapes_rectangle_scaling.vcxproj", "{F90FCDC5-EE14-4B89-96DB-4392E28F34AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib_anim", "examples\shapes_logo_raylib_anim.vcxproj", "{93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib", "examples\shapes_logo_raylib.vcxproj", "{56E68E37-B3FC-4799-91AF-0CA10B6D55A5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_bezier", "examples\shapes_lines_bezier.vcxproj", "{03E7018C-44A2-4C46-9CE7-F2A135A2692B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_following_eyes", "examples\shapes_following_eyes.vcxproj", "{F3F6FE4D-9D9E-451A-B0BA-81456104B672}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_basic_shapes", "examples\shapes_basic_shapes.vcxproj", "{C27794B5-1293-4EA7-BC0E-0F18E6325539}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bouncing_ball", "examples\shapes_bouncing_ball.vcxproj", "{02F41059-12A2-4A96-8D77-07EFE4B108FD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_collision_area", "examples\shapes_collision_area.vcxproj", "{B774E0B9-9514-4E88-975F-4EB6C3B8D519}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_colors_palette", "examples\shapes_colors_palette.vcxproj", "{D91367C2-2189-4859-A7FE-D2CAB84FA15C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_circle_sector_drawing", "examples\shapes_circle_sector_drawing.vcxproj", "{33459B4E-1839-4856-BF6B-22480D11FE31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rounded_rectangle_drawing", "examples\shapes_rounded_rectangle_drawing.vcxproj", "{48871156-181A-475A-BD8D-200086A09675}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ring_drawing", "examples\shapes_ring_drawing.vcxproj", "{C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_ball", "examples\shapes_easings_ball.vcxproj", "{1C49E35A-2838-49D9-9D5F-4B8134960EF6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_box", "examples\shapes_easings_box.vcxproj", "{F91142E2-A999-47F0-9E74-38C1E2930EBE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_rectangles", "examples\shapes_easings_rectangles.vcxproj", "{1EDD4BCF-345C-4065-8CBD-7285224293C3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_lighting", "examples\shaders_basic_lighting.vcxproj", "{A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_custom_uniform", "examples\shaders_custom_uniform.vcxproj", "{B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_eratosthenes_sieve", "examples\shaders_eratosthenes_sieve.vcxproj", "{D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_fog_rendering", "examples\shaders_fog_rendering.vcxproj", "{4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hot_reloading", "examples\shaders_hot_reloading.vcxproj", "{CF3755C4-937D-4ABF-B7B3-95140808717F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_julia_set", "examples\shaders_julia_set.vcxproj", "{D34939FE-8873-4C53-8D6C-74DED78EA3C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_model_shader", "examples\shaders_model_shader.vcxproj", "{D408A730-363A-4ABF-BCEF-5D63DCC66042}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_multi_sample2d", "examples\shaders_multi_sample2d.vcxproj", "{F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_palette_switch", "examples\shaders_palette_switch.vcxproj", "{52FB7463-C128-42AF-A02F-78F48473EA9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_postprocessing", "examples\shaders_postprocessing.vcxproj", "{7381D91E-5C72-48F0-AAB4-95C9B10D7484}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_raymarching_rendering", "examples\shaders_raymarching_rendering.vcxproj", "{D36EC43E-B31F-4CF4-8285-93A7A9D90189}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mesh_instancing", "examples\shaders_mesh_instancing.vcxproj", "{274C0319-7E1E-4188-936B-8DF3331230B3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shapes_textures", "examples\shaders_shapes_textures.vcxproj", "{41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_simple_mask", "examples\shaders_simple_mask.vcxproj", "{600C3D4F-0670-4DB4-B30F-520A729053B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_spotlight_rendering", "examples\shaders_spotlight_rendering.vcxproj", "{11F33A39-74B7-4018-B5F9-CC285A673A8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", "examples\shaders_texture_rendering.vcxproj", "{A6F5E35E-B4A7-41B3-853A-75558E6E0715}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_codepoints_loading", "examples\text_codepoints_loading.vcxproj", "{F2DB2E59-76BF-4D81-859A-AFC289C046C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_should_close", "examples\core_window_should_close.vcxproj", "{3FE7E9B6-49AC-4246-A789-28DB4644567B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_fog_of_war", "examples\textures_fog_of_war.vcxproj", "{EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_gif_player", "examples\textures_gif_player.vcxproj", "{191A5289-BA65-4638-A215-C521F0187313}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_mouse_zoom", "examples\core_2d_camera_mouse_zoom.vcxproj", "{3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", "examples\core_basic_screen_manager.vcxproj", "{8B1AF423-00F1-4924-AC54-F77D402D2AC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_stream_effects", "examples\audio_stream_effects.vcxproj", "{4A87569C-4BD3-4113-B4B9-573D65B3D3F8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_textured_curve", "examples\textures_textured_curve.vcxproj", "{769FF0C1-4424-4FA3-BC44-D7A7DA312A06}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_m3d", "examples\models_loading_m3d.vcxproj", "{6D9E00D8-2893-45E4-9363-3F7F61D416BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_writing", "examples\shaders_depth_writing.vcxproj", "{70B35F59-AFC2-4D8F-8833-5314D2047A81}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_rendering", "examples\shaders_depth_rendering.vcxproj", "{DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hybrid_rendering", "examples\shaders_hybrid_rendering.vcxproj", "{3755E9F4-CB48-4EC3-B561-3B85964EBDEF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_multi", "examples\audio_sound_multi.vcxproj", "{F81C5819-85B4-4D2E-B6DC-104A7634461B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_split_screen", "examples\core_2d_camera_split_screen.vcxproj", "{CC62F7DB-D089-4677-8575-CAB7A7815C43}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_automation_events", "examples\core_automation_events.vcxproj", "{7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_mixed_processor", "examples\audio_mixed_processor.vcxproj", "{A4B0D971-3CD6-41C9-8AB2-055D25A33373}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse_wheel", "examples\core_input_mouse_wheel.vcxproj", "{15CDD310-6980-42A6-8082-3A6B7730D13F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_smooth_pixelperfect", "examples\core_smooth_pixelperfect.vcxproj", "{71DB4284-5B1C-4E86-9AF5-B91542D44A6F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_textured_cube", "examples\models_textured_cube.vcxproj", "{4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_deferred_rendering", "examples\shaders_deferred_rendering.vcxproj", "{88DE5AD6-0074-4A5A-BE22-C840153E35D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_outline", "examples\shaders_texture_outline.vcxproj", "{A546E75A-5242-46E6-9A9E-6C91554EAB84}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_tiling", "examples\shaders_texture_tiling.vcxproj", "{EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_splines_drawing", "examples\shapes_splines_drawing.vcxproj", "{DF25E545-00FF-4E64-844C-7DF98991F901}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_top_down_lights", "examples\shapes_top_down_lights.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_advanced", "examples\shapes_rectangle_advanced.vcxproj", "{FAFEE2F9-24B0-4AF1-B512-433E9590033F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_gpu_skinning", "examples\models_animation_gpu_skinning.vcxproj", "{8245DAD9-D402-4D5C-8F45-32229CD3B263}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap_rendering", "examples\shaders_shadowmap_rendering.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rounded_rectangle", "examples\shaders_rounded_rectangle.vcxproj", "{D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_digital_clock", "examples\shapes_digital_clock.vcxproj", "{3384C257-3CFE-4A8F-838C-19DAC5C955DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_double_pendulum", "examples\shapes_double_pendulum.vcxproj", "{2B140378-125F-4DE9-AC37-2CC1B73D7254}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_kernel", "examples\textures_image_kernel.vcxproj", "{F4C55B99-E1C5-496A-8AC2-40188C38F4F6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_rotate", "examples\textures_image_rotate.vcxproj", "{2AA91EED-2D32-4B09-84A3-53D41EED1005}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_channel", "examples\textures_image_channel.vcxproj", "{EC0910F6-8D66-4509-BF57-A5EE7AE9485F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_point_rendering", "examples\models_point_rendering.vcxproj", "{921391C6-7626-4212-9928-BC82BC785461}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_tesseract_view", "examples\models_tesseract_view.vcxproj", "{6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_pbr", "examples\shaders_basic_pbr.vcxproj", "{4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap_rendering", "examples\shaders_lightmap_rendering.vcxproj", "{C54703BF-D68A-480D-BE27-49B62E45D582}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap_rendering", "examples\shaders_normalmap_rendering.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_ranges", "examples\text_unicode_ranges.vcxproj", "{6777EC3C-077C-42FC-B4AD-B799CE55CCE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures_testbed", "examples\core_input_gestures_testbed.vcxproj", "{A61DAD9C-271C-4E95-81AA-DB4CD58564D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_render_texture", "examples\core_render_texture.vcxproj", "{49C67F03-1A56-4F96-B278-39B66EC93678}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_inline_styling", "examples\text_inline_styling.vcxproj", "{D496308F-3C3C-40B3-A3ED-EA327D244B3E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_undo_redo", "examples\core_undo_redo.vcxproj", "{3B27F358-2679-4F38-B297-17B536F580BB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_actions", "examples\core_input_actions.vcxproj", "{718FCBD0-591D-448C-B7D5-9F1CA8544E7B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_delta_time", "examples\core_delta_time.vcxproj", "{19CA0070-B4B2-4394-90B7-D0C259AA35BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bullet_hell", "examples\shapes_bullet_hell.vcxproj", "{2CCCD9E4-9058-4291-BD89-39C979F0CA1E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_vector_angle", "examples\shapes_vector_angle.vcxproj", "{9DB1F875-6E65-4195-B23F-ED8095C0B99C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_basic_voxel", "examples\models_basic_voxel.vcxproj", "{52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_dashed_line", "examples\shapes_dashed_line.vcxproj", "{8E132D5A-2C00-48D0-8747-97E41356F26F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rotating_cube", "examples\models_rotating_cube.vcxproj", "{A4662163-83E7-4309-8CAA-B0BF13655FE6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", "examples\shaders_ascii_rendering.vcxproj", "{5F4B766F-DD52-4B53-B6C3-BC7611E17F20}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_triangle_strip", "examples\shapes_triangle_strip.vcxproj", "{BB58A5FB-1A35-4471-86D0-A5189EC541B3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_pie_chart", "examples\shapes_pie_chart.vcxproj", "{61997220-5383-4AE5-ABD4-5F45AE1B0F2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_directory_files", "examples\core_directory_files.vcxproj", "{7467E9AE-844F-444D-8A3F-17397544BA21}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_simple_particles", "examples\shapes_simple_particles.vcxproj", "{497FDF54-9762-4048-A833-61CC3980A0FB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_words_alignment", "examples\text_words_alignment.vcxproj", "{29B00F47-BE91-4A1F-B87D-B1302F038316}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_clipboard_text", "examples\core_clipboard_text.vcxproj", "{124935CC-73BB-489E-92E8-4F922A85DB5D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_clock_of_clocks", "examples\shapes_clock_of_clocks.vcxproj", "{AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_mouse_trail", "examples\shapes_mouse_trail.vcxproj", "{0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_starfield_effect", "examples\shapes_starfield_effect.vcxproj", "{EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_testbed", "examples\core_highdpi_testbed.vcxproj", "{1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_screen_recording", "examples\core_screen_recording.vcxproj", "{9DE2FC01-A839-4F89-8319-9071D4C54821}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_text_file_loading", "examples\core_text_file_loading.vcxproj", "{2F578155-D51F-4C03-AB7F-5C5122CA46CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mandelbrot_set", "examples\shaders_mandelbrot_set.vcxproj", "{1C829D1A-892C-451C-AF0B-AC65C85F5CC6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_angle_rotation", "examples\shapes_math_angle_rotation.vcxproj", "{84DE22BB-C25F-425C-A7FE-0120CF107B83}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_color_correction", "examples\shaders_color_correction.vcxproj", "{98152EDD-7E28-4FA3-89D8-B636ED5D5F65}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_sine_cosine", "examples\shapes_math_sine_cosine.vcxproj", "{B7FDD40F-DDA4-468E-9C40-EEB175964A26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_decals", "examples\models_decals.vcxproj", "{028F0967-B253-45DA-B1C4-FACCE45D0D8D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_drawing", "examples\shapes_lines_drawing.vcxproj", "{666346D7-C84B-498D-AE17-53B20C62DB1A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_viewport_scaling", "examples\core_viewport_scaling.vcxproj", "{AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_compute_hash", "examples\core_compute_hash.vcxproj", "{6C897101-BE52-4387-8AA2-062123A76BA1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_screen_buffer", "examples\textures_screen_buffer.vcxproj", "{4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_spectrum_visualizer", "examples\audio_spectrum_visualizer.vcxproj", "{2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_directional_billboard", "examples\models_directional_billboard.vcxproj", "{30011884-25EE-42C9-BB15-888CAFB1AA6E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_color_wheel", "examples\shapes_rlgl_color_wheel.vcxproj", "{32FE2658-1D70-442E-8672-0AC5C6F0BD7B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_triangle", "examples\shapes_rlgl_triangle.vcxproj", "{842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_stacking", "examples\textures_sprite_stacking.vcxproj", "{FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ball_physics", "examples\shapes_ball_physics.vcxproj", "{0653AFAF-5578-4C02-AF29-0C873E7634AE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_game_of_life", "examples\shaders_game_of_life.vcxproj", "{071E64F3-1396-4A97-97CA-98CAC059B168}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_penrose_tile", "examples\shapes_penrose_tile.vcxproj", "{7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_strings_management", "examples\text_strings_management.vcxproj", "{1F4722E7-F78E-413F-A106-D3490211EA57}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_cellular_automata", "examples\textures_cellular_automata.vcxproj", "{0A0FC982-6E31-401F-BA77-3C5E8AB02C68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_hilbert_curve", "examples\shapes_hilbert_curve.vcxproj", "{DC163251-16C3-4B72-B965-ACDBA0F02BD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "examples\core_keyboard_testbed.vcxproj", "{D35D2FDA-B53F-4F70-81CA-24D95812B89C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug.DLL|ARM64 = Debug.DLL|ARM64 + Debug.DLL|x64 = Debug.DLL|x64 + Debug.DLL|x86 = Debug.DLL|x86 + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release.DLL|ARM64 = Release.DLL|ARM64 + Release.DLL|x64 = Release.DLL|x64 + Release.DLL|x86 = Release.DLL|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.Build.0 = Debug|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.ActiveCfg = Release|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.Build.0 = Release|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.ActiveCfg = Debug|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.Build.0 = Debug|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.ActiveCfg = Debug|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.Build.0 = Debug|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.Build.0 = Release|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.ActiveCfg = Release|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.Build.0 = Release|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.ActiveCfg = Release|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.Build.0 = Release|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.Build.0 = Debug|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.ActiveCfg = Debug|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.Build.0 = Debug|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.ActiveCfg = Debug|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.Build.0 = Debug|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.ActiveCfg = Release|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.Build.0 = Release|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.ActiveCfg = Release|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.Build.0 = Release|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.ActiveCfg = Release|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.Build.0 = Release|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.Build.0 = Debug|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.ActiveCfg = Debug|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.Build.0 = Debug|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.ActiveCfg = Debug|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.Build.0 = Debug|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.ActiveCfg = Release|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.Build.0 = Release|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.ActiveCfg = Release|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.Build.0 = Release|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.ActiveCfg = Release|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.Build.0 = Release|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.Build.0 = Debug|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.ActiveCfg = Debug|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.Build.0 = Debug|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.ActiveCfg = Debug|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.Build.0 = Debug|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.ActiveCfg = Release|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.Build.0 = Release|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.ActiveCfg = Release|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.Build.0 = Release|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.ActiveCfg = Release|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.Build.0 = Release|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.Build.0 = Debug|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.ActiveCfg = Debug|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.Build.0 = Debug|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.ActiveCfg = Debug|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.Build.0 = Debug|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.ActiveCfg = Release|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.Build.0 = Release|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.ActiveCfg = Release|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.Build.0 = Release|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.ActiveCfg = Release|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.Build.0 = Release|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.Build.0 = Debug|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.ActiveCfg = Debug|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.Build.0 = Debug|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.ActiveCfg = Debug|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.Build.0 = Debug|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.ActiveCfg = Release|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.Build.0 = Release|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.ActiveCfg = Release|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.Build.0 = Release|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.ActiveCfg = Release|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.Build.0 = Release|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.Build.0 = Debug|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.ActiveCfg = Debug|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.Build.0 = Debug|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.ActiveCfg = Debug|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.Build.0 = Debug|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.ActiveCfg = Release|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.Build.0 = Release|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.ActiveCfg = Release|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.Build.0 = Release|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.ActiveCfg = Release|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.Build.0 = Release|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.Build.0 = Debug|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.ActiveCfg = Debug|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.Build.0 = Debug|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.ActiveCfg = Debug|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.Build.0 = Debug|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.ActiveCfg = Release|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.Build.0 = Release|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.ActiveCfg = Release|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.Build.0 = Release|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.ActiveCfg = Release|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.Build.0 = Release|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.Build.0 = Debug|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.ActiveCfg = Debug|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.Build.0 = Debug|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.ActiveCfg = Debug|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.Build.0 = Debug|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.ActiveCfg = Release|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.Build.0 = Release|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.ActiveCfg = Release|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.Build.0 = Release|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.ActiveCfg = Release|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.Build.0 = Release|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.Build.0 = Debug|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.ActiveCfg = Debug|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.Build.0 = Debug|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.ActiveCfg = Debug|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.Build.0 = Debug|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.ActiveCfg = Release|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.Build.0 = Release|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.ActiveCfg = Release|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.Build.0 = Release|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.ActiveCfg = Release|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.Build.0 = Release|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.ActiveCfg = Debug|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.Build.0 = Debug|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.ActiveCfg = Debug|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.Build.0 = Debug|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.Build.0 = Release|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.ActiveCfg = Release|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.Build.0 = Release|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.ActiveCfg = Release|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.Build.0 = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.Build.0 = Release|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.Build.0 = Debug|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.ActiveCfg = Debug|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.Build.0 = Debug|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.ActiveCfg = Debug|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.Build.0 = Debug|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.ActiveCfg = Release|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.Build.0 = Release|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.ActiveCfg = Release|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.Build.0 = Release|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.ActiveCfg = Release|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.Build.0 = Release|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.Build.0 = Debug|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.ActiveCfg = Debug|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.Build.0 = Debug|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.ActiveCfg = Debug|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.Build.0 = Debug|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.ActiveCfg = Release|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.Build.0 = Release|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.ActiveCfg = Release|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.Build.0 = Release|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.ActiveCfg = Release|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.Build.0 = Release|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.Build.0 = Debug|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.ActiveCfg = Debug|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.Build.0 = Debug|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.ActiveCfg = Debug|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.Build.0 = Debug|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.ActiveCfg = Release|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.Build.0 = Release|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.ActiveCfg = Release|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.Build.0 = Release|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.ActiveCfg = Release|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.Build.0 = Release|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.Build.0 = Debug|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.ActiveCfg = Debug|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.Build.0 = Debug|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.ActiveCfg = Debug|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.Build.0 = Debug|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.ActiveCfg = Release|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.Build.0 = Release|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.ActiveCfg = Release|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.Build.0 = Release|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.ActiveCfg = Release|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.Build.0 = Release|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.ActiveCfg = Debug|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.Build.0 = Debug|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.ActiveCfg = Debug|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.Build.0 = Debug|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.Build.0 = Release|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.ActiveCfg = Release|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.Build.0 = Release|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.ActiveCfg = Release|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.Build.0 = Release|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.Build.0 = Debug|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.ActiveCfg = Debug|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.Build.0 = Debug|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.ActiveCfg = Debug|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.Build.0 = Debug|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.ActiveCfg = Release|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.Build.0 = Release|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.ActiveCfg = Release|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.Build.0 = Release|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.ActiveCfg = Release|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.Build.0 = Release|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.Build.0 = Debug|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.ActiveCfg = Debug|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.Build.0 = Debug|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.ActiveCfg = Debug|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.Build.0 = Debug|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.ActiveCfg = Release|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.Build.0 = Release|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.ActiveCfg = Release|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.Build.0 = Release|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.ActiveCfg = Release|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.Build.0 = Release|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.Build.0 = Debug|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.ActiveCfg = Debug|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.Build.0 = Debug|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.ActiveCfg = Debug|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.Build.0 = Debug|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.ActiveCfg = Release|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.Build.0 = Release|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.ActiveCfg = Release|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.Build.0 = Release|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.ActiveCfg = Release|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.Build.0 = Release|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.Build.0 = Debug|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.ActiveCfg = Debug|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.Build.0 = Debug|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.ActiveCfg = Debug|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.Build.0 = Debug|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.ActiveCfg = Release|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.Build.0 = Release|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.ActiveCfg = Release|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.Build.0 = Release|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.ActiveCfg = Release|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.Build.0 = Release|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.ActiveCfg = Debug|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.Build.0 = Debug|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.ActiveCfg = Debug|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.Build.0 = Debug|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.Build.0 = Release|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.ActiveCfg = Release|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.Build.0 = Release|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.ActiveCfg = Release|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.Build.0 = Release|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.ActiveCfg = Debug|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.Build.0 = Debug|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.ActiveCfg = Debug|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.Build.0 = Debug|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.Build.0 = Release|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.ActiveCfg = Release|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.Build.0 = Release|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.ActiveCfg = Release|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.Build.0 = Release|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.Build.0 = Debug|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.ActiveCfg = Debug|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.Build.0 = Debug|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.ActiveCfg = Debug|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.Build.0 = Debug|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.ActiveCfg = Release|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.Build.0 = Release|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.ActiveCfg = Release|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.Build.0 = Release|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.ActiveCfg = Release|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.Build.0 = Release|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.Build.0 = Debug|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.ActiveCfg = Debug|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.Build.0 = Debug|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.ActiveCfg = Debug|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.Build.0 = Debug|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.ActiveCfg = Release|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.Build.0 = Release|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.ActiveCfg = Release|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.Build.0 = Release|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.ActiveCfg = Release|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.Build.0 = Release|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.Build.0 = Debug|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.ActiveCfg = Debug|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.Build.0 = Debug|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.ActiveCfg = Debug|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.Build.0 = Debug|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.ActiveCfg = Release|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.Build.0 = Release|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.ActiveCfg = Release|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.Build.0 = Release|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.ActiveCfg = Release|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.Build.0 = Release|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.Build.0 = Debug|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.ActiveCfg = Debug|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.Build.0 = Debug|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.ActiveCfg = Debug|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.Build.0 = Debug|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.ActiveCfg = Release|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.Build.0 = Release|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.ActiveCfg = Release|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.Build.0 = Release|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.ActiveCfg = Release|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.Build.0 = Release|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.Build.0 = Debug|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.ActiveCfg = Debug|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.Build.0 = Debug|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.ActiveCfg = Debug|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.Build.0 = Debug|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.Build.0 = Release|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.ActiveCfg = Release|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.Build.0 = Release|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.ActiveCfg = Release|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.Build.0 = Release|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.Build.0 = Debug|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.ActiveCfg = Debug|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.Build.0 = Debug|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.ActiveCfg = Debug|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.Build.0 = Debug|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.ActiveCfg = Release|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.Build.0 = Release|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.ActiveCfg = Release|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.Build.0 = Release|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.ActiveCfg = Release|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.Build.0 = Release|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.Build.0 = Debug|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.ActiveCfg = Debug|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.Build.0 = Debug|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.ActiveCfg = Debug|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.Build.0 = Debug|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.ActiveCfg = Release|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.Build.0 = Release|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.ActiveCfg = Release|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.Build.0 = Release|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.ActiveCfg = Release|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.Build.0 = Release|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.Build.0 = Debug|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.ActiveCfg = Debug|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.Build.0 = Debug|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.ActiveCfg = Debug|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.Build.0 = Debug|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.Build.0 = Release|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.ActiveCfg = Release|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.Build.0 = Release|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.ActiveCfg = Release|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.Build.0 = Release|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.Build.0 = Debug|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.ActiveCfg = Debug|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.Build.0 = Debug|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.ActiveCfg = Debug|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.Build.0 = Debug|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.ActiveCfg = Release|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.Build.0 = Release|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.ActiveCfg = Release|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.Build.0 = Release|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.ActiveCfg = Release|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.Build.0 = Release|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.Build.0 = Debug|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.ActiveCfg = Debug|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.Build.0 = Debug|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.ActiveCfg = Debug|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.Build.0 = Debug|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.ActiveCfg = Release|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.Build.0 = Release|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.ActiveCfg = Release|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.Build.0 = Release|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.ActiveCfg = Release|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.Build.0 = Release|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.Build.0 = Debug|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.ActiveCfg = Debug|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.Build.0 = Debug|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.ActiveCfg = Debug|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.Build.0 = Debug|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.ActiveCfg = Release|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.Build.0 = Release|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.ActiveCfg = Release|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.Build.0 = Release|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.ActiveCfg = Release|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.Build.0 = Release|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.Build.0 = Debug|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.ActiveCfg = Debug|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.Build.0 = Debug|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.ActiveCfg = Debug|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.Build.0 = Debug|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.ActiveCfg = Release|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.Build.0 = Release|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.ActiveCfg = Release|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.Build.0 = Release|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.ActiveCfg = Release|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.Build.0 = Release|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.Build.0 = Debug|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.ActiveCfg = Debug|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.Build.0 = Debug|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.ActiveCfg = Debug|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.Build.0 = Debug|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.ActiveCfg = Release|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.Build.0 = Release|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.ActiveCfg = Release|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.Build.0 = Release|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.ActiveCfg = Release|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.Build.0 = Release|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.Build.0 = Debug|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.ActiveCfg = Debug|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.Build.0 = Debug|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.ActiveCfg = Debug|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.Build.0 = Debug|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.ActiveCfg = Release|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.Build.0 = Release|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.ActiveCfg = Release|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.Build.0 = Release|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.ActiveCfg = Release|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.Build.0 = Release|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.Build.0 = Debug|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.ActiveCfg = Debug|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.Build.0 = Debug|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.ActiveCfg = Debug|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.Build.0 = Debug|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.ActiveCfg = Release|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.Build.0 = Release|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.ActiveCfg = Release|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.Build.0 = Release|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.ActiveCfg = Release|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.Build.0 = Release|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.Build.0 = Debug|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.ActiveCfg = Debug|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.Build.0 = Debug|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.ActiveCfg = Debug|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.Build.0 = Debug|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.ActiveCfg = Release|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.Build.0 = Release|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.ActiveCfg = Release|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.Build.0 = Release|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.ActiveCfg = Release|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.Build.0 = Release|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.Build.0 = Debug|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.ActiveCfg = Debug|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.Build.0 = Debug|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.ActiveCfg = Debug|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.Build.0 = Debug|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.ActiveCfg = Release|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.Build.0 = Release|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.ActiveCfg = Release|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.Build.0 = Release|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.ActiveCfg = Release|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.Build.0 = Release|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.Build.0 = Debug|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.ActiveCfg = Debug|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.Build.0 = Debug|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.ActiveCfg = Debug|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.Build.0 = Debug|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.ActiveCfg = Release|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.Build.0 = Release|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.ActiveCfg = Release|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.Build.0 = Release|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.ActiveCfg = Release|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.Build.0 = Release|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.Build.0 = Debug|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.ActiveCfg = Debug|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.Build.0 = Debug|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.ActiveCfg = Debug|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.Build.0 = Debug|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.ActiveCfg = Release|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.Build.0 = Release|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.ActiveCfg = Release|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.Build.0 = Release|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.ActiveCfg = Release|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.Build.0 = Release|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.Build.0 = Debug|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.ActiveCfg = Debug|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.Build.0 = Debug|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.ActiveCfg = Debug|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.Build.0 = Debug|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.ActiveCfg = Release|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.Build.0 = Release|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.ActiveCfg = Release|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.Build.0 = Release|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.ActiveCfg = Release|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.Build.0 = Release|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.Build.0 = Debug|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.ActiveCfg = Debug|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.Build.0 = Debug|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.ActiveCfg = Debug|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.Build.0 = Debug|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.ActiveCfg = Release|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.Build.0 = Release|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.ActiveCfg = Release|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.Build.0 = Release|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.ActiveCfg = Release|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.Build.0 = Release|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.Build.0 = Debug|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.ActiveCfg = Debug|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.Build.0 = Debug|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.ActiveCfg = Debug|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.Build.0 = Debug|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.ActiveCfg = Release|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.Build.0 = Release|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.ActiveCfg = Release|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.Build.0 = Release|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.ActiveCfg = Release|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.Build.0 = Release|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.Build.0 = Debug|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.ActiveCfg = Debug|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.Build.0 = Debug|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.ActiveCfg = Debug|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.Build.0 = Debug|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.ActiveCfg = Release|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.Build.0 = Release|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.ActiveCfg = Release|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.Build.0 = Release|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.ActiveCfg = Release|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.Build.0 = Release|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.Build.0 = Debug|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.ActiveCfg = Debug|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.Build.0 = Debug|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.ActiveCfg = Debug|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.Build.0 = Debug|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.ActiveCfg = Release|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.Build.0 = Release|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.ActiveCfg = Release|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.Build.0 = Release|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.ActiveCfg = Release|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.Build.0 = Release|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.Build.0 = Debug|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.ActiveCfg = Debug|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.Build.0 = Debug|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.ActiveCfg = Debug|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.Build.0 = Debug|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.ActiveCfg = Release|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.Build.0 = Release|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.ActiveCfg = Release|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.Build.0 = Release|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.ActiveCfg = Release|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.Build.0 = Release|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.ActiveCfg = Debug|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.Build.0 = Debug|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.ActiveCfg = Debug|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.Build.0 = Debug|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.Build.0 = Release|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.ActiveCfg = Release|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.Build.0 = Release|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.ActiveCfg = Release|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.Build.0 = Release|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.Build.0 = Debug|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.ActiveCfg = Debug|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.Build.0 = Debug|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.ActiveCfg = Debug|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.Build.0 = Debug|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.ActiveCfg = Release|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.Build.0 = Release|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.ActiveCfg = Release|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.Build.0 = Release|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.ActiveCfg = Release|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.Build.0 = Release|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.Build.0 = Debug|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.ActiveCfg = Debug|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.Build.0 = Debug|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.ActiveCfg = Debug|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.Build.0 = Debug|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.ActiveCfg = Release|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.Build.0 = Release|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.ActiveCfg = Release|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.Build.0 = Release|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.ActiveCfg = Release|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.Build.0 = Release|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.Build.0 = Debug|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.ActiveCfg = Debug|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.Build.0 = Debug|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.ActiveCfg = Debug|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.Build.0 = Debug|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.ActiveCfg = Release|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.Build.0 = Release|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.ActiveCfg = Release|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.Build.0 = Release|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.ActiveCfg = Release|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.Build.0 = Release|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.Build.0 = Debug|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.ActiveCfg = Debug|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.Build.0 = Debug|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.ActiveCfg = Debug|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.Build.0 = Debug|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.ActiveCfg = Release|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.Build.0 = Release|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.ActiveCfg = Release|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.Build.0 = Release|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.ActiveCfg = Release|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.Build.0 = Release|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.Build.0 = Debug|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.ActiveCfg = Debug|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.Build.0 = Debug|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.ActiveCfg = Debug|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.Build.0 = Debug|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.ActiveCfg = Release|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.Build.0 = Release|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.ActiveCfg = Release|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.Build.0 = Release|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.ActiveCfg = Release|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.Build.0 = Release|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.Build.0 = Debug|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.ActiveCfg = Debug|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.Build.0 = Debug|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.ActiveCfg = Debug|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.Build.0 = Debug|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.ActiveCfg = Release|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.Build.0 = Release|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.ActiveCfg = Release|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.Build.0 = Release|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.ActiveCfg = Release|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.Build.0 = Release|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.Build.0 = Debug|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.ActiveCfg = Debug|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.Build.0 = Debug|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.ActiveCfg = Debug|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.Build.0 = Debug|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.ActiveCfg = Release|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.Build.0 = Release|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.ActiveCfg = Release|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.Build.0 = Release|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.ActiveCfg = Release|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.Build.0 = Release|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.Build.0 = Debug|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.ActiveCfg = Debug|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.Build.0 = Debug|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.ActiveCfg = Debug|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.Build.0 = Debug|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.ActiveCfg = Release|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.Build.0 = Release|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.ActiveCfg = Release|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.Build.0 = Release|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.ActiveCfg = Release|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.Build.0 = Release|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.ActiveCfg = Debug|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.Build.0 = Debug|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.ActiveCfg = Debug|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.Build.0 = Debug|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.Build.0 = Release|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.ActiveCfg = Release|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.Build.0 = Release|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.ActiveCfg = Release|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.Build.0 = Release|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.ActiveCfg = Debug|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.Build.0 = Debug|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.ActiveCfg = Debug|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.Build.0 = Debug|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.Build.0 = Release|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.ActiveCfg = Release|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.Build.0 = Release|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.ActiveCfg = Release|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.Build.0 = Release|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.ActiveCfg = Debug|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.Build.0 = Debug|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.ActiveCfg = Debug|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.Build.0 = Debug|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.Build.0 = Release|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.ActiveCfg = Release|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.Build.0 = Release|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.ActiveCfg = Release|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.Build.0 = Release|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.Build.0 = Debug|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.ActiveCfg = Debug|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.Build.0 = Debug|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.ActiveCfg = Debug|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.Build.0 = Debug|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.ActiveCfg = Release|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.Build.0 = Release|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.ActiveCfg = Release|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.Build.0 = Release|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.ActiveCfg = Release|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.Build.0 = Release|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.Build.0 = Debug|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.ActiveCfg = Debug|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.Build.0 = Debug|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.ActiveCfg = Debug|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.Build.0 = Debug|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.ActiveCfg = Release|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.Build.0 = Release|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.ActiveCfg = Release|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.Build.0 = Release|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.ActiveCfg = Release|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.Build.0 = Release|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.Build.0 = Debug|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.ActiveCfg = Debug|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.Build.0 = Debug|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.ActiveCfg = Debug|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.Build.0 = Debug|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.ActiveCfg = Release|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.Build.0 = Release|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.ActiveCfg = Release|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.Build.0 = Release|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.ActiveCfg = Release|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.Build.0 = Release|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.Build.0 = Debug|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.ActiveCfg = Debug|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.Build.0 = Debug|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.ActiveCfg = Debug|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.Build.0 = Debug|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.ActiveCfg = Release|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.Build.0 = Release|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.ActiveCfg = Release|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.Build.0 = Release|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.ActiveCfg = Release|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.Build.0 = Release|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.Build.0 = Debug|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.ActiveCfg = Debug|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.Build.0 = Debug|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.ActiveCfg = Debug|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.Build.0 = Debug|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.ActiveCfg = Release|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.Build.0 = Release|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.ActiveCfg = Release|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.Build.0 = Release|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.ActiveCfg = Release|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.Build.0 = Release|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.Build.0 = Debug|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.ActiveCfg = Debug|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.Build.0 = Debug|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.ActiveCfg = Debug|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.Build.0 = Debug|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.ActiveCfg = Release|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.Build.0 = Release|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.ActiveCfg = Release|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.Build.0 = Release|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.ActiveCfg = Release|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.Build.0 = Release|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.Build.0 = Debug|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.ActiveCfg = Debug|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.Build.0 = Debug|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.ActiveCfg = Debug|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.Build.0 = Debug|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.ActiveCfg = Release|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.Build.0 = Release|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.ActiveCfg = Release|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.Build.0 = Release|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.ActiveCfg = Release|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.Build.0 = Release|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.Build.0 = Debug|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.ActiveCfg = Debug|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.Build.0 = Debug|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.ActiveCfg = Debug|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.Build.0 = Debug|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.ActiveCfg = Release|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.Build.0 = Release|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.ActiveCfg = Release|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.Build.0 = Release|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.ActiveCfg = Release|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.Build.0 = Release|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.ActiveCfg = Debug|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.Build.0 = Debug|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.ActiveCfg = Debug|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.Build.0 = Debug|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.Build.0 = Release|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.ActiveCfg = Release|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.Build.0 = Release|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.ActiveCfg = Release|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.Build.0 = Release|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.Build.0 = Debug|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.ActiveCfg = Debug|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.Build.0 = Debug|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.ActiveCfg = Debug|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.Build.0 = Debug|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.ActiveCfg = Release|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.Build.0 = Release|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.ActiveCfg = Release|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.Build.0 = Release|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.ActiveCfg = Release|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.Build.0 = Release|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.Build.0 = Debug|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.ActiveCfg = Debug|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.Build.0 = Debug|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.ActiveCfg = Debug|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.Build.0 = Debug|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.ActiveCfg = Release|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.Build.0 = Release|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.ActiveCfg = Release|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.Build.0 = Release|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.ActiveCfg = Release|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.Build.0 = Release|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.Build.0 = Debug|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.ActiveCfg = Debug|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.Build.0 = Debug|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.ActiveCfg = Debug|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.Build.0 = Debug|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.ActiveCfg = Release|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.Build.0 = Release|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.ActiveCfg = Release|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.Build.0 = Release|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.ActiveCfg = Release|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.Build.0 = Release|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.Build.0 = Debug|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.ActiveCfg = Debug|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.Build.0 = Debug|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.ActiveCfg = Debug|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.Build.0 = Debug|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.ActiveCfg = Release|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.Build.0 = Release|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.ActiveCfg = Release|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.Build.0 = Release|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.ActiveCfg = Release|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.Build.0 = Release|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.Build.0 = Debug|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.ActiveCfg = Debug|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.Build.0 = Debug|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.ActiveCfg = Debug|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.Build.0 = Debug|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.ActiveCfg = Release|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.Build.0 = Release|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.ActiveCfg = Release|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.Build.0 = Release|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.ActiveCfg = Release|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.Build.0 = Release|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.Build.0 = Debug|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.ActiveCfg = Debug|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.Build.0 = Debug|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.ActiveCfg = Debug|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.Build.0 = Debug|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.ActiveCfg = Release|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.Build.0 = Release|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.ActiveCfg = Release|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.Build.0 = Release|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.ActiveCfg = Release|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.Build.0 = Release|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.Build.0 = Debug|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.ActiveCfg = Debug|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.Build.0 = Debug|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.ActiveCfg = Debug|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.Build.0 = Debug|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.ActiveCfg = Release|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.Build.0 = Release|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.ActiveCfg = Release|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.Build.0 = Release|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.ActiveCfg = Release|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.Build.0 = Release|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.Build.0 = Debug|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.ActiveCfg = Debug|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.Build.0 = Debug|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.ActiveCfg = Debug|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.Build.0 = Debug|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.ActiveCfg = Release|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.Build.0 = Release|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.ActiveCfg = Release|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.Build.0 = Release|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.ActiveCfg = Release|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.Build.0 = Release|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.Build.0 = Debug|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.ActiveCfg = Debug|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.Build.0 = Debug|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.ActiveCfg = Debug|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.Build.0 = Debug|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.ActiveCfg = Release|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.Build.0 = Release|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.ActiveCfg = Release|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.Build.0 = Release|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.ActiveCfg = Release|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.Build.0 = Release|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.Build.0 = Debug|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.ActiveCfg = Debug|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.Build.0 = Debug|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.ActiveCfg = Debug|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.Build.0 = Debug|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.ActiveCfg = Release|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.Build.0 = Release|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.ActiveCfg = Release|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.Build.0 = Release|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.ActiveCfg = Release|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.Build.0 = Release|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.Build.0 = Debug|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.ActiveCfg = Debug|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.Build.0 = Debug|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.ActiveCfg = Debug|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.Build.0 = Debug|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.ActiveCfg = Release|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.Build.0 = Release|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.ActiveCfg = Release|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.Build.0 = Release|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.ActiveCfg = Release|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.Build.0 = Release|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.Build.0 = Debug|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.ActiveCfg = Debug|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.Build.0 = Debug|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.ActiveCfg = Debug|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.Build.0 = Debug|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.ActiveCfg = Release|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.Build.0 = Release|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x64.ActiveCfg = Release|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x64.Build.0 = Release|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x86.ActiveCfg = Release|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release|x86.Build.0 = Release|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.Build.0 = Debug|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.ActiveCfg = Debug|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.Build.0 = Debug|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.ActiveCfg = Debug|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.Build.0 = Debug|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.ActiveCfg = Release|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.Build.0 = Release|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.ActiveCfg = Release|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.Build.0 = Release|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.ActiveCfg = Release|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.Build.0 = Release|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.Build.0 = Debug|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.ActiveCfg = Debug|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.Build.0 = Debug|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.ActiveCfg = Debug|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.Build.0 = Debug|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.ActiveCfg = Release|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.Build.0 = Release|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.ActiveCfg = Release|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.Build.0 = Release|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.ActiveCfg = Release|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.Build.0 = Release|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.Build.0 = Debug|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.ActiveCfg = Debug|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.Build.0 = Debug|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.ActiveCfg = Debug|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.Build.0 = Debug|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.ActiveCfg = Release|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.Build.0 = Release|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.ActiveCfg = Release|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.Build.0 = Release|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.ActiveCfg = Release|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.Build.0 = Release|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.Build.0 = Debug|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.ActiveCfg = Debug|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.Build.0 = Debug|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.ActiveCfg = Debug|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.Build.0 = Debug|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.ActiveCfg = Release|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.Build.0 = Release|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.ActiveCfg = Release|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.Build.0 = Release|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.ActiveCfg = Release|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.Build.0 = Release|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.Build.0 = Debug|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.ActiveCfg = Debug|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.Build.0 = Debug|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.ActiveCfg = Debug|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.Build.0 = Debug|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.ActiveCfg = Release|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.Build.0 = Release|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.ActiveCfg = Release|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.Build.0 = Release|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.ActiveCfg = Release|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.Build.0 = Release|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.Build.0 = Debug|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.ActiveCfg = Debug|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.Build.0 = Debug|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.ActiveCfg = Debug|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.Build.0 = Debug|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.ActiveCfg = Release|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.Build.0 = Release|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.ActiveCfg = Release|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.Build.0 = Release|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.ActiveCfg = Release|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.Build.0 = Release|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.Build.0 = Debug|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.ActiveCfg = Debug|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.Build.0 = Debug|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.ActiveCfg = Debug|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.Build.0 = Debug|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.ActiveCfg = Release|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.Build.0 = Release|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.ActiveCfg = Release|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.Build.0 = Release|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.ActiveCfg = Release|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.Build.0 = Release|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.Build.0 = Debug|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.ActiveCfg = Debug|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.Build.0 = Debug|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.ActiveCfg = Debug|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.Build.0 = Debug|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.ActiveCfg = Release|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.Build.0 = Release|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.ActiveCfg = Release|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.Build.0 = Release|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.ActiveCfg = Release|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.Build.0 = Release|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.Build.0 = Debug|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.ActiveCfg = Debug|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.Build.0 = Debug|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.ActiveCfg = Debug|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.Build.0 = Debug|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.ActiveCfg = Release|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.Build.0 = Release|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.ActiveCfg = Release|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.Build.0 = Release|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.ActiveCfg = Release|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.Build.0 = Release|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.Build.0 = Debug|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.Build.0 = Debug|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.ActiveCfg = Release|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.Build.0 = Release|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.ActiveCfg = Release|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.Build.0 = Release|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.Build.0 = Debug|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.ActiveCfg = Debug|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.Build.0 = Debug|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.ActiveCfg = Debug|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.Build.0 = Debug|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.ActiveCfg = Release|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.Build.0 = Release|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.ActiveCfg = Release|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.Build.0 = Release|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.ActiveCfg = Release|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.Build.0 = Release|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.Build.0 = Debug|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.ActiveCfg = Debug|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.Build.0 = Debug|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.ActiveCfg = Debug|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.Build.0 = Debug|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.ActiveCfg = Release|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.Build.0 = Release|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.ActiveCfg = Release|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.Build.0 = Release|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.ActiveCfg = Release|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.Build.0 = Release|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.Build.0 = Debug|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.ActiveCfg = Debug|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.Build.0 = Debug|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.ActiveCfg = Debug|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.Build.0 = Debug|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.ActiveCfg = Release|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.Build.0 = Release|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.ActiveCfg = Release|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.Build.0 = Release|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.ActiveCfg = Release|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.Build.0 = Release|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.Build.0 = Debug|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.ActiveCfg = Debug|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.Build.0 = Debug|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.ActiveCfg = Debug|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.Build.0 = Debug|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.ActiveCfg = Release|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.Build.0 = Release|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.ActiveCfg = Release|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.Build.0 = Release|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.ActiveCfg = Release|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.Build.0 = Release|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.Build.0 = Debug|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.ActiveCfg = Debug|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.Build.0 = Debug|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.ActiveCfg = Debug|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.Build.0 = Debug|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.ActiveCfg = Release|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.Build.0 = Release|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.ActiveCfg = Release|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.Build.0 = Release|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.ActiveCfg = Release|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.Build.0 = Release|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.Build.0 = Debug|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.ActiveCfg = Debug|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.Build.0 = Debug|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.ActiveCfg = Debug|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.Build.0 = Debug|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.ActiveCfg = Release|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.Build.0 = Release|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.ActiveCfg = Release|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.Build.0 = Release|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.ActiveCfg = Release|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.Build.0 = Release|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.Build.0 = Debug|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.ActiveCfg = Debug|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.Build.0 = Debug|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.ActiveCfg = Debug|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.Build.0 = Debug|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.ActiveCfg = Release|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.Build.0 = Release|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.ActiveCfg = Release|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.Build.0 = Release|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.ActiveCfg = Release|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.Build.0 = Release|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.Build.0 = Debug|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.ActiveCfg = Debug|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.Build.0 = Debug|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.ActiveCfg = Debug|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.Build.0 = Debug|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.ActiveCfg = Release|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.Build.0 = Release|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.ActiveCfg = Release|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.Build.0 = Release|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.ActiveCfg = Release|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.Build.0 = Release|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.Build.0 = Debug|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.ActiveCfg = Debug|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.Build.0 = Debug|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.ActiveCfg = Debug|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.Build.0 = Debug|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.ActiveCfg = Release|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.Build.0 = Release|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.ActiveCfg = Release|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.Build.0 = Release|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.ActiveCfg = Release|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.Build.0 = Release|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.Build.0 = Debug|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.ActiveCfg = Debug|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.Build.0 = Debug|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.ActiveCfg = Debug|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.Build.0 = Debug|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.ActiveCfg = Release|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.Build.0 = Release|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.ActiveCfg = Release|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.Build.0 = Debug|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.ActiveCfg = Debug|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.Build.0 = Debug|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.ActiveCfg = Debug|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.Build.0 = Debug|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.ActiveCfg = Release|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.Build.0 = Release|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.ActiveCfg = Release|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.Build.0 = Release|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.ActiveCfg = Release|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.Build.0 = Release|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.Build.0 = Debug|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.ActiveCfg = Debug|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.Build.0 = Debug|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.ActiveCfg = Debug|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.Build.0 = Debug|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.ActiveCfg = Release|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.Build.0 = Release|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.ActiveCfg = Release|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.Build.0 = Release|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.ActiveCfg = Release|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.Build.0 = Release|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.Build.0 = Debug|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.ActiveCfg = Debug|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.Build.0 = Debug|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.ActiveCfg = Debug|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.Build.0 = Debug|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.ActiveCfg = Release|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.Build.0 = Release|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.ActiveCfg = Release|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.Build.0 = Release|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.ActiveCfg = Release|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.Build.0 = Release|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.Build.0 = Debug|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.ActiveCfg = Debug|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.Build.0 = Debug|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.ActiveCfg = Debug|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.Build.0 = Debug|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.ActiveCfg = Release|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.Build.0 = Release|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.ActiveCfg = Release|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.Build.0 = Release|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.ActiveCfg = Release|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.Build.0 = Release|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.Build.0 = Debug|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.ActiveCfg = Debug|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.Build.0 = Debug|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.ActiveCfg = Debug|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.Build.0 = Debug|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.Build.0 = Release|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.ActiveCfg = Release|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.Build.0 = Release|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.ActiveCfg = Release|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.Build.0 = Release|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.Build.0 = Debug|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.ActiveCfg = Debug|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.Build.0 = Debug|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.ActiveCfg = Debug|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.Build.0 = Debug|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.ActiveCfg = Release|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.Build.0 = Release|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.ActiveCfg = Release|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.Build.0 = Release|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.ActiveCfg = Release|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.Build.0 = Release|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.Build.0 = Debug|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.ActiveCfg = Debug|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.Build.0 = Debug|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.ActiveCfg = Debug|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.Build.0 = Debug|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.ActiveCfg = Release|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.Build.0 = Release|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.ActiveCfg = Release|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.Build.0 = Release|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.ActiveCfg = Release|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.Build.0 = Release|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.Build.0 = Debug|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.ActiveCfg = Debug|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.Build.0 = Debug|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.ActiveCfg = Debug|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.Build.0 = Debug|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.ActiveCfg = Release|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.Build.0 = Release|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.ActiveCfg = Release|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.Build.0 = Release|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.ActiveCfg = Release|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.Build.0 = Release|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.Build.0 = Debug|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.ActiveCfg = Debug|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.Build.0 = Debug|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.ActiveCfg = Debug|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.Build.0 = Debug|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.ActiveCfg = Release|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.Build.0 = Release|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.ActiveCfg = Release|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.Build.0 = Debug|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.ActiveCfg = Debug|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.Build.0 = Debug|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.ActiveCfg = Debug|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.Build.0 = Debug|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.ActiveCfg = Release|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.Build.0 = Release|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.ActiveCfg = Release|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.Build.0 = Release|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.ActiveCfg = Release|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.Build.0 = Release|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.Build.0 = Debug|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.ActiveCfg = Debug|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.Build.0 = Debug|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.ActiveCfg = Debug|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.Build.0 = Debug|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.ActiveCfg = Release|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.Build.0 = Release|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.ActiveCfg = Release|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.Build.0 = Release|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.ActiveCfg = Release|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.Build.0 = Release|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.Build.0 = Debug|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.ActiveCfg = Debug|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.Build.0 = Debug|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.ActiveCfg = Debug|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.Build.0 = Debug|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.ActiveCfg = Release|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.Build.0 = Release|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.ActiveCfg = Release|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.Build.0 = Release|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.ActiveCfg = Release|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.Build.0 = Release|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.Build.0 = Debug|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.ActiveCfg = Debug|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.Build.0 = Debug|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.ActiveCfg = Debug|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.Build.0 = Debug|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.ActiveCfg = Release|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.Build.0 = Release|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.ActiveCfg = Release|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.Build.0 = Release|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.ActiveCfg = Release|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.Build.0 = Release|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.ActiveCfg = Debug|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.Build.0 = Debug|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.ActiveCfg = Debug|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.Build.0 = Debug|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.Build.0 = Release|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.ActiveCfg = Release|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.Build.0 = Release|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.ActiveCfg = Release|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.Build.0 = Release|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.Build.0 = Debug|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.ActiveCfg = Debug|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.Build.0 = Debug|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.ActiveCfg = Debug|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.Build.0 = Debug|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.ActiveCfg = Release|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.Build.0 = Release|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.ActiveCfg = Release|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.Build.0 = Release|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.ActiveCfg = Release|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.Build.0 = Release|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.ActiveCfg = Debug|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.Build.0 = Debug|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.ActiveCfg = Debug|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.Build.0 = Debug|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.Build.0 = Release|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.ActiveCfg = Release|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.Build.0 = Release|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.ActiveCfg = Release|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.Build.0 = Release|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.Build.0 = Debug|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.ActiveCfg = Debug|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.Build.0 = Debug|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.ActiveCfg = Debug|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.Build.0 = Debug|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.ActiveCfg = Release|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.Build.0 = Release|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.ActiveCfg = Release|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.Build.0 = Release|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.ActiveCfg = Release|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.Build.0 = Release|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.Build.0 = Debug|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.ActiveCfg = Debug|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.Build.0 = Debug|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.ActiveCfg = Debug|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.Build.0 = Debug|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.ActiveCfg = Release|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.Build.0 = Release|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.ActiveCfg = Release|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.Build.0 = Release|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.ActiveCfg = Release|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.Build.0 = Release|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.Build.0 = Debug|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.ActiveCfg = Debug|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.Build.0 = Debug|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.ActiveCfg = Debug|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.Build.0 = Debug|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.ActiveCfg = Release|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.Build.0 = Release|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.ActiveCfg = Release|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.Build.0 = Release|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.ActiveCfg = Release|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.Build.0 = Release|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.Build.0 = Debug|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.ActiveCfg = Debug|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.Build.0 = Debug|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.ActiveCfg = Debug|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.Build.0 = Debug|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.ActiveCfg = Release|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.Build.0 = Release|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.ActiveCfg = Release|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.Build.0 = Release|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.ActiveCfg = Release|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.Build.0 = Release|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.Build.0 = Debug|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.ActiveCfg = Debug|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.Build.0 = Debug|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.ActiveCfg = Debug|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.Build.0 = Debug|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.ActiveCfg = Release|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.Build.0 = Release|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.ActiveCfg = Release|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.Build.0 = Release|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.ActiveCfg = Release|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.Build.0 = Release|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.Build.0 = Debug|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.ActiveCfg = Debug|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.Build.0 = Debug|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.ActiveCfg = Debug|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.Build.0 = Debug|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.ActiveCfg = Release|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.Build.0 = Release|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.ActiveCfg = Release|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.Build.0 = Release|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.ActiveCfg = Release|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.Build.0 = Release|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.Build.0 = Debug|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.ActiveCfg = Debug|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.Build.0 = Debug|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.ActiveCfg = Debug|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.Build.0 = Debug|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.ActiveCfg = Release|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.Build.0 = Release|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.ActiveCfg = Release|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.Build.0 = Release|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.ActiveCfg = Release|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.Build.0 = Release|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.Build.0 = Debug|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.ActiveCfg = Debug|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.Build.0 = Debug|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.ActiveCfg = Debug|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.Build.0 = Debug|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.ActiveCfg = Release|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.Build.0 = Release|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.ActiveCfg = Release|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.Build.0 = Release|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.ActiveCfg = Release|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.Build.0 = Release|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.Build.0 = Debug|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.ActiveCfg = Debug|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.Build.0 = Debug|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.ActiveCfg = Debug|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.Build.0 = Debug|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.ActiveCfg = Release|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.Build.0 = Release|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.ActiveCfg = Release|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.Build.0 = Release|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.ActiveCfg = Release|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.Build.0 = Release|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.Build.0 = Debug|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.ActiveCfg = Debug|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.Build.0 = Debug|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.ActiveCfg = Debug|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.Build.0 = Debug|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.ActiveCfg = Release|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.Build.0 = Release|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.ActiveCfg = Release|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.Build.0 = Release|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.ActiveCfg = Release|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.Build.0 = Release|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.Build.0 = Debug|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.ActiveCfg = Debug|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.Build.0 = Debug|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.ActiveCfg = Debug|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.Build.0 = Debug|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.ActiveCfg = Release|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.Build.0 = Release|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.ActiveCfg = Release|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.Build.0 = Release|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.ActiveCfg = Release|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.Build.0 = Release|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.Build.0 = Debug|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.ActiveCfg = Debug|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.Build.0 = Debug|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.ActiveCfg = Debug|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.Build.0 = Debug|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.ActiveCfg = Release|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.Build.0 = Release|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.ActiveCfg = Release|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.Build.0 = Release|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.ActiveCfg = Release|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.Build.0 = Release|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.Build.0 = Debug|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.ActiveCfg = Debug|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.Build.0 = Debug|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.ActiveCfg = Debug|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.Build.0 = Debug|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.ActiveCfg = Release|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.Build.0 = Release|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.ActiveCfg = Release|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.Build.0 = Release|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.ActiveCfg = Release|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.Build.0 = Release|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.Build.0 = Debug|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.ActiveCfg = Debug|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.Build.0 = Debug|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.ActiveCfg = Debug|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.Build.0 = Debug|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.ActiveCfg = Release|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.Build.0 = Release|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.ActiveCfg = Release|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.Build.0 = Release|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.ActiveCfg = Release|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.Build.0 = Release|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.Build.0 = Debug|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.ActiveCfg = Debug|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.Build.0 = Debug|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.ActiveCfg = Debug|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.Build.0 = Debug|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.ActiveCfg = Release|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.Build.0 = Release|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.ActiveCfg = Release|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.Build.0 = Release|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.ActiveCfg = Release|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.Build.0 = Release|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.Build.0 = Debug|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.ActiveCfg = Debug|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.Build.0 = Debug|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.ActiveCfg = Debug|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.Build.0 = Debug|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.ActiveCfg = Release|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.Build.0 = Release|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.ActiveCfg = Release|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.Build.0 = Release|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.ActiveCfg = Release|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.Build.0 = Release|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.Build.0 = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.ActiveCfg = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.Build.0 = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.ActiveCfg = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.Build.0 = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.ActiveCfg = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.Build.0 = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.ActiveCfg = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.Build.0 = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.ActiveCfg = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.Build.0 = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.ActiveCfg = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.Build.0 = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.ActiveCfg = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.Build.0 = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.Build.0 = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.ActiveCfg = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.Build.0 = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.ActiveCfg = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.Build.0 = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.Build.0 = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.ActiveCfg = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.Build.0 = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.ActiveCfg = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.Build.0 = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.ActiveCfg = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.Build.0 = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.ActiveCfg = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.Build.0 = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.ActiveCfg = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.Build.0 = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.Build.0 = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.ActiveCfg = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.Build.0 = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.ActiveCfg = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.Build.0 = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.ActiveCfg = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.Build.0 = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.ActiveCfg = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.Build.0 = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.ActiveCfg = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.Build.0 = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.Build.0 = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.ActiveCfg = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.Build.0 = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.ActiveCfg = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.Build.0 = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.ActiveCfg = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.Build.0 = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.ActiveCfg = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.Build.0 = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.ActiveCfg = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.Build.0 = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.Build.0 = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.ActiveCfg = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.Build.0 = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.ActiveCfg = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.Build.0 = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.ActiveCfg = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.Build.0 = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.ActiveCfg = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.Build.0 = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.ActiveCfg = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.Build.0 = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.ActiveCfg = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.Build.0 = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.ActiveCfg = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.Build.0 = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.Build.0 = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.ActiveCfg = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.Build.0 = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.ActiveCfg = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.Build.0 = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.Build.0 = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.ActiveCfg = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.Build.0 = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.ActiveCfg = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.Build.0 = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.ActiveCfg = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.Build.0 = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.ActiveCfg = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.Build.0 = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.ActiveCfg = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.Build.0 = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.Build.0 = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.ActiveCfg = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.Build.0 = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.ActiveCfg = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.Build.0 = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.ActiveCfg = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.Build.0 = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.ActiveCfg = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.Build.0 = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.ActiveCfg = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.Build.0 = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.Build.0 = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.ActiveCfg = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.Build.0 = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.ActiveCfg = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.Build.0 = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.ActiveCfg = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.Build.0 = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.ActiveCfg = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.Build.0 = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.ActiveCfg = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.Build.0 = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.ActiveCfg = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.Build.0 = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.ActiveCfg = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.Build.0 = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.ActiveCfg = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.Build.0 = Debug|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.ActiveCfg = Debug|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.Build.0 = Debug|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.ActiveCfg = Debug|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.Build.0 = Debug|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.ActiveCfg = Release|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.Build.0 = Release|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.ActiveCfg = Release|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.Build.0 = Release|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.ActiveCfg = Release|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.Build.0 = Release|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.Build.0 = Debug|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.ActiveCfg = Debug|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.Build.0 = Debug|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.ActiveCfg = Debug|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.Build.0 = Debug|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.ActiveCfg = Release|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.Build.0 = Release|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.ActiveCfg = Release|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.Build.0 = Release|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.ActiveCfg = Release|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.Build.0 = Release|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.Build.0 = Debug|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.ActiveCfg = Debug|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.Build.0 = Debug|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.ActiveCfg = Debug|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.Build.0 = Debug|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.ActiveCfg = Release|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.Build.0 = Release|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.ActiveCfg = Release|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.Build.0 = Release|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.ActiveCfg = Release|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.Build.0 = Release|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.Build.0 = Debug|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.ActiveCfg = Debug|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.Build.0 = Debug|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.ActiveCfg = Debug|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.Build.0 = Debug|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.ActiveCfg = Release|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.Build.0 = Release|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.ActiveCfg = Release|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.Build.0 = Release|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.ActiveCfg = Release|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.Build.0 = Release|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.Build.0 = Debug|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.ActiveCfg = Debug|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.Build.0 = Debug|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.ActiveCfg = Debug|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.Build.0 = Debug|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.ActiveCfg = Release|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.Build.0 = Release|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.ActiveCfg = Release|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.Build.0 = Release|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.ActiveCfg = Release|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.Build.0 = Release|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.Build.0 = Debug|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.ActiveCfg = Debug|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.Build.0 = Debug|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.ActiveCfg = Debug|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.Build.0 = Debug|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.ActiveCfg = Release|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.Build.0 = Release|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.ActiveCfg = Release|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.Build.0 = Release|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.ActiveCfg = Release|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.Build.0 = Release|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.Build.0 = Debug|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.ActiveCfg = Debug|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.Build.0 = Debug|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.ActiveCfg = Debug|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.Build.0 = Debug|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.ActiveCfg = Release|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.Build.0 = Release|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.ActiveCfg = Release|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.Build.0 = Release|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.ActiveCfg = Release|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.Build.0 = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.Build.0 = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.ActiveCfg = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.Build.0 = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.ActiveCfg = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.Build.0 = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.ActiveCfg = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.Build.0 = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.ActiveCfg = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.Build.0 = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.ActiveCfg = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.Build.0 = Release|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.Build.0 = Debug|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.ActiveCfg = Debug|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.Build.0 = Debug|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.ActiveCfg = Debug|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.Build.0 = Debug|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.ActiveCfg = Release|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.Build.0 = Release|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.ActiveCfg = Release|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.Build.0 = Release|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.ActiveCfg = Release|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.Build.0 = Release|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.Build.0 = Debug|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.ActiveCfg = Debug|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.Build.0 = Debug|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.ActiveCfg = Debug|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.Build.0 = Debug|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.ActiveCfg = Release|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.Build.0 = Release|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.ActiveCfg = Release|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.Build.0 = Release|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.ActiveCfg = Release|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.Build.0 = Release|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.Build.0 = Debug|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.ActiveCfg = Debug|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.Build.0 = Debug|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.ActiveCfg = Debug|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.Build.0 = Debug|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.ActiveCfg = Release|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.Build.0 = Release|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.ActiveCfg = Release|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.Build.0 = Release|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.ActiveCfg = Release|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.Build.0 = Release|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.Build.0 = Debug|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.ActiveCfg = Debug|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.Build.0 = Debug|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.ActiveCfg = Debug|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.Build.0 = Debug|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.ActiveCfg = Release|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.Build.0 = Release|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.ActiveCfg = Release|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.Build.0 = Release|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.ActiveCfg = Release|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.Build.0 = Release|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.Build.0 = Debug|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.ActiveCfg = Debug|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.Build.0 = Debug|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.ActiveCfg = Debug|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.Build.0 = Debug|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.ActiveCfg = Release|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.Build.0 = Release|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.ActiveCfg = Release|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.Build.0 = Release|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.ActiveCfg = Release|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.Build.0 = Release|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.Build.0 = Debug|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.ActiveCfg = Debug|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.Build.0 = Debug|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.ActiveCfg = Debug|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.Build.0 = Debug|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.ActiveCfg = Release|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.Build.0 = Release|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.ActiveCfg = Release|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.Build.0 = Debug|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.ActiveCfg = Debug|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.Build.0 = Debug|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.ActiveCfg = Debug|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.Build.0 = Debug|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.ActiveCfg = Release|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.Build.0 = Release|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.ActiveCfg = Release|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.Build.0 = Release|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.ActiveCfg = Release|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.Build.0 = Release|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.ActiveCfg = Debug|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.Build.0 = Debug|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.ActiveCfg = Debug|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.Build.0 = Debug|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.Build.0 = Release|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.ActiveCfg = Release|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.Build.0 = Release|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.ActiveCfg = Release|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.Build.0 = Release|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.Build.0 = Debug|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.ActiveCfg = Debug|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.Build.0 = Debug|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.ActiveCfg = Debug|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.Build.0 = Debug|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.ActiveCfg = Release|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.Build.0 = Release|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.ActiveCfg = Release|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.Build.0 = Release|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.ActiveCfg = Release|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.Build.0 = Release|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.Build.0 = Debug|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.ActiveCfg = Debug|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.Build.0 = Debug|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.ActiveCfg = Debug|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.Build.0 = Debug|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.ActiveCfg = Release|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.Build.0 = Release|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.ActiveCfg = Release|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.Build.0 = Release|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.ActiveCfg = Release|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.Build.0 = Release|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.Build.0 = Debug|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.ActiveCfg = Debug|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.Build.0 = Debug|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.ActiveCfg = Debug|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.Build.0 = Debug|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.ActiveCfg = Release|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.Build.0 = Release|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.ActiveCfg = Release|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.Build.0 = Release|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.ActiveCfg = Release|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.Build.0 = Release|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.Build.0 = Debug|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.ActiveCfg = Debug|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.Build.0 = Debug|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.ActiveCfg = Debug|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.Build.0 = Debug|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.ActiveCfg = Release|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.Build.0 = Release|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.ActiveCfg = Release|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.Build.0 = Release|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.ActiveCfg = Release|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.Build.0 = Release|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.Build.0 = Debug|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.ActiveCfg = Debug|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.Build.0 = Debug|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.ActiveCfg = Debug|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.Build.0 = Debug|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.ActiveCfg = Release|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.Build.0 = Release|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.ActiveCfg = Release|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.Build.0 = Release|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.ActiveCfg = Release|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.Build.0 = Release|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.Build.0 = Debug|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.ActiveCfg = Debug|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.Build.0 = Debug|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.ActiveCfg = Debug|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.Build.0 = Debug|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.ActiveCfg = Release|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.Build.0 = Release|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.ActiveCfg = Release|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.Build.0 = Release|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.ActiveCfg = Release|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.Build.0 = Release|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.Build.0 = Debug|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.ActiveCfg = Debug|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.Build.0 = Debug|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.ActiveCfg = Debug|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.Build.0 = Debug|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.ActiveCfg = Release|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.Build.0 = Release|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.ActiveCfg = Release|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.Build.0 = Release|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.ActiveCfg = Release|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.Build.0 = Release|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.Build.0 = Debug|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.ActiveCfg = Debug|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.Build.0 = Debug|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.ActiveCfg = Debug|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.Build.0 = Debug|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.ActiveCfg = Release|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.Build.0 = Release|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.ActiveCfg = Release|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.Build.0 = Release|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.ActiveCfg = Release|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.Build.0 = Release|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.Build.0 = Debug|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.ActiveCfg = Debug|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.Build.0 = Debug|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.ActiveCfg = Debug|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.Build.0 = Debug|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.ActiveCfg = Release|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.Build.0 = Release|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.ActiveCfg = Release|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.Build.0 = Release|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.ActiveCfg = Release|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.Build.0 = Release|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.Build.0 = Debug|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.ActiveCfg = Debug|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.Build.0 = Debug|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.ActiveCfg = Debug|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.Build.0 = Debug|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.ActiveCfg = Release|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.Build.0 = Release|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.ActiveCfg = Release|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.Build.0 = Release|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.ActiveCfg = Release|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.Build.0 = Release|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.Build.0 = Debug|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.ActiveCfg = Debug|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.Build.0 = Debug|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.ActiveCfg = Debug|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.Build.0 = Debug|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.ActiveCfg = Release|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.Build.0 = Release|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.ActiveCfg = Release|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.Build.0 = Release|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.ActiveCfg = Release|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.Build.0 = Release|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.ActiveCfg = Debug|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.Build.0 = Debug|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.ActiveCfg = Debug|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.Build.0 = Debug|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.Build.0 = Release|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.ActiveCfg = Release|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.Build.0 = Release|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.ActiveCfg = Release|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.Build.0 = Release|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.Build.0 = Debug|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.ActiveCfg = Debug|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.Build.0 = Debug|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.ActiveCfg = Debug|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.Build.0 = Debug|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.ActiveCfg = Release|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.Build.0 = Release|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.ActiveCfg = Release|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.Build.0 = Release|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.ActiveCfg = Release|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.Build.0 = Release|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.Build.0 = Debug|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.ActiveCfg = Debug|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.Build.0 = Debug|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.ActiveCfg = Debug|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.Build.0 = Debug|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.ActiveCfg = Release|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.Build.0 = Release|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.ActiveCfg = Release|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.Build.0 = Release|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.ActiveCfg = Release|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.Build.0 = Release|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.Build.0 = Debug|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.ActiveCfg = Debug|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.Build.0 = Debug|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.ActiveCfg = Debug|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.Build.0 = Debug|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.ActiveCfg = Release|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.Build.0 = Release|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.ActiveCfg = Release|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.Build.0 = Release|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.ActiveCfg = Release|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.Build.0 = Release|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.Build.0 = Debug|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.ActiveCfg = Debug|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.Build.0 = Debug|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.ActiveCfg = Debug|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.Build.0 = Debug|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.ActiveCfg = Release|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.Build.0 = Release|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.ActiveCfg = Release|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.Build.0 = Release|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.ActiveCfg = Release|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.Build.0 = Release|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.Build.0 = Debug|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.ActiveCfg = Debug|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.Build.0 = Debug|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.ActiveCfg = Debug|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.Build.0 = Debug|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.ActiveCfg = Release|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.Build.0 = Release|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.ActiveCfg = Release|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.Build.0 = Release|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.ActiveCfg = Release|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.Build.0 = Release|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.Build.0 = Debug|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.ActiveCfg = Debug|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.Build.0 = Debug|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.ActiveCfg = Debug|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.Build.0 = Debug|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.ActiveCfg = Release|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.Build.0 = Release|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.ActiveCfg = Release|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.Build.0 = Release|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.ActiveCfg = Release|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.Build.0 = Release|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.Build.0 = Debug|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.ActiveCfg = Debug|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.Build.0 = Debug|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.ActiveCfg = Debug|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.Build.0 = Debug|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.ActiveCfg = Release|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.Build.0 = Release|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.ActiveCfg = Release|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.Build.0 = Release|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.ActiveCfg = Release|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.Build.0 = Release|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.Build.0 = Debug|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.ActiveCfg = Debug|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.Build.0 = Debug|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.ActiveCfg = Debug|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.Build.0 = Debug|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.ActiveCfg = Release|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.Build.0 = Release|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.ActiveCfg = Release|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.Build.0 = Release|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.ActiveCfg = Release|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.Build.0 = Release|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.ActiveCfg = Debug|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.Build.0 = Debug|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.ActiveCfg = Debug|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.Build.0 = Debug|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.Build.0 = Release|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.ActiveCfg = Release|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.Build.0 = Release|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.ActiveCfg = Release|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.Build.0 = Release|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.ActiveCfg = Debug|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.Build.0 = Debug|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.ActiveCfg = Debug|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.Build.0 = Debug|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.Build.0 = Release|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.ActiveCfg = Release|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.Build.0 = Release|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.ActiveCfg = Release|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.Build.0 = Release|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.Build.0 = Debug|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.ActiveCfg = Debug|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.Build.0 = Debug|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.ActiveCfg = Debug|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.Build.0 = Debug|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.ActiveCfg = Release|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.Build.0 = Release|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.ActiveCfg = Release|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.Build.0 = Release|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.ActiveCfg = Release|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.Build.0 = Release|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.Build.0 = Debug|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.ActiveCfg = Debug|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.Build.0 = Debug|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.ActiveCfg = Debug|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.Build.0 = Debug|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.ActiveCfg = Release|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.Build.0 = Release|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.ActiveCfg = Release|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.Build.0 = Release|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.ActiveCfg = Release|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.Build.0 = Release|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.Build.0 = Debug|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.ActiveCfg = Debug|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.Build.0 = Debug|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.ActiveCfg = Debug|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.Build.0 = Debug|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.ActiveCfg = Release|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.Build.0 = Release|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.ActiveCfg = Release|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.Build.0 = Release|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.ActiveCfg = Release|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.Build.0 = Release|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.Build.0 = Debug|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.ActiveCfg = Debug|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.Build.0 = Debug|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.ActiveCfg = Debug|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.Build.0 = Debug|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.ActiveCfg = Release|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.Build.0 = Release|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.ActiveCfg = Release|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.Build.0 = Release|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.ActiveCfg = Release|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.Build.0 = Release|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.Build.0 = Debug|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.ActiveCfg = Debug|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.Build.0 = Debug|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.ActiveCfg = Debug|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.Build.0 = Debug|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.ActiveCfg = Release|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.Build.0 = Release|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.ActiveCfg = Release|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.Build.0 = Release|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.ActiveCfg = Release|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.Build.0 = Release|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.Build.0 = Debug|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.ActiveCfg = Debug|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.Build.0 = Debug|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.ActiveCfg = Debug|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.Build.0 = Debug|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.ActiveCfg = Release|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.Build.0 = Release|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.ActiveCfg = Release|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.Build.0 = Release|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.ActiveCfg = Release|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.Build.0 = Release|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.Build.0 = Debug|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.ActiveCfg = Debug|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.Build.0 = Debug|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.ActiveCfg = Debug|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.Build.0 = Debug|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.ActiveCfg = Release|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.Build.0 = Release|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.ActiveCfg = Release|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.Build.0 = Release|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.ActiveCfg = Release|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.Build.0 = Release|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.Build.0 = Debug|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.ActiveCfg = Debug|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.Build.0 = Debug|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.ActiveCfg = Debug|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.Build.0 = Debug|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.ActiveCfg = Release|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.Build.0 = Release|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.ActiveCfg = Release|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.Build.0 = Release|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.ActiveCfg = Release|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.Build.0 = Release|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.Build.0 = Debug|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.ActiveCfg = Debug|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.Build.0 = Debug|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.ActiveCfg = Debug|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.Build.0 = Debug|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.ActiveCfg = Release|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.Build.0 = Release|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.ActiveCfg = Release|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.Build.0 = Release|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.ActiveCfg = Release|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.Build.0 = Release|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.Build.0 = Debug|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.ActiveCfg = Debug|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.Build.0 = Debug|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.ActiveCfg = Debug|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.Build.0 = Debug|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.ActiveCfg = Release|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.Build.0 = Release|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.ActiveCfg = Release|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.Build.0 = Release|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.ActiveCfg = Release|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.Build.0 = Release|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.Build.0 = Debug|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.ActiveCfg = Debug|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.Build.0 = Debug|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.ActiveCfg = Debug|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.Build.0 = Debug|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.ActiveCfg = Release|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.Build.0 = Release|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.ActiveCfg = Release|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.Build.0 = Release|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.ActiveCfg = Release|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.Build.0 = Release|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.Build.0 = Debug|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.ActiveCfg = Debug|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.Build.0 = Debug|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.ActiveCfg = Debug|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.Build.0 = Debug|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.ActiveCfg = Release|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.Build.0 = Release|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.ActiveCfg = Release|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0C2D2F82-AE67-400C-B19C-8C9B957B132A} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {F81C5819-85B6-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {66CC5B13-881A-412F-8C51-746622A91C5A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {557138B0-7BE2-4392-B2E2-B45734031A62} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {9EED87BB-527F-4D05-9384-6D16CFD627A8} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {FD193822-3D5C-4161-A147-884C2ABDE483} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {20AD0AC9-9159-4744-99CC-6AC5779D6B87} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {0199E349-0701-40BC-8A7F-06A54FFA3E7C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {8F19E3DA-8929-4000-87B5-3CA6929636CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {51A00565-5787-4911-9CC0-28403AA4909D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {92B64AE7-D773-4F05-89F1-CE59BBF4F053} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A643BB06-735D-47F3-BFE7-B6D3C36F7097} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {B332DCA8-3599-4A99-917A-82261BDC27AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {59089B0C-AAB4-4532-B294-44DEAE7178B7} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {C298876B-6C12-4EA4-903B-33450BCD9884} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {83F586FA-C801-4979-ACCA-006BD628CC88} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {FF2970AE-E2E9-405F-B321-D523A1BD44A0} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {79417CE2-FEEB-42F0-BC53-62D5267B19B1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AFDDE100-2D36-4749-817D-12E54C56312F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {B7812167-50FB-4934-996F-DF6FE4CBBFDF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {39DB56C7-05F8-492C-A8D4-F19E40FECB59} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {14BA7F98-02CC-4648-9236-676BFF9458AF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {0859A973-E4FE-4688-8D16-0253163FDE24} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F3412853-2B6A-4334-8CF2-B796CDAE0850} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {D03F2C82-9553-4AFA-8F49-9234009122B6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {A53CCF42-A972-478F-9336-0F618B3EC06A} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {870723DD-945A-4136-B65B-4AF3BF85369C} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2B78CF0A-5403-45E2-99BD-493F1679BCDB} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0AB968E0-E993-45CE-8875-7453C96DF583} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {25923141-9859-4AFE-8168-0DF78322FC63} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {7E855020-7FA4-482D-B510-2E709354FE8B} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9782E0C8-2BD3-4F67-B420-21CF19CA2435} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9F4135E3-9814-452C-9B35-0EFBCD792B49} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {B19DD336-538E-4091-A559-EAA717FEC899} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0BF60202-43F7-48E9-8717-D31E56FA5BE0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {6D75CD88-1A03-4955-B8C7-ACFC3742154F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {25BCB876-B60A-499B-9046-E9801CFD7780} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {2BB0C1D4-9298-45AC-B244-67A99769A292} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {81064BCE-EEC1-43B0-9912-F05F2B54B11A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {31B41997-3890-45E3-93FE-C57B363E9C0D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {D550AB93-DF31-4B76-873F-F075018352F4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF} = {278D8859-20B1-428F-8448-064F46E1F021} + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79} = {278D8859-20B1-428F-8448-064F46E1F021} + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5} = {278D8859-20B1-428F-8448-064F46E1F021} + {03E7018C-44A2-4C46-9CE7-F2A135A2692B} = {278D8859-20B1-428F-8448-064F46E1F021} + {F3F6FE4D-9D9E-451A-B0BA-81456104B672} = {278D8859-20B1-428F-8448-064F46E1F021} + {C27794B5-1293-4EA7-BC0E-0F18E6325539} = {278D8859-20B1-428F-8448-064F46E1F021} + {02F41059-12A2-4A96-8D77-07EFE4B108FD} = {278D8859-20B1-428F-8448-064F46E1F021} + {B774E0B9-9514-4E88-975F-4EB6C3B8D519} = {278D8859-20B1-428F-8448-064F46E1F021} + {D91367C2-2189-4859-A7FE-D2CAB84FA15C} = {278D8859-20B1-428F-8448-064F46E1F021} + {33459B4E-1839-4856-BF6B-22480D11FE31} = {278D8859-20B1-428F-8448-064F46E1F021} + {48871156-181A-475A-BD8D-200086A09675} = {278D8859-20B1-428F-8448-064F46E1F021} + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1} = {278D8859-20B1-428F-8448-064F46E1F021} + {1C49E35A-2838-49D9-9D5F-4B8134960EF6} = {278D8859-20B1-428F-8448-064F46E1F021} + {F91142E2-A999-47F0-9E74-38C1E2930EBE} = {278D8859-20B1-428F-8448-064F46E1F021} + {1EDD4BCF-345C-4065-8CBD-7285224293C3} = {278D8859-20B1-428F-8448-064F46E1F021} + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {CF3755C4-937D-4ABF-B7B3-95140808717F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D34939FE-8873-4C53-8D6C-74DED78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D408A730-363A-4ABF-BCEF-5D63DCC66042} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {52FB7463-C128-42AF-A02F-78F48473EA9A} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {7381D91E-5C72-48F0-AAB4-95C9B10D7484} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D36EC43E-B31F-4CF4-8285-93A7A9D90189} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {274C0319-7E1E-4188-936B-8DF3331230B3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {600C3D4F-0670-4DB4-B30F-520A729053B5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {3FE7E9B6-49AC-4246-A789-28DB4644567B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {191A5289-BA65-4638-A215-C521F0187313} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {6D9E00D8-2893-45E4-9363-3F7F61D416BD} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {70B35F59-AFC2-4D8F-8833-5314D2047A81} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {F81C5819-85B4-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {CC62F7DB-D089-4677-8575-CAB7A7815C43} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A4B0D971-3CD6-41C9-8AB2-055D25A33373} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {15CDD310-6980-42A6-8082-3A6B7730D13F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {88DE5AD6-0074-4A5A-BE22-C840153E35D5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {A546E75A-5242-46E6-9A9E-6C91554EAB84} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {DF25E545-00FF-4E64-844C-7DF98991F901} = {278D8859-20B1-428F-8448-064F46E1F021} + {703BE7BA-5B99-4F70-806D-3A259F6A991E} = {278D8859-20B1-428F-8448-064F46E1F021} + {FAFEE2F9-24B0-4AF1-B512-433E9590033F} = {278D8859-20B1-428F-8448-064F46E1F021} + {8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3384C257-3CFE-4A8F-838C-19DAC5C955DA} = {278D8859-20B1-428F-8448-064F46E1F021} + {2B140378-125F-4DE9-AC37-2CC1B73D7254} = {278D8859-20B1-428F-8448-064F46E1F021} + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2AA91EED-2D32-4B09-84A3-53D41EED1005} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {921391C6-7626-4212-9928-BC82BC785461} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {49C67F03-1A56-4F96-B278-39B66EC93678} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {D496308F-3C3C-40B3-A3ED-EA327D244B3E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} + {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} + {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} + {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A} = {278D8859-20B1-428F-8448-064F46E1F021} + {7467E9AE-844F-444D-8A3F-17397544BA21} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {497FDF54-9762-4048-A833-61CC3980A0FB} = {278D8859-20B1-428F-8448-064F46E1F021} + {29B00F47-BE91-4A1F-B87D-B1302F038316} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {124935CC-73BB-489E-92E8-4F922A85DB5D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F} = {278D8859-20B1-428F-8448-064F46E1F021} + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2} = {278D8859-20B1-428F-8448-064F46E1F021} + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91} = {278D8859-20B1-428F-8448-064F46E1F021} + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {9DE2FC01-A839-4F89-8319-9071D4C54821} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {2F578155-D51F-4C03-AB7F-5C5122CA46CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {84DE22BB-C25F-425C-A7FE-0120CF107B83} = {278D8859-20B1-428F-8448-064F46E1F021} + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {B7FDD40F-DDA4-468E-9C40-EEB175964A26} = {278D8859-20B1-428F-8448-064F46E1F021} + {028F0967-B253-45DA-B1C4-FACCE45D0D8D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {666346D7-C84B-498D-AE17-53B20C62DB1A} = {278D8859-20B1-428F-8448-064F46E1F021} + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6C897101-BE52-4387-8AA2-062123A76BA1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {30011884-25EE-42C9-BB15-888CAFB1AA6E} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B} = {278D8859-20B1-428F-8448-064F46E1F021} + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F} = {278D8859-20B1-428F-8448-064F46E1F021} + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0653AFAF-5578-4C02-AF29-0C873E7634AE} = {278D8859-20B1-428F-8448-064F46E1F021} + {071E64F3-1396-4A97-97CA-98CAC059B168} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC} = {278D8859-20B1-428F-8448-064F46E1F021} + {1F4722E7-F78E-413F-A106-D3490211EA57} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} + {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} + EndGlobalSection +EndGlobal diff --git a/src/raylib.h b/src/raylib.h index f9c504680..06138ceca 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1621,6 +1621,8 @@ RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose (CPU) RLAPI void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame); // Update model animation mesh bone matrices (GPU skinning) +RLAPI void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value); // Update model animation mesh bone matrices with interpolation between two poses(GPU skinning) +RLAPI void UpdateModelVertsToCurrentBones(Model model); // Update model vertices according to mesh bone matrices (CPU) RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data RLAPI void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match diff --git a/src/rmodels.c b/src/rmodels.c index 0ee103212..b90b6a53f 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -2346,12 +2346,70 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame) } } -// at least 2x speed up vs the old method -// Update model animated vertex data (positions and normals) for a given frame -// NOTE: Updated data is uploaded to GPU -void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) +// Update model animated bones transform matrices by interpolating between two different given frames of different ModelAnimation(could be same too) +// NOTE: Updated data is not uploaded to GPU but kept at model.meshes[i].boneMatrices[boneId], +// to be uploaded to shader at drawing, in case GPU skinning is enabled +void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value) { - UpdateModelAnimationBones(model,anim,frame); + if ((animA.frameCount > 0) && (animA.bones != NULL) && (animA.framePoses != NULL) && + (animB.frameCount > 0) && (animB.bones != NULL) && (animB.framePoses != NULL) && + (value >= 0.0f) && (value <= 1.0f)) + { + frameA = frameA % animA.frameCount; + frameB = frameB % animB.frameCount; + + for (int i = 0; i < model.meshCount; i++) + { + if (model.meshes[i].boneMatrices) + { + assert(model.meshes[i].boneCount == animA.boneCount); + assert(model.meshes[i].boneCount == animB.boneCount); + + for (int boneId = 0; boneId < model.meshes[i].boneCount; boneId++) + { + Vector3 inTranslation = model.bindPose[boneId].translation; + Quaternion inRotation = model.bindPose[boneId].rotation; + Vector3 inScale = model.bindPose[boneId].scale; + + Vector3 outATranslation = animA.framePoses[frameA][boneId].translation; + Quaternion outARotation = animA.framePoses[frameA][boneId].rotation; + Vector3 outAScale = animA.framePoses[frameA][boneId].scale; + + Vector3 outBTranslation = animB.framePoses[frameB][boneId].translation; + Quaternion outBRotation = animB.framePoses[frameB][boneId].rotation; + Vector3 outBScale = animB.framePoses[frameB][boneId].scale; + + Vector3 outTranslation = Vector3Lerp(outATranslation, outBTranslation, value); + Quaternion outRotation = QuaternionSlerp(outARotation, outBRotation, value); + Vector3 outScale = Vector3Lerp(outAScale, outBScale, value); + + Vector3 invTranslation = Vector3RotateByQuaternion(Vector3Negate(inTranslation), QuaternionInvert(inRotation)); + Quaternion invRotation = QuaternionInvert(inRotation); + Vector3 invScale = Vector3Divide((Vector3){ 1.0f, 1.0f, 1.0f }, inScale); + + Vector3 boneTranslation = Vector3Add( + Vector3RotateByQuaternion(Vector3Multiply(outScale, invTranslation), + outRotation), outTranslation); + Quaternion boneRotation = QuaternionMultiply(outRotation, invRotation); + Vector3 boneScale = Vector3Multiply(outScale, invScale); + + Matrix boneMatrix = MatrixMultiply(MatrixMultiply( + QuaternionToMatrix(boneRotation), + MatrixTranslate(boneTranslation.x, boneTranslation.y, boneTranslation.z)), + MatrixScale(boneScale.x, boneScale.y, boneScale.z)); + + model.meshes[i].boneMatrices[boneId] = boneMatrix; + } + } + } + } +} + +// Update model vertex data (positions and normals) from mesh bone data +// NOTE: Updated data is uploaded to GPU +void UpdateModelVertsToCurrentBones(Model model) +{ + //UpdateModelAnimationBones(model, anim, frame); // TODO: Review for (int m = 0; m < model.meshCount; m++) { @@ -2416,6 +2474,15 @@ void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) } } +// at least 2x speed up vs the old method +// Update model animated vertex data (positions and normals) for a given frame +// NOTE: Updated data is uploaded to GPU +void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) +{ + UpdateModelAnimationBones(model,anim,frame); + UpdateModelVertsToCurrentBones(model); +} + // Unload animation array data void UnloadModelAnimations(ModelAnimation *animations, int animCount) { diff --git a/tools/rlparser/output/raylib_api.json b/tools/rlparser/output/raylib_api.json index 96875fe87..f102abb1d 100644 --- a/tools/rlparser/output/raylib_api.json +++ b/tools/rlparser/output/raylib_api.json @@ -11436,6 +11436,48 @@ } ] }, + { + "name": "UpdateModelAnimationBonesLerp", + "description": "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)", + "returnType": "void", + "params": [ + { + "type": "Model", + "name": "model" + }, + { + "type": "ModelAnimation", + "name": "animA" + }, + { + "type": "int", + "name": "frameA" + }, + { + "type": "ModelAnimation", + "name": "animB" + }, + { + "type": "int", + "name": "frameB" + }, + { + "type": "float", + "name": "value" + } + ] + }, + { + "name": "UpdateModelVertsToCurrentBones", + "description": "Update model vertices according to mesh bone matrices (CPU)", + "returnType": "void", + "params": [ + { + "type": "Model", + "name": "model" + } + ] + }, { "name": "UnloadModelAnimation", "description": "Unload animation data", diff --git a/tools/rlparser/output/raylib_api.lua b/tools/rlparser/output/raylib_api.lua index a1f79cbe6..3707896bb 100644 --- a/tools/rlparser/output/raylib_api.lua +++ b/tools/rlparser/output/raylib_api.lua @@ -7812,6 +7812,27 @@ return { {type = "int", name = "frame"} } }, + { + name = "UpdateModelAnimationBonesLerp", + description = "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)", + returnType = "void", + params = { + {type = "Model", name = "model"}, + {type = "ModelAnimation", name = "animA"}, + {type = "int", name = "frameA"}, + {type = "ModelAnimation", name = "animB"}, + {type = "int", name = "frameB"}, + {type = "float", name = "value"} + } + }, + { + name = "UpdateModelVertsToCurrentBones", + description = "Update model vertices according to mesh bone matrices (CPU)", + returnType = "void", + params = { + {type = "Model", name = "model"} + } + }, { name = "UnloadModelAnimation", description = "Unload animation data", diff --git a/tools/rlparser/output/raylib_api.txt b/tools/rlparser/output/raylib_api.txt index e7ff4c98b..9c25843f5 100644 --- a/tools/rlparser/output/raylib_api.txt +++ b/tools/rlparser/output/raylib_api.txt @@ -992,7 +992,7 @@ Callback 006: AudioCallback() (2 input parameters) Param[1]: bufferData (type: void *) Param[2]: frames (type: unsigned int) -Functions found: 599 +Functions found: 601 Function 001: InitWindow() (3 input parameters) Name: InitWindow @@ -4354,24 +4354,39 @@ Function 522: UpdateModelAnimationBones() (3 input parameters) Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) Param[3]: frame (type: int) -Function 523: UnloadModelAnimation() (1 input parameters) +Function 523: UpdateModelAnimationBonesLerp() (6 input parameters) + Name: UpdateModelAnimationBonesLerp + Return type: void + Description: Update model animation mesh bone matrices with interpolation between two poses(GPU skinning) + Param[1]: model (type: Model) + Param[2]: animA (type: ModelAnimation) + Param[3]: frameA (type: int) + Param[4]: animB (type: ModelAnimation) + Param[5]: frameB (type: int) + Param[6]: value (type: float) +Function 524: UpdateModelVertsToCurrentBones() (1 input parameters) + Name: UpdateModelVertsToCurrentBones + Return type: void + Description: Update model vertices according to mesh bone matrices (CPU) + Param[1]: model (type: Model) +Function 525: UnloadModelAnimation() (1 input parameters) Name: UnloadModelAnimation Return type: void Description: Unload animation data Param[1]: anim (type: ModelAnimation) -Function 524: UnloadModelAnimations() (2 input parameters) +Function 526: UnloadModelAnimations() (2 input parameters) Name: UnloadModelAnimations Return type: void Description: Unload animation array data Param[1]: animations (type: ModelAnimation *) Param[2]: animCount (type: int) -Function 525: IsModelAnimationValid() (2 input parameters) +Function 527: IsModelAnimationValid() (2 input parameters) Name: IsModelAnimationValid Return type: bool Description: Check model animation skeleton match Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) -Function 526: CheckCollisionSpheres() (4 input parameters) +Function 528: CheckCollisionSpheres() (4 input parameters) Name: CheckCollisionSpheres Return type: bool Description: Check collision between two spheres @@ -4379,40 +4394,40 @@ Function 526: CheckCollisionSpheres() (4 input parameters) Param[2]: radius1 (type: float) Param[3]: center2 (type: Vector3) Param[4]: radius2 (type: float) -Function 527: CheckCollisionBoxes() (2 input parameters) +Function 529: CheckCollisionBoxes() (2 input parameters) Name: CheckCollisionBoxes Return type: bool Description: Check collision between two bounding boxes Param[1]: box1 (type: BoundingBox) Param[2]: box2 (type: BoundingBox) -Function 528: CheckCollisionBoxSphere() (3 input parameters) +Function 530: CheckCollisionBoxSphere() (3 input parameters) Name: CheckCollisionBoxSphere Return type: bool Description: Check collision between box and sphere Param[1]: box (type: BoundingBox) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 529: GetRayCollisionSphere() (3 input parameters) +Function 531: GetRayCollisionSphere() (3 input parameters) Name: GetRayCollisionSphere Return type: RayCollision Description: Get collision info between ray and sphere Param[1]: ray (type: Ray) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 530: GetRayCollisionBox() (2 input parameters) +Function 532: GetRayCollisionBox() (2 input parameters) Name: GetRayCollisionBox Return type: RayCollision Description: Get collision info between ray and box Param[1]: ray (type: Ray) Param[2]: box (type: BoundingBox) -Function 531: GetRayCollisionMesh() (3 input parameters) +Function 533: GetRayCollisionMesh() (3 input parameters) Name: GetRayCollisionMesh Return type: RayCollision Description: Get collision info between ray and mesh Param[1]: ray (type: Ray) Param[2]: mesh (type: Mesh) Param[3]: transform (type: Matrix) -Function 532: GetRayCollisionTriangle() (4 input parameters) +Function 534: GetRayCollisionTriangle() (4 input parameters) Name: GetRayCollisionTriangle Return type: RayCollision Description: Get collision info between ray and triangle @@ -4420,7 +4435,7 @@ Function 532: GetRayCollisionTriangle() (4 input parameters) Param[2]: p1 (type: Vector3) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) -Function 533: GetRayCollisionQuad() (5 input parameters) +Function 535: GetRayCollisionQuad() (5 input parameters) Name: GetRayCollisionQuad Return type: RayCollision Description: Get collision info between ray and quad @@ -4429,158 +4444,158 @@ Function 533: GetRayCollisionQuad() (5 input parameters) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) Param[5]: p4 (type: Vector3) -Function 534: InitAudioDevice() (0 input parameters) +Function 536: InitAudioDevice() (0 input parameters) Name: InitAudioDevice Return type: void Description: Initialize audio device and context No input parameters -Function 535: CloseAudioDevice() (0 input parameters) +Function 537: CloseAudioDevice() (0 input parameters) Name: CloseAudioDevice Return type: void Description: Close the audio device and context No input parameters -Function 536: IsAudioDeviceReady() (0 input parameters) +Function 538: IsAudioDeviceReady() (0 input parameters) Name: IsAudioDeviceReady Return type: bool Description: Check if audio device has been initialized successfully No input parameters -Function 537: SetMasterVolume() (1 input parameters) +Function 539: SetMasterVolume() (1 input parameters) Name: SetMasterVolume Return type: void Description: Set master volume (listener) Param[1]: volume (type: float) -Function 538: GetMasterVolume() (0 input parameters) +Function 540: GetMasterVolume() (0 input parameters) Name: GetMasterVolume Return type: float Description: Get master volume (listener) No input parameters -Function 539: LoadWave() (1 input parameters) +Function 541: LoadWave() (1 input parameters) Name: LoadWave Return type: Wave Description: Load wave data from file Param[1]: fileName (type: const char *) -Function 540: LoadWaveFromMemory() (3 input parameters) +Function 542: LoadWaveFromMemory() (3 input parameters) Name: LoadWaveFromMemory Return type: Wave Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav' Param[1]: fileType (type: const char *) Param[2]: fileData (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 541: IsWaveValid() (1 input parameters) +Function 543: IsWaveValid() (1 input parameters) Name: IsWaveValid Return type: bool Description: Checks if wave data is valid (data loaded and parameters) Param[1]: wave (type: Wave) -Function 542: LoadSound() (1 input parameters) +Function 544: LoadSound() (1 input parameters) Name: LoadSound Return type: Sound Description: Load sound from file Param[1]: fileName (type: const char *) -Function 543: LoadSoundFromWave() (1 input parameters) +Function 545: LoadSoundFromWave() (1 input parameters) Name: LoadSoundFromWave Return type: Sound Description: Load sound from wave data Param[1]: wave (type: Wave) -Function 544: LoadSoundAlias() (1 input parameters) +Function 546: LoadSoundAlias() (1 input parameters) Name: LoadSoundAlias Return type: Sound Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data Param[1]: source (type: Sound) -Function 545: IsSoundValid() (1 input parameters) +Function 547: IsSoundValid() (1 input parameters) Name: IsSoundValid Return type: bool Description: Checks if a sound is valid (data loaded and buffers initialized) Param[1]: sound (type: Sound) -Function 546: UpdateSound() (3 input parameters) +Function 548: UpdateSound() (3 input parameters) Name: UpdateSound Return type: void Description: Update sound buffer with new data (default data format: 32 bit float, stereo) Param[1]: sound (type: Sound) Param[2]: data (type: const void *) Param[3]: sampleCount (type: int) -Function 547: UnloadWave() (1 input parameters) +Function 549: UnloadWave() (1 input parameters) Name: UnloadWave Return type: void Description: Unload wave data Param[1]: wave (type: Wave) -Function 548: UnloadSound() (1 input parameters) +Function 550: UnloadSound() (1 input parameters) Name: UnloadSound Return type: void Description: Unload sound Param[1]: sound (type: Sound) -Function 549: UnloadSoundAlias() (1 input parameters) +Function 551: UnloadSoundAlias() (1 input parameters) Name: UnloadSoundAlias Return type: void Description: Unload a sound alias (does not deallocate sample data) Param[1]: alias (type: Sound) -Function 550: ExportWave() (2 input parameters) +Function 552: ExportWave() (2 input parameters) Name: ExportWave Return type: bool Description: Export wave data to file, returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 551: ExportWaveAsCode() (2 input parameters) +Function 553: ExportWaveAsCode() (2 input parameters) Name: ExportWaveAsCode Return type: bool Description: Export wave sample data to code (.h), returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 552: PlaySound() (1 input parameters) +Function 554: PlaySound() (1 input parameters) Name: PlaySound Return type: void Description: Play a sound Param[1]: sound (type: Sound) -Function 553: StopSound() (1 input parameters) +Function 555: StopSound() (1 input parameters) Name: StopSound Return type: void Description: Stop playing a sound Param[1]: sound (type: Sound) -Function 554: PauseSound() (1 input parameters) +Function 556: PauseSound() (1 input parameters) Name: PauseSound Return type: void Description: Pause a sound Param[1]: sound (type: Sound) -Function 555: ResumeSound() (1 input parameters) +Function 557: ResumeSound() (1 input parameters) Name: ResumeSound Return type: void Description: Resume a paused sound Param[1]: sound (type: Sound) -Function 556: IsSoundPlaying() (1 input parameters) +Function 558: IsSoundPlaying() (1 input parameters) Name: IsSoundPlaying Return type: bool Description: Check if a sound is currently playing Param[1]: sound (type: Sound) -Function 557: SetSoundVolume() (2 input parameters) +Function 559: SetSoundVolume() (2 input parameters) Name: SetSoundVolume Return type: void Description: Set volume for a sound (1.0 is max level) Param[1]: sound (type: Sound) Param[2]: volume (type: float) -Function 558: SetSoundPitch() (2 input parameters) +Function 560: SetSoundPitch() (2 input parameters) Name: SetSoundPitch Return type: void Description: Set pitch for a sound (1.0 is base level) Param[1]: sound (type: Sound) Param[2]: pitch (type: float) -Function 559: SetSoundPan() (2 input parameters) +Function 561: SetSoundPan() (2 input parameters) Name: SetSoundPan Return type: void Description: Set pan for a sound (-1.0 left, 0.0 center, 1.0 right) Param[1]: sound (type: Sound) Param[2]: pan (type: float) -Function 560: WaveCopy() (1 input parameters) +Function 562: WaveCopy() (1 input parameters) Name: WaveCopy Return type: Wave Description: Copy a wave to a new wave Param[1]: wave (type: Wave) -Function 561: WaveCrop() (3 input parameters) +Function 563: WaveCrop() (3 input parameters) Name: WaveCrop Return type: void Description: Crop a wave to defined frames range Param[1]: wave (type: Wave *) Param[2]: initFrame (type: int) Param[3]: finalFrame (type: int) -Function 562: WaveFormat() (4 input parameters) +Function 564: WaveFormat() (4 input parameters) Name: WaveFormat Return type: void Description: Convert wave data to desired format @@ -4588,203 +4603,203 @@ Function 562: WaveFormat() (4 input parameters) Param[2]: sampleRate (type: int) Param[3]: sampleSize (type: int) Param[4]: channels (type: int) -Function 563: LoadWaveSamples() (1 input parameters) +Function 565: LoadWaveSamples() (1 input parameters) Name: LoadWaveSamples Return type: float * Description: Load samples data from wave as a 32bit float data array Param[1]: wave (type: Wave) -Function 564: UnloadWaveSamples() (1 input parameters) +Function 566: UnloadWaveSamples() (1 input parameters) Name: UnloadWaveSamples Return type: void Description: Unload samples data loaded with LoadWaveSamples() Param[1]: samples (type: float *) -Function 565: LoadMusicStream() (1 input parameters) +Function 567: LoadMusicStream() (1 input parameters) Name: LoadMusicStream Return type: Music Description: Load music stream from file Param[1]: fileName (type: const char *) -Function 566: LoadMusicStreamFromMemory() (3 input parameters) +Function 568: LoadMusicStreamFromMemory() (3 input parameters) Name: LoadMusicStreamFromMemory Return type: Music Description: Load music stream from data Param[1]: fileType (type: const char *) Param[2]: data (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 567: IsMusicValid() (1 input parameters) +Function 569: IsMusicValid() (1 input parameters) Name: IsMusicValid Return type: bool Description: Checks if a music stream is valid (context and buffers initialized) Param[1]: music (type: Music) -Function 568: UnloadMusicStream() (1 input parameters) +Function 570: UnloadMusicStream() (1 input parameters) Name: UnloadMusicStream Return type: void Description: Unload music stream Param[1]: music (type: Music) -Function 569: PlayMusicStream() (1 input parameters) +Function 571: PlayMusicStream() (1 input parameters) Name: PlayMusicStream Return type: void Description: Start music playing Param[1]: music (type: Music) -Function 570: IsMusicStreamPlaying() (1 input parameters) +Function 572: IsMusicStreamPlaying() (1 input parameters) Name: IsMusicStreamPlaying Return type: bool Description: Check if music is playing Param[1]: music (type: Music) -Function 571: UpdateMusicStream() (1 input parameters) +Function 573: UpdateMusicStream() (1 input parameters) Name: UpdateMusicStream Return type: void Description: Updates buffers for music streaming Param[1]: music (type: Music) -Function 572: StopMusicStream() (1 input parameters) +Function 574: StopMusicStream() (1 input parameters) Name: StopMusicStream Return type: void Description: Stop music playing Param[1]: music (type: Music) -Function 573: PauseMusicStream() (1 input parameters) +Function 575: PauseMusicStream() (1 input parameters) Name: PauseMusicStream Return type: void Description: Pause music playing Param[1]: music (type: Music) -Function 574: ResumeMusicStream() (1 input parameters) +Function 576: ResumeMusicStream() (1 input parameters) Name: ResumeMusicStream Return type: void Description: Resume playing paused music Param[1]: music (type: Music) -Function 575: SeekMusicStream() (2 input parameters) +Function 577: SeekMusicStream() (2 input parameters) Name: SeekMusicStream Return type: void Description: Seek music to a position (in seconds) Param[1]: music (type: Music) Param[2]: position (type: float) -Function 576: SetMusicVolume() (2 input parameters) +Function 578: SetMusicVolume() (2 input parameters) Name: SetMusicVolume Return type: void Description: Set volume for music (1.0 is max level) Param[1]: music (type: Music) Param[2]: volume (type: float) -Function 577: SetMusicPitch() (2 input parameters) +Function 579: SetMusicPitch() (2 input parameters) Name: SetMusicPitch Return type: void Description: Set pitch for a music (1.0 is base level) Param[1]: music (type: Music) Param[2]: pitch (type: float) -Function 578: SetMusicPan() (2 input parameters) +Function 580: SetMusicPan() (2 input parameters) Name: SetMusicPan Return type: void Description: Set pan for a music (-1.0 left, 0.0 center, 1.0 right) Param[1]: music (type: Music) Param[2]: pan (type: float) -Function 579: GetMusicTimeLength() (1 input parameters) +Function 581: GetMusicTimeLength() (1 input parameters) Name: GetMusicTimeLength Return type: float Description: Get music time length (in seconds) Param[1]: music (type: Music) -Function 580: GetMusicTimePlayed() (1 input parameters) +Function 582: GetMusicTimePlayed() (1 input parameters) Name: GetMusicTimePlayed Return type: float Description: Get current music time played (in seconds) Param[1]: music (type: Music) -Function 581: LoadAudioStream() (3 input parameters) +Function 583: LoadAudioStream() (3 input parameters) Name: LoadAudioStream Return type: AudioStream Description: Load audio stream (to stream raw audio pcm data) Param[1]: sampleRate (type: unsigned int) Param[2]: sampleSize (type: unsigned int) Param[3]: channels (type: unsigned int) -Function 582: IsAudioStreamValid() (1 input parameters) +Function 584: IsAudioStreamValid() (1 input parameters) Name: IsAudioStreamValid Return type: bool Description: Checks if an audio stream is valid (buffers initialized) Param[1]: stream (type: AudioStream) -Function 583: UnloadAudioStream() (1 input parameters) +Function 585: UnloadAudioStream() (1 input parameters) Name: UnloadAudioStream Return type: void Description: Unload audio stream and free memory Param[1]: stream (type: AudioStream) -Function 584: UpdateAudioStream() (3 input parameters) +Function 586: UpdateAudioStream() (3 input parameters) Name: UpdateAudioStream Return type: void Description: Update audio stream buffers with data Param[1]: stream (type: AudioStream) Param[2]: data (type: const void *) Param[3]: frameCount (type: int) -Function 585: IsAudioStreamProcessed() (1 input parameters) +Function 587: IsAudioStreamProcessed() (1 input parameters) Name: IsAudioStreamProcessed Return type: bool Description: Check if any audio stream buffers requires refill Param[1]: stream (type: AudioStream) -Function 586: PlayAudioStream() (1 input parameters) +Function 588: PlayAudioStream() (1 input parameters) Name: PlayAudioStream Return type: void Description: Play audio stream Param[1]: stream (type: AudioStream) -Function 587: PauseAudioStream() (1 input parameters) +Function 589: PauseAudioStream() (1 input parameters) Name: PauseAudioStream Return type: void Description: Pause audio stream Param[1]: stream (type: AudioStream) -Function 588: ResumeAudioStream() (1 input parameters) +Function 590: ResumeAudioStream() (1 input parameters) Name: ResumeAudioStream Return type: void Description: Resume audio stream Param[1]: stream (type: AudioStream) -Function 589: IsAudioStreamPlaying() (1 input parameters) +Function 591: IsAudioStreamPlaying() (1 input parameters) Name: IsAudioStreamPlaying Return type: bool Description: Check if audio stream is playing Param[1]: stream (type: AudioStream) -Function 590: StopAudioStream() (1 input parameters) +Function 592: StopAudioStream() (1 input parameters) Name: StopAudioStream Return type: void Description: Stop audio stream Param[1]: stream (type: AudioStream) -Function 591: SetAudioStreamVolume() (2 input parameters) +Function 593: SetAudioStreamVolume() (2 input parameters) Name: SetAudioStreamVolume Return type: void Description: Set volume for audio stream (1.0 is max level) Param[1]: stream (type: AudioStream) Param[2]: volume (type: float) -Function 592: SetAudioStreamPitch() (2 input parameters) +Function 594: SetAudioStreamPitch() (2 input parameters) Name: SetAudioStreamPitch Return type: void Description: Set pitch for audio stream (1.0 is base level) Param[1]: stream (type: AudioStream) Param[2]: pitch (type: float) -Function 593: SetAudioStreamPan() (2 input parameters) +Function 595: SetAudioStreamPan() (2 input parameters) Name: SetAudioStreamPan Return type: void Description: Set pan for audio stream (0.5 is centered) Param[1]: stream (type: AudioStream) Param[2]: pan (type: float) -Function 594: SetAudioStreamBufferSizeDefault() (1 input parameters) +Function 596: SetAudioStreamBufferSizeDefault() (1 input parameters) Name: SetAudioStreamBufferSizeDefault Return type: void Description: Default size for new audio streams Param[1]: size (type: int) -Function 595: SetAudioStreamCallback() (2 input parameters) +Function 597: SetAudioStreamCallback() (2 input parameters) Name: SetAudioStreamCallback Return type: void Description: Audio thread callback to request new data Param[1]: stream (type: AudioStream) Param[2]: callback (type: AudioCallback) -Function 596: AttachAudioStreamProcessor() (2 input parameters) +Function 598: AttachAudioStreamProcessor() (2 input parameters) Name: AttachAudioStreamProcessor Return type: void Description: Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo) Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 597: DetachAudioStreamProcessor() (2 input parameters) +Function 599: DetachAudioStreamProcessor() (2 input parameters) Name: DetachAudioStreamProcessor Return type: void Description: Detach audio stream processor from stream Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 598: AttachAudioMixedProcessor() (1 input parameters) +Function 600: AttachAudioMixedProcessor() (1 input parameters) Name: AttachAudioMixedProcessor Return type: void Description: Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo) Param[1]: processor (type: AudioCallback) -Function 599: DetachAudioMixedProcessor() (1 input parameters) +Function 601: DetachAudioMixedProcessor() (1 input parameters) Name: DetachAudioMixedProcessor Return type: void Description: Detach audio stream processor from the entire audio pipeline diff --git a/tools/rlparser/output/raylib_api.xml b/tools/rlparser/output/raylib_api.xml index 8734f405d..d3314a5d1 100644 --- a/tools/rlparser/output/raylib_api.xml +++ b/tools/rlparser/output/raylib_api.xml @@ -678,7 +678,7 @@ - + @@ -2918,6 +2918,17 @@ + + + + + + + + + + + From 71607db6672ae843e2f9c541f4fd0f260d80ea0a Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 16:46:30 +0100 Subject: [PATCH 11/22] Moved easings example to shapes --- examples/others/reasings.h | 263 ------------------ .../shapes_easings_testbed.c} | 39 ++- .../shapes_easings_testbed.png} | Bin projects/VS2022/raylib.sln | 4 +- 4 files changed, 27 insertions(+), 279 deletions(-) delete mode 100644 examples/others/reasings.h rename examples/{others/easings_testbed.c => shapes/shapes_easings_testbed.c} (87%) rename examples/{others/easings_testbed.png => shapes/shapes_easings_testbed.png} (100%) diff --git a/examples/others/reasings.h b/examples/others/reasings.h deleted file mode 100644 index c3ee1169f..000000000 --- a/examples/others/reasings.h +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************************* -* -* reasings - raylib easings library, based on Robert Penner library -* -* Useful easing functions for values animation -* -* This header uses: -* #define REASINGS_STATIC_INLINE // Inlines all functions code, so it runs faster. -* // This requires lots of memory on system. -* How to use: -* The four inputs t,b,c,d are defined as follows: -* t = current time (in any unit measure, but same unit as duration) -* b = starting value to interpolate -* c = the total change in value of b that needs to occur -* d = total time it should take to complete (duration) -* -* Example: -* -* int currentTime = 0; -* int duration = 100; -* float startPositionX = 0.0f; -* float finalPositionX = 30.0f; -* float currentPositionX = startPositionX; -* -* while (currentPositionX < finalPositionX) -* { -* currentPositionX = EaseSineIn(currentTime, startPositionX, finalPositionX - startPositionX, duration); -* currentTime++; -* } -* -* A port of Robert Penner's easing equations to C (http://robertpenner.com/easing/) -* -* Robert Penner License -* --------------------------------------------------------------------------------- -* Open source under the BSD License. -* -* Copyright (c) 2001 Robert Penner. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, -* are permitted provided that the following conditions are met: -* -* - Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright notice, -* this list of conditions and the following disclaimer in the documentation -* and/or other materials provided with the distribution. -* - Neither the name of the author nor the names of contributors may be used -* to endorse or promote products derived from this software without specific -* prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -* OF THE POSSIBILITY OF SUCH DAMAGE. -* --------------------------------------------------------------------------------- -* -* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ - -#ifndef REASINGS_H -#define REASINGS_H - -#define REASINGS_STATIC_INLINE // NOTE: By default, compile functions as static inline - -#if defined(REASINGS_STATIC_INLINE) - #define EASEDEF static inline -#else - #define EASEDEF extern -#endif - -#include // Required for: sinf(), cosf(), sqrtf(), powf() - -#ifndef PI - #define PI 3.14159265358979323846f //Required as PI is not always defined in math.h -#endif - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Linear Easing functions -EASEDEF float EaseLinearNone(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear -EASEDEF float EaseLinearIn(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear In -EASEDEF float EaseLinearOut(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear Out -EASEDEF float EaseLinearInOut(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear In Out - -// Sine Easing functions -EASEDEF float EaseSineIn(float t, float b, float c, float d) { return (-c*cosf(t/d*(PI/2.0f)) + c + b); } // Ease: Sine In -EASEDEF float EaseSineOut(float t, float b, float c, float d) { return (c*sinf(t/d*(PI/2.0f)) + b); } // Ease: Sine Out -EASEDEF float EaseSineInOut(float t, float b, float c, float d) { return (-c/2.0f*(cosf(PI*t/d) - 1.0f) + b); } // Ease: Sine In Out - -// Circular Easing functions -EASEDEF float EaseCircIn(float t, float b, float c, float d) { t /= d; return (-c*(sqrtf(1.0f - t*t) - 1.0f) + b); } // Ease: Circular In -EASEDEF float EaseCircOut(float t, float b, float c, float d) { t = t/d - 1.0f; return (c*sqrtf(1.0f - t*t) + b); } // Ease: Circular Out -EASEDEF float EaseCircInOut(float t, float b, float c, float d) // Ease: Circular In Out -{ - if ((t/=d/2.0f) < 1.0f) return (-c/2.0f*(sqrtf(1.0f - t*t) - 1.0f) + b); - t -= 2.0f; return (c/2.0f*(sqrtf(1.0f - t*t) + 1.0f) + b); -} - -// Cubic Easing functions -EASEDEF float EaseCubicIn(float t, float b, float c, float d) { t /= d; return (c*t*t*t + b); } // Ease: Cubic In -EASEDEF float EaseCubicOut(float t, float b, float c, float d) { t = t/d - 1.0f; return (c*(t*t*t + 1.0f) + b); } // Ease: Cubic Out -EASEDEF float EaseCubicInOut(float t, float b, float c, float d) // Ease: Cubic In Out -{ - if ((t/=d/2.0f) < 1.0f) return (c/2.0f*t*t*t + b); - t -= 2.0f; return (c/2.0f*(t*t*t + 2.0f) + b); -} - -// Quadratic Easing functions -EASEDEF float EaseQuadIn(float t, float b, float c, float d) { t /= d; return (c*t*t + b); } // Ease: Quadratic In -EASEDEF float EaseQuadOut(float t, float b, float c, float d) { t /= d; return (-c*t*(t - 2.0f) + b); } // Ease: Quadratic Out -EASEDEF float EaseQuadInOut(float t, float b, float c, float d) // Ease: Quadratic In Out -{ - if ((t/=d/2) < 1) return (((c/2)*(t*t)) + b); - return (-c/2.0f*(((t - 1.0f)*(t - 3.0f)) - 1.0f) + b); -} - -// Exponential Easing functions -EASEDEF float EaseExpoIn(float t, float b, float c, float d) { return (t == 0.0f) ? b : (c*powf(2.0f, 10.0f*(t/d - 1.0f)) + b); } // Ease: Exponential In -EASEDEF float EaseExpoOut(float t, float b, float c, float d) { return (t == d) ? (b + c) : (c*(-powf(2.0f, -10.0f*t/d) + 1.0f) + b); } // Ease: Exponential Out -EASEDEF float EaseExpoInOut(float t, float b, float c, float d) // Ease: Exponential In Out -{ - if (t == 0.0f) return b; - if (t == d) return (b + c); - if ((t/=d/2.0f) < 1.0f) return (c/2.0f*powf(2.0f, 10.0f*(t - 1.0f)) + b); - - return (c/2.0f*(-powf(2.0f, -10.0f*(t - 1.0f)) + 2.0f) + b); -} - -// Back Easing functions -EASEDEF float EaseBackIn(float t, float b, float c, float d) // Ease: Back In -{ - float s = 1.70158f; - float postFix = t/=d; - return (c*(postFix)*t*((s + 1.0f)*t - s) + b); -} - -EASEDEF float EaseBackOut(float t, float b, float c, float d) // Ease: Back Out -{ - float s = 1.70158f; - t = t/d - 1.0f; - return (c*(t*t*((s + 1.0f)*t + s) + 1.0f) + b); -} - -EASEDEF float EaseBackInOut(float t, float b, float c, float d) // Ease: Back In Out -{ - float s = 1.70158f; - if ((t/=d/2.0f) < 1.0f) - { - s *= 1.525f; - return (c/2.0f*(t*t*((s + 1.0f)*t - s)) + b); - } - - float postFix = t-=2.0f; - s *= 1.525f; - return (c/2.0f*((postFix)*t*((s + 1.0f)*t + s) + 2.0f) + b); -} - -// Bounce Easing functions -EASEDEF float EaseBounceOut(float t, float b, float c, float d) // Ease: Bounce Out -{ - if ((t/=d) < (1.0f/2.75f)) - { - return (c*(7.5625f*t*t) + b); - } - else if (t < (2.0f/2.75f)) - { - float postFix = t-=(1.5f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.75f) + b); - } - else if (t < (2.5/2.75)) - { - float postFix = t-=(2.25f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.9375f) + b); - } - else - { - float postFix = t-=(2.625f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.984375f) + b); - } -} - -EASEDEF float EaseBounceIn(float t, float b, float c, float d) { return (c - EaseBounceOut(d - t, 0.0f, c, d) + b); } // Ease: Bounce In -EASEDEF float EaseBounceInOut(float t, float b, float c, float d) // Ease: Bounce In Out -{ - if (t < d/2.0f) return (EaseBounceIn(t*2.0f, 0.0f, c, d)*0.5f + b); - else return (EaseBounceOut(t*2.0f - d, 0.0f, c, d)*0.5f + c*0.5f + b); -} - -// Elastic Easing functions -EASEDEF float EaseElasticIn(float t, float b, float c, float d) // Ease: Elastic In -{ - if (t == 0.0f) return b; - if ((t/=d) == 1.0f) return (b + c); - - float p = d*0.3f; - float a = c; - float s = p/4.0f; - float postFix = a*powf(2.0f, 10.0f*(t-=1.0f)); - - return (-(postFix*sinf((t*d-s)*(2.0f*PI)/p )) + b); -} - -EASEDEF float EaseElasticOut(float t, float b, float c, float d) // Ease: Elastic Out -{ - if (t == 0.0f) return b; - if ((t/=d) == 1.0f) return (b + c); - - float p = d*0.3f; - float a = c; - float s = p/4.0f; - - return (a*powf(2.0f,-10.0f*t)*sinf((t*d-s)*(2.0f*PI)/p) + c + b); -} - -EASEDEF float EaseElasticInOut(float t, float b, float c, float d) // Ease: Elastic In Out -{ - if (t == 0.0f) return b; - if ((t/=d/2.0f) == 2.0f) return (b + c); - - float p = d*(0.3f*1.5f); - float a = c; - float s = p/4.0f; - - if (t < 1.0f) - { - float postFix = a*powf(2.0f, 10.0f*(t-=1.0f)); - return -0.5f*(postFix*sinf((t*d-s)*(2.0f*PI)/p)) + b; - } - - float postFix = a*powf(2.0f, -10.0f*(t-=1.0f)); - - return (postFix*sinf((t*d-s)*(2.0f*PI)/p)*0.5f + c + b); -} - -#if defined(__cplusplus) -} -#endif - -#endif // REASINGS_H diff --git a/examples/others/easings_testbed.c b/examples/shapes/shapes_easings_testbed.c similarity index 87% rename from examples/others/easings_testbed.c rename to examples/shapes/shapes_easings_testbed.c index fa4a599ee..a3ff23a7c 100644 --- a/examples/others/easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -1,11 +1,11 @@ /******************************************************************************************* * -* raylib [others] example - easings testbed -* -* Example originally created with raylib 2.5, last time updated with raylib 2.5 +* raylib [shapes] example - easings testbed * * Example complexity rating: [★★★☆] 3/4 * +* Example originally created with raylib 2.5, last time updated with raylib 2.5 +* * Example contributed by Juan Miguel López (@flashback-fx) and reviewed by Ramon Santamaria (@raysan5) * * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, @@ -26,6 +26,9 @@ #define D_MIN 1.0f #define D_MAX 10000.0f +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- // Easing types enum EasingTypes { EASE_LINEAR_NONE = 0, @@ -60,13 +63,13 @@ enum EasingTypes { EASING_NONE = NUM_EASING_TYPES }; -static float NoEase(float t, float b, float c, float d); // NoEase function declaration, function used when "no easing" is selected for any axis - -// Easing functions reference data -static const struct { +typedef struct EasingFuncs { const char *name; float (*func)(float, float, float, float); -} Easings[] = { +} EasingFuncs; + +// Easing functions reference data +static const EasingFuncs easings[] = { [EASE_LINEAR_NONE] = { .name = "EaseLinearNone", .func = EaseLinearNone }, [EASE_LINEAR_IN] = { .name = "EaseLinearIn", .func = EaseLinearIn }, [EASE_LINEAR_OUT] = { .name = "EaseLinearOut", .func = EaseLinearOut }, @@ -98,6 +101,12 @@ static const struct { [EASING_NONE] = { .name = "None", .func = NoEase }, }; +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ +// Function used when "no easing" is selected for any axis +static float NoEase(float t, float b, float c, float d); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -108,7 +117,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [others] example - easings testbed"); + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - easings testbed"); Vector2 ballPosition = { 100.0f, 100.0f }; @@ -157,11 +166,11 @@ int main(void) } // Change d (duration) value - if (IsKeyPressed(KEY_W) && d < D_MAX - D_STEP) d += D_STEP; - else if (IsKeyPressed(KEY_Q) && d > D_MIN + D_STEP) d -= D_STEP; + if (IsKeyPressed(KEY_W) && (d < D_MAX - D_STEP)) d += D_STEP; + else if (IsKeyPressed(KEY_Q) && (d > D_MIN + D_STEP)) d -= D_STEP; - if (IsKeyDown(KEY_S) && d < D_MAX - D_STEP_FINE) d += D_STEP_FINE; - else if (IsKeyDown(KEY_A) && d > D_MIN + D_STEP_FINE) d -= D_STEP_FINE; + if (IsKeyDown(KEY_S) && (d < D_MAX - D_STEP_FINE)) d += D_STEP_FINE; + else if (IsKeyDown(KEY_A) && (d > D_MIN + D_STEP_FINE)) d -= D_STEP_FINE; // Play, pause and restart controls if (IsKeyPressed(KEY_SPACE) || IsKeyPressed(KEY_T) || @@ -220,7 +229,9 @@ int main(void) return 0; } - +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ // NoEase function, used when "no easing" is selected for any axis // It just ignores all parameters besides b static float NoEase(float t, float b, float c, float d) diff --git a/examples/others/easings_testbed.png b/examples/shapes/shapes_easings_testbed.png similarity index 100% rename from examples/others/easings_testbed.png rename to examples/shapes/shapes_easings_testbed.png diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 8483dc563..740d1bcbe 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -5619,8 +5619,8 @@ Global {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {278D8859-20B1-428F-8448-064F46E1F021} + {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {278D8859-20B1-428F-8448-064F46E1F021} {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} From 98c773491179984e3de53a929fd31b467589a738 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 16:46:48 +0100 Subject: [PATCH 12/22] REVIEWED: `models_basic_voxel` example --- examples/models/models_basic_voxel.c | 13 +++++++++---- examples/models/models_basic_voxel.png | Bin 349583 -> 29035 bytes 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/models/models_basic_voxel.c b/examples/models/models_basic_voxel.c index a70da1822..61313ecef 100644 --- a/examples/models/models_basic_voxel.c +++ b/examples/models/models_basic_voxel.c @@ -16,6 +16,7 @@ ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" #define WORLD_SIZE 8 // Size of our voxel world (8x8x8 cubes) @@ -32,7 +33,7 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [models] example - basic voxel"); - DisableCursor(); // Lock mouse to window center + DisableCursor(); // Lock mouse to window center // Define the camera to look into our 3d world (first person) Camera3D camera = { 0 }; @@ -59,7 +60,7 @@ int main(void) } } } - + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -74,7 +75,7 @@ int main(void) if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) { // Cast a ray from the screen center (where crosshair would be) - Vector2 screenCenter = { screenWidth/2.0f, screenHeight/2.0f }; + Vector2 screenCenter = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }; Ray ray = GetMouseRay(screenCenter, camera); // Check ray collision with all voxels @@ -132,8 +133,11 @@ int main(void) } } } - + EndMode3D(); + + // Draw reference point for raycasting to delete blocks + DrawCircle(GetRenderWidth()/2, GetScreenHeight()/2, 4, RED); DrawText("Left-click a voxel to remove it!", 10, 10, 20, DARKGRAY); DrawText("WASD to move, mouse to look around", 10, 35, 10, GRAY); @@ -145,6 +149,7 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- UnloadModel(cubeModel); + CloseWindow(); //-------------------------------------------------------------------------------------- diff --git a/examples/models/models_basic_voxel.png b/examples/models/models_basic_voxel.png index 8bbcaf8dae98aa01624392f07822e36f2f44a53d..0666ec8c8dd1b5c043ecfe6afffcb6fe5d4494ae 100644 GIT binary patch literal 29035 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 z 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�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
j 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 literal 349583 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

    |&-Ynr4G!52dKVLt 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 z z-!F@16rEoA|K4Q3E5Y7=TURBjC#`xKBU`892s+~o(`%}W#cW-?AvxfI}OpfiJ4)aPz2lcE=s{`k!JrNe3@v9?o zefrL#8*i^hz7n0eIfBc~PINz}s z?rRc_!Pub*TdICJx+3{?a#46wz~0-FTI65<)%;ia_}!&9@ryhuRbd{8@%IX zIcS2N|9RzOn|u3ef1ib2Kb11%4~hA&^|-a3_d$Ch?rN&6yW@DfgNWJX=l9yb{JhiQ zxA(V_!TO`WmCP%_Q_DP{5t}*J4{X0*S6v|YT026pr9PTF&|T?_l8e%Z4>lI_THm;8<%co!xD0S>s;c>0#qpP-LRQyF#+?ol)$K$lj#S`j@AkUD~nhY3a;guLI|2 zS)A@%@%ql3#-(iYXI1}^+aA+?U(bI{?7F%V(_QR)XL&e&J9qTt)$@AsKIvA{6X%Dh z*Y9uNB=z+J=ZWbY9@sY@HXaa|@ZSEow~~n7OTFL0yRKBfEtmOQs9>=E=<$zp(oTW% zqMQ=bKWU@*!@msXo!Ojzo{y=hmNk2RLr?g@n=X8AT^7e@Zg{wfL(a`6`e)74r_;M% z_3h@vv_&^!nHpaeABpPh={YPs@qF~% zJG-4i=f-NyEfJjFy+n@{eos|=d+1#7JymXBH-qk}deyPf+T7>NKA-lMqk3*SFJsQO zb>8)lwQY-@H+TJ?SCSTLzl6f~-(|eE|Ng$(-|7Fe8-8+Kdoin4LV~TWF);x~Rs7*O z!vMO0-hb!8V5uoKOLy0t+B|zk`{@IF#N^*?-dU3Vd5!+r7mtt6zJBC!ecSh1=Jg9D z9qxS({t>W0zc%K7{YC!MpRR8`6D1{g>1@!Mm^bHmFWm5OcBZ z{noquaC15P?i*F7<9MpK-dHEf@La`y!QO-eZ(}3&Ec<>#R$0cdny(^zBv9iWeT)xrrN|t`@IMyn4O- ze*OQyuYZ1doRpRV3leAmRXFk7`O0u? z#B8fRFDTU!Dryvkafq%HCajm+v42 zJ~1YG>i>34o#ncKIl4*#3<`84PB zx5_IIxP$Jl5u5J}@Sz6TK3;`d*4O6QrU}N&7fN?TloX3LTR!sn)Or5+yf_)@xv_me zLHAgNd_Md#JSTl;ni;R#>67gIWyXuMP9(3Mx7iAMk5%c7tKrQ2PeJ!sZI~T;a&b85 z9;>^x>Fevh?dAKwRq4kZjW}m(h1z`3F*3}Md#pMq)O>~AV^!63c)c6s7?~`Q@hJ zJ$dbjXXD|kUvG1)@$T|H2fu3??w`K;xrDvVy|=;g``%A`e|v@5`446hwKHaXUL*gk zc<1?b&rA#Fzp$xYo%1C9X}p6 zXKqJ3Xc0}t*XP0$)`QNG*=S(IgPMS1`Wi1MKFY0M^`U6)eY;EVYn%OTe%?uZ{eErv zZ=O5;tq&i5tCa7{pZ|EJ0Z&X<yB9ohqd3czund`QnVJJ#}Qdh$40czyeGF_@U zqH{8D+U1y)jEjt`3%zZ>u=TMO{XWw^f30I|#knO`-^6Mj$;j30IQNDnY%};KtGzSD zqBm}M8Unq^N@Y*&a{=*X#&Zwce-2tx^YIej<1KNZGiB@|*8SZ60DPuQV1ihu#jexl zHr*X}@WS-uG&{ zzFDkIt-Ri{&ygy&YyQ^N6g{}`|L3>2w;$Ih{r$K1!$d?;4K0^;h%jHT<$bkugS_>* z>HA)4&#!ss@M+`c^3H$u-z97E?x|MQ@kks#pIqT}`LV%=#>StObHfiA81UR-0|(J3 zvl)MDXMmR2{QUHkU;Fdyt!F0lJU`m@H zKiYmK^~dS$hu613?zL)X?dJ=Q`8vJo#%g)c5}U;C<)0^iu%Bc1=k)w1?e}Yc99sUq z;_AuwF|`}7d!@v@jycA_Br1+=g-yG`N6CBdhNld`}h6-_dERGbkGrK8Zwe7m6`;b z-thxG3i;1IUCRFzC-wf>x%c-T=k0f|dmr#kv-o>;#qN+dA1XD~*wbNUe#IP~ANyI; z7%KmtKlfqc8h?j<(YLQ>&)hgeKk}KD?(=6pwYM(Llu+o>ZeMF08{-UGXrsFeve0H8 z-{D{EVh@WOHzcY(w7A|KQI&4!`E|B_DClIFmD4{YzAI16pPJmxe%tTR--2JF_3s7w zHg@y(zg5=!p#1oxV#3DQKDi%x>vvwZnDFStJ)h~x&&vasY>?hn=^(h8ziju751ZaU z&-xI#WKLDdvcu=aFTSad^RBHGN#}gmDz$%%sBDjtaYAKFsCy-sr9 zm%|qE2dfH<|D$Fx9%k|61hxt0!IiU}rEWa=&i5$q-M2l)&v5{pzD>6Mt=39)3J>PE^jT(ED*UwJp(c-~R5o#OJf|&vmb}v9Du}?On;1 zcJx}vx31f!cU5CFqIZ7Nb9^rTd~)s6n~CmTE?0`bZkm2PuVVY-(EWGbu_8{CiN62# zmHOADik0)*rvItA>;A6p*?PUb4;SD1s#N!W_P_OCMc1tVt8k8?Xrm!UaWtXv|NHvC z-?aN&bQ|!NX_LCBcis`j?uUwA3J^%6C{K=0Wem1))`v#m%^X51Hw5|IsWB-*a z&e^zO&;R9rmfK6V@2U9s>Z*49!Czmac-f_I-8}2TBX~CdMVisHNbl1#esK8{Ghw8l69`Te;49Eea55jSM~hY6&_!$k2hBA+B+-p z-QQEI%l}nrE!*|>(RxwN=PLhqCP{T{k$NFys@7&9o~+;Re=$SHeOFr(F zLtc<0!87UAw%6_X>zivL#OA)SivIcLUE=-U3(Cc^H-OHRDdSbR{{wt3k;Tk<zkviRb*Bmtuw}r^uv<3HSZTxe7T&Cj9ui{cSaKj|xBkQk7tAys6#u zy6~K5zByqvC)Vd%RsSo1o+4vB=gWt~+tOFBPdfbbtlq;pEH^gjIHWHMI3yld<=eSZ z(@-x?C%#bdkl4*nQZ|QFude5lww?3l(G3on^wRHf*FK(FS7(^jrOeB2KgVv)!!Y(` zp|yo2l@Ck#pYIhf%$fG9Xp`<&foAuhxovar@2md)PV{&UlMuHua@z-#%brTiV0>~m z=G^RR^Wx&`^D4!rr`G(~qci_|tJ(RF`)2I_z3cOu_wzot#}&p2^Z(_v?fbW<4_xS+ z5-9r1d*Xe#`u#PjWl3_$+b$&(uH3(|^P&DWNyr+V&0;ftPq;Aie9f^q-<>6s^2F2C zHzW$p_>u)VJ;pv}v!dC@tMJof{>5!B{t7)kW^Y>J)rFdH}QnR&Xh z_ekc69KC7)i4b-jW zRrtSg+J4r|v?NoBEzxbt&w|fJ&vM-uc_gnc*sn72)XB8;bmdQ1{BNwSGF+XxW2LyA znd#vMPW3zIPM3I;{rq~+?a9F`jwAclXMOBmYbW#TUNGV!s*juXKR?`lU!&3@CIlqFPG#eZsD*w^V*37ge_URfh=`m#lD z->)}cUGBesGr8l{=9STZm&$GX_UEH=pKjy)15er^i*%}Lcb5FQa(_SgR20Q0m~G~m zzD7xhduN{Rd01_1{|Z}W{qL9gAMX@M?BHknlQ)y`Nv*;E zY~T8_cYl9>uVwo5`l+FECWq7e90PZA?}gFNbjv=L)YW@mTGJYvvsue-^TKDK>!-xP z*H4Mb&7PC>>GIj4CsGNk&aYekX?oQc6}OzPbFbcdopyTP?;8p4etby_EO?poRWPnR zb$NTf`q7(T_uYPYSA+GQ#0D8t<{ghdt@*oV$J95y8H?uF`mZq#Y(F5NKR;yu>2}aE zow(h5l2-4ZfB9+D)#==;i=8immg(%XI_&Y{(a{fwSG!ey%lTIOVn?6*ygP3mz3$HY zds$uKuR;_?E;1;vWJ_bHG@kys?fuz1JQ_B_Vf3iHeKmE8)R{Yu6Gj%+SydF_=f8LnIe>3reu-)dF zZ5?eWi*zb-j=s1qskf%(?#+GICvQJ~a`Pbp@NHA8^zYrgSEJbjx^2qtD)-@i^Pfg~ z7M}aGUes~E((;6fp>^U7Tg@lMGRFp-(UhAV;cPv9(_|^}^=h2nGCp=@mR~nt(KZ6D z(b-VtQ1fZk`e-%^U-@g_y!%zcysxo_wxw;2 z&yOD9QF#Bqvi|GUaQ(V}Kc9mR6uLU`XUEOnofD?!t-EvpbTUk_m|@M)Lk1~#HvTvh zU|J zbB^4BKJB)-BEf%8oY;4KLo4&*gG*(~_I{f%clF`8y-VfF>J67{Oi@Yy-xqtP!J$iE2 zKUb}|TP1sTxx)MRFMqHs*?Bzv-zV{U=1=dlCC|*16*Lw(eFkYQPMXOdYw%i}Sp`3j z2v`ZazmGZl;cX)Hc$l-bn?!^E23J>FLym{>+xTZW={dG2_im%?cS)yuN0q7#B!yh<3>cv0(h-bdxj+rKmK*Kj_ za?gAB&fZyhZeC@q&GY5|H@vf3f3*Fp&9d2v57tS}xX)OA_Q&Nl&r401PyDXl_K$6e zzr()D&&L=(&E9$@;7pa2f!4k`S-)7!${HM*yy=B%MTbiD>}=yDJl0K<*lY4*^**Vv+RIN<+9PEvN+ddW zu&~AKwuqk{^|$KP>X7gEUi=BG`1VTo>xTBVcKfAno|?ZtA$Ca*sMbY{KkzVbKL~30 zr* zzh~~f$#1<;e6s(%pBL{s}r` zuy);!SMA}kcH0UzS--FNQqwl|UBZJCVr7Qs3c8oq|Ni#&c6heEU0;qoC=Y;}pzsuO z+5prptDIy0E$`Vg%j##PALq>fcLy^3*M9iGpYJao+H@bka}rcoy!`vIzy6E4LVd*C zn$2O%cE%z}aY@HgK7bb9u=RgoOE;MHbVF<486(-C-m-s1v$Jn@TBTV$?7Ule^|A5w z#)~!S$K#$YF5lR~pJw_BzVOEWYI&RHF&oeIudag@-ta8{VKA4I$0}#v5;^PoEz|!@ z{P;v*#obi_i8oE|9sS1k>H42KPl-RD-mug~oO{EOzvBAgQ|#vU(rZ3F{d9Os^sB>* zK8J6QwX0|1uAA?&ChTX~kJ?*>=bx{hUb6AS&8u4`m+guwIK>&<^QY?PbVks!n;(m_ zd(o4};R8#-g{aRt>1y-h&vR@)@2WWGU;oYyHV$E<3#xkdpTGQJ;vb`iKd*x%&!kDU z%$OXJrhfCq|9stzU;ccu>NcHz@>rfhgkROp)1?nSZw6ofw4(rdolRAiUC2NEb=v!9 zPLg_cojbksQsT$W-RJK|)^2?OT4y7_XaBFK2Uh{=72tDEJr{w&RvPcDj`{tg9LBx7(nXp*+mf!QH@O%jRW>qQkyip6y+K z_TACO%kcY~Xz2cl9Cl_=CT`U+t{yQS>O*v^E4Su6brsvhmzA57^-^hrN^f z9#5XW;fc`KmuEYqMB3i^oGJWv?^O0aWi=nG`pruXuH654bgJ^ac-|RLtuBAo{VMRW z#kS}0htu{y8l1aK`?>mSpEJ6ZuQcn)c0FLZQj_6m*qM2@d%5SEoy~tMelkt{w_N9= z*o@<+)#k`@cJX8x+*@ zoOwU*_v1P(erEr<)=)%Wt!$xqrL! z=*Gi{td^ZuwCCyuNncpG_4U)x!#nqZk9*-;U3YXtq>8+?Z8fvIA?Uc5mG>tY?zi1* z^{`}l(!afI6F|E>yEme@(;plHS0_%-&)&nHChVV_`n;>+g#Yu8U!IkIiU0pKzJK{c z^(!mE3vA5u?@2iP>)*=rORDT<`QDpT?((#r&r5UZIzQe1cl!!{XTPe#62oUEuQp$P zdv?{KU3$wOK9JiS1iIO2M%dp?!rNYfR@gjqSyJ(PUU2`<{s-~@5>LzZ{rJ#&@#u%o z6aU=2`K4&BNX^>M;)@+6Ka?HKS`(YW3|e7RbSl-{XY=RCTGf|9{oQjOoi>eqm+ih< zS0TCA@Rmud*N=+oGRW>vvA8TfO;l_gn3d=~Yj}(!)2mU%%favRp65 z+QvKQylTwOPe-1L|6c3w@GGAA&zE4(i7)VC6;{YT=#~U^^+e9iu0kzG?#MHL-u?XF zj`|Z*pO=1|F#p`+muFvRuub^>c@GcxGNQp8}-meT~xG~E8<-#ucn5%(UCX37fy=@ ze?IzTwVllo#e{y*>y<0pTQ=Ta9p6)I_BC;J;N6o{*E+< zN%bp_$1IKbEV3`@O^v~~gHP=mM3PU6-sV!ajeM8(ts1<(Xdf z^U>;)Zs)gOfnMZfaJ7H>hf|v;Z+L0#_VJCmmx4L#o1$T9?mXDp&ROW~YSd zcjGs5Mb2lEj!bUr`jpV6-KKlz-QhIZ`3*6@yMIcB>0ks6tgy|0br)2?*i5~CGbS);=9d3M!G^V+V}@f#m? zNR$Q1R&9JLRz6F;omb7!{Z{3wbu)em-j3-yD>VJe@s;a$-1Wczy1j7g`vc*}d{-J) zPv4qdpsp2v^v#CN*JCQH?|umTarJ_4O<7fK%T0xi2V?iPocHr9zS-Tn^>JtTaiyY% zohQ?-hc_R2wfW*|=n*hgP2fwMW?dCL9B&W4#Hk)MfqzLp`R~W$;7gof6)wDnjz4lB z{@T6Qk%xO?XKxqA#3{v63F@K8Ux zdG_%Ws)-wBUtDoGe(ut^hnw4>XThwDFSDvHg`Ndddt=(~m+NOGT5m3&zclXX3FV~j z`yYQkz3Oi9^lEb9^0KY#MH~KmYL!VX=XhYCm2_S`ym6f4AGTp=K-S_9hjKR3x61z&7D|=N$8I=Rbdr*$d5HG4btptLG*AoPoAt zKB)5icz=>dVSmfP^QXV2KVS1zbPd~t`)g9elG~Ei%Z!CLOMkl-v_8$Y2DA+4v)JKd zX|8XpWu#?xTU|9>AK3ilxiIr|e?IB@GP6T$ix+B2&sW{QBjw5KyxPd9VlT*S zuJgR+ThXDYWsCRijVa8!vH$PGcKNvfUoQI_H^ii1gw1qt*vup)Y)nD-Gp&!?TeVx@ z-^OV(dwzB%&Xnw42w8VC`~C^#r*Aes)8l<`WUBVP$Tc%A%Q$-%%k3=N_^Puxv3#2J zyO+zwk4}m9`}%!W2^0UcIU5db5H?J-Y)@VvUiNXC<>h(We!ZWjRlO*?ao4lY>YRC3 zL-D1jM>Tes>u+benY}8aQpI`?_yUX?eDuAXM zvoWR`d6t-JR{r!FXn)L}^%@zJ{TWF$hq-=BV!1j48VNWmfz19P%w&qc>yy zuMIE$yjs$pyna36Ql|ChkV~1qF(z;QcB8GedXCM{oDHu^SGxcG^m?t`k)_v}_Z|6P z{r6M#Q^{beR5lj``Rj_$y)RKL*nzQ%KnD!kGkud^L@p>J=seSWY3))*en>**R+I9 zRQX)&GH&a`8fO2EVsFND9nf8WIwZdLRm(%2<&Lq>fA#1{)EIpKVVk#;Z-4B(h}|(? zUl{CSxAk!buf7R|ufA!Synny5q?>6C)2FSBOV%gK;^<6%wmBzV_5A0~?Dx)#7%)A@B{`0OK*6ZdMsjgov>2U9_@IO$&%=qLN*EKuF zn=wbvEPI&XEciT4EhjDVhzx8YPWFYFZ%l8TN>?{{G57Q5gHPH$!>8{zp6zbI-ov}@4xCiVE7eK~qQR+rZwUgh`m=n4Pu#lLPo{dilq^vI35(rRh( z%bX7-i7QVlS(kSB$h+n1SIr@S^7}%uFlajN8jCH=aLgbK7E^0^6^L{Z}qkft4}Xa zpK*4{uJ=Z=cGcw@y4P-hb96&^_uDAO0>4kpx47Bv+-p6WUDbcr@Q~o<=Nrr;qF-G- zdP?;C{hhmxwuy2k37ZA=eU8&V^U8Yq`7W3&%5)PcUh4C(@ndB{~l0$`zmz*jXy<)Qh$4BeVABi z{o(zQ;;TpYZO(4fwU$nNUzFIX`1DE%e_p@$d!dQaZ1#<=_s<^<*^hQ+41f3fUnP^y zZwUOq;oFYVJyjb&bgEwsSv<$$)tT>e*C$N<@cI13$0kOYt(-%k!e+C1{+D^r)A#hx zZmg`efA`${uDw6ov*+I`?Y{5)YETdk>V>VF@o(!nGf30#YQxz%ZFvew7teFU)&bnzLp{p)$bK`8!D#iY_Rp(xnY_k@w-goY5 zVt72S&6LeoR{uVb7pB@D_qS+{XX*F3dw<>hZuRGS*Ms6k6})d7zU+N??%N}t6ISA{ zh2E$*eY)x`UjFQM@so|OIr;WW&7EH5v2*U~K$-d-H9wD*-+%Mr>ZHp_uZ1Vxy=Xac z_wyyw*_X%dvFMt<|N3L?_Vx2#y!t6Uq5d0a61r;=Mn@AoZfVp1+3kI0-Md@X=O1tC z;h#VKY4HVk`Z<2?0FT1^f1G*o2Y3DF^)Qw_owHQ3-`LPSlf%RQ@9e&uPe(53N<94# z`NrUB8S7*?BuOB)-SVqSge-xt?uVHnZiV~;8pvK<#`s(f3#Y0o5hZ#A08i* zF8w^k8Lkrpx-e-q_`;;!fedpd?-gt{iEsXS>b=aeLr2RqH~!hM%b_BtEh~1}>2PzK zbcw5$cMprEH*9}CT|CV6%_AwLSKIG_4vYD4(7x{CG*)jpF-|SdiZwV8|%2g zKUtn=Gk)gu(7|l1B!U`pm2()+LcPCEa(-2RYva$G6*~S|zhpqm86G4W8!(^PU2n%W z;o9r#>wmK>`PmUU>8{T5ok7el>E9krt9rpJ!~5jhOn&?5=3O7=c$U7={c*(7=10NY zo1AOX>`TgaTT~hAZc9o$y>g$##|fAe9t_3mFPJ#B3@SM}p_c2)ecivb@J6Y=}+k0%Ef{{Q^;_V)V7-`(HexAya( ztQZ6FR6#>>m156*|9<{+XKVSqI&+k8%AL<PUdFSC35!iPuT=+wj4X6mh5sCHLqwODM+JMZ+F^6%Uh)26@O}4&?WZ;#Zq8MISZDFKYyWqS_8UjrkAIse@?+x1 zCjuL8=(+RPY`=adQ^un(C4brJjh}aG1l{1hYqOx^D*Nu(oQj*@i%oy%1o_!oU4Hny zJL8-E`lb8qx;D3KPP2IaKBrwX?YMaK+D{MOZ`{C9ZS$d9J@MB5=>1>fet{Pp?7*_% zzyMUCn4Ftk32uwn^zTlqd1Wic_ALGJMw^u{izRm0vOW8L;BDdWI}`R!OJk_q?thnk z{k=VvkMk}6fT3XzUWsU-IypO_%&wlo2MJ4@4c04_SE_Y*&YVA%Tp2X|W%0c4sTDO@8lQJnWch#j_wMml6Xp}UAOH8SH{z@O z_~`2D@O@2RUvHJ-GuyIx_CyJ#S@$oTP0`srZJP0Zi_bGZ!S6hh%lr6dR`Yee_9@xZ zr^oiyeEk|MUskv~|9Hf@{&%W!(`HVT`TE`N`o{^c%KMl55^Jnahvx>LqP<^^_^VbXCtzJGVw~ax%^2ks^ zw^9!KK7y*5ssf|`pz;KHK1du~&}Pmt#}_a% zQ$Ulc^BDIhr!iF8nr~0E1yxtZ=~6rv)k%%<4jb-J7=eKyU&u< zrcW<*}q) zSA#&e8zrs|wcYqtG0cZw+?;YZCyXR;q_+Fkv%pa)uew*MZ(Zv+*DD_7h27$Z`PWN5y}9}3_l1wG3w|xy2U8*A80JP`N!k_-`T;pFqbmb=z+VzclJyy2X%wbecq9MZ23KC zah#l#@Xz`uXn)|lQnm@@-)r{$dbL{I{{Nri`3-+=ugbAYDofT&Svq^QNx|uTKF8;{ z^2Bd6;E^oXu`?DAswv#?^TDQzM_Zoj9GiLL@Ts^xvTQn^=e?=6iQRuRH29pIv2gg> z4X;Xf^1Y0iBeO9vG=9U4me|Ac6GaCp*35y(sK3FG5Vdu^6CTY!6n zwT1@!FTd~pxjg)OcILjOuX*!U`#a34Uh{wdnfncYen+ttr@0^DIcj9Q@pJ0!(vLT9 z|DLi~lJ|e#!E2E=E7fA`AeR?~8`o4vl+~Ge``MKh&(Ap;^8ZTQy}shP=iF|s4$j&4 z#yZdN?a{WYJLTruPqO`>e4Mx4Hcpx2ru3vX&_OZ0m%E~0DW2oKd8Fh1XTQg)qR#g} z&wU#8rdsBWUE~S>ThbcuEWdtH{KOn)S#x!x`0Tv(>#GXh33un*Ji6+=PTM@)Igj2h z`C(AQbm@Mp&A;mm-_ZMb2@*ewK$Ge74p%C_x3MpOTkCQDvEtWHs^=eq#*Hjy+yM{2 zf%D6c8I1qGALLQ6fA(aX->_bwGCd8{^OKzW@C>Nu_j|&;g5SdByq9pXcoLf4UVq zU3j;4UaF5xf9<^QpDWH4pH6&WC;6c|t!+a2XO@3Ij@$o|o?yQw>;9Un4d;1UXH1`A zD7iyI;~2`2Y%Zk+z}MXb)l z=E&Y(r_<7vlQzk>ef9r3H?hmm|I+GTU$~`Dw=1hooP9-SFw)+4F3xYj*xIcsmU=PJK0Z`uX_> zn(nI$t`6NN3ppa@m1?X`O_?d^;v%s*MTbO`_s9K9WqA4cg#Eu4*p@+Zg0s)j%I5Dj z_UCW@4vCZYe=2wW=hho{pGO`$^7+Q|O8frjHrr*`-c4rQpPt50`P=`%2w1lQZqip0 zNHp_{PgmyF@MTXfmSv9fHg4F{H}mu@zkN+#-*ex!IVP}V=ajiK)<>KxD+ZkrQ@rF& z&f2AMPcL>pR5d*Q@uYV|QRlBOX)e56hs)HSSybmgHN7t=tTuQ5%^-4 z+nJ)dFMm#}>Zmv*cP#P8Q~8<$ibrR;w;td3nPKtn5b0xEl^)EwBGQngopyfSy;lF( z&$fT-PT4%Uw%_HW-j>Iy!spky@0!C_T6AO6_305pao>`D-uQ9&(e2kCgd=X=yrPr7 zlHD)j>x}yIr^EBhBFa9#5{|eg_y2tP`+IvU|Nr}2!>ZkeIoJwXjQ`o?-0X_yKP%7O zTmI=*h1U0qbL)@3vpa93Ht)FI`QMc`&(H6Cy2s3}ee21ceT?guN;d9+r|ZYp?Vs>}-?YX#k)1a^neB?FwY9xz>Ak=6s9Qci_q?5#`nLCl7ycGl*Ql_6 z&a1DT-Z!f2UzXVg`Rq8`|3GyA@znIi=FVLGvSKoSZ+QOrQt;jO&Zn|Hw(II{zIb%` zZOZw-2{-@gW*En=W{XK?J^4PVCgu2>Lq~6%-gteB&8FvK$N7#2DW3tI6*KWxgWuX% z{q<7kzD_-R@7CXvh_Bkvvtpzzx)M*n*YW$?*7Ni2%d4Ertwle-H*Kh~oL?8ygV9g} zFYbAMa*p}Ob9hP_tO=%ubv1w7UhrDU`ZcK+u5UQK@AcVbZ_+es%8ZqRYWDrPY41`i zQFN($akt^}!1;6Y^20>0m0I$$f1fe6>PdJ0!7Z<*&)pDeFE5>FuC8?S_V+neXX;u0 zf8vk+R&bnPce1xoF;(+l2QeI7pl#MUd@Cnvp}czXT6(_6np&y|hOiC?(u zit=`g-Lq`>{0m!RQTp)K!^os+y@#i!s_X5)kzdPn>A%#2<@2jRC&z%BBhVHan2J9F z8lb*xp8sg>^XHb;^G{_zUU}!S<$kfm;qTpnD`)w=STi&9!345&%Ro)O}O@p z<;iZ*k7uLORNEAE)157ig?CBv&EMH+$u~dME*W-<(W;%?JfK^QOu@Gp^|CGb^5}}G z`KE5=ui@)9-+8o3f1B0S4b#Kt#QN_2yxaZjSN`qQ9ijQhJLSQ*7`=krVwA8cR(sC# zC5w{$7*FqAr^x!$t!>6$!K$B0S^H+xTy1Z+V0p9gk(K_}2?k}=U%Ly>EwjrpT{T;u z$Buth-1Mp|YxixI5n}TR>bbkh><#$jm=%%nUo-Td#lIH6tIh23Kf3|5A+v)A+^~JT zXCY_?^-ZnT`d-is>Yu1L?>_6mW>DqCnd|EBxBt2S|L6U>;BQ~{tDZA%_`~ZfZYp6n z>H7M3>2tMvr`_!NIpMB@f5Y5fi3v~M$E>O3iZ?8?llc9hNZz4qgjQ7@jyqdE3dGssAPdB=j3Rll~b=6!IgvW$PHVw&M2PiNOkgQKE{#o)IY9j)Qj7Q-lU zz{^ZO+sxa?S!`Fe=X_@)w9N5azjyXKtMi}K(vE>9%ls!Y?*E+UEp;X~TseMgx8>I7 z^>23nKFjc_Z2qHfoF4H9f1QnbW_9Gxkv+%HwEFSzb{B=J=WMs@BQ`X6NhwR+IsbfqbEwYt%{U2{PQ*Wd+C}# z|DV6Tyb=A+uN|&te14S_pbOSXf_qG%q8q> z!^Ja4<{Sw)lJ_h*J)a??F3A*p<wPj#K$ z&7(K3n!gE-pBKtsbRzGu@>SCUm77PWh4aLlZTyn;a&6*b3)`o{-|tE}?2Gzc!>TQW zk*K&K)mYW#)O#}4=Pwq2J(vA>r`^w;-wi$#NX)qJT>e?-L(T1?m;a-a`qMHyy%;4 zA8%jm+*h-%uWP2BMB zp?Uf%zMF5aUbntk&FTL>>#6YfiBrI9m^*GrU5RjQxy)H_7<-9N`Q~4P-5s` z^Z)!l;oiF-J=+7jPv6U5e9gHo_s+3e_RrrWK19u8eDd}q_stI%uW#5__4UGebNipk=PB}|j$+)7_f^!G_wrQEi6 z*3(mo+uJu^S)KT(&sE(Zp?%|bEwwppla7X`x7K|5y5>>mk9TaF=bifheRui$xL=NQ z)+e}LM<1LhkOa4-k5@9k2eqZG*Y`gE^X2)w!w23PJotVpwj=Rw=32=IcUeD|hbRA& zE-jC-Z}*DxH*VRpS3URH$A5o+i-Yb);ytlHcj_$hnSwLtMzq}hbL5=+nZOrf@s@AS z#_|YVKE3)_k?g)Vi6QFyE&Cf6#IA7-UoQ7a_p)NvEasEKmw7T*9+y3`T3K(80r+wx z+x9@4^zyUE#q^@fTNTab-%UELr?&15=l`ut59Yja?P6YLIQ_wTL)PpSHv1k;t1>w? zExzxnI@?1v>oD;%;k6MZb)}aMZ@hjzh=1bcNypy@_dUHnd&ax0@@LAw8#YE&=Nvv{ z>o>2)ECRHev+n2DF!@K9UNgo&`oFjCwjG~{2UQ~ zFw5b`*C@8qC5@5H6WJ=B*`(QU?!UoS{OC;Nk;p%9KUr;_c{pVKoKHv7w9n0q)th_c zYMSxmh0lXmZ@r>?ERMfmwK98KaoO%0=Z>aCuUi~uJJWOOdG}TN=C-@*R>!Y>r?#y+ zB>vvkpa)yeon3K|L(APUsJTnu0XZ(Q|z;?Rx5}^=_qy3Z`9Nu&%h) zO^nBG2J&e%RV5O4o8^`*RH%Ob=*g<|>H5oz=k}iPKXmf`{e?V>rR*4g-eS0PeFMhe z4r1VschBcPJ>?P-Y;x+%b=&VQeZ#zK@3*}Dr|af6n{C!f;!~ctwr1a_Pp3^^_)?8 zKNCJ3Ub6c1{h4Q#p3W9DeQ;)9@}=3zAFYLd790-mUi<6IJKg({xz;E1--XnETq1Wk zq}}5B>_6|0ewXHaW8N3f^XF)YfrE9tZ~AmE_1Gg%l~#HmoUCsaZzirb_vQ7((B*%U zo-AJ-`1j4HA8)5wCA~SvE4*3%vSQ-KZb5IW@Xd)y--E;ZA5KeuuD!pCt*>+6k*oRT z4PW1H&%gig=6|V#eNCpj(&Ryt)$jvlBtXlgK%>P4_wLx9KVQ+_`25HLJB#WS-{&>n zbFMYId>!1(?4J%=O#g24>uCAw|Kq% zf$8AM+&5=u|9t*a^8Mw62WIW%{fQahP3Apnk3RE$&GIiM&-K7|Da)iZ4} zzucQNx2qG5huNl=THT)8X&e9i)rQsU+2l?|zPehQV7_{i`}#V|b4zypJ{R}*O||U5 zY}XH#fqUA@9Ddy^NUttrOPSkU%2_6)`194$ZtKr)EkE7(%F-U+d(PW-$(?goHTvvh z_WgOZJHPBl*2&C`Upr5{dokz4-Qr89n}hY^WR9M`|N7(9!{PoVU;pr)um|6M;(8Ki z4Q2e_#{O|_6^}{JoP!S^*KGT2{kqU@`^zfu!o~J;2Y3|o-*e^;=T$N0pU;0bzW4m# z0UlNP^TqS-NA^FDj9qoP^4avHPcI*y$$tFO_VVvN6R%&c;eGwqhH-ct__BY^-=n|3 zAHp&7(VW*)_y2nOTI2fmYWaj zq#w`ch|K5J`~MZRwD8k@mKp04Tp!}hGoRnt*nfXGH@!%H&Hv}K=5begF`s<5<^H|D z->yIK{WY(6`mcNEW3SDP`hNU?&FA0X?Of+O8TV(WF;rUn-}x{sPJB7I_X}hd1eOzD zz|FeMIp$^OKNrj2t5o}b@YnOJHnm~PpPzT0yQY|j=lJs*m9zF$KJ)*)^W56D#`a?k z_f3r(_Uv8$s5w0U-ky)!W&UrQwzKo*#JhKn-7|7uc)NR{Im4O!b4eaI@2vFqJf--? zv*Mg}TKbF+Mu(s9$0f@)~UF{-OF~jaHnctzo+`*&!d`6>us#x zcyxADt&98i=?3rnvOTY+-`<;`ezg1T<<37}YLZ^>j{UnNjz|CN7ZwZ(S3sUHqS}#e*SYO|9hLszY}V+_?QnLa86CA zQ@6XKZd}XD?B5M)uiX3m=koj>=eRu;UtdjKpYXS8ZCf+%+c#+{Z5_|dON=E?uUY!^ zjQ+WrWqZD*?)tSWtnlg5_Gp{k&mL?&t@!lT)70t8@wI=iw8!3gciV8<>&4Zb?Wt)h z?tk~5FSS|nYwlwQo4avm4Zhbsy=q-=D;j*a?Bn&Wmf}hOV+?s+qIgR>rG%a5bZ?w~ zTs>|5^mF2TNzfaX{C53_<)7}mZ|>UK@A{t;#oc+>JWFqXJ-q$8qn%E-U)kKXHD%v7 zysy1r-EDe9#Q8}5Zng>ee?Z5Q$;~-q53XH#5R39$!HdqMp7-AU{O3-4`Mi_08|+Nm z8xtQaG&0yPEdOe9r9|!7*N+oz+LvEyy?(id>(eLy&rk9l{*{Irh#M*!avRwcFN;3X z)27#!C+c=pT*Iki~-f?4Jp zBR?wc-}my(&%>H&JNXK?O*&U_=`jE8d29D|@jf@--BK)+aCj5L+)gLX_==aNs>_xg z*-^2v=BO)2bjs=M4;<4&_FLtADcIDVtXweX>fP$dXCm{b;8#IgwCs$q zuSYLFZM|+g=X>0djghZTpWJrEnMcmERI04*_q)5h!)5R;)ii&14xV?efEQ>cNL2Lj zoT)dKe;i!B!}dJGr*HFm6`%Z)o^XFXsJtDX=eWQ|LJQ01&Hw%3obgWnYxY-;{Cz+5 z|8M*Mx8M8D`~jWSp0eziu&yo%)|J70oU2`~FC+JostO z?v9vUQ_tPMaF*F<%IW=AR&%fN{PEIOV|Ucm_*ac*=RFDDTz6%O@U9=PHeVO6-M`si zY1R2zvaYrDOX zA~9CcwJq0UZ@zqZ+q1B2@B6X}bFW5oHXZk~4C{8-WZP@!sa7k`g51V*MbY5MY4xk` zKRrC9-M8<$-ufG_-ajwd8TR$*p;vbTwzMmsU$y?6fzYlB!#^KZ1+|PpE95U3S9(<#;?@W53`#kC8{)r5AkAEDUa6c~bL5ptn@4WQaF`JhcZn*L7 z>fxRpvdy{^FEigLJi1|W(kgk$o8Kk26(pGKm~wdCb-7K&r8ib@zjFATdfVK4wl9~| zR9QR?S$@Od&ccHkX7LAqJ^#s~B8AZqJ`En`j5#-Z7r35wu2SP)IsJEq*!-Yki(ews z^rVgF#7{eayus}JA48j^FAF6qq3wW}cs=Gf)O>!{%lO1R zd*;F!UriEXUKxV!V`@wIGc6*$cv{i4svB=>!e%`ExN+{Y^wax}uguR2j;~(xt0jN_ z&lStF}j9TnIFPyP1pQdcKRgW zW~&b`41@|fd3KZ)?lar^>+6;9mGAam{JHkSo2${U68WQR>r5fnF?mRWhfk0OqV&#! zrZSCxMcm(V`MdM<UVidhd(`2dcZ=)pi$0%u|GRL-jjzwYe%vts zeDdpauQS;uOs~x{uVKxeA7}F0@QSf{=8o$O0m^BbNpE)VwJDyHX7Tpu=g4z4iEp?5 z_B%e{=TV4Z_uiKcCE$e`~w*x?Oo!dr`vVf}4la*8A_BEW10# z@JQsG8M5|gQuoC%?YQ@QA*Ws8Ean}ra}t-h-^!a_u649~vT!3W_-dvHC7RV+kL;*P z+4{aR=~d?T^ws-n-%pR@x$~-PbzQ~Pr^(#vyFd52pHGi?$;Z~0lPLa}XM4r3?fLij z)o%Uv`0)wsOS0zOVz@M0i9e9%b`|r7;P34f{r)dk{;u_UliXkFSN``-x~WX9Uh(|- z=5y-p%KJ@==lx8sEh@kKeUII{w&%}-j)H@y{#N~;$MS!9PsodXGS4=BVC<~;Of}7i zEx+a7qwEhJ)059JEso@imN=?&S@CMdbN%f*r_Ei#Y;CjAdRrGz`+WQTt>68u`8r8Y%x?FrvP*v9+>zsCPv-miJrkKg_9CuUWJ?OBFToBVH&gvB`zR@O3oGFtPe%P9ZW-&04I zXPxid{JiA4f9=2Jg@-R{DsQisI|n(y*G7%)S^1&ls;K_O;po(@xG9;>C}_>8R>4^MC%nhcD~}O1R%W{3GTedjgsS zwb}lZr?E{4FR9u1sonn1!`A$|nxCJZe&>GkK3np{%&9ZxnmjO0&&+_|>9pa&OzpQ7 zuPa2i^FNdV-RTrJe@DyS@6+?1D<5sS{f8s&V|7fKS(WjU4>uAIUhJRS;?G}x|FCZU z@!OAIP4CsS`};rrecq-gHhm`d7kAklYM*xX^KRzOkW5kA_qiP+yPwGXpQ|8wUvKDleF9e?mubGUxo9)pHI{abl{p&nmz==tgSe|cY>oiJIh zk1yG8v7PnZduvw3JWrD1dpAS0>d4{kPqrYh@_G2S+Q;^p{ek`e4o}-_^WiD`;={1h zYr>f3m;TE#(U`m^cB51_d+vf`X_oGO8{f2Lmf5XduM+#JaN^}ZNxsv6-@5qfz-eL2 zH@l}CkE^Zw+8NHRO)EkFPB*5`r} z-QZ?v*o4kL9=1REzj+kizl)S~hRu3>tf)A_Y@^)tO9i|5VCS5M@r zm)V(0O}KP;Wp-XlyYkoYHJfh~Ty0*m!f%j>?c*!S=0Te%Id-c~+3&Nsb& zrMd0ppGUXuYM+yn-uk&VC~(H*mZS5sJsdYqWZZ1-q%XJZ+2JRv_tkVbALwfZ-41nX zz1)z=pcVAg|D?Xhtxn*PY)oInopKbpvX!?4!+}p%|`|4KO z8aI52XU5n-b@;$r(1AXweCZWM$f@RhrGy0AJ8|aEzhBhZ_W!-J1pZ(*%z zUVC0}-ru=Flgb&tB_(dw4BPzZ^5@MLO)oijTre;_8D|5#CrV!DrDE&j#h=6Pe^@8} zJcxh(j<)Jwul9V0-V=2-UELt-UHZ=I6TF6p4@_?Bdi11)`*7I3cZVUT)=b8FYRz`g z`rPT3bIjl96_<2X_{_0gwtJr4b4z~a!w3E*CDh5^UH`oB{;rwVkJnZ!#g{=kuDjEB z)G}QP-%z)E+D<-0d&BpJ#S4X-os-g%5JlGv@K~?pv(4G~(C_h)4JSR%Oe~wXiaXeT187ChjwN<}wGYeeYuCs3 z&93#YNxm}$X+@7-`L|ixdF!M1vF?}Lbr7_o$5L9wY{%;9pEggv9Pw>K(c7O7u5Rpz z_?fWj=GUtV8-L||dG)zlIp@gCz4M-MDPOy}Dy=l($Lr(oUPt`=fBp1y{rSI=*VzBR z^ExXMqdSuLpc$NEUOnU8jhu@r&wZcWSebk8{qxU;yJn~VGmNOUuzddYW5K+qwL3en zU*S=F|17iS@7L?c=g*Ci$MWSh1^3r8KH0qWeE0^X zM2urcm_ajkGmlgrerM#qyyN(ho5{Ogzbu~j`EOc6-0bhaf7bN8dp5J4CrsY&TxG4z zob<~0yho;{%qMnNO8t8?XY0PEs|=rRZ#|QBrr^zyytJgU!}p?Ion6!ZUZnh$dA?yz zPS}-wk8eELxH>rYvy`bvot;GG&m$W?rl%|C6q%T$KHhw!{q!~;bIY!&lecuQ_OngZ zelNJ;AM!dL&H4APo?`z#P2|tCk52-G!0UJpylk=enZD)p#5Z-8pmjWlx?CN09ytX% zwPu$6r8h?pl(PQ-t=;Kv+$R=QZDwPHpvZudUu#kac7K z@0ZKx&-?%Bv_95TYsx|ARqAiH$iET$?1jk385Y$(<+iowiuc{;Ig|al&VGLX#k)42 z`wzZ)0vd8GH+)cjjz{7C(R1%NOWXaDx|V)^-rksr^|7aYj{P~Z;Y`ob3+L|5wD0puq4l*pOBrQiHhws_!C<)|Xx&cI+YPS{o=hwki@tZ+U;mIuv=8X)8m0L$NvA^j ztQ$3_7gxUddWtW9rt#a21z957uQ+c%eRuAW6_5Y;F;>hksgz*-{_JR&LbY$JsQaeV z*N@)#RT5`S&enZQ}OV{Y|N5UA>?2=X2fS&q~Hh zn}xeK%$|SaXNM)%-ACGOdv|s_CRG()jaYYh`d*oBdg?Q>8{t55$=Ra>=ew>d_Eq5iA62XQcYLWjApVE{_5KwV&u}c&*$yk4Kk65kbV;1^ zlbrc^kDA@z>;#MdU*`B91veh$gqi=9r`a)9n*0A*y?&n+;+?n3LDDSFToe<9q(5?8dpo zO}f_uSI;}Mr0cozRq@&LV)tKNA6DM{R_>~Jc^K2Y(mXd_w*W(~Nm3y_7UeVb-srgB z_;b1>xmZ&vzc6;$udI;eGUt+{u9U7je_~Rz|2f(HkEgx}|9(k0tXrS(R(QhM&@(wwd}bnr zd1;5zrn#O;d~mbtxwhW^h~{%C>ko$6SWj%eXK6ow&Yz-7SD(H=lQ!|u*$%0KwEM-7 zRXHC&O^esv_UiKP?G@=;->U528T|F3r|q<0*+((?k9LdS&tH*RC z7is2y+tb=6Y_ES+`}*;(|7rGXbLyjT980rjr+3xP2TxRT=B`$s7q>>Tk1?%sdesrr z%YpOP+ninWMD6Lua{n3cH1qmB+ttry-Pk-8bi32E%`-#3$1XdZ{+_SwM%8J#w!Kj~ z>8?%RJ?lEZHL2#kKlEYNy^YmTP}Jia@tJ6+T_H{(b$QkH?>XetG=p8T8TT z0(a1)y3xeXYX4IE`~(l*)Ko5>cm2rndS0IAkaFctIoq@EhidDc;^XS$f{h#Y{4M@$ zuE48!U0or5ZBBjcX@PTRmLw|G$}?Tky|iGhM0&BAljhm8v%5~q@Fq#@IC9{ROl;DNcYi@+WxrHY<~;wW zYP0nG^~Zbc?Bu`mZ{2kL3Xekm|B~&DOV%g+EnCZ$^US1#S+F~AU6O(O98bF+HE&)% zyz$~q(wY1>kKQbqmGAfe)LWfvXOJN+6>qg8 zzVBzuT$Vg@t;yp;wPzZH!dWM!h41$+y{)@3@w4vbi{5`XoW6he=2i8l z85t+S|2|5*{P5-P0>ioIm0mu*_5QfJo7}Jaar;HV5iR+{q!U@FroYDG; z?SD$_&)?m%?Ad#Vdwtc1-8b1W{>;j~zb5rq(!P|LtGCRVZTvOUJw2&`Bb+BX-3oNk z66?f!_;Sv`6Lis%xY#+rS4;mCy(>@57fqh- zpJ%Q4e)i@4pWfS^a(?sSX>zqU)4o(2%PA7uPG9uicRTx?h`OrG&Dk%D-u%()5-D>w z=hsO3dN8kDH~!n-7+$+>k>LJwB|ksAn*5f(78Ec4@XgZ})pI|sZ$E9h`T20zYKx!c zYhqe#<$gT$w0wJieSC^P_=-2VJD6)J)`E*uuIIfd#VIJ?K&$5IClBx_ynnXy=Yy-= z;`)DdkK3j`m3g=VT-Ni{Lk|?Z=Un%;6%tO zn**mIt8Au#PN-RX=gsph*a+~ecNjqhq|YNBKfPj; zj>HE-%%6)(Iv0KfH&Z@jO3b)_e16;W;~}YR6Smjiimy$T`Sj%E=JfM5;LHDHax&7* zl?`1?_Ai`$G9pb^H@(i{^UO!LroVjlI_hDUw|;&_+1ZoV_1Z+T#iz&iRD1;;OS9wd z_U94nw!dT5pFVS<1maj4(5*>N@B9`89ZMs!Y}eZl>8=NUtNj1nm8ozkYk~I_37$f} zWc@yV&?1{~xg(Pv-MCrxqIz!0k63;E*%j8&zu(0_JIsf)$Yx)R80gldkI-9_+Dvb> zD1NxVmhlOSwpDyvs;@`u+k3U#N zwm0g}Z2YxqK>3FUc)QET!U^&-M;UUfH(1cI9&_ z@jL#WNfQf}gIt{S=7{!%u9kQ6wYXI9;q1$^k@sGm$PAV5(_2?__i*KV*1oer z@jly@$|Zg9Sao^B=iTA!<7^+#@OMbU94mlTvw`I^7a#ANas9;8@B;-UGZ*(aO5C$& zTRpj0;>RY*8TYy4zkS}_f4AEAEW@X7{>Q+#Cdr2{%fD`9ZP;%Zow;GhmHRgmejGM? zT=;FJ>!Gx3O3&?7N}d_d-xwaOGk3}Dhi_c+EIa3Xf!vy;wtr8WbIu3Itw~2(9*5Vj zzq#|*29{&5*4g!A=3pH5fb*H((9o`H3Kuf#rku~GS%>8Bg|2X|M-=l{OAev z;-tf2@p8ZJ1sC4@`RTLh`DZ!zKc~k(JDgv?oMFHJkF_2_8T)HKng%r=wJaChSfV|5 z|H9eqDH_x3SDK55O#X1WI-qRps{L1#&8sK*pZyg$+3&@NtLf|2f7PYWcL|yAd-s+8 z*9}{r_sd&sbNT1uS66wre@nM`_Jbd`W>G0l1Z*IQ%eW6gc-(us< zhoHNY&Vqsk+o1ul9%+Nk&%B>TEOWl`I(Tol<}50&bVBYv!Sg_FIC-?Z@rqP_?$U4IZ3b5SDL46 z5I^kqzErOEkl69~ zbN^ooPpA{9|5sU`%OwqJj)F%(;C&o^&>Gn3k+aQ<^ozgT5d17v`DT5?@9O`Rx%cj; ze>Sw9{rsQd&AE3#jrl&t{pD#4m3=c`=fv0l{W`h+-{<+YOrOqcpQ<_X=2*-LFZ1xs z2h(b2_E~cC#79{2NPds0Nz+rQvDo?ZN$TRmQ_f2sn|b5(RNFnVd^9)3xW#Z|3`)=Q~ zy8cGfPj6f8R|Dm|^9QGOykvY+nRvr<#w&NXZ?cEOytsKutAw}7yt|NKGJAc(-@`RbLcJKHC3iuaFHYN>lioSqvg%DoWv|V*@B@GM z{@-Kv{{7~kGv=Nx{y*c5UC*7*Qk4?tKib_rl%2&kLH?gh4b!DN$$#sO>zP04qg|x* zaP#)>n(oF@|7_W#(<_2}D}N?%%sp_?I(+k=Z$+Sslnj5~I9t1^b>+X6dw1BLx18I% zC0spc-<#@t25%EjgN~}XKS}n-w8ygTvf#BeoX#vUcIk(=6nNVn*{LYa^GB|{OI)OF z-*M~itvAZ&+^O9(Vg45LfIG>rUh;nOU6=G@RWd))Ni~UA%i9*FYx`GNbH?+{Z}?KK z*#BSZfF1gbArCWrbmXNT?!-|mvGcjaT_$UX{OV#+#xrce`COoH0u6d&(?O?o#>*PB8l0 zfBnfy(XQLqR65ZJJy`Cjg4%3np6&63Rm#crtY`kVgRT$%u}Naa|GU37&AUGR(pw%y z`#+w0A8SYa{<7$1|H64YJrD0?Yv`J_^uUes>cVFhXA5o}1}&F)dMo?m`)2pz*;U$Z zb6B&}rx)9AHvgTd{>|X$5yWztq$g@mQ}xZOYhTTMv$MNZ@mzsH^}iy$&y|`7E8ovn z`|-d;{o%UJQ zr4Lud?|b!W<5czCpXc?@JHO$QERW31Q?kb*?|u049@Nvzd3*f$#J3nZ#Gt?$+)&$J zIr$x;G@bDq+-ilK{>-D0|6S_G_xk_k^~|4^PknlOtJH^?3k5z48LKs$JLP{gtyp4i zF&VTL#_|w!EzCC1TA1XvV7nW(>p_cQicId`EY|;g(OT!>;Ip@N+>rRcQZCPEm{tw;9Cl@X$TkUjkQ|6xTx4ci*|NJ|t=tK8r;h(3U zp6UD0R%N@U=F_wE$*U_i{wcbp`}HaK1|^$%rRjfag*HYVz5Vq4<-Tg0_`ORGpE|#8 z+1xFcuTEM%qv%k_`sw?n9e!DSI&Z%l%d*Wopxf8t(hAzVp~XhbcP@!}>mFwYK!+L+ zADDjP04RH`l(d@^&px3(N~`&%PqRR=(CIfS(trQ2WA#3-zs`8gP9L+f=7UL>x?|TV z+uP6H@o0M0w*?z~G3Ng^ur)l@_b+^RetnzWtAjJ=`TJ_`yW#n*%&c5I!%``0J1eyBZxC51riTgh25kS1EuUG0R5U46?Pd0}hnx3H zU%TU(wZYRRpUtDS+J9Bo?MQm?^Xi1n5$T}$VkZ9^rwb+O{<6z|ny}$n;M3&$l@k{4 z4vFsD%=E!-r6%Vg%v+Q`=xup^nhkXP%nY{Dq#K*Ai|c5{f7?)#^XDn}_?excTa?ZO z_1ipMb^K3t%)YA4r&HU*=buP@`(yv!s;{q(zP`Txxpssh#_`thPM$Bc6y5nw)W9b8 z_~iv{jk^;P>h8U3I(pKOhlhE8JLCTHe;@nn|IC|k@ZYHe`~TkFZ~O6VKWL1kaOS^F zSP!4kpI-CKt9oDQo`Y|lcd#}6Nm_MXUGM3=-`?9lPc(R%Tc;BLLw5Sy-g`VNYu*%{ zTr6*`X}@>R@3?!9zSUTRPM`VkvTW1weH(NBv)%GZzbbS+Lg8a5%oYS^U+-SsR$QC9d3%|C?7CmAiJLv_%BsGx^%>;+ocr)f z{)rj)=f%zaRI=Q_ehuT3%Rj$7PRc=V#P3iBmmnu9g+usLG#MBi7(87ZLtt&Q*Kv%8 zFPGZzW=ZVeW_$MhtzJaU4a;YypEk^Y|9r<>a3#}IIZ{`rb2`@XYD@ma1MW8i1O~aH-28paPZ;>-LNFvcO`z~xunCP z@}QGw#Kq68TXyf~-NnCtP2XO9VAb~Lo$}T(|CZkS;`3bm`YXAjO>;%hefM-t^b;1V zUZ==<)Q#=TJ&wHeDU`+>$mdyUpFe)^cfyMTx?>gsoNV3f{2@z3OkCE8+sZ8GN^$(UOx8|R@z5&l5f@As2 z#l;=RkK9h)^?GM|?b_UmUDHf;^xhZF@ckPKSlZ@>w99R~QLwx)>BbY4XCBu6S6f%g-*^_3BNh`RzkFZ8?)m$! z>mNV6Pko%Y9-D_f-tpk5*rA@c4J}bKYy6*j^`#g6aY`*+@@f^q*G(T^i%+#rl z*!ivI!>b6FH8ln|-~7s&5K(JZ_4VgbL9<6^;{1zR1z+ccZniRjok0WI>*@d3@Y?+P zci7LMIS8KgD*deXF17ERqMUGk|I2mH=Y8F}?cvL)W$(ny_uSW=KN)gycjAM)JU{Nw zk#yKMdwzN4zJI@7KR$nM?S96WuLJ*YdB`Ji*5`~TkL#N>yRvU=4bRlWnw_mU&*#Z0 zPn*(wx5rKP-z%N3YWCGXf9j@}ee|61D|Pwi@b-DRE6u&~i*yT}C$dP&eYo3*zOn=^dALH1Wr`ZMU z?nkD}yY;Y!&wo=;_LcYd74h_|%@Uh#|L`c~mGLaQ@#xTp)aIq(-ub-J55G*|fA`z8 zp=R5+pIl*>mn)SY01fI-w#dI1|LlcKQib*LQ;)Zu&3^RR=KsULpFh}zf*ZaSJ&<7e z_fP%(`E!x4wIg^HK&8zwp5uOR($vz-->hAF?@ZMXzry8ppCMN(S@-$M!LL?oo;cl~ z2Yj`Xn!9tbnVokH=xU|Oiz6&Ockg(0C3xE>ImXxWb;ZlxO}HCZyLa;5>7QQ4uB|D^ z_dJ*{>CdOyxYn^Zlx2?JkHaONyJb$ko4&dGhO+LO2$m_{YhtdJt1bVjd^V0Jro3T& zf7SYZ5*FTf*&42HxE}uX=#=)e4+8sn6@GH|?0H&rE?s|F%;}OV+r_z;xBcDy|IhjV zHUCcQ@3;B6{{OG_r81ZuXyoqnIpYui|IYtkc+c<}RJb2>v4wq4*kSkh!@u6#+&o?T zaQtyO{TQ-+JeFWwO+D9o$>FQS?MyaN^O4Z$6b8ZnK@YKJ9h)+V=Yod}CNHbk6xw6tZ0IXM$3& zti-o0G3~ayar2hm;}QNIQ=-&<=jn~=R!x8AlOL`|PT0P0p6I*-<>r>JSN@QX+gtVZ z3jd=TR_$FFQ>C|!4dyrOIrFfl>V=W}bAiLREyLut=f(-ofBuvI{rvXtE3LqbE|XIa z{C{_5xkCN@%jTae{{H$p`K#!fe{4_YZ-4R3HO(bWT`bYue&c7sVv$`(!+ENU#hZ_O zd9-R{OuK%y<*Lc|=Nxyqz?XgT>dN+-({Vm1f^9}A^eRszF8)Nd;vYf+*WYzs_ zX2*b!k@@&FOupdd*9QF`^4Ij&rT@!ju`pSDH^{$Ne}h@>o?XxO zb{W(4o##K7w0}Q;_;-jb+ddYyXWtJ`|1f3W9=W~i(indJo_9MuzP9v?&9(3iQUZ0G zr#Z@ICR}q^!Z^>eU(){&|Lp|6b8}eFJ<1oqKJ%>1vZ|vZ{IhlE81IfizE6q$SRDVS zF!vsrb2r~^n0pv@evByS{1`Ln`7vy_ZCB~PTf<`W`c98j&w?Zo71I?Gh3|}FZ$$QO z_&NRMv1dUp_a5!?`FeGQpXHpRCM#aY%%7;rK7WpN-ErOP54U$WZ|x54*K_~AVEW~N z344nzHom%f^l-_t&4M32D?fcN*Ek)>JHMeOkKrZO!^XdX%i;FV&+dTA;kNC?YkDB1 zuK)1^f8_p^#MG~x`popxQoEhM?{2?-l}DlezVWYLuh;kEx=4v_-r9y^Vw!Er%?yK6q>W_cjyuL{vU(fc>KvZYp-1W;gb1$8&_o!&%m8DOF`Dg3T=AL}+ zOYzQC!8H;eUuK2a@3yGhy_B!#?#{%dZ>d&GV%`{RSW;{%tyX4V`ZeO-qc=52!_OZu zyeJ;?w~T#fUB%B&Pv!qyXZS3-=A!9u*o+9IGmYqP7r%pLt7B&1oU}YSp^m@aYTf=T zUZ16Y2F<_o_uXx9qvpNj*R}nx&nN%cqV#{uv`Fv6&buPJW_I7*$tWeA>EUsH`q@28 zD~hLoDLQ!4^M+Npzs=qVV;SZ%pY*eQ3Hj`Mb>1#+%7E zq}S+veU^0e(C6}Xc{hq&nQ{)fbrs%wJ$3W1b4Qn~-p?;{{iCkW*H!ly1n#-_ChOK} z=EKMQd1U84O*kE{|L9a`{Qdtw9`~Pre!0JUCi(`H2YnJV7@wpnJwLniw9H&*p8V$# zlDEO(Hovd&r|qAYJLY*EK49=cpDm5yr@r30tABVsoKJk^JQ1$_Y(3hkF{02@W6D;V z!%mGk>H6l}(}(JBa?+45QTnjtR>{6s)1&=v)D#K)JQTKHD(UR>H%sPqrIs)MHL-om z>hQlCejc4N{jKiG1JTFc9@sB@K2-Skxpk7;-sH6GJw27XO(giT?GD-L_f(a(%lvWC z`&Gvm{5L7_)6MS@Rx%HTPp4Tv&(;@@|N2s8e&XVPPj3~zuK1kvuo-lT(hQ4NXTI-U zpCJ0-e7#%$W%Q*x20S$y;DM<-dm5`j4ZVkNWwevQi`E}pHZ<7ZZZCU1I8#D`?cdP@ zJPQAh9^HBia*fhD^lOyZ=l9#%%1F&M=incpvXe4TpbkE<{CTygGt8`E3x=jqea{P$}& zpI$$0hFJ9cjyHYhI&avj?X{?Ub+lV~&yT%w@rE^DUBb`bZ}`(Jf9xk$*pwa~*q8!z zs0H2~D9|r1;WOMbH#s#2ELCI0_U!wI<&UehK*JEXdCmxY%C*y*yKQ~K-T!P$X7;6S zyVP@h=8VNAEKBD9^K~~XG$`@zOZuTxW(mGbspTPecHZH8XS(P5{g}gf=AQn2Ip*+l zX$pG|Ilpc`1cSpbZO?*(h$$Zg-XW0hv zALpK4S@1)T_q2YvxQ6`fg;CRAe!8kVf3wV0%e$w!(;K!Q7Y|>Tb>pFw(ksYiN}mpX zo?KM+Z1a^DcDzE}kCVC6)jxcCyYEf)zF(g?Poy(o-Jy>&5TK!DQv=EwzvpdaT=MnL z&(C&@nRZFjQp`_huDil;ai;B^ApX6LiyQCQeSVmp9T0Ap9wb}sUH2%)?&s6eH1#6W z-wQY2e)!_-mK%po=`QJm*iFM<`zb9W`e-O)p z^ljj3rPCZ*H-^ZBClDy-}^ z|IfZW8+4P>r*ipypDur|xq9+_Ozn-$LXzooPe(LOIy7~MM7ogL{u_^e#vWO^=^*4L zrB4Ste4jj5-q4bJ{7HU$=ZPfnIWb3{fX|6((!L&)&$jT(hqnb!Hw!l(DYD#rI`Ygs z=uJw$`|bbzI8)DQ5Pz`i5JnLSt8kAYSGYfHc+Q-E{QP0 zg&Q~Q`L|QjZW5>v&HkOHYb^Fz^>obAr+4P8^tZMWW_H<;bi?ZML#eDwx)EDnY`D4E zQn=byw(V&xGc7Wx1h%003nwlD6}-MHfA7Mc%F-1C{9{JcDH$p-0Nl@5Zd`OBlB{5e^XEW%slyRQAbbiPkyTO=Hmf= z|5KU&>;7Jeb-wHkNMXGQ2=-HjmPN?{Av*&*Ms?TrU z9}b=&2RW_P7Mxh>zfLVYFbJ8^&<8Jr#C9wUY$?;(+lWR8jzBrtaNpjzWzV~t^Fha*t<@+NG#1*daM(C~m+P5~ z7X~HPGKFeC54}w{+dSjbf%MgKx8I4&!%l^1Q$P3e>w&bi6n*tr|4%0QNt+)z*VJCV z`FXnfnIhRoIjVD?dg|Bje0%eic1~s8X6}mlQ#K? zIfcA(PgSq3=ab%RbMxVi4x4kY-tArUxHtB%LDr#(ZO!?9`R6``x%;jDRZvp+^tIf% zYW;$oX}^*->3$Vxb`P4{HupYgv|I8x{w0y%@UStvCwIH{yzS@goWqw*b?(}xRqU_! z+drk}^PBxs)J<#onECq|_t&Q}RQ@eCZHcL8{&ZaQdG+4Z zI$VC*0ko@>p016%Bjfnnp7qVP;JweZ^j02vBYHJp`mMJ|KZq;Ovz4y4jNKwpExzKs zt)8^c*O%8;hGc&a_x}4QXZMuowXY6dW7qNFU-9SR?a$q7+Y}esw9Ne=dieR7>GRiD zYQT7tH?&5b! zNiV~!>YdH`PXy@w56ahDq4se3_XTgVLhDz$=Y3O|KkMsawYe7_u09{<|K;yFyUrDM zvv*yMf0dYhUf#YSr}IzeoIjs-$!Ch|uZx?nCu{%pd$Yg8FGrIWEJG=`jSZMjoR&E^ zd;4@ttM-bVJ+|9^&#QiR{YKmJ>p@On2(vc2nT{5f;CwVr&@vdXzOPnQ4w`R-Y% zDf5ZfKfW*2p5OH6tMG*S$iTF~-&yaHz9n;HI9z&l=J>Um6MF3S4~=JMc4T-=|InH& ztiDh6+^Zb_Q^&>J_MiK73Ua~Hqp~>`t7SeIsLb9RT3eA`{dsAT&Sk|nUsuLizWE(F zXKG8aSbbQ-x`~%lCWh9CPsq+!+0C{~;Y_BTS%kCo^i7kc+QTPL;r8>hGc)|U`HHmB zjqXJCqOT17tM(etM@{=EAq^JksT)jjLd7%J~x{`c$k z`uTr8&;S2MctU+#;4|ek^Jh+ByLNgpZ+~;Tl6~vy#5el#JPWDs=tnQjg~aNeQPzYZD+BEhQzs z(0#t)%Y6^dy2n4Rf)0f_iMVK~un2O|QZ?T;7a#tF^W2C14uya&T9VlI>BPkcK|H(T zs!yD|nz;U65WlrN5BQ>`k6%8C1kc^@w4j}B@y#06*YeMVCuCscrFU(Ok`8gt3hzw; zw|SEvzukEE`yJ!`$INVE4_``X1Fcm6?Qm#6*zo`Ee8neE(_actcqRuuykh^FRD<*~ zmoou6#=_R|+hW_#-@CV5=4{4~?=m@aA9|WTecG&8!sPxw=Ip22r&FJ&Z$9!Q+5G!S zv1PxOe|z-J=6Q+PrMS5per|eSd3Z~^Zus-6k~;6Q2hn}yGG%+*1U8wg@CX+CoWpzh zknUH3=WRI#AFA(Y#sx_Hl6$XnE$Mz?(f5;1b(iir6!x!NZhpdiXV=5keYQEf_U?Oi zaHqe{rquS(`;u+**4jLLt5RbLy=V#RNicW%z@d=OriMFRfQASRBtGo_4LVy&=P&r+ zmyeHH8J}#&IQT_u&1Oq)LvPzRWp=CQ9R0X)?y>aK`yO90-@bCa>}tD*x6|!jt@QW% z`1_{Jir-UKSBt)0Q}=VzY3RW(kFS5+5W2WH;(5)lh0$MkUHKezq4K?Sw(~Zj_nzJ9 z&99XbZyecrxI9qe`KL0;bfsl`&ON;Rc`EbCt4$ZZoAwVYO*?tXORh?f_x4P!rE8VXfrh^ZD5w(v$xC`^(mv>!_U*m7s{k;GG@BX`? zyVz%^v#H5{%aE7O?|-{b{@bdGPbn3@0-oi`o8P%V@9;@bt^tM4Z;224L9MwnH?8+I zZS~im^;hE6%-JS)vKcgXMsoGkZWmAQyUerP)@J_GGvVv@iv72%FxkFxd(x4}4P|AP z-;Jv`%amR=q`Ff+GI_JA>?Y-iC|9Q@2fB9#>xc}-yo8SFM-#n3JYiso8`SI77 z`GmL5-jDx(@BhDhKjY8KR<*msnC*;3lH!t%rF?LEp}UW*{|j4sk;&;qZTA_eR!gMb z{yA!PeUotMnSxX7yPt>lpO10xduCnzF4eB8UA3ktZ1KNMH*a$Id^^11-^zWP=NLTm ztP0&fZ(5Z{dgY<%muH@EoDRNmDgQ0&{!|;wDOd7BH6joQ9UJ+r4yO4Cttr?&tnbChhlE3R_*V`%mqy!v5#0rxXj%>K-j z7y*l2z{{az>p!>MDYcoqNDiE#mY=Ua_kDh2W$(TJ>0dTl%}M{iaYk)K<@3@{8|FQ) z-PL>j8js@r|1O}rm-M-F<&rrr#hmgx6RwlK+mcuI+D#cv>*(y2=7l9m6`p4bYd!_( zZFH%vGG4^i`V?~a(oxgOy& z7Snz$`QPW7W$rG$RWwJm;k&1=r@*$PZ*N}4{@9XPm%ZP^%=+eckCyUulo>b}hu{HckVLzF09m=iT|b!phYa+#~Rx|9#GTd*;tld;gz*kz8tV z{$H};?+u^My?&Btd;WKc^!l}u4*ULh{<*#X?``4xe|~&o*6%(|Z>FHg^Zz;SrmeM#8uOPc=WT%Qk1 zIoQqhx7Ry{F;ixpkia(K`b3NT6S2oHC%d10{bb{Qrg#7UJ~yrUKmX$KR|WI_9#8s~ z_;l{|lZUJ3eSc{d7j4{7^I!O*=o-6Sf4n(_WEq!n`Z-lyh(FYsoD4E z=KTftcr0H&d|~j+NU+>mzbn>?7>WyU=*s^k_6+aO{`A(HWLr;^R5Knywm}@d1=F!6Hmkczl{2|_S`)AZR-PK zUkOT|TbIVae!nQ^@^yR4e(Kzq=UsWUtNAql@45aCzt%I>{apHdKbEb_9~{By=hib& z`l))eqH->HIqv@dd)(gtH=e}@nSJg6Df$#_+OXxCxO8CYj<8e|F6J8ruKOpg#Wp(j&&q9{)`bV2<%anl#7n@5!u} z_3xK8T|XJLj{X1l`PX0kt#`Zp5Ih0GKM~aKsaw_7|K#WA=WWIJ*QA;y+ohOaVBTOJ zW2|s;|CQu*Lf33s^?T;}_th5c0Y&L5yw ztpO;we$QWQZ=JptyeX(mce9kSjP=IZGiTi0uzgyU@#}}yN9X=J8_gpE= z6YAc*>pR^(Co@i+|L4oPd%G)h|2~%g|6`BuoyV`*`uDYcy}3DEKYVuma6VB5R-W|i z2A3z-jSTFAuN#@}NPO^4V#fU4yB~j2OrLfAq;uV_`QP)vwefdj1C-S(<|#w|WR>Yx zjQ^W9$R9&*#wAGXfb8YpUupafR{}a|0$Rj8zfsa*-~7$%_x*Y`1H9o*;ZK@wv(=>o zYZ^V6ZHncL=e5XhJ18^9l6%h4`+Dn)XIuJw?b4Jpi?&EF+gOqmKKpD>`#k@(*Mj(a z_R2k3+b3Z;XY=hu>-Lk|V%*nO8BNxj*B=s}Q&sjiY=6{UUeJw4cOp3}uI-dGm2f<& z;gJMsY~cvO&db#r(7OP_S*N0UE2dH+6O8u-SeJ2-AUdJ8H=O8=aly$z+% zeJ5vr=f3Uoc&}rX-{MbAo@LkG*nYC%zT;=k6Xo`|N5sJ@^5?*t{PXT@*^8W=O26-T z`0t(N-yoxNn?Y-FzgY6v#IXI5o2B^V=kwd!?biLT|908wPp0nXX>IK#n?;PpcNa68 zm|dDMVV?f%O7D-)^jAHCpRU6YR*k(M9eIk@#A-TH;&Q#<`-L_tbx?-r}CNV=wpN z?5gAMEKf0SKEA;`BKp((_TId@C7ivjcfN#`)#-!N*2f*0x_aNf{~wRb&p*FhUfdX?2$lu+qCMuA=dK5D z3)#wZ=KPhdK6h>NcI>bAQ-2JtoJv8B*}FDBr6;sa0G%!<_G*}}SK$DySLxeYdH5en ziE{UG+wa}aON>C5O~8(exPSKY@LjC}I)mu?NAvs}@yLypUDbCA>c7wNJC^uhp`pQk zb-7!@d+on}yftfmg6)5s;kjf577|AwyJMiuHk={B_~hsFM21Y;`hR=;9cJ~AW?{d}Lw<-PA$(En<9~iGYd}RHK z6tPZ=U8l`$x;yU12S2=ZQ`v1^ac#@mea3};*Mps%&A2;T_I;n0xBW=l+3h~=`d<(0 z)t9G-&!4h*pNPph2taL!GSW@Bf;U9PuY@~WLJd+_FW)6~=|Gem=`*h)Tzr1bVT-CR)vC7%`@a3N+fAanE|2_5p zbozenk5m5lKZmOCFaDZ%-YaEJsa`Ut7gzYBq&c25{v>rjFBhDCitT;U+_yP%PqQnV zO`P98EG((haNs zwN3bX?ZKz__Wyo7HvX@ApoUeO3u8IYZQ}%vpA(+e|Ns8K?Dgxj(%-f(D-Z&W=h`MF z)Xl#;nf>F;TQi>jpV={g6KK!!VbHx`D=NGVYg9l*>9ucXqtbMqc~9Hvb$X{|@cgn8 zHMWj|qZ>+>9X7qPBzi;E#l+3&#cJQGtax6_@8p=zJtg|w5}R{hnY`cgOb)q!XGPtQ zmv1+G*;{V;-MHRcM|1w2yQ}xGKM3ck#aOj6(M$hl-uj)vbEXueQBXX{s+1MOQur$mH0L8>Qme_n%I83wz}_W)$6zqMKdKk1MA-x%kr_pzn+WtPh54IuRe@rkN>Cr>u0bjt!3Ng(tA+gxxu$bKN7xGy{viasH538cWwK= z>z?iRzkb@(xqb82_y1Du-V_{3m=Ll(*1o1%_Q~ngiznA@7Crw??%Q7es`Q9vUkRrF zp!dQ+&E`3$;|Ey-FZFl6l`CQxj%0oKW70-oTik$c5({#|?MTe$6H{adx-IG&#+SCg( zHKu%+s=s$xLKfGtqlZ7Wb_;AfA$I*iU|i7OR~s&#o-Etfd*bn$clSf3ccO zrp1qEU!LjYmp<9Dir-y4eBZl=d%iOrPg|+4b~}jQutMc(=8d0sSBI~kS9nHUVI!9P zVxXd7zJ$SxIgC$gtCTK-PNjOobB3WPJ^9ObLxc5Gzi%|&2cGjN-<-~|^B>!je(qtr zE(M%2zIQfCI^0{n+;A^6&43pZ{|R`e_D+b|xWVT9gole~9{&ZpLwf(Zr}>VvW=8O` zy`A>3<7dd{X=#BuVjE}Q7YUBBJesn3^Jc-qSL$!V_RhF!a_0)S{OnmzCj`&?R2H|) zc~kd#elsP%b!`rBey2vk%<3Hw{`(|7JE!FPNw{orzzgzBiskDAO zEgr9I8ZoC>T+n;_rJtZBe{DrSr&kp_nsVCjWls%X{ma|7XtVmyD{JIUU$*eY*M6&7 z^uGL?r_0xySJwUu`d|O;o!XUeCcEEPmzFPG{VME{LyNJ%DTQgA2OAS?3^{lhdqp;U zG}!oiX$mWQv)V@m3(0B$CQdmPZl5dqS;yyP3izwoaLki1F+6wRNZ}J6rRKsWR=F!{ zvsTA_`u`^S{^j#`OIKad^1NGmWk2ir*w>M-x5v%9zcaieZtM4*KQA49%-*LTXdf6H z6Z>8{^XI2oU$>q<=Ks0&wz|S!=PfOBdKwK4*p3~LkYG+u;DK>|*cfhLee(VP*s2JJZ!IJ`t(}-P~Q?&j@`SD%G}m# zeS2g3g%3G}`@Ju%Yn9&?J9Wn0fNITcKW=*S^oc3|TyNyP%rQ;MG*+$CJwA@$*t=ilm@(xOP`(w85+Ai|8 zUHN?Gx_4PBITaFxUta~v&F#0F-go`$G<9?Pn&ORfrFd^?wD{wpj>no}Jm5;W@pd_3>o&{mSQG`l(-i%$*!pUV7E*$K98k z=kF0#KfjXAhUet-cUR=^&CS~%(tEm8_}{ZD>!rR_PJgcQ@Xk|vErA zIZZ%=!_a`uj+@!O=jh96^X5NQ|5`nHGwYN0y#1?*~b@--LK z750}YzHxt(_oj7DPW4o=yr25lbI&s=i-qxeAKN@_#$0YrdB0r4(w{dBt`@f!s+Vm2 z)V};`!0CPJ|2xxXo5$EbonvjhqbhWDw23YLS;P8z`gcwb6F>Cq z0S*eAShjDaTkZGEzbiJu-sYV>|J?7N|J(c#F*_{r<6>F@_lf@he`=X7-Fy7&fBzr8 z6Z7}>9i4MmaHDhK8=s7gHOqPD+uvO-^ETtid8wMa4?S(KiZ(0eFdcsvcmCDotBa2Q zl(9Ve<8AGy)|LPF?%%WdT(X(G=XLd*jepYb8obXqm(8 z>C6&iSblm-!SqVu@6&P&KBV8XjSG_aHuJsS^@sL_S>I1O6;8@qSnwoz?<~P)Qdoz>uN%ZxN&KqB69;}$TJvDBA#ugUg@`Sr@BTwx-Gkd;R@v6vq z68CHC_We=!tFNB@%xdE=;f=-57tjCqM6Ukc+r}#YtySSW-~9^L-*5GH>XA*E8-?p* z^Y>Mi@V|~bW0SKyQvY+I=F5*SxbwZYam{x<{k-|LV&ab{OCMHi^i-Et_gGI1j{W}O z=FwG+PpS^iSb8-6@7ID^vvt+?&-xnJzt)Xu`ig~myw9_PU*Gqso%+gBI{MB8Q=^p( z(6azm%Ej(Kz31oZwflF-{XBI)d_&w4AFN?wQ_8lj;m^arEZZA?JuLiR`C`xf|IZ&T z|6r1Km7`%Mt*58O%H)n6Tlg+qdLM#_g?XT0Dk7u?|=F@++ zqdWBV8`U~JxwpBq*2+}!>6~5vtnzvO_rv}#430jzDL>b^^7_v5uJ)oUYFD4GH>)q6 zHFwU|)2)i{3JlW!X2rcbzLcroJ)TFAE!~3EfA)H*n-j}^J-zE)VPPqFW71mpQ{0RF z`WL-sef)9aRJ+d!vtE9AzS_R_+-bhWd9@E;#qa&q^)Xa^|L@5D*fX0hN$be`TqS!f z_U?x_`8M_c{(SYmZ`bETFi}k7LQWL(j`957{mG=x&%g8(sGOYq`;qwm7v&Ch-@Epd z&K0XE(>Sv4NZ-jvy&J5Pbmea9p1YDU{cw1%!SvT^Up=~~-;V26`*q`C2>-V=tLM+y z+b8w5{M@bSzs;<51cNurot@tQOxfUPe&6fPo~c)pWb!Juea%`aRt9MyT-i_&y}wVOm`Rly87w4{twft{%+`689m2; z?Wd<*t39oMtv)KYK0j(-#iD7yYK1n&J-z(ud**TD_%)H660bhLK3OeuTimND!M+kd z&wkS7_KzBE|e}5`{QLg8Gb>?V?eLhp3D*w!2{CV~ClMS;o1(WCPyU$|&o=^Ip7p}8fQX}z0`1QLl(@yW{oOz3X>i@tOih0YIwEsJ+ z6fr+%>ye)iyUVY~>zAI8w0|pp@%_=KE3W_9yM4|F{mg^@ljSZQ;C;IB?}8_*gPnib ztyg^U`}kMp?g!jO!loYlMg2B^|0+CL5&3`1j$Mz=#>v{5t&xz4{r{?TzZ3t*4Pp&f z*ZWo8(_hzaIqTruSRa4&eLp<^nasC(clE{PN!uZ3vrNX)$N&e@p9PW?tGX{wUcP*v zi|u`*YEX@8z&1|~6cB%mcmL+PHh=G;Z-&zp-Y(5Z+W%fA5#`lO{?yDpU2`H? z__TLY|KrKivrel1+I(AZtHzpb)*FvorfaYN%jaWy^U>RBs}}x`lwT)PQD}Qb=la~( zH%9qP{y$b17T0`Xx4WX4_;&HCi;SsC|lLsHG7t3uYlJA}7>`usBTTi%EpcFxy=U~2x{ zGuXiT6tp;(urF;p2Yc-nP|C zH{UC*JuugMhgj32qF2||^{(1IKfUaz$Bb9o?1S|Gbe=wcJg+^(wr=YcLw?^?=hwYk zxjOn@ zE}k|0XToRKEN-j4e!KTn?Jy6w+f{t*W|pZw&wS^ukDEVlFKBtF{f=*Wz4x(4C1tg% zF3&zx^E=96-!^~yxE?(Im%PFB$yjLn7D!6@VVju1ePVj%7w}4xH#d#BPwX#{?cO&n z_DkmW*^Ax=9Lca&7TOo_@sECh{rT+fBS+aXomhH65MIVmDtlVDnqi>eq z=TE}>eu+O;{`1X6#isU|N%BYOAB*jOdN3kKm58|>EV~q>0##^-#!nD-TCQ3*Wo%) z^?IG*{r>ys|9`^Xv;dbJ`|?3G%D$CS;8vyqTitw#8$zF|k3>0GT~}AQzjIH1?D2I+ zgqA$c(@al4wC%9qX7i251&iOLXY6A+cX#6J*I{pCuN3IBxxbn?Uv0|_IbDyN55H_R zU-Z!9^VHXR<}rU0UkCH=+EcJ)UYhv#zF)KB@7`lveLqsYE@Q`|=|2sOqhsQhm#;Ya zeFaC|tSchV_9g7>=UuY!&WQ#~_QdJ@mp>$SU5&RrqWIv*q0;?lW`{ifa^1eC+V1bw zYm4_CU8VSp{py3(5&F)dq6<*5GWZQ-2R^OeNf#DX8k#LVONkZ{+_SuXYSYUuNx`0LX@ z9SRGUxhHo*+Rs|Ych~0A?d#R$ci%|8=OPy$VYYDf%KAMa>uqL*%&xu0asGd2&_sWx zIcE<&ySygxX}b9HWa%aHPAzSj9{)Zi-mQ+PD=+$WG{Mt;NkLN1$6wL+zE1yaly6w6 z`~A$-zjHe8@BJS0?Cd&w`^Jl(_pH9lzf(0$qT*6e;JjG{i9c4|uKqFSwz`7;-&6bA zM7ePnlIK8~qx{@W`6WHNQ~xRaHL0(^ziGer{{4Uctq8x*^r^a@xzFF>7uU7z>ypjp=URiJyK}3qvAgZ5%!og(^>6O;^YiyVo4#@1 z_qh7?dhb&pwE?U=1ZN8f=fUr^15B6xfA}4lGQaJY&YIeNMcYDt)%>-wJAe7j`%}+< zF8}-`{WjC5YWu_C@wH#SWj|kcA9Os*{$G1f}mSv>+N&j8_EAU`g;Ag$F*n02K^Pwjfaa*@SHANb4I zFSNb&iC6MhiQZ>1`>&SXU!(3E6#RL$ed6N-rt0=GYxk$l|MzK5+5~66`4TJFw<@3H zkB*brShL|x)y%c2%5!FR9jyHv<*={rWi6|=kQ$ck0`ABEU^M>lYL0pYwZYKh5NhuVtZxzd^4>d3po z?}fj`P9H0CeJOl=Ip13U+PB$X6pkKExFS0Fu=>3D{U26dyfnrC%tU#;`%kM@1g@K< zqPyPi?3DGpwzs_IFRWg6Z^Ha_`){7K^!|EgUAWs*FOIH{r-KXPfE#nijtcWKbkjq{9WUH zMOVT8_WhZuy^V$+s!tyfn{fZ}JIobD0u(#jV zRgS_lvUY~I=Y`c(9G~~{OzY*vdrt4Ux#iYg&px|%^EDXetJ%uA9WJieX?o&*K;qMh ze_nkx*k>HSCUJK6dilC;^Gd-3YFV3B2hL9uY3}r?P5ALTa-B@wF01K3H~83OZ|s!H z3V%FDbeWZ|%HiwJoA!M9y5I@B99J+Sh3K;b&@s_X%-(Y3qJ|`#&G1zSfTT%XebEto_Dsu4OJ| z>UGRy&(tPrc{j=RR+T zzvZ<1IR<;DmWeArZ`v5AzAg1(=VbNy{%h0ro{9edY4%#n2b*Ry#(%h9_xtVk`0w$| zKaN}A7}qVMtayEI&cvl{ zGiIs(I}*Dvdd@U<@6%WN*Sft=2)`UOVSly7&R-WlCGOh%v*XVatE0bdr(9jp?(eWK zk@01AggUOW1X>TDXJ+1izx&GllTDvD>qXS7+uHHZ$!}YJ{(#s7{kk^L5}RDc%39X! z`3*VilhQ92ZCKh-Z7poKTPKO1`F!}kh{~f+qe|4$`S*SL*(vqr-O;00M8YSpU0+dd z*FGiR{YsPZ|H#RA^Y89{y8E^7V)i^bFXPTn>)h)fZydJWCTh)}Uy&AS&ziFD-CJ;N`+WQQf2sdX z5A16)-L>pE+JGoDBp_{53FiIPY<2smuTZPWIr%eEeA)ajkB(Q>2$lVl*8}xi9_-Jr z-SdyP?)#^juU2Kcy8JiGG|Tk1RCAlyU79o@R%d>#_s?&7H?KAYPySH4etu2a&N2(J z8CUn7iH@_D{d;uPWj(LlAlY5zhrak#ru&)M6kcyW7ykBF*UZSXWkGwt7u`)N$zPB- zTen`~U)4ujEv}kbBH=G`A|96Tx0!$Gw9O7-e|F|!{>HMI{QTPDaeJz34~JFnNXlh^U{%(vKBQWD<0K4SBU)nUc8pYN96 zuT7p`w`ayoq>2|~coZBY$0dF^>IB(e`||z9$Hkjm?lOHk8ZWb-`I6A5Uo20or$2wb zE}1hu{gTndT0O>_e3=)+`gYrL=UxwfmujaYarEcW^M}=!i7mXlTG{W%&o_BrHlBWH z{r(SU^qR;Ao_lX5eOD$Xcd|!CAN%5&kiTw`Y>35Ztwo5&7(fwA*AN;>4vFl>G zo^)Tw$*0A4x|gn24XZcPOuLy;x7F`XY3+~GN^JhGR=QgjUWt7(dtX!NA$EC}{@b`4 zBk(Yh=VAM&pcD94rEa(DE3pas|Mtmod&D37b*(gN!_CVZbX{b&?d>`$Q>cFQLHEb> z_Q%PePjB46@ae@R^YruXuYRj{{oJyn8J0({1n-_3X#3>j)$_6Q-)*s8*j>7wfB(O# z2Mgz%uBqt1^>)>hjj!YTtXIBY`SbPs|8JE4tzf91m2uA@-SL}cLAli&*2wQ0v6Sl>h zP6scK{PUDU|Nk5Hu)YZ6jbA@oE9`$G|9D@Ms4C93DI#sm_h;KT-}M!!VgFO+AG^iX zkD_ayzi-%bx$sTct&cl|tEWtBc=P-I%MM+}k9n(6V<$gQ8=Vr;*2S+_kcXwM>eVHfL`Ly$6>tfD5Rp~naBiH||Vfs|sP|GBQ zyG@Spck%;G;{?W+dp;hMu4TGZcSNsq+v&{pSC}r&wZD^k?~PcWSkd!y?sL|=#(ury zS^J{z*O9$duU5Z4=YJ*Z`{8HHAKrMo<;S5_y379=Y?%9Q`fIhT)>|23Oz+-w`CIIN zRQ;H|ex~WW-=)h>&isDp^NIP5@|<^L9?jBvHlZWAy5{ue4vWXUqIzfL4PV)qx!?G; zTljm9@m7;3#S=VkJkPngMcF)Om!#@jpK}f51Ky0?z74b0qWhnD>3XSowDA^?lWQAFX|TLp}1` z&E72*n?(|>RnF!aW^QM8pU)nq>mFNP_`TrI+r>v@t0g~v%KZ9TalT0U{EzRh2KBF1 zi}|bn`PusVuMamTuI4>2rhc`)u=?ZjilCUk_msnGzeTRMJ9_su|L+wp#}*$v9og7* zD0GKRxzMs5cRn4pJ+k=I!Rm+3C#9=-9% zZ|{Rur8D`v1Im7w#C*+2ni!#5UT1oGrQMn7>z!wCMX3gEdM6ao)k8YTSnSm*DsuXyG9_~U&?>rQSoE_~Bx^{DpN#Qq3{LsJi5pUZna zXtUMZ4R_AVy=vciX7*j5cP_e2&l#_V8L#ZC-h5!w?!ziybM`;c)&$%Wt|R(_rF)={4weCyP(7ya>v*Gc$vSWdd{SRCo;>9f9$T- z2>Ma`={&zi(%FOlhr{&$SFUfL;e0C7t$f?Bqe`>xU-GXnZdtsV)B8?$`SPnRmah+A zTfN85Q8G;T(EGi*(hof?e$BrA-EsdjP$vI+?Cd|ZdJb#DV4elDUB%ZoH;wn7{+NAz zqxnYbMQ?L6ehWL5^B=y>v|-2H9@W(9<#wu??H|;y7Taf+g$LVO1ofN5*Z$zx6V>;( zZ^vH$t+O5%?G2gze`8z?UnZZ`Zo78{RUco5*IU&Thiu>T=lNf+-B(*g>qDg8U3~D= zradcBY}>+5*XNj(^nX}T^YoH!lP+KS%`myOWlLOKjIZn0SN@q+p1$|j^xM0y_#Ha@ z?WId$nczx-)}_wLVm^~v!`>W^=1ExB`4SNd)GlY`6j zKR#U=>_r}e~MC)G08f4v!T)Dj7c=hBf z`>SORY<~G{+?`Qelb=W*>FF!MEmlWC-<@fLMGwu2DcD3gU zZ-u}3w$ewUGVSNFtqnDh=uX1ZT|)TWCX?-59s85;{^MKDJWjfOR$y1E%x%7-lX_bo zS{FW#U02()!=`#h&0YQL&UVpt61(iS{FzpB_hDysnem64k{7S0%=Vo7&9}y{TIuK6 zv(NP7<{E^*P3%cZP-ar|?&yQNFW;Q5+3@q0;K%Fp*Dm|@ z^_jB4Q<3Y3^E_-T*xNR|_CL*8KGR%A{-x}@ukETeKUcqvv;Vzp^YluN_@MgluU0MX zGq=%d+CTSzMVD1q)|`H`fPSmLPdlb7&$pMaH?`d|r)uT%3C8;K@BG?4w|eDu$@SC! z9sN0}s&lUK4)NyD;JEt0JBODaeI4BY`E}%J!Pl|VD_3imonu&R|MzS*xwiiPh{BDZe%^Vxx$fWT+V0EqH4e;Id(@ZM;r9IT>HG<7I_LMcpGdX7`AGNf zAJ&)U@?Dc(z4APA)5D^=b@!d^w;p*Kn%?}i{YZ1-;p_5k`V+6ut`(Yi_IdB8M+(tv zcFd^ysrOke{jc5K488Ztj|x}h8x@3`L5zg?`$YTdg}k<#@HU7+<0hu@oo ze?R^8gV@&xi8q$WJr!Nt>8jFrd4Bxce@z#b$KMIxu8mm z>S0E0hQ(H)y6?|UtpC<&eg9BfyW-W-@>l%N{cfwzHC^}G_s8tu{aF{D@4XX!sj+za z{}mda{(AT(ih|cK{IK+>v$Pd>woguejp}UottHt76}FyRA6yZ6Jo&QC^vc!lpQk_e zyRvHDzE7|CZ>tObd~oD_b?4LM(<{@8FYHy#*}FS_!t4X90@rS4TcaEvf(~5Bq1r#3Ngnc=dtzgWrrBj&kzYa|ZuE zabmsw{KMh0rgI+sc~f`d>HHb@g7Rh*ix~#>Jo7%h>TvnDqUYNewD7*yj@ZA)-yyCC z`^+?2)>l8@;O}s&de6^iv+LNOL|@OG_#(GVwao5q%ejcM86}mqr!MxfhTTd0JhycH z>)b^3y!@;4I``i@n!$8Dth?4LVq?|Z%5ToErqy5D@qK#vwaPQklwW?!Pwakb|GLey zeQntH-{qg~KVf;2(c)Z9`A)y$ zxt}AReSGfyx_g1($A0lo-{P4s5L1>X@Ysa1{o#WzMYz5`dH+mx0&m-O*vIdhmvl2N^z**HIR;PLb;}&{DhpcTWvdszihXui z=2K^cS?s)sqHhn1`CrHRZ{B=9@~HgONpie(PjVE)6MJQY_EoExhuBpnJ^da~_;dOE z^K(zEY^(n9Ch4j}(cXj!x58&#i_c%aGqd#5=GV&YE2Q_`%x_dyd;UiC-1SF+Yi^#a z`Wi6b{^h)N`Zb#`{N}nQF_yR3NFKE%?KhpQ|Ry8ZM8& zx3{HzvT&o^r1f*&z51fDE3QCJJ~FB3+@9CJ46^H_rd^r8uFUk%iugDCrhh-7`tZ=R za!^T8(Vn_gYT8r-m7Kj-IM4rk_WAkwc=j)aPlznBt(fEgJQDxQcjA5A`yanbb^g2w zebd+x+jV*FHkFh2ohJ0>t`Fk1tB5F*_{#aGc709JkyD}1_k^$iA-XT|_5F3rcRuW_ zu3ng9%5mmpvo`-R+c&BAlJ3qvYo{r9Zu`OVeEHIABFZ&6wX;7P#lL#}Z_<=Mpr&}> zt(AcrYIKiDy|cUb;kk0+xnJ)-t$wQ47sHbJ-MJ`y`;XLpE)E~lny$vL_3%0@#L{&+ zy{`LUmFVR4`z+?$e4hL9b=7P3=-O?UqfhUQ;qN|UP;{mJ;_9FKa~WSgKJk9<^GG7o zb}XBY{7HB26YFEt+V6UF3sg&$A4+d``uDZ;*5wbDPY*;pttx%Cea4y4Z3wbzW|3vb2N=Vv}MuDd1vMD6F3 zDeLR=_5U%|eqa7zxhMb2kGxMe$_3fQ!d3~aocZ5K-i7xP{}J0yU*5OtUB764H=b?R z&DFtcZ0fenQmLf`F@da1a$z17#BRz)({`AV%y+F-i)bNcs$f5jPv&kg16ElX7nRbPnI zm$%t3d9x_$O6z(3c3$su6~=RS?Ruyz`s~QZ!yis=lt`KX@7b#Q!l*pk7Y1L$^&89g zOgvEk7&Jov>~;8e(KY6N-;RU2lgKp^mOj^q7Reun#P@yZ%CD<=yY>3Lz4Ja^D~&pF zbMBTE$)9f@xA>;L{Qa(be{`>9>?qzDwm0hpr~EpZ-;zP~|HLNd{5>4^toeiB-h@@F z<>LS9eO7z;<00qn*hv+Ordd_Z`8@Ty&+>J7mFathuglcr{K%O#XQ#f+@%fE>*B7U? zO6yGcBd6weZkDYDPb}Zv3!hHRl5p{T1KEy57w#%Gf8i`qydx@7~v$K5gZ<`*CIdN7ng0*jAoO zpp|hCKA&$`pYV0z>h$yTA|3v{DXmf3=*m%h>+P~1ZvyUIp8m5y-+zsT?+dZ+s}I-v zcl%k-ezoCg>(1-XIGD@7z4ALe;hx~SxRTASS5MFDXjwl^VosI8QT@-3KR$&ouVh}y zsC+Ny>v{g$yKm}yKA1kIeEPKPm&Fg*rYOC;SNMM6)2_&67nAz@f0{11_5JJ9Uk`u1 z3hG~TKGn`<-r4yp>k{ zxte*oSmj%*d;H?xjPjYn^ZveO{_Q)z;Y&R8p8s{{t0(TTCot3uNe&;bNNi{*0gpGF z{rC0tjj0h$C3oKDzKOh1=J8D@CyM7<-ioJ*){=$pcji6aeZ6sVuzW-z6Ln1{%b)Lj{r8%~&+~Rlt^28eeJvmFa=o=?vVC^KbT7}0Vu7-s2E6jiBK}@|&0di7a98{@ z-yc_6reD{&x+iA)_8FZb>Ft`=_`TOu?QJdlqMp8PR^0|pAJfwdpISV+c~}4X+P0{g zugeeD{C>Ore%)QBqWFVV8;yu*sLnHCp4R`Q*ZkgwIlpg}zNyhUkbxjR?5`Zvpyr`4(Phr3#dsp39Nk+gtZfKoSiT639` z?%NwjCQZDt9yGE4{Wt59-L~B^yQSJ|=l!`_kS=Wc`u^UVS8~NH6Mw!|zCQO!b>Z)O z^M9_sxaMhT`26)Z-}KF5b&KJZC}-k!|8eN9%ys#qPxCjvF|ND6Uy5Jq!Q~|fU&wh& zf0(yov*ey?OWyE%H@8=b|8Z-PsHrO}4%zIgboRQ=)#a<5g{ACr>b@R+{aE1d!_Eqe zpS7}UTo+oMfYY@YOPRf`zpLoJ;LDD>Kl_Ix-OKNnf%|$uqC;XlmGFD?HwtT#dQ9Z znH+t1^KH?&s$W8;58hO)3SR#$@SV%tXHCzaH!ptrdcIitcKa;5y3!{bWGl~>%ruwp ziD8odw?;p%{>Q5+;qwc=*X@-TJzHnJ@}{kyaO>(o;axLg4$lqh5o@+D{NoZ^c-lN= zN4ehT#w{P7>wKLcZCUiB-M)I$?D?{O>r@k-bPJmL$=GD>D=3=1ddAEf21kDgZTq!% zVQRAF(FglVbrs^L?^vI3^iT>Bosx=EJU_M;pZhAhMr=a-{yy2>T3_yMWoBjWf98TF zks~a2#Z*f!SDmwTS&h^7?UuDy#g(&eUcFHBz4Du7(w~Q$RxjLd+rKo)Hgoyk3#s?s zJq>ZrwO;m1YWyiv! zhrf74^*-rYebf1cNAp@Srd3CmhyA^Kvi7gR(@V=cPG7bEeWp`<#mubB_y8G}}`$x*PlP1nTzj5`-X;Mq%65phqYFue=&vTYPc+Py2 z+cOXIvtN$u@VA@u?`li(mT{|RJve~cXTbs9Avv7Is<e)8EeaGh1fct)I#&LFZ~Vww!8;=BI z`2KY6US}>d-^M+^;_uC*vtjlYkIvbBe5b4T^XcSQBF(Gi=3Dp3TvAv4dB|?r=g{xg z`TPHVd;KrFp_cV^@A1Eekc|P5iVP9aDAm7BBHO+%OZD%T$z2cM5G7Fe)vC5?W9!UX zzRbpS`zihR-?^UISgyH$uE1Pf@q3B454Y?;BmHil{+hYxUxu%@y^wk@Yi0U;W_7jx z3lC>E&tJRWrlNiQ&P$&jp4;_P@4GI4*t&mDW1smZ%uP!YmWuz7RP|w{@HDlvKOcQN zF`rSMbMF%?PAzxmpy0C|)%}JM&MO4B{dijSp;9C;JTBtr*YxYlrQQ`iIbEnk7dT+l_BTdfoYyPo!k7}x-oaPCI$r|PdY44Yr z-%xXy>C*KLc-HzMb>Titk*xT7H9VjD#B1${-z+J=m8u0#JKhRv`5z

    E_dp@Jy4$~e)FZP%`4}pDh2W{E5G!2!GrFV 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� z=dpwTT+#ZH+$R+o8r`zuO*LM*3huFUww^ES@VB=Tu(~Ct|8zp+$CvFIm%jxydEIpTzSDP6f`%B^01fz4}a@$lsZuO6j z@!I%yd&#~>8mnV}*rfmHdoE{JVfQLvA5;B|oj>kZuKg^2yYBR(_wU8*>z@1tt;@Lk zfB*dbQ7`uK!_ESDqxz_4so{!``S$G6_0sicbuHYh{+-#(67O(?ORhHM&4TkXZB>u+ zAHT2q|M||wH$OMOm;CN`e!lHC0e7i->3U1=CG+e-&4)LJn|@xmaqi@wxA4mB`hS%_ z)zkm({v>~mZQJH0?`CaON&lK>yej->d%FKI`CO&dyuXV7Dmq6;eolI#_}$>I&4Xa4 zy2H!$>P{W--qf30vT%!kbj_<1iRUL-C5w93yuIWfD|yTF)y4Pw<*qE-G3`ZX_DWFk zU6b-fFt=p0%-LS`J~PdUQ~hJ_2HwrdkgiTL6!)B$?Gp3ra@Zq&$_@(uSx2)b*^Y%tq-ikaIX-UqVe+th}SF->3 z_Apy%uB!a*Pb;<6=Lb3Y$vj`E`{U1PxBA5G^83s*p9UxKTOEr3owIoQ=j+cu&8@%X zdfl+&{SFy+)g>}tk8J6an=zrR_J2?J&vg4wCp5L^{gF8@u=_;N^eYQ>_t_ldw)=C$ zfA^!{Rnvcb$aFq+?%JR3zArrc%C>q&{(1TMSN$)=>&)3_wmzy_{N~r~y%+zM*Y3O5 zRo`oGyl(e$sru@FDSKkCGY1~qy2*XcvHSDve`me;dHJ*Y`|Y;%=ikR43Hn^~IO}o# zd;6VwMYaN|vFg=F-u}G(xjdfN7Tg}c`@Zn3ecbf=3b8^q)w^B$Pt2>W|2F6FwCA%V zju>X-9`>&JC4B$=?^mjJzYo2C|19=Ix9uwN=x@Wccyer%hVes-n0-LIPZ=l_>a zEWDxrFCq7F1ApYQ*jG0uZ{nBB{c>P?zg2NtefGb_)tlGKeM(66l(&(4>h{$r?DZpM z_qmo<^?%pz`xd_Y)6pfoYl}W?N&U+qFZt}e#T$Ryl6WVc4|AWW9EjLh!dGkI^E}Wf zbM7i$S;JjsmlVGQyT{pzt=FFzG<$KCr2C`G{d2Yn8NYt9o<&W?Zrg$7y?RT3{Bp=C zJsN)ghwtJgm=U;hu>EAZnN^UOK>f82O17=PyAt(>4s@Bj3FxETBK zXxzuI*LQ!E+@8GP-JkCL>yz*Qw7ysW_x{)Gf4^7%$^Dc0=b_H4pWC0y*w&ZD@6r1I z>gVmx+n?v3zkhFkN6X&-U;kO3zX2Lfm|g$<-^ca$_W!B-{qARRf2GNPmvi|OU;jP+ z{?wE=w@d$=JG@V^$n}~1jpv5{p3gP@xRJT>dBlt5?odt8_lJu>~>}omY%tvf1y>PUMRQnMZ#grtah`~W8cJz81fC}+-9-}pYgPc^iENE zqVoIU$0Uu*H$P+qYi0jW$o-^kSCbN~_wi*sXJnktl6lFGSTDBwo~V0uD&UianAejz z!m3YX*5sf0$R1f2ai#Bb*~Ya$Zn@sydH0a}v5$+HQ>FjR+5aQbYWp1V8GWiBH_k2U zGkk9EqNlR&vwK{v`TEDL?<0gJ?=pI%t!~$FLiM7U{JwAfAEsW_d%MPZfB&Q9e;=LS zI`zH%U+2BxA%olJdymb3*?sK(Um0V!qHT^_CTCRti%j?b`sd|O=e+Bm%hxd{YyVa{ zKWB~hv^T+>~?9|0aK1nf}K)BJ#8HEzA1UJ@qe)Q{D*Mdw-kpQ@r%a-STZ)U;feDsK}O^ zx+x^BB>&SE;n}->-0-mOQ$GH_BJ9r=%QG==4y4-%d{ws0S^8hr{@-(VyX*5GC)+#< zKCYJgFgs?9+?qzpromo0JuOXR(lEXPxHjPjO+dzD$?2FWpC?`E1f^Zp7?O&__T^EioY(MJND=3WPLML6}#M8M)^wlpIas}^Y8uh zu-Ih%hfL-7b5_0v)-wklv`q?~XGmpFV)jpkU?=GKE+a=Y28{%y!k%d^Tp`@ibnJHxHd-+yua++XVp>Ki=- zjU&A0K6n1v{LAcT_kVxi`ue+hvHz)O^NnBsIeFh+V&TWWU;bAAZ>0C%tC#$~_Wk)a z?ipw6A3pta_x1y+|5r`_eYCIa;$!Lme)@2g`?TZVR^*jwDE@e%vDmjV>C(BM%KZFZ zb~ZUy^{;M~*?e-lp8w;+9PZNR{&zPf_%prF`1h#Wcjet9{?Q*6M*o{H^jZIgw%x89 zo;3y)J@#KbKWt=N=zh2Gkn^>V0pZi^UfG;aiI$uU0zS>$^O^7&d=WJ8#bZZ4XrKzTSDUWn;Ik97pt{>~^~^cWh3^e|)()z9vOx zvvl@`Z5un+^VPiW>oj^k|L={q7uVC1*8H%nFFE&Y{e{oP`u)XMHc$C9@$>%Y@84~HCJ!2LGlP%b_@8U4`#;0- zd4cQx|9?I)K6n27ey91T-|6q=f5$$`-&w!&z3$#@yG{RMrC&VYza<&`@bKkp7yo9L z59wyA06K8|My^(zTu7aO6qT1O8II|u(Hd`71{IzM%KT$9M~7XQ*oE2 z;m;RJ=bdAJXBKbR&e~F&qiR>x!~5@lZ@V}zzn4tKiGW-7tEA9^I=g-2!NX>`&;4yb z9xbhVwW@v1zvcRc2PU}RHQUwcZ~gIL%Lebebvd2u|A*JSaXO{C?@#oP6CLk=|M#jn z7F~1i(7yk#{=fclT&n*1FVOI4_Me-F&OiN=|0nZLO>AGs zeevV!-RI)}l-hLm$9|d6_~vlhtBdZl>z*t;vi$9zm)G-OB%H1cXuqCd$O`fvOD{(JT7_uE&t1xUH~Dz1}%%vrPI`TH-; z`!44fe2x7c|G5A6@{ij;Ucd44;^*V}Pmav!KNA0CLG+J*66rjrzjn_nW|(hx%jTGU z<&;MO<$u-fzi#Q4?buc|#pYc6zl7YDHIM%t-E~5H_oL?Ky;q8DZY+2wqkDAu{lXxB z+glSJFMV>+{!8NVk1FxjQzqUGb$Y5S{-AzT z^iI)u=`Z`I$~=g6tdl(6=$BL4R};TY-`QQ$|D^YV`9hT(mUSN{ZFoLe|3cl{i(!31 zyZ>DBiLNQQ(0G8=yXHswkHxPyZJ4wF#&`Pltq z@t>d0v;X~u3{^<^>`|J9bg9^bya{)tq; zz3_Vz>vyn+|5^N}U;g2g=+E-^lc#CU{+K`e#t&t)rJK&oFMHJg%! z5#^VBBo_5fmT6Y~d!_W)ioDz(A5>B*rYt`qXS7X(-QTy> zCGP+F$Jg{9IG)gQmgRZw939lQt>~KU?p&{r*T2`dthYU_T=V(YH&*Zlv!qorS=wm9Vdui5`DnooK6|J{Dc;IF=q{U7^3vp*u5+@1P3|FM4If^q*+mG~p=RYq}5%5U6pQk2uW9}bEH=+4u z*Mg6I%sBriUZ=hySibUv+0sq7Zm~GEZTocP{D-;Dr(TJd3eC6r`(@?qB1^N}Mb5F- z(_a5+KcQCKGT%(dIr`PQ8J{EDVr_VxJRBYPLOee&P5kll}Ie?n9#Tk%ljW@2f;x zpD=tTD!slXTzUh4Y+3P=*r~C-cJ|0|u)V;6p(s|~k|DPUo*Za72 z>SuR7PsxfGm*YOlY){_Py8i#fi`&dLPF9&`bE{8uUh(eM^?FNxU9sSAD;IY`y&L|99(+`!+6?s!xl_{4+m$;m7iKy=Uy7am}m;O#}SQ`FHd4 z^5^`8EU$iA|Gfa39IamX)BQ7lQu62Zuiwu%_Byxq;-BQI#rN%h{cVnsGFo2uyF7W}+lUK^`Hjr; zx4Bdw_2>DbP^xix-KIzRhaUImrmR%AGs^7$>2M-rwvc4WRN1R**Vb&C_%P7^R>{w0*mFTr@;^L2na z*L;|Kw$| z&W9C;FaJ;fb|6{DQm&N!_apmPA1Y;(t=#`jpZ??33jKRs{=YfmbH29UFf)6;e%|Nf z{{-!-*2%t#?>+ycd;j|Fzv_P}eLrk{z5aUqcTfT4e@yz-&AdN1KkNTV`qvs?VX;}^ z*Sxd#pb-}7`t^@}AD`a}=ImYn{SRo~Gx`6wD}Pr1O#l4;?XQpFckIu!T0U2}_cr{g z{jo{zpZ%X)NnEpK?|;d~*WaK2bHZbOwpi`06OJD?PJS!uEPpV(K1Bb=zX_i5rTh0M zOYeU1*&$)+UeWn>Zzj|SDDekw@9ityaHL%B*OB+{ou3%he=Od2<*4PM>Fqo_wD%P+ z>HpQ$zt8H#1u_1*N80KCrf$0^S|4IAon-0ud*k~*N8O)u+^@X&U-d}CzF9|(FizmR z>}er4Pv1@Q*0-g_TaR;pS{mqdYoh(m&+GLaB*hJu+Ni9&ZFhKid`-!bh#V%cCF|Crz;!o{-~}Md*%G+%HQjMkN-3HU-aJO-<#J?^87~!<{hMv;dt|QPkN+gylYRVa$@@QrwVM6?TOa;f{Qkv1)q44>SC+1| z{b+pbV!v%_&H4vH={{c^uN^I4*LQK7YK_P3BeC@kQ?_sZJ@LCAa9pnTLDFMy z&JXVu3XU$jGSQ;R{dwQ3qmHjMX8*G2<88^a`s1NKxo2y9O&nX9LduHW20{1hKK#7i z_DI=V)@lB(h!a`faeXtbiUsfY_VIlcylj(-0B#~1zF4@ZOU z8?NrpeeOTEE_bEB^rDh8F9OonO%eF@()hXmd^6ekzdAt$^3~wg^otp0bq<@@RXcm3P-Z&v*ooBo*ev;SxPKVvcbW3!dZ%6d=+ zisVlJK0n5OjVwpp`T3y1%Bp`AbzlD6-CzIo=d6#Dt)~3_wffLAmV0rrEK=}M0{<1}Xrr5j+4v&v~KL3|<&f)fUzT&0xp8U9SeVfsZcJ`P5 zZ|;(l|8>jh_{WpZ?zO)Z-rUl+d%Sqvz8@!^{c-=i=>3d|wq5_v$*-C7U$^G1dfm0_ zb-(sak@!9|t&n5*o(;$^w9H5CD`GLKuzKlERl+5fNfU;l&b=1D)DUId>1 z`8iqpb9h_OeZ~1d&NSB@bFQ6R|Es#?PFGPPl3V0=*b9#B)pI`f5_s=z0`8)sD!jI|m z;@7nIAFF??llu6*O?PDMuhuF^WZdAKd_y__)E@ZGe$Dy({Fm)t|F!4$$hv>mKQDP| z-hSKq>i=@mi4%S|RefG>+x9{lBKGg!?4RtGN5kLMZ%|1xF5!-sJhk`_`#%4=|7!g$ zFFxz2{9FIy^`D>5`ul#0mv#t6KHbRL_PedFIQ%zT_T^$7ZM(k$k1zW@`u|*9Uh>3G z<$m4guO)JmyRDw=STXz?q1lUzD=TYz3%TV%ljUO^6e`vnIeDnG}EGUKNLR7?(TNm{o?X*=1l#MFAw(> zx&Juv+|6PWyZ@cQyMHEadlCIRIPWOC@zaCl_a0flo5Nq)ajEY3GW$2z_Z7X`V7T(N z{*$@(Uyr!=nJxXMvvu~56ONkeWo%x#zkV-fSCzT`$7T6nTmQ|^HojiGPW#HTZz%GY}t8y%SGx#@`D~_3$x~K{2&znZ=#OPaYnmc=Y(xNrMFysSorT$FlkYd^XSfb(Xxnd8>Bn;|u>EDQKIO{=CuNU-NDG+UOrQ z0?kf~+UN35z5n5>eeHy8MgM-OKmV`sZ_BR#vCrfG{C>axAGna}Z@pVzy~ZdlaNWoJ zew*J?i_*ZOz$c9_ZN2h2|9pMbzc(9|Yad3P-1IU1{Ql+F*Znv9Kl|T{pT_6sf)o0` zcZQcXF9Ef=_Ww^gH?j1(*ECT7eS_PX&EHNKWq+EOc=yYnw?9u?P3Tcw)1Ur`zmWZI z{}K6(n&&@6Znts&$Zz{AtmeAaU!lj%MSuOz{h4hx$KJ-HXN`6K#yR^fP6auAn%n-{ z|F5Y0zD>7|^?jQ1DkZc2RFHqolbOn?lV-SoKEH8+`aadqj%pvb^7`8uy|AuNePHST zOW}C?x*u2iKV0?I$*GaFyrIu*!|;fGb;&$^m*qF|Gwqj^=#>7ty3mD>-PpbK;pg>F zG+sV_Snqd5ynD^JtxxUCL;LDHe{b2kT5iTS`G?kQZPEfZ}#z>7oP1;y72!S|FzVASDr4P z_ithT(dFlVs_*-E)$f`!<7-hUDC7k>SF{lB)h>~C$&f5@_z zch5odkM>X8Cj1orI&Xh*>rMY>{k!^S_0Q?|>u1%2hP6D8?R_48 zWp@4lGk0c(L%`nYne(?N^2WyFP7~w%w;&%ll-$)y}bheEHalxF=VZ_HV4=ez_-~QGS8d z$)krY3Kn$R%w4>uwoi6ni(X6d#jmQ%c>cav)!*|YQ#!gcKQ=P=mfRz8A$#$|ON&E} zEVnuA9(QI<_v;@M3-6t9bpLU#w=QSJ{7qjRPbJO%_ocPs)onL^%OAIVVt;E+ER;L3 zgnwhA^zEF!=pU!}Hg?Mk$?uD}(RiTzkNb}=s%h7bUS5{_Cd>ZgL(S~}+8<==KbG%* zegD^gi+?ZYuiJnA{r`9NO84YeuiU+F*Z*DrjmlsAJpS&+clXEnkJmpx?*7^T>+Jt; zf3JFezQ-6k1+_oc&14j+rIhhafx%+<)O3Ydz&q`s%5pg7x`0va_oDr{8s+q^4wQ_@{zeqc)lGu zziZRE+uv4k%io?5ajtipO{&?!_5U6#?2{@#8a;PKbIrZzzhoJ3-0xd(`*F2J z@3=#cO`q~ZPcHR{1Dn^r86RRjZUyNZZeEu+?UtjTOvRPYj_g8{ca=?O&Im5=yYl{_ za`XBl@>jcMf7NVwyEtCv^xmJs0UMbu%}O6Mo?rj>M2F(LgxHdo!ovH$hWhjTIOARO z|*!CJ!n-K&AS}fA7KTBmZ*$6u)14((u~*{p;iYKY9=>r}209Bkl5O{|)wSet-T( zlZEzYYqOfSm-sW||9oNH^x*uw%+xI?_-&_Bt zj@$A_J|lm?amSU+pN~FpiPuooza(zDYPy}ch3XPMedegI4?3M=YhK-Omy7*aJM)jj zH0h%oFYtpFqHff!d(@%dFXZ#%QE(Qw&cB=QB=wbzRw>2FZ0_!@1OVM*Zsnm#>e^OBR5{OJ>>pRtZrX@ z&L7SnJ)f-XK;fB(eG)9>%s$zK=y*j%hq*rWOLudMW|fafPax0@~D zDcw-{ptE_7jaR|t|6i23xBY$K(8mp0(_C`&AY18k_qlb)SQ0<;-2WNubdFbApyv1% z!(;L(Q`*(-ih9gHzMSm8a-PMl_@9rS|7rh~Hv7}<4$i+UhZ6TC9CzXLU%vLS3;S`c zeA{@5UAMlfu1JqR70u3V8MmpMS1#gF=5e#X6U+{{ntz-adfw=%`}fp9#nrrK%q@K> ze|hA0p9_@r`l_*Ueo-ImY@2iQg}iifl;_)|Y-!9*eG)A9@Oi|F^*_$V>v%m8ns2q` z(d+*=cfVdc;}?@1OWWu8k1y-R?tfev{-^fu+IDd zWsyebp7k>xJ2ErZA|F6;Zpp1%0?_Kf)l-LL&@;Fn`jtNFK8@u{R;(TxrAksrUx<~~t)y7i^aoc~?x zdEYL#G262I?UC}lN9)ZpmfQZFzpd{>ajtFi`dGv6`2V}bGPm^Y{DjKW_in ze7yJA{rlg0p1-g9_w~=rpG}6_pTFPNU-j?HpWJ^Rt95e!UHo%+x7JR!!c9M~*X5b~ z|7DwI^8eQPp#8@;_$hp!P<<+9&ClcSjQ?Kwo&Wy-S^Ix`|1?XS{QTyh`@HAZemd_r zEZ_V8le6@$fJc+xD`daf)~j3bO6H-mw|&utuKw7{JN6RNDt5cRbo;U$?=m>Ajo7bapu_fwxyK<~<4)caJ`mdEU^9 zFUR?op!1$9-xoOED^xtcsAYxo7ukoG_18UikegJ`J>TvbyQSW-DL=j>bJuu1ebVi` za&6$=7aa@tU%4*->V$jU(dF+weO-@7>?K|47L9 z&W~F_^Dx($mR|W>zJK#0@!BcBmp?!Mg*)4AKd2d3{pBxo#JPIT7n{s~Tj#GmYky{6 z+8TwlS;;%%Y|=Atw@>@?-l|@b`Tn8#N7L_|dwcD-y_NkO`yK9|)AMgG|Cf+!V|cds zZu=MK8{Yp{>-YWYyIJ|Z4Dx)CoOYp&~n*Z}GX) z4_b}tN*?T7ab=^wK&iQ}l>@P0< z_d{6DrSkOu6YKuD`&%7q|1Mbbr6TX_{X+5jss;bhzA05j<3!2Ye zc{cy|_w@bsX8+~5l{+dvu74JP>~#9`_m(Zvk^av#Zx#36y;Xn0Y4!iD8=vhzQd8Lb z|Ad-dO=ZI81pUnLCTjL)o2EM}+ zwLdn+c=SbD%Dy_ics z^NC;Yf8BoU|NZ_K*T?7o{<#0+Hgs)7{Mr2{K7ztlWqO-Y{j0z0zu&+2|NQ>_U;f?v zt^QHy)!*IU^RGG0o4TWDyPxy_)zr`Y-?Q#? z`Hv&*{6G7yp07D&cZ}cuzP-(@)irhhOYZgc@B8|l{dq;3eaO1H`U7k&z8|;p&-?M^ zodCbR!Xk86zgucCb~6xkQ*_vOAl?S5_J;b8Hf z`Koh2tZlYnc;5P27t3GW>Ds^k?63c2e_sB2{V)4Z zrQSdDf8YMR{JDGn#m-%leNd4^kZ@*vv`};fYpYNZBd1vh>q_20}{)qqmq5EuopYESM@MH5M<9CaH zw98Z^bk8p?`QM!?ztrZl{_Vxthuy<14Px9+Tx9#b_{T4f*^jKBAFQhQ*Eewz`z5ob zHaX2t|GX^T*SWr5miyBc&CUM*67p-c?Y0H8?aWtK`ylM;ZfQ4XCf|3}s86427VeXI zwp6b4$F`O0t@f1UHe}a^Y`6MkDfdI$F1f_`Mt|S8u$o)n?jCaYt1;Z_?>T>)(0se& zZ~n~PzI30MylmylZkw6{ndTX{oc_t}+jcbixxG(Jjnn+U2?6mR*=FL*XYN0P_yh9&ckJKa{lDelKE2g-|vX@ zOX!1EIqdoT=jm<3FTvmCldH@Ay>NJ=SaN<}eYLz>+1&m2zx02TH@mu2KGHzp*8|4~ zpV$2OR{3vr^O{}mKTdpfcoZByt?Jf-dE2fQo_VyGoxifv>eGjfiTAtw_uD_~d&S!S zOSk4%--n~j?E6!zP3mXc|Gi=L+1|>&OX7pS+Oc-y&r5#`ZA#%gabWWMM+^F=zdjbg zx3Bc~g{Q2~9*M|Ho|vx9r@BP<>CxpSg*T^LeULlqp1*bCwoUdQKmUJxsZc39wkBtH zgXUKARktNHk8Y3oxVd-FXL07ZQvuuicm3$|l}S;!eL{-N9fe{4Qziu7F5Jp03(`~Q3p{TY7#K4fs>+aJ*C z!RC?eX%z$sL}5Qi>FR3CU=m zYd!v>(s0}5kFRdD>*zO5XAEp_mvNDe{P}IA^L!SyZYjxEHaC3#_QN-SY_0!S{d=(0)3*M(Ro1_Ye?ZeW{*M>_6bsz+v;1@Z zb?49TXPTS*&-r(5RkymhBv|9!mk{rt20>(c%`t$M~&(z{>zU-IXfe@<__ z({0~(+wk(VC$e|{OK`LJ&HI1l>SFntFS7mrCiU~wzR2K~ds4IZHrrzk`P%`He*f3} z$zf+0z59ls{`2<|UxT-;Rk!=P_~+^4d{qf6?N>?PRNt5DCFddgyXa5wBlbUEkN#;` zD8twIaVc{o$3BJMAzR+giBZ{Ca_h^-A3-ZG^EW>3kJw}LbW8HiN6PGhNr%lo{rfbJ zJHpcNi2J0F7~(9-p8HOku#+%af!|21-y#s^Cdn!{P{Se&o}b#=5z9~Z#w)r zS58;0`Snn>&E`Y@v-SUL{=ZVvp8L=^?(0NRZ|Pt1(fyB-oo#ZQwrMIp|Epp5>1h3% zzt{i&uDUID`^V+4->d(a#@TH8zZ)#)=gUAg}L{fV{D+UVpdts$U?Izd>)yzIubOnlBI5 z{&*yFG(P36ySVftW&WGXT7u$ge|)*T{ZVrJPfPYE2a0Sm`|ad5x_`aY#=rE>lRpRc z^L=CIduya3rh4v4V@09Wz3I&Jcjdl*?d_x&Z=-L+Y0GJolK*hC!wd1_)93wITrEA_ zsIxzB(vK5e@1HH^wSUfUXCLMCLe0*`@a5({+gC5F>TgZ>ab@e&A0LihZ!7kwc_L)| z`ds|)6JFYOn;v9KTYg;my8hKEjrlVo-RG-6@3(82bL7X7<>#39GR5D2`9E{#kFWc+ zA69_(@0tF4Q}}7|$Ne9-KaW5E-}e9KD=&YpR0|S4w+Xp}DxEKXQq_GRrNQ$$w+Gzk{7x88sR9kNpWXl6 z_T!ts&3m|iW&ArDS99fm!jAHl)!XH+a@+luv9kJ~c0RA!?DN-n{Y9J4$x9j>-I{Vn z+pad~k#X3qZ`sa!7XM5>{!?i^U(FXgqxz3q9e;ZKarUe6KJLdEIPd0i{ofOl|JY9} zQnD|bu%B%j_q4*#FLJ~Kwgm?F?P}q1iPzJ+r6=^`&w>+eg&*y^*53*E%X{DOGP|l> zRr-$;R&ieQr@sGF+;_t3%G+jjyV75MAO0pzt$U(b>sGq@wD^3pC1-EWs_*~s@b0Yo zTcWdr_D26Wp*r`Wby$ z*Zx;60KUS-Qrt_rhjrW=SJJTQXraSz8eUDY|{;EYE zw?p7h{dA}O`(^6u&;Gsm`}{xOuQ%VXpSP?3nfwpi{r{W43;#X8M`rr(4znXODksgc zS1sDPukTZQMP~TyDW5*K+y3aZpB1iRcjix_pzX(p@=xbKvS_RRk)SYJ#qR0NKj%Lb z$K4Q>|95NKd!G4*s&={0`}N+p7TP@eul#4>ug{sK=ltb1>K`)vG)dv-z7I8(`&^z} z+j+@N{1NM?3uS>nK0S<-zskM#$IA2nb+oJ=DQkko-<{_%Bx_CeF@U$6gt9+mNDr(L~N{rBSk#?R*)f|mqdZ-UZJ zpt-j-t@rAm$!-QMdUD@af9LnV2QzPj2Eelq8gB=6m99H|UT?4b|I=>EYVoS{Ki}`= zpNvYJtFrdTzZ+iv7Rgz?{`q*<=9ug98(+Qo6Wm^C(|rEM5l8VuV*P*4*vsx;TJ$P# z-H&58qCYS9FVZ{zX!ZOb3CaBPl3BaWzRAv>(Y*C!VAuR#=Vt$t_x1VUzeqX#aPh~V zOu3(fY8GCbdQwO}!QIKsGd6BbX<_ZnDYsbar-u4Ve${*#{c+;t7su74qpe@5@7vb* ztY5d}=<<-heWLPmOKKjiR`2KCbngDfCwI<$2xjwny25$O(M@$G|7BjMe>8s(Uw`Dv zf6M=0{_ED{e9&-SDf=V+pM0$T%=(Y8rjIS3$-i^Ops>3COg<%Q@(q5^E%vkPlbV-* zEdTBd8pZy;<=A}NM<)N?>|1aR+$DPd@9+8I$(!!af5!f+`o8?^`nQ$SD_6YkC_5kT zH_P*fa_6`3Yk!cmFO%C_Z_{;t*Uqnh?XTbHns2{m?d$hq`>Jl7`(Zw7dJJRr zjRy#Y@Zd>O;1(dfkq{^)zw*@z(ZOIsVB&uKL4V7pZZ7l;@S49wL-~)r>)GMsMh_8&pEaD=lUNv z%6c9x)_%4k?{U+24!ci%4;TNqq4DqEx=MY>(B3}vbC2XVF8-MQYr)6z^Wx{u-Cz8< z-}K7o^!wSi^~?07>c5*_{IUDF^33}0e`aR481DcLi6p6A`TYIIzx#h4e}B)vX8N=E z-;tn{7ry`ho1bDI7yf+yuK(Hm>NP33HD7-7*G;jj`nTe{$3O3w{pJ5I*K7YXzPI`N z|N9rqr`31Xw($42TRL>wTR#8ozjyOb<72pmK>`eTcsP;pv?HR{ET>Vyn7C<(Bq;+rk+i{XyYW z^p6)C8e(Jm9~tYV$R1vi_t>i@=W_qw=+Egj=|65U@LS%pd1TG@^ZcX5>UO(qJ{@?F z$d~@3|IGh+|BoKO=KkSo;+-q9#<@BBq~&=wbV0VpoBlhq<2E?ifOZ+gKmTcO_-XUc z{Lkl~-3QI6Uj3a8+CBR1-%SwXSFW&ozxwm>DLnuDmz3B&e*W~tV^&N3ANvyGWo%wA-nG}p%Z#b!SLMPfHa8aW ze`>dTdSu~y!J0QuA1&_n?TG)s^04)x_V@p{Kk4$H|Ko*~-Ve+A+b0ezpZnuRdCixP z3Ee+~>sjV+T==*`X#TEmn)Xfa>zBT{(Khq6#luehc*`H(KYVO`?CgJc&i~CnZX6Z| z?*jPtw^jc}ykz~Z|7HJ8{+ayy_UEVV{}(@ZKVSJobi(VFqOOv+@vr_)<|+FB@5H_xU;l0dHK2<)-^;9#eZ9AS&%b}I_3?lI-i-M$^M`xP zgWv!6{yiV7{C??+wcq=zf2`BL9(wM6y=vxtgZi!i-aSly{pLIWe*1fe&i`!YwG{Iz zk)Lb7tA{ly=2vR({vQHO{W9N<%78{MRfWPgnZ-MK6JnCH+{HN6BQPifHM>+Bz2N`>p+NOaFlrTbfVB_kZvIW&g?iv)2y1=<(&x%b%ZXe|it< zFMyAz_*=cMvHE^|$Mp4o{$2cW8w!8#{dnE>hv>)o<#X?EKH65#J%2M()ssJwxtHvI z{o{M4HT%B&3TMlEqVdvqA{B4_Y^ZMQ-}7V2_GjlM6zWPs`ECpBO8;@f_vUK%&YZo`uKR{A%^y>GY9 zxA}1@_)@!E{}P_JTi5NWo$??<`MB5J)=rsiThck@V{Zk03q1cZIQ-hB$|UuVPnYle zrcwOwmeiZm5^Ie~je3oc{Iy$A8sne?ez;nEtb=`)Bgc z3_K#`eI^GyGtl+)=HJ(Ez&+G(P+$KDwnlA{(ABKfBJ{c-`~&ecmHtL{M>D$^YO1H)Vi0ZzFEBIX?@KizOt>kGk@G@dU057 z$(+(B4;`o7QxE%p*#6M={wCk_ zii|lb_neOOh99|qZ2sA~)1gy-)8AhBVH|U?D&x=G>_yMde{nv4AGGVmuKs`iKg-9R z^`Jq}oPRI#ZtQ0_`#;Mr^PlP8f@$?1Wvx0(i(mi#Y<*7ty4K?#9Q)o!{H^}Z|Lntw z@8$I+N7kA3Kl{&NSJD5({zmDYpBuEzY;t8EHXom{rI3IA#w7LQi{B;0KfJsQRF=Q2e{$9F|B3(o4;E|hGYk7~ z{r^b)lfU-e_HCPfF8gu)_5OeN{~u<)UVr`m>+hg(c7DU%pp}ir?SGo?EC5&DPM`PN z{?Ge&@z3L{-`8(ETJ>Mj4wNWBa~bQO%|E*z)GK_w`rZ6BTf^)Bf4FU>dS6e`V2AyI z&xX@Q?#m0k+;3k0HqhzDqItP*RF3J^?B95=d;g7w4ZgM??V9&LtG`j?*T-w~yts{D zzGz+gzxhG+KjPz$$=mgw{!p8_FU2Z`V_!sT?&`-%j^gvUg)48Lh$t_-*k<(8=Ft40 z-|=r2ueKF4kdELvZXO{%QzrUR@?$x>Z!+3u@tys)A0(|U+&`cH$urTpCijK#6NTI9 zpWUBL{Hd&dclQ5Z|K^7Gxk}%tF}I7jZ~6ZbXt(tBjVpfF+XqYiPpkPb=R|Q^?dKCe zr$4vP_C95-{yMfkwtfx!ir?#hpSN(G>Cv2T(! z=c{rJdLRx8KyiuD*V^!*d?_ z=u65!ZaB8@-SW=<%R!OXJo1*QN8_K*PnLWX{?DgG?=#D|%-`9s zYw)o7|NW154u$I%uIRR3HN7yRSKy%VVqhR6FDU#^53+Qt|h{!}7KNi{tHt>g{&_-}P_X)AG*$vGt%sV0!J3 zG#CNxYzy5yB zKW%?jw(iy+N%1d|{};dC{@Z>3f93bP9RADM8U6Y&@kjR?BVr~Ko_kJTRP|3fEi)z4sHkTdplaSWOK%TzK>;|ce&eV<}v^4Pq^`@0XB znO*R-OnI=;;)ctW;Crp+H^gfyPjpQzd)b~Jf6JL~QOLPpf_Bn^b}hCVABC@1UhF?7 zS$9ft^P}7LyS6P*T=!J@$B9n~r++q2eq3Af?@?5pNc{ov`X2|rNB=)>x@%qib?w(j zni_G%>p_d*K`p}vIu^hGz1e$s)6eJCpZ))yuKauI_xhh3pBg{6 zw>rPCzPR_#JgxIHCO_~0I%U6kea({^ow?%Q9)K3WoADdD|M;N#OR@4*SGH!{BmcAe z-{|xGxP5Z^iJ01h)AXcnxvSi7ohmI|nS04!-bL2Q{Pn4{nLj>+?`rR_ExeHtkdzi1 zQ<|avZ`qzdo;6?c&i=pqqvyNmk6%A;{@gDlzhCVC&adJB_vb-tUXy<|#sAFznf==b z+8PeowKspB{pWq}Y^!(H<(F4i+}R6mll-*)-uS!4_Tat5dYfN=J?Dbf`hX_$KUVKB zRP{dpbiGym(PEx$`?=&}3^)H1toc5z%;;THp;*0rQ~%oZ$M%nldOA7dC)JzOKX>r7 zPd7diq44vX{M`S`{=Dx0aq{=-S5~jr&$@Cj<%jxiy?}q(ym30+{EOyxw;y%c-~V^o zH~xvfZ9^&9lduGX^1|NSrR z|0p}&di#fog}iGY*NNP(&@AR$YwtxO#>reW#_&?Y8|Nr$r`Sudh}p8h*KXZ>62(7Nqee{%nn)`B|_n$Oo)8fAYDeZK$xOM9XJKWv{U@3(Jw`cLX= z`{Vp`^3weeKEIn{yso)(-;&tc1u_5rHLoe^kzG`q{crY#`@fFM_y4>0^XZ-$tGU~D z6{jn1hPb0PMMgFc2FWkj%U%A-2!nyx}viiPnpV&Q)@9&efeQMv-4_Yr! z%W4;K{*iGSM{GxB{k8v=&)2+uAN@}sw4?U>&L7jO^;(7v=qKcDZPSik9> zEq~?b_i_LK2&mt4f4qKUbnUfOW^)hU{QKJY$Aee$Z|Yg*-?x{U{pDSaqbDvLdnU7R`OP+qb_4Lv&a{Hu%tesP( zxpO`2Do!2RKJV|9gEegOktJJGe{}!z|NRe) z)t*m$y!fB!j~`2aT)zJGe~;_C+3WV7KWhK?#IB~I+MUlIM4zvF^|k)*`E2EI7w%8}|GCy?|NnZke}c^RoBw^(HmgwZ`W#)$cfab}>hC=NCd$5%fB0JZ z*V^?z&L69P^T&8e@c)^d|7T^KyWQ$6UL!t%dt#lKVD2xCn+vi(EIfa78=I>5)T$F+ zk1n*GZ?^e1(ZA;HZ)dH)6OtF+XJEQ-*!|vK`JaYeRl-O6+Y>GNAK6>|PyAQ#?@@ip zzy3$_fA0VBdGD3~?_)t_`+xV3`#&!K*j@_iO#D9gXZ3S`(AeAl`};wA-QNDZ{b%t{ za3lM3&6jA|`*QDV>)(9eURgKE-Q#@Cf6z*u$HqU~_sj3e{+nq2_|dQ5hZp~r-+TU! z{S5Ulfq(Y=-(|nm^`%Xi%-`LgHnOjr{%`sDZAG&`?Ei4Q^FMcS?DG>z35FjpMH*aD ztaX~%o%_1S{)LS0ye;Z(D{><=i$mPy{_vQ6(wTphojvIMC*>cR?)ACHj?dpR{j>d{ z_`mD*w&k6jUw2%8-?z7)@BWN?8{Yp(_Q$z}Ka3w-`@iPIPJIo~vLlyw;;(Lv; z8Z^#*zwlql-?u+Q{_cN1bq)85kNZE`Cm#u%TYBm9`#=9C|IRr3|MGlLrruk>A-d}S zi=Wol9YMSOD&6F+MrwkheNJtCTCIfptonz&e{0VE{nGcR*!K9o)BhhBO$&dJ+-&1} zzxP%9BmQ5ve!Tf^e{2Eow}W2qBmQe2i@#s?@y}Ob+nEZV(-k*f(1^^KGNJpXLerY= zXv;4PLfvPtY+g6z?={WO`{f+ue*d{%HYGFrXnM~Ct1Vkw^>ROI9<`bEKkK!e-M6s0 zqM#ze`k7+g%+uN*TX+asd-?VP03n)Iff4VD6Cm{^oz&c;ouJ+~ZYS{!ff8ofG^o ztyymgZ?4kmi2t649GAXi6zA0y@8gz~`>QkWj?Jl)*V|O91aieBzeQB&IeoqBGG#)| z6Hc!Qvpej}rx(3wT==*8$EoG}b{#&$I{(3Eo_#x}-Dt{q{-^%~Z^;Skb?MLb*Qst> z;QpciS^S^%)&IZ#@8Ml@eck`RAO5fUarx`@uitNezFvHM(q5jge|FaYEB{~mzx4mv zii@B3KesPG0;+p6{#hq0RUdq>lYZa+%x<0KX`ewo0{i#1_1WOn4Bu@G|F!;^ZE59y z@3-}LdyDlw_D@{qWLnnUn)iEJ^H#yP)jw7)j;(2ubJ_os{hyPY<Y`qezu z{GWNKap_%VoheHew=$h??fieC@%f^V^bOnW#O85}%9YBOOn83W{E1!jdONd?k8cRc z>->Jz{KI>O}`Ka*!{N%o0&t(gbGyd~-5a)lSr%<8e zC9a<IOVJ`FME5~2j|ET}`$9~tpxTpUgo&O3ty8^ZuUy_wVBq|JN;++5fS>Qf2R_@AAij zem!N3cakl7%P2OdJ5YY3qyiIHDZlg6C)&*O*&h{ryU_l8(Q*@qrT_l(?JMj5&~GLp z(Zg-~YKo0OE>m00#v|MLcYkmp=64B8PuOAvA@*7IZ#I66{l0#l{qBCy{#8&}3CVc!pv~Lwc3zxSe@ia& z*SEd%gz9a7|NVdQ&*b+3Z%&5)|EFM=Y=7$i4F1|VoEL0so=iwzb7S+`eHLFFA2bI> z*)%YFKbN~;ud^hkKu^b8Oro2=QvC6XI5F!|@#WpuSo5Q$Ph_=Uvif_fD|@BhU$*wZ zzr6C5g~9B0v-OU@s9~#qykA&er>^9$AGq27``_+=oo3Z%l;=7AczXBa^55%!um7EY zJ8$}&#lQ1^E&jOtBaTyY#WNbw%Z)-u+_rEr_M&+ORKa+m~-ct4HHkPMBGxCMYp8JDGPV7(YomKx9RH=WyFArMo zl=JTN~_Qn4eXaBQY zrT_P@>;81kw&IENe|(wFXVb9RtG`mA_UNNiyvegKwLVYV%r9a-z0~W8g1Da1B{m=e)`Oos7=l31Id-~1eWB)<0Hvh|?-#ee%zuxk*{pR(*@88d>-2O@a z^Pcc$^-o&&so$TOocQHSx4Z17xBn*R&$qhOy56_s#dhDBMT;YMJ!KUB8*TLV_g&^6 zXIZn?=hmJ&^kh@+rKg9M-FNk!TX)jeIdguu_1lZbA19qRE7f=^dEB-pM^Rm_Ok#GK z4zJAmW5@0OFMZ+uq5alTc~DLE8oI`3<`i4u|DgHj8T?=Vq?*5}yuA2lJg6cDRl%Sg z0~5d3zrQ=p{d@ko+4J@rmzn%eFg5vq;_s&u-`B&^WY)j075`k%OtG6?|KNLieSL+h z-RB=K-s``xs(%((b%9weo4+eu$L2v(@eiR(vX+z8 z&1cVMvHZB^a+z?jxc%!Fhrb`bu_BJc^5n<6huquhIAU*K5uRLk{F7JBGlxqIcMqN4 zDDuDbJ*aR1Ev3u+^Y-WE&);qSXa2kRXZ_FjJrmFFpIyKI)xVp+-C?J4LK%hM{_gy~ zzW?t26PM#Y{{27o-*>sxGtcc3Wo2$n>Ga&+V%NVv|HN_^_n`mR{!A2`FwENE4hsPY`Ce^puFMZ}_dAM9Ap)1={es+M& ztpv{xl~We>=`G=Xwf&jCozbg^I#s(FkD|ot>$mSYUcT=?Xkk!o`pv)B|31HY3A_XE zc`am#)x6!)AhplmS-F+(ptQS;ss;w>N!e-O|yKZDY zedH!4og?%^MfOVg?psSrj3pd4+3w>1_|W^s%sVP}HUCaK{VV^qIbP=Ygo@V{ZLbvV ztS+toxbd{b25!r9H)qw~@0|Zn16*@ncldt)UE{I&cg5HD{qNmx`@ia+`Txv+=E*sr zRJ5jX$us%g=CkT!?!W*0uOa^5k>B;7_dlx#?aej)KRZ3<^ZxzD{~y2ol=pd0^zBmz z{C~atDZk&+;8^+Je-l41pSOSgjQ=)G`8}TZxBXkfe(mVbB~?fLZ5}+^=#ul*G`CVG zP0TjeoYm%59+&y4gxnSx75lG8x4QW0yb{Qj-%zo^b){VHyg!O1CgxEegXf>-wz^g5 z7hL>LbavRs*Z*Ve*UerBUFbH?{hJLP@q6pP{=52n`gfh;j(hgY)xUVZpI_YnpgsNF{d;#c zPkNrcy3zUf#n0+r&&KPt&pa!(bj!2-EBT*E+7&GouWXneP}R@Q1R{SB*)2#y`WqP4+R$Q;r4xIJ^H_k8r)p&c0doaqr<(%2)euA979> zAKiRZVwDf*6waM~v+CbSx_|D!D}JR%7F1tu6zh>bYyW@EpUK~+KDU2=>D%5P_AcA4 zS8Y`I8pHo7N4vW0f4$gz!zpnu7~>*d?v;CRq2?#v?yZN;kk(E9 zbN$`@JB#MU{{OkVRvo~d5LlKaXzc{N6afM!ZyelM|`tBE;@hXf#CK_KQn~q z6;E{Uym#}@MR4$&e-HkCzsIoG{yKPl6r^6;|IPHmpW^ceW5v(zU;jR5Z#^iXq`$xa z_g_J6SkHOA>G_s_|6O{o4?{r&f)yr$l0-~H3|6F;9zxSRiJ{hz-N-~163)_HyY z!T+G_k9_sCpTR7*}tB0!^3XZmaS`jZpqw@Z{j!G zaRxLDQ>yF2FmeAm`TGthl#a(-I9nN1o_8|-dHkQd=OOd-95T&P_1|_}_+fos==_X% z_Qn06%^;9Pi0|*&+elkVt_i-kyZ+n1tn{Ui@ABoj+;ubFcUD z(H(ETpO1g;^7(vi{syBv>QmOA*#BjH*~yy=D+7Cy4y{_oZQoq4x6I4+}FrT&me&fQQ%^=@gzi(gt|JGyY z_wn`r{&s)nGx~2RKV|#7`u71}?0^5e*mz`--aMPzr)t&hk~L~4vquOlo&TKC%y#yr z-dD#`mwea}6a4GnodeBVUtWCHIA!US?YAbcf3v@>fBpx?&uS5$Ote0o4@;?Yq@8CQf%Gl)_eBV|4sZ~{jGl2e{a8i z*?+TRRr)`}_wTQN`se5@?d|pZuQLB@_`0@PgG8Yqt`iZ zsk&R!4Sb|O+&S<_V}9Azsk_|2f~J&3y{`vfzyFn0V1EhteE6bCZ=TQjxaj%$t?_Bu zzcgzne+9KnZOe7<`h!9`ZOwvvkfV}b7hkKGS$#C3OXcgE(^a6B`8tqU=kMSD?hEP^ zgHG_PSXZ?zO0B+X<@5KiX4f13e_$`A`PYGe#+N?_7M6Oj%boas)Nzkm%8D5Wl)8J0 z*yK`Fz9^Qi$o}lH??*+(q`IXoUwZeg`M>+$uK!Z?J;LrEw|p!==9jFtcAkCld6~81 z=Oz9;+4bsYvw79OU1oQ@A+47ikDmnEy!~mNyxg!k4CJgMy^H@ol00mc`ETQU(LW3G z?|6ee^6k&v$43HfUjFoc^5T1Vvf4gS>Hm21PxjX_P=js{+XM7Xe%hvk5}9R9j=po(D=x&9*Jt6(!F2)?6r&jICGStrIY<3}^;y+5RsDOH zz5Mz67~yrjpeX8HUVr0G<^{+I1Fx4-_6nT;rnpRvv=c0Ofn{(9cd6Or$K-u^t@ zR>k!HjMoQiy!YS8`*-zE_f}A@N(Y@506NrcR`P7^8|St<-kl?D`5M#?Gyh-q{LTH| zv)kWpy!&VO&+nUmmj71|z3Zy`x>5ceBfm4#->BthkKVTP^00jMY05-*>&hE}{Y7v6 zBVU8(>c7<<+1GH#{mRpw=}#{D#eKj3ZaZjcdTITWxQ(D=I{nYj|0|Oi?_gWMO#a7e z{~pOt8S3kwzu%V!8dr<`?*2~nH8hgX3w~q0^11w1rh&SJj#=yB`a_?Ol{e)-zJvcC28|JM5-#HZL@$^SJmNM7mo*LLxBe>=`sDEwU} z|5f(wy8YSvbNPNhHLhK8|4Z`q`0w+pJHB4}VO-w(yY+A4T)FSPzdi0>%=>e*cIo^t zGwrVAe+z!)oU;4hheKQCzslAi40))}G5@9W-(~WkOmW9~&D3M^dp5kEe#iR5UGsO! zwbvny%BuSt;uqX;ekc81aA`Hi&13R=3f{Wc9AkcI{&&UujPk#+zjKRk=%W}keZS$q z9sE)MoaGcQOnud;%wNIr>HOlq^QSxT+1Ysgyk@DfHrVNehun%!6CPfix3p}c{=awW ze`fr<sY-`>~-7wn_vHp-9dMoW3t}gLmxv<{kA{GoaBCt`{#!h-~YV* z`8sMrON4mP`TH+9Yn%EjY|3@-hC|}&?ayo*g{qW26Zrcf zo2UK1zi;o-V}i^9B6t3;d)#d?G3ir!0n<9R?NR;n3|mW<&ez;>?ces*-*MBaqxvN$9ujpTt zn^ips&MS8Qd1F_^>v^Y7Z7%_dmzABn6H~eV)?E9!_S2=$-9LB#t^VoGZ$i)YpRfP_ z^v~CK@$)zZ6h8Q~Zu9&$`Qu;Z-#y1sj|mj*V`}OxAm*+zWMuq zUf0_BdiAtxS6^Mb|5Y>o(@LG>SM{>5qi6rIH2M_&@6`REN6)-HDuK>wkt! z+xT^V-`BOi|KucpYS%x_*DUCfugQ`c*>PT%+yfBe@qwfg>^KU4RA+CF8+ z&mixen|A%#YxgwUZfa`I-}TA0*^~FXyZx)vt)Ct5#l*t#C!(?3S@w|Gw7+rr<^J+?3T+aB+KGVOPtp5K^}XA=LU|Bt5kEaCT6H$UHw+gmR6 zyYJ>_y`RN0Wz+4CFWPyrW}^M4 Date: Thu, 19 Feb 2026 17:01:27 +0100 Subject: [PATCH 13/22] REVIEWED: examples: moved some examples out of others --- examples/Makefile | 7 ------- .../core_window_web.c} | 12 ++++++------ examples/core/core_window_web.png | Bin 0 -> 15094 bytes examples/examples_list.txt | 6 ------ examples/others/web_basic_window.png | Bin 10297 -> 0 bytes .../resources/shaders/glsl430/gol.glsl | 0 .../resources/shaders/glsl430/gol_render.glsl | 0 .../shaders/glsl430/gol_transfert.glsl | 0 .../shaders_rlgl_compute.c} | 7 ++++--- .../shaders_rlgl_compute.png} | Bin 10 files changed, 10 insertions(+), 22 deletions(-) rename examples/{others/web_basic_window.c => core/core_window_web.c} (93%) create mode 100644 examples/core/core_window_web.png delete mode 100644 examples/others/web_basic_window.png rename examples/{others => shaders}/resources/shaders/glsl430/gol.glsl (100%) rename examples/{others => shaders}/resources/shaders/glsl430/gol_render.glsl (100%) rename examples/{others => shaders}/resources/shaders/glsl430/gol_transfert.glsl (100%) rename examples/{others/rlgl_compute_shader.c => shaders/shaders_rlgl_compute.c} (97%) rename examples/{others/rlgl_compute_shader.png => shaders/shaders_rlgl_compute.png} (100%) diff --git a/examples/Makefile b/examples/Makefile index 4f86ad5c0..2db2d8453 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -729,13 +729,6 @@ AUDIO = \ audio/audio_spectrum_visualizer \ audio/audio_stream_effects -OTHERS = \ - others/easings_testbed \ - others/embedded_files_loading \ - others/raylib_opengl_interop \ - others/rlgl_compute_shader \ - others/rlgl_standalone \ - others/web_basic_window #EXAMPLES_LIST_END # Define processes to execute diff --git a/examples/others/web_basic_window.c b/examples/core/core_window_web.c similarity index 93% rename from examples/others/web_basic_window.c rename to examples/core/core_window_web.c index 217c47fbc..3b1b50748 100644 --- a/examples/others/web_basic_window.c +++ b/examples/core/core_window_web.c @@ -1,14 +1,14 @@ /******************************************************************************************* * -* raylib [others] example - basic window -* -* This example has been adapted to compile for PLATFORM_WEB and PLATFORM_DESKTOP -* As you will notice, code structure is slightly different to the other examples +* raylib [core] example - window web * * Example complexity rating: [★☆☆☆] 1/4 * * Example originally created with raylib 1.3, last time updated with raylib 5.5 * +* This example has been adapted to compile for PLATFORM_WEB and PLATFORM_DESKTOP +* As you will notice, code structure is slightly different to the other examples +* * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software * @@ -40,7 +40,7 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "raylib [others] example - web basic window"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - window web"); #if defined(PLATFORM_WEB) emscripten_set_main_loop(UpdateDrawFrame, 0, 1); @@ -79,7 +79,7 @@ void UpdateDrawFrame(void) ClearBackground(RAYWHITE); - DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); + DrawText("Welcome to raylib web structure!", 220, 200, 20, SKYBLUE); EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/core/core_window_web.png b/examples/core/core_window_web.png new file mode 100644 index 0000000000000000000000000000000000000000..32886d665c07f38031ab8ce00696ae2a718d8d95 GIT binary patch literal 15094 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 rcxALa7%dM*%Y)JKz+i&p5A#a1(8!d +#include // Required for: NULL // IMPORTANT: This must match gol*.glsl GOL_WIDTH constant // This must be a multiple of 16 (check golLogic compute dispatch) diff --git a/examples/others/rlgl_compute_shader.png b/examples/shaders/shaders_rlgl_compute.png similarity index 100% rename from examples/others/rlgl_compute_shader.png rename to examples/shaders/shaders_rlgl_compute.png From 781c37972a56e977b01e0a540ba7a96688eecdb4 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:11:02 +0100 Subject: [PATCH 14/22] Updated examples, removed others category processing --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 13 +- examples/examples_list.txt | 7 + examples/shapes/shapes_easings_testbed.c | 23 +- .../examples/shapes_easings_testbed.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 165 +---- tools/rexm/reports/examples_issues.md | 7 - tools/rexm/reports/examples_validation.md | 9 +- tools/rexm/rexm.c | 30 +- 10 files changed, 638 insertions(+), 190 deletions(-) create mode 100644 projects/VS2022/examples/shapes_easings_testbed.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 2db2d8453..a6b2d6941 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -578,6 +578,7 @@ SHAPES = \ shapes/shapes_easings_ball \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ + shapes/shapes_easings_testbed \ shapes/shapes_following_eyes \ shapes/shapes_hilbert_curve \ shapes/shapes_kaleidoscope \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 3841dff29..0e9515382 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -563,6 +563,7 @@ SHAPES = \ shapes/shapes_easings_ball \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ + shapes/shapes_easings_testbed \ shapes/shapes_following_eyes \ shapes/shapes_hilbert_curve \ shapes/shapes_kaleidoscope \ @@ -917,6 +918,9 @@ shapes/shapes_easings_box: shapes/shapes_easings_box.c shapes/shapes_easings_rectangles: shapes/shapes_easings_rectangles.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_easings_testbed: shapes/shapes_easings_testbed.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_following_eyes: shapes/shapes_following_eyes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 6b2c1950b..d96ca5c10 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 208] +## EXAMPLES COLLECTION [TOTAL: 203] ### category: core [48] @@ -74,7 +74,7 @@ Examples using raylib [core](../src/rcore.c) module platform functionality: wind | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | | [core_keyboard_testbed](core/core_keyboard_testbed.c) | core_keyboard_testbed | ⭐⭐☆☆ | 5.6 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | -### category: shapes [39] +### category: shapes [40] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -119,6 +119,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_ball_physics](shapes/shapes_ball_physics.c) | shapes_ball_physics | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | | [shapes_penrose_tile](shapes/shapes_penrose_tile.c) | shapes_penrose_tile | ⭐⭐⭐⭐️ | 5.5 | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | | [shapes_hilbert_curve](shapes/shapes_hilbert_curve.c) | shapes_hilbert_curve | ⭐⭐⭐☆ | 5.6 | 5.6 | [Hamza RAHAL](https://github.com/hmz-rhl) | +| [shapes_easings_testbed](shapes/shapes_easings_testbed.c) | shapes_easings_testbed | ⭐⭐⭐☆ | 2.5 | 2.5 | [Juan Miguel López](https://github.com/flashback-fx) | ### category: textures [30] @@ -270,18 +271,12 @@ Examples using raylib audio functionality, including sound/music loading and pla | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐⭐☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | | [audio_spectrum_visualizer](audio/audio_spectrum_visualizer.c) | audio_spectrum_visualizer | ⭐⭐⭐☆ | 6.0 | 5.6-dev | [IANN](https://github.com/meisei4) | -### category: others [6] +### category: others [0] Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. | example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | |-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐⭐⭐⭐️ | 1.6 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐⭐⭐☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | -| [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐⭐⭐⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | -| [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐⭐☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | -| [web_basic_window](others/web_basic_window.c) | web_basic_window | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | Some example missing? As always, contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) with instructions to start with! diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 196fd15a7..0ad7a763a 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -96,6 +96,7 @@ shapes;shapes_rlgl_triangle;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Robin";@Robi shapes;shapes_ball_physics;★★☆☆;5.6-dev;5.6-dev;2025;2025;"David Buzatto";@davidbuzatto shapes;shapes_penrose_tile;★★★★;5.5;5.6-dev;2025;2025;"David Buzatto";@davidbuzatto shapes;shapes_hilbert_curve;★★★☆;5.6;5.6;2025;2025;"Hamza RAHAL";@hmz-rhl +shapes;shapes_easings_testbed;★★★☆;2.5;2.5;2019;2025;"Juan Miguel López";@flashback-fx textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 @@ -211,3 +212,9 @@ audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@ra audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 audio;audio_spectrum_visualizer;★★★☆;6.0;5.6-dev;2025;2025;"IANN";@meisei4 +ei4 +ei4 +meisei4 +ei4 +ei4 +ei4 diff --git a/examples/shapes/shapes_easings_testbed.c b/examples/shapes/shapes_easings_testbed.c index a3ff23a7c..3f4f2528a 100644 --- a/examples/shapes/shapes_easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -68,6 +68,15 @@ typedef struct EasingFuncs { float (*func)(float, float, float, float); } EasingFuncs; +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ +// Function used when "no easing" is selected for any axis +static float NoEase(float t, float b, float c, float d); + +//------------------------------------------------------------------------------------ +// Global Variables Definition +//------------------------------------------------------------------------------------ // Easing functions reference data static const EasingFuncs easings[] = { [EASE_LINEAR_NONE] = { .name = "EaseLinearNone", .func = EaseLinearNone }, @@ -101,11 +110,7 @@ static const EasingFuncs easings[] = { [EASING_NONE] = { .name = "None", .func = NoEase }, }; -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -// Function used when "no easing" is selected for any axis -static float NoEase(float t, float b, float c, float d); + //------------------------------------------------------------------------------------ // Program main entry point @@ -191,8 +196,8 @@ int main(void) // Movement computation if (!paused && ((boundedT && t < d) || !boundedT)) { - ballPosition.x = Easings[easingX].func(t, 100.0f, 700.0f - 170.0f, d); - ballPosition.y = Easings[easingY].func(t, 100.0f, 400.0f - 170.0f, d); + ballPosition.x = easings[easingX].func(t, 100.0f, 700.0f - 170.0f, d); + ballPosition.y = easings[easingY].func(t, 100.0f, 400.0f - 170.0f, d); t += 1.0f; } //---------------------------------------------------------------------------------- @@ -204,8 +209,8 @@ int main(void) ClearBackground(RAYWHITE); // Draw information text - DrawText(TextFormat("Easing x: %s", Easings[easingX].name), 20, FONT_SIZE, FONT_SIZE, LIGHTGRAY); - DrawText(TextFormat("Easing y: %s", Easings[easingY].name), 20, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing x: %s", easings[easingX].name), 20, FONT_SIZE, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing y: %s", easings[easingY].name), 20, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); DrawText(TextFormat("t (%c) = %.2f d = %.2f", (boundedT == true)? 'b' : 'u', t, d), 20, FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); // Draw instructions text diff --git a/projects/VS2022/examples/shapes_easings_testbed.vcxproj b/projects/VS2022/examples/shapes_easings_testbed.vcxproj new file mode 100644 index 000000000..b2d63b10c --- /dev/null +++ b/projects/VS2022/examples/shapes_easings_testbed.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {4250CE87-9AA0-43BB-AB47-0636548922B5} + Win32Proj + shapes_easings_testbed + 10.0 + shapes_easings_testbed + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 740d1bcbe..7b4c4b30a 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -21,8 +21,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" @@ -231,12 +229,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" @@ -255,8 +247,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" @@ -363,8 +353,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" @@ -437,6 +425,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "ex EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -2973,76 +2963,6 @@ Global {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -3259,30 +3179,6 @@ Global {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -4555,30 +4451,6 @@ Global {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -5443,6 +5315,30 @@ Global {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|ARM64.Build.0 = Debug|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x64.ActiveCfg = Debug|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x64.Build.0 = Debug|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x86.ActiveCfg = Debug|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x86.Build.0 = Debug|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|ARM64.ActiveCfg = Release|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|ARM64.Build.0 = Release|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.ActiveCfg = Release|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5455,7 +5351,6 @@ Global {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} @@ -5560,9 +5455,6 @@ Global {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} @@ -5572,7 +5464,6 @@ Global {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} @@ -5610,7 +5501,7 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -5626,7 +5517,6 @@ Global {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} @@ -5663,6 +5553,7 @@ Global {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_issues.md b/tools/rexm/reports/examples_issues.md index 081170806..a648295cc 100644 --- a/tools/rexm/reports/examples_issues.md +++ b/tools/rexm/reports/examples_issues.md @@ -20,10 +20,3 @@ Example elements validated: ``` | **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| |:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| -| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| web_basic_window | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index d8f4a9521..90283ace7 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -62,7 +62,7 @@ Example elements validated: | core_viewport_scaling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_input_actions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_directory_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_screen_recording | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_clipboard_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_text_file_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -107,6 +107,7 @@ Example elements validated: | shapes_ball_physics | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_penrose_tile | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_hilbert_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -222,9 +223,3 @@ Example elements validated: | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_spectrum_visualizer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| web_basic_window | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 70001a5f3..30ef6411f 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -63,7 +63,7 @@ #endif #define REXM_MAX_EXAMPLES 512 -#define REXM_MAX_EXAMPLE_CATEGORIES 8 +#define REXM_MAX_EXAMPLE_CATEGORIES 7 #define REXM_MAX_BUFFER_SIZE (2*1024*1024) // 2MB @@ -83,7 +83,7 @@ //---------------------------------------------------------------------------------- // raylib example info struct typedef struct { - char category[16]; // Example category: core, shapes, textures, text, models, shaders, audio, [others] + char category[16]; // Example category: core, shapes, textures, text, models, shaders, audio char name[128]; // Example name: _name_part int stars; // Example stars count: ★☆☆☆ char verCreated[12]; // Example raylib creation version @@ -151,7 +151,7 @@ typedef enum { OP_TESTLOG = 9, // Process available examples logs to generate report } rlExampleOperation; -static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; +static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio" }; // Paths required for examples management // NOTE: Paths can be provided with environment variables @@ -170,7 +170,7 @@ static const char *exVSProjectSolutionFile = NULL; // Env REXM_EXAMPLES_VS2022_S static int UpdateRequiredFiles(void); // Load examples collection information -// NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", others" +// NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", audio" // NOTE 2: Sort examples list on request flag static rlExampleInfo *LoadExampleData(const char *filter, bool sort, int *exCount); static void UnloadExampleData(rlExampleInfo *exInfo); @@ -590,7 +590,6 @@ int main(int argc, char *argv[]) else if (TextIsEqual(exCategory, "models")) nextCategoryIndex = 5; else if (TextIsEqual(exCategory, "shaders")) nextCategoryIndex = 6; else if (TextIsEqual(exCategory, "audio")) nextCategoryIndex = 7; - else if (TextIsEqual(exCategory, "others")) nextCategoryIndex = -1; // Add to EOF // Get required example info from example file header (if provided) @@ -1039,7 +1038,7 @@ int main(int argc, char *argv[]) if (nextCatIndex > (REXM_MAX_EXAMPLE_CATEGORIES - 1)) nextCatIndex = -1; // EOF // Find position to add new example on list, just before the following category - // Category order: core, shapes, textures, text, models, shaders, audio, [others] + // Category order: core, shapes, textures, text, models, shaders, audio int exListNextCatIndex = -1; if (nextCatIndex != -1) exListNextCatIndex = TextFindIndex(exList, exCategories[nextCatIndex]); else exListNextCatIndex = exListLen; // EOF @@ -1972,7 +1971,6 @@ static int UpdateRequiredFiles(void) //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Update from collection - // NOTE: We avoid the "others" category on web building //------------------------------------------------------------------------------------------------ LOG("INFO: Updating raylib/examples/Makefile.Web\n"); char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); @@ -1985,8 +1983,7 @@ static int UpdateRequiredFiles(void) memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); - // NOTE: We avoid the "others" category on web building - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); @@ -2011,8 +2008,7 @@ static int UpdateRequiredFiles(void) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "shaders: $(SHADERS)\n"); mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "audio: $(AUDIO)\n\n"); - // NOTE: We avoid the "others" category on web building - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("# Compile %s examples\n", TextToUpper(exCategories[i]))); @@ -2159,12 +2155,6 @@ static int UpdateRequiredFiles(void) mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); } - else if (i == 7) // "others" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: others [%i]\n\n", exCollectionCount)); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); - } // Table header required mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer |\n"); @@ -2227,8 +2217,7 @@ static int UpdateRequiredFiles(void) char starsText[16] = { 0 }; - // NOTE: We avoid "others" category - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExampleData(exCategories[i], false, &exCollectionCount); @@ -2295,8 +2284,7 @@ static rlExampleInfo *LoadExampleData(const char *filter, bool sort, int *exCoun (lines[i][0] == 's') || // shapes, shaders (lines[i][0] == 't') || // textures, text (lines[i][0] == 'm') || // models - (lines[i][0] == 'a') || // audio - (lines[i][0] == 'o'))) // TODO: Get others category? + (lines[i][0] == 'a'))) // audio { rlExampleInfo info = { 0 }; int result = ParseExampleInfoLine(lines[i], &info); From 0a7c7569aaf4491e80073a4ef95961d75302f5e6 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:11:32 +0100 Subject: [PATCH 15/22] Update examples_list.txt --- examples/examples_list.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 0ad7a763a..6dd4aee40 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -212,9 +212,3 @@ audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@ra audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 audio;audio_spectrum_visualizer;★★★☆;6.0;5.6-dev;2025;2025;"IANN";@meisei4 -ei4 -ei4 -meisei4 -ei4 -ei4 -ei4 From b9f16a28d358ae041b0474cb9c297b7affd33526 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:13:20 +0100 Subject: [PATCH 16/22] REXM: Update examples collection --- examples/Makefile | 2 +- examples/Makefile.Web | 4 + examples/README.md | 12 +- examples/examples_list.txt | 1 + examples/shaders/shaders_rlgl_compute.c | 4 +- .../examples/shaders_rlgl_compute.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_validation.md | 1 + 8 files changed, 608 insertions(+), 12 deletions(-) create mode 100644 projects/VS2022/examples/shaders_rlgl_compute.vcxproj diff --git a/examples/Makefile b/examples/Makefile index a6b2d6941..5f3f44773 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -708,6 +708,7 @@ SHADERS = \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching_rendering \ + shaders/shaders_rlgl_compute \ shaders/shaders_rounded_rectangle \ shaders/shaders_shadowmap_rendering \ shaders/shaders_shapes_textures \ @@ -729,7 +730,6 @@ AUDIO = \ audio/audio_sound_positioning \ audio/audio_spectrum_visualizer \ audio/audio_stream_effects - #EXAMPLES_LIST_END # Define processes to execute diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 0e9515382..3f0c28506 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -693,6 +693,7 @@ SHADERS = \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching_rendering \ + shaders/shaders_rlgl_compute \ shaders/shaders_rounded_rectangle \ shaders/shaders_shadowmap_rendering \ shaders/shaders_shapes_textures \ @@ -1465,6 +1466,9 @@ shaders/shaders_raymarching_rendering: shaders/shaders_raymarching_rendering.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/raymarching.fs@resources/shaders/glsl100/raymarching.fs +shaders/shaders_rlgl_compute: shaders/shaders_rlgl_compute.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shaders/shaders_rounded_rectangle: shaders/shaders_rounded_rectangle.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/base.vs@resources/shaders/glsl100/base.vs \ diff --git a/examples/README.md b/examples/README.md index d96ca5c10..69f6d71d1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 203] +## EXAMPLES COLLECTION [TOTAL: 204] ### category: core [48] @@ -215,7 +215,7 @@ Examples using raylib models functionality, including models loading/generation | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | -### category: shaders [33] +### category: shaders [34] Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module. @@ -254,6 +254,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐⭐⭐☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | | [shaders_depth_rendering](shaders/shaders_depth_rendering.c) | shaders_depth_rendering | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | | [shaders_game_of_life](shaders/shaders_game_of_life.c) | shaders_game_of_life | ⭐⭐⭐☆ | 5.6 | 5.6 | [Jordi Santonja](https://github.com/JordSant) | +| [shaders_rlgl_compute](shaders/shaders_rlgl_compute.c) | shaders_rlgl_compute | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | ### category: audio [9] @@ -271,12 +272,5 @@ Examples using raylib audio functionality, including sound/music loading and pla | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐⭐☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | | [audio_spectrum_visualizer](audio/audio_spectrum_visualizer.c) | audio_spectrum_visualizer | ⭐⭐⭐☆ | 6.0 | 5.6-dev | [IANN](https://github.com/meisei4) | -### category: others [0] - -Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. - -| example | image | difficulty
    level | version
    created | last version
    updated | original
    developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| - Some example missing? As always, contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) with instructions to start with! diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 6dd4aee40..a8f8cb00c 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -203,6 +203,7 @@ shaders;shaders_lightmap_rendering;★★★☆;4.5;4.5;2019;2025;"Jussi Viitala shaders;shaders_rounded_rectangle;★★★☆;5.5;5.5;2025;2025;"Anstro Pleuton";@anstropleuton shaders;shaders_depth_rendering;★★★☆;5.6-dev;5.6-dev;2025;2025;"Luís Almeida";@luis605 shaders;shaders_game_of_life;★★★☆;5.6;5.6;2025;2025;"Jordi Santonja";@JordSant +shaders;shaders_rlgl_compute;★★★★;4.0;4.0;2021;2025;"Teddy Astie";@tsnake41 audio;audio_module_playing;★☆☆☆;1.5;3.5;2016;2025;"Ramon Santamaria";@raysan5 audio;audio_music_stream;★☆☆☆;1.3;4.2;2015;2025;"Ramon Santamaria";@raysan5 audio;audio_raw_stream;★★★☆;1.6;4.2;2015;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shaders/shaders_rlgl_compute.c b/examples/shaders/shaders_rlgl_compute.c index fd8a4cec7..af3bb6fe4 100644 --- a/examples/shaders/shaders_rlgl_compute.c +++ b/examples/shaders/shaders_rlgl_compute.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [others] example - compute shader +* raylib [shaders] example - rlgl compute * * WARNING: This example requires raylib compiled with OpenGL 4.3 version for * compute shaders support, shaders used in this example are #version 430 @@ -58,7 +58,7 @@ int main(void) const int screenWidth = GOL_WIDTH; const int screenHeight = GOL_WIDTH; - InitWindow(screenWidth, screenHeight, "raylib [others] example - compute shader"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - rlgl compute"); const Vector2 resolution = { (float)screenWidth, (float)screenHeight }; unsigned int brushSize = 8; diff --git a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj new file mode 100644 index 000000000..583898f19 --- /dev/null +++ b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + shaders_rlgl_compute + 10.0 + shaders_rlgl_compute + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 7b4c4b30a..6575b6307 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -427,6 +427,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_render EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5339,6 +5341,30 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5554,6 +5580,7 @@ Global {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 90283ace7..633fcae2f 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -214,6 +214,7 @@ Example elements validated: | shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_depth_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_game_of_life | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_rlgl_compute | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From dea67fa18a3c4b345b79981c7f82a69d8ae5f63a Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:15:26 +0100 Subject: [PATCH 17/22] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 7 + examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_easings_testbed.c | 2 - .../models_animation_bone_blending.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_issues.md | 1 + tools/rexm/reports/examples_validation.md | 1 + 9 files changed, 610 insertions(+), 4 deletions(-) create mode 100644 projects/VS2022/examples/models_animation_bone_blending.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 5f3f44773..103cdc0fa 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -656,6 +656,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ models/models_basic_voxel \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 3f0c28506..663751ad1 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -641,6 +641,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ models/models_basic_voxel \ @@ -1193,6 +1194,12 @@ text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) # Compile MODELS examples +models/models_animation_bone_blending: models/models_animation_bone_blending.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ + --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ + --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs + models/models_animation_gpu_skinning: models/models_animation_gpu_skinning.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ diff --git a/examples/README.md b/examples/README.md index 69f6d71d1..2b7474cff 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 204] +## EXAMPLES COLLECTION [TOTAL: 205] ### category: core [48] @@ -181,7 +181,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat | [text_words_alignment](text/text_words_alignment.c) | text_words_alignment | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [text_strings_management](text/text_strings_management.c) | text_strings_management | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | -### category: models [27] +### category: models [28] Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. @@ -214,6 +214,7 @@ Examples using raylib models functionality, including models loading/generation | [models_rotating_cube](models/models_rotating_cube.c) | models_rotating_cube | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Jopestpe](https://github.com/jopestpe) | | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | +| [models_animation_bone_blending](models/models_animation_bone_blending.c) | models_animation_bone_blending | ⭐⭐⭐⭐️ | 5.5 | 5.5 | [dmitrii-brand](https://github.com/dmitrii-brand) | ### category: shaders [34] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index a8f8cb00c..be0def2d8 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -170,6 +170,7 @@ models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle models;models_rotating_cube;★☆☆☆;5.6-dev;5.6-dev;2025;2025;"Jopestpe";@jopestpe models;models_decals;★★★★;5.6-dev;5.6-dev;2025;2025;"JP Mortiboys";@themushroompirates models;models_directional_billboard;★★☆☆;5.6-dev;5.6;2025;2025;"Robin";@RobinsAviary +models;models_animation_bone_blending;★★★★;5.5;5.5;2026;2026;"dmitrii-brand";@dmitrii-brand shaders;shaders_ascii_rendering;★★☆☆;5.5;5.6;2025;2025;"Maicon Santana";@maiconpintoabreu shaders;shaders_basic_lighting;★★★★;3.0;4.2;2019;2025;"Chris Camacho";@chriscamacho shaders;shaders_model_shader;★★☆☆;1.3;3.7;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_easings_testbed.c b/examples/shapes/shapes_easings_testbed.c index 3f4f2528a..ce9b7d485 100644 --- a/examples/shapes/shapes_easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -110,8 +110,6 @@ static const EasingFuncs easings[] = { [EASING_NONE] = { .name = "None", .func = NoEase }, }; - - //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ diff --git a/projects/VS2022/examples/models_animation_bone_blending.vcxproj b/projects/VS2022/examples/models_animation_bone_blending.vcxproj new file mode 100644 index 000000000..f03989949 --- /dev/null +++ b/projects/VS2022/examples/models_animation_bone_blending.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + models_animation_bone_blending + 10.0 + models_animation_bone_blending + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 6575b6307..fdbf427ce 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -429,6 +429,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "e EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5365,6 +5367,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5581,6 +5607,7 @@ Global {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_issues.md b/tools/rexm/reports/examples_issues.md index a648295cc..3fcc136e5 100644 --- a/tools/rexm/reports/examples_issues.md +++ b/tools/rexm/reports/examples_issues.md @@ -20,3 +20,4 @@ Example elements validated: ``` | **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| |:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| +| models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 633fcae2f..b2c05ebba 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -181,6 +181,7 @@ Example elements validated: | models_rotating_cube | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_decals | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_directional_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_ascii_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 1f4e1bc477feccf3ed3a355a578f7c14e2fd171b Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:18:50 +0100 Subject: [PATCH 18/22] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 7 ++++++ examples/README.md | 5 ++-- examples/examples_list.txt | 1 + examples/models/models_animation_blending.c | 6 ++--- projects/VS2022/raylib.sln | 27 +++++++++++++++++++++ tools/rexm/reports/examples_validation.md | 1 + 7 files changed, 43 insertions(+), 5 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index 103cdc0fa..a1ddb12a0 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -656,6 +656,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_blending \ models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 663751ad1..c308fa8f7 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -641,6 +641,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_blending \ models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ @@ -1194,6 +1195,12 @@ text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) # Compile MODELS examples +models/models_animation_blending: models/models_animation_blending.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb \ + --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ + --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs + models/models_animation_bone_blending: models/models_animation_bone_blending.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ diff --git a/examples/README.md b/examples/README.md index 2b7474cff..26ba4d3d6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 205] +## EXAMPLES COLLECTION [TOTAL: 206] ### category: core [48] @@ -181,7 +181,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat | [text_words_alignment](text/text_words_alignment.c) | text_words_alignment | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [text_strings_management](text/text_strings_management.c) | text_strings_management | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | -### category: models [28] +### category: models [29] Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. @@ -215,6 +215,7 @@ Examples using raylib models functionality, including models loading/generation | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | | [models_animation_bone_blending](models/models_animation_bone_blending.c) | models_animation_bone_blending | ⭐⭐⭐⭐️ | 5.5 | 5.5 | [dmitrii-brand](https://github.com/dmitrii-brand) | +| [models_animation_blending](models/models_animation_blending.c) | models_animation_blending | ☆☆☆☆ | 5.5 | 5.6-dev | [Kirandeep](https://github.com/Kirandeep-Singh-Khehra) | ### category: shaders [34] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index be0def2d8..ededf8e5a 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -171,6 +171,7 @@ models;models_rotating_cube;★☆☆☆;5.6-dev;5.6-dev;2025;2025;"Jopestpe";@j models;models_decals;★★★★;5.6-dev;5.6-dev;2025;2025;"JP Mortiboys";@themushroompirates models;models_directional_billboard;★★☆☆;5.6-dev;5.6;2025;2025;"Robin";@RobinsAviary models;models_animation_bone_blending;★★★★;5.5;5.5;2026;2026;"dmitrii-brand";@dmitrii-brand +models;models_animation_blending;☆☆☆☆;5.5;5.6-dev;2024;2024;"Kirandeep";@Kirandeep-Singh-Khehra shaders;shaders_ascii_rendering;★★☆☆;5.5;5.6;2025;2025;"Maicon Santana";@maiconpintoabreu shaders;shaders_basic_lighting;★★★★;3.0;4.2;2019;2025;"Chris Camacho";@chriscamacho shaders;shaders_model_shader;★★☆☆;1.3;3.7;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/models/models_animation_blending.c b/examples/models/models_animation_blending.c index 225c1bfbb..b33dbe85d 100644 --- a/examples/models/models_animation_blending.c +++ b/examples/models/models_animation_blending.c @@ -1,8 +1,8 @@ /******************************************************************************************* * -* raylib [core] example - Model animation blending +* raylib [models] example - animation blending * -* Example originally created with raylib 5.5 +* Example originally created with raylib 5.5, last time updated with raylib 5.6-dev * * Example contributed by Kirandeep (@Kirandeep-Singh-Khehra) * @@ -37,7 +37,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - Model Animation Blending"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - animation blending"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index fdbf427ce..6cd7e8efc 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -431,6 +431,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "exa EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5391,6 +5393,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5608,6 +5634,7 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index b2c05ebba..391c007cb 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -182,6 +182,7 @@ Example elements validated: | models_decals | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_directional_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation_blending | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_ascii_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 1a5e22808c35350ec98fec3664d73569916af4af Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:19:44 +0100 Subject: [PATCH 19/22] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 5 +- examples/examples_list.txt | 1 + .../VS2022/examples/core_window_web.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_validation.md | 1 + 7 files changed, 606 insertions(+), 2 deletions(-) create mode 100644 projects/VS2022/examples/core_window_web.vcxproj diff --git a/examples/Makefile b/examples/Makefile index a1ddb12a0..40906ebfc 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -561,6 +561,7 @@ CORE = \ core/core_window_flags \ core/core_window_letterbox \ core/core_window_should_close \ + core/core_window_web \ core/core_world_screen SHAPES = \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index c308fa8f7..b91f59267 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -546,6 +546,7 @@ CORE = \ core/core_window_flags \ core/core_window_letterbox \ core/core_window_should_close \ + core/core_window_web \ core/core_world_screen SHAPES = \ @@ -875,6 +876,9 @@ core/core_window_letterbox: core/core_window_letterbox.c core/core_window_should_close: core/core_window_should_close.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +core/core_window_web: core/core_window_web.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + core/core_world_screen: core/core_world_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 26ba4d3d6..2b8b9dd98 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,9 +17,9 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 206] +## EXAMPLES COLLECTION [TOTAL: 207] -### category: core [48] +### category: core [49] Examples using raylib [core](../src/rcore.c) module platform functionality: window creation, inputs, drawing modes and system functionality. @@ -73,6 +73,7 @@ Examples using raylib [core](../src/rcore.c) module platform functionality: wind | [core_text_file_loading](core/core_text_file_loading.c) | core_text_file_loading | ⭐☆☆☆ | 5.5 | 5.6 | [Aanjishnu Bhattacharyya](https://github.com/NimComPoo-04) | | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | | [core_keyboard_testbed](core/core_keyboard_testbed.c) | core_keyboard_testbed | ⭐⭐☆☆ | 5.6 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_window_web](core/core_window_web.c) | core_window_web | ⭐☆☆☆ | 1.3 | 5.5 | [Ramon Santamaria](https://github.com/raysan5) | ### category: shapes [40] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index ededf8e5a..85b997ec4 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -57,6 +57,7 @@ core;core_clipboard_text;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Ananth S";@Anan core;core_text_file_loading;★☆☆☆;5.5;5.6;0;0;"Aanjishnu Bhattacharyya";@NimComPoo-04 core;core_compute_hash;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Ramon Santamaria";@raysan5 core;core_keyboard_testbed;★★☆☆;5.6;5.6;2026;2026;"Ramon Santamaria";@raysan5 +core;core_window_web;★☆☆☆;1.3;5.5;2015;2025;"Ramon Santamaria";@raysan5 shapes;shapes_basic_shapes;★☆☆☆;1.0;4.2;2014;2025;"Ramon Santamaria";@raysan5 shapes;shapes_bouncing_ball;★☆☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 shapes;shapes_bullet_hell;★☆☆☆;5.6;5.6;2025;2025;"Zero";@zerohorsepower diff --git a/projects/VS2022/examples/core_window_web.vcxproj b/projects/VS2022/examples/core_window_web.vcxproj new file mode 100644 index 000000000..4d7a0e741 --- /dev/null +++ b/projects/VS2022/examples/core_window_web.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + core_window_web + 10.0 + core_window_web + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 6cd7e8efc..7f8fbbbf0 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -433,6 +433,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blend EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5417,6 +5419,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5635,6 +5661,7 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 391c007cb..9c0c02956 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -68,6 +68,7 @@ Example elements validated: | core_text_file_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_compute_hash | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_keyboard_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bullet_hell | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 4a89da3300c10965a92884aaff98c89f807ed0fc Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:22:45 +0100 Subject: [PATCH 20/22] Update VS2022 examples solution --- .../VS2022/examples/core_window_web.vcxproj | 2 +- .../models_animation_blending.vcxproj | 4 +- .../models_animation_bone_blending.vcxproj | 2 +- .../examples/shaders_rlgl_compute.vcxproj | 2 +- projects/VS2022/raylib.sln | 210 +++++++++--------- 5 files changed, 110 insertions(+), 110 deletions(-) diff --git a/projects/VS2022/examples/core_window_web.vcxproj b/projects/VS2022/examples/core_window_web.vcxproj index 4d7a0e741..d26befac0 100644 --- a/projects/VS2022/examples/core_window_web.vcxproj +++ b/projects/VS2022/examples/core_window_web.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3} Win32Proj core_window_web 10.0 diff --git a/projects/VS2022/examples/models_animation_blending.vcxproj b/projects/VS2022/examples/models_animation_blending.vcxproj index bf8a8b27a..3eca7a6f2 100644 --- a/projects/VS2022/examples/models_animation_blending.vcxproj +++ b/projects/VS2022/examples/models_animation_blending.vcxproj @@ -35,7 +35,7 @@ - {AFDDE100-2D36-4749-817D-12E54C56312F} + {BB9C957D-34F1-46AE-B64A-9E0499C1746D} Win32Proj models_animation_blending 10.0 @@ -384,4 +384,4 @@ - + \ No newline at end of file diff --git a/projects/VS2022/examples/models_animation_bone_blending.vcxproj b/projects/VS2022/examples/models_animation_bone_blending.vcxproj index f03989949..475ad47f0 100644 --- a/projects/VS2022/examples/models_animation_bone_blending.vcxproj +++ b/projects/VS2022/examples/models_animation_bone_blending.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {AC751FE1-C986-4B6A-92A8-28ED89DEE671} Win32Proj models_animation_bone_blending 10.0 diff --git a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj index 583898f19..d10553409 100644 --- a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj +++ b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {AEA9D0D4-B810-4624-BC75-10A291584ED6} Win32Proj shaders_rlgl_compute 10.0 diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 7f8fbbbf0..873db235b 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -427,13 +427,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_render EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{AEA9D0D4-B810-4624-BC75-10A291584ED6}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{AC751FE1-C986-4B6A-92A8-28ED89DEE671}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{BB9C957D-34F1-46AE-B64A-9E0499C1746D}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -5347,102 +5347,102 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|ARM64.Build.0 = Debug|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x64.ActiveCfg = Debug|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x64.Build.0 = Debug|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x86.ActiveCfg = Debug|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x86.Build.0 = Debug|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|ARM64.ActiveCfg = Release|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|ARM64.Build.0 = Release|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x64.ActiveCfg = Release|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x64.Build.0 = Release|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x86.ActiveCfg = Release|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x86.Build.0 = Release|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|ARM64.Build.0 = Debug|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x64.ActiveCfg = Debug|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x64.Build.0 = Debug|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x86.ActiveCfg = Debug|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x86.Build.0 = Debug|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|ARM64.ActiveCfg = Release|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|ARM64.Build.0 = Release|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x64.ActiveCfg = Release|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x64.Build.0 = Release|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x86.ActiveCfg = Release|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x86.Build.0 = Release|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|ARM64.ActiveCfg = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|ARM64.Build.0 = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x64.ActiveCfg = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x64.Build.0 = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x86.ActiveCfg = Debug|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x86.Build.0 = Debug|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|ARM64.Build.0 = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|ARM64.ActiveCfg = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|ARM64.Build.0 = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x64.ActiveCfg = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x64.Build.0 = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x86.ActiveCfg = Release|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x86.Build.0 = Release|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x64.ActiveCfg = Debug|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x64.Build.0 = Debug|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x86.ActiveCfg = Debug|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x86.Build.0 = Debug|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|ARM64.Build.0 = Release|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x64.ActiveCfg = Release|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x64.Build.0 = Release|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x86.ActiveCfg = Release|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5605,7 +5605,7 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -5658,10 +5658,10 @@ Global {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AEA9D0D4-B810-4624-BC75-10A291584ED6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {AC751FE1-C986-4B6A-92A8-28ED89DEE671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {BB9C957D-34F1-46AE-B64A-9E0499C1746D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 90dd9aef727ab1903a80e6c9783e0da2376bad0c Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:40:22 +0100 Subject: [PATCH 21/22] REVIEWED: `GenImageFontAtlas()`, no need for the conservative approach flag --- src/rtext.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 0fd2d8e6b..e0aa4fddd 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -818,25 +818,11 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp totalWidth += glyphs[i].image.width + 2*padding; } -//#define SUPPORT_FONT_ATLAS_SIZE_CONSERVATIVE -#if defined(SUPPORT_FONT_ATLAS_SIZE_CONSERVATIVE) - int rowCount = 0; - int imageSize = 64; // Define minimum starting value to avoid unnecessary calculation steps for very small images - - // NOTE: maxGlyphWidth is maximum possible space left at the end of row - while (totalWidth > (imageSize - maxGlyphWidth)*rowCount) - { - imageSize *= 2; // Double the size of image (to keep POT) - rowCount = imageSize/(fontSize + 2*padding); // Calculate new row count for the new image size - } - - atlas.width = imageSize; // Atlas bitmap width - atlas.height = imageSize; // Atlas bitmap height -#else int paddedFontSize = fontSize + 2*padding; - // No need for a so-conservative atlas generation - // NOTE: Multiplying total expected are by 1.2f scale factor + // Estimate image atlas size from available data + // NOTE: Multiplying total expected area by 1.2f scale factor but in case + // some glyphs do not fit, the atlas height is scaled x2 to fit them float totalArea = totalWidth*paddedFontSize*1.2f; float imageMinSize = sqrtf(totalArea); int imageSize = (int)powf(2, ceilf(logf(imageMinSize)/logf(2))); @@ -851,7 +837,6 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp atlas.width = imageSize; // Atlas bitmap width atlas.height = imageSize; // Atlas bitmap height } -#endif int atlasDataSize = atlas.width*atlas.height; // Save total size for bounds checking atlas.data = (unsigned char *)RL_CALLOC(atlasDataSize, 1); // Create a bitmap to store characters (8 bpp) From 4a3c49cdcbf09857a675179e63f27e5a6ffe9b22 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:55:13 +0100 Subject: [PATCH 22/22] REVIEWED: `rlLoadTextureDepth()`, address inconsistencies with WebGL 2.0 for sized depth formats #5500 --- src/rlgl.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rlgl.h b/src/rlgl.h index d05bc42cb..3168b6a63 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -3432,6 +3432,13 @@ unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer) else glInternalFormat = GL_DEPTH_COMPONENT16; } #endif +#if defined(GRAPHICS_API_OPENGL_ES3) + // NOTE: This sized internal format should also work for WebGL 2.0 + // WARNING: Specification only allows GL_DEPTH_COMPONENT32F for GL_FLOAT type + // REF: https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml + if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24; + else glInternalFormat = GL_DEPTH_COMPONENT16; +#endif if (!useRenderBuffer && RLGL.ExtSupported.texDepth) {