Initial Commit
This commit is contained in:
parent
811172de42
commit
5adeb40568
|
@ -0,0 +1,2 @@
|
|||
build/
|
||||
bin/
|
|
@ -0,0 +1,90 @@
|
|||
|
||||
CCFLAGS = -std=c11 -g -Wall -Weverything \
|
||||
-Wconditional-uninitialized \
|
||||
-Wenum-conversion \
|
||||
-Wimplicit-fallthrough \
|
||||
-Winit-self \
|
||||
-Wmissing-field-initializers \
|
||||
-Wno-bad-function-cast \
|
||||
-Wno-declaration-after-statement \
|
||||
-Wno-double-promotion \
|
||||
-Wno-error=deprecated-declarations \
|
||||
-Wno-error=incompatible-pointer-types-discards-qualifiers \
|
||||
-Wno-error=shorten-64-to-32 \
|
||||
-Wno-error=unused-but-set-variable \
|
||||
-Wno-error=unused-function \
|
||||
-Wno-error=unused-label \
|
||||
-Wno-error=unused-variable \
|
||||
-Wno-gnu-empty-initializer \
|
||||
-Wno-gnu-statement-expression \
|
||||
-Wno-implicit-float-conversion \
|
||||
-Wno-missing-prototypes \
|
||||
-Wno-missing-variable-declarations \
|
||||
-Wno-padded \
|
||||
-Wno-pointer-sign \
|
||||
-Wno-sign-conversion \
|
||||
-Wno-unused-command-line-argument \
|
||||
-Wnullable-to-nonnull-conversion \
|
||||
-Wshadow \
|
||||
-Wstrict-prototypes \
|
||||
-Wuninitialized \
|
||||
-Wzero-length-array \
|
||||
-I build \
|
||||
-I lib/raylib-4.5.0_macos/include -L lib/raylib-4.5.0_macos/lib -l raylib -framework Cocoa -framework IOKit
|
||||
# -Wfloat-conversion
|
||||
|
||||
run: build/ShapeUp
|
||||
./build/ShapeUp
|
||||
|
||||
profile: CCFLAGS += -O3
|
||||
profile: build/ShapeUp
|
||||
|
||||
sanitize: CCFLAGS += -g -fsanitize=undefined,address
|
||||
sanitize: run
|
||||
|
||||
debug: build/ShapeUp
|
||||
lldb -o "run" ./build/ShapeUp
|
||||
|
||||
build/shaders.h: src/*.fs Makefile build
|
||||
(cat src/shader_base.fs; printf '\0') > build/shader_base.fs
|
||||
(cat src/shader_prefix.fs; printf '\0') > build/shader_prefix.fs
|
||||
(cat src/slicer_body.fs; printf '\0') > build/slicer_body.fs
|
||||
(cat src/selection.fs; printf '\0') > build/selection.fs
|
||||
cd build && xxd -i shader_base.fs shaders.h
|
||||
cd build && xxd -i shader_prefix.fs >> shaders.h
|
||||
cd build && xxd -i slicer_body.fs >> shaders.h
|
||||
cd build && xxd -i selection.fs >> shaders.h
|
||||
|
||||
build/ShapeUp: src/* Makefile build/shaders.h build
|
||||
$(CC) $(CCFLAGS) src/pinchSwizzle.m src/main.c -o build/ShapeUp
|
||||
|
||||
make_the_bug: build
|
||||
$(CC) $(CCFLAGS) $(BUG_FILE) -o build/bug
|
||||
./build/bug
|
||||
|
||||
build:
|
||||
mkdir -p build
|
||||
|
||||
bug1: BUG_FILE=bugs/render_scale_bug.c
|
||||
bug1: make_the_bug
|
||||
|
||||
bug2: BUG_FILE=bugs/keyevents.c
|
||||
bug2: make_the_bug
|
||||
|
||||
bug2: BUG_FILE=bugs/keyevents.c
|
||||
bug2: make_the_bug
|
||||
|
||||
bug3: BUG_FILE=bugs/exportpng.c
|
||||
bug3: make_the_bug
|
||||
|
||||
bug4: BUG_FILE=bugs/textpadding.c
|
||||
bug4: make_the_bug
|
||||
|
||||
bug5: BUG_FILE=bugs/retina_scale.c
|
||||
bug5: make_the_bug
|
||||
|
||||
bug6: BUG_FILE=bugs/gamepad.c
|
||||
bug6: make_the_bug
|
||||
|
||||
clean:
|
||||
rm -rf build
|
|
@ -0,0 +1,399 @@
|
|||
.PHONY: all clean run
|
||||
|
||||
# Define required environment variables
|
||||
#------------------------------------------------------------------------------------------------
|
||||
# Define target platform: PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_DRM, PLATFORM_ANDROID, PLATFORM_WEB
|
||||
PLATFORM ?= PLATFORM_WEB
|
||||
|
||||
# Define project variables
|
||||
PROJECT_NAME ?= ShapeUp_$(shell date +%Y%m%d%H%M%S)
|
||||
|
||||
RAYLIB_PATH ?= ../3rdParty/raylib
|
||||
|
||||
# Locations of raylib.h and libraylib.a/libraylib.so
|
||||
# NOTE: Those variables are only used for PLATFORM_OS: LINUX, BSD
|
||||
RAYLIB_INCLUDE_PATH ?= lib/raylib-4.5.0_webassembly/include/
|
||||
RAYLIB_LIB_PATH ?= lib/raylib-4.5.0_webassembly/lib/
|
||||
|
||||
# Library type compilation: STATIC (.a) or SHARED (.so/.dll)
|
||||
RAYLIB_LIBTYPE ?= STATIC
|
||||
|
||||
# Build mode for project: DEBUG or RELEASE
|
||||
BUILD_MODE ?= RELEASE
|
||||
|
||||
# Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system)
|
||||
# NOTE: This variable is only used for PLATFORM_OS: LINUX
|
||||
USE_WAYLAND_DISPLAY ?= FALSE
|
||||
|
||||
# PLATFORM_WEB: Default properties
|
||||
BUILD_WEB_ASYNCIFY ?= TRUE
|
||||
BUILD_WEB_SHELL ?= src/minshell.html
|
||||
BUILD_WEB_HEAP_SIZE ?= 134217728
|
||||
BUILD_WEB_RESOURCES ?= FALSE
|
||||
BUILD_WEB_RESOURCES_PATH ?= resources
|
||||
|
||||
OS ?= "NOT_WINDOWS_NT"
|
||||
|
||||
# Use cross-compiler for PLATFORM_RPI
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
USE_RPI_CROSS_COMPILER ?= FALSE
|
||||
ifeq ($(USE_RPI_CROSS_COMPILER),TRUE)
|
||||
RPI_TOOLCHAIN ?= C:/SysGCC/Raspberry
|
||||
RPI_TOOLCHAIN_SYSROOT ?= $(RPI_TOOLCHAIN)/arm-linux-gnueabihf/sysroot
|
||||
endif
|
||||
endif
|
||||
|
||||
# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
# No uname.exe on MinGW!, but OS=Windows_NT on Windows!
|
||||
# ifeq ($(UNAME),Msys) -> Windows
|
||||
ifeq ($(OS),Windows_NT)
|
||||
PLATFORM_OS = WINDOWS
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = cmd
|
||||
endif
|
||||
else
|
||||
UNAMEOS = $(shell uname)
|
||||
ifeq ($(UNAMEOS),Linux)
|
||||
PLATFORM_OS = LINUX
|
||||
endif
|
||||
ifeq ($(UNAMEOS),FreeBSD)
|
||||
PLATFORM_OS = BSD
|
||||
endif
|
||||
ifeq ($(UNAMEOS),OpenBSD)
|
||||
PLATFORM_OS = BSD
|
||||
endif
|
||||
ifeq ($(UNAMEOS),NetBSD)
|
||||
PLATFORM_OS = BSD
|
||||
endif
|
||||
ifeq ($(UNAMEOS),DragonFly)
|
||||
PLATFORM_OS = BSD
|
||||
endif
|
||||
ifeq ($(UNAMEOS),Darwin)
|
||||
PLATFORM_OS = OSX
|
||||
endif
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = sh
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
UNAMEOS = $(shell uname)
|
||||
ifeq ($(UNAMEOS),Linux)
|
||||
PLATFORM_OS = LINUX
|
||||
endif
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = sh
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_DRM)
|
||||
UNAMEOS = $(shell uname)
|
||||
ifeq ($(UNAMEOS),Linux)
|
||||
PLATFORM_OS = LINUX
|
||||
endif
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = sh
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
ifeq ($(OS),Windows_NT)
|
||||
PLATFORM_OS = WINDOWS
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = cmd
|
||||
endif
|
||||
else
|
||||
UNAMEOS = $(shell uname)
|
||||
ifeq ($(UNAMEOS),Linux)
|
||||
PLATFORM_OS = LINUX
|
||||
endif
|
||||
ifndef PLATFORM_SHELL
|
||||
PLATFORM_SHELL = sh
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Default path for raylib on Raspberry Pi
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
RAYLIB_PATH ?= /home/pi/raylib
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_DRM)
|
||||
RAYLIB_PATH ?= /home/pi/raylib
|
||||
endif
|
||||
|
||||
# Define raylib release directory for compiled library
|
||||
RAYLIB_RELEASE_PATH ?= lib/raylib-4.5.0_webassembly/lib
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
# Emscripten required variables
|
||||
EMSDK_PATH ?= C:/emsdk
|
||||
EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten
|
||||
CLANG_PATH = $(EMSDK_PATH)/upstream/bin
|
||||
PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-nuget_64bit
|
||||
NODE_PATH = $(EMSDK_PATH)/node/14.15.5_64bit/bin
|
||||
export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Define default C compiler: CC
|
||||
#------------------------------------------------------------------------------------------------
|
||||
CC = gcc
|
||||
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
ifeq ($(PLATFORM_OS),OSX)
|
||||
# OSX default compiler
|
||||
CC = clang
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),BSD)
|
||||
# FreeBSD, OpenBSD, NetBSD, DragonFly default compiler
|
||||
CC = clang
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
ifeq ($(USE_RPI_CROSS_COMPILER),TRUE)
|
||||
# Define RPI cross-compiler
|
||||
#CC = armv6j-hardfloat-linux-gnueabi-gcc
|
||||
CC = $(RPI_TOOLCHAIN)/bin/arm-linux-gnueabihf-gcc
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
# HTML5 emscripten compiler
|
||||
# WARNING: To compile to HTML5, code must be redesigned
|
||||
# to use emscripten.h and emscripten_set_main_loop()
|
||||
CC = emcc
|
||||
endif
|
||||
|
||||
|
||||
# Define compiler flags: CFLAGS
|
||||
#------------------------------------------------------------------------------------------------
|
||||
# -s strip unnecessary data from build
|
||||
# -Wall turns on most, but not all, compiler warnings
|
||||
# -std=gnu99 defines C language mode (GNU C from 1999 revision)
|
||||
# -Wno-missing-braces ignore invalid warning (GCC bug 53119)
|
||||
# -Wno-unused-value ignore unused return values of some functions (i.e. fread())
|
||||
# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec
|
||||
CFLAGS = -std=gnu99 -Wall -Wno-missing-braces -Wunused-result -D_DEFAULT_SOURCE -Wno-pointer-sign
|
||||
|
||||
ifeq ($(BUILD_MODE),DEBUG)
|
||||
CFLAGS += -g -D_DEBUG
|
||||
else
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
ifeq ($(BUILD_WEB_ASYNCIFY),TRUE)
|
||||
CFLAGS += -O3
|
||||
else
|
||||
CFLAGS += -Os
|
||||
endif
|
||||
else
|
||||
CFLAGS += -s -O2
|
||||
endif
|
||||
endif
|
||||
|
||||
# Additional flags for compiler (if desired)
|
||||
#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
ifeq ($(PLATFORM_OS),LINUX)
|
||||
ifeq ($(RAYLIB_LIBTYPE),STATIC)
|
||||
CFLAGS += -D_DEFAULT_SOURCE
|
||||
endif
|
||||
ifeq ($(RAYLIB_LIBTYPE),SHARED)
|
||||
# Explicitly enable runtime link to libraylib.so
|
||||
CFLAGS += -Wl,-rpath,$(RAYLIB_RELEASE_PATH)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
CFLAGS += -std=gnu99
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_DRM)
|
||||
CFLAGS += -std=gnu99 -DEGL_NO_X11
|
||||
endif
|
||||
|
||||
# Define include paths for required headers: INCLUDE_PATHS
|
||||
# NOTE: Some external/extras libraries could be required (stb, physac, easings...)
|
||||
#------------------------------------------------------------------------------------------------
|
||||
INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external -I$(RAYLIB_PATH)/src/extras -Ilib/raylib-4.5.0_macos/include -I build
|
||||
|
||||
# Define additional directories containing required header files
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
ifeq ($(PLATFORM_OS),BSD)
|
||||
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH)
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),LINUX)
|
||||
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include
|
||||
INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include/interface/vmcs_host/linux
|
||||
INCLUDE_PATHS += -I$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/include/interface/vcos/pthreads
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_DRM)
|
||||
INCLUDE_PATHS += -I/usr/include/libdrm
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
INCLUDE_PATHS += -I$(EMSCRIPTEN_PATH)/cache/sysroot/include
|
||||
endif
|
||||
|
||||
# Define library paths containing required libs: LDFLAGS
|
||||
#------------------------------------------------------------------------------------------------
|
||||
LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src -Ilib/raylib-4.5.0_macos/lib
|
||||
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||
# NOTE: The resource .rc file contains windows executable icon and properties
|
||||
LDFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data
|
||||
# -Wl,--subsystem,windows hides the console window
|
||||
ifeq ($(BUILD_MODE), RELEASE)
|
||||
LDFLAGS += -Wl,--subsystem,windows
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),LINUX)
|
||||
LDFLAGS += -L$(RAYLIB_LIB_PATH)
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),BSD)
|
||||
LDFLAGS += -Lsrc -L$(RAYLIB_LIB_PATH)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
# -Os # size optimization
|
||||
# -O2 # optimization level 2, if used, also set --memory-init-file 0
|
||||
# -s USE_GLFW=3 # Use glfw3 library (context/input management)
|
||||
# -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing -> WARNING: Audio buffers could FAIL!
|
||||
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB) (67108864 = 64MB)
|
||||
# -s USE_PTHREADS=1 # multithreading support
|
||||
# -s WASM=0 # disable Web Assembly, emitted by default
|
||||
# -s ASYNCIFY # lets synchronous C/C++ code interact with asynchronous JS
|
||||
# -s FORCE_FILESYSTEM=1 # force filesystem to load/save files data
|
||||
# -s ASSERTIONS=1 # enable runtime checks for common memory allocation errors (-O1 and above turn it off)
|
||||
# --profiling # include information for code profiling
|
||||
# --memory-init-file 0 # to avoid an external memory initialization code file (.mem)
|
||||
# --preload-file resources # specify a resources folder for data compilation
|
||||
# --source-map-base # allow debugging in browser with source map
|
||||
LDFLAGS += -s USE_GLFW=3 -s TOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -s FORCE_FILESYSTEM=1 -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2
|
||||
|
||||
# Build using asyncify
|
||||
ifeq ($(BUILD_WEB_ASYNCIFY),TRUE)
|
||||
LDFLAGS += -s ASYNCIFY
|
||||
endif
|
||||
|
||||
# Add resources building if required
|
||||
ifeq ($(BUILD_WEB_RESOURCES),TRUE)
|
||||
LDFLAGS += --preload-file $(BUILD_WEB_RESOURCES_PATH)
|
||||
endif
|
||||
|
||||
# Add debug mode flags if required
|
||||
ifeq ($(BUILD_MODE),DEBUG)
|
||||
LDFLAGS += -s ASSERTIONS=1 --profiling
|
||||
endif
|
||||
|
||||
# Define a custom shell .html and output extension
|
||||
LDFLAGS += --shell-file $(BUILD_WEB_SHELL)
|
||||
EXT = .html
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
LDFLAGS += -L$(RPI_TOOLCHAIN_SYSROOT)/opt/vc/lib
|
||||
endif
|
||||
|
||||
# Define libraries required on linking: LDLIBS
|
||||
# NOTE: To link libraries (lib<name>.so or lib<name>.a), use -l<name>
|
||||
#------------------------------------------------------------------------------------------------
|
||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||
# Libraries for Windows desktop compilation
|
||||
# NOTE: WinMM library required to set high-res timer resolution
|
||||
LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm
|
||||
# Required for physac examples
|
||||
LDLIBS += -static -lpthread
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),LINUX)
|
||||
# Libraries for Debian GNU/Linux desktop compiling
|
||||
# NOTE: Required packages: libegl1-mesa-dev
|
||||
LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt
|
||||
|
||||
# On X11 requires also below libraries
|
||||
LDLIBS += -lX11
|
||||
# NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them
|
||||
#LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
||||
|
||||
# On Wayland windowing system, additional libraries requires
|
||||
ifeq ($(USE_WAYLAND_DISPLAY),TRUE)
|
||||
LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon
|
||||
endif
|
||||
# Explicit link to libc
|
||||
ifeq ($(RAYLIB_LIBTYPE),SHARED)
|
||||
LDLIBS += -lc
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),OSX)
|
||||
# Libraries for OSX 10.9 desktop compiling
|
||||
# NOTE: Required packages: libopenal-dev libegl1-mesa-dev
|
||||
LDLIBS = -lraylib -framework OpenGL -framework Cocoa -framework IOKit -framework CoreAudio -framework CoreVideo
|
||||
endif
|
||||
ifeq ($(PLATFORM_OS),BSD)
|
||||
# Libraries for FreeBSD, OpenBSD, NetBSD, DragonFly desktop compiling
|
||||
# NOTE: Required packages: mesa-libs
|
||||
LDLIBS = -lraylib -lGL -lpthread -lm
|
||||
|
||||
# On XWindow requires also below libraries
|
||||
LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||
# Libraries for Raspberry Pi compiling
|
||||
# NOTE: Required packages: libasound2-dev (ALSA)
|
||||
LDLIBS = -lraylib -lbrcmGLESv2 -lbrcmEGL -lpthread -lrt -lm -lbcm_host -ldl
|
||||
ifeq ($(USE_RPI_CROSS_COMPILER),TRUE)
|
||||
LDLIBS += -lvchiq_arm -lvcos
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_DRM)
|
||||
# Libraries for DRM compiling
|
||||
# NOTE: Required packages: libasound2-dev (ALSA)
|
||||
LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lgbm -ldrm -ldl
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
# Libraries for web (HTML5) compiling
|
||||
LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.a
|
||||
endif
|
||||
|
||||
# Define source code object files required
|
||||
#------------------------------------------------------------------------------------------------
|
||||
PROJECT_SOURCE_FILES ?= \
|
||||
src/main.c
|
||||
# src/pinchSwizzle.m
|
||||
|
||||
# Define all object files from source files
|
||||
OBJS = $(patsubst %.c, %.o, $(PROJECT_SOURCE_FILES))
|
||||
|
||||
|
||||
# Define processes to execute
|
||||
#------------------------------------------------------------------------------------------------
|
||||
|
||||
# Default target entry
|
||||
all: $(PROJECT_NAME)
|
||||
|
||||
build/shaders.h: src/*.fs Makefile build
|
||||
(cat src/shader_base.fs; printf '\0') > build/shader_base.fs
|
||||
(cat src/shader_prefix.fs; printf '\0') > build/shader_prefix.fs
|
||||
(cat src/slicer_body.fs; printf '\0') > build/slicer_body.fs
|
||||
(cat src/selection.fs; printf '\0') > build/selection.fs
|
||||
cd build && xxd -i shader_base.fs shaders.h
|
||||
cd build && xxd -i shader_prefix.fs >> shaders.h
|
||||
cd build && xxd -i slicer_body.fs >> shaders.h
|
||||
cd build && xxd -i selection.fs >> shaders.h
|
||||
|
||||
# Project target defined by PROJECT_NAME
|
||||
$(PROJECT_NAME): $(OBJS) build/shaders.h
|
||||
mkdir -p build
|
||||
# rm build/*.js build/*.data build/*.wasm build/*.html
|
||||
$(CC) -o build/$(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
mv build/$(PROJECT_NAME).html build/index.html
|
||||
endif
|
||||
|
||||
# Compile source files
|
||||
# NOTE: This pattern will compile every module defined on $(OBJS)
|
||||
%.o: %.c
|
||||
$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM)
|
||||
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# ShapeUp
|
||||
|
||||
A 3D Modeling tool using constructive solid geometry. More information about the project [on my website](https://danielchasehooper.com/posts/shapeup/)
|
||||
|
||||
This was written for the 2023 [Wheel reinvention Jam](https://handmade.network/jam/2023). As such, the project is not maintained. This repo exists just because a few people said they were interested in looking at the code for educational purposes. If you have an issue building, I'll take a PR for that, otherwise I'm not accepting bug reports or new features.
|
||||
|
||||
This repo is a santitized copy of the original with commmit history removed. I was never planning on doing a public release of this code, and I don't feel like auditing/changing the original repo's commit history for code/comments that shouldn't be public.
|
||||
|
||||
# Building
|
||||
|
||||
for macOS run `make`
|
||||
for web: run `./webbuild.sh`
|
||||
for windows: PRs welcome
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,16 @@
|
|||
Copyright (c) 2013-2023 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.
|
|
@ -0,0 +1,144 @@
|
|||
<img align="left" src="https://github.com/raysan5/raylib/blob/master/logo/raylib_logo_animation.gif" width="288px">
|
||||
|
||||
**raylib is a simple and easy-to-use library to enjoy videogames programming.**
|
||||
|
||||
raylib is highly inspired by Borland BGI graphics lib and by XNA framework and it's specially well suited for prototyping, tooling, graphical applications, embedded systems and education.
|
||||
|
||||
*NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no debug button... just coding in the most pure spartan-programmers way.*
|
||||
|
||||
Ready to learn? Jump to [code examples!](https://www.raylib.com/examples.html)
|
||||
|
||||
---
|
||||
|
||||
<br>
|
||||
|
||||
[![GitHub Releases Downloads](https://img.shields.io/github/downloads/raysan5/raylib/total)](https://github.com/raysan5/raylib/releases)
|
||||
[![GitHub Stars](https://img.shields.io/github/stars/raysan5/raylib?style=flat&label=stars)](https://github.com/raysan5/raylib/stargazers)
|
||||
[![GitHub commits since tagged version](https://img.shields.io/github/commits-since/raysan5/raylib/4.2.0)](https://github.com/raysan5/raylib/commits/master)
|
||||
[![GitHub Sponsors](https://img.shields.io/github/sponsors/raysan5?label=sponsors)](https://github.com/sponsors/raysan5)
|
||||
[![Packaging Status](https://repology.org/badge/tiny-repos/raylib.svg)](https://repology.org/project/raylib/versions)
|
||||
[![License](https://img.shields.io/badge/license-zlib%2Flibpng-blue.svg)](LICENSE)
|
||||
|
||||
[![Discord Members](https://img.shields.io/discord/426912293134270465.svg?label=Discord&logo=discord)](https://discord.gg/raylib)
|
||||
[![Subreddit Subscribers](https://img.shields.io/reddit/subreddit-subscribers/raylib?label=reddit%20r%2Fraylib&logo=reddit)](https://www.reddit.com/r/raylib/)
|
||||
[![Youtube Subscribers](https://img.shields.io/youtube/channel/subscribers/UC8WIBkhYb5sBNqXO1mZ7WSQ?style=flat&label=Youtube&logo=youtube)](https://www.youtube.com/c/raylib)
|
||||
[![Twitch Status](https://img.shields.io/twitch/status/raysan5?style=flat&label=Twitch&logo=twitch)](https://www.twitch.tv/raysan5)
|
||||
|
||||
[![Windows](https://github.com/raysan5/raylib/workflows/Windows/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AWindows)
|
||||
[![Linux](https://github.com/raysan5/raylib/workflows/Linux/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3ALinux)
|
||||
[![macOS](https://github.com/raysan5/raylib/workflows/macOS/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AmacOS)
|
||||
[![Android](https://github.com/raysan5/raylib/workflows/Android/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AAndroid)
|
||||
[![WebAssembly](https://github.com/raysan5/raylib/workflows/WebAssembly/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3AWebAssembly)
|
||||
|
||||
[![CMakeBuilds](https://github.com/raysan5/raylib/workflows/CMakeBuilds/badge.svg)](https://github.com/raysan5/raylib/actions?query=workflow%3ACMakeBuilds)
|
||||
[![Windows Examples](https://github.com/raysan5/raylib/actions/workflows/windows_examples.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/windows_examples.yml)
|
||||
[![Linux Examples](https://github.com/raysan5/raylib/actions/workflows/linux_examples.yml/badge.svg)](https://github.com/raysan5/raylib/actions/workflows/linux_examples.yml)
|
||||
|
||||
features
|
||||
--------
|
||||
- **NO external dependencies**, all required libraries are [bundled into raylib](https://github.com/raysan5/raylib/tree/master/src/external)
|
||||
- Multiple platforms supported: **Windows, Linux, MacOS, RPI, Android, HTML5... and more!**
|
||||
- Written in plain C code (C99) using PascalCase/camelCase notation
|
||||
- Hardware accelerated with OpenGL (**1.1, 2.1, 3.3, 4.3 or ES 2.0**)
|
||||
- **Unique OpenGL abstraction layer** (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h)
|
||||
- Multiple **Fonts** formats supported (TTF, Image fonts, AngelCode fonts)
|
||||
- Multiple texture formats supported, including **compressed formats** (DXT, ETC, ASTC)
|
||||
- **Full 3D support**, including 3D Shapes, Models, Billboards, Heightmaps and more!
|
||||
- Flexible Materials system, supporting classic maps and **PBR maps**
|
||||
- **Animated 3D models** supported (skeletal bones animation) (IQM)
|
||||
- Shaders support, including model and **postprocessing** shaders.
|
||||
- **Powerful math module** for Vector, Matrix and Quaternion operations: [raymath](https://github.com/raysan5/raylib/blob/master/src/raymath.h)
|
||||
- Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD)
|
||||
- **VR stereo rendering** support with configurable HMD device parameters
|
||||
- Huge examples collection with [+120 code examples](https://github.com/raysan5/raylib/tree/master/examples)!
|
||||
- Bindings to [+60 programming languages](https://github.com/raysan5/raylib/blob/master/BINDINGS.md)!
|
||||
- **Free and open source**.
|
||||
|
||||
basic example
|
||||
--------------
|
||||
This is a basic raylib example, it creates a window and it draws the text `"Congrats! You created your first window!"` in the middle of the screen. Check this example [running live on web here](https://www.raylib.com/examples/core/loader.html?name=core_basic_window).
|
||||
```c
|
||||
#include "raylib.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
InitWindow(800, 450, "raylib [core] example - basic window");
|
||||
|
||||
while (!WindowShouldClose())
|
||||
{
|
||||
BeginDrawing();
|
||||
ClearBackground(RAYWHITE);
|
||||
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
CloseWindow();
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
build and installation
|
||||
----------------------
|
||||
|
||||
raylib binary releases for Windows, Linux, macOS, Android and HTML5 are available at the [Github Releases page](https://github.com/raysan5/raylib/releases).
|
||||
|
||||
raylib is also available via multiple [package managers](https://github.com/raysan5/raylib/issues/613) on multiple OS distributions.
|
||||
|
||||
#### Installing and building raylib on multiple platforms
|
||||
|
||||
[raylib Wiki](https://github.com/raysan5/raylib/wiki#development-platforms) contains detailed instructions on building and usage on multiple platforms.
|
||||
|
||||
- [Working on Windows](https://github.com/raysan5/raylib/wiki/Working-on-Windows)
|
||||
- [Working on macOS](https://github.com/raysan5/raylib/wiki/Working-on-macOS)
|
||||
- [Working on GNU Linux](https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux)
|
||||
- [Working on Chrome OS](https://github.com/raysan5/raylib/wiki/Working-on-Chrome-OS)
|
||||
- [Working on FreeBSD](https://github.com/raysan5/raylib/wiki/Working-on-FreeBSD)
|
||||
- [Working on Raspberry Pi](https://github.com/raysan5/raylib/wiki/Working-on-Raspberry-Pi)
|
||||
- [Working for Android](https://github.com/raysan5/raylib/wiki/Working-for-Android)
|
||||
- [Working for Web (HTML5)](https://github.com/raysan5/raylib/wiki/Working-for-Web-(HTML5))
|
||||
- [Working anywhere with CMake](https://github.com/raysan5/raylib/wiki/Working-with-CMake)
|
||||
|
||||
*Note that the Wiki is open for edit, if you find some issues while building raylib for your target platform, feel free to edit the Wiki or open an issue related to it.*
|
||||
|
||||
#### Setup raylib with multiple IDEs
|
||||
|
||||
raylib has been developed on Windows platform using [Notepad++](https://notepad-plus-plus.org/) and [MinGW GCC](https://www.mingw-w64.org/) compiler but it can be used with other IDEs on multiple platforms.
|
||||
|
||||
[Projects directory](https://github.com/raysan5/raylib/tree/master/projects) contains several ready-to-use **project templates** to build raylib and code examples with multiple IDEs.
|
||||
|
||||
*Note that there are lots of IDEs supported, some of the provided templates could require some review, so please, if you find some issue with a template or you think they could be improved, feel free to send a PR or open a related issue.*
|
||||
|
||||
learning and docs
|
||||
------------------
|
||||
|
||||
raylib is designed to be learned using [the examples](https://github.com/raysan5/raylib/tree/master/examples) as the main reference. There is no standard API documentation but there is a [**cheatsheet**](https://www.raylib.com/cheatsheet/cheatsheet.html) containing all the functions available on the library a short description of each one of them, input parameters and result value names should be intuitive enough to understand how each function works.
|
||||
|
||||
Some additional documentation about raylib design can be found in raylib GitHub Wiki. Here are the relevant links:
|
||||
|
||||
- [raylib cheatsheet](https://www.raylib.com/cheatsheet/cheatsheet.html)
|
||||
- [raylib architecture](https://github.com/raysan5/raylib/wiki/raylib-architecture)
|
||||
- [raylib library design](https://github.com/raysan5/raylib/wiki)
|
||||
- [raylib examples collection](https://github.com/raysan5/raylib/tree/master/examples)
|
||||
- [raylib games collection](https://github.com/raysan5/raylib-games)
|
||||
|
||||
|
||||
contact and networks
|
||||
---------------------
|
||||
|
||||
raylib is present in several networks and raylib community is growing everyday. If you are using raylib and enjoying it, feel free to join us in any of these networks. The most active network is our [Discord server](https://discord.gg/raylib)! :)
|
||||
|
||||
- Webpage: [https://www.raylib.com](https://www.raylib.com)
|
||||
- Discord: [https://discord.gg/raylib](https://discord.gg/raylib)
|
||||
- Twitter: [https://www.twitter.com/raysan5](https://www.twitter.com/raysan5)
|
||||
- Twitch: [https://www.twitch.tv/raysan5](https://www.twitch.tv/raysan5)
|
||||
- Reddit: [https://www.reddit.com/r/raylib](https://www.reddit.com/r/raylib)
|
||||
- Patreon: [https://www.patreon.com/raylib](https://www.patreon.com/raylib)
|
||||
- YouTube: [https://www.youtube.com/channel/raylib](https://www.youtube.com/c/raylib)
|
||||
|
||||
license
|
||||
-------
|
||||
|
||||
raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details.
|
||||
|
||||
raylib uses internally some libraries for window/graphics/inputs management and also to support different file formats loading, all those libraries are embedded with and are available in [src/external](https://github.com/raysan5/raylib/tree/master/src/external) directory. Check [raylib dependencies LICENSES](https://github.com/raysan5/raylib/wiki/raylib-dependencies) on raylib Wiki for details.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,593 @@
|
|||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// StyleAsCode exporter v2.0 - Style data exported as a values array //
|
||||
// //
|
||||
// USAGE: On init call: GuiLoadStyleDark(); //
|
||||
// //
|
||||
// more info and bugs-report: github.com/raysan5/raygui //
|
||||
// feedback and support: ray[at]raylibtech.com //
|
||||
// //
|
||||
// Copyright (c) 2020-2023 raylib technologies (@raylibtech) //
|
||||
// //
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define DARK_STYLE_PROPS_COUNT 21
|
||||
|
||||
// Custom style name: Dark
|
||||
static const GuiStyleProp darkStyleProps[DARK_STYLE_PROPS_COUNT] = {
|
||||
{ 0, 0, 0x878787ff }, // DEFAULT_BORDER_COLOR_NORMAL
|
||||
{ 0, 1, 0x2c2c2cff }, // DEFAULT_BASE_COLOR_NORMAL
|
||||
{ 0, 2, 0xc3c3c3ff }, // DEFAULT_TEXT_COLOR_NORMAL
|
||||
{ 0, 3, 0xe1e1e1ff }, // DEFAULT_BORDER_COLOR_FOCUSED
|
||||
{ 0, 4, 0x848484ff }, // DEFAULT_BASE_COLOR_FOCUSED
|
||||
{ 0, 5, 0x181818ff }, // DEFAULT_TEXT_COLOR_FOCUSED
|
||||
{ 0, 6, 0x000000ff }, // DEFAULT_BORDER_COLOR_PRESSED
|
||||
{ 0, 7, 0xefefefff }, // DEFAULT_BASE_COLOR_PRESSED
|
||||
{ 0, 8, 0x202020ff }, // DEFAULT_TEXT_COLOR_PRESSED
|
||||
{ 0, 9, 0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED
|
||||
{ 0, 10, 0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED
|
||||
{ 0, 11, 0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED
|
||||
// { 0, 16, 0x00000010 }, // DEFAULT_TEXT_SIZE
|
||||
// { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING
|
||||
{ 0, 18, 0x9d9d9dff }, // DEFAULT_LINE_COLOR
|
||||
{ 0, 19, 0x3c3c3cff }, // DEFAULT_BACKGROUND_COLOR
|
||||
{ 0, 20, 0x00000018 }, // DEFAULT_TEXT_LINE_SPACING
|
||||
{ 1, 5, 0xf7f7f7ff }, // LABEL_TEXT_COLOR_FOCUSED
|
||||
{ 1, 8, 0x898989ff }, // LABEL_TEXT_COLOR_PRESSED
|
||||
{ 4, 5, 0xb0b0b0ff }, // SLIDER_TEXT_COLOR_FOCUSED
|
||||
{ 5, 5, 0x848484ff }, // PROGRESSBAR_TEXT_COLOR_FOCUSED
|
||||
{ 9, 5, 0xf5f5f5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED
|
||||
{ 10, 5, 0xf6f6f6ff }, // VALUEBOX_TEXT_COLOR_FOCUSED
|
||||
};
|
||||
|
||||
// WARNING: This style uses a custom font: "SFCompactDisplay-Regular.otf" (size: 16, spacing: 0)
|
||||
|
||||
#define DARK_STYLE_FONT_ATLAS_COMP_SIZE 5973
|
||||
|
||||
// Font atlas image pixels data: DEFLATE compressed
|
||||
static unsigned char darkFontData[DARK_STYLE_FONT_ATLAS_COMP_SIZE] = { 0xed,
|
||||
0x9d, 0x79, 0x7c, 0x15, 0xd5, 0xd9, 0xc7, 0x6f, 0x12, 0x12, 0x16, 0x05, 0x04, 0x64, 0x53, 0x50, 0x96, 0xb0, 0xc8, 0x22,
|
||||
0x28, 0x28, 0x45, 0x40, 0x51, 0x59, 0x54, 0x70, 0x01, 0xb1, 0x5a, 0x45, 0x14, 0x41, 0x83, 0xe2, 0x5e, 0xad, 0x2f, 0x75,
|
||||
0x85, 0x54, 0x50, 0xab, 0x80, 0xda, 0x82, 0x0a, 0x02, 0x0a, 0x08, 0x55, 0x64, 0x13, 0x44, 0x6d, 0x59, 0x44, 0x40, 0x23,
|
||||
0x45, 0x40, 0x65, 0x95, 0xc4, 0x84, 0xec, 0x3b, 0x59, 0x80, 0x42, 0xc5, 0xef, 0xfb, 0xb9, 0x27, 0x93, 0x9b, 0xc0, 0x7d,
|
||||
0xce, 0xe4, 0xde, 0x24, 0x48, 0xb4, 0x0f, 0xdf, 0x3f, 0xc8, 0x67, 0xce, 0x9c, 0x59, 0xce, 0x6f, 0xe6, 0x9c, 0x99, 0x3b,
|
||||
0xbf, 0xe7, 0x39, 0x78, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x8e, 0xe3, 0x47, 0x06, 0xfb, 0x2d, 0xbb, 0x90, 0xaf, 0xa8,
|
||||
0x43, 0x96, 0xa5, 0xc6, 0x95, 0xbc, 0x81, 0x87, 0xfe, 0xbc, 0x6a, 0xdd, 0xe6, 0x3b, 0xb4, 0xb3, 0x94, 0x74, 0x22, 0xb2,
|
||||
0x82, 0xc7, 0xeb, 0x3d, 0x36, 0xff, 0xa5, 0xa1, 0x8c, 0x20, 0xcc, 0x6f, 0x69, 0x5f, 0x5a, 0x5b, 0xb6, 0x52, 0x93, 0xd3,
|
||||
0x5c, 0xf6, 0xf1, 0x37, 0xda, 0x88, 0xcb, 0xc3, 0x68, 0x43, 0x35, 0xbf, 0xa5, 0x0d, 0xe9, 0x68, 0x68, 0x26, 0xd4, 0x18,
|
||||
0x48, 0x75, 0xcb, 0x3e, 0x86, 0x70, 0xb6, 0xa5, 0xa4, 0x8e, 0xb0, 0x8f, 0x22, 0x9a, 0xb1, 0xc8, 0xaa, 0x4a, 0x43, 0xe1,
|
||||
0xfc, 0x03, 0x21, 0x5d, 0xd0, 0xff, 0x3c, 0x62, 0x08, 0x23, 0xd7, 0x52, 0x63, 0x1c, 0x0f, 0xe1, 0xe1, 0x29, 0xee, 0x15,
|
||||
0x4b, 0x07, 0xb0, 0x83, 0x9f, 0xc8, 0x63, 0x06, 0x35, 0xfc, 0xca, 0xee, 0x61, 0x27, 0xfb, 0x19, 0x68, 0xfe, 0x3e, 0x9d,
|
||||
0x2f, 0xe9, 0x2a, 0xd4, 0x0f, 0xe7, 0x1d, 0xd2, 0x89, 0x13, 0x8e, 0xaa, 0xe4, 0xd8, 0xfc, 0x97, 0x3e, 0xc8, 0x14, 0x61,
|
||||
0x69, 0x17, 0xbe, 0x16, 0x5b, 0xa5, 0x3d, 0xd7, 0x13, 0xc5, 0x79, 0xd6, 0x36, 0x59, 0x4d, 0x17, 0x71, 0xf9, 0xe5, 0xec,
|
||||
0x21, 0xd4, 0x6f, 0xe9, 0xbd, 0xec, 0x34, 0xbc, 0xe0, 0x57, 0x52, 0x8f, 0x23, 0x5c, 0x22, 0x6e, 0x29, 0x82, 0x03, 0x34,
|
||||
0x10, 0x15, 0xde, 0x48, 0x1e, 0x79, 0x3c, 0x4b, 0x88, 0x70, 0x36, 0x19, 0xbc, 0xc1, 0x4f, 0x42, 0xad, 0x6b, 0x48, 0x22,
|
||||
0x95, 0x5c, 0xc6, 0x96, 0x43, 0xff, 0x44, 0x06, 0xf8, 0x2d, 0x6b, 0xc2, 0x9b, 0x78, 0x58, 0x26, 0xac, 0x5d, 0x97, 0xc7,
|
||||
0xd8, 0xcc, 0x0c, 0x1e, 0x63, 0x0b, 0xd3, 0x19, 0x24, 0x5c, 0xbb, 0xd9, 0xf4, 0x67, 0x29, 0x7d, 0x59, 0xc3, 0x78, 0xbf,
|
||||
0xd2, 0x7f, 0x72, 0x0b, 0x4f, 0x33, 0xdd, 0xfc, 0x3d, 0x8f, 0x87, 0xc5, 0xe3, 0xb9, 0x83, 0x6f, 0xa8, 0x49, 0x7f, 0x32,
|
||||
0x85, 0x16, 0x28, 0x39, 0xb6, 0xe3, 0xa9, 0x41, 0x1a, 0xad, 0xc4, 0xb5, 0xd7, 0x30, 0x4c, 0x58, 0x1a, 0xcd, 0x97, 0xfc,
|
||||
0x9b, 0xd7, 0x85, 0x3d, 0x84, 0x12, 0x4e, 0x38, 0x6b, 0xe8, 0x46, 0xb8, 0x70, 0x17, 0xbe, 0xc8, 0x03, 0x41, 0xb6, 0x6e,
|
||||
0x4d, 0xcb, 0xf2, 0x2b, 0xc4, 0x5e, 0xcc, 0xc3, 0x3a, 0x5e, 0x25, 0x8c, 0x96, 0x24, 0x32, 0xd4, 0xaf, 0xac, 0x15, 0xad,
|
||||
0x68, 0x23, 0xe8, 0x5f, 0x9b, 0x5c, 0x73, 0x4f, 0x75, 0xe3, 0xb0, 0xb5, 0xdf, 0xb5, 0x13, 0x4b, 0xdf, 0x20, 0xd6, 0x6e,
|
||||
0xc4, 0x18, 0x72, 0xb8, 0x87, 0xbb, 0xc9, 0xe6, 0x5e, 0xe1, 0xda, 0xee, 0x4c, 0x06, 0xa1, 0x2c, 0xa1, 0x03, 0xad, 0x85,
|
||||
0xed, 0xae, 0x62, 0x04, 0xd1, 0xbc, 0x86, 0x87, 0x28, 0x16, 0x59, 0xf4, 0x1d, 0xc2, 0x5a, 0x73, 0xad, 0xa7, 0x59, 0xca,
|
||||
0x25, 0x06, 0xf3, 0x9d, 0xa5, 0xe4, 0x51, 0x16, 0x0b, 0x4b, 0x9f, 0x21, 0x86, 0x6f, 0x98, 0x2c, 0xec, 0xe1, 0x0e, 0xd2,
|
||||
0x48, 0xe3, 0x08, 0x59, 0xa4, 0x09, 0xfd, 0xcc, 0xed, 0xd4, 0xae, 0xa4, 0x51, 0xf7, 0x25, 0x9e, 0x13, 0x96, 0x46, 0x72,
|
||||
0x88, 0xba, 0xe6, 0xaf, 0x3f, 0xb1, 0x42, 0xac, 0x27, 0xe9, 0x7f, 0x36, 0x4f, 0x39, 0x7f, 0x25, 0x58, 0x7b, 0x4d, 0x3b,
|
||||
0xbb, 0x2c, 0x3d, 0x94, 0xc7, 0x3a, 0xce, 0x7c, 0x83, 0x87, 0xc6, 0x6c, 0x16, 0x4b, 0xab, 0xb3, 0x8f, 0x0f, 0xf8, 0x8a,
|
||||
0x0e, 0x16, 0x6d, 0x93, 0x49, 0xe1, 0x42, 0x2e, 0xe4, 0x3b, 0xe7, 0x3c, 0xa5, 0x9e, 0x71, 0x23, 0xb3, 0xd9, 0x49, 0x3f,
|
||||
0xaa, 0x53, 0x3f, 0xc0, 0x63, 0x8a, 0x66, 0x96, 0xa5, 0xa4, 0x0f, 0xc9, 0xe2, 0x53, 0xc8, 0x75, 0xdc, 0x4d, 0xe7, 0xa0,
|
||||
0xfb, 0xff, 0xca, 0x63, 0x3b, 0xbf, 0x13, 0x96, 0x5e, 0xcd, 0x0e, 0xdf, 0x28, 0xba, 0x3b, 0x60, 0xfd, 0x8b, 0xe9, 0x46,
|
||||
0xbe, 0x38, 0xa6, 0x94, 0x75, 0x24, 0x17, 0x05, 0xb1, 0xf6, 0x50, 0xa6, 0x10, 0x43, 0x14, 0x93, 0x89, 0x61, 0xac, 0x30,
|
||||
0x16, 0x7a, 0xc7, 0xbc, 0x68, 0xb2, 0xc9, 0x61, 0x1a, 0xf5, 0xc4, 0xf1, 0xa3, 0x26, 0x67, 0xf0, 0x1d, 0x5d, 0x68, 0xcd,
|
||||
0x00, 0xc2, 0x85, 0x35, 0x7a, 0xb0, 0x87, 0x64, 0x1e, 0xc1, 0xc3, 0x75, 0xfc, 0x33, 0xc0, 0xa3, 0x7a, 0x8b, 0xe7, 0x2d,
|
||||
0x25, 0x91, 0xfc, 0x57, 0xec, 0x47, 0x6a, 0xb9, 0xde, 0xc9, 0x27, 0x5b, 0xff, 0xb3, 0xc9, 0x12, 0x9f, 0x4b, 0x86, 0xb3,
|
||||
0xc1, 0xf9, 0xeb, 0x22, 0x32, 0x83, 0xd4, 0xbf, 0x3e, 0x7b, 0xf9, 0x7d, 0x39, 0x8e, 0x65, 0x80, 0xa8, 0x93, 0x8d, 0xbb,
|
||||
0x58, 0xc7, 0x02, 0x1e, 0xe3, 0x73, 0xe6, 0x72, 0x9f, 0x75, 0xad, 0x25, 0x0c, 0x65, 0x35, 0x0b, 0xc4, 0xb2, 0x10, 0x96,
|
||||
0x30, 0x8a, 0xf3, 0x48, 0x65, 0xb5, 0x70, 0xd7, 0xb6, 0xe5, 0x00, 0xdd, 0x69, 0xc9, 0x7e, 0xae, 0x65, 0x34, 0xef, 0x06,
|
||||
0x78, 0x54, 0x73, 0x88, 0xb6, 0x94, 0xb4, 0xe2, 0x67, 0xeb, 0xd3, 0xb4, 0x9d, 0xb7, 0xcb, 0x31, 0x8e, 0x7a, 0x82, 0x6a,
|
||||
0x45, 0xb9, 0x6d, 0x06, 0xf9, 0xc6, 0xb1, 0x7e, 0xec, 0x0d, 0x4a, 0xff, 0xea, 0x7c, 0xce, 0xc4, 0x72, 0x1d, 0x4b, 0x2f,
|
||||
0x4e, 0x0f, 0x6a, 0xfd, 0x15, 0xa6, 0xbf, 0xf8, 0xd8, 0x72, 0x87, 0x74, 0xe5, 0x3a, 0xa3, 0x7f, 0x07, 0x2e, 0xb5, 0x9c,
|
||||
0xc1, 0x63, 0xcc, 0x31, 0xcf, 0xeb, 0xf3, 0xe8, 0x48, 0x9a, 0x5f, 0xe9, 0x18, 0xe7, 0x9e, 0xef, 0x42, 0x2a, 0xdf, 0x30,
|
||||
0x32, 0xc0, 0x63, 0x9a, 0xcc, 0x7c, 0x4b, 0x49, 0x3f, 0x0e, 0x54, 0xc1, 0x77, 0xee, 0xf7, 0xb9, 0xc3, 0xf2, 0x6e, 0x53,
|
||||
0xe8, 0xbc, 0x97, 0x3e, 0xcc, 0x27, 0x41, 0xe8, 0x1f, 0xc2, 0x3c, 0x3e, 0x10, 0x7b, 0xe3, 0xb2, 0x08, 0x25, 0x87, 0x1b,
|
||||
0x83, 0xaa, 0x11, 0x6f, 0xde, 0x68, 0x13, 0xc4, 0xbe, 0xdb, 0xfb, 0x76, 0x9e, 0xc5, 0x40, 0x96, 0xd1, 0x87, 0x19, 0xe2,
|
||||
0xdd, 0xdb, 0x9b, 0x6f, 0xa8, 0x65, 0xde, 0x04, 0x97, 0xf1, 0x3b, 0xe2, 0xfc, 0xca, 0x2f, 0x25, 0x9d, 0xe6, 0x78, 0xa8,
|
||||
0xc6, 0x6c, 0xe0, 0x8a, 0x00, 0x8f, 0x69, 0xb4, 0xe5, 0x69, 0xda, 0xbb, 0x9f, 0x4d, 0x55, 0x4e, 0xfd, 0x6a, 0x64, 0xd3,
|
||||
0xd4, 0x52, 0x16, 0x63, 0x7a, 0xb2, 0x46, 0xec, 0xe3, 0xd6, 0x20, 0xf4, 0x9f, 0x40, 0x8c, 0x69, 0xd5, 0xf2, 0x50, 0xab,
|
||||
0x92, 0xcf, 0xee, 0x16, 0xbe, 0xe7, 0x27, 0xb2, 0x98, 0x23, 0x8c, 0x2b, 0x8d, 0xd8, 0xe5, 0xf4, 0xac, 0x67, 0xb2, 0x9b,
|
||||
0x54, 0xc6, 0x08, 0xf5, 0x9f, 0x22, 0x9b, 0x7f, 0x93, 0xca, 0x2c, 0xee, 0x22, 0x83, 0xf3, 0x03, 0xda, 0x67, 0x24, 0x85,
|
||||
0x9c, 0x21, 0x96, 0xcc, 0x2d, 0x67, 0xaf, 0x78, 0x32, 0xe9, 0xc5, 0x56, 0x6b, 0x59, 0x5b, 0x76, 0x92, 0x4c, 0x01, 0x53,
|
||||
0x82, 0xb8, 0x9b, 0xdb, 0xf2, 0x33, 0xc5, 0xff, 0xa2, 0xab, 0xc4, 0x19, 0x4e, 0xb3, 0xfe, 0xee, 0x56, 0xba, 0xcf, 0xb2,
|
||||
0xfd, 0x32, 0x56, 0x9d, 0x56, 0xd6, 0x32, 0x1b, 0xeb, 0x78, 0x54, 0xfc, 0xad, 0xe0, 0xb0, 0xe5, 0x97, 0xbc, 0x53, 0x49,
|
||||
0x34, 0x93, 0x5c, 0xcb, 0xcf, 0x71, 0xfd, 0x6d, 0x52, 0x91, 0xb8, 0x98, 0x1f, 0x84, 0x27, 0xea, 0x67, 0x99, 0x56, 0x05,
|
||||
0x8f, 0xf5, 0x6b, 0x2e, 0x53, 0xc5, 0x2a, 0x9d, 0x70, 0xe1, 0x3d, 0xaf, 0x5a, 0xb9, 0x9e, 0x89, 0x4e, 0xc5, 0x91, 0x2a,
|
||||
0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x4a, 0xc5, 0x70, 0xf7, 0x89,
|
||||
0xd7, 0x60, 0x1b, 0xb9, 0x16, 0xd7, 0xea, 0x44, 0xf2, 0x1d, 0x46, 0xb8, 0xd4, 0x97, 0xbf, 0xdc, 0xfd, 0x81, 0x5c, 0x1f,
|
||||
0x03, 0x2d, 0x75, 0xeb, 0x09, 0x8e, 0xf1, 0x12, 0xce, 0xb0, 0xfe, 0x96, 0x1f, 0x12, 0xc4, 0xd2, 0xd2, 0x3e, 0x43, 0xff,
|
||||
0x1a, 0xbd, 0x7c, 0x9c, 0x2d, 0x78, 0xff, 0xcb, 0xf2, 0x11, 0xd5, 0xa5, 0x89, 0xcb, 0x5e, 0x5b, 0x30, 0x9c, 0x68, 0xa2,
|
||||
0xe8, 0xe6, 0xba, 0x8d, 0x0d, 0x56, 0xcf, 0x53, 0xac, 0x69, 0xbb, 0x34, 0x3e, 0x0e, 0xe0, 0xdb, 0xaa, 0x8d, 0xfe, 0x24,
|
||||
0x92, 0xc2, 0x01, 0x9e, 0xb0, 0xae, 0x31, 0x9e, 0x15, 0x60, 0xd1, 0x7f, 0x1e, 0x0f, 0x51, 0xdb, 0x20, 0x7b, 0x3f, 0x4e,
|
||||
0x63, 0x21, 0x39, 0xe4, 0x33, 0x5b, 0x28, 0x8f, 0xa0, 0x9e, 0xe1, 0x5c, 0x72, 0x69, 0x29, 0x3a, 0xf2, 0xb7, 0x90, 0xca,
|
||||
0x01, 0xe6, 0x8b, 0xd7, 0x4f, 0x1f, 0xf6, 0x90, 0x41, 0x36, 0xe3, 0x44, 0xc7, 0xf6, 0x7e, 0xae, 0x17, 0x96, 0x26, 0x70,
|
||||
0x83, 0xf5, 0x2c, 0xeb, 0x30, 0x45, 0x70, 0xa7, 0x7b, 0x7d, 0xcb, 0xc5, 0x0c, 0xf1, 0x2b, 0x3d, 0x93, 0x6d, 0xf4, 0x72,
|
||||
0xf9, 0xa6, 0xf3, 0x1e, 0x99, 0x64, 0xb1, 0x8d, 0x16, 0xa2, 0xcb, 0xe6, 0x19, 0xb6, 0xf2, 0x18, 0x83, 0x19, 0xc3, 0x0a,
|
||||
0x16, 0x5a, 0xbc, 0x0a, 0x1e, 0x3a, 0x90, 0x44, 0x2e, 0x75, 0xc4, 0xb2, 0x2c, 0xae, 0xa4, 0x1e, 0xcd, 0x58, 0xc0, 0x67,
|
||||
0xe5, 0xfe, 0xee, 0x94, 0x65, 0x1c, 0x82, 0xed, 0x28, 0x10, 0xdd, 0xa7, 0xde, 0x92, 0x14, 0xda, 0x58, 0xf5, 0xff, 0x17,
|
||||
0xd7, 0xba, 0x6e, 0x7f, 0x16, 0x0b, 0x88, 0xa0, 0x0e, 0xdf, 0x1a, 0xf7, 0xa6, 0xcc, 0x13, 0x16, 0xe7, 0xdb, 0x7a, 0xc6,
|
||||
0x13, 0xc2, 0x69, 0xac, 0xe7, 0x4f, 0x82, 0xb3, 0x31, 0x83, 0x9b, 0x8c, 0xe7, 0xf8, 0x5b, 0xae, 0x11, 0xea, 0xde, 0x48,
|
||||
0xc3, 0x80, 0x97, 0x7a, 0xef, 0xf2, 0xdb, 0x48, 0xe2, 0x6d, 0x1a, 0x07, 0xd9, 0x7a, 0xde, 0x7a, 0xfb, 0x99, 0x4d, 0x23,
|
||||
0xb1, 0xf4, 0x4e, 0xbe, 0xa2, 0x06, 0x61, 0xcc, 0x36, 0xee, 0xb6, 0x13, 0x79, 0x80, 0x0f, 0x4a, 0xf5, 0x6d, 0x8f, 0x58,
|
||||
0xdd, 0x6a, 0xcf, 0xf3, 0x12, 0xcb, 0xb8, 0xd3, 0xa2, 0xff, 0xc5, 0x8e, 0x47, 0x70, 0x7b, 0x39, 0xf5, 0xaf, 0xc9, 0x35,
|
||||
0xce, 0xfd, 0xb3, 0xcd, 0xb4, 0xa7, 0xff, 0x19, 0xae, 0x66, 0x34, 0x75, 0xad, 0xfa, 0x7f, 0xcf, 0x14, 0xbe, 0x64, 0x07,
|
||||
0xd1, 0xe2, 0x3d, 0xda, 0x90, 0x02, 0xc7, 0xd5, 0xd4, 0xc0, 0xd2, 0x46, 0xde, 0x23, 0x48, 0xe5, 0x02, 0xb1, 0x24, 0xd9,
|
||||
0x39, 0xbb, 0x09, 0x42, 0x74, 0xc7, 0x20, 0xbe, 0x75, 0xfe, 0xba, 0x9f, 0x0f, 0x2b, 0x38, 0xfa, 0x75, 0x64, 0x2d, 0x1b,
|
||||
0xe9, 0x6e, 0xf1, 0xc2, 0x7d, 0xeb, 0x63, 0xa4, 0xa5, 0x87, 0x8b, 0x26, 0x85, 0xb1, 0xc2, 0x08, 0xda, 0x83, 0x9e, 0x8e,
|
||||
0xb7, 0x63, 0xa9, 0x50, 0x6b, 0x3f, 0x0d, 0x88, 0x60, 0x22, 0xb3, 0x89, 0x62, 0x30, 0x21, 0x6c, 0xa6, 0xad, 0xd8, 0xfe,
|
||||
0x3f, 0xd2, 0x9d, 0xdb, 0x2c, 0xae, 0xe7, 0x2c, 0xae, 0xa2, 0x09, 0xdd, 0x58, 0xe5, 0xe2, 0xbb, 0x0d, 0xe4, 0x1a, 0x68,
|
||||
0xc1, 0x58, 0x62, 0x45, 0xf7, 0xfd, 0xed, 0xac, 0x27, 0xc4, 0x45, 0xff, 0x6c, 0xe6, 0xd1, 0x85, 0x2e, 0xc4, 0x98, 0x08,
|
||||
0x8e, 0x13, 0xb9, 0x8c, 0x9d, 0x0c, 0x61, 0x35, 0xab, 0xb8, 0xc5, 0xba, 0xf7, 0xb1, 0x7c, 0x6a, 0x29, 0x79, 0x92, 0x4f,
|
||||
0xe9, 0xc6, 0xd5, 0xec, 0x11, 0xfa, 0xd8, 0xfe, 0xec, 0xf3, 0xad, 0xf5, 0x4d, 0x85, 0xd4, 0x3f, 0x83, 0xa3, 0x4c, 0x70,
|
||||
0x19, 0xa3, 0x1b, 0xfa, 0xa8, 0xe5, 0xe2, 0xb6, 0x4a, 0xe3, 0x19, 0xeb, 0xf8, 0x9a, 0x21, 0x1c, 0x7f, 0x0f, 0x3e, 0xc2,
|
||||
0xc3, 0x28, 0xd6, 0xd0, 0x81, 0xaf, 0xf9, 0x3f, 0xe3, 0x57, 0xbd, 0x59, 0xf4, 0x46, 0xc6, 0x9a, 0xb1, 0xa9, 0x90, 0xb3,
|
||||
0x44, 0xfd, 0x33, 0x48, 0x22, 0x93, 0x3d, 0xe5, 0x88, 0xf1, 0x28, 0x1d, 0x29, 0x93, 0xc2, 0x61, 0x1e, 0x17, 0xda, 0xa0,
|
||||
0x3e, 0x89, 0x26, 0x6a, 0xc3, 0xae, 0xff, 0xa5, 0xce, 0xb8, 0xde, 0x93, 0x03, 0x42, 0xfd, 0xe1, 0xa4, 0xb1, 0x94, 0x5e,
|
||||
0x0c, 0x23, 0xd9, 0xd2, 0x83, 0x85, 0x13, 0xcf, 0x95, 0x96, 0xe3, 0x6a, 0xc7, 0x4e, 0xf6, 0x91, 0xce, 0x5c, 0xc1, 0x97,
|
||||
0x7f, 0x3a, 0x09, 0x4c, 0x24, 0x92, 0x61, 0xec, 0xe2, 0x47, 0xa1, 0x6e, 0x5f, 0x71, 0xc4, 0x8c, 0x14, 0x34, 0x0c, 0xe3,
|
||||
0x11, 0xd2, 0x99, 0x16, 0x74, 0xdf, 0x5f, 0x72, 0x87, 0xde, 0xcc, 0x3e, 0x96, 0x59, 0x62, 0x58, 0x2f, 0x22, 0x9d, 0x4b,
|
||||
0x85, 0xe5, 0x23, 0x78, 0x19, 0x0f, 0xaf, 0xf0, 0xa0, 0x71, 0x24, 0x79, 0xf5, 0x9f, 0xc4, 0x70, 0xd1, 0x35, 0xb7, 0x97,
|
||||
0x19, 0xcc, 0x20, 0x43, 0xf4, 0xb2, 0x15, 0xf7, 0xff, 0x3d, 0x28, 0x74, 0x89, 0x5c, 0x09, 0x84, 0x26, 0x6c, 0x13, 0x9c,
|
||||
0x97, 0xa3, 0x38, 0xcc, 0x3e, 0xf6, 0x11, 0x07, 0xc4, 0xd2, 0x49, 0xf0, 0xd2, 0x5c, 0xe6, 0x3c, 0x81, 0x77, 0xe6, 0xa0,
|
||||
0xd0, 0x03, 0x0e, 0xe3, 0x88, 0xe3, 0x24, 0xbf, 0xcb, 0x17, 0xc5, 0x70, 0x62, 0x6c, 0xd5, 0x66, 0x6b, 0xec, 0x42, 0x16,
|
||||
0x57, 0x1b, 0x7d, 0xa6, 0xb0, 0x5c, 0xbc, 0x3a, 0x3e, 0x64, 0x37, 0x1f, 0x30, 0x92, 0x2f, 0x85, 0x5e, 0x3b, 0x5b, 0x18,
|
||||
0xcd, 0x1a, 0x53, 0x60, 0x79, 0xca, 0xaa, 0xcf, 0x54, 0xb2, 0x79, 0xa6, 0x1c, 0x1e, 0xbb, 0xbe, 0x7c, 0xcd, 0x16, 0x2e,
|
||||
0xb7, 0x96, 0xbf, 0xca, 0x64, 0x4b, 0x84, 0xc5, 0x7c, 0x13, 0x73, 0xf6, 0xba, 0xf1, 0xa3, 0x4e, 0xc0, 0xc3, 0x5a, 0x21,
|
||||
0xf6, 0x34, 0x82, 0x2c, 0xee, 0x63, 0x08, 0x43, 0x78, 0x9e, 0x2d, 0x2e, 0xfa, 0x7b, 0xd8, 0x62, 0x71, 0x8f, 0x97, 0x1d,
|
||||
0x75, 0xd2, 0xcb, 0xe7, 0xb1, 0xfd, 0x40, 0x78, 0x7b, 0x69, 0x6b, 0xb8, 0x10, 0xe8, 0x2c, 0xbc, 0x89, 0x85, 0x90, 0x60,
|
||||
0x46, 0xc5, 0x08, 0xe6, 0xb3, 0x48, 0x74, 0x7e, 0xe7, 0xfa, 0xfa, 0x98, 0xed, 0xe2, 0xe8, 0xba, 0x53, 0x7c, 0xea, 0x28,
|
||||
0x8a, 0xab, 0x8d, 0xf3, 0x8d, 0xcf, 0x79, 0x42, 0x7c, 0x63, 0x47, 0x9f, 0x73, 0xf2, 0xad, 0x00, 0x63, 0x2c, 0x6f, 0x37,
|
||||
0x31, 0xea, 0x36, 0xda, 0xb0, 0x38, 0x68, 0xa7, 0x6c, 0x03, 0x12, 0xb9, 0xc3, 0xd5, 0x4f, 0xd6, 0x82, 0x26, 0xe2, 0xf2,
|
||||
0xc6, 0x26, 0x6a, 0xb8, 0x35, 0xa9, 0xc4, 0xf0, 0x3c, 0x71, 0x7c, 0xce, 0x5f, 0x84, 0xb5, 0xae, 0xe5, 0x07, 0xdf, 0xf9,
|
||||
0x1e, 0xa2, 0xbd, 0xa0, 0x7f, 0x0f, 0x33, 0x3a, 0xdf, 0x44, 0xa1, 0x25, 0xba, 0xae, 0x2c, 0xce, 0x27, 0xd7, 0xf4, 0x5c,
|
||||
0xb5, 0xd9, 0x64, 0x7a, 0x21, 0xdb, 0x5b, 0xac, 0xad, 0xff, 0xef, 0x4d, 0x02, 0xfb, 0xc8, 0x60, 0x95, 0xf8, 0x7c, 0x17,
|
||||
0xc2, 0x36, 0x46, 0x99, 0x5f, 0x00, 0x96, 0xf3, 0x8a, 0x18, 0x39, 0xf6, 0x83, 0xf5, 0x97, 0x87, 0x26, 0x14, 0x9a, 0x68,
|
||||
0xd1, 0x10, 0x26, 0x99, 0xe8, 0xcf, 0x13, 0x63, 0xa2, 0x8f, 0x98, 0xbb, 0xae, 0x2d, 0xe9, 0x5c, 0x18, 0xf0, 0x38, 0x17,
|
||||
0x59, 0xe6, 0xdb, 0x7a, 0xb0, 0x6f, 0x4f, 0x65, 0x39, 0xe5, 0xdb, 0x73, 0xae, 0xa5, 0x64, 0x81, 0x89, 0x75, 0x8e, 0x30,
|
||||
0x7d, 0x4e, 0x35, 0x4b, 0xe4, 0xd9, 0xc2, 0x52, 0x31, 0x6c, 0xd2, 0xd5, 0x99, 0x65, 0xfc, 0xdd, 0x87, 0xd9, 0x2a, 0x44,
|
||||
0x06, 0x07, 0xca, 0x13, 0xe4, 0xf3, 0x3d, 0xb9, 0xcc, 0xb4, 0xbc, 0xc1, 0x97, 0x1d, 0x2d, 0xd2, 0xd2, 0x25, 0xc2, 0xb0,
|
||||
0x13, 0xbb, 0x89, 0x23, 0x8b, 0x0f, 0x83, 0x8c, 0x28, 0x2a, 0x1a, 0x3d, 0x52, 0xf9, 0x96, 0x04, 0x36, 0x89, 0xbf, 0x0e,
|
||||
0x0c, 0x27, 0x9b, 0x58, 0xb2, 0x5d, 0x7e, 0x77, 0xaa, 0x0a, 0x2c, 0xe1, 0x6f, 0xd6, 0x5f, 0xb6, 0x36, 0x31, 0x93, 0x9e,
|
||||
0x34, 0xa4, 0xb9, 0xaf, 0x17, 0x3f, 0x35, 0xd4, 0xa2, 0x7d, 0x39, 0xd4, 0x09, 0x9c, 0xe6, 0x41, 0x45, 0x13, 0x1e, 0xff,
|
||||
0x7c, 0xd1, 0xda, 0xfa, 0xde, 0xe8, 0x2d, 0x3d, 0xb7, 0x9c, 0xf9, 0x2d, 0x7e, 0x39, 0x22, 0x5c, 0x8e, 0x30, 0x84, 0x5b,
|
||||
0x98, 0xce, 0x67, 0x2c, 0xb7, 0x64, 0xcd, 0x50, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51,
|
||||
0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x94, 0xf2, 0xba, 0x80, 0xeb, 0xbb, 0x3a, 0xcc, 0x77, 0x31, 0x4f, 0xfc, 0x8e, 0x1d,
|
||||
0xeb, 0xf3, 0xef, 0x8f, 0x71, 0x29, 0x1b, 0x66, 0xfd, 0x7e, 0xd7, 0xc0, 0xba, 0xd7, 0x62, 0x37, 0x66, 0x3f, 0xc1, 0xdd,
|
||||
0x17, 0x6b, 0xf1, 0x6a, 0x7a, 0xd9, 0x2a, 0xe4, 0x07, 0x2c, 0x5e, 0xff, 0x4a, 0x62, 0x85, 0xcc, 0x5f, 0x6e, 0x5b, 0xdb,
|
||||
0xc1, 0xe8, 0x52, 0x1e, 0xa1, 0x54, 0x21, 0x7b, 0x75, 0xac, 0xcf, 0x97, 0xd5, 0xc7, 0x9a, 0x6f, 0x30, 0xcc, 0xe5, 0x3c,
|
||||
0xbd, 0xed, 0x93, 0xcc, 0x22, 0xab, 0x4b, 0xc0, 0xdb, 0x4a, 0xee, 0xda, 0x24, 0xb1, 0xb4, 0x42, 0xf9, 0xcc, 0xea, 0x32,
|
||||
0x9f, 0x43, 0x14, 0x10, 0x2b, 0xfa, 0xa8, 0xbd, 0x1e, 0xac, 0x46, 0x5c, 0xc8, 0x74, 0x72, 0x84, 0x2f, 0xb1, 0xde, 0xbc,
|
||||
0x8e, 0x8d, 0x0c, 0x35, 0x2d, 0x35, 0xbd, 0xd4, 0x10, 0xbf, 0x7e, 0x7b, 0xf7, 0x9a, 0x4f, 0xa2, 0x98, 0x9f, 0x36, 0xcb,
|
||||
0xe7, 0x45, 0xbf, 0xca, 0xe7, 0xf3, 0x94, 0x4a, 0xfd, 0x89, 0x13, 0x22, 0x49, 0x8a, 0xd6, 0xbf, 0x80, 0x2c, 0xfa, 0xb9,
|
||||
0xee, 0xcb, 0x9f, 0x24, 0xbe, 0xf7, 0xb9, 0x1a, 0x1f, 0x03, 0xfa, 0x0b, 0xb5, 0x0f, 0x39, 0xad, 0x7f, 0x85, 0x2f, 0x4f,
|
||||
0xf3, 0xf1, 0x3e, 0xc5, 0x19, 0x14, 0x52, 0x40, 0x92, 0xe8, 0x80, 0xcd, 0x62, 0x00, 0x67, 0xd2, 0x82, 0x37, 0x45, 0x77,
|
||||
0x97, 0xd7, 0xf7, 0x39, 0x87, 0x83, 0x14, 0x90, 0x68, 0xa9, 0xdd, 0x9f, 0xfa, 0xb4, 0xe0, 0x2d, 0x76, 0x55, 0x20, 0xa7,
|
||||
0xd5, 0x3c, 0x56, 0x52, 0x9f, 0x10, 0x86, 0x50, 0x20, 0x38, 0x90, 0x4b, 0x5a, 0x67, 0x0d, 0x2f, 0xba, 0xf8, 0xcf, 0x82,
|
||||
0x6b, 0x57, 0x0f, 0xff, 0x60, 0x85, 0xb9, 0x2b, 0xfa, 0x93, 0x2f, 0xf8, 0x77, 0x2a, 0x5f, 0xff, 0x56, 0xa4, 0x58, 0x1c,
|
||||
0x72, 0xee, 0xfa, 0x67, 0x3b, 0xee, 0xd4, 0x30, 0x7e, 0x34, 0xed, 0xed, 0x5f, 0x7b, 0x21, 0xeb, 0xcc, 0x35, 0x22, 0xeb,
|
||||
0x3f, 0x93, 0x75, 0x26, 0x02, 0xe8, 0x2a, 0x0a, 0x84, 0x9c, 0xea, 0xc5, 0xed, 0x77, 0x06, 0x88, 0xfe, 0xde, 0x77, 0xf9,
|
||||
0x27, 0x8d, 0x08, 0x61, 0x20, 0xf9, 0x65, 0xd4, 0x6e, 0x51, 0x4e, 0xf5, 0x1b, 0xf0, 0x13, 0xe7, 0x38, 0x7f, 0xcf, 0x37,
|
||||
0x5e, 0x2d, 0x5b, 0xeb, 0x3c, 0xc4, 0xbf, 0x84, 0xd2, 0x2b, 0xa8, 0x6b, 0x08, 0x0b, 0xaa, 0x5d, 0x1b, 0x71, 0xcc, 0x77,
|
||||
0xbe, 0xd1, 0xe2, 0x5e, 0x87, 0x9a, 0x99, 0x0d, 0x5a, 0x71, 0x67, 0xa5, 0xe8, 0x7f, 0x2d, 0x7b, 0x85, 0xd8, 0x9e, 0x40,
|
||||
0xf4, 0x9f, 0xe4, 0x78, 0xf7, 0x6f, 0x60, 0x3d, 0x5f, 0x88, 0xfa, 0x77, 0x65, 0xbb, 0xf1, 0x6f, 0x48, 0xfa, 0xd7, 0xe3,
|
||||
0x98, 0xcf, 0x73, 0xf6, 0x22, 0xff, 0xb0, 0x2a, 0xd8, 0x86, 0x9f, 0x05, 0xbf, 0x72, 0x7d, 0x8e, 0xf9, 0xc6, 0x85, 0x49,
|
||||
0x2c, 0xb4, 0xd6, 0xee, 0xca, 0x7f, 0x2d, 0xf1, 0x41, 0x65, 0xd3, 0x83, 0x0c, 0xd7, 0xf2, 0x92, 0xd6, 0xb9, 0x45, 0x38,
|
||||
0xbf, 0x2c, 0xf2, 0xc9, 0x31, 0x74, 0x15, 0xca, 0x52, 0x89, 0x37, 0xf8, 0xf7, 0x4d, 0xbd, 0x48, 0x29, 0x63, 0xaf, 0x69,
|
||||
0x24, 0x18, 0xd2, 0x2b, 0x45, 0xff, 0x0c, 0xd2, 0x44, 0x97, 0x68, 0xd9, 0xfa, 0x77, 0x22, 0xd5, 0xb8, 0xcf, 0x56, 0x33,
|
||||
0xd4, 0xa2, 0x7f, 0x47, 0xba, 0x93, 0x43, 0x73, 0x51, 0xff, 0x1e, 0xa5, 0x66, 0xe6, 0x19, 0x2a, 0x38, 0x60, 0xb3, 0xf8,
|
||||
0x0b, 0xa3, 0x19, 0xc7, 0x2e, 0xde, 0x16, 0xf6, 0xde, 0xb3, 0x54, 0x2e, 0xec, 0xa1, 0x6c, 0x13, 0x6a, 0xbf, 0xc7, 0x64,
|
||||
0x66, 0x92, 0xca, 0xe3, 0xe5, 0xee, 0xfd, 0x07, 0xfa, 0x1c, 0xa6, 0x65, 0xb5, 0xce, 0x03, 0xac, 0x09, 0xb2, 0xff, 0xbf,
|
||||
0x89, 0x36, 0x06, 0xfb, 0x5e, 0x27, 0xb2, 0x80, 0x05, 0xdc, 0x73, 0xd2, 0xfb, 0xff, 0xc9, 0xb4, 0xe3, 0xa0, 0xf8, 0x7c,
|
||||
0x53, 0x96, 0xfe, 0x91, 0x4c, 0xe0, 0x65, 0x3a, 0x12, 0x4b, 0x98, 0x55, 0x7f, 0xef, 0xcc, 0x1d, 0x2b, 0x45, 0xfd, 0x07,
|
||||
0x9a, 0xe8, 0x0d, 0x8f, 0xf3, 0xf4, 0x99, 0x20, 0xd4, 0xfe, 0x88, 0xd9, 0xfc, 0x9d, 0xe1, 0xe2, 0xf8, 0x3d, 0x90, 0x3d,
|
||||
0xa5, 0x6a, 0xff, 0x28, 0xd4, 0x9e, 0xca, 0xa3, 0xac, 0x12, 0xe7, 0xe4, 0x09, 0x94, 0x4b, 0xca, 0xbc, 0x13, 0x8b, 0x5b,
|
||||
0xe7, 0x63, 0xc1, 0xc9, 0x5e, 0xde, 0xf1, 0xff, 0x12, 0x52, 0x1d, 0x17, 0xfc, 0xcd, 0x7c, 0x20, 0x5c, 0xfb, 0xc1, 0xeb,
|
||||
0x5f, 0xcb, 0x89, 0xc4, 0x4d, 0x12, 0xf2, 0xa8, 0x16, 0xad, 0xff, 0x28, 0xc9, 0xe2, 0x93, 0x74, 0x59, 0xfa, 0x37, 0x21,
|
||||
0x8d, 0x77, 0x8d, 0x57, 0xd7, 0xae, 0x7f, 0x4d, 0xf6, 0x32, 0x4b, 0xd0, 0xbf, 0xb7, 0x73, 0x9e, 0x1e, 0x33, 0x73, 0xc5,
|
||||
0xce, 0xa0, 0xda, 0xef, 0xf8, 0x5e, 0xf2, 0x7a, 0xb1, 0xf7, 0xb8, 0xd8, 0xc4, 0xb4, 0x1c, 0xa9, 0xc0, 0xfc, 0x69, 0xde,
|
||||
0x91, 0xb8, 0xb1, 0x2f, 0x92, 0xea, 0x7a, 0x61, 0x1f, 0xbd, 0x89, 0xa0, 0x25, 0x13, 0x29, 0x10, 0xe2, 0x9f, 0xb3, 0xe8,
|
||||
0x65, 0xe6, 0x46, 0x0a, 0x17, 0xae, 0x5f, 0xb7, 0x76, 0x6d, 0xcc, 0xcf, 0x3e, 0x5f, 0xfc, 0x14, 0xfe, 0x5a, 0x09, 0xfa,
|
||||
0x7f, 0xc6, 0x2b, 0x84, 0xd2, 0x85, 0xff, 0x08, 0x71, 0x3c, 0x45, 0xeb, 0x87, 0xb2, 0x41, 0x8c, 0x33, 0xcd, 0xa2, 0x0f,
|
||||
0xd5, 0x0d, 0xa1, 0xa2, 0xfe, 0xde, 0x99, 0xeb, 0xf2, 0xcc, 0xf8, 0x6a, 0xd7, 0xdf, 0x1b, 0x07, 0x75, 0x4c, 0xd0, 0xbf,
|
||||
0xf4, 0x79, 0x3e, 0x2d, 0x44, 0x01, 0xba, 0xeb, 0xdf, 0xd0, 0xa9, 0xfd, 0x2c, 0x7f, 0x60, 0xbc, 0x70, 0xec, 0xc5, 0xb5,
|
||||
0xdf, 0x67, 0x66, 0x05, 0x7a, 0x80, 0xa5, 0x2c, 0x34, 0x6f, 0x68, 0x3d, 0xc9, 0x13, 0xe2, 0xd0, 0x8b, 0x1c, 0xe6, 0xa9,
|
||||
0xac, 0x10, 0x67, 0x46, 0xcb, 0xf2, 0xe5, 0x18, 0x7f, 0x28, 0xc8, 0xe7, 0xff, 0x8f, 0x58, 0x64, 0xbc, 0xf3, 0x9d, 0x49,
|
||||
0xb7, 0xde, 0xb1, 0xc1, 0xe8, 0x7f, 0x11, 0xc9, 0xe6, 0x5d, 0xec, 0x51, 0x97, 0x3b, 0xbc, 0x2d, 0x07, 0x85, 0xb7, 0xcd,
|
||||
0x92, 0x73, 0x18, 0x66, 0xd1, 0xbf, 0xb1, 0x33, 0xaf, 0x85, 0x9b, 0xfe, 0xde, 0x48, 0xad, 0x1d, 0x62, 0xeb, 0x2e, 0x36,
|
||||
0xde, 0xea, 0x6e, 0x4e, 0x34, 0x53, 0x30, 0xfa, 0x7b, 0x58, 0xc4, 0x62, 0x6a, 0xd1, 0x85, 0x5c, 0x72, 0x84, 0x18, 0xa3,
|
||||
0xe2, 0xda, 0xdd, 0x39, 0x62, 0xe6, 0x47, 0x28, 0x1f, 0x8d, 0x59, 0xc5, 0x41, 0x12, 0xc9, 0x2c, 0x67, 0x04, 0x51, 0xf9,
|
||||
0x68, 0xca, 0x27, 0x1c, 0x66, 0xbf, 0x99, 0x37, 0xac, 0xb2, 0x7e, 0xc3, 0x6a, 0x53, 0x69, 0x33, 0x71, 0x55, 0x1e, 0x8d,
|
||||
0xf9, 0x88, 0x43, 0x24, 0x92, 0x17, 0xf4, 0x2c, 0x71, 0x45, 0x3d, 0xc0, 0x52, 0x0a, 0x88, 0x37, 0xbf, 0x1f, 0xd4, 0x3c,
|
||||
0x89, 0x47, 0x59, 0x97, 0xd6, 0xa7, 0xc0, 0x49, 0x5f, 0x87, 0xc8, 0x72, 0xcc, 0xc3, 0xf3, 0xeb, 0xa3, 0x4e, 0x85, 0x5a,
|
||||
0xb7, 0x36, 0x2d, 0x09, 0x65, 0x79, 0x95, 0xcc, 0x5a, 0xaf, 0xfc, 0x52, 0x84, 0x54, 0xc9, 0xac, 0xf5, 0x8a, 0xa2, 0x28,
|
||||
0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x54, 0xdd, 0x6f, 0x0b, 0x67, 0x59,
|
||||
0xf2, 0x7f, 0x6d, 0x2d, 0x95, 0xa1, 0xff, 0x3d, 0xbf, 0xd2, 0xea, 0xe4, 0xfa, 0xdc, 0x0d, 0xb7, 0x0b, 0x39, 0x3a, 0x17,
|
||||
0xf1, 0x82, 0xef, 0xef, 0xc5, 0xa5, 0x32, 0xd9, 0x95, 0x78, 0x36, 0x1e, 0x76, 0x5c, 0x72, 0xb9, 0x8e, 0xbb, 0xe0, 0x59,
|
||||
0x21, 0x97, 0xf3, 0x6b, 0xac, 0x70, 0x3c, 0xd8, 0x03, 0x88, 0xe3, 0x4c, 0xbf, 0xf2, 0x0f, 0x7d, 0xbe, 0xe4, 0xfb, 0xd8,
|
||||
0x24, 0x7c, 0x67, 0xeb, 0x57, 0xea, 0x1c, 0xfc, 0x1d, 0x18, 0x43, 0x19, 0xc3, 0x18, 0xe1, 0xbb, 0xf1, 0x70, 0x6b, 0x3e,
|
||||
0xf6, 0x6b, 0x4d, 0x0d, 0xc9, 0x49, 0x74, 0x29, 0xb9, 0xe2, 0xf7, 0xfc, 0xba, 0xdc, 0xe8, 0xe3, 0x12, 0xa1, 0x15, 0xa3,
|
||||
0x2d, 0xf1, 0x01, 0x83, 0xd9, 0xc1, 0x01, 0x36, 0x0a, 0x99, 0x5d, 0xef, 0x71, 0xcd, 0x54, 0xd8, 0x8e, 0xd5, 0xe4, 0xb1,
|
||||
0xd5, 0x9a, 0x57, 0xf7, 0x78, 0x6e, 0x24, 0x89, 0x14, 0x0e, 0xb2, 0x4c, 0x38, 0x63, 0x6f, 0xd6, 0xee, 0x9e, 0x1c, 0x35,
|
||||
0x2e, 0x7e, 0xff, 0x3d, 0xd6, 0x28, 0xe5, 0x5a, 0x1e, 0x25, 0xb8, 0x03, 0xef, 0x20, 0xd1, 0x51, 0xae, 0x3e, 0x47, 0xb9,
|
||||
0xc8, 0xaf, 0x3c, 0x9a, 0x95, 0xe6, 0xff, 0x71, 0xe0, 0xe4, 0xaf, 0xde, 0x28, 0x38, 0x19, 0xeb, 0x93, 0x66, 0x9c, 0x09,
|
||||
0xb5, 0xd8, 0x27, 0xe6, 0x10, 0xee, 0xc4, 0x41, 0xe3, 0xd2, 0xa8, 0x27, 0xfa, 0xb3, 0xbd, 0x19, 0xd8, 0xce, 0x34, 0xb4,
|
||||
0x22, 0x4d, 0xc8, 0xfe, 0x1f, 0xc3, 0x3b, 0x3c, 0x29, 0x9c, 0xdb, 0x12, 0x6e, 0xb3, 0xb4, 0xd7, 0x70, 0x9e, 0x24, 0x4f,
|
||||
0xcc, 0xb6, 0xbb, 0x84, 0x89, 0xc2, 0x5d, 0xe2, 0xe1, 0x2c, 0xa6, 0xfa, 0x18, 0x2d, 0x94, 0x0f, 0x13, 0x73, 0xbf, 0x47,
|
||||
0x90, 0xcf, 0x50, 0xc2, 0x78, 0x4a, 0x88, 0x2b, 0x39, 0x2a, 0xe6, 0x0a, 0x2f, 0x8e, 0x36, 0xf1, 0x66, 0x63, 0xaf, 0x47,
|
||||
0x14, 0xf9, 0x01, 0xf8, 0x21, 0xce, 0xa6, 0x90, 0xde, 0x26, 0x1f, 0xf9, 0x32, 0x8b, 0x43, 0xb6, 0x1d, 0x47, 0x2d, 0x75,
|
||||
0xcb, 0xd2, 0xbf, 0x36, 0x07, 0x9d, 0xeb, 0x7d, 0x24, 0xbb, 0x85, 0xfa, 0x7d, 0xc8, 0x33, 0xf7, 0xeb, 0x67, 0x2c, 0x31,
|
||||
0xb9, 0x67, 0x6b, 0x71, 0x84, 0xf3, 0x85, 0xf5, 0x6e, 0x22, 0x8b, 0x86, 0xbc, 0xc0, 0x2a, 0xcb, 0x71, 0xbc, 0x6a, 0x7a,
|
||||
0x8d, 0x57, 0x58, 0xec, 0x7a, 0xa6, 0x33, 0x98, 0x27, 0x2c, 0x8d, 0x11, 0x5c, 0x39, 0x5e, 0xa2, 0x98, 0xeb, 0xb2, 0xad,
|
||||
0x44, 0x41, 0xff, 0x56, 0x6c, 0x21, 0x94, 0x1d, 0x82, 0x4b, 0xae, 0x6c, 0xba, 0x0a, 0x3e, 0x88, 0x30, 0x27, 0xde, 0xa6,
|
||||
0x13, 0x05, 0x41, 0xe9, 0xdf, 0x91, 0x7c, 0x67, 0x6b, 0xcd, 0x02, 0xc8, 0xe8, 0x39, 0x90, 0x74, 0xe7, 0xcb, 0x72, 0x2b,
|
||||
0x61, 0x7e, 0x8b, 0x8a, 0xe9, 0xef, 0xe1, 0x3d, 0xa6, 0x38, 0xde, 0xd1, 0xa7, 0x44, 0xc7, 0x4e, 0x1e, 0xdd, 0x89, 0x20,
|
||||
0x8f, 0x0e, 0xa4, 0x13, 0x42, 0x3f, 0x52, 0x2c, 0x79, 0xd8, 0x17, 0xb3, 0x96, 0x2c, 0xab, 0xc7, 0xe9, 0x0c, 0xd2, 0x19,
|
||||
0xc5, 0x01, 0xd7, 0x18, 0x88, 0xab, 0x2d, 0xee, 0x4f, 0x9b, 0xfe, 0xe7, 0xfa, 0xda, 0x25, 0x50, 0xfd, 0xef, 0x35, 0x31,
|
||||
0x3a, 0x77, 0x59, 0xf2, 0x9c, 0x97, 0x67, 0x54, 0x7e, 0x81, 0x38, 0x62, 0xd9, 0x4f, 0xa1, 0xa0, 0x7f, 0x14, 0x5b, 0xc9,
|
||||
0x60, 0xa6, 0x90, 0xb1, 0xba, 0x7f, 0x19, 0x8e, 0xee, 0x13, 0x1d, 0x46, 0x39, 0xbc, 0xc7, 0xef, 0x5c, 0xfc, 0x29, 0x15,
|
||||
0xd1, 0x7f, 0x10, 0x89, 0x84, 0x52, 0x8f, 0xff, 0x88, 0x19, 0x5c, 0xbd, 0xee, 0xb8, 0x3f, 0xd2, 0xdb, 0xe4, 0xef, 0xde,
|
||||
0x41, 0x27, 0xa2, 0xc5, 0x79, 0x32, 0x3c, 0x26, 0x8f, 0x34, 0xc2, 0xf3, 0x43, 0x09, 0xa3, 0x81, 0xe7, 0x5c, 0xca, 0xeb,
|
||||
0x91, 0x64, 0x99, 0xa7, 0xc4, 0xa6, 0xbf, 0x87, 0x9d, 0x2e, 0xb3, 0xf2, 0x24, 0x56, 0x30, 0xdb, 0x7a, 0x60, 0xce, 0xfc,
|
||||
0x6c, 0xd3, 0x97, 0x74, 0x12, 0xf5, 0xff, 0x9c, 0xe6, 0x34, 0x23, 0xa6, 0xd4, 0x13, 0x56, 0x31, 0xe7, 0x73, 0x20, 0x28,
|
||||
0xaf, 0x48, 0x67, 0x16, 0x99, 0x28, 0x8e, 0xbf, 0x5b, 0xb2, 0xb4, 0x56, 0x44, 0xff, 0x70, 0xd2, 0xe9, 0xc5, 0x48, 0xbe,
|
||||
0xb0, 0x6c, 0xe1, 0x3e, 0x96, 0xf3, 0xb4, 0xc9, 0x6b, 0x3c, 0x95, 0xfb, 0x59, 0xcf, 0xad, 0x96, 0xf5, 0x96, 0x10, 0x43,
|
||||
0xb2, 0xf5, 0x89, 0xcc, 0x1b, 0x23, 0x89, 0xe5, 0x0a, 0x2b, 0x8e, 0xa3, 0x7a, 0xc7, 0x52, 0x62, 0xd7, 0x7f, 0x32, 0x4f,
|
||||
0x9e, 0x52, 0xfd, 0x07, 0x93, 0x6c, 0x14, 0x79, 0x5a, 0xd4, 0xbf, 0xc8, 0x0d, 0x3a, 0x84, 0xef, 0x84, 0x36, 0x8f, 0x33,
|
||||
0x6e, 0xdc, 0x0b, 0x88, 0x75, 0xc9, 0x9d, 0x7b, 0x62, 0x9d, 0x81, 0x6c, 0xb5, 0x8c, 0x9f, 0x76, 0xfd, 0x43, 0x38, 0x40,
|
||||
0x0f, 0xe7, 0xef, 0xe7, 0x84, 0xf8, 0xa4, 0xa2, 0xa7, 0xf7, 0xa9, 0xac, 0x24, 0xca, 0xb2, 0x85, 0x48, 0x72, 0x59, 0x67,
|
||||
0xe6, 0x47, 0x18, 0xcc, 0x4a, 0x0e, 0x59, 0x66, 0xe7, 0xf9, 0x3d, 0xf1, 0x9c, 0xce, 0x72, 0x31, 0x46, 0xa6, 0x88, 0x50,
|
||||
0xd7, 0x08, 0xb8, 0x1b, 0x9c, 0x96, 0x0c, 0x4e, 0xff, 0x01, 0xd6, 0xab, 0xf6, 0x97, 0xd1, 0xbf, 0x1a, 0x8b, 0x38, 0xcc,
|
||||
0x6e, 0x5e, 0x17, 0xf5, 0x8f, 0x74, 0x5c, 0xcf, 0xd9, 0x42, 0xcd, 0x8b, 0xd9, 0x4b, 0x1e, 0x79, 0x42, 0x4c, 0xb6, 0x14,
|
||||
0x89, 0x71, 0x99, 0xef, 0xbd, 0x26, 0x25, 0x48, 0xfd, 0xbd, 0x11, 0x83, 0x9f, 0x9a, 0x67, 0xe7, 0x0e, 0xa4, 0x89, 0xb3,
|
||||
0x57, 0x78, 0xdf, 0xed, 0xd2, 0x28, 0xb0, 0x46, 0x30, 0x7b, 0x63, 0x98, 0x0b, 0xcc, 0xac, 0x6b, 0xb5, 0x39, 0xc2, 0xbf,
|
||||
0x2d, 0x11, 0x8a, 0x69, 0x26, 0x72, 0xe7, 0x1c, 0xf2, 0x19, 0x50, 0x0e, 0xfd, 0xcf, 0x24, 0x8d, 0xeb, 0xa9, 0x66, 0x08,
|
||||
0x0b, 0x42, 0xff, 0x1a, 0xe4, 0x59, 0x7b, 0x9c, 0x5f, 0x42, 0xff, 0xa2, 0x27, 0x68, 0xd9, 0x1f, 0x7b, 0xd4, 0x99, 0xb5,
|
||||
0x61, 0x10, 0xbb, 0xac, 0xcf, 0x44, 0x81, 0x39, 0x4e, 0x6f, 0x25, 0xd9, 0x44, 0x68, 0x85, 0xf3, 0xa6, 0x38, 0xcb, 0x86,
|
||||
0xbb, 0xfe, 0x0d, 0x58, 0x6a, 0x5c, 0xdc, 0x07, 0x5d, 0x46, 0xdf, 0x3d, 0xae, 0xcf, 0xe5, 0xd3, 0x9d, 0x77, 0x40, 0xef,
|
||||
0x6c, 0x5f, 0x13, 0x2d, 0x7d, 0xf7, 0x02, 0x5f, 0x04, 0x6a, 0xbc, 0xe5, 0x8d, 0xc6, 0x4d, 0xff, 0x47, 0x7c, 0xfe, 0x7e,
|
||||
0xd8, 0x1b, 0x84, 0xfe, 0xde, 0xa7, 0xd6, 0x61, 0xa7, 0x58, 0x7f, 0x1b, 0x47, 0x59, 0x62, 0x22, 0x56, 0x3e, 0xb1, 0x66,
|
||||
0x97, 0x0f, 0xfc, 0x29, 0xf3, 0x65, 0x0e, 0x13, 0x4b, 0x0e, 0x6b, 0xc4, 0x08, 0xe4, 0x40, 0xae, 0xd1, 0x36, 0xe5, 0x9c,
|
||||
0x39, 0xa0, 0x2a, 0xe0, 0xa6, 0xff, 0x83, 0xd6, 0xb8, 0x9a, 0x53, 0xaf, 0xff, 0xe3, 0x24, 0x91, 0xcf, 0xa7, 0x2e, 0x33,
|
||||
0x2f, 0x04, 0x4e, 0x04, 0x6d, 0x2b, 0x65, 0x3b, 0xbf, 0x35, 0xfd, 0xdb, 0x92, 0x58, 0x45, 0xf5, 0x2f, 0xea, 0xf3, 0x4e,
|
||||
0xd7, 0xdf, 0xae, 0x2b, 0x41, 0xff, 0x54, 0x62, 0x69, 0x66, 0x7d, 0x3a, 0xe9, 0x24, 0x3c, 0xf3, 0xc4, 0xf2, 0xdf, 0x2a,
|
||||
0xa0, 0xbf, 0x52, 0x39, 0x51, 0x63, 0x11, 0x44, 0x58, 0x67, 0xff, 0xab, 0x26, 0xbc, 0x49, 0x57, 0x73, 0xad, 0xa1, 0x28,
|
||||
0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x8a, 0xa2, 0x28, 0x55, 0x8b, 0x8b, 0x84, 0xec,
|
||||
0xf6, 0x5e, 0x37, 0xe9, 0x3a, 0x72, 0xd8, 0xec, 0xf8, 0x0d, 0xfc, 0xbf, 0x1e, 0x0f, 0xe2, 0x09, 0xd1, 0x6d, 0xd6, 0x99,
|
||||
0x2f, 0xc8, 0x62, 0x19, 0xcf, 0x09, 0x0e, 0x35, 0x77, 0xf7, 0x7a, 0x1b, 0x8b, 0x73, 0x41, 0x5a, 0xee, 0xb6, 0xa5, 0x51,
|
||||
0x82, 0xe7, 0x27, 0x9e, 0x3f, 0x13, 0xcf, 0x0f, 0xdc, 0xc6, 0xfd, 0xec, 0x25, 0x83, 0x09, 0x42, 0xbd, 0x78, 0x1e, 0x60,
|
||||
0x3b, 0xd9, 0x4c, 0x17, 0xbd, 0x17, 0xad, 0x58, 0x45, 0x0e, 0x3b, 0xc4, 0x7c, 0xec, 0xfb, 0xb8, 0x9d, 0xed, 0xa4, 0x31,
|
||||
0x45, 0xfc, 0x1e, 0xde, 0x91, 0x0d, 0x64, 0xf3, 0x11, 0x4f, 0xf2, 0xb2, 0xb0, 0xcf, 0xf1, 0x24, 0x88, 0xee, 0xf5, 0xfb,
|
||||
0x88, 0x27, 0x93, 0x95, 0xbe, 0x38, 0x8b, 0xe3, 0x7d, 0x51, 0x92, 0x3f, 0xa1, 0x31, 0x09, 0x54, 0x77, 0x7c, 0xd1, 0x0f,
|
||||
0x06, 0xa1, 0x7f, 0xb4, 0xf0, 0xb5, 0x3b, 0x9c, 0xbd, 0x3c, 0x44, 0x35, 0x86, 0x92, 0x29, 0xb6, 0xf4, 0x1f, 0xc8, 0x64,
|
||||
0xbc, 0xf8, 0x8d, 0x64, 0x2f, 0xd1, 0x9c, 0x46, 0x5f, 0x0a, 0x04, 0x57, 0xb9, 0x9b, 0x7b, 0x39, 0x9c, 0x43, 0xe2, 0x75,
|
||||
0x28, 0x2f, 0x77, 0xdb, 0x52, 0x81, 0x2f, 0x33, 0x63, 0x09, 0xf0, 0x06, 0xf5, 0xb9, 0x99, 0xa3, 0x2c, 0xa5, 0x11, 0x97,
|
||||
0x71, 0x58, 0x88, 0xd7, 0x80, 0x7f, 0xd0, 0x94, 0x0b, 0x48, 0xe4, 0x6e, 0xe1, 0x9b, 0xeb, 0x36, 0x26, 0x50, 0x93, 0x4b,
|
||||
0xc8, 0x15, 0xb2, 0xd6, 0x1f, 0x65, 0x2d, 0x4d, 0x39, 0x87, 0xed, 0x3c, 0x22, 0xb8, 0xb9, 0x77, 0x31, 0x91, 0x3a, 0x26,
|
||||
0xdf, 0xfd, 0x6c, 0x61, 0x9f, 0x33, 0x69, 0x2a, 0x5c, 0x35, 0x91, 0xe4, 0x10, 0x49, 0x18, 0x73, 0xc4, 0xec, 0x6f, 0x53,
|
||||
0x79, 0x45, 0x8c, 0x36, 0xc0, 0x99, 0x71, 0x61, 0x9e, 0xe8, 0xba, 0x0e, 0x46, 0xff, 0xf3, 0xc9, 0xa6, 0x01, 0xf5, 0xa9,
|
||||
0xcf, 0x76, 0x06, 0x09, 0x75, 0x5e, 0xe1, 0x0d, 0x71, 0x5b, 0x1d, 0x28, 0x74, 0xee, 0x9e, 0xb9, 0x41, 0xea, 0xef, 0xb1,
|
||||
0x3a, 0x11, 0x1a, 0x88, 0x3e, 0x88, 0x60, 0xf5, 0x2f, 0x8a, 0x33, 0x4a, 0x76, 0xbe, 0xfa, 0x7f, 0xc1, 0x08, 0x61, 0x9d,
|
||||
0xa2, 0x18, 0x84, 0x97, 0x84, 0x23, 0x3f, 0x8f, 0x02, 0xe7, 0xbc, 0x66, 0x0a, 0x7e, 0xe4, 0x62, 0x57, 0xe6, 0x5d, 0xac,
|
||||
0x15, 0x5a, 0xe4, 0xa0, 0xa3, 0xef, 0xdb, 0xa2, 0xfe, 0x1d, 0x2d, 0xde, 0xdc, 0x42, 0xfa, 0x12, 0x46, 0x84, 0xe0, 0x7b,
|
||||
0x7a, 0x88, 0x7c, 0xf2, 0x84, 0x79, 0x23, 0x82, 0xd5, 0xbf, 0x3d, 0xeb, 0xc8, 0x62, 0x29, 0x7f, 0x17, 0xf4, 0xef, 0xcf,
|
||||
0x11, 0x76, 0x3a, 0x0c, 0xb3, 0x1c, 0x81, 0xe4, 0xda, 0xbb, 0x82, 0x38, 0xe7, 0xaf, 0x49, 0xa2, 0xfe, 0x7f, 0x64, 0x2b,
|
||||
0xd9, 0xcc, 0x10, 0xfb, 0xc9, 0xed, 0x96, 0xb6, 0x90, 0x96, 0x17, 0xe9, 0x1f, 0xc5, 0x7a, 0xa1, 0x77, 0x92, 0xf5, 0x6f,
|
||||
0xe9, 0x7c, 0xd7, 0x2f, 0xea, 0x4b, 0x56, 0x0b, 0x6e, 0xfd, 0xe2, 0x75, 0x9e, 0x11, 0x3c, 0xc3, 0xfd, 0x7c, 0xde, 0xfa,
|
||||
0xe7, 0x04, 0xaf, 0xfa, 0x51, 0x5a, 0x3b, 0xce, 0xed, 0xbd, 0x42, 0xcd, 0xe2, 0x16, 0x79, 0x5a, 0xd4, 0xbf, 0x95, 0x45,
|
||||
0x9d, 0x91, 0x7c, 0x4d, 0x36, 0x73, 0x84, 0xec, 0xbb, 0x35, 0x78, 0x93, 0xbf, 0x09, 0xe7, 0x1d, 0x9c, 0xfe, 0xde, 0x68,
|
||||
0xa1, 0x89, 0xd4, 0x66, 0x00, 0x85, 0xe2, 0xfd, 0x9f, 0xe5, 0xf2, 0xa5, 0xbb, 0x06, 0xd3, 0x99, 0x26, 0xce, 0x3c, 0xe0,
|
||||
0xcd, 0xb6, 0x5e, 0xdd, 0x71, 0x4b, 0x48, 0xfa, 0x7f, 0xc8, 0x59, 0x74, 0x21, 0xde, 0x89, 0xfa, 0x3a, 0x9e, 0x1c, 0x2e,
|
||||
0x10, 0xf7, 0x26, 0x2d, 0xf7, 0xea, 0x3f, 0x84, 0x34, 0xda, 0x07, 0x7c, 0xff, 0x57, 0x4c, 0xff, 0x12, 0x6f, 0xfd, 0x34,
|
||||
0x61, 0x36, 0x94, 0xa3, 0x26, 0x92, 0xca, 0xc3, 0x08, 0x36, 0x08, 0x77, 0x72, 0xbe, 0xf3, 0xfc, 0x32, 0x2d, 0x28, 0xfd,
|
||||
0xbd, 0x34, 0x67, 0x1a, 0x9b, 0x44, 0x6f, 0xb5, 0xd4, 0xff, 0x37, 0x05, 0xe7, 0xaa, 0xf8, 0x30, 0x00, 0xfd, 0x4b, 0xfa,
|
||||
0xa5, 0xd9, 0x82, 0xfe, 0x11, 0x24, 0x98, 0xd8, 0xbb, 0xf6, 0xec, 0x12, 0xa3, 0x6f, 0xa6, 0x3a, 0xf1, 0x3d, 0xfe, 0x57,
|
||||
0xd5, 0x77, 0x4c, 0xa1, 0x11, 0x57, 0x93, 0x2f, 0xea, 0x5f, 0x14, 0x59, 0xf1, 0xbc, 0xd0, 0x12, 0xc1, 0xea, 0x3f, 0x8a,
|
||||
0x4c, 0x4b, 0x0e, 0xe5, 0x93, 0xa1, 0x7f, 0x38, 0xb1, 0xe6, 0x9a, 0x6d, 0x45, 0x86, 0xf8, 0x34, 0xf2, 0x11, 0x35, 0x38,
|
||||
0x8d, 0x8d, 0x3c, 0x2b, 0xb4, 0xe4, 0x7e, 0xee, 0x37, 0x4f, 0xb1, 0xd9, 0x41, 0xe8, 0x7f, 0x39, 0x5f, 0x1a, 0x2d, 0x1f,
|
||||
0x66, 0x63, 0xc0, 0xfa, 0x87, 0x92, 0x67, 0xe6, 0x23, 0x69, 0x4b, 0x4e, 0x00, 0xfa, 0xf7, 0xf3, 0xcd, 0x50, 0xf0, 0x9c,
|
||||
0xe8, 0x76, 0xec, 0xc9, 0x5e, 0x92, 0xc8, 0x15, 0xef, 0x54, 0xbb, 0xfe, 0xde, 0xf3, 0xfc, 0x98, 0x78, 0xe6, 0xf2, 0xaa,
|
||||
0xcb, 0xf8, 0x3f, 0x4e, 0x8c, 0x96, 0x0c, 0x4e, 0xff, 0x42, 0xf6, 0x59, 0x3c, 0xc1, 0x27, 0x43, 0x7f, 0x6f, 0xae, 0xed,
|
||||
0x9d, 0x64, 0x92, 0x2b, 0xce, 0xb8, 0x71, 0x94, 0x17, 0x49, 0x25, 0x9f, 0x45, 0x42, 0x54, 0x96, 0x87, 0xcb, 0x48, 0x22,
|
||||
0x9d, 0xcd, 0xcc, 0x0a, 0x42, 0xff, 0x70, 0xe6, 0x71, 0x88, 0x64, 0x76, 0x0b, 0xd1, 0xb3, 0x36, 0xfd, 0xbd, 0x4f, 0xe5,
|
||||
0x79, 0xe4, 0xf2, 0x15, 0x9f, 0x04, 0xa0, 0x7f, 0x57, 0xf2, 0x7d, 0x3d, 0xda, 0x4c, 0x6b, 0xf4, 0x94, 0xcd, 0x4b, 0x6e,
|
||||
0xd3, 0x3f, 0x9c, 0xa7, 0x1c, 0x37, 0xf1, 0x22, 0xfe, 0x7c, 0x52, 0xf5, 0x1f, 0xc0, 0xc7, 0x62, 0x5c, 0xa7, 0xac, 0x7f,
|
||||
0xe5, 0x50, 0xd7, 0x12, 0x5f, 0xe5, 0x3d, 0xaf, 0x30, 0x51, 0xfb, 0x12, 0xaf, 0xb4, 0xf7, 0x3e, 0x9b, 0x1d, 0xd4, 0xde,
|
||||
0x6a, 0x58, 0x63, 0x57, 0x5e, 0x60, 0x89, 0x65, 0x74, 0x0e, 0x0b, 0x78, 0x3e, 0xa0, 0xea, 0x24, 0x33, 0xd6, 0xbc, 0x69,
|
||||
0x64, 0x96, 0x63, 0x16, 0x01, 0xfb, 0xfd, 0xff, 0x3e, 0x3b, 0x78, 0x96, 0xd9, 0x24, 0xd2, 0xf4, 0xa4, 0xea, 0xdf, 0x96,
|
||||
0x46, 0xa4, 0x08, 0x33, 0x48, 0x9d, 0x4c, 0xfd, 0xed, 0xae, 0xec, 0xb6, 0x01, 0xac, 0x15, 0xac, 0xfe, 0x6e, 0xbf, 0xd8,
|
||||
0xa4, 0x93, 0x54, 0xe1, 0xad, 0x5c, 0xce, 0x7e, 0xb2, 0xd9, 0x22, 0x3e, 0xff, 0x97, 0x5f, 0xff, 0x30, 0x6e, 0xe0, 0x49,
|
||||
0x46, 0x8b, 0xd7, 0x61, 0xe5, 0xea, 0xef, 0x7d, 0xdb, 0x90, 0xb4, 0xfe, 0xe5, 0xf5, 0x1f, 0xe8, 0x7a, 0xef, 0x97, 0xbc,
|
||||
0xd3, 0x57, 0xa6, 0x77, 0xb8, 0x66, 0x25, 0xc5, 0x19, 0x55, 0xf5, 0x5f, 0x27, 0xab, 0x07, 0x78, 0x77, 0x29, 0xbf, 0x45,
|
||||
0x3a, 0xb2, 0x9c, 0xb8, 0x5f, 0x71, 0x94, 0x91, 0x52, 0x31, 0xce, 0xe1, 0x4e, 0xf1, 0x17, 0x70, 0x45, 0x51, 0x14, 0x45,
|
||||
0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x24, 0x3e, 0x71, 0xb2, 0x3e, 0xb7, 0xe7,
|
||||
0x5b, 0xe1, 0xfb, 0xca, 0x4b, 0xce, 0x7c, 0xfa, 0x6b, 0x8d, 0x47, 0xc0, 0xc3, 0x26, 0x5f, 0xbe, 0xcf, 0x12, 0xee, 0x65,
|
||||
0x8d, 0xa9, 0x79, 0x0d, 0x5f, 0x0b, 0xdf, 0x3f, 0x57, 0x3a, 0x0e, 0x9b, 0xc6, 0xc4, 0x09, 0xd9, 0x48, 0xaf, 0x22, 0xc1,
|
||||
0x61, 0xa1, 0xe5, 0xbb, 0xcf, 0x9d, 0xc2, 0xb7, 0xc9, 0x73, 0x19, 0xe8, 0xb7, 0x6c, 0x10, 0x57, 0x5b, 0x72, 0x25, 0x86,
|
||||
0x70, 0x37, 0xaf, 0x19, 0xc7, 0x59, 0x63, 0xa1, 0xde, 0xff, 0x3a, 0x4f, 0xf3, 0xbe, 0xf9, 0x7f, 0x3c, 0xb3, 0x84, 0xd2,
|
||||
0x3b, 0xf8, 0xcc, 0xb4, 0xf7, 0x21, 0x93, 0xdd, 0xb7, 0x29, 0x87, 0x1d, 0x67, 0xe9, 0xf1, 0xce, 0xb6, 0x6d, 0x8c, 0xa3,
|
||||
0x36, 0x09, 0x42, 0x76, 0x7d, 0x0f, 0x4f, 0xf0, 0x2f, 0xe7, 0x2a, 0xf9, 0x5c, 0xf4, 0xb6, 0x34, 0xa1, 0x09, 0xed, 0x48,
|
||||
0x15, 0x33, 0xff, 0x5e, 0x43, 0x3a, 0x93, 0x04, 0x87, 0xeb, 0x60, 0x21, 0xa3, 0xe4, 0x08, 0x3e, 0x77, 0xce, 0xe4, 0x44,
|
||||
0xae, 0x23, 0x96, 0x3f, 0x91, 0xc2, 0xfd, 0xcc, 0xae, 0x34, 0xe7, 0xc5, 0x6f, 0x87, 0x48, 0x0a, 0x8c, 0x87, 0x60, 0x0f,
|
||||
0x57, 0x08, 0xa5, 0xcd, 0x8c, 0x6b, 0x35, 0x8a, 0xd7, 0x48, 0xa1, 0x36, 0xc3, 0x1c, 0x2d, 0xfd, 0x3d, 0x64, 0x79, 0x2c,
|
||||
0xb6, 0xe4, 0xcb, 0x6f, 0xc6, 0x11, 0x93, 0xd5, 0x77, 0x35, 0xf7, 0x58, 0x8f, 0x61, 0x81, 0x78, 0xed, 0x79, 0x1d, 0x69,
|
||||
0xe3, 0xc4, 0xe5, 0x83, 0xc5, 0x8c, 0xa2, 0x8d, 0x38, 0x2c, 0xfa, 0xb2, 0xfa, 0xd0, 0xcf, 0xf8, 0x11, 0xe7, 0x31, 0x5f,
|
||||
0xf0, 0x22, 0x29, 0x31, 0xdc, 0x40, 0x77, 0x92, 0x2c, 0x9e, 0xb6, 0x3d, 0x5c, 0xc0, 0x52, 0xfa, 0x31, 0x97, 0x21, 0x4c,
|
||||
0x11, 0xbc, 0x7c, 0x45, 0xbc, 0xc3, 0x31, 0xeb, 0xbc, 0x07, 0x5e, 0xe5, 0x1b, 0x71, 0xd0, 0x9a, 0x03, 0x78, 0x14, 0xbb,
|
||||
0x2d, 0xbe, 0x99, 0x77, 0x2c, 0xae, 0x53, 0x59, 0x7f, 0x6f, 0x36, 0x72, 0x75, 0x08, 0x04, 0xcf, 0xc3, 0xcc, 0xe5, 0x65,
|
||||
0xfe, 0x6a, 0x29, 0x9d, 0xc6, 0xa3, 0x24, 0x13, 0xc1, 0x2d, 0xbc, 0xc5, 0x66, 0x61, 0xf4, 0xf7, 0x18, 0xa7, 0x71, 0x36,
|
||||
0x31, 0xbc, 0x6e, 0xd9, 0xc2, 0x9d, 0x7c, 0x46, 0x94, 0x30, 0xf3, 0x4e, 0x71, 0x44, 0x4d, 0x36, 0x5d, 0x2d, 0x65, 0x4b,
|
||||
0x2d, 0x7d, 0x86, 0xac, 0x7f, 0x38, 0xc7, 0xfe, 0x67, 0xb3, 0x98, 0x56, 0x84, 0xb3, 0xc8, 0x26, 0x89, 0x2e, 0x96, 0xd2,
|
||||
0x61, 0x24, 0x9a, 0xd9, 0x55, 0xea, 0x91, 0x48, 0xa6, 0xe8, 0x03, 0x0e, 0xe3, 0x4b, 0x1e, 0xa7, 0x39, 0xb9, 0x62, 0xfc,
|
||||
0xa2, 0xd7, 0x5b, 0xe6, 0x8d, 0x11, 0xba, 0xc9, 0xe2, 0x5e, 0xdb, 0xce, 0x03, 0x96, 0x3d, 0xdf, 0xca, 0x7e, 0x3a, 0x04,
|
||||
0xa1, 0xbf, 0x87, 0x55, 0xcc, 0xf9, 0x15, 0x38, 0xd9, 0xaa, 0x1e, 0xab, 0x85, 0x59, 0x04, 0x4a, 0xa2, 0xee, 0x8e, 0x31,
|
||||
0xd2, 0xfc, 0xb5, 0x8e, 0x65, 0xe2, 0x1a, 0x7f, 0x76, 0x66, 0xdd, 0x1a, 0x49, 0xa2, 0x25, 0x5f, 0xfa, 0x7b, 0xe4, 0x59,
|
||||
0x7c, 0x8a, 0x37, 0x01, 0x47, 0x0c, 0x1b, 0x84, 0xde, 0x7f, 0xa5, 0x65, 0x7b, 0x36, 0xfd, 0xa3, 0x48, 0xd2, 0x11, 0xbe,
|
||||
0x0a, 0x32, 0xdd, 0x32, 0xb3, 0x54, 0x59, 0x6c, 0x10, 0xa3, 0xac, 0x6d, 0xfa, 0x87, 0x92, 0x4f, 0x3b, 0x6d, 0xed, 0x2a,
|
||||
0x46, 0x0f, 0xde, 0x25, 0xd3, 0x89, 0x8b, 0x0c, 0x16, 0x7d, 0xfe, 0xfb, 0xf5, 0xd3, 0x86, 0x91, 0xd6, 0x79, 0xbb, 0xca,
|
||||
0xd6, 0x7f, 0x6c, 0x90, 0xfa, 0x57, 0xd3, 0x16, 0xff, 0x0d, 0xf1, 0x17, 0x66, 0x89, 0xf1, 0x4d, 0xb2, 0xfe, 0xbd, 0x2d,
|
||||
0xf3, 0xd7, 0x28, 0xbf, 0x56, 0x9a, 0xb0, 0x9e, 0x64, 0x21, 0x37, 0xbf, 0xa4, 0xff, 0x42, 0xe2, 0xad, 0xb3, 0xb5, 0x28,
|
||||
0xbf, 0x5e, 0x42, 0x85, 0x1e, 0x20, 0x54, 0x9c, 0x2d, 0x53, 0xdb, 0x4a, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14,
|
||||
0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51,
|
||||
0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45,
|
||||
0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14,
|
||||
0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51,
|
||||
0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45,
|
||||
0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14,
|
||||
0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51,
|
||||
0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45,
|
||||
0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0xe5, 0x24, 0xf0, 0xff };
|
||||
|
||||
// Font glyphs rectangles data (on atlas)
|
||||
static const Rectangle darkFontRecs[95] = {
|
||||
{ 4, 4, 2 , 16 },
|
||||
{ 14, 4, 3 , 10 },
|
||||
{ 25, 4, 5 , 3 },
|
||||
{ 38, 4, 8 , 9 },
|
||||
{ 54, 4, 7 , 11 },
|
||||
{ 69, 4, 9 , 11 },
|
||||
{ 86, 4, 9 , 11 },
|
||||
{ 103, 4, 2 , 3 },
|
||||
{ 113, 4, 4 , 13 },
|
||||
{ 125, 4, 4 , 13 },
|
||||
{ 137, 4, 5 , 6 },
|
||||
{ 150, 4, 7 , 7 },
|
||||
{ 165, 4, 3 , 4 },
|
||||
{ 176, 4, 5 , 2 },
|
||||
{ 189, 4, 3 , 3 },
|
||||
{ 200, 4, 5 , 13 },
|
||||
{ 213, 4, 7 , 11 },
|
||||
{ 228, 4, 4 , 9 },
|
||||
{ 240, 4, 7 , 10 },
|
||||
{ 4, 28, 7 , 11 },
|
||||
{ 19, 28, 8 , 9 },
|
||||
{ 35, 28, 8 , 10 },
|
||||
{ 51, 28, 7 , 11 },
|
||||
{ 66, 28, 7 , 9 },
|
||||
{ 81, 28, 7 , 11 },
|
||||
{ 96, 28, 7 , 11 },
|
||||
{ 111, 28, 3 , 8 },
|
||||
{ 122, 28, 3 , 9 },
|
||||
{ 133, 28, 7 , 9 },
|
||||
{ 148, 28, 7 , 5 },
|
||||
{ 163, 28, 7 , 9 },
|
||||
{ 178, 28, 6 , 11 },
|
||||
{ 192, 28, 11 , 11 },
|
||||
{ 211, 28, 8 , 9 },
|
||||
{ 227, 28, 7 , 9 },
|
||||
{ 4, 52, 8 , 11 },
|
||||
{ 20, 52, 7 , 9 },
|
||||
{ 35, 52, 6 , 9 },
|
||||
{ 49, 52, 6 , 9 },
|
||||
{ 63, 52, 8 , 11 },
|
||||
{ 79, 52, 7 , 9 },
|
||||
{ 94, 52, 2 , 9 },
|
||||
{ 104, 52, 6 , 10 },
|
||||
{ 118, 52, 7 , 9 },
|
||||
{ 133, 52, 6 , 9 },
|
||||
{ 147, 52, 9 , 9 },
|
||||
{ 164, 52, 7 , 9 },
|
||||
{ 179, 52, 8 , 11 },
|
||||
{ 195, 52, 7 , 9 },
|
||||
{ 210, 52, 8 , 12 },
|
||||
{ 226, 52, 7 , 9 },
|
||||
{ 4, 76, 7 , 11 },
|
||||
{ 19, 76, 7 , 9 },
|
||||
{ 34, 76, 8 , 10 },
|
||||
{ 50, 76, 8 , 9 },
|
||||
{ 66, 76, 11 , 9 },
|
||||
{ 85, 76, 8 , 9 },
|
||||
{ 101, 76, 8 , 9 },
|
||||
{ 117, 76, 7 , 9 },
|
||||
{ 132, 76, 4 , 13 },
|
||||
{ 144, 76, 5 , 13 },
|
||||
{ 157, 76, 4 , 13 },
|
||||
{ 169, 76, 5 , 4 },
|
||||
{ 182, 76, 7 , 2 },
|
||||
{ 197, 76, 4 , 3 },
|
||||
{ 209, 76, 6 , 8 },
|
||||
{ 223, 76, 6 , 11 },
|
||||
{ 237, 76, 7 , 8 },
|
||||
{ 4, 100, 7 , 11 },
|
||||
{ 19, 100, 7 , 8 },
|
||||
{ 34, 100, 5 , 10 },
|
||||
{ 47, 100, 7 , 10 },
|
||||
{ 62, 100, 6 , 10 },
|
||||
{ 76, 100, 3 , 10 },
|
||||
{ 87, 100, 4 , 13 },
|
||||
{ 99, 100, 6 , 10 },
|
||||
{ 113, 100, 2 , 10 },
|
||||
{ 123, 100, 10 , 7 },
|
||||
{ 141, 100, 6 , 7 },
|
||||
{ 155, 100, 7 , 8 },
|
||||
{ 170, 100, 6 , 10 },
|
||||
{ 184, 100, 7 , 10 },
|
||||
{ 199, 100, 4 , 7 },
|
||||
{ 211, 100, 6 , 8 },
|
||||
{ 225, 100, 4 , 10 },
|
||||
{ 237, 100, 7 , 8 },
|
||||
{ 4, 124, 7 , 7 },
|
||||
{ 19, 124, 10 , 7 },
|
||||
{ 37, 124, 7 , 7 },
|
||||
{ 52, 124, 7 , 10 },
|
||||
{ 67, 124, 6 , 7 },
|
||||
{ 81, 124, 5 , 13 },
|
||||
{ 94, 124, 2 , 13 },
|
||||
{ 104, 124, 5 , 13 },
|
||||
{ 117, 124, 7 , 3 },
|
||||
};
|
||||
|
||||
// Font glyphs info data
|
||||
// NOTE: No glyphs.image data provided
|
||||
static const GlyphInfo darkFontGlyphs[95] = {
|
||||
{ 32, 0, 12, 2, { 0 }},
|
||||
{ 33, 0, 3, 3, { 0 }},
|
||||
{ 34, 0, 3, 4, { 0 }},
|
||||
{ 35, 0, 3, 7, { 0 }},
|
||||
{ 36, 0, 2, 7, { 0 }},
|
||||
{ 37, 0, 2, 9, { 0 }},
|
||||
{ 38, 0, 2, 8, { 0 }},
|
||||
{ 39, 0, 3, 2, { 0 }},
|
||||
{ 40, 1, 2, 4, { 0 }},
|
||||
{ 41, 0, 2, 4, { 0 }},
|
||||
{ 42, 1, 2, 6, { 0 }},
|
||||
{ 43, 0, 5, 7, { 0 }},
|
||||
{ 44, 0, 10, 2, { 0 }},
|
||||
{ 45, 0, 7, 5, { 0 }},
|
||||
{ 46, 0, 10, 3, { 0 }},
|
||||
{ 47, 0, 2, 4, { 0 }},
|
||||
{ 48, 0, 2, 7, { 0 }},
|
||||
{ 49, 0, 3, 5, { 0 }},
|
||||
{ 50, 0, 2, 7, { 0 }},
|
||||
{ 51, 0, 2, 7, { 0 }},
|
||||
{ 52, 0, 3, 7, { 0 }},
|
||||
{ 53, 0, 3, 7, { 0 }},
|
||||
{ 54, 0, 2, 7, { 0 }},
|
||||
{ 55, 0, 3, 7, { 0 }},
|
||||
{ 56, 0, 2, 7, { 0 }},
|
||||
{ 57, 0, 2, 7, { 0 }},
|
||||
{ 58, 0, 5, 3, { 0 }},
|
||||
{ 59, 0, 5, 3, { 0 }},
|
||||
{ 60, 0, 4, 7, { 0 }},
|
||||
{ 61, 0, 6, 7, { 0 }},
|
||||
{ 62, 0, 4, 7, { 0 }},
|
||||
{ 63, 0, 2, 6, { 0 }},
|
||||
{ 64, 0, 3, 10, { 0 }},
|
||||
{ 65, 0, 3, 7, { 0 }},
|
||||
{ 66, 1, 3, 8, { 0 }},
|
||||
{ 67, 0, 2, 8, { 0 }},
|
||||
{ 68, 1, 3, 8, { 0 }},
|
||||
{ 69, 1, 3, 7, { 0 }},
|
||||
{ 70, 1, 3, 6, { 0 }},
|
||||
{ 71, 0, 2, 8, { 0 }},
|
||||
{ 72, 1, 3, 8, { 0 }},
|
||||
{ 73, 1, 3, 3, { 0 }},
|
||||
{ 74, 0, 3, 6, { 0 }},
|
||||
{ 75, 1, 3, 7, { 0 }},
|
||||
{ 76, 1, 3, 6, { 0 }},
|
||||
{ 77, 1, 3, 10, { 0 }},
|
||||
{ 78, 1, 3, 8, { 0 }},
|
||||
{ 79, 0, 2, 8, { 0 }},
|
||||
{ 80, 1, 3, 7, { 0 }},
|
||||
{ 81, 0, 2, 8, { 0 }},
|
||||
{ 82, 1, 3, 7, { 0 }},
|
||||
{ 83, 0, 2, 7, { 0 }},
|
||||
{ 84, 0, 3, 6, { 0 }},
|
||||
{ 85, 0, 3, 8, { 0 }},
|
||||
{ 86, 0, 3, 7, { 0 }},
|
||||
{ 87, 0, 3, 10, { 0 }},
|
||||
{ 88, 0, 3, 7, { 0 }},
|
||||
{ 89, 0, 3, 7, { 0 }},
|
||||
{ 90, 0, 3, 7, { 0 }},
|
||||
{ 91, 1, 2, 4, { 0 }},
|
||||
{ 92, 0, 2, 4, { 0 }},
|
||||
{ 93, 0, 2, 4, { 0 }},
|
||||
{ 94, 0, 3, 4, { 0 }},
|
||||
{ 95, -1, 12, 5, { 0 }},
|
||||
{ 96, 1, 2, 6, { 0 }},
|
||||
{ 97, 0, 5, 6, { 0 }},
|
||||
{ 98, 1, 2, 7, { 0 }},
|
||||
{ 99, 0, 5, 6, { 0 }},
|
||||
{ 100, 0, 2, 7, { 0 }},
|
||||
{ 101, 0, 5, 7, { 0 }},
|
||||
{ 102, 0, 2, 4, { 0 }},
|
||||
{ 103, 0, 5, 7, { 0 }},
|
||||
{ 104, 1, 2, 7, { 0 }},
|
||||
{ 105, 0, 2, 3, { 0 }},
|
||||
{ 106, -1, 2, 3, { 0 }},
|
||||
{ 107, 1, 2, 6, { 0 }},
|
||||
{ 108, 1, 2, 3, { 0 }},
|
||||
{ 109, 1, 5, 11, { 0 }},
|
||||
{ 110, 1, 5, 7, { 0 }},
|
||||
{ 111, 0, 5, 7, { 0 }},
|
||||
{ 112, 1, 5, 7, { 0 }},
|
||||
{ 113, 0, 5, 7, { 0 }},
|
||||
{ 114, 1, 5, 4, { 0 }},
|
||||
{ 115, 0, 5, 6, { 0 }},
|
||||
{ 116, 0, 3, 4, { 0 }},
|
||||
{ 117, 0, 5, 7, { 0 }},
|
||||
{ 118, 0, 5, 6, { 0 }},
|
||||
{ 119, 0, 5, 9, { 0 }},
|
||||
{ 120, 0, 5, 6, { 0 }},
|
||||
{ 121, 0, 5, 6, { 0 }},
|
||||
{ 122, 0, 5, 6, { 0 }},
|
||||
{ 123, 0, 2, 4, { 0 }},
|
||||
{ 124, 1, 2, 4, { 0 }},
|
||||
{ 125, 0, 2, 4, { 0 }},
|
||||
{ 126, 0, 6, 7, { 0 }},
|
||||
};
|
||||
|
||||
// Style loading function: Dark
|
||||
static void GuiLoadStyleDark(void)
|
||||
{
|
||||
// Load style properties provided
|
||||
// NOTE: Default properties are propagated
|
||||
for (int i = 0; i < DARK_STYLE_PROPS_COUNT; i++)
|
||||
{
|
||||
GuiSetStyle(darkStyleProps[i].controlId, darkStyleProps[i].propertyId, darkStyleProps[i].propertyValue);
|
||||
}
|
||||
|
||||
// Custom font loading
|
||||
// NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function
|
||||
// int darkFontDataSize = 0;
|
||||
// unsigned char *data = DecompressData(darkFontData, DARK_STYLE_FONT_ATLAS_COMP_SIZE, &darkFontDataSize);
|
||||
// Image imFont = { data, 256, 256, 1, 2 };
|
||||
|
||||
// Font font = { 0 };
|
||||
// font.baseSize = 16;
|
||||
// font.glyphCount = 95;
|
||||
|
||||
// // Load texture from image
|
||||
// font.texture = LoadTextureFromImage(imFont);
|
||||
// UnloadImage(imFont); // Uncompressed image data can be unloaded from memory
|
||||
|
||||
// // Copy char recs data from global fontRecs
|
||||
// // NOTE: Required to avoid issues if trying to free font
|
||||
// font.recs = (Rectangle *)RAYGUI_MALLOC(font.glyphCount*sizeof(Rectangle));
|
||||
// memcpy(font.recs, darkFontRecs, font.glyphCount*sizeof(Rectangle));
|
||||
|
||||
// // Copy font char info data from global fontChars
|
||||
// // NOTE: Required to avoid issues if trying to free font
|
||||
// font.glyphs = (GlyphInfo *)RAYGUI_MALLOC(font.glyphCount*sizeof(GlyphInfo));
|
||||
// memcpy(font.glyphs, darkFontGlyphs, font.glyphCount*sizeof(GlyphInfo));
|
||||
|
||||
// GuiSetFont(font);
|
||||
|
||||
// // Setup a white rectangle on the font to be used on shapes drawing,
|
||||
// // it makes possible to draw shapes and text (full UI) in a single draw call
|
||||
// Rectangle fontWhiteRec = { 254, 254, 1, 1 };
|
||||
// SetShapesTexture(font.texture, fontWhiteRec);
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
// TODO: Custom user style setup: Set specific properties here (if required)
|
||||
// i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,55 @@
|
|||
<!doctype html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
||||
<title>ShapeUp</title>
|
||||
|
||||
<meta name="title" content="ShapeUp">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<!-- Twitter metatags for sharing -->
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:site" content="@danielchooper">
|
||||
<meta name="twitter:title" content="ShapeUp 3D">
|
||||
<meta name="twitter:image" content="danielchasehooper.com/images/shapeup.png">
|
||||
<meta name="twitter:url" content="www.danielchasehooper.com">
|
||||
<meta name="twitter:description" content="Create 3D Models out of shapes">
|
||||
|
||||
<style>
|
||||
* { margin: 0px; padding:0;}
|
||||
canvas.emscripten {
|
||||
border: 0px none;
|
||||
background-color: black;
|
||||
width:100%;
|
||||
height:100%;
|
||||
position:absolute;
|
||||
image-rendering: pixelated;
|
||||
-ms-interpolation-mode: nearest-neighbor;
|
||||
}
|
||||
*:focus {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<canvas class=emscripten id=canvas oncontextmenu=event.preventDefault() tabindex=-1></canvas>
|
||||
<script>
|
||||
if ('ontouchstart' in window) {
|
||||
alert("This page hasn't been designed for touchscreens, and might not work on this device");
|
||||
}
|
||||
var Module = {
|
||||
print: function(text) {
|
||||
if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
|
||||
console.log(text);
|
||||
},
|
||||
canvas: (function() {
|
||||
var canvas = document.getElementById('canvas');
|
||||
return canvas;
|
||||
})()
|
||||
};
|
||||
</script>
|
||||
{{{ SCRIPT }}}
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,35 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <Appkit/AppKit.h>
|
||||
|
||||
float magnification = 0;
|
||||
|
||||
@implementation NSWindow (PinchGestureSwizzle)
|
||||
|
||||
- (void)swizzled_sendEvent:(NSEvent *)event {
|
||||
if (event.type == NSEventTypeMagnify) {
|
||||
magnification += event.magnification;
|
||||
}
|
||||
|
||||
// Call the original implementation
|
||||
[self swizzled_sendEvent:event];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
void swizzleWindow(void) {
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
Class class = [NSWindow class];
|
||||
|
||||
Method originalMethod = class_getInstanceMethod(class, @selector(sendEvent:));
|
||||
Method swizzledMethod = class_getInstanceMethod(class, @selector(swizzled_sendEvent:));
|
||||
|
||||
method_exchangeImplementations(originalMethod, swizzledMethod);
|
||||
});
|
||||
}
|
||||
|
||||
void makeWindowKey(void) {
|
||||
[[[NSApplication sharedApplication].windows firstObject] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
out vec4 finalColor;
|
||||
// int vec2 texCoord;
|
||||
uniform vec3 viewEye;
|
||||
uniform vec3 viewCenter;
|
||||
uniform vec2 resolution;
|
||||
|
||||
vec4 castRay( in vec3 ro, in vec3 rd )
|
||||
{
|
||||
float tmin = 0.1;
|
||||
float tmax = 300.0;
|
||||
|
||||
float t = tmin;
|
||||
vec3 m = vec3(0);
|
||||
for( int i=0; i<64; i++ )
|
||||
{
|
||||
float precis = 0.0001*t;
|
||||
vec4 res = signed_distance_field( ro+rd*t );
|
||||
if( res.x<precis || t>tmax ) break;
|
||||
t += res.x;
|
||||
m = res.gba;
|
||||
}
|
||||
|
||||
if( t>tmax ) m=vec3(0);
|
||||
return vec4( t, m );
|
||||
}
|
||||
|
||||
mat3 setCamera( in vec3 ro, in vec3 ta, float cr )
|
||||
{
|
||||
vec3 cw = normalize(ta-ro);
|
||||
vec3 cp = vec3(sin(cr), cos(cr),0.0);
|
||||
vec3 cu = normalize( cross(cw,cp) );
|
||||
vec3 cv = normalize( cross(cu,cw) );
|
||||
return mat3( cu, cv, cw );
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 p = (-resolution.xy + 2.0*gl_FragCoord.xy)/resolution.y;
|
||||
|
||||
mat3 camera_to_world = setCamera( viewEye, viewCenter, 0.0 );
|
||||
vec3 ray_direction = camera_to_world * normalize( vec3(p.xy,2.0) );
|
||||
|
||||
finalColor = vec4(castRay( viewEye, ray_direction ).gba, 1);
|
||||
}
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
vec4 castRay( in vec3 ro, in vec3 rd )
|
||||
{
|
||||
float tmin = 0.1;
|
||||
float tmax = 300.0;
|
||||
|
||||
float t = tmin;
|
||||
vec3 m = vec3(-1);
|
||||
for( int i=0; i<64; i++ )
|
||||
{
|
||||
float precis = 0.0001*t;
|
||||
vec4 res = signed_distance_field( ro+rd*t );
|
||||
if( res.x<precis || t>tmax ) break;
|
||||
t += res.x;
|
||||
m = res.gba;
|
||||
}
|
||||
|
||||
if( t>tmax ) m=vec3(-1);
|
||||
return vec4( t, m );
|
||||
}
|
||||
|
||||
|
||||
float calcSoftshadow( in vec3 ro, in vec3 rd, in float mint, in float tmax )
|
||||
{
|
||||
float res = 1.0;
|
||||
float t = mint;
|
||||
for( int i=0; i<16; i++ )
|
||||
{
|
||||
float h = signed_distance_field( ro + rd*t ).x;
|
||||
res = min( res, 8.0*h/t );
|
||||
t += clamp( h, 0.02, 0.10 );
|
||||
if( h<0.001 || t>tmax ) break;
|
||||
}
|
||||
return clamp( res, 0.0, 1.0 );
|
||||
}
|
||||
|
||||
vec3 calcNormal( in vec3 pos )
|
||||
{
|
||||
vec2 e = vec2(1.0,-1.0)*0.5773*0.0005;
|
||||
return normalize( e.xyy*signed_distance_field( pos + e.xyy ).x +
|
||||
e.yyx*signed_distance_field( pos + e.yyx ).x +
|
||||
e.yxy*signed_distance_field( pos + e.yxy ).x +
|
||||
e.xxx*signed_distance_field( pos + e.xxx ).x );
|
||||
/*
|
||||
vec3 eps = vec3( 0.0005, 0.0, 0.0 );
|
||||
vec3 nor = vec3(
|
||||
signed_distance_field(pos+eps.xyy).x - signed_distance_field(pos-eps.xyy).x,
|
||||
signed_distance_field(pos+eps.yxy).x - signed_distance_field(pos-eps.yxy).x,
|
||||
signed_distance_field(pos+eps.yyx).x - signed_distance_field(pos-eps.yyx).x );
|
||||
return normalize(nor);
|
||||
*/
|
||||
}
|
||||
|
||||
float calcAO( in vec3 pos, in vec3 nor )
|
||||
{
|
||||
float occ = 0.0;
|
||||
float sca = 1.0;
|
||||
for( int i=0; i<5; i++ )
|
||||
{
|
||||
float hr = 0.01 + 0.12*float(i)/4.0;
|
||||
vec3 aopos = nor * hr + pos;
|
||||
float dd = signed_distance_field( aopos ).x;
|
||||
occ += -(dd-hr)*sca;
|
||||
sca *= 0.95;
|
||||
}
|
||||
return clamp( 1.0 - 3.0*occ, 0.0, 1.0 );
|
||||
}
|
||||
|
||||
vec3 render( in vec3 ro, in vec3 rd )
|
||||
{
|
||||
vec3 color =
|
||||
#ifdef FALSE_COLOR_MODE
|
||||
vec3(0.);
|
||||
#else
|
||||
vec3(0.4, 0.5, 0.6) +rd.y*0.4;
|
||||
#endif
|
||||
vec4 result = castRay(ro,rd);
|
||||
float t = result.x;
|
||||
vec3 m = result.yzw;
|
||||
if( m.r>-0.5 )
|
||||
{
|
||||
vec3 pos = ro + t*rd;
|
||||
vec3 nor = calcNormal( pos );
|
||||
// vec3 ref = reflect( rd, nor );
|
||||
|
||||
// material
|
||||
color = m;
|
||||
|
||||
#ifndef FALSE_COLOR_MODE
|
||||
|
||||
// lighting
|
||||
// float occ = calcAO( pos, nor );
|
||||
vec3 light_dir = normalize( vec3(cos(-0.4), sin(0.7), -0.6) );
|
||||
vec3 hal = normalize( light_dir-rd );
|
||||
float ambient = clamp( 0.5+0.5*nor.y, 0.0, 1.0 );
|
||||
float diffuse = clamp( dot( nor, light_dir ), 0.0, 1.0 );
|
||||
float back_light = clamp( dot( nor, normalize(vec3(-light_dir.x,0.0,-light_dir.z))), 0.0, 1.0 )*clamp( 1.0-pos.y,0.0,1.0);
|
||||
|
||||
// TODO: turn back on shadows
|
||||
diffuse *= calcSoftshadow( pos, light_dir, 0.02, 2.5 );
|
||||
|
||||
float spe = pow( clamp( dot( nor, hal ), 0.0, 1.0 ),16.0)*
|
||||
diffuse *
|
||||
(0.04 + 0.96*pow( clamp(1.0+dot(hal,rd),0.0,1.0), 5.0 ));
|
||||
|
||||
vec3 lin = vec3(0.0);
|
||||
lin += 1.30*diffuse*vec3(1.00,0.80,0.55);
|
||||
lin += 0.40*ambient*vec3(0.40,0.60,1.00);//*occ;
|
||||
lin += 0.50*back_light*vec3(0.25,0.25,0.25);//*occ;
|
||||
color = color*lin;
|
||||
color += 10.00*spe*vec3(1.00,0.90,0.70);
|
||||
#endif
|
||||
}
|
||||
|
||||
return vec3( clamp(color,0.0,1.0) );
|
||||
}
|
||||
|
||||
mat3 setCamera( in vec3 ro, in vec3 ta, float cr )
|
||||
{
|
||||
vec3 cw = normalize(ta-ro);
|
||||
vec3 cp = vec3(sin(cr), cos(cr),0.0);
|
||||
vec3 cu = normalize( cross(cw,cp) );
|
||||
vec3 cv = normalize( cross(cu,cw) );
|
||||
return mat3( cu, cv, cw );
|
||||
}
|
||||
|
||||
// plane.xyz must be normalized
|
||||
float planeIntersect( in vec3 ro, in vec3 rd, in vec4 plane ) {
|
||||
return -(dot(ro,plane.xyz)+plane.w)/dot(rd,plane.xyz);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 tot = vec3(0.0);
|
||||
// TODO: turn back on AA
|
||||
#define AA 1
|
||||
#if AA>1
|
||||
for( int m=0; m<AA; m++ )
|
||||
for( int n=0; n<AA; n++ )
|
||||
{
|
||||
// pixel coordinates
|
||||
vec2 o = vec2(float(m),float(n)) / float(AA) - 0.5;
|
||||
vec2 p = (-resolution.xy + 2.0*(gl_FragCoord.xy+o))/resolution.y;
|
||||
#else
|
||||
vec2 p = (-resolution.xy + 2.0*gl_FragCoord.xy)/resolution.y;
|
||||
#endif
|
||||
|
||||
vec3 ro = viewEye;
|
||||
vec3 ta = viewCenter;
|
||||
|
||||
mat3 camera_to_world = setCamera( ro, ta, 0.0 );
|
||||
vec3 ray_direction = camera_to_world * normalize( vec3(p.xy,2.0) );
|
||||
|
||||
vec3 col = render( ro, ray_direction );
|
||||
|
||||
col = pow( col, vec3(0.4545) ); // gamma
|
||||
|
||||
if (visualizer > 0.) {
|
||||
float dist = planeIntersect(ro, ray_direction, vec4(0,0,1.,0));
|
||||
if (dist > 0.) {
|
||||
vec3 t = ro + dist*ray_direction;
|
||||
float sdf_value = signed_distance_field(t).x;
|
||||
vec4 field_color = (sdf_value < 0. ?
|
||||
vec4(1.,0.,0., sin(sdf_value*8.+runTime*2.)/4. + 0.25):
|
||||
vec4(0.15, 0.15,0.8,sin(sdf_value*8.-runTime*2.)/4. + 0.25 )) ;
|
||||
|
||||
col = mix(col, field_color.rgb, field_color.a);
|
||||
}
|
||||
}
|
||||
|
||||
tot += col;
|
||||
#if AA>1
|
||||
}
|
||||
tot /= float(AA*AA);
|
||||
#endif
|
||||
|
||||
finalColor = vec4( tot, 1.0 );
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
float sdRoundBox( vec3 p, vec3 b, float r )
|
||||
{
|
||||
vec3 q = abs(p) - b;
|
||||
return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0) - r;
|
||||
}
|
||||
|
||||
float RoundBox( vec3 p, vec3 b, float r )
|
||||
{
|
||||
vec3 q = abs(p) - b;
|
||||
return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0) - r;
|
||||
}
|
||||
|
||||
|
||||
vec4 opSmoothUnion( vec4 a, vec4 b, float blend )
|
||||
{
|
||||
float h = max( blend-abs(a.x-b.x), 0.0 )/blend;
|
||||
float m = h*h*0.5;
|
||||
float s = m*blend*(1.0/2.0);
|
||||
return (a.x<b.x) ? vec4(a.x-s,mix(a.gba,b.gba,m)) : vec4(b.x-s,mix(a.gba,b.gba,1.0-m));
|
||||
}
|
||||
|
||||
vec4 BlobbyMin( vec4 a, vec4 b, float blend )
|
||||
{
|
||||
float h = max( blend-abs(a.x-b.x), 0.0 )/blend;
|
||||
float m = h*h*0.5;
|
||||
float s = m*blend*(1.0/2.0);
|
||||
return (a.x<b.x) ? vec4(a.x-s,mix(a.gba,b.gba,m)) : vec4(b.x-s,mix(a.gba,b.gba,1.0-m));
|
||||
}
|
||||
|
||||
vec4 Min( vec4 a, vec4 b )
|
||||
{
|
||||
return (a.x<b.x) ? a : b;
|
||||
}
|
||||
|
||||
vec4 opSmoothUnionSteppedColor( vec4 a, vec4 b, float blend )
|
||||
{
|
||||
float h = max( blend-abs(a.x-b.x), 0.0 )/blend;
|
||||
float m = h*h*0.5;
|
||||
float s = m*blend*(1.0/2.0);
|
||||
return (a.x<b.x) ? vec4(a.x-s,a.gba) : vec4(b.x-s,b.gba);
|
||||
}
|
||||
|
||||
vec4 opSmoothSubtraction( vec4 d1, vec4 d2, float k ) {
|
||||
float dist = opSmoothUnion(d1,vec4(-d2.x, d2.gba),k).x;
|
||||
return vec4(-dist, d2.gba);
|
||||
}
|
||||
|
||||
vec4 opS( vec4 d1, vec4 d2 )
|
||||
{
|
||||
return vec4(max(-d2.x,d1.x), d1.gba);
|
||||
}
|
||||
|
||||
vec4 opU( vec4 d1, vec4 d2 )
|
||||
{
|
||||
return (d1.x<d2.x) ? d1 : d2;
|
||||
}
|
||||
|
||||
vec3 opSymX( vec3 p )
|
||||
{
|
||||
p.x = abs(p.x);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymY( vec3 p )
|
||||
{
|
||||
p.y = abs(p.y);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymZ( vec3 p )
|
||||
{
|
||||
p.z = abs(p.z);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymXY( vec3 p )
|
||||
{
|
||||
p.xy = abs(p.xy);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymXZ( vec3 p )
|
||||
{
|
||||
p.xz = abs(p.xz);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymYZ( vec3 p )
|
||||
{
|
||||
p.yz = abs(p.yz);
|
||||
return p;
|
||||
}
|
||||
vec3 opSymXYZ( vec3 p )
|
||||
{
|
||||
p.xyz = abs(p.xyz);
|
||||
return p;
|
||||
}
|
||||
|
||||
vec3 opRotateXYZ( vec3 p, vec3 theta)
|
||||
{
|
||||
float cz = cos(theta.z);
|
||||
float sz = sin(theta.z);
|
||||
float cy = cos(theta.y);
|
||||
float sy = sin(theta.y);
|
||||
float cx = cos(theta.x);
|
||||
float sx = sin(theta.x);
|
||||
|
||||
mat3 mat = mat3(
|
||||
cz*cy,
|
||||
cz*sy*sx - cx*sz,
|
||||
sz*sx + cz*cx*sy,
|
||||
|
||||
cy*sz,
|
||||
cz*cx + sz*sy*sx,
|
||||
cx*sz*sy - cz*sx,
|
||||
|
||||
-sy,
|
||||
cy*sx,
|
||||
cy*cx);
|
||||
|
||||
return mat*p;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
in vec2 fragTexCoord;
|
||||
out vec4 finalColor;
|
||||
uniform float z;
|
||||
|
||||
void main()
|
||||
{
|
||||
float sdf_value = signed_distance_field(vec3(fragTexCoord, z)).x;
|
||||
finalColor = vec4(vec3(sdf_value), 1.);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
ROOT=$(pwd)
|
||||
|
||||
cd ../3rdParty/emsdk/
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
source ./emsdk_env.sh
|
||||
|
||||
cd $ROOT
|
||||
EMSDK_PATH=$HOME/3rdParty/emsdk
|
||||
|
||||
PATH=$(printenv PATH):$EMSDK:$EMSCRIPTEN_PATH:$CLANG_PATH:$NODE_PATH:$PYTHON_PATH
|
||||
rm -r build
|
||||
make -f Makefile.Web
|
Loading…
Reference in New Issue