summary refs log tree commit diff
path: root/misc
diff options
context:
space:
mode:
Diffstat (limited to 'misc')
-rw-r--r--misc/3ds/Makefile136
-rw-r--r--misc/3ds/audio.wavbin0 -> 63020 bytes
-rw-r--r--misc/3ds/banner.binbin0 -> 68576 bytes
-rw-r--r--misc/3ds/banner.pngbin0 -> 10600 bytes
-rw-r--r--misc/3ds/coloured.v.pica33
-rw-r--r--misc/3ds/icon.binbin0 -> 14016 bytes
-rw-r--r--misc/3ds/icon.pngbin0 -> 1415 bytes
-rw-r--r--misc/3ds/offset.v.pica38
-rw-r--r--misc/3ds/readme.md5
-rw-r--r--misc/3ds/spec.rsf204
-rw-r--r--misc/3ds/textured.v.pica37
-rw-r--r--misc/CCicon.icobin0 -> 109307 bytes
-rw-r--r--misc/CCicon.pngbin0 -> 7195 bytes
-rw-r--r--misc/bitmap_font_gen.cs41
-rw-r--r--misc/build_scripts/build_server.py64
-rw-r--r--misc/build_scripts/buildbot_plugin.sh65
-rw-r--r--misc/build_scripts/buildtestplugin.sh4
-rw-r--r--misc/build_scripts/makerelease.sh60
-rw-r--r--misc/build_scripts/notify.py34
-rw-r--r--misc/build_scripts/readme.md9
-rw-r--r--misc/build_scripts/upload_build.sh13
-rw-r--r--misc/certs.h348
-rw-r--r--misc/dreamcast/DrawColouredQuads.S65
-rw-r--r--misc/dreamcast/DrawTexturedQuads.S63
-rw-r--r--misc/dreamcast/Makefile66
-rw-r--r--misc/dreamcast/ViewportTransform.S218
-rw-r--r--misc/dreamcast/boot_logo.pngbin0 -> 4021 bytes
-rw-r--r--misc/dreamcast/ip.txt3
-rw-r--r--misc/dreamcast/readme.txt9
-rw-r--r--misc/ds/Makefile164
-rw-r--r--misc/ds/icon.bmpbin0 -> 1142 bytes
-rw-r--r--misc/gc/Makefile103
-rw-r--r--misc/linux/CCIcon_X11.h120
-rw-r--r--misc/linux/flatpak/net.classicube.flatpak.client.desktop10
-rw-r--r--misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml133
-rw-r--r--misc/linux/flatpak/net.classicube.flatpak.client.svg44
-rw-r--r--misc/linux/flatpak/net.classicube.flatpak.client.yml29
-rw-r--r--misc/linux/install-desktop-entry.sh34
-rw-r--r--misc/linux/linux_icon_gen.cs42
-rw-r--r--misc/macOS/CCIcon.icnsbin0 -> 62576 bytes
-rw-r--r--misc/macOS/CCIcon_mac.h70
-rw-r--r--misc/macOS/CCMAC.xcodeproj/project.pbxproj785
-rw-r--r--misc/macOS/info.plist20
-rw-r--r--misc/macOS/mac_icon_gen.cs43
-rw-r--r--misc/macclassic/68APPL.r23
-rw-r--r--misc/macclassic/Makefile_68k36
-rw-r--r--misc/macclassic/Makefile_ppc39
-rw-r--r--misc/macclassic/ppcAPPL.r32
-rw-r--r--misc/n64/Makefile26
-rw-r--r--misc/n64/default.zipbin0 -> 24104 bytes
-rw-r--r--misc/opengl/GL1Funcs.h63
-rw-r--r--misc/opengl/GL2Funcs.h36
-rw-r--r--misc/opengl/GLCommon.h102
-rw-r--r--misc/os2/Makefile59
-rw-r--r--misc/ps1/CMakeLists.txt21
-rw-r--r--misc/ps1/CMakePresets.json26
-rw-r--r--misc/ps1/iso.xml86
-rw-r--r--misc/ps1/system.cnf4
-rw-r--r--misc/ps2/Makefile55
-rw-r--r--misc/ps3/ICON0.pngbin0 -> 9052 bytes
-rw-r--r--misc/ps3/Makefile144
-rw-r--r--misc/ps3/ps_coloured.fcg7
-rw-r--r--misc/ps3/ps_textured.fcg9
-rw-r--r--misc/ps3/vs_coloured.vcg11
-rw-r--r--misc/ps3/vs_offset.vcg15
-rw-r--r--misc/ps3/vs_textured.vcg14
-rw-r--r--misc/psp/Makefile19
-rw-r--r--misc/readme.md19
-rw-r--r--misc/saturn/Makefile28
-rw-r--r--misc/sdl/CCIcon_SDL.h71
-rw-r--r--misc/sdl/sdl_icon_gen.cs40
-rw-r--r--misc/switch/Makefile212
-rw-r--r--misc/switch/icon.jpgbin0 -> 31604 bytes
-rw-r--r--misc/vita/Makefile48
-rw-r--r--misc/vita/colored_alpha_f.cg9
-rw-r--r--misc/vita/colored_alpha_f.gxpbin0 -> 304 bytes
-rw-r--r--misc/vita/colored_alpha_f.h21
-rw-r--r--misc/vita/colored_f.cg7
-rw-r--r--misc/vita/colored_f.gxpbin0 -> 212 bytes
-rw-r--r--misc/vita/colored_f.h16
-rw-r--r--misc/vita/colored_v.cg10
-rw-r--r--misc/vita/colored_v.gxpbin0 -> 320 bytes
-rw-r--r--misc/vita/colored_v.h22
-rw-r--r--misc/vita/gxp_to_c.c60
-rw-r--r--misc/vita/readme.txt9
-rw-r--r--misc/vita/sce_sys/ICON0.pngbin0 -> 2319 bytes
-rw-r--r--misc/vita/textured_alpha_f.cg12
-rw-r--r--misc/vita/textured_alpha_f.gxpbin0 -> 372 bytes
-rw-r--r--misc/vita/textured_alpha_f.h26
-rw-r--r--misc/vita/textured_f.cg9
-rw-r--r--misc/vita/textured_f.gxpbin0 -> 288 bytes
-rw-r--r--misc/vita/textured_f.h20
-rw-r--r--misc/vita/textured_v.cg13
-rw-r--r--misc/vita/textured_v.gxpbin0 -> 348 bytes
-rw-r--r--misc/vita/textured_v.h24
-rw-r--r--misc/wii/Makefile103
-rw-r--r--misc/wii/icon.pngbin0 -> 14338 bytes
-rw-r--r--misc/wii/meta.xml10
-rw-r--r--misc/wiiu/Makefile174
-rw-r--r--misc/wiiu/coloured.gshbin0 -> 1312 bytes
-rw-r--r--misc/wiiu/coloured.psh8
-rw-r--r--misc/wiiu/coloured.psh.glsl6
-rw-r--r--misc/wiiu/coloured.vsh46
-rw-r--r--misc/wiiu/coloured.vsh.glsl9
-rw-r--r--misc/wiiu/shaders.txt14
-rw-r--r--misc/wiiu/textured.gshbin0 -> 1780 bytes
-rw-r--r--misc/wiiu/textured.psh21
-rw-r--r--misc/wiiu/textured.psh.glsl9
-rw-r--r--misc/wiiu/textured.vsh55
-rw-r--r--misc/wiiu/textured.vsh.glsl12
-rw-r--r--misc/wiiu/textured_offset.vsh64
-rw-r--r--misc/wiiu/textured_offset.vsh.glsl13
-rw-r--r--misc/windows/CCicon.rc1
-rw-r--r--misc/windows/CCicon_32.resbin0 -> 109906 bytes
-rw-r--r--misc/windows/CCicon_64.resbin0 -> 109906 bytes
-rw-r--r--misc/windows/D3D11ShaderGen.c186
-rw-r--r--misc/windows/D3D11Shaders.h449
-rw-r--r--misc/xbox/Makefile13
-rw-r--r--misc/xbox/ps_coloured.ps.cg10
-rw-r--r--misc/xbox/ps_textured.ps.cg12
-rw-r--r--misc/xbox/vs_coloured.vs.cg33
-rw-r--r--misc/xbox/vs_textured.vs.cg36
-rw-r--r--misc/xbox360/Makefile117
-rw-r--r--misc/xbox360/ps_coloured.binbin0 -> 160 bytes
-rw-r--r--misc/xbox360/ps_coloured.h19
-rw-r--r--misc/xbox360/ps_coloured.hlsl7
-rw-r--r--misc/xbox360/ps_textured.binbin0 -> 228 bytes
-rw-r--r--misc/xbox360/ps_textured.h25
-rw-r--r--misc/xbox360/ps_textured.hlsl10
-rw-r--r--misc/xbox360/vs_coloured.binbin0 -> 324 bytes
-rw-r--r--misc/xbox360/vs_coloured.h34
-rw-r--r--misc/xbox360/vs_coloured.hlsl20
-rw-r--r--misc/xbox360/vs_textured.binbin0 -> 360 bytes
-rw-r--r--misc/xbox360/vs_textured.h37
-rw-r--r--misc/xbox360/vs_textured.hlsl23
135 files changed, 6191 insertions, 0 deletions
diff --git a/misc/3ds/Makefile b/misc/3ds/Makefile
new file mode 100644
index 0000000..f3aaf3a
--- /dev/null
+++ b/misc/3ds/Makefile
@@ -0,0 +1,136 @@
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+#---------------------------------------------------------------------------------
+
+ifeq ($(strip $(DEVKITARM)),)
+$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
+endif
+
+TOPDIR ?= $(CURDIR)
+include $(DEVKITARM)/3ds_rules
+
+#---------------------------------------------------------------------------------
+# configurable options
+#---------------------------------------------------------------------------------
+APP_ICON	:= $(TOPDIR)/misc/3ds/icon.png
+APP_TITLE 	:= ClassiCube
+APP_DESCRIPTION := Simple block building sandbox
+APP_AUTHOR 	:= UnknownShadow200
+TARGET 		:= ClassiCube-3ds
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# INCLUDES is a list of directories containing header files
+#---------------------------------------------------------------------------------
+BUILD		:=	build-3ds
+SOURCES		:= src misc/3ds third_party/bearssl/src
+INCLUDES	:=	third_party/bearssl/inc
+
+CIA_BANNER_BIN	:= $(TOPDIR)/misc/3ds/banner.bin
+CIA_ICON_BIN	:= $(TOPDIR)/misc/3ds/icon.bin
+CIA_SPEC_RSF	:= $(TOPDIR)/misc/3ds/spec.rsf
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+ARCH	:=	-march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft
+
+CFLAGS	:=	-g -Wall -O2 -mword-relocations \
+			-ffunction-sections \
+			$(ARCH)
+
+CFLAGS	+=	$(INCLUDE) -D__3DS__
+
+CXXFLAGS	:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
+
+ASFLAGS	:=	-g $(ARCH)
+LDFLAGS	=	-specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
+
+LIBS	:= -lctru -lm
+
+
+#---------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#---------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#---------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+export TOPDIR	:=	$(CURDIR)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+PICAFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica)))
+
+export LD	:=	$(CC)
+
+export OFILES_SOURCES 	:=	$(CFILES:.c=.o) $(SFILES:.s=.o)
+
+export OFILES_BIN	:=	$(PICAFILES:.v.pica=.shbin.o)
+
+export OFILES := $(OFILES_BIN) $(OFILES_SOURCES)
+
+export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
+			$(foreach dir,$(CTRULIB),-I$(dir)/include) \
+			-I$(CURDIR)/$(BUILD)
+
+export LIBPATHS	:=	$(foreach dir,$(CTRULIB),-L$(dir)/lib)
+
+export _3DSXFLAGS = --smdh=$(CURDIR)/$(TARGET).smdh
+
+.PHONY: all clean
+
+#---------------------------------------------------------------------------------
+all: $(BUILD)
+	$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/3ds/Makefile
+
+$(BUILD):
+	mkdir -p $@
+
+#---------------------------------------------------------------------------------
+clean:
+	echo clean ...
+	rm -fr $(BUILD) $(TARGET).cia $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf
+
+#---------------------------------------------------------------------------------
+else
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+$(OUTPUT).cia	: $(OUTPUT).3dsx makerom
+	./makerom -f cia -o "$(OUTPUT).cia" -elf "$(OUTPUT).elf" -rsf "$(CIA_SPEC_RSF)" -icon "$(CIA_ICON_BIN)" -banner "$(CIA_BANNER_BIN)" -exefslogo -target t
+	
+makerom:
+	wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip
+	unzip makerom-v0.18.3-ubuntu_x86_64.zip
+	chmod +x makerom
+
+$(OUTPUT).3dsx	:	$(OUTPUT).elf $(OUTPUT).smdh
+
+$(OUTPUT).elf	:	$(OFILES)
+
+#---------------------------------------------------------------------------------
+.PRECIOUS	:	%.shbin
+#---------------------------------------------------------------------------------
+
+%.shbin.o : %.v.pica
+	$(eval CUR_SRC	:= $<)
+	$(eval CUR_FILE := $(notdir $(CUR_SRC)))
+	$(eval CUR_BIN	:= $(CURDIR)/$(subst .v.pica,.shbin,$(CUR_FILE)))
+	picasso -o $(CUR_BIN) $(CUR_SRC)
+	bin2s $(CUR_BIN) | $(AS) -o $(CUR_BIN).o
+
+
+-include $(DEPSDIR)/*.d
+
+#---------------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------------
diff --git a/misc/3ds/audio.wav b/misc/3ds/audio.wav
new file mode 100644
index 0000000..02f3d15
--- /dev/null
+++ b/misc/3ds/audio.wav
Binary files differdiff --git a/misc/3ds/banner.bin b/misc/3ds/banner.bin
new file mode 100644
index 0000000..d93f930
--- /dev/null
+++ b/misc/3ds/banner.bin
Binary files differdiff --git a/misc/3ds/banner.png b/misc/3ds/banner.png
new file mode 100644
index 0000000..8f9c566
--- /dev/null
+++ b/misc/3ds/banner.png
Binary files differdiff --git a/misc/3ds/coloured.v.pica b/misc/3ds/coloured.v.pica
new file mode 100644
index 0000000..7954ed9
--- /dev/null
+++ b/misc/3ds/coloured.v.pica
@@ -0,0 +1,33 @@
+; Vertex shader for rendering coloured vertices for PICA200 GPU on the Nintendo 3DS
+; ==================================================================================
+
+; Uniforms
+.fvec MVP[4];
+
+; Constants
+.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
+
+; Outputs
+.out out_pos position
+.out out_col color
+
+; Inputs (defined as aliases for convenience)
+.alias in_pos v0
+.alias in_col v1
+
+.proc main
+	; r0 = in_pos
+	mov r0, in_pos
+
+	; out_pos = MVP * r0
+	dp4 out_pos.x, MVP[0], r0
+	dp4 out_pos.y, MVP[1], r0
+	dp4 out_pos.z, MVP[2], r0
+	dp4 out_pos.w, MVP[3], r0
+
+	; out_col = in_col * ONE_DIV_255
+	mul out_col, ONE_DIV_255, in_col
+	
+	end
+.end
+
diff --git a/misc/3ds/icon.bin b/misc/3ds/icon.bin
new file mode 100644
index 0000000..09941bc
--- /dev/null
+++ b/misc/3ds/icon.bin
Binary files differdiff --git a/misc/3ds/icon.png b/misc/3ds/icon.png
new file mode 100644
index 0000000..7d7a53c
--- /dev/null
+++ b/misc/3ds/icon.png
Binary files differdiff --git a/misc/3ds/offset.v.pica b/misc/3ds/offset.v.pica
new file mode 100644
index 0000000..9a462db
--- /dev/null
+++ b/misc/3ds/offset.v.pica
@@ -0,0 +1,38 @@
+; Vertex shader for rendering textured vertices with an offset for PICA200 GPU on the Nintendo 3DS
+; ==================================================================================
+
+; Uniforms
+.fvec MVP[4];
+.fvec tex_offset;
+
+; Constants
+.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
+
+; Outputs
+.out out_pos position
+.out out_col color
+.out out_tex texcoord0
+
+; Inputs (defined as aliases for convenience)
+.alias in_pos v0
+.alias in_col v1
+.alias in_tex v2
+
+.proc main
+	; r0 = in_pos
+	mov r0, in_pos
+
+	; out_pos = MVP * r0
+	dp4 out_pos.x, MVP[0], r0
+	dp4 out_pos.y, MVP[1], r0
+	dp4 out_pos.z, MVP[2], r0
+	dp4 out_pos.w, MVP[3], r0
+
+	; out_col = in_col * ONE_DIV_255
+	mul out_col, ONE_DIV_255, in_col
+	; out_tex = in_tex + tex_offset
+	add out_tex, tex_offset, in_tex
+	
+	end
+.end
+
diff --git a/misc/3ds/readme.md b/misc/3ds/readme.md
new file mode 100644
index 0000000..8590a8d
--- /dev/null
+++ b/misc/3ds/readme.md
@@ -0,0 +1,5 @@
+Commands used to generate the .bin files:
+
+`bannertool makebanner -i banner.png -a audio.wav -o banner.bin`
+
+`bannertool makesmdh -s ClassiCube -l ClassiCube -p UnknownShadow200 -i icon.png -o icon.bin`
\ No newline at end of file
diff --git a/misc/3ds/spec.rsf b/misc/3ds/spec.rsf
new file mode 100644
index 0000000..9299a63
--- /dev/null
+++ b/misc/3ds/spec.rsf
@@ -0,0 +1,204 @@
+# https://github.com/msikma/3ds-tpl
+# https://gist.github.com/jakcron/9f9f02ffd94d98a72632
+
+BasicInfo:
+  Title                   : ClassiCube
+  CompanyCode             : "00"
+  ProductCode             : CCBE
+  ContentType             : Application
+  Logo                    : Nintendo
+
+TitleInfo:
+  UniqueId                : 0x00CCBE
+  Category                : Application
+  
+CardInfo:
+  MediaSize               : 128MB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB
+  MediaType               : Card1 # Card1 / Card2
+  CardDevice              : NorFlash # NorFlash(Pick this if you use savedata) / None
+  
+
+Option:
+  UseOnSD                 : true # true if App is to be installed to SD
+  FreeProductCode         : true # Removes limitations on ProductCode
+  MediaFootPadding        : false # If true CCI files are created with padding
+  EnableCrypt             : false # Enables encryption for NCCH and CIA
+  EnableCompress          : true # Compresses exefs code
+  
+AccessControlInfo:
+  #UseExtSaveData : true
+  #ExtSaveDataId: 0xff3ff
+  #UseExtendedSaveDataAccessControl: true
+  #AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
+
+SystemControlInfo:
+  SaveDataSize: 128KB
+  RemasterVersion: 0
+  StackSize: 0x40000
+
+AccessControlInfo:
+  FileSystemAccess:
+   - Debug
+   - DirectSdmc
+   - DirectSdmcWrite
+   
+  IdealProcessor                : 0
+  AffinityMask                  : 1
+  
+  Priority                      : 16
+   
+  MaxCpu                        : 0x9E # Default
+  DisableDebug                  : false
+  EnableForceDebug              : false
+  CanWriteSharedPage            : false
+  CanUsePrivilegedPriority      : false
+  CanUseNonAlphabetAndNumber    : false
+  PermitMainFunctionArgument    : false
+  CanShareDeviceMemory          : false
+  RunnableOnSleep               : false
+  SpecialMemoryArrange          : false
+  CoreVersion                   : 2
+  DescVersion                   : 2
+  
+  ReleaseKernelMajor            : "02"
+  ReleaseKernelMinor            : "33" 
+  MemoryType                    : Application
+  HandleTableSize: 512
+  
+  # New3DS Exclusive Process Settings
+  SystemModeExt                 : 124MB  # Legacy(Default)/124MB/178MB  Legacy:Use Old3DS SystemMode
+  CpuSpeed                      : 804MHz # 268MHz(Default)/804MHz
+  EnableL2Cache                 : true   # false(default)/true
+  CanAccessCore2                : true 
+  
+  # Virtual Address Mappings
+  IORegisterMapping: 
+   - 1ff50000-1ff57fff   # DSP memory
+   - 1ff70000-1ff77fff
+  MemoryMapping: 
+   - 1f000000-1f5fffff:r # VRAM
+   
+  SystemCallAccess: 
+    ArbitrateAddress: 34
+    Break: 60
+    CancelTimer: 28
+    ClearEvent: 25
+    ClearTimer: 29
+    CloseHandle: 35
+    ConnectToPort: 45
+    ControlMemory: 1
+    CreateAddressArbiter: 33
+    CreateEvent: 23
+    CreateMemoryBlock: 30
+    CreateMutex: 19
+    CreateSemaphore: 21
+    CreateThread: 8
+    CreateTimer: 26
+    DuplicateHandle: 39
+    ExitProcess: 3
+    ExitThread: 9
+    GetCurrentProcessorNumber: 17
+    GetHandleInfo: 41
+    GetProcessId: 53
+    GetProcessIdOfThread: 54
+    GetProcessIdealProcessor: 6
+    GetProcessInfo: 43
+    GetResourceLimit: 56
+    GetResourceLimitCurrentValues: 58
+    GetResourceLimitLimitValues: 57
+    GetSystemInfo: 42
+    GetSystemTick: 40
+    GetThreadContext: 59
+    GetThreadId: 55
+    GetThreadIdealProcessor: 15
+    GetThreadInfo: 44
+    GetThreadPriority: 11
+    MapMemoryBlock: 31
+    OutputDebugString: 61
+    QueryMemory: 2
+    ReleaseMutex: 20
+    ReleaseSemaphore: 22
+    SendSyncRequest1: 46
+    SendSyncRequest2: 47
+    SendSyncRequest3: 48
+    SendSyncRequest4: 49
+    SendSyncRequest: 50
+    SetThreadPriority: 12
+    SetTimer: 27
+    SignalEvent: 24
+    SleepThread: 10
+    UnmapMemoryBlock: 32
+    WaitSynchronization1: 36
+    WaitSynchronizationN: 37
+  InterruptNumbers:
+  
+  # Service List
+  # Maximum 34 services (32 if firmware is prior to 9.3.0)
+  ServiceAccessControl: 
+   - APT:U
+   - $hioFIO
+   - $hostio0
+   - $hostio1
+   - ac:u
+   - boss:U
+   - cam:u
+   - cecd:u
+   - cfg:u
+   - dlp:FKCL
+   - dlp:SRVR
+   - dsp::DSP
+   - frd:u
+   - fs:USER
+   - gsp::Gpu
+   - hid:USER
+   - mic:u
+   - ndm:u
+   - news:s
+   - nwm::UDS
+   - ptm:u
+   - pxi:dev
+   - soc:U
+   - gsp::Lcd
+   - y2r:u
+   - ldr:ro
+   - ir:USER
+   - ir:u
+   - csnd:SND
+   - am:u
+   - ns:s
+   
+SystemControlInfo:
+  # Modules that run services listed above should be included below
+  # Maximum 48 dependencies
+  # If a module is listed that isn't present on the 3DS, the title will get stuck at the logo (3ds waves)
+  # So act, nfc and qtm are commented for 4.x support. Uncomment if you need these.
+  # <module name>:<module titleid>
+  Dependency: 
+    ac: 0x0004013000002402L
+    am: 0x0004013000001502L
+    boss: 0x0004013000003402L
+    camera: 0x0004013000001602L
+    cecd: 0x0004013000002602L
+    cfg: 0x0004013000001702L
+    codec: 0x0004013000001802L
+    csnd: 0x0004013000002702L
+    dlp: 0x0004013000002802L
+    dsp: 0x0004013000001a02L
+    friends: 0x0004013000003202L
+    gpio: 0x0004013000001b02L
+    gsp: 0x0004013000001c02L
+    hid: 0x0004013000001d02L
+    i2c: 0x0004013000001e02L
+    ir: 0x0004013000003302L
+    mcu: 0x0004013000001f02L
+    mic: 0x0004013000002002L
+    ndm: 0x0004013000002b02L
+    news: 0x0004013000003502L
+    nim: 0x0004013000002c02L
+    nwm: 0x0004013000002d02L
+    pdn: 0x0004013000002102L
+    ps: 0x0004013000003102L
+    ptm: 0x0004013000002202L
+    ro: 0x0004013000003702L
+    socket: 0x0004013000002e02L
+    spi: 0x0004013000002302L
\ No newline at end of file
diff --git a/misc/3ds/textured.v.pica b/misc/3ds/textured.v.pica
new file mode 100644
index 0000000..f97d88e
--- /dev/null
+++ b/misc/3ds/textured.v.pica
@@ -0,0 +1,37 @@
+; Vertex shader for rendering textured vertices for PICA200 GPU on the Nintendo 3DS
+; ==================================================================================
+
+; Uniforms
+.fvec MVP[4];
+
+; Constants
+.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
+
+; Outputs
+.out out_pos position
+.out out_col color
+.out out_tex texcoord0
+
+; Inputs (defined as aliases for convenience)
+.alias in_pos v0
+.alias in_col v1
+.alias in_tex v2
+
+.proc main
+	; r0 = in_pos
+	mov r0, in_pos
+
+	; out_pos = MVP * r0
+	dp4 out_pos.x, MVP[0], r0
+	dp4 out_pos.y, MVP[1], r0
+	dp4 out_pos.z, MVP[2], r0
+	dp4 out_pos.w, MVP[3], r0
+
+	; out_col = in_col * ONE_DIV_255
+	mul out_col, ONE_DIV_255, in_col
+	; out_tex = in_tex
+	mov out_tex, in_tex
+	
+	end
+.end
+
diff --git a/misc/CCicon.ico b/misc/CCicon.ico
new file mode 100644
index 0000000..c4d2991
--- /dev/null
+++ b/misc/CCicon.ico
Binary files differdiff --git a/misc/CCicon.png b/misc/CCicon.png
new file mode 100644
index 0000000..4c38053
--- /dev/null
+++ b/misc/CCicon.png
Binary files differdiff --git a/misc/bitmap_font_gen.cs b/misc/bitmap_font_gen.cs
new file mode 100644
index 0000000..13b0713
--- /dev/null
+++ b/misc/bitmap_font_gen.cs
@@ -0,0 +1,41 @@
+void Main()
+{
+	Console.WriteLine("static cc_uint8 font_bitmap[][8] = {");
+	using (Bitmap bmp = new Bitmap(@"C:\classicube-dev\default.png"))
+	{
+		for (int CY = 0; CY < 16; CY++)
+			for (int CX = 0; CX < 16; CX++)
+				DecodeTile(bmp, CX, CY);
+	}
+	Console.WriteLine("}");
+}
+
+static void DecodeTile(Bitmap bmp, int cx, int cy) {
+	int c = (cy << 4) | cx;
+	if (c <= 32 || c >= 127) return;
+	
+	int X = cx * 8, Y = cy * 8;
+	
+	Console.Write("\t{ ");
+	
+	for (int y = Y; y < Y + 8; y++) {
+		uint mask = 0;
+		int shift = 0;
+		
+		for (int x = X; x < X + 8; x++, shift++) {
+			Color P = bmp.GetPixel(x, y);
+			
+			if (P.A == 0) {
+				mask |= 0u << shift;
+			} else if (P.R == 255 && P.G == 255 && P.B == 255 && P.A == 255) {
+				mask |= 1u << shift;
+			} else { 
+				throw new InvalidOperationException("unsupported colour" + P); 
+			}
+		}
+		
+		string suffix = y == Y + 7 ? " " : ",";
+		Console.Write("0x" + mask.ToString("X2") + suffix);
+	}
+	Console.WriteLine("}, /* " + (char)c + " */");
+}
diff --git a/misc/build_scripts/build_server.py b/misc/build_scripts/build_server.py
new file mode 100644
index 0000000..d3ea564
--- /dev/null
+++ b/misc/build_scripts/build_server.py
@@ -0,0 +1,64 @@
+from http.server import HTTPServer, SimpleHTTPRequestHandler
+import os
+import subprocess
+
+build_files = { 
+	'/ClassiCube.exe'    : 'cc-w32-d3d.exe', '/ClassiCube.opengl.exe'    : 'cc-w32-ogl.exe', 
+	'/ClassiCube.64.exe' : 'cc-w64-d3d.exe', '/ClassiCube.64-opengl.exe' : 'cc-w64-ogl.exe', 
+	'/ClassiCube.32'     : 'cc-nix32',       '/ClassiCube'               : 'cc-nix64', 
+	'/ClassiCube.osx'    : 'cc-osx32',       '/ClassiCube.64.osx'        : 'cc-osx64',
+	'/ClassiCube.js'     : 'cc.js',          '/ClassiCube.apk'           : 'cc.apk',
+	'/ClassiCube.rpi'    : 'cc-rpi',
+	'/cc-nix32-gl2'      : 'cc-nix32-gl2',   '/cc-nix64-gl2'             : 'cc-nix64-gl2',
+	'/cc-osx32-gl2'      : 'cc-osx32-gl2',   '/cc-osx64-gl2'             : 'cc-osx64-gl2',
+}
+
+release_files = { 
+	'/win32' : 'win32/ClassiCube.exe',    '/win64' : 'win64/ClassiCube.exe',
+	'/osx32' : 'osx32/ClassiCube.tar.gz', '/osx64' : 'osx64/ClassiCube.tar.gz',
+	'/mac32' : 'mac32/ClassiCube.tar.gz', '/mac64' : 'mac64/ClassiCube.tar.gz',
+	'/nix32' : 'nix32/ClassiCube.tar.gz', '/nix64' : 'nix64/ClassiCube.tar.gz',
+	'/rpi32' : 'rpi32/ClassiCube.tar.gz',
+}
+
+def run_script(file):
+	args = ["sh", file]
+	su   = subprocess.Popen(args)
+	return su.wait()
+
+class Handler(SimpleHTTPRequestHandler):
+
+	def serve_script(self, file, msg):
+		ret = run_script(file)
+		self.send_response(200)
+		self.end_headers()
+		self.wfile.write(msg % ret)
+
+	def do_GET(self):
+		if self.path in build_files:
+			self.serve_exe('client/src/'     + build_files[self.path])
+		elif self.path in release_files:
+			self.serve_exe('client/release/' + release_files[self.path])
+		elif self.path == '/rebuild':
+			self.serve_script('build.sh', 'Rebuild client (%s)')
+		elif self.path == '/release':
+			self.serve_script('build_release.sh', 'Package release (%s)')
+		else:
+			self.send_error(404, "Unknown action")
+		return
+
+	def serve_exe(self, path):
+		try:
+			f = open(path, 'rb')
+			fs = os.fstat(f.fileno())
+			self.send_response(200)
+			self.send_header("Content-type", "application/octet-stream")
+			self.send_header("Content-Length", str(fs[6]))
+			self.end_headers()
+			self.copyfile(f, self.wfile)
+			f.close()
+		except IOError:
+			self.send_error(404, "File not found")
+
+httpd = HTTPServer(('', 80), Handler)
+httpd.serve_forever()
diff --git a/misc/build_scripts/buildbot_plugin.sh b/misc/build_scripts/buildbot_plugin.sh
new file mode 100644
index 0000000..8ddd47a
--- /dev/null
+++ b/misc/build_scripts/buildbot_plugin.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+# This is similar to buildbot.sh but builds plugins for the game instead
+# Some variables must be set before invoking this script. See buildtestplugin.sh
+cd $ROOT
+echo $(pwd)
+FILES=$(find . -type f -name "*.c" | tr '\n' ' ')
+FLAGS="-shared -fPIC -O1 -s -std=c99"
+echo $FILES
+
+# ----------------------------- compile linux
+NIX32_CC="gcc -m32"
+NIX64_CC="gcc -m64"
+NIX_FLAGS="-nostartfiles -Wl,--entry=0"
+
+echo "Compiling linux32.."
+$NIX32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix32.so $FLAGS $NIX_FLAGS
+
+echo "Compiling linux64.."
+$NIX64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix64.so $FLAGS $NIX_FLAGS
+
+# ----------------------------- compile macOS
+MAC32_CC=~/osx/target/bin/o32-clang
+MAC64_CC=~/osx/target/bin/o64-clang
+MAC_FLAGS="-undefined dynamic_lookup"
+
+echo "Compiling mac32.."
+$MAC32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac32.dylib $FLAGS $MAC_FLAGS
+
+echo "Compiling mac64.."
+$MAC64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac64.dylib $FLAGS $MAC_FLAGS
+
+# ----------------------------- compile Windows
+WIN32_CC=i686-w64-mingw32-gcc
+WIN64_CC=x86_64-w64-mingw32-gcc
+# TODO: Figure out why we sometimes need this with mingw
+# If we don't include nostart files for some plugins, get a
+#   ertr000001.o:(.rdata+0x0): undefined reference to `_pei386_runtime_relocator'
+# Seems to happen if you use exported variables from the game
+if [ -z "$LITE_MODE" ]; then
+        WIN_FLAGS=""
+else
+        WIN_FLAGS="-nostartfiles -Wl,--entry=0"
+fi
+# NOTE: You also need to install 'mingw-w64-tools' package for gendef
+
+echo "Compiling win32"
+rm ClassiCube.exe ClassiCube.def
+cp ~/client/src/cc-w32-d3d.exe ClassiCube.exe
+gendef ClassiCube.exe
+i686-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe
+$WIN32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win32.dll $FLAGS $WIN_FLAGS -L . -lClassiCube
+
+echo "Compiling win64"
+rm ClassiCube.exe ClassiCube.def
+cp ~/client/src/cc-w64-d3d.exe ClassiCube.exe
+gendef ClassiCube.exe
+x86_64-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe
+$WIN64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win64.dll $FLAGS $WIN_FLAGS -L . -lClassiCube
+
+# ----------------------------- compile raspberry pi
+RPI_CC=~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3
+RPI_FLAGS="-nostartfiles -Wl,--entry=0"
+
+echo "Compiling rpi"
+$RPI_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_rpi.so $FLAGS $RPI_FLAGS
\ No newline at end of file
diff --git a/misc/build_scripts/buildtestplugin.sh b/misc/build_scripts/buildtestplugin.sh
new file mode 100644
index 0000000..096b372
--- /dev/null
+++ b/misc/build_scripts/buildtestplugin.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+ROOT=~/plugins/test/
+PLUGIN=test
+source ./buildbot_plugin.sh
\ No newline at end of file
diff --git a/misc/build_scripts/makerelease.sh b/misc/build_scripts/makerelease.sh
new file mode 100644
index 0000000..0c51535
--- /dev/null
+++ b/misc/build_scripts/makerelease.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+# paths, change these as needed
+SOURCE_DIR=~/client/src
+MISC_DIR=~/client/misc
+BUILDS_DIR=~/client/release
+
+# ./ClassiCube
+make_nix_tar() {
+  cp $SOURCE_DIR/$1 ClassiCube
+  chmod +x ClassiCube
+  tar -zcvf ClassiCube.tar.gz ClassiCube
+  rm ClassiCube
+}
+
+# ./ClassiCube.app/Info.plist
+# ./ClassiCube.app/Contents/MacOS/ClassiCube
+# ./ClassiCube.app/Resources/ClassiCube.icns
+make_mac_tar() {
+  mkdir ClassiCube.app
+  mkdir ClassiCube.app/Contents
+  mkdir ClassiCube.app/Contents/MacOS
+  mkdir ClassiCube.app/Contents/Resources
+  
+  cp $SOURCE_DIR/$1 ClassiCube.app/Contents/MacOS/ClassiCube
+  chmod +x ClassiCube.app/Contents/MacOS/ClassiCube
+  
+  cp $MISC_DIR/info.plist ClassiCube.app/Contents/Info.plist
+  cp $MISC_DIR/CCIcon.icns ClassiCube.app/Contents/Resources/ClassiCube.icns
+  tar -zcvf ClassiCube.tar.gz ClassiCube.app
+  rm -rf ClassiCube.app
+}
+
+
+mkdir -p $BUILDS_DIR
+mkdir -p $BUILDS_DIR/win32 $BUILDS_DIR/win64 $BUILDS_DIR/osx32 $BUILDS_DIR/osx64
+mkdir -p $BUILDS_DIR/nix32 $BUILDS_DIR/nix64 $BUILDS_DIR/mac32 $BUILDS_DIR/mac64 
+mkdir -p $BUILDS_DIR/rpi32
+
+# edge doesn't respect download attribute, and having ClassiCube.64.exe breaks plugins
+cp $SOURCE_DIR/cc-w32-d3d.exe $BUILDS_DIR/win32/ClassiCube.exe
+cp $SOURCE_DIR/cc-w64-d3d.exe $BUILDS_DIR/win64/ClassiCube.exe
+
+# use tar to preserve chmod +x, so users don't have to manually do it
+cd $BUILDS_DIR/osx32/
+make_nix_tar cc-osx32
+cd $BUILDS_DIR/osx64/
+make_nix_tar cc-osx64
+cd $BUILDS_DIR/nix32/
+make_nix_tar cc-nix32
+cd $BUILDS_DIR/nix64/
+make_nix_tar cc-nix64
+cd $BUILDS_DIR/rpi32/
+make_nix_tar cc-rpi
+
+# generate ClassiCube.app for mac users
+cd $BUILDS_DIR/mac32/
+make_mac_tar cc-osx32
+cd $BUILDS_DIR/mac64/
+make_mac_tar cc-osx64
diff --git a/misc/build_scripts/notify.py b/misc/build_scripts/notify.py
new file mode 100644
index 0000000..94e659a
--- /dev/null
+++ b/misc/build_scripts/notify.py
@@ -0,0 +1,34 @@
+import requests, re, datetime, json, time, os
+# Any resemblence to any discord bots written by 123DMWM is purely coincidental. I swear.
+
+# The URL of the discord channel webhook to notify
+# You can generate a webhook by right clicking channel -> Edit Channel -> Webhooks
+WEBHOOK_URL = ''
+# The ID of the user you want to ping on a build failure
+# You can get this by right clicking user -> Copy ID
+# You may have to go to settings -> Appearance -> Check Developer Mode to see this option
+TARGET_USER = ''
+
+def notify_webhook(body):
+	try:
+		webhook_data = {
+			"username": "CC BuildBot",
+			"avatar_url": "https://static.classicube.net/img/cc-cube-small.png",
+			"content" : body
+		}
+		
+		r = requests.post(WEBHOOK_URL, json=webhook_data)
+		print("BuildNotify response: " + r.text)
+	except Exception as e:
+		print("BuildNotify failed: %s" % (e))
+
+cc_errors = None
+try:
+	with open(sys.argv[1], 'r') as file:
+		cc_errors = file.read()
+except FileNotFoundError:
+	# nothing to as no compile errors
+	pass
+
+if cc_errors:
+	notify_webhook('**Houston, we have a problem** <@%s>\n\n%s' % (TARGET_USER, cc_errors))
\ No newline at end of file
diff --git a/misc/build_scripts/readme.md b/misc/build_scripts/readme.md
new file mode 100644
index 0000000..0ff1d43
--- /dev/null
+++ b/misc/build_scripts/readme.md
@@ -0,0 +1,9 @@
+This folder contains build scripts for automatically compiling ClassiCube
+
+|File|Description|
+|--------|-------|
+|buildbot.sh | Compiles the game to optimised executables (with icons) |
+|buildbot_plugin.sh | Compiles specified plugin for various platforms |
+|buildtestplugin.sh | Example script for how to use buildbot_plugin.sh  | 
+|makerelease.sh | Packages the executables to produce files for a release |
+|notify.py | Notifies a user on Discord if buildbot fails |
\ No newline at end of file
diff --git a/misc/build_scripts/upload_build.sh b/misc/build_scripts/upload_build.sh
new file mode 100644
index 0000000..a3960d3
--- /dev/null
+++ b/misc/build_scripts/upload_build.sh
@@ -0,0 +1,13 @@
+# upload_build.sh [TARGET NAME] [SOURCE FILE]
+# e.g. ~/upload_build.sh latest/ClassiCube.ipa cc.ipa
+API_URL=
+API_KEY=
+
+if [ -s $2 ]; then
+  curl $API_URL \
+   --header "X-Build-Key:$API_KEY" \
+   --header "X-Build-Name:$1" \
+   --data-binary @$2
+else
+  echo "Missing or empty file: $2"
+fi
diff --git a/misc/certs.h b/misc/certs.h
new file mode 100644
index 0000000..3157fc2
--- /dev/null
+++ b/misc/certs.h
@@ -0,0 +1,348 @@
+// This file includes the following root certificates:
+//  - DigiCert Global Root (dropbox.com)
+//  - DigiCert Global Root G2 (resources.download.minecraft.net)
+//  - ISRG Root X1 (catbox.moe)
+//  - ISRG Root X2 (123dmwm.com, garbage.loan)
+//  - Baltimore CyberTrust Root (classicube.net)
+//  - USERTrust RSA (imgur.com)
+// Generated using "brssl -ta [cert 1] [cert 2].." from BearSSL
+
+static const unsigned char TA0_DN[] = {
+	0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+	0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A,
+	0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49,
+	0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13,
+	0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
+	0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55,
+	0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74,
+	0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74,
+	0x20, 0x43, 0x41
+};
+
+static const unsigned char TA0_RSA_N[] = {
+	0xE2, 0x3B, 0xE1, 0x11, 0x72, 0xDE, 0xA8, 0xA4, 0xD3, 0xA3, 0x57, 0xAA,
+	0x50, 0xA2, 0x8F, 0x0B, 0x77, 0x90, 0xC9, 0xA2, 0xA5, 0xEE, 0x12, 0xCE,
+	0x96, 0x5B, 0x01, 0x09, 0x20, 0xCC, 0x01, 0x93, 0xA7, 0x4E, 0x30, 0xB7,
+	0x53, 0xF7, 0x43, 0xC4, 0x69, 0x00, 0x57, 0x9D, 0xE2, 0x8D, 0x22, 0xDD,
+	0x87, 0x06, 0x40, 0x00, 0x81, 0x09, 0xCE, 0xCE, 0x1B, 0x83, 0xBF, 0xDF,
+	0xCD, 0x3B, 0x71, 0x46, 0xE2, 0xD6, 0x66, 0xC7, 0x05, 0xB3, 0x76, 0x27,
+	0x16, 0x8F, 0x7B, 0x9E, 0x1E, 0x95, 0x7D, 0xEE, 0xB7, 0x48, 0xA3, 0x08,
+	0xDA, 0xD6, 0xAF, 0x7A, 0x0C, 0x39, 0x06, 0x65, 0x7F, 0x4A, 0x5D, 0x1F,
+	0xBC, 0x17, 0xF8, 0xAB, 0xBE, 0xEE, 0x28, 0xD7, 0x74, 0x7F, 0x7A, 0x78,
+	0x99, 0x59, 0x85, 0x68, 0x6E, 0x5C, 0x23, 0x32, 0x4B, 0xBF, 0x4E, 0xC0,
+	0xE8, 0x5A, 0x6D, 0xE3, 0x70, 0xBF, 0x77, 0x10, 0xBF, 0xFC, 0x01, 0xF6,
+	0x85, 0xD9, 0xA8, 0x44, 0x10, 0x58, 0x32, 0xA9, 0x75, 0x18, 0xD5, 0xD1,
+	0xA2, 0xBE, 0x47, 0xE2, 0x27, 0x6A, 0xF4, 0x9A, 0x33, 0xF8, 0x49, 0x08,
+	0x60, 0x8B, 0xD4, 0x5F, 0xB4, 0x3A, 0x84, 0xBF, 0xA1, 0xAA, 0x4A, 0x4C,
+	0x7D, 0x3E, 0xCF, 0x4F, 0x5F, 0x6C, 0x76, 0x5E, 0xA0, 0x4B, 0x37, 0x91,
+	0x9E, 0xDC, 0x22, 0xE6, 0x6D, 0xCE, 0x14, 0x1A, 0x8E, 0x6A, 0xCB, 0xFE,
+	0xCD, 0xB3, 0x14, 0x64, 0x17, 0xC7, 0x5B, 0x29, 0x9E, 0x32, 0xBF, 0xF2,
+	0xEE, 0xFA, 0xD3, 0x0B, 0x42, 0xD4, 0xAB, 0xB7, 0x41, 0x32, 0xDA, 0x0C,
+	0xD4, 0xEF, 0xF8, 0x81, 0xD5, 0xBB, 0x8D, 0x58, 0x3F, 0xB5, 0x1B, 0xE8,
+	0x49, 0x28, 0xA2, 0x70, 0xDA, 0x31, 0x04, 0xDD, 0xF7, 0xB2, 0x16, 0xF2,
+	0x4C, 0x0A, 0x4E, 0x07, 0xA8, 0xED, 0x4A, 0x3D, 0x5E, 0xB5, 0x7F, 0xA3,
+	0x90, 0xC3, 0xAF, 0x27
+};
+
+static const unsigned char TA0_RSA_E[] = {
+	0x01, 0x00, 0x01
+};
+
+static const unsigned char TA1_DN[] = {
+	0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+	0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A,
+	0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49,
+	0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13,
+	0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
+	0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55,
+	0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74,
+	0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74,
+	0x20, 0x47, 0x32
+};
+
+static const unsigned char TA1_RSA_N[] = {
+	0xBB, 0x37, 0xCD, 0x34, 0xDC, 0x7B, 0x6B, 0xC9, 0xB2, 0x68, 0x90, 0xAD,
+	0x4A, 0x75, 0xFF, 0x46, 0xBA, 0x21, 0x0A, 0x08, 0x8D, 0xF5, 0x19, 0x54,
+	0xC9, 0xFB, 0x88, 0xDB, 0xF3, 0xAE, 0xF2, 0x3A, 0x89, 0x91, 0x3C, 0x7A,
+	0xE6, 0xAB, 0x06, 0x1A, 0x6B, 0xCF, 0xAC, 0x2D, 0xE8, 0x5E, 0x09, 0x24,
+	0x44, 0xBA, 0x62, 0x9A, 0x7E, 0xD6, 0xA3, 0xA8, 0x7E, 0xE0, 0x54, 0x75,
+	0x20, 0x05, 0xAC, 0x50, 0xB7, 0x9C, 0x63, 0x1A, 0x6C, 0x30, 0xDC, 0xDA,
+	0x1F, 0x19, 0xB1, 0xD7, 0x1E, 0xDE, 0xFD, 0xD7, 0xE0, 0xCB, 0x94, 0x83,
+	0x37, 0xAE, 0xEC, 0x1F, 0x43, 0x4E, 0xDD, 0x7B, 0x2C, 0xD2, 0xBD, 0x2E,
+	0xA5, 0x2F, 0xE4, 0xA9, 0xB8, 0xAD, 0x3A, 0xD4, 0x99, 0xA4, 0xB6, 0x25,
+	0xE9, 0x9B, 0x6B, 0x00, 0x60, 0x92, 0x60, 0xFF, 0x4F, 0x21, 0x49, 0x18,
+	0xF7, 0x67, 0x90, 0xAB, 0x61, 0x06, 0x9C, 0x8F, 0xF2, 0xBA, 0xE9, 0xB4,
+	0xE9, 0x92, 0x32, 0x6B, 0xB5, 0xF3, 0x57, 0xE8, 0x5D, 0x1B, 0xCD, 0x8C,
+	0x1D, 0xAB, 0x95, 0x04, 0x95, 0x49, 0xF3, 0x35, 0x2D, 0x96, 0xE3, 0x49,
+	0x6D, 0xDD, 0x77, 0xE3, 0xFB, 0x49, 0x4B, 0xB4, 0xAC, 0x55, 0x07, 0xA9,
+	0x8F, 0x95, 0xB3, 0xB4, 0x23, 0xBB, 0x4C, 0x6D, 0x45, 0xF0, 0xF6, 0xA9,
+	0xB2, 0x95, 0x30, 0xB4, 0xFD, 0x4C, 0x55, 0x8C, 0x27, 0x4A, 0x57, 0x14,
+	0x7C, 0x82, 0x9D, 0xCD, 0x73, 0x92, 0xD3, 0x16, 0x4A, 0x06, 0x0C, 0x8C,
+	0x50, 0xD1, 0x8F, 0x1E, 0x09, 0xBE, 0x17, 0xA1, 0xE6, 0x21, 0xCA, 0xFD,
+	0x83, 0xE5, 0x10, 0xBC, 0x83, 0xA5, 0x0A, 0xC4, 0x67, 0x28, 0xF6, 0x73,
+	0x14, 0x14, 0x3D, 0x46, 0x76, 0xC3, 0x87, 0x14, 0x89, 0x21, 0x34, 0x4D,
+	0xAF, 0x0F, 0x45, 0x0C, 0xA6, 0x49, 0xA1, 0xBA, 0xBB, 0x9C, 0xC5, 0xB1,
+	0x33, 0x83, 0x29, 0x85
+};
+
+static const unsigned char TA1_RSA_E[] = {
+	0x01, 0x00, 0x01
+};
+
+static const unsigned char TA2_DN[] = {
+	0x30, 0x4F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+	0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0A,
+	0x13, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x53,
+	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x31, 0x15,
+	0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0C, 0x49, 0x53, 0x52,
+	0x47, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x58, 0x31
+};
+
+static const unsigned char TA2_RSA_N[] = {
+	0xAD, 0xE8, 0x24, 0x73, 0xF4, 0x14, 0x37, 0xF3, 0x9B, 0x9E, 0x2B, 0x57,
+	0x28, 0x1C, 0x87, 0xBE, 0xDC, 0xB7, 0xDF, 0x38, 0x90, 0x8C, 0x6E, 0x3C,
+	0xE6, 0x57, 0xA0, 0x78, 0xF7, 0x75, 0xC2, 0xA2, 0xFE, 0xF5, 0x6A, 0x6E,
+	0xF6, 0x00, 0x4F, 0x28, 0xDB, 0xDE, 0x68, 0x86, 0x6C, 0x44, 0x93, 0xB6,
+	0xB1, 0x63, 0xFD, 0x14, 0x12, 0x6B, 0xBF, 0x1F, 0xD2, 0xEA, 0x31, 0x9B,
+	0x21, 0x7E, 0xD1, 0x33, 0x3C, 0xBA, 0x48, 0xF5, 0xDD, 0x79, 0xDF, 0xB3,
+	0xB8, 0xFF, 0x12, 0xF1, 0x21, 0x9A, 0x4B, 0xC1, 0x8A, 0x86, 0x71, 0x69,
+	0x4A, 0x66, 0x66, 0x6C, 0x8F, 0x7E, 0x3C, 0x70, 0xBF, 0xAD, 0x29, 0x22,
+	0x06, 0xF3, 0xE4, 0xC0, 0xE6, 0x80, 0xAE, 0xE2, 0x4B, 0x8F, 0xB7, 0x99,
+	0x7E, 0x94, 0x03, 0x9F, 0xD3, 0x47, 0x97, 0x7C, 0x99, 0x48, 0x23, 0x53,
+	0xE8, 0x38, 0xAE, 0x4F, 0x0A, 0x6F, 0x83, 0x2E, 0xD1, 0x49, 0x57, 0x8C,
+	0x80, 0x74, 0xB6, 0xDA, 0x2F, 0xD0, 0x38, 0x8D, 0x7B, 0x03, 0x70, 0x21,
+	0x1B, 0x75, 0xF2, 0x30, 0x3C, 0xFA, 0x8F, 0xAE, 0xDD, 0xDA, 0x63, 0xAB,
+	0xEB, 0x16, 0x4F, 0xC2, 0x8E, 0x11, 0x4B, 0x7E, 0xCF, 0x0B, 0xE8, 0xFF,
+	0xB5, 0x77, 0x2E, 0xF4, 0xB2, 0x7B, 0x4A, 0xE0, 0x4C, 0x12, 0x25, 0x0C,
+	0x70, 0x8D, 0x03, 0x29, 0xA0, 0xE1, 0x53, 0x24, 0xEC, 0x13, 0xD9, 0xEE,
+	0x19, 0xBF, 0x10, 0xB3, 0x4A, 0x8C, 0x3F, 0x89, 0xA3, 0x61, 0x51, 0xDE,
+	0xAC, 0x87, 0x07, 0x94, 0xF4, 0x63, 0x71, 0xEC, 0x2E, 0xE2, 0x6F, 0x5B,
+	0x98, 0x81, 0xE1, 0x89, 0x5C, 0x34, 0x79, 0x6C, 0x76, 0xEF, 0x3B, 0x90,
+	0x62, 0x79, 0xE6, 0xDB, 0xA4, 0x9A, 0x2F, 0x26, 0xC5, 0xD0, 0x10, 0xE1,
+	0x0E, 0xDE, 0xD9, 0x10, 0x8E, 0x16, 0xFB, 0xB7, 0xF7, 0xA8, 0xF7, 0xC7,
+	0xE5, 0x02, 0x07, 0x98, 0x8F, 0x36, 0x08, 0x95, 0xE7, 0xE2, 0x37, 0x96,
+	0x0D, 0x36, 0x75, 0x9E, 0xFB, 0x0E, 0x72, 0xB1, 0x1D, 0x9B, 0xBC, 0x03,
+	0xF9, 0x49, 0x05, 0xD8, 0x81, 0xDD, 0x05, 0xB4, 0x2A, 0xD6, 0x41, 0xE9,
+	0xAC, 0x01, 0x76, 0x95, 0x0A, 0x0F, 0xD8, 0xDF, 0xD5, 0xBD, 0x12, 0x1F,
+	0x35, 0x2F, 0x28, 0x17, 0x6C, 0xD2, 0x98, 0xC1, 0xA8, 0x09, 0x64, 0x77,
+	0x6E, 0x47, 0x37, 0xBA, 0xCE, 0xAC, 0x59, 0x5E, 0x68, 0x9D, 0x7F, 0x72,
+	0xD6, 0x89, 0xC5, 0x06, 0x41, 0x29, 0x3E, 0x59, 0x3E, 0xDD, 0x26, 0xF5,
+	0x24, 0xC9, 0x11, 0xA7, 0x5A, 0xA3, 0x4C, 0x40, 0x1F, 0x46, 0xA1, 0x99,
+	0xB5, 0xA7, 0x3A, 0x51, 0x6E, 0x86, 0x3B, 0x9E, 0x7D, 0x72, 0xA7, 0x12,
+	0x05, 0x78, 0x59, 0xED, 0x3E, 0x51, 0x78, 0x15, 0x0B, 0x03, 0x8F, 0x8D,
+	0xD0, 0x2F, 0x05, 0xB2, 0x3E, 0x7B, 0x4A, 0x1C, 0x4B, 0x73, 0x05, 0x12,
+	0xFC, 0xC6, 0xEA, 0xE0, 0x50, 0x13, 0x7C, 0x43, 0x93, 0x74, 0xB3, 0xCA,
+	0x74, 0xE7, 0x8E, 0x1F, 0x01, 0x08, 0xD0, 0x30, 0xD4, 0x5B, 0x71, 0x36,
+	0xB4, 0x07, 0xBA, 0xC1, 0x30, 0x30, 0x5C, 0x48, 0xB7, 0x82, 0x3B, 0x98,
+	0xA6, 0x7D, 0x60, 0x8A, 0xA2, 0xA3, 0x29, 0x82, 0xCC, 0xBA, 0xBD, 0x83,
+	0x04, 0x1B, 0xA2, 0x83, 0x03, 0x41, 0xA1, 0xD6, 0x05, 0xF1, 0x1B, 0xC2,
+	0xB6, 0xF0, 0xA8, 0x7C, 0x86, 0x3B, 0x46, 0xA8, 0x48, 0x2A, 0x88, 0xDC,
+	0x76, 0x9A, 0x76, 0xBF, 0x1F, 0x6A, 0xA5, 0x3D, 0x19, 0x8F, 0xEB, 0x38,
+	0xF3, 0x64, 0xDE, 0xC8, 0x2B, 0x0D, 0x0A, 0x28, 0xFF, 0xF7, 0xDB, 0xE2,
+	0x15, 0x42, 0xD4, 0x22, 0xD0, 0x27, 0x5D, 0xE1, 0x79, 0xFE, 0x18, 0xE7,
+	0x70, 0x88, 0xAD, 0x4E, 0xE6, 0xD9, 0x8B, 0x3A, 0xC6, 0xDD, 0x27, 0x51,
+	0x6E, 0xFF, 0xBC, 0x64, 0xF5, 0x33, 0x43, 0x4F
+};
+
+static const unsigned char TA2_RSA_E[] = {
+	0x01, 0x00, 0x01
+};
+
+static const unsigned char TA3_DN[] = {
+	0x30, 0x4F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+	0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0A,
+	0x13, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x53,
+	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x31, 0x15,
+	0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0C, 0x49, 0x53, 0x52,
+	0x47, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x58, 0x32
+};
+
+static const unsigned char TA3_EC_Q[] = {
+	0x04, 0xCD, 0x9B, 0xD5, 0x9F, 0x80, 0x83, 0x0A, 0xEC, 0x09, 0x4A, 0xF3,
+	0x16, 0x4A, 0x3E, 0x5C, 0xCF, 0x77, 0xAC, 0xDE, 0x67, 0x05, 0x0D, 0x1D,
+	0x07, 0xB6, 0xDC, 0x16, 0xFB, 0x5A, 0x8B, 0x14, 0xDB, 0xE2, 0x71, 0x60,
+	0xC4, 0xBA, 0x45, 0x95, 0x11, 0x89, 0x8E, 0xEA, 0x06, 0xDF, 0xF7, 0x2A,
+	0x16, 0x1C, 0xA4, 0xB9, 0xC5, 0xC5, 0x32, 0xE0, 0x03, 0xE0, 0x1E, 0x82,
+	0x18, 0x38, 0x8B, 0xD7, 0x45, 0xD8, 0x0A, 0x6A, 0x6E, 0xE6, 0x00, 0x77,
+	0xFB, 0x02, 0x51, 0x7D, 0x22, 0xD8, 0x0A, 0x6E, 0x9A, 0x5B, 0x77, 0xDF,
+	0xF0, 0xFA, 0x41, 0xEC, 0x39, 0xDC, 0x75, 0xCA, 0x68, 0x07, 0x0C, 0x1F,
+	0xEA
+};
+
+static const unsigned char TA4_DN[] = {
+	0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
+	0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A,
+	0x13, 0x09, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x31,
+	0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A, 0x43, 0x79,
+	0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20,
+	0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6C, 0x74, 0x69,
+	0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72,
+	0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74
+};
+
+static const unsigned char TA4_RSA_N[] = {
+	0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A,
+	0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3,
+	0x5B, 0x8E, 0x2B, 0x29, 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09,
+	0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2, 0x62, 0xFE, 0xB4, 0x88,
+	0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52,
+	0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A,
+	0x09, 0xE7, 0x73, 0xE8, 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D,
+	0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8, 0x50, 0xC3, 0x28, 0xEA,
+	0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F,
+	0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70,
+	0xF0, 0x8F, 0xC0, 0x12, 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33,
+	0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68, 0x44, 0x42, 0x48, 0x13,
+	0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC,
+	0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5,
+	0x63, 0xE0, 0x90, 0x0C, 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA,
+	0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F, 0xFF, 0x15, 0xED, 0x69,
+	0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9,
+	0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98,
+	0x21, 0x5C, 0x07, 0x99, 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86,
+	0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68, 0x18, 0x31, 0xF0, 0x78,
+	0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90,
+	0xDC, 0x27, 0x1A, 0x39
+};
+
+static const unsigned char TA4_RSA_E[] = {
+	0x01, 0x00, 0x01
+};
+
+static const unsigned char TA5_DN[] = {
+	0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
+	0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
+	0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A, 0x65, 0x72, 0x73, 0x65,
+	0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0B,
+	0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31,
+	0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x54, 0x68,
+	0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20,
+	0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2E, 0x30, 0x2C, 0x06,
+	0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72,
+	0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74,
+	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75,
+	0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79
+};
+
+static const unsigned char TA5_RSA_N[] = {
+	0x80, 0x12, 0x65, 0x17, 0x36, 0x0E, 0xC3, 0xDB, 0x08, 0xB3, 0xD0, 0xAC,
+	0x57, 0x0D, 0x76, 0xED, 0xCD, 0x27, 0xD3, 0x4C, 0xAD, 0x50, 0x83, 0x61,
+	0xE2, 0xAA, 0x20, 0x4D, 0x09, 0x2D, 0x64, 0x09, 0xDC, 0xCE, 0x89, 0x9F,
+	0xCC, 0x3D, 0xA9, 0xEC, 0xF6, 0xCF, 0xC1, 0xDC, 0xF1, 0xD3, 0xB1, 0xD6,
+	0x7B, 0x37, 0x28, 0x11, 0x2B, 0x47, 0xDA, 0x39, 0xC6, 0xBC, 0x3A, 0x19,
+	0xB4, 0x5F, 0xA6, 0xBD, 0x7D, 0x9D, 0xA3, 0x63, 0x42, 0xB6, 0x76, 0xF2,
+	0xA9, 0x3B, 0x2B, 0x91, 0xF8, 0xE2, 0x6F, 0xD0, 0xEC, 0x16, 0x20, 0x90,
+	0x09, 0x3E, 0xE2, 0xE8, 0x74, 0xC9, 0x18, 0xB4, 0x91, 0xD4, 0x62, 0x64,
+	0xDB, 0x7F, 0xA3, 0x06, 0xF1, 0x88, 0x18, 0x6A, 0x90, 0x22, 0x3C, 0xBC,
+	0xFE, 0x13, 0xF0, 0x87, 0x14, 0x7B, 0xF6, 0xE4, 0x1F, 0x8E, 0xD4, 0xE4,
+	0x51, 0xC6, 0x11, 0x67, 0x46, 0x08, 0x51, 0xCB, 0x86, 0x14, 0x54, 0x3F,
+	0xBC, 0x33, 0xFE, 0x7E, 0x6C, 0x9C, 0xFF, 0x16, 0x9D, 0x18, 0xBD, 0x51,
+	0x8E, 0x35, 0xA6, 0xA7, 0x66, 0xC8, 0x72, 0x67, 0xDB, 0x21, 0x66, 0xB1,
+	0xD4, 0x9B, 0x78, 0x03, 0xC0, 0x50, 0x3A, 0xE8, 0xCC, 0xF0, 0xDC, 0xBC,
+	0x9E, 0x4C, 0xFE, 0xAF, 0x05, 0x96, 0x35, 0x1F, 0x57, 0x5A, 0xB7, 0xFF,
+	0xCE, 0xF9, 0x3D, 0xB7, 0x2C, 0xB6, 0xF6, 0x54, 0xDD, 0xC8, 0xE7, 0x12,
+	0x3A, 0x4D, 0xAE, 0x4C, 0x8A, 0xB7, 0x5C, 0x9A, 0xB4, 0xB7, 0x20, 0x3D,
+	0xCA, 0x7F, 0x22, 0x34, 0xAE, 0x7E, 0x3B, 0x68, 0x66, 0x01, 0x44, 0xE7,
+	0x01, 0x4E, 0x46, 0x53, 0x9B, 0x33, 0x60, 0xF7, 0x94, 0xBE, 0x53, 0x37,
+	0x90, 0x73, 0x43, 0xF3, 0x32, 0xC3, 0x53, 0xEF, 0xDB, 0xAA, 0xFE, 0x74,
+	0x4E, 0x69, 0xC7, 0x6B, 0x8C, 0x60, 0x93, 0xDE, 0xC4, 0xC7, 0x0C, 0xDF,
+	0xE1, 0x32, 0xAE, 0xCC, 0x93, 0x3B, 0x51, 0x78, 0x95, 0x67, 0x8B, 0xEE,
+	0x3D, 0x56, 0xFE, 0x0C, 0xD0, 0x69, 0x0F, 0x1B, 0x0F, 0xF3, 0x25, 0x26,
+	0x6B, 0x33, 0x6D, 0xF7, 0x6E, 0x47, 0xFA, 0x73, 0x43, 0xE5, 0x7E, 0x0E,
+	0xA5, 0x66, 0xB1, 0x29, 0x7C, 0x32, 0x84, 0x63, 0x55, 0x89, 0xC4, 0x0D,
+	0xC1, 0x93, 0x54, 0x30, 0x19, 0x13, 0xAC, 0xD3, 0x7D, 0x37, 0xA7, 0xEB,
+	0x5D, 0x3A, 0x6C, 0x35, 0x5C, 0xDB, 0x41, 0xD7, 0x12, 0xDA, 0xA9, 0x49,
+	0x0B, 0xDF, 0xD8, 0x80, 0x8A, 0x09, 0x93, 0x62, 0x8E, 0xB5, 0x66, 0xCF,
+	0x25, 0x88, 0xCD, 0x84, 0xB8, 0xB1, 0x3F, 0xA4, 0x39, 0x0F, 0xD9, 0x02,
+	0x9E, 0xEB, 0x12, 0x4C, 0x95, 0x7C, 0xF3, 0x6B, 0x05, 0xA9, 0x5E, 0x16,
+	0x83, 0xCC, 0xB8, 0x67, 0xE2, 0xE8, 0x13, 0x9D, 0xCC, 0x5B, 0x82, 0xD3,
+	0x4C, 0xB3, 0xED, 0x5B, 0xFF, 0xDE, 0xE5, 0x73, 0xAC, 0x23, 0x3B, 0x2D,
+	0x00, 0xBF, 0x35, 0x55, 0x74, 0x09, 0x49, 0xD8, 0x49, 0x58, 0x1A, 0x7F,
+	0x92, 0x36, 0xE6, 0x51, 0x92, 0x0E, 0xF3, 0x26, 0x7D, 0x1C, 0x4D, 0x17,
+	0xBC, 0xC9, 0xEC, 0x43, 0x26, 0xD0, 0xBF, 0x41, 0x5F, 0x40, 0xA9, 0x44,
+	0x44, 0xF4, 0x99, 0xE7, 0x57, 0x87, 0x9E, 0x50, 0x1F, 0x57, 0x54, 0xA8,
+	0x3E, 0xFD, 0x74, 0x63, 0x2F, 0xB1, 0x50, 0x65, 0x09, 0xE6, 0x58, 0x42,
+	0x2E, 0x43, 0x1A, 0x4C, 0xB4, 0xF0, 0x25, 0x47, 0x59, 0xFA, 0x04, 0x1E,
+	0x93, 0xD4, 0x26, 0x46, 0x4A, 0x50, 0x81, 0xB2, 0xDE, 0xBE, 0x78, 0xB7,
+	0xFC, 0x67, 0x15, 0xE1, 0xC9, 0x57, 0x84, 0x1E, 0x0F, 0x63, 0xD6, 0xE9,
+	0x62, 0xBA, 0xD6, 0x5F, 0x55, 0x2E, 0xEA, 0x5C, 0xC6, 0x28, 0x08, 0x04,
+	0x25, 0x39, 0xB8, 0x0E, 0x2B, 0xA9, 0xF2, 0x4C, 0x97, 0x1C, 0x07, 0x3F,
+	0x0D, 0x52, 0xF5, 0xED, 0xEF, 0x2F, 0x82, 0x0F
+};
+
+static const unsigned char TA5_RSA_E[] = {
+	0x01, 0x00, 0x01
+};
+
+static const br_x509_trust_anchor TAs[6] = {
+	{
+		{ (unsigned char *)TA0_DN, sizeof TA0_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_RSA,
+			{ .rsa = {
+				(unsigned char *)TA0_RSA_N, sizeof TA0_RSA_N,
+				(unsigned char *)TA0_RSA_E, sizeof TA0_RSA_E,
+			} }
+		}
+	},
+	{
+		{ (unsigned char *)TA1_DN, sizeof TA1_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_RSA,
+			{ .rsa = {
+				(unsigned char *)TA1_RSA_N, sizeof TA1_RSA_N,
+				(unsigned char *)TA1_RSA_E, sizeof TA1_RSA_E,
+			} }
+		}
+	},
+	{
+		{ (unsigned char *)TA2_DN, sizeof TA2_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_RSA,
+			{ .rsa = {
+				(unsigned char *)TA2_RSA_N, sizeof TA2_RSA_N,
+				(unsigned char *)TA2_RSA_E, sizeof TA2_RSA_E,
+			} }
+		}
+	},
+	{
+		{ (unsigned char *)TA3_DN, sizeof TA3_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_EC,
+			{ .ec = {
+				BR_EC_secp384r1,
+				(unsigned char *)TA3_EC_Q, sizeof TA3_EC_Q,
+			} }
+		}
+	},
+	{
+		{ (unsigned char *)TA4_DN, sizeof TA4_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_RSA,
+			{ .rsa = {
+				(unsigned char *)TA4_RSA_N, sizeof TA4_RSA_N,
+				(unsigned char *)TA4_RSA_E, sizeof TA4_RSA_E,
+			} }
+		}
+	},
+	{
+		{ (unsigned char *)TA5_DN, sizeof TA5_DN },
+		BR_X509_TA_CA,
+		{
+			BR_KEYTYPE_RSA,
+			{ .rsa = {
+				(unsigned char *)TA5_RSA_N, sizeof TA5_RSA_N,
+				(unsigned char *)TA5_RSA_E, sizeof TA5_RSA_E,
+			} }
+		}
+	}
+};
+
+#define TAs_NUM 6
\ No newline at end of file
diff --git a/misc/dreamcast/DrawColouredQuads.S b/misc/dreamcast/DrawColouredQuads.S
new file mode 100644
index 0000000..074605a
--- /dev/null
+++ b/misc/dreamcast/DrawColouredQuads.S
@@ -0,0 +1,65 @@
+#include "ViewportTransform.S"
+.global _DrawColouredQuads
+.align 4
+.type  _DrawColouredQuads,%function
+
+_DrawColouredQuads:
+! Setup
+    fldi0 fr1     ! U = 0
+    fldi0 fr2     ! V = 0
+    mov r4,r3     ! r3  = src
+    add #-32, r5  ! r5 -= sizeof(VERTEX)
+    ViewportTransformSetup _VP_COL_HWIDTH
+
+.TRANSFORM_QUAD:
+    mov.l CMD_COL_VERT, r1 ! r1  = GPU VERT command
+
+    LoadColouredVertex
+    ProcessVertex1
+
+    LoadColouredVertex
+    ProcessVertex2
+
+    LoadColouredVertex
+    ProcessVertex3
+
+    LoadColouredVertex
+    ProcessVertex4 CMD_COL_EOS
+
+! CLIPFLAGS TESTING
+    cmp/eq   #0,r0 ! T = r0 == 0 (all points invisible)
+    bt/s    .NO_POINTS_VISIBLE  ! if T goto NO_POINTS_VISIBLE
+    nop
+    bra .SOME_POINTS_VISIBLE
+    nop
+
+.NO_POINTS_VISIBLE:
+    bra .LOOP_END ! jump to loop end after executing instruction in delay slot
+    add #-128, r5 ! r5 -= 4 * sizeof(VERTEX), move back to 1 vertex before start of quad
+
+.SOME_POINTS_VISIBLE:
+
+.LOOP_END:
+    dt r6 ! r6--; T = r6 == 0
+    bf .TRANSFORM_QUAD ! if !T then goto TRANSFORM_QUAD
+    nop
+    
+    add #32, r5     ! r5 += sizeof(VERTEX)
+    rts             ! return after executing instruction in delay slot
+    mov r5,r0       ! r0 = r5
+
+.align 2
+CMD_COL_VERT: .long 0xe0000000
+CMD_COL_EOS:  .long 0xf0000000
+
+.global _VP_COL_HWIDTH
+_VP_COL_HWIDTH:  .long 0
+
+.global _VP_COL_HHEIGHT
+_VP_COL_HHEIGHT: .long 0
+
+.global _VP_COL_X_PLUS_HWIDTH
+_VP_COL_X_PLUS_HWIDTH:  .long 0
+
+.global _VP_COL_Y_PLUS_HHEIGHT
+_VP_COL_Y_PLUS_HHEIGHT: .long 0
diff --git a/misc/dreamcast/DrawTexturedQuads.S b/misc/dreamcast/DrawTexturedQuads.S
new file mode 100644
index 0000000..5ce16bd
--- /dev/null
+++ b/misc/dreamcast/DrawTexturedQuads.S
@@ -0,0 +1,63 @@
+#include "ViewportTransform.S"
+.global _DrawTexturedQuads
+.align 4
+.type  _DrawTexturedQuads,%function
+
+_DrawTexturedQuads:
+! Setup
+    mov r4,r3     ! r3  = src
+    add #-32, r5  ! r5 -= sizeof(VERTEX)
+    ViewportTransformSetup _VP_TEX_HWIDTH
+
+.TRANSFORM_QUAD:
+    mov.l CMD_TEX_VERT, r1 ! r1  = GPU VERT command
+
+    LoadTexturedVertex
+    ProcessVertex1
+
+    LoadTexturedVertex
+    ProcessVertex2
+
+    LoadTexturedVertex
+    ProcessVertex3
+
+    LoadTexturedVertex
+    ProcessVertex4 CMD_TEX_EOS
+
+! CLIPFLAGS TESTING
+    cmp/eq  #0,r0  ! T = r0 == 0 (all points invisible)
+    bt/s    .NO_POINTS_VISIBLE  ! if T goto NO_POINTS_VISIBLE
+    nop
+    bra .SOME_POINTS_VISIBLE
+    nop
+
+.NO_POINTS_VISIBLE:
+    bra .LOOP_END ! jump to loop end after executing instruction in delay slot
+    add #-128, r5 ! r5 -= 4 * sizeof(VERTEX), move back to prior quad, so that this invisible quad gets overwritten in next iteration
+
+.SOME_POINTS_VISIBLE:
+
+.LOOP_END:
+    dt r6 ! r6--; T = r6 == 0
+    bf .TRANSFORM_QUAD ! if !T then goto TRANSFORM_QUAD
+    nop
+    
+    add #32, r5     ! r5 += sizeof(VERTEX)
+    rts             ! return after executing instruction in delay slot
+    mov r5,r0       ! r0 = r5
+
+.align 2
+CMD_TEX_VERT: .long 0xe0000000
+CMD_TEX_EOS:  .long 0xf0000000
+
+.global _VP_TEX_HWIDTH
+_VP_TEX_HWIDTH:  .long 0
+
+.global _VP_TEX_HHEIGHT
+_VP_TEX_HHEIGHT: .long 0
+
+.global _VP_TEX_X_PLUS_HWIDTH
+_VP_TEX_X_PLUS_HWIDTH:  .long 0
+
+.global _VP_TEX_Y_PLUS_HHEIGHT
+_VP_TEX_Y_PLUS_HHEIGHT: .long 0
diff --git a/misc/dreamcast/Makefile b/misc/dreamcast/Makefile
new file mode 100644
index 0000000..5362a41
--- /dev/null
+++ b/misc/dreamcast/Makefile
@@ -0,0 +1,66 @@
+BUILD_DIR		:= build-dc
+SOURCE_DIRS		:= src third_party/bearssl/src misc/dreamcast
+
+S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
+C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
+OBJS 	:= $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
+CFLAGS	:=-g -O1 -pipe -fno-math-errno -Ithird_party/bearssl/inc
+
+GLDC_LIB=third_party/gldc/libGLdc.a
+LDFLAGS=-g
+LIBS=-lm $(GLDC_LIB) -lppp -lkosfat
+
+TARGET := ClassiCube-dc
+CC_TEXTURES = misc/dreamcast/classicube.zip
+
+ifeq ($(strip $(KOS_BASE)),)
+$(error "Please set KOS variables in your environment.")
+endif
+
+default: $(CC_TEXTURES) $(GLDC_LIB) $(BUILD_DIR) $(TARGET).cdi
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+	
+$(GLDC_LIB): FORCE
+	$(MAKE) -C third_party/gldc
+FORCE: ;
+
+# TODO add textures to misc folder ?	
+$(CC_TEXTURES): 
+	curl http://www.classicube.net/static/default.zip -o $@
+	
+$(BUILD_DIR)/%.o: src/%.c
+	kos-cc $(CFLAGS) -c $< -o $@
+
+$(BUILD_DIR)/%.o: misc/dreamcast/%.S
+	kos-cc -c $< -o $@
+
+$(BUILD_DIR)/%.o: third_party/bearssl/src/%.c
+	kos-cc $(CFLAGS) -c $< -o $@
+	
+
+$(TARGET).elf: $(OBJS)
+	kos-cc $(LDFLAGS) $^ -o $@ $(LIBS)
+	
+$(TARGET).bin: $(TARGET).elf
+	sh-elf-objcopy -R .stack -O binary $(TARGET).elf $(TARGET).bin
+	
+# https://dcemulation.org/phpBB/viewtopic.php?t=105269
+$(TARGET)-scr.bin: $(TARGET).bin
+	$(KOS_BASE)/utils/scramble/scramble $(TARGET).bin $(TARGET)-scr.bin
+	
+$(TARGET).iso: $(TARGET)-scr.bin
+	mkdir -p ISO_FILES
+	cp $(TARGET)-scr.bin ISO_FILES/1ST_READ.BIN
+	mkdir -p ISO_FILES/audio
+	mkdir -p ISO_FILES/maps
+	mkdir -p ISO_FILES/texpacks
+	mkdir -p ISO_FILES/texturecache
+	cp $(CC_TEXTURES) ISO_FILES/texpacks/default.zip
+	cp misc/dreamcast/IP.BIN IP.BIN
+	mkisofs -G IP.BIN -C 0,11702 -J -l -r -o $(TARGET).iso ISO_FILES
+	# genisoimage -V ClassiCube -G IP.BIN -joliet -rock -l -o $(TARGET).iso ISO_FILES
+	
+$(TARGET).cdi: $(TARGET).iso
+	cdi4dc $(TARGET).iso $(TARGET).cdi
diff --git a/misc/dreamcast/ViewportTransform.S b/misc/dreamcast/ViewportTransform.S
new file mode 100644
index 0000000..19d3052
--- /dev/null
+++ b/misc/dreamcast/ViewportTransform.S
@@ -0,0 +1,218 @@
+! =========================================================
+! ======================== PROCESSOR INFO =================
+! =========================================================
+! The SH4 can dual issue (i.e. parallel execution) two instructions
+! as long as the groups of the two instructions are different:
+! * LS - most APU and FPU register load/stores
+! * EX - most APU arithmetic instructions
+! * MT - TST, CMP, NOP, MOV Rm,Rn
+! * FE - most FPU arithmetic instructions
+! * CO - other instructions (NOTE: Cannot be exeucted in parallel)
+
+! Thee following general aspects of instructions are important to note per the SH4 manual:
+! * Issue rate: Interval between the issue of an instruction and that of the next instruction
+! * Latency: Interval between the issue of an instruction and the generation of its result (completion)
+! * Latency is also the interval between the execution of two instructions with an interdependent relationship.
+!   (although different cases may either increase or decrease Latency)
+!
+
+
+! =========================================================
+! ======================== REGISTER USAGES ================
+! =========================================================
+! SH4 C ABI:
+! -  R0  to  R3 are return values (can be overwritten)
+! -  R4  to  R7 are input arguments (can be overwritten)
+! -  R8  to R13 are non-volatile (must be restored at end)
+! - R14  is the frame pointer (must be restored at end)
+! - R15  is the stack pointer (must be restored at end)
+! - FR0  to FR3 are return values (can be overwritten)
+! - FR4  to FR11 are input arguments (can be overwritten)
+! - FR12 to FR13 are non-volatile (must be restored at end)
+
+!r0 = clip flags
+!r1 = GPU command
+!r2 = temp
+!r3 = prefetch address
+!r4 = src pointer ARG
+!r5 = dst pointer ARG
+!r6 = quads count ARG
+!r7 = ?
+
+!fr0  = temp
+!fr1  = u
+!fr2  = v
+!fr3  = c
+!fr4  = x
+!fr5  = y
+!fr6  = z
+!fr7  = w
+!fr8  = VIEWPORT_HWIDTH
+!fr9  = VIEWPORT_HHEIGHT
+!fr10 = VIEWPORT_X_PLUS_HWIDTH
+!fr11 = VIEWPORT_Y_PLUS_HHEIGHT
+
+!fv4  = XYZW
+
+
+! =========================================================
+! ========================= VERTEX LOADING ================
+! =========================================================
+.macro LoadColouredVertex
+! LOAD XYZ
+    fmov @r4+, fr4   ! LS, X = src->x
+    fmov @r4+, fr5   ! LS, Y = src->y
+    fmov @r4+, fr6   ! LS, Z = src->z
+    fldi1 fr7        ! LS, W = 1.0
+! PREPARE NEXT VERTEX
+    add #16, r3      ! EX, r3 += VERTEX_STRIDE
+    pref @r3         ! LS, PREFETCH r3 (next vertex)
+    add #64, r5      ! EX, r5 += 2 * sizeof(VERTEX)
+! TRANSFORM VERTEX
+    ftrv xmtrx, fv4  ! FE, TRANSFORM(XYZW)
+! LOAD ATTRIBUTES
+    fmov   @r4+,fr3  ! LS, C = src->color
+.endm
+
+.macro LoadTexturedVertex
+! LOAD XYZ
+    fmov @r4+, fr4   ! LS, X = src->x
+    fmov @r4+, fr5   ! LS, Y = src->y
+    fmov @r4+, fr6   ! LS, Z = src->z
+    fldi1 fr7        ! LS, W = 1.0
+! PREPARE NEXT VERTEX
+    add #24, r3      ! EX, r3 += VERTEX_STRIDE
+    pref @r3         ! LS, PREFETCH r3 (next vertex)
+    add #64, r5      ! EX, r5 += 2 * sizeof(VERTEX)
+! TRANSFORM VERTEX
+    ftrv xmtrx, fv4  ! FE, TRANSFORM(XYZW)
+! LOAD ATTRIBUTES
+    fmov    @r4+,fr3 ! LS, C = src->color
+    fmov    @r4+,fr1 ! LS, U = src->u
+    fmov    @r4+,fr2 ! LS, V = src->v
+.endm
+
+! =========================================================
+! ========================= VERTEX OUTPUT =================
+! =========================================================
+! To take advantage of SH4 dual instruction processing, 
+!  clipflag calculation and vertex output are interleaved
+.macro ProcessVertex1
+    fmov.s  fr7,@-r5 ! LS, dst->w = W
+    fmov.s  fr3,@-r5 ! LS, dst->c = C
+    fneg    fr7      ! LS, W = -W
+    fmov.s  fr2,@-r5 ! LS, dst->v = V
+    fcmp/gt fr7,fr6  ! FE, T = Z > W (i.e. Z > -W)
+    fmov.s  fr1,@-r5 ! LS, dst->u = U
+    movt    r0       ! EX, CLIPFLAGS = T
+    fmov.s  fr6,@-r5 ! LS, dst->z = Z
+    fmov.s  fr5,@-r5 ! LS, dst->y = Y
+    fmov.s  fr4,@-r5 ! LS, dst->x = X
+    mov.l   r1,@-r5  ! LS, dst->flags = CMD_VERT
+.endm
+
+.macro ProcessVertex2
+    fmov.s  fr7,@-r5 ! LS, dst->w = W
+    fmov.s  fr3,@-r5 ! LS, dst->c = C
+    fneg    fr7      ! LS, W = -W
+    fmov.s  fr2,@-r5 ! LS, dst->v = V
+    fcmp/gt fr7,fr6  ! FE, T = Z > W (i.e. Z > -W)
+    fmov.s  fr1,@-r5 ! LS, dst->u = U
+    movt    r2       ! EX, tmp = T
+    fmov.s  fr6,@-r5 ! LS, dst->z = Z
+    add     r2,r2    ! EX, tmp = tmp + tmp
+    fmov.s  fr5,@-r5 ! LS, dst->y = Y
+    or      r2,r0    ! EX, CLIPFLAGS |= tmp (T << 1)
+    fmov.s  fr4,@-r5 ! LS, dst->x = X
+    mov.l   r1,@-r5  ! LS, dst->flags = CMD_VERT
+.endm
+
+.macro ProcessVertex3
+    fmov.s  fr7,@-r5 ! LS, dst->w = W
+    fmov.s  fr3,@-r5 ! LS, dst->c = C
+    fneg    fr7      ! LS, W = -W
+    fmov.s  fr2,@-r5 ! LS, dst->v = V
+    fcmp/gt fr7,fr6  ! FE, T = Z > W (i.e. Z > -W)
+    fmov.s  fr1,@-r5 ! LS, dst->u = U
+    movt    r2       ! EX, tmp = T
+    fmov.s  fr6,@-r5 ! LS, dst->z = Z
+    fmov.s  fr5,@-r5 ! LS, dst->y = Y
+    shll2   r2       ! EX, tmp = tmp << 2
+    fmov.s  fr4,@-r5 ! LS, dst->x = X
+    or      r2,r0    ! EX, CLIPFLAGS |= tmp (T << 2)
+    mov.l   r1,@-r5  ! LS, dst->flags = CMD_VERT
+.endm
+
+.macro ProcessVertex4 eos_addr
+    fmov.s  fr7,@-r5 ! LS, dst->w = W
+    fmov.s  fr3,@-r5 ! LS, dst->c = C
+    fneg    fr7      ! LS, W = -W
+    fmov.s  fr2,@-r5 ! LS, dst->v = V
+    fcmp/gt fr7,fr6  ! FE, T = Z > W (i.e. Z > -W)
+    fmov.s  fr1,@-r5 ! LS, dst->u = U
+    movt    r2       ! EX, tmp = T
+    fmov.s  fr6,@-r5 ! LS, dst->z = Z
+    shll2   r2       ! EX, tmp = tmp << 2
+    fmov.s  fr5,@-r5 ! LS, dst->y = Y
+    add     r2,r2    ! EX, tmp = (tmp << 2) + (tmp << 2)
+    fmov.s  fr4,@-r5 ! LS, dst->x = X
+    mov.l \eos_addr, r1 ! LS, r1  = GPU EOS command
+    or      r2,r0    ! EX, CLIPFLAGS |= tmp (T << 3)
+    or      r0,r1    ! EX, r1 |= CLIPFLAGS
+    mov.l   r1,@-r5  ! LS, dst->flags = GPU EOS | CLIPFLAGS
+.endm
+
+
+! =========================================================
+! ====================== VIEWPORT TRANSFORM ===============
+! =========================================================
+!r2 = return addr
+!r0 = temp
+!r5 = dst pointer
+
+!fr0  = temp
+!fr4  = temp
+!fr5  = temp
+!fr5  = temp
+!fr8  = VIEWPORT_HWIDTH
+!fr9  = VIEWPORT_HHEIGHT
+!fr10 = VIEWPORT_X_PLUS_HWIDTH
+!fr11 = VIEWPORT_Y_PLUS_HHEIGHT
+
+.macro ViewportTransformSetup vp_addr
+    mova \vp_addr, r0 ! EX,  r0  = &VIEWPORT
+    fmov.s	@r0+,fr8  ! LS, fr8  = VIEWPORT_HWIDTH
+    fmov.s	@r0+,fr9  ! LS, fr9  = VIEWPORT_HHEIGHT
+    fmov.s	@r0+,fr10 ! LS, fr10 = VIEWPORT_X_PLUS_HWIDTH
+    fmov.s	@r0+,fr11 ! LS, fr11 = VIEWPORT_Y_PLUS_HHEIGHT
+    nop               ! MT (align to even instructions boundary)
+.endm
+
+.macro ViewportTransformVertex
+! INVERSE W CALCULATION
+    add #28, r5       ! EX, r5  = &vertex->w
+    fmov.s  @r5,fr0   ! LS, fr0 = vertex->w
+    fmul    fr0,fr0   ! FE, fr0 = fr0 * fr0
+    add #-24, r5      ! EX, r5  = &vertex->x
+    fsrra   fr0       ! FE, fr0 = 1 / sqrt(fr0) -> 1 / vertex->w
+
+! TRANSFORM X
+    fmov.s @r5,fr4    ! LS, fr4 = vertex->x
+    fmov  fr10,fr5    ! LS, fr5 = VIEWPORT_X_PLUS_HWIDTH
+    fmul  fr8,fr4     ! FE, fr4 = VIEWPORT_HWIDTH * vertex->x
+    fmac  fr0,fr4,fr5 ! FE, fr5 = fr0 * fr4 + fr5 -- (X * F * hwidth) + x_plus_hwidth
+    fmov.s fr5,@r5    ! LS, vertex->x = fr5
+    add #4, r5        ! EX, r5  = &vertex->y
+
+! TRANSFORM Y
+    fmov.s @r5,fr4    ! LS, fr4 = vertex->y
+    fmov  fr11,fr5    ! LS, fr5  = VIEWPORT_Y_PLUS_HHEIGHT
+    fmul  fr9,fr4     ! FE, fr4  = VIEWPORT_HHEIGHT * vertex->y
+    fmac  fr0,fr4,fr5 ! FE, fr5  = fr0 * fr4 + fr5 -- (Y * F * hheight) + y_plus_hheight
+    fmov.s fr5,@r5    ! LS, vertex->y = fr5
+    add #4, r5        ! EX, r5  = &vertex->z
+
+! ASSIGN Z
+    fmov.s fr0,@r5    ! LS, vertex->z = fr0
+    add #20, r5       ! EX, r5 += 20 (points to start of next vertex)
+.endm
diff --git a/misc/dreamcast/boot_logo.png b/misc/dreamcast/boot_logo.png
new file mode 100644
index 0000000..eb243c8
--- /dev/null
+++ b/misc/dreamcast/boot_logo.png
Binary files differdiff --git a/misc/dreamcast/ip.txt b/misc/dreamcast/ip.txt
new file mode 100644
index 0000000..e69910a
--- /dev/null
+++ b/misc/dreamcast/ip.txt
@@ -0,0 +1,3 @@
+Version       : V1.360
+SW Maker Name : UnknownShadow200
+Game Title    : ClassiCube Dreamcast
\ No newline at end of file
diff --git a/misc/dreamcast/readme.txt b/misc/dreamcast/readme.txt
new file mode 100644
index 0000000..a354b6e
--- /dev/null
+++ b/misc/dreamcast/readme.txt
@@ -0,0 +1,9 @@
+The dreamcast build requires an initial bootstrap program (Initial Program) named IP.bin
+
+To generate a custom IP.bin, compile https://github.com/Dreamcast-Projects/makeip
+
+Then run: makeip ip.txt IP.BIN -l boot_logo.png
+
+---
+
+For more details about IP.bin, see https://mc.pp.se/dc/ip.bin.html
\ No newline at end of file
diff --git a/misc/ds/Makefile b/misc/ds/Makefile
new file mode 100644
index 0000000..57c887a
--- /dev/null
+++ b/misc/ds/Makefile
@@ -0,0 +1,164 @@
+# SPDX-License-Identifier: CC0-1.0
+#
+# SPDX-FileContributor: Antonio Niño Díaz, 2023
+export BLOCKSDS			?= /opt/blocksds/core
+export BLOCKSDSEXT		?= /opt/blocksds/external
+
+NAME			:= ClassiCube
+GAME_TITLE		:= ClassiCube
+GAME_SUBTITLE	:= Built with BlocksDS
+GAME_AUTHOR		:= UnknownShadow200
+GAME_ICON		:= misc/ds/icon.bmp
+
+SOURCEDIRS	:= src
+INCLUDEDIRS	:=
+DEFINES		:= -DPLAT_NDS
+LIBS		:= -ldswifi9 -lnds9 -lc
+LIBDIRS		:= $(BLOCKSDS)/libs/dswifi $(BLOCKSDS)/libs/libnds
+
+
+export WONDERFUL_TOOLCHAIN	?= /opt/wonderful
+ARM_NONE_EABI_PATH	?= $(WONDERFUL_TOOLCHAIN)/toolchain/gcc-arm-none-eabi/bin/
+
+# DLDI and internal SD slot of DSi
+# --------------------------------
+
+# Root folder of the SD image
+SDROOT		:= sdroot
+# Name of the generated image it "DSi-1.sd" for no$gba in DSi mode
+SDIMAGE		:= image.bin
+
+# Build artifacts
+# ---------------
+
+BUILDDIR	:= build-nds
+ELF		:= build-nds/$(NAME).elf
+DUMP		:= build-nds/$(NAME).dump
+MAP		:= build-nds/$(NAME).map
+ROM		:= $(NAME).nds
+
+# Tools
+# -----
+
+PREFIX		:= $(ARM_NONE_EABI_PATH)arm-none-eabi-
+CC		:= $(PREFIX)gcc
+CXX		:= $(PREFIX)g++
+LD		:= $(PREFIX)gcc
+OBJDUMP		:= $(PREFIX)objdump
+MKDIR		:= mkdir
+RM		:= rm -rf
+
+# Verbose flag
+# ------------
+
+ifeq ($(VERBOSE),1)
+V		:=
+else
+V		:= @
+endif
+
+# Source files
+# ------------
+
+SOURCES_S	:= $(foreach dir,$(SOURCEDIRS),$(wildcard $(dir)/*.s))
+SOURCES_C	:= $(foreach dir,$(SOURCEDIRS),$(wildcard $(dir)/*.c))
+
+# Compiler and linker flags
+# -------------------------
+
+ARCH		:= -mthumb -mcpu=arm946e-s+nofp
+
+SPECS		:= $(BLOCKSDS)/sys/crts/ds_arm9.specs
+
+WARNFLAGS	:= -Wall
+
+INCLUDEFLAGS	:= $(foreach path,$(INCLUDEDIRS),-I$(path)) \
+		   $(foreach path,$(LIBDIRS),-I$(path)/include)
+
+LIBDIRSFLAGS	:= $(foreach path,$(LIBDIRS),-L$(path)/lib)
+
+ASFLAGS		+= -x assembler-with-cpp $(DEFINES) $(INCLUDEFLAGS) \
+		   $(ARCH) -ffunction-sections -fdata-sections \
+		   -specs=$(SPECS)
+
+CFLAGS		+= -std=gnu17 $(WARNFLAGS) $(DEFINES) $(INCLUDEFLAGS) \
+		   $(ARCH) -O2 -ffunction-sections -fdata-sections \
+		   -specs=$(SPECS)
+
+LDFLAGS		:= $(ARCH) $(LIBDIRSFLAGS) -Wl,-Map,$(MAP) $(DEFINES) \
+		   -Wl,--start-group $(LIBS) -Wl,--end-group -specs=$(SPECS)
+
+# Intermediate build files
+# ------------------------
+OBJS	:= $(addsuffix .o,$(addprefix $(BUILDDIR)/,$(SOURCES_S))) \
+		   $(addsuffix .o,$(addprefix $(BUILDDIR)/,$(SOURCES_C)))
+
+DEPS		:= $(OBJS:.o=.d)
+
+# Targets
+# -------
+
+.PHONY: all clean dump dldipatch sdimage
+
+all: $(ROM)
+
+# Combine the title strings
+ifeq ($(strip $(GAME_SUBTITLE)),)
+    GAME_FULL_TITLE := $(GAME_TITLE);$(GAME_AUTHOR)
+else
+    GAME_FULL_TITLE := $(GAME_TITLE);$(GAME_SUBTITLE);$(GAME_AUTHOR)
+endif
+
+$(ROM): $(ELF)
+	@echo "  NDSTOOL $@"
+	$(V)$(BLOCKSDS)/tools/ndstool/ndstool -c $@ \
+		-7 $(BLOCKSDS)/sys/default_arm7/arm7.elf -9 $(ELF) \
+		-b $(GAME_ICON) "$(GAME_FULL_TITLE)" \
+		$(NDSTOOL_ARGS)
+
+$(ELF): $(OBJS)
+	@echo "  LD      $@"
+	$(V)$(LD) -o $@ $(OBJS) $(LDFLAGS)
+
+$(DUMP): $(ELF)
+	@echo "  OBJDUMP   $@"
+	$(V)$(OBJDUMP) -h -C -S $< > $@
+
+dump: $(DUMP)
+
+clean:
+	@echo "  CLEAN"
+	$(V)$(RM) $(ROM) $(DUMP) build $(SDIMAGE)
+
+sdimage:
+	@echo "  MKFATIMG $(SDIMAGE) $(SDROOT)"
+	$(V)$(BLOCKSDS)/tools/mkfatimg/mkfatimg -t $(SDROOT) $(SDIMAGE)
+
+dldipatch: $(ROM)
+	@echo "  DLDIPATCH $(ROM)"
+	$(V)$(BLOCKSDS)/tools/dldipatch/dldipatch patch \
+		$(BLOCKSDS)/sys/dldi_r4/r4tf.dldi $(ROM)
+
+# Rules
+# -----
+
+$(BUILDDIR)/%.s.o : %.s
+	@echo "  AS      $<"
+	@$(MKDIR) -p $(@D)
+	$(V)$(CC) $(ASFLAGS) -MMD -MP -c -o $@ $<
+
+$(BUILDDIR)/%.c.o : %.c
+	@echo "  CC      $<"
+	@$(MKDIR) -p $(@D)
+	$(V)$(CC) $(CFLAGS) -MMD -MP -c -o $@ $<
+
+$(BUILDDIR)/%.arm.c.o : %.arm.c
+	@echo "  CC      $<"
+	@$(MKDIR) -p $(@D)
+	$(V)$(CC) $(CFLAGS) -MMD -MP -marm -mlong-calls -c -o $@ $<
+
+# Include dependency files if they exist
+# --------------------------------------
+
+-include $(DEPS)
+
diff --git a/misc/ds/icon.bmp b/misc/ds/icon.bmp
new file mode 100644
index 0000000..c5a571c
--- /dev/null
+++ b/misc/ds/icon.bmp
Binary files differdiff --git a/misc/gc/Makefile b/misc/gc/Makefile
new file mode 100644
index 0000000..70e7fe5
--- /dev/null
+++ b/misc/gc/Makefile
@@ -0,0 +1,103 @@
+#---------------------------------------------------------------------------------
+# Clear the implicit built in rules
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+.SECONDARY:
+
+ifeq ($(strip $(DEVKITPPC)),)
+$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
+endif
+
+include $(DEVKITPPC)/gamecube_rules
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# INCLUDES is a list of directories containing extra header files
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-gc
+BUILD		:=	build-gc
+SOURCES		:= src third_party/bearssl/src
+INCLUDES	:= third_party/bearssl/inc
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+
+CFLAGS		=	-g -O2 -Wall $(MACHDEP) $(INCLUDE)
+CXXFLAGS	=	$(CFLAGS)
+
+LDFLAGS	=	-g $(MACHDEP) -Wl,-Map,$(notdir $@).map
+
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS	:=	-lasnd -lbba -lfat -logc -lm
+
+#---------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#---------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#---------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+					
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+#---------------------------------------------------------------------------------
+# automatically build a list of object files for our project
+#---------------------------------------------------------------------------------
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
+
+export LD	:=	$(CC)
+
+export OFILES	:=	$(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
+
+#---------------------------------------------------------------------------------
+# build a list of include paths
+#---------------------------------------------------------------------------------
+export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
+					-I$(CURDIR)/$(BUILD) \
+					-I$(LIBOGC_INC)
+
+#---------------------------------------------------------------------------------
+# build a list of library paths
+#---------------------------------------------------------------------------------
+export LIBPATHS	:=	-L$(LIBOGC_LIB)
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+.PHONY: $(BUILD) clean
+
+#---------------------------------------------------------------------------------
+all: $(BUILD)
+	$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/gc/Makefile
+	
+$(BUILD):
+	mkdir -p $@
+
+#---------------------------------------------------------------------------------
+clean:
+	echo clean ...
+	rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
+
+#---------------------------------------------------------------------------------
+else
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+$(OUTPUT).dol: $(OUTPUT).elf
+$(OUTPUT).elf: $(OFILES)
+
+-include $(DEPSDIR)/*.d
+
+#---------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------
diff --git a/misc/linux/CCIcon_X11.h b/misc/linux/CCIcon_X11.h
new file mode 100644
index 0000000..1f49962
--- /dev/null
+++ b/misc/linux/CCIcon_X11.h
@@ -0,0 +1,120 @@
+/* Generated using misc/linux_icon_gen.cs */
+
+static const unsigned long CCIcon_Data[] = {
+64,64,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+32,32,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,
+0x00000000,0x55000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBABABA,0xFF3B3B3B,0xFF000000,0x57000000,0x00000000,
+0x00000000,0x60000000,0xFF040404,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFF030303,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFC4C4C4,0xFFD7D7D7,0xFFD6D6D6,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDADADA,0xFFD1D1D1,0xFFDDDDDD,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBEBEBE,0xFFDEDEDE,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFD0D0D0,0xFFBDBDBD,0xFFBEBEBE,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFCFCFC,0xFFE0E0E0,0xFFD5D5D5,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFD3D3D3,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFEFEFEF,0xFFDCDCDC,0xFFBEBEBE,0xFFBFBFBF,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFDFDFD,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCBCBCB,0xFFBDBDBD,0xFFC0C0C0,0xFFFBFBFB,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBFBFBF,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCACACA,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFCFCFCF,0xFFBDBDBD,0xFFCFCFCF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFF7F7F7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFCBCBCB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFEFEFEF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC0C0C0,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC0C0C0,0xFFBDBDBD,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFF1F1F1,0xFFFEFEFE,0xFFF4F4F4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF5F5F5,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF050505,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFCBCBCB,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFCACACA,0xFFBDBDBD,0xFFC2C2C2,0xFFEFEFEF,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFF040404,0x60000000,0x00000000,
+0x00000000,0x60000000,0xFF040404,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFC3C3C3,0xFFBDBDBD,0xFFD3D3D3,0xFFFAFAFA,0xFFFEFEFE,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFE9E9E9,0xFFFAFAFA,0xFFFEFEFE,0xFFF2F2F2,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF030303,0x60000000,0x00000000,
+0x00000000,0x55000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBFBFBF,0xFFBDBDBD,0xFFC0C0C0,0xFFC6C6C6,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFCFCFCF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC4C4C4,0xFFBDBDBD,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0x57000000,0x00000000,
+0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFECECEC,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFE5E5E5,0xFFC1C1C1,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFF7F7F7,0xFFD8D8D8,0xFFC4C4C4,0xFFC3C3C3,0xFFE4E4E4,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFCECECE,0xFFC2C2C2,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF8A8A8A,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB6B6B6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF8A8A8A,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3C000000,0xBC000000,0xFF000000,0xFF383838,0xFFB7B7B7,0xFFFEFEFE,0xFFBDBDBD,0xFF8B8B8B,0xFF2C2C2C,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xFF000000,0xFF383838,0xFF2C2C2C,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3D000000,0xBC000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+16,16,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFC5C5C5,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC5C5C5,0xFF2F2F2F,0xFF2F2F2F,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC5C5C5,0xFF2F2F2F,0x7F4E4E4E,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFE4E4E4,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFFDFDFD,0xFFD6D6D6,0xFFCACACA,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFE4E4E4,0xFFBDBDBD,0xFFF6F6F6,0xFFFCFCFC,0xFFC4C4C4,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFEDEDED,0xFFBDBDBD,0xFFCFCFCF,0xFFC5C5C5,0xFFE4E4E4,0xFFFEFEFE,0xFFC2C2C2,0xFFC0C0C0,0xFFF6F6F6,0xFFDADADA,0xFFC8C8C8,0xFFBDBDBD,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFE4E4E4,0xFFC2C2C2,0xFFFDFDFD,0xFFF8F8F8,0xFFE7E7E7,0xFFFEFEFE,0xFFBDBDBD,0xFFDBDBDB,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFE9E9E9,0xFFC5C5C5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFEEEEEE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFF7F7F7,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFF7F7F7,0xFFD7D7D7,0xFFBDBDBD,0xFFCDCDCD,0xFFC1C1C1,0xFF2F2F2F,0x00000000,
+0x00000000,0xFF2F2F2F,0xFFFEFEFE,0xFFD4D4D4,0xFFD6D6D6,0xFFFDFDFD,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFF3F3F3,0xFFEFEFEF,0xFFD8D8D8,0xFFF7F7F7,0xFFC6C6C6,0xFF2F2F2F,0x00000000,
+0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFFE8E8E8,0xFFCACACA,0xFFC0C0C0,0xFFDADADA,0xFFFEFEFE,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFF7F7F7,0xFFC1C1C1,0xFF2F2F2F,0x7F4E4E4E,0x00000000,
+0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFD4D4D4,0xFFE9E9E9,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFB7B7B7,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0xFFC5C5C5,0xFFB0B0B0,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x7F4E4E4E,0xFF2F2F2F,0xFF2F2F2F,0x7F4E4E4E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+};
+static const int CCIcon_Size = sizeof(CCIcon_Data) / sizeof(unsigned long);
diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.desktop b/misc/linux/flatpak/net.classicube.flatpak.client.desktop
new file mode 100644
index 0000000..11f416d
--- /dev/null
+++ b/misc/linux/flatpak/net.classicube.flatpak.client.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=ClassiCube
+Exec=ClassiCubeLauncher
+Comment=Sandbox building-block game
+Type=Application
+Icon=net.classicube.flatpak.client
+Categories=Game;ActionGame;
+Terminal=false
+MimeType=x-scheme-handler/mc;
+StartupWMClass=net.classicube.flatpak.client
\ No newline at end of file
diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml b/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml
new file mode 100644
index 0000000..7810cb3
--- /dev/null
+++ b/misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml
@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='utf-8'?>
+<component type="desktop-application">
+  <id>net.classicube.flatpak.client</id>
+  <name>ClassiCube</name>
+  <summary>Sandbox building-block game</summary>
+  <developer id="net.classicube">
+    <name>The ClassiCube Project</name>
+  </developer>
+  <metadata_license>CC0-1.0</metadata_license>
+  <project_license>BSD-3-Clause</project_license>
+  <description>
+    <p>ClassiCube brings you back to the days of 2009 where one block game ruled them all, it includes such features as:</p>
+    <ul>
+      <li>Loads of blocks and items to choose from</li>
+      <li>Chatting with other players</li>
+      <li>An extremely simple network protocol to tinker with</li>
+      <li>Hundreds of creative and inventive worlds to explore online</li>
+      <li>A growing community</li>
+      <li>Hundreds of hours of entertainment</li>
+    </ul>
+  </description>
+  <screenshots>
+    <screenshot type="default">
+      <caption>Classic mode features faithful classic gameplay</caption>
+      <image type="source">https://github.com/ClassiCube/ClassiCube/assets/6509348/eedee53f-f53e-456f-b51c-92c62079eee0</image>
+    </screenshot>
+    <screenshot>
+      <caption>Enhanced mode allows hacks like flying and noclipping, it also allows servers to provide many custom features</caption>
+      <image type="source">https://github.com/ClassiCube/ClassiCube/assets/6509348/b2fe0e2b-5d76-41ab-909f-048d0ad15f37</image>
+    </screenshot>
+  </screenshots>
+  <releases>
+    <release version="1.3.6" date="2023-08-28" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.6</url>
+    </release>
+    <release version="1.3.5" date="2023-01-06" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.5</url>
+    </release>
+    <release version="1.3.4" date="2022-11-01" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.4</url>
+    </release>
+    <release version="1.3.3" date="2022-10-08" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.3</url>
+    </release>
+    <release version="1.3.2" date="2022-05-26" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.2</url>
+    </release>
+    <release version="1.3.1" date="2022-01-11" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.1</url>
+    </release>
+    <release version="1.3.0" date="2022-01-04" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.3.0</url>
+    </release>
+    <release version="1.2.9" date="2021-10-18" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.9</url>
+    </release>
+    <release version="1.2.8" date="2021-09-18" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.8</url>
+    </release>
+    <release version="1.2.7" date="2021-07-22" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.7</url>
+    </release>
+    <release version="1.2.6" date="2021-07-02" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.6</url>
+    </release>
+    <release version="1.2.5" date="2021-04-02" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.5</url>
+    </release>
+    <release version="1.2.4" date="2021-01-23" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.4</url>
+    </release>
+    <release version="1.2.3" date="2020-12-12" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.3</url>
+    </release>
+    <release version="1.2.2" date="2020-12-11" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.2</url>
+    </release>
+    <release version="1.2.1" date="2020-11-28" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.1</url>
+    </release>
+    <release version="1.2.0" date="2020-10-01" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.2.0</url>
+    </release>
+    <release version="1.1.9" date="2020-08-16" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.9</url>
+    </release>
+    <release version="1.1.8" date="2020-08-05" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.8</url>
+    </release>
+    <release version="1.1.7" date="2020-06-13" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.7</url>
+    </release>
+    <release version="1.1.6" date="2020-05-07" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.6</url>
+    </release>
+    <release version="1.1.5" date="2020-05-01" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.5</url>
+    </release>
+    <release version="1.1.4" date="2020-04-21" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.4</url>
+    </release>
+    <release version="1.1.3" date="2020-03-08" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.3</url>
+    </release>
+    <release version="1.1.2" date="2020-01-26" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.2</url>
+    </release>
+    <release version="1.1.1" date="2019-12-16" type="stable">
+      <url>https://github.com/ClassiCube/ClassiCube/releases/tag/1.1.1</url>
+    </release>
+  </releases>
+  <url type="homepage">https://www.classicube.net/</url>
+  <url type="bugtracker">https://github.com/ClassiCube/ClassiCube/issues</url>
+  <url type="donation">https://www.patreon.com/ClassiCube</url>
+  <url type="vcs-browser">https://github.com/ClassiCube/ClassiCube</url>
+  <categories>
+    <category>Game</category>
+    <category>AdventureGame</category>
+    <category>ActionGame</category>
+  </categories>
+  <recommends>
+    <control>pointing</control>
+    <control>keyboard</control>
+  </recommends>
+  <content_rating type="oars-1.1">
+    <content_attribute id="violence-cartoon">moderate</content_attribute>
+    <content_attribute id="social-chat">intense</content_attribute>
+  </content_rating>
+  <launchable type="desktop-id">net.classicube.flatpak.client.desktop</launchable>
+  <provides>
+    <binary>ClassiCube</binary>
+  </provides>
+</component>
diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.svg b/misc/linux/flatpak/net.classicube.flatpak.client.svg
new file mode 100644
index 0000000..4432415
--- /dev/null
+++ b/misc/linux/flatpak/net.classicube.flatpak.client.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="128"
+   height="127.99999"
+   viewBox="0 0 33.866667 33.866664"
+   version="1.1"
+   id="svg8"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs2" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     transform="translate(5.8338447,-13.20144)">
+    <g
+       id="g4741"
+       transform="matrix(0.12177585,0,0,0.12056875,-1.6325083,12.971524)">
+      <path
+         id="path4737"
+         d="M -5.8338447,207.40561 V 78.28894 L 106.61407,13.20144 218.79741,78.28894 V 207.40561 L 106.61407,272.4931 Z"
+         style="fill:#f6f6f6;stroke:#000000;stroke-width:8.0626;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         id="path179"
+         d="m 104.07502,141.52929 110.68965,-60.9215 1.62598,125.47985 -109.78346,61.73499 z m 20.61272,94.64566 c 8.561,-1.36503 22.58979,-6.90566 34.77207,-13.73314 8.44846,-4.73489 17.45957,-10.82064 25.81752,-17.43613 8.72093,-6.90281 17.22731,-15.21726 18.55921,-18.14047 0.26981,-0.59217 0.24879,-0.77358 -0.13391,-1.15568 -0.36305,-0.36248 -0.91552,-0.44887 -2.7589,-0.43139 -3.71393,0.0352 -9.27509,1.35366 -16.28846,3.86168 -2.01562,0.7208 -3.69686,1.27297 -3.73608,1.22704 -0.16881,-0.19764 3.44601,-29.37179 6.84564,-55.24912 1.21398,-9.24057 2.15592,-16.89033 2.09321,-16.99948 -0.19747,-0.34365 -6.05941,-0.21541 -8.74964,0.19141 -11.67357,1.7653 -26.1385,9.31897 -38.83406,20.27938 -3.00232,2.59198 -8.66363,8.37481 -10.38554,10.60847 l -1.13332,1.47013 1.06078,5.78494 c 1.66864,9.09991 3.21014,18.62874 5.55847,34.35994 1.6265,10.89577 2.70193,17.7159 2.81167,17.83099 0.23021,0.24143 9.15704,-3.22834 13.96159,-5.42672 4.01374,-1.83655 7.38001,-3.77497 13.6069,-7.83534 5.39432,-3.51748 6.57616,-4.09382 7.18285,-3.50281 1.32604,1.29178 -3.92898,6.46583 -11.75312,11.57204 -5.59387,3.65069 -11.90727,6.67998 -18.54423,8.8979 -3.61228,1.20714 -3.99351,1.40207 -6.48521,3.316 -7.13359,5.47947 -15.77323,13.5129 -18.33378,17.04736 -1.39429,1.92461 -1.60126,3.07547 -0.62376,3.46838 0.81553,0.3278 3.41645,0.32525 5.4901,-0.005 z"
+         style="fill:#cbcbcb;fill-opacity:1;stroke-width:0.264583" />
+    </g>
+  </g>
+</svg>
diff --git a/misc/linux/flatpak/net.classicube.flatpak.client.yml b/misc/linux/flatpak/net.classicube.flatpak.client.yml
new file mode 100644
index 0000000..760e8b9
--- /dev/null
+++ b/misc/linux/flatpak/net.classicube.flatpak.client.yml
@@ -0,0 +1,29 @@
+id: net.classicube.flatpak.client
+runtime: org.freedesktop.Platform
+runtime-version: '23.08'
+sdk: org.freedesktop.Sdk
+command: ClassiCubeLauncher
+finish-args:
+  - --socket=x11
+  - --device=dri
+  - --share=network
+  - --share=ipc
+  - --socket=pulseaudio
+modules:
+  - name: ClassiCube
+    buildsystem: simple
+    build-commands:
+      - gcc -fno-math-errno src/*.c -o src/ClassiCube -O1 -DCC_BUILD_FLATPAK -DCC_BUILD_GLMODERN -rdynamic -lm -lpthread -lX11 -lXi -lGL -ldl
+      - install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin
+      - install -Dm755 ClassiCubeLauncher -t ${FLATPAK_DEST}/bin
+      - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg
+      - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop
+      - install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml
+    sources:
+      - type: dir
+        path: ../../../
+      - type: script
+        dest-filename: ClassiCubeLauncher
+        commands:
+         - mkdir -p ${XDG_DATA_HOME}/ClassiCube
+         - cd ${XDG_DATA_HOME}/ClassiCube && exec /app/bin/ClassiCube "$@"
diff --git a/misc/linux/install-desktop-entry.sh b/misc/linux/install-desktop-entry.sh
new file mode 100644
index 0000000..a3c3ab7
--- /dev/null
+++ b/misc/linux/install-desktop-entry.sh
@@ -0,0 +1,34 @@
+DESKTOP_FILE=ClassiCube.desktop
+GAME_DIR=`pwd`
+
+# remove existing ClassiCube desktop entry file
+rm $DESKTOP_FILE
+
+# download ClassiCube icon from github if necessary
+if [ -f "CCicon.png" ]
+then
+  echo "CCicon.png exists already. Skipping download."
+else
+  echo "CCicon.png doesn't exist. Attempting to download it.."
+  wget "https://raw.githubusercontent.com/ClassiCube/classicube/master/misc/CCicon.png"
+fi
+
+# create ClassiCube desktop entry
+echo 'Creating ClassiCube.desktop..'
+cat >> $DESKTOP_FILE << EOF
+[Desktop Entry]
+Type=Application
+Comment=Minecraft Classic inspired sandbox game
+Name=ClassiCube
+Exec=$GAME_DIR/ClassiCube
+Icon=$GAME_DIR/CCicon.png
+Path=$GAME_DIR
+Terminal=false
+Categories=Game
+EOF
+chmod +x $DESKTOP_FILE
+
+echo 'Installing ClassiCube.desktop..'
+# install ClassiCube desktop entry into the system
+sudo desktop-file-install --dir=/usr/share/applications ClassiCube.desktop
+sudo update-desktop-database /usr/share/applications
diff --git a/misc/linux/linux_icon_gen.cs b/misc/linux/linux_icon_gen.cs
new file mode 100644
index 0000000..a48344d
--- /dev/null
+++ b/misc/linux/linux_icon_gen.cs
@@ -0,0 +1,42 @@
+using System.Drawing.Imaging;
+using System.Drawing;
+using System.IO;
+
+namespace test 
+{
+	public static class Program 
+	{
+		const string src = "CCicon.ico";
+		const string dst = "_CCIcon_X11.h";
+		
+		static void DumpIcon(StreamWriter sw, int width, int height) {
+			sw.WriteLine(width + "," + height + ",");
+			
+			using (Icon icon = new Icon(src, width, height)) {
+				using (Bitmap bmp = icon.ToBitmap()) {
+					for (int y = 0; y < bmp.Height; y++) {
+						for (int x = 0; x < bmp.Width; x++) {
+							Color c = bmp.GetPixel(x, y);
+							int p = (c.A << 24) | (c.R << 16) | (c.G << 8) | c.B;
+							sw.Write("0x" + ((uint)p).ToString("X8") + ",");
+						}
+						sw.WriteLine();
+					}
+				}
+			}
+		}
+		
+		public static void Main(string[] args) {
+			using (StreamWriter sw = new StreamWriter(dst)) {
+				sw.WriteLine("/* Generated using misc/linux_icon_gen.cs */");
+				sw.WriteLine("");
+				sw.WriteLine("static const unsigned long CCIcon_Data[] = {");
+				DumpIcon(sw, 64, 64);
+				DumpIcon(sw, 32, 32);
+				DumpIcon(sw, 16, 16);
+				sw.WriteLine("};");
+				sw.WriteLine("static const int CCIcon_Size = sizeof(CCIcon_Data) / sizeof(unsigned long);");
+			}
+		}
+	}
+}
diff --git a/misc/macOS/CCIcon.icns b/misc/macOS/CCIcon.icns
new file mode 100644
index 0000000..d52d05f
--- /dev/null
+++ b/misc/macOS/CCIcon.icns
Binary files differdiff --git a/misc/macOS/CCIcon_mac.h b/misc/macOS/CCIcon_mac.h
new file mode 100644
index 0000000..73b354b
--- /dev/null
+++ b/misc/macOS/CCIcon_mac.h
@@ -0,0 +1,70 @@
+/* Generated using misc/macOS/mac_icon_gen.cs */
+
+static const unsigned int CCIcon_Data[] = {
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+};
+static const int CCIcon_Width  = 64;
+static const int CCIcon_Height = 64;
diff --git a/misc/macOS/CCMAC.xcodeproj/project.pbxproj b/misc/macOS/CCMAC.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..ba25f32
--- /dev/null
+++ b/misc/macOS/CCMAC.xcodeproj/project.pbxproj
@@ -0,0 +1,785 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 50;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		9A6C7C8D2C073E0C00676D27 /* Vectors.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BE92C073DEC00676D27 /* Vectors.c */; };
+		9A6C7C8E2C073E0C00676D27 /* _ftglyph.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */; };
+		9A6C7C8F2C073E0C00676D27 /* Input.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF02C073DED00676D27 /* Input.c */; };
+		9A6C7C902C073E0C00676D27 /* Options.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF12C073DED00676D27 /* Options.c */; };
+		9A6C7C912C073E0C00676D27 /* _ftbitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF22C073DED00676D27 /* _ftbitmap.c */; };
+		9A6C7C922C073E0C00676D27 /* _autofit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF52C073DED00676D27 /* _autofit.c */; };
+		9A6C7C932C073E0C00676D27 /* Menus.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BF82C073DED00676D27 /* Menus.c */; };
+		9A6C7C942C073E0C00676D27 /* LWeb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFA2C073DEE00676D27 /* LWeb.c */; };
+		9A6C7C952C073E0C00676D27 /* Generator.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFB2C073DEE00676D27 /* Generator.c */; };
+		9A6C7C962C073E0C00676D27 /* Screens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFD2C073DEE00676D27 /* Screens.c */; };
+		9A6C7C972C073E0C00676D27 /* SSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFE2C073DEE00676D27 /* SSL.c */; };
+		9A6C7C982C073E0C00676D27 /* LBackend_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */; };
+		9A6C7C992C073E0C00676D27 /* Window_SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C002C073DEE00676D27 /* Window_SDL.c */; };
+		9A6C7C9A2C073E0C00676D27 /* Graphics_GL2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */; };
+		9A6C7C9B2C073E0C00676D27 /* Lighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C022C073DEE00676D27 /* Lighting.c */; };
+		9A6C7C9C2C073E0C00676D27 /* EntityComponents.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C042C073DEF00676D27 /* EntityComponents.c */; };
+		9A6C7C9D2C073E0C00676D27 /* Game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C052C073DEF00676D27 /* Game.c */; };
+		9A6C7C9E2C073E0C00676D27 /* Platform_Posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C072C073DEF00676D27 /* Platform_Posix.c */; };
+		9A6C7C9F2C073E0C00676D27 /* Utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C082C073DEF00676D27 /* Utils.c */; };
+		9A6C7CA02C073E0C00676D27 /* Resources.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C092C073DEF00676D27 /* Resources.c */; };
+		9A6C7CA12C073E0C00676D27 /* AudioBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0A2C073DF000676D27 /* AudioBackend.c */; };
+		9A6C7CA22C073E0C00676D27 /* Queue.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0B2C073DF000676D27 /* Queue.c */; };
+		9A6C7CA32C073E0C00676D27 /* _smooth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C0E2C073DF100676D27 /* _smooth.c */; };
+		9A6C7CA42C073E0C00676D27 /* _pshinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C102C073DF100676D27 /* _pshinter.c */; };
+		9A6C7CA52C073E0C00676D27 /* Drawer2D.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C112C073DF100676D27 /* Drawer2D.c */; };
+		9A6C7CA62C073E0C00676D27 /* World.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C132C073DF200676D27 /* World.c */; };
+		9A6C7CA72C073E0C00676D27 /* _psaux.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C152C073DF200676D27 /* _psaux.c */; };
+		9A6C7CA82C073E0C00676D27 /* Window_SDL3.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C162C073DF200676D27 /* Window_SDL3.c */; };
+		9A6C7CA92C073E0C00676D27 /* TexturePack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1A2C073DF300676D27 /* TexturePack.c */; };
+		9A6C7CAA2C073E0C00676D27 /* Block.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1C2C073DF300676D27 /* Block.c */; };
+		9A6C7CAB2C073E0C00676D27 /* _ftbase.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1E2C073DF300676D27 /* _ftbase.c */; };
+		9A6C7CAC2C073E0C00676D27 /* LWidgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C1F2C073DF400676D27 /* LWidgets.c */; };
+		9A6C7CAD2C073E0C00676D27 /* PackedCol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C202C073DF400676D27 /* PackedCol.c */; };
+		9A6C7CAE2C073E0C00676D27 /* Physics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C212C073DF400676D27 /* Physics.c */; };
+		9A6C7CAF2C073E0C00676D27 /* GameVersion.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C242C073DF500676D27 /* GameVersion.c */; };
+		9A6C7CB02C073E0C00676D27 /* Particle.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C252C073DF500676D27 /* Particle.c */; };
+		9A6C7CB12C073E0C00676D27 /* Graphics_SoftGPU.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */; };
+		9A6C7CB22C073E0C00676D27 /* MapRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C292C073DF500676D27 /* MapRenderer.c */; };
+		9A6C7CB32C073E0C00676D27 /* SelectionBox.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2A2C073DF500676D27 /* SelectionBox.c */; };
+		9A6C7CB42C073E0C00676D27 /* Stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2C2C073DF600676D27 /* Stream.c */; };
+		9A6C7CB52C073E0C00676D27 /* Formats.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2D2C073DF600676D27 /* Formats.c */; };
+		9A6C7CB62C073E0C00676D27 /* Chat.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2E2C073DF600676D27 /* Chat.c */; };
+		9A6C7CB72C073E0C00676D27 /* Graphics_GL1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */; };
+		9A6C7CB82C073E0C00676D27 /* Window_Terminal.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C302C073DF600676D27 /* Window_Terminal.c */; };
+		9A6C7CB92C073E0C00676D27 /* AxisLinesRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */; };
+		9A6C7CBA2C073E0C00676D27 /* EnvRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C352C073DF700676D27 /* EnvRenderer.c */; };
+		9A6C7CBB2C073E0C00676D27 /* _ftsynth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C382C073DF800676D27 /* _ftsynth.c */; };
+		9A6C7CBC2C073E0C00676D27 /* Logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3C2C073DF800676D27 /* Logger.c */; };
+		9A6C7CBD2C073E0C00676D27 /* String.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3E2C073DF900676D27 /* String.c */; };
+		9A6C7CBE2C073E0C00676D27 /* Protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C3F2C073DF900676D27 /* Protocol.c */; };
+		9A6C7CBF2C073E0C00676D27 /* TouchUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C402C073DF900676D27 /* TouchUI.c */; };
+		9A6C7CC02C073E0C00676D27 /* _type1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C412C073DF900676D27 /* _type1.c */; };
+		9A6C7CC12C073E0C00676D27 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C452C073DFB00676D27 /* Event.c */; };
+		9A6C7CC22C073E0C00676D27 /* Launcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C462C073DFC00676D27 /* Launcher.c */; };
+		9A6C7CC32C073E0C00676D27 /* _sfnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C4A2C073DFD00676D27 /* _sfnt.c */; };
+		9A6C7CC42C073E0C00676D27 /* LScreens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C4F2C073DFE00676D27 /* LScreens.c */; };
+		9A6C7CC52C073E0C00676D27 /* Commands.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C522C073DFF00676D27 /* Commands.c */; };
+		9A6C7CC62C073E0C00676D27 /* IsometricDrawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C552C073E0000676D27 /* IsometricDrawer.c */; };
+		9A6C7CC72C073E0C00676D27 /* HeldBlockRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */; };
+		9A6C7CC82C073E0C00676D27 /* _psmodule.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C582C073E0100676D27 /* _psmodule.c */; };
+		9A6C7CC92C073E0C00676D27 /* Gui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5A2C073E0100676D27 /* Gui.c */; };
+		9A6C7CCA2C073E0C00676D27 /* _truetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5B2C073E0200676D27 /* _truetype.c */; };
+		9A6C7CCB2C073E0C00676D27 /* Window_cocoa.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */; };
+		9A6C7CCC2C073E0C00676D27 /* Vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C5F2C073E0200676D27 /* Vorbis.c */; };
+		9A6C7CCD2C073E0C00676D27 /* Inventory.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C602C073E0300676D27 /* Inventory.c */; };
+		9A6C7CCE2C073E0C00676D27 /* Animations.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C622C073E0300676D27 /* Animations.c */; };
+		9A6C7CCF2C073E0C00676D27 /* FancyLighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C632C073E0300676D27 /* FancyLighting.c */; };
+		9A6C7CD02C073E0C00676D27 /* Widgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C662C073E0400676D27 /* Widgets.c */; };
+		9A6C7CD12C073E0C00676D27 /* Picking.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C672C073E0400676D27 /* Picking.c */; };
+		9A6C7CD22C073E0C00676D27 /* _ftinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C682C073E0400676D27 /* _ftinit.c */; };
+		9A6C7CD32C073E0C00676D27 /* Http_Worker.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6B2C073E0500676D27 /* Http_Worker.c */; };
+		9A6C7CD42C073E0C00676D27 /* ExtMath.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6D2C073E0500676D27 /* ExtMath.c */; };
+		9A6C7CD52C073E0C00676D27 /* _cff.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C6F2C073E0600676D27 /* _cff.c */; };
+		9A6C7CD62C073E0C00676D27 /* Camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C702C073E0600676D27 /* Camera.c */; };
+		9A6C7CD72C073E0C00676D27 /* Drawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C712C073E0600676D27 /* Drawer.c */; };
+		9A6C7CD82C073E0C00676D27 /* Entity.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C722C073E0600676D27 /* Entity.c */; };
+		9A6C7CD92C073E0C00676D27 /* SystemFonts.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C742C073E0700676D27 /* SystemFonts.c */; };
+		9A6C7CDA2C073E0C00676D27 /* BlockPhysics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C762C073E0700676D27 /* BlockPhysics.c */; };
+		9A6C7CDB2C073E0C00676D27 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C772C073E0700676D27 /* main.c */; };
+		9A6C7CDC2C073E0C00676D27 /* Model.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C792C073E0800676D27 /* Model.c */; };
+		9A6C7CDD2C073E0C00676D27 /* Graphics_Metal.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */; };
+		9A6C7CDE2C073E0C00676D27 /* SelOutlineRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */; };
+		9A6C7CDF2C073E0C00676D27 /* EntityRenderers.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */; };
+		9A6C7CE02C073E0C00676D27 /* LBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C802C073E0900676D27 /* LBackend.c */; };
+		9A6C7CE12C073E0C00676D27 /* Builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C812C073E0900676D27 /* Builder.c */; };
+		9A6C7CE22C073E0C00676D27 /* Server.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C832C073E0A00676D27 /* Server.c */; };
+		9A6C7CE32C073E0C00676D27 /* Audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C842C073E0A00676D27 /* Audio.c */; };
+		9A6C7CE42C073E0C00676D27 /* Deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C852C073E0A00676D27 /* Deflate.c */; };
+		9A6C7CE52C073E0C00676D27 /* Bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7C892C073E0B00676D27 /* Bitmap.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		9A6C796F2C073BFF00676D27 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		9A6C79712C073BFF00676D27 /* ClassiCube */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ClassiCube; sourceTree = BUILT_PRODUCTS_DIR; };
+		9A6C7BE92C073DEC00676D27 /* Vectors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Vectors.c; path = "../../../../../../ClassiCube-master/src/Vectors.c"; sourceTree = "<group>"; };
+		9A6C7BEA2C073DEC00676D27 /* TexturePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TexturePack.h; path = "../../../../../../ClassiCube-master/src/TexturePack.h"; sourceTree = "<group>"; };
+		9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftglyph.c; path = "../../../../../../ClassiCube-master/src/_ftglyph.c"; sourceTree = "<group>"; };
+		9A6C7BEC2C073DED00676D27 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Constants.h; path = "../../../../../../ClassiCube-master/src/Constants.h"; sourceTree = "<group>"; };
+		9A6C7BED2C073DED00676D27 /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Stream.h; path = "../../../../../../ClassiCube-master/src/Stream.h"; sourceTree = "<group>"; };
+		9A6C7BEE2C073DED00676D27 /* VirtualKeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VirtualKeyboard.h; path = "../../../../../../ClassiCube-master/src/VirtualKeyboard.h"; sourceTree = "<group>"; };
+		9A6C7BEF2C073DED00676D27 /* Commands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Commands.h; path = "../../../../../../ClassiCube-master/src/Commands.h"; sourceTree = "<group>"; };
+		9A6C7BF02C073DED00676D27 /* Input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Input.c; path = "../../../../../../ClassiCube-master/src/Input.c"; sourceTree = "<group>"; };
+		9A6C7BF12C073DED00676D27 /* Options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Options.c; path = "../../../../../../ClassiCube-master/src/Options.c"; sourceTree = "<group>"; };
+		9A6C7BF22C073DED00676D27 /* _ftbitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftbitmap.c; path = "../../../../../../ClassiCube-master/src/_ftbitmap.c"; sourceTree = "<group>"; };
+		9A6C7BF32C073DED00676D27 /* EntityComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityComponents.h; path = "../../../../../../ClassiCube-master/src/EntityComponents.h"; sourceTree = "<group>"; };
+		9A6C7BF42C073DED00676D27 /* LWeb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWeb.h; path = "../../../../../../ClassiCube-master/src/LWeb.h"; sourceTree = "<group>"; };
+		9A6C7BF52C073DED00676D27 /* _autofit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _autofit.c; path = "../../../../../../ClassiCube-master/src/_autofit.c"; sourceTree = "<group>"; };
+		9A6C7BF62C073DED00676D27 /* _PlatformConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _PlatformConsole.h; path = "../../../../../../ClassiCube-master/src/_PlatformConsole.h"; sourceTree = "<group>"; };
+		9A6C7BF72C073DED00676D27 /* Physics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Physics.h; path = "../../../../../../ClassiCube-master/src/Physics.h"; sourceTree = "<group>"; };
+		9A6C7BF82C073DED00676D27 /* Menus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Menus.c; path = "../../../../../../ClassiCube-master/src/Menus.c"; sourceTree = "<group>"; };
+		9A6C7BF92C073DED00676D27 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = "../../../../../../ClassiCube-master/src/Platform.h"; sourceTree = "<group>"; };
+		9A6C7BFA2C073DEE00676D27 /* LWeb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LWeb.c; path = "../../../../../../ClassiCube-master/src/LWeb.c"; sourceTree = "<group>"; };
+		9A6C7BFB2C073DEE00676D27 /* Generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Generator.c; path = "../../../../../../ClassiCube-master/src/Generator.c"; sourceTree = "<group>"; };
+		9A6C7BFC2C073DEE00676D27 /* Particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Particle.h; path = "../../../../../../ClassiCube-master/src/Particle.h"; sourceTree = "<group>"; };
+		9A6C7BFD2C073DEE00676D27 /* Screens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Screens.c; path = "../../../../../../ClassiCube-master/src/Screens.c"; sourceTree = "<group>"; };
+		9A6C7BFE2C073DEE00676D27 /* SSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SSL.c; path = "../../../../../../ClassiCube-master/src/SSL.c"; sourceTree = "<group>"; };
+		9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LBackend_Android.c; path = "../../../../../../ClassiCube-master/src/LBackend_Android.c"; sourceTree = "<group>"; };
+		9A6C7C002C073DEE00676D27 /* Window_SDL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_SDL.c; path = "../../../../../../ClassiCube-master/src/Window_SDL.c"; sourceTree = "<group>"; };
+		9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_GL2.c; path = "../../../../../../ClassiCube-master/src/Graphics_GL2.c"; sourceTree = "<group>"; };
+		9A6C7C022C073DEE00676D27 /* Lighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Lighting.c; path = "../../../../../../ClassiCube-master/src/Lighting.c"; sourceTree = "<group>"; };
+		9A6C7C032C073DEF00676D27 /* Http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Http.h; path = "../../../../../../ClassiCube-master/src/Http.h"; sourceTree = "<group>"; };
+		9A6C7C042C073DEF00676D27 /* EntityComponents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EntityComponents.c; path = "../../../../../../ClassiCube-master/src/EntityComponents.c"; sourceTree = "<group>"; };
+		9A6C7C052C073DEF00676D27 /* Game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Game.c; path = "../../../../../../ClassiCube-master/src/Game.c"; sourceTree = "<group>"; };
+		9A6C7C062C073DEF00676D27 /* Funcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Funcs.h; path = "../../../../../../ClassiCube-master/src/Funcs.h"; sourceTree = "<group>"; };
+		9A6C7C072C073DEF00676D27 /* Platform_Posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Platform_Posix.c; path = "../../../../../../ClassiCube-master/src/Platform_Posix.c"; sourceTree = "<group>"; };
+		9A6C7C082C073DEF00676D27 /* Utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Utils.c; path = "../../../../../../ClassiCube-master/src/Utils.c"; sourceTree = "<group>"; };
+		9A6C7C092C073DEF00676D27 /* Resources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Resources.c; path = "../../../../../../ClassiCube-master/src/Resources.c"; sourceTree = "<group>"; };
+		9A6C7C0A2C073DF000676D27 /* AudioBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AudioBackend.c; path = "../../../../../../ClassiCube-master/src/AudioBackend.c"; sourceTree = "<group>"; };
+		9A6C7C0B2C073DF000676D27 /* Queue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Queue.c; path = "../../../../../../ClassiCube-master/src/Queue.c"; sourceTree = "<group>"; };
+		9A6C7C0C2C073DF000676D27 /* PackedCol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PackedCol.h; path = "../../../../../../ClassiCube-master/src/PackedCol.h"; sourceTree = "<group>"; };
+		9A6C7C0D2C073DF000676D27 /* Vectors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vectors.h; path = "../../../../../../ClassiCube-master/src/Vectors.h"; sourceTree = "<group>"; };
+		9A6C7C0E2C073DF100676D27 /* _smooth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _smooth.c; path = "../../../../../../ClassiCube-master/src/_smooth.c"; sourceTree = "<group>"; };
+		9A6C7C0F2C073DF100676D27 /* Vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vorbis.h; path = "../../../../../../ClassiCube-master/src/Vorbis.h"; sourceTree = "<group>"; };
+		9A6C7C102C073DF100676D27 /* _pshinter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _pshinter.c; path = "../../../../../../ClassiCube-master/src/_pshinter.c"; sourceTree = "<group>"; };
+		9A6C7C112C073DF100676D27 /* Drawer2D.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Drawer2D.c; path = "../../../../../../ClassiCube-master/src/Drawer2D.c"; sourceTree = "<group>"; };
+		9A6C7C122C073DF100676D27 /* Widgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Widgets.h; path = "../../../../../../ClassiCube-master/src/Widgets.h"; sourceTree = "<group>"; };
+		9A6C7C132C073DF200676D27 /* World.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = World.c; path = "../../../../../../ClassiCube-master/src/World.c"; sourceTree = "<group>"; };
+		9A6C7C142C073DF200676D27 /* Menus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Menus.h; path = "../../../../../../ClassiCube-master/src/Menus.h"; sourceTree = "<group>"; };
+		9A6C7C152C073DF200676D27 /* _psaux.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _psaux.c; path = "../../../../../../ClassiCube-master/src/_psaux.c"; sourceTree = "<group>"; };
+		9A6C7C162C073DF200676D27 /* Window_SDL3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_SDL3.c; path = "../../../../../../ClassiCube-master/src/Window_SDL3.c"; sourceTree = "<group>"; };
+		9A6C7C172C073DF200676D27 /* Lighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lighting.h; path = "../../../../../../ClassiCube-master/src/Lighting.h"; sourceTree = "<group>"; };
+		9A6C7C182C073DF300676D27 /* Errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Errors.h; path = "../../../../../../ClassiCube-master/src/Errors.h"; sourceTree = "<group>"; };
+		9A6C7C192C073DF300676D27 /* SystemFonts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SystemFonts.h; path = "../../../../../../ClassiCube-master/src/SystemFonts.h"; sourceTree = "<group>"; };
+		9A6C7C1A2C073DF300676D27 /* TexturePack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TexturePack.c; path = "../../../../../../ClassiCube-master/src/TexturePack.c"; sourceTree = "<group>"; };
+		9A6C7C1B2C073DF300676D27 /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Model.h; path = "../../../../../../ClassiCube-master/src/Model.h"; sourceTree = "<group>"; };
+		9A6C7C1C2C073DF300676D27 /* Block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Block.c; path = "../../../../../../ClassiCube-master/src/Block.c"; sourceTree = "<group>"; };
+		9A6C7C1D2C073DF300676D27 /* Bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bitmap.h; path = "../../../../../../ClassiCube-master/src/Bitmap.h"; sourceTree = "<group>"; };
+		9A6C7C1E2C073DF300676D27 /* _ftbase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftbase.c; path = "../../../../../../ClassiCube-master/src/_ftbase.c"; sourceTree = "<group>"; };
+		9A6C7C1F2C073DF400676D27 /* LWidgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LWidgets.c; path = "../../../../../../ClassiCube-master/src/LWidgets.c"; sourceTree = "<group>"; };
+		9A6C7C202C073DF400676D27 /* PackedCol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PackedCol.c; path = "../../../../../../ClassiCube-master/src/PackedCol.c"; sourceTree = "<group>"; };
+		9A6C7C212C073DF400676D27 /* Physics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Physics.c; path = "../../../../../../ClassiCube-master/src/Physics.c"; sourceTree = "<group>"; };
+		9A6C7C222C073DF400676D27 /* Animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animations.h; path = "../../../../../../ClassiCube-master/src/Animations.h"; sourceTree = "<group>"; };
+		9A6C7C232C073DF400676D27 /* Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Protocol.h; path = "../../../../../../ClassiCube-master/src/Protocol.h"; sourceTree = "<group>"; };
+		9A6C7C242C073DF500676D27 /* GameVersion.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = GameVersion.c; path = "../../../../../../ClassiCube-master/src/GameVersion.c"; sourceTree = "<group>"; };
+		9A6C7C252C073DF500676D27 /* Particle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Particle.c; path = "../../../../../../ClassiCube-master/src/Particle.c"; sourceTree = "<group>"; };
+		9A6C7C262C073DF500676D27 /* EntityRenderers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EntityRenderers.h; path = "../../../../../../ClassiCube-master/src/EntityRenderers.h"; sourceTree = "<group>"; };
+		9A6C7C272C073DF500676D27 /* SelOutlineRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelOutlineRenderer.h; path = "../../../../../../ClassiCube-master/src/SelOutlineRenderer.h"; sourceTree = "<group>"; };
+		9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_SoftGPU.c; path = "../../../../../../ClassiCube-master/src/Graphics_SoftGPU.c"; sourceTree = "<group>"; };
+		9A6C7C292C073DF500676D27 /* MapRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MapRenderer.c; path = "../../../../../../ClassiCube-master/src/MapRenderer.c"; sourceTree = "<group>"; };
+		9A6C7C2A2C073DF500676D27 /* SelectionBox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SelectionBox.c; path = "../../../../../../ClassiCube-master/src/SelectionBox.c"; sourceTree = "<group>"; };
+		9A6C7C2B2C073DF500676D27 /* Launcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Launcher.h; path = "../../../../../../ClassiCube-master/src/Launcher.h"; sourceTree = "<group>"; };
+		9A6C7C2C2C073DF600676D27 /* Stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Stream.c; path = "../../../../../../ClassiCube-master/src/Stream.c"; sourceTree = "<group>"; };
+		9A6C7C2D2C073DF600676D27 /* Formats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Formats.c; path = "../../../../../../ClassiCube-master/src/Formats.c"; sourceTree = "<group>"; };
+		9A6C7C2E2C073DF600676D27 /* Chat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Chat.c; path = "../../../../../../ClassiCube-master/src/Chat.c"; sourceTree = "<group>"; };
+		9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Graphics_GL1.c; path = "../../../../../../ClassiCube-master/src/Graphics_GL1.c"; sourceTree = "<group>"; };
+		9A6C7C302C073DF600676D27 /* Window_Terminal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Window_Terminal.c; path = "../../../../../../ClassiCube-master/src/Window_Terminal.c"; sourceTree = "<group>"; };
+		9A6C7C312C073DF700676D27 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../../../../../../ClassiCube-master/src/Event.h"; sourceTree = "<group>"; };
+		9A6C7C322C073DF700676D27 /* String.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = String.h; path = "../../../../../../ClassiCube-master/src/String.h"; sourceTree = "<group>"; };
+		9A6C7C332C073DF700676D27 /* LScreens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LScreens.h; path = "../../../../../../ClassiCube-master/src/LScreens.h"; sourceTree = "<group>"; };
+		9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AxisLinesRenderer.c; path = "../../../../../../ClassiCube-master/src/AxisLinesRenderer.c"; sourceTree = "<group>"; };
+		9A6C7C352C073DF700676D27 /* EnvRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EnvRenderer.c; path = "../../../../../../ClassiCube-master/src/EnvRenderer.c"; sourceTree = "<group>"; };
+		9A6C7C362C073DF700676D27 /* _WindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _WindowBase.h; path = "../../../../../../ClassiCube-master/src/_WindowBase.h"; sourceTree = "<group>"; };
+		9A6C7C372C073DF700676D27 /* Input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Input.h; path = "../../../../../../ClassiCube-master/src/Input.h"; sourceTree = "<group>"; };
+		9A6C7C382C073DF800676D27 /* _ftsynth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftsynth.c; path = "../../../../../../ClassiCube-master/src/_ftsynth.c"; sourceTree = "<group>"; };
+		9A6C7C392C073DF800676D27 /* IsometricDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IsometricDrawer.h; path = "../../../../../../ClassiCube-master/src/IsometricDrawer.h"; sourceTree = "<group>"; };
+		9A6C7C3A2C073DF800676D27 /* Formats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Formats.h; path = "../../../../../../ClassiCube-master/src/Formats.h"; sourceTree = "<group>"; };
+		9A6C7C3B2C073DF800676D27 /* Deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Deflate.h; path = "../../../../../../ClassiCube-master/src/Deflate.h"; sourceTree = "<group>"; };
+		9A6C7C3C2C073DF800676D27 /* Logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Logger.c; path = "../../../../../../ClassiCube-master/src/Logger.c"; sourceTree = "<group>"; };
+		9A6C7C3D2C073DF900676D27 /* Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Resources.h; path = "../../../../../../ClassiCube-master/src/Resources.h"; sourceTree = "<group>"; };
+		9A6C7C3E2C073DF900676D27 /* String.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = String.c; path = "../../../../../../ClassiCube-master/src/String.c"; sourceTree = "<group>"; };
+		9A6C7C3F2C073DF900676D27 /* Protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Protocol.c; path = "../../../../../../ClassiCube-master/src/Protocol.c"; sourceTree = "<group>"; };
+		9A6C7C402C073DF900676D27 /* TouchUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TouchUI.c; path = "../../../../../../ClassiCube-master/src/TouchUI.c"; sourceTree = "<group>"; };
+		9A6C7C412C073DF900676D27 /* _type1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _type1.c; path = "../../../../../../ClassiCube-master/src/_type1.c"; sourceTree = "<group>"; };
+		9A6C7C422C073DFA00676D27 /* BlockID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlockID.h; path = "../../../../../../ClassiCube-master/src/BlockID.h"; sourceTree = "<group>"; };
+		9A6C7C432C073DFA00676D27 /* Gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Gui.h; path = "../../../../../../ClassiCube-master/src/Gui.h"; sourceTree = "<group>"; };
+		9A6C7C442C073DFB00676D27 /* Picking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Picking.h; path = "../../../../../../ClassiCube-master/src/Picking.h"; sourceTree = "<group>"; };
+		9A6C7C452C073DFB00676D27 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../../../../ClassiCube-master/src/Event.c"; sourceTree = "<group>"; };
+		9A6C7C462C073DFC00676D27 /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Launcher.c; path = "../../../../../../ClassiCube-master/src/Launcher.c"; sourceTree = "<group>"; };
+		9A6C7C472C073DFC00676D27 /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Camera.h; path = "../../../../../../ClassiCube-master/src/Camera.h"; sourceTree = "<group>"; };
+		9A6C7C482C073DFC00676D27 /* Queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Queue.h; path = "../../../../../../ClassiCube-master/src/Queue.h"; sourceTree = "<group>"; };
+		9A6C7C492C073DFC00676D27 /* Screens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Screens.h; path = "../../../../../../ClassiCube-master/src/Screens.h"; sourceTree = "<group>"; };
+		9A6C7C4A2C073DFD00676D27 /* _sfnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _sfnt.c; path = "../../../../../../ClassiCube-master/src/_sfnt.c"; sourceTree = "<group>"; };
+		9A6C7C4B2C073DFD00676D27 /* ExtMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtMath.h; path = "../../../../../../ClassiCube-master/src/ExtMath.h"; sourceTree = "<group>"; };
+		9A6C7C4C2C073DFD00676D27 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Options.h; path = "../../../../../../ClassiCube-master/src/Options.h"; sourceTree = "<group>"; };
+		9A6C7C4D2C073DFE00676D27 /* Entity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Entity.h; path = "../../../../../../ClassiCube-master/src/Entity.h"; sourceTree = "<group>"; };
+		9A6C7C4E2C073DFE00676D27 /* Drawer2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Drawer2D.h; path = "../../../../../../ClassiCube-master/src/Drawer2D.h"; sourceTree = "<group>"; };
+		9A6C7C4F2C073DFE00676D27 /* LScreens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LScreens.c; path = "../../../../../../ClassiCube-master/src/LScreens.c"; sourceTree = "<group>"; };
+		9A6C7C502C073DFE00676D27 /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Server.h; path = "../../../../../../ClassiCube-master/src/Server.h"; sourceTree = "<group>"; };
+		9A6C7C512C073DFF00676D27 /* _HttpBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _HttpBase.h; path = "../../../../../../ClassiCube-master/src/_HttpBase.h"; sourceTree = "<group>"; };
+		9A6C7C522C073DFF00676D27 /* Commands.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Commands.c; path = "../../../../../../ClassiCube-master/src/Commands.c"; sourceTree = "<group>"; };
+		9A6C7C532C073DFF00676D27 /* Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Core.h; path = "../../../../../../ClassiCube-master/src/Core.h"; sourceTree = "<group>"; };
+		9A6C7C542C073DFF00676D27 /* EnvRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvRenderer.h; path = "../../../../../../ClassiCube-master/src/EnvRenderer.h"; sourceTree = "<group>"; };
+		9A6C7C552C073E0000676D27 /* IsometricDrawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IsometricDrawer.c; path = "../../../../../../ClassiCube-master/src/IsometricDrawer.c"; sourceTree = "<group>"; };
+		9A6C7C562C073E0000676D27 /* _GLShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _GLShared.h; path = "../../../../../../ClassiCube-master/src/_GLShared.h"; sourceTree = "<group>"; };
+		9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = HeldBlockRenderer.c; path = "../../../../../../ClassiCube-master/src/HeldBlockRenderer.c"; sourceTree = "<group>"; };
+		9A6C7C582C073E0100676D27 /* _psmodule.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _psmodule.c; path = "../../../../../../ClassiCube-master/src/_psmodule.c"; sourceTree = "<group>"; };
+		9A6C7C592C073E0100676D27 /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = World.h; path = "../../../../../../ClassiCube-master/src/World.h"; sourceTree = "<group>"; };
+		9A6C7C5A2C073E0100676D27 /* Gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Gui.c; path = "../../../../../../ClassiCube-master/src/Gui.c"; sourceTree = "<group>"; };
+		9A6C7C5B2C073E0200676D27 /* _truetype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _truetype.c; path = "../../../../../../ClassiCube-master/src/_truetype.c"; sourceTree = "<group>"; };
+		9A6C7C5C2C073E0200676D27 /* Generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Generator.h; path = "../../../../../../ClassiCube-master/src/Generator.h"; sourceTree = "<group>"; };
+		9A6C7C5D2C073E0200676D27 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Game.h; path = "../../../../../../ClassiCube-master/src/Game.h"; sourceTree = "<group>"; };
+		9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Window_cocoa.m; path = "../../../../../../ClassiCube-master/src/Window_cocoa.m"; sourceTree = "<group>"; };
+		9A6C7C5F2C073E0200676D27 /* Vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Vorbis.c; path = "../../../../../../ClassiCube-master/src/Vorbis.c"; sourceTree = "<group>"; };
+		9A6C7C602C073E0300676D27 /* Inventory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Inventory.c; path = "../../../../../../ClassiCube-master/src/Inventory.c"; sourceTree = "<group>"; };
+		9A6C7C612C073E0300676D27 /* _PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _PlatformBase.h; path = "../../../../../../ClassiCube-master/src/_PlatformBase.h"; sourceTree = "<group>"; };
+		9A6C7C622C073E0300676D27 /* Animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animations.c; path = "../../../../../../ClassiCube-master/src/Animations.c"; sourceTree = "<group>"; };
+		9A6C7C632C073E0300676D27 /* FancyLighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = FancyLighting.c; path = "../../../../../../ClassiCube-master/src/FancyLighting.c"; sourceTree = "<group>"; };
+		9A6C7C642C073E0400676D27 /* Inventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Inventory.h; path = "../../../../../../ClassiCube-master/src/Inventory.h"; sourceTree = "<group>"; };
+		9A6C7C652C073E0400676D27 /* SSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSL.h; path = "../../../../../../ClassiCube-master/src/SSL.h"; sourceTree = "<group>"; };
+		9A6C7C662C073E0400676D27 /* Widgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Widgets.c; path = "../../../../../../ClassiCube-master/src/Widgets.c"; sourceTree = "<group>"; };
+		9A6C7C672C073E0400676D27 /* Picking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Picking.c; path = "../../../../../../ClassiCube-master/src/Picking.c"; sourceTree = "<group>"; };
+		9A6C7C682C073E0400676D27 /* _ftinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _ftinit.c; path = "../../../../../../ClassiCube-master/src/_ftinit.c"; sourceTree = "<group>"; };
+		9A6C7C692C073E0400676D27 /* Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Window.h; path = "../../../../../../ClassiCube-master/src/Window.h"; sourceTree = "<group>"; };
+		9A6C7C6A2C073E0500676D27 /* LBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LBackend.h; path = "../../../../../../ClassiCube-master/src/LBackend.h"; sourceTree = "<group>"; };
+		9A6C7C6B2C073E0500676D27 /* Http_Worker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Http_Worker.c; path = "../../../../../../ClassiCube-master/src/Http_Worker.c"; sourceTree = "<group>"; };
+		9A6C7C6C2C073E0500676D27 /* AxisLinesRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AxisLinesRenderer.h; path = "../../../../../../ClassiCube-master/src/AxisLinesRenderer.h"; sourceTree = "<group>"; };
+		9A6C7C6D2C073E0500676D27 /* ExtMath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ExtMath.c; path = "../../../../../../ClassiCube-master/src/ExtMath.c"; sourceTree = "<group>"; };
+		9A6C7C6E2C073E0600676D27 /* Block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Block.h; path = "../../../../../../ClassiCube-master/src/Block.h"; sourceTree = "<group>"; };
+		9A6C7C6F2C073E0600676D27 /* _cff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = _cff.c; path = "../../../../../../ClassiCube-master/src/_cff.c"; sourceTree = "<group>"; };
+		9A6C7C702C073E0600676D27 /* Camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Camera.c; path = "../../../../../../ClassiCube-master/src/Camera.c"; sourceTree = "<group>"; };
+		9A6C7C712C073E0600676D27 /* Drawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Drawer.c; path = "../../../../../../ClassiCube-master/src/Drawer.c"; sourceTree = "<group>"; };
+		9A6C7C722C073E0600676D27 /* Entity.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Entity.c; path = "../../../../../../ClassiCube-master/src/Entity.c"; sourceTree = "<group>"; };
+		9A6C7C732C073E0700676D27 /* Audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Audio.h; path = "../../../../../../ClassiCube-master/src/Audio.h"; sourceTree = "<group>"; };
+		9A6C7C742C073E0700676D27 /* SystemFonts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SystemFonts.c; path = "../../../../../../ClassiCube-master/src/SystemFonts.c"; sourceTree = "<group>"; };
+		9A6C7C752C073E0700676D27 /* _GraphicsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = _GraphicsBase.h; path = "../../../../../../ClassiCube-master/src/_GraphicsBase.h"; sourceTree = "<group>"; };
+		9A6C7C762C073E0700676D27 /* BlockPhysics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BlockPhysics.c; path = "../../../../../../ClassiCube-master/src/BlockPhysics.c"; sourceTree = "<group>"; };
+		9A6C7C772C073E0700676D27 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = main.c; path = "../../../../../../ClassiCube-master/src/main.c"; sourceTree = "<group>"; };
+		9A6C7C782C073E0800676D27 /* Builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Builder.h; path = "../../../../../../ClassiCube-master/src/Builder.h"; sourceTree = "<group>"; };
+		9A6C7C792C073E0800676D27 /* Model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Model.c; path = "../../../../../../ClassiCube-master/src/Model.c"; sourceTree = "<group>"; };
+		9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Graphics_Metal.m; path = "../../../../../../ClassiCube-master/src/Graphics_Metal.m"; sourceTree = "<group>"; };
+		9A6C7C7B2C073E0800676D27 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = "../../../../../../ClassiCube-master/src/Logger.h"; sourceTree = "<group>"; };
+		9A6C7C7C2C073E0800676D27 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = "../../../../../../ClassiCube-master/src/Utils.h"; sourceTree = "<group>"; };
+		9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SelOutlineRenderer.c; path = "../../../../../../ClassiCube-master/src/SelOutlineRenderer.c"; sourceTree = "<group>"; };
+		9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EntityRenderers.c; path = "../../../../../../ClassiCube-master/src/EntityRenderers.c"; sourceTree = "<group>"; };
+		9A6C7C7F2C073E0900676D27 /* Graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Graphics.h; path = "../../../../../../ClassiCube-master/src/Graphics.h"; sourceTree = "<group>"; };
+		9A6C7C802C073E0900676D27 /* LBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LBackend.c; path = "../../../../../../ClassiCube-master/src/LBackend.c"; sourceTree = "<group>"; };
+		9A6C7C812C073E0900676D27 /* Builder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Builder.c; path = "../../../../../../ClassiCube-master/src/Builder.c"; sourceTree = "<group>"; };
+		9A6C7C822C073E0900676D27 /* MapRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MapRenderer.h; path = "../../../../../../ClassiCube-master/src/MapRenderer.h"; sourceTree = "<group>"; };
+		9A6C7C832C073E0A00676D27 /* Server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Server.c; path = "../../../../../../ClassiCube-master/src/Server.c"; sourceTree = "<group>"; };
+		9A6C7C842C073E0A00676D27 /* Audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Audio.c; path = "../../../../../../ClassiCube-master/src/Audio.c"; sourceTree = "<group>"; };
+		9A6C7C852C073E0A00676D27 /* Deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Deflate.c; path = "../../../../../../ClassiCube-master/src/Deflate.c"; sourceTree = "<group>"; };
+		9A6C7C862C073E0A00676D27 /* Drawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Drawer.h; path = "../../../../../../ClassiCube-master/src/Drawer.h"; sourceTree = "<group>"; };
+		9A6C7C872C073E0B00676D27 /* Chat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Chat.h; path = "../../../../../../ClassiCube-master/src/Chat.h"; sourceTree = "<group>"; };
+		9A6C7C882C073E0B00676D27 /* BlockPhysics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BlockPhysics.h; path = "../../../../../../ClassiCube-master/src/BlockPhysics.h"; sourceTree = "<group>"; };
+		9A6C7C892C073E0B00676D27 /* Bitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bitmap.c; path = "../../../../../../ClassiCube-master/src/Bitmap.c"; sourceTree = "<group>"; };
+		9A6C7C8A2C073E0B00676D27 /* LWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LWidgets.h; path = "../../../../../../ClassiCube-master/src/LWidgets.h"; sourceTree = "<group>"; };
+		9A6C7C8B2C073E0C00676D27 /* HeldBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HeldBlockRenderer.h; path = "../../../../../../ClassiCube-master/src/HeldBlockRenderer.h"; sourceTree = "<group>"; };
+		9A6C7C8C2C073E0C00676D27 /* SelectionBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelectionBox.h; path = "../../../../../../ClassiCube-master/src/SelectionBox.h"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		9A6C796E2C073BFF00676D27 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		9A6C79682C073BFF00676D27 = {
+			isa = PBXGroup;
+			children = (
+				9A6C79732C073BFF00676D27 /* ClassiCube */,
+				9A6C79722C073BFF00676D27 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		9A6C79722C073BFF00676D27 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				9A6C79712C073BFF00676D27 /* ClassiCube */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		9A6C79732C073BFF00676D27 /* ClassiCube */ = {
+			isa = PBXGroup;
+			children = (
+				9A6C7BF52C073DED00676D27 /* _autofit.c */,
+				9A6C7C6F2C073E0600676D27 /* _cff.c */,
+				9A6C7C1E2C073DF300676D27 /* _ftbase.c */,
+				9A6C7BF22C073DED00676D27 /* _ftbitmap.c */,
+				9A6C7BEB2C073DEC00676D27 /* _ftglyph.c */,
+				9A6C7C682C073E0400676D27 /* _ftinit.c */,
+				9A6C7C382C073DF800676D27 /* _ftsynth.c */,
+				9A6C7C562C073E0000676D27 /* _GLShared.h */,
+				9A6C7C752C073E0700676D27 /* _GraphicsBase.h */,
+				9A6C7C512C073DFF00676D27 /* _HttpBase.h */,
+				9A6C7C612C073E0300676D27 /* _PlatformBase.h */,
+				9A6C7BF62C073DED00676D27 /* _PlatformConsole.h */,
+				9A6C7C152C073DF200676D27 /* _psaux.c */,
+				9A6C7C102C073DF100676D27 /* _pshinter.c */,
+				9A6C7C582C073E0100676D27 /* _psmodule.c */,
+				9A6C7C4A2C073DFD00676D27 /* _sfnt.c */,
+				9A6C7C0E2C073DF100676D27 /* _smooth.c */,
+				9A6C7C5B2C073E0200676D27 /* _truetype.c */,
+				9A6C7C412C073DF900676D27 /* _type1.c */,
+				9A6C7C362C073DF700676D27 /* _WindowBase.h */,
+				9A6C7C622C073E0300676D27 /* Animations.c */,
+				9A6C7C222C073DF400676D27 /* Animations.h */,
+				9A6C7C842C073E0A00676D27 /* Audio.c */,
+				9A6C7C732C073E0700676D27 /* Audio.h */,
+				9A6C7C0A2C073DF000676D27 /* AudioBackend.c */,
+				9A6C7C342C073DF700676D27 /* AxisLinesRenderer.c */,
+				9A6C7C6C2C073E0500676D27 /* AxisLinesRenderer.h */,
+				9A6C7C892C073E0B00676D27 /* Bitmap.c */,
+				9A6C7C1D2C073DF300676D27 /* Bitmap.h */,
+				9A6C7C1C2C073DF300676D27 /* Block.c */,
+				9A6C7C6E2C073E0600676D27 /* Block.h */,
+				9A6C7C422C073DFA00676D27 /* BlockID.h */,
+				9A6C7C762C073E0700676D27 /* BlockPhysics.c */,
+				9A6C7C882C073E0B00676D27 /* BlockPhysics.h */,
+				9A6C7C812C073E0900676D27 /* Builder.c */,
+				9A6C7C782C073E0800676D27 /* Builder.h */,
+				9A6C7C702C073E0600676D27 /* Camera.c */,
+				9A6C7C472C073DFC00676D27 /* Camera.h */,
+				9A6C7C2E2C073DF600676D27 /* Chat.c */,
+				9A6C7C872C073E0B00676D27 /* Chat.h */,
+				9A6C7C522C073DFF00676D27 /* Commands.c */,
+				9A6C7BEF2C073DED00676D27 /* Commands.h */,
+				9A6C7BEC2C073DED00676D27 /* Constants.h */,
+				9A6C7C532C073DFF00676D27 /* Core.h */,
+				9A6C7C852C073E0A00676D27 /* Deflate.c */,
+				9A6C7C3B2C073DF800676D27 /* Deflate.h */,
+				9A6C7C712C073E0600676D27 /* Drawer.c */,
+				9A6C7C862C073E0A00676D27 /* Drawer.h */,
+				9A6C7C112C073DF100676D27 /* Drawer2D.c */,
+				9A6C7C4E2C073DFE00676D27 /* Drawer2D.h */,
+				9A6C7C722C073E0600676D27 /* Entity.c */,
+				9A6C7C4D2C073DFE00676D27 /* Entity.h */,
+				9A6C7C042C073DEF00676D27 /* EntityComponents.c */,
+				9A6C7BF32C073DED00676D27 /* EntityComponents.h */,
+				9A6C7C7E2C073E0900676D27 /* EntityRenderers.c */,
+				9A6C7C262C073DF500676D27 /* EntityRenderers.h */,
+				9A6C7C352C073DF700676D27 /* EnvRenderer.c */,
+				9A6C7C542C073DFF00676D27 /* EnvRenderer.h */,
+				9A6C7C182C073DF300676D27 /* Errors.h */,
+				9A6C7C452C073DFB00676D27 /* Event.c */,
+				9A6C7C312C073DF700676D27 /* Event.h */,
+				9A6C7C6D2C073E0500676D27 /* ExtMath.c */,
+				9A6C7C4B2C073DFD00676D27 /* ExtMath.h */,
+				9A6C7C632C073E0300676D27 /* FancyLighting.c */,
+				9A6C7C2D2C073DF600676D27 /* Formats.c */,
+				9A6C7C3A2C073DF800676D27 /* Formats.h */,
+				9A6C7C062C073DEF00676D27 /* Funcs.h */,
+				9A6C7C052C073DEF00676D27 /* Game.c */,
+				9A6C7C5D2C073E0200676D27 /* Game.h */,
+				9A6C7C242C073DF500676D27 /* GameVersion.c */,
+				9A6C7BFB2C073DEE00676D27 /* Generator.c */,
+				9A6C7C5C2C073E0200676D27 /* Generator.h */,
+				9A6C7C2F2C073DF600676D27 /* Graphics_GL1.c */,
+				9A6C7C012C073DEE00676D27 /* Graphics_GL2.c */,
+				9A6C7C7A2C073E0800676D27 /* Graphics_Metal.m */,
+				9A6C7C282C073DF500676D27 /* Graphics_SoftGPU.c */,
+				9A6C7C7F2C073E0900676D27 /* Graphics.h */,
+				9A6C7C5A2C073E0100676D27 /* Gui.c */,
+				9A6C7C432C073DFA00676D27 /* Gui.h */,
+				9A6C7C572C073E0000676D27 /* HeldBlockRenderer.c */,
+				9A6C7C8B2C073E0C00676D27 /* HeldBlockRenderer.h */,
+				9A6C7C6B2C073E0500676D27 /* Http_Worker.c */,
+				9A6C7C032C073DEF00676D27 /* Http.h */,
+				9A6C7BF02C073DED00676D27 /* Input.c */,
+				9A6C7C372C073DF700676D27 /* Input.h */,
+				9A6C7C5E2C073E0200676D27 /* Window_cocoa.m */,
+				9A6C7C602C073E0300676D27 /* Inventory.c */,
+				9A6C7C642C073E0400676D27 /* Inventory.h */,
+				9A6C7C552C073E0000676D27 /* IsometricDrawer.c */,
+				9A6C7C392C073DF800676D27 /* IsometricDrawer.h */,
+				9A6C7C462C073DFC00676D27 /* Launcher.c */,
+				9A6C7C2B2C073DF500676D27 /* Launcher.h */,
+				9A6C7BFF2C073DEE00676D27 /* LBackend_Android.c */,
+				9A6C7C802C073E0900676D27 /* LBackend.c */,
+				9A6C7C6A2C073E0500676D27 /* LBackend.h */,
+				9A6C7C022C073DEE00676D27 /* Lighting.c */,
+				9A6C7C172C073DF200676D27 /* Lighting.h */,
+				9A6C7C3C2C073DF800676D27 /* Logger.c */,
+				9A6C7C7B2C073E0800676D27 /* Logger.h */,
+				9A6C7C4F2C073DFE00676D27 /* LScreens.c */,
+				9A6C7C332C073DF700676D27 /* LScreens.h */,
+				9A6C7BFA2C073DEE00676D27 /* LWeb.c */,
+				9A6C7BF42C073DED00676D27 /* LWeb.h */,
+				9A6C7C1F2C073DF400676D27 /* LWidgets.c */,
+				9A6C7C8A2C073E0B00676D27 /* LWidgets.h */,
+				9A6C7C772C073E0700676D27 /* main.c */,
+				9A6C7C292C073DF500676D27 /* MapRenderer.c */,
+				9A6C7C822C073E0900676D27 /* MapRenderer.h */,
+				9A6C7BF82C073DED00676D27 /* Menus.c */,
+				9A6C7C142C073DF200676D27 /* Menus.h */,
+				9A6C7C792C073E0800676D27 /* Model.c */,
+				9A6C7C1B2C073DF300676D27 /* Model.h */,
+				9A6C7BF12C073DED00676D27 /* Options.c */,
+				9A6C7C4C2C073DFD00676D27 /* Options.h */,
+				9A6C7C202C073DF400676D27 /* PackedCol.c */,
+				9A6C7C0C2C073DF000676D27 /* PackedCol.h */,
+				9A6C7C252C073DF500676D27 /* Particle.c */,
+				9A6C7BFC2C073DEE00676D27 /* Particle.h */,
+				9A6C7C212C073DF400676D27 /* Physics.c */,
+				9A6C7BF72C073DED00676D27 /* Physics.h */,
+				9A6C7C672C073E0400676D27 /* Picking.c */,
+				9A6C7C442C073DFB00676D27 /* Picking.h */,
+				9A6C7C072C073DEF00676D27 /* Platform_Posix.c */,
+				9A6C7BF92C073DED00676D27 /* Platform.h */,
+				9A6C7C3F2C073DF900676D27 /* Protocol.c */,
+				9A6C7C232C073DF400676D27 /* Protocol.h */,
+				9A6C7C0B2C073DF000676D27 /* Queue.c */,
+				9A6C7C482C073DFC00676D27 /* Queue.h */,
+				9A6C7C092C073DEF00676D27 /* Resources.c */,
+				9A6C7C3D2C073DF900676D27 /* Resources.h */,
+				9A6C7BFD2C073DEE00676D27 /* Screens.c */,
+				9A6C7C492C073DFC00676D27 /* Screens.h */,
+				9A6C7C2A2C073DF500676D27 /* SelectionBox.c */,
+				9A6C7C8C2C073E0C00676D27 /* SelectionBox.h */,
+				9A6C7C7D2C073E0800676D27 /* SelOutlineRenderer.c */,
+				9A6C7C272C073DF500676D27 /* SelOutlineRenderer.h */,
+				9A6C7C832C073E0A00676D27 /* Server.c */,
+				9A6C7C502C073DFE00676D27 /* Server.h */,
+				9A6C7BFE2C073DEE00676D27 /* SSL.c */,
+				9A6C7C652C073E0400676D27 /* SSL.h */,
+				9A6C7C2C2C073DF600676D27 /* Stream.c */,
+				9A6C7BED2C073DED00676D27 /* Stream.h */,
+				9A6C7C3E2C073DF900676D27 /* String.c */,
+				9A6C7C322C073DF700676D27 /* String.h */,
+				9A6C7C742C073E0700676D27 /* SystemFonts.c */,
+				9A6C7C192C073DF300676D27 /* SystemFonts.h */,
+				9A6C7C1A2C073DF300676D27 /* TexturePack.c */,
+				9A6C7BEA2C073DEC00676D27 /* TexturePack.h */,
+				9A6C7C402C073DF900676D27 /* TouchUI.c */,
+				9A6C7C082C073DEF00676D27 /* Utils.c */,
+				9A6C7C7C2C073E0800676D27 /* Utils.h */,
+				9A6C7BE92C073DEC00676D27 /* Vectors.c */,
+				9A6C7C0D2C073DF000676D27 /* Vectors.h */,
+				9A6C7BEE2C073DED00676D27 /* VirtualKeyboard.h */,
+				9A6C7C5F2C073E0200676D27 /* Vorbis.c */,
+				9A6C7C0F2C073DF100676D27 /* Vorbis.h */,
+				9A6C7C662C073E0400676D27 /* Widgets.c */,
+				9A6C7C122C073DF100676D27 /* Widgets.h */,
+				9A6C7C002C073DEE00676D27 /* Window_SDL.c */,
+				9A6C7C162C073DF200676D27 /* Window_SDL3.c */,
+				9A6C7C302C073DF600676D27 /* Window_Terminal.c */,
+				9A6C7C692C073E0400676D27 /* Window.h */,
+				9A6C7C132C073DF200676D27 /* World.c */,
+				9A6C7C592C073E0100676D27 /* World.h */,
+			);
+			path = ClassiCube;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		9A6C79702C073BFF00676D27 /* ClassiCube */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 9A6C79782C073BFF00676D27 /* Build configuration list for PBXNativeTarget "ClassiCube" */;
+			buildPhases = (
+				9A6C796D2C073BFF00676D27 /* Sources */,
+				9A6C796E2C073BFF00676D27 /* Frameworks */,
+				9A6C796F2C073BFF00676D27 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = ClassiCube;
+			productName = ClassiCube;
+			productReference = 9A6C79712C073BFF00676D27 /* ClassiCube */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		9A6C79692C073BFF00676D27 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 1010;
+				ORGANIZATIONNAME = ClassiCube;
+				TargetAttributes = {
+					9A6C79702C073BFF00676D27 = {
+						CreatedOnToolsVersion = 10.1;
+					};
+				};
+			};
+			buildConfigurationList = 9A6C796C2C073BFF00676D27 /* Build configuration list for PBXProject "ClassiCube" */;
+			compatibilityVersion = "Xcode 9.3";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 9A6C79682C073BFF00676D27;
+			productRefGroup = 9A6C79722C073BFF00676D27 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				9A6C79702C073BFF00676D27 /* ClassiCube */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		9A6C796D2C073BFF00676D27 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				9A6C7CB92C073E0C00676D27 /* AxisLinesRenderer.c in Sources */,
+				9A6C7CAF2C073E0C00676D27 /* GameVersion.c in Sources */,
+				9A6C7C9E2C073E0C00676D27 /* Platform_Posix.c in Sources */,
+				9A6C7C9A2C073E0C00676D27 /* Graphics_GL2.c in Sources */,
+				9A6C7C972C073E0C00676D27 /* SSL.c in Sources */,
+				9A6C7CD42C073E0C00676D27 /* ExtMath.c in Sources */,
+				9A6C7CD52C073E0C00676D27 /* _cff.c in Sources */,
+				9A6C7CAA2C073E0C00676D27 /* Block.c in Sources */,
+				9A6C7CC12C073E0C00676D27 /* Event.c in Sources */,
+				9A6C7CDC2C073E0C00676D27 /* Model.c in Sources */,
+				9A6C7CC72C073E0C00676D27 /* HeldBlockRenderer.c in Sources */,
+				9A6C7CDB2C073E0C00676D27 /* main.c in Sources */,
+				9A6C7CDE2C073E0C00676D27 /* SelOutlineRenderer.c in Sources */,
+				9A6C7CB42C073E0C00676D27 /* Stream.c in Sources */,
+				9A6C7CE22C073E0C00676D27 /* Server.c in Sources */,
+				9A6C7C912C073E0C00676D27 /* _ftbitmap.c in Sources */,
+				9A6C7CC52C073E0C00676D27 /* Commands.c in Sources */,
+				9A6C7CD22C073E0C00676D27 /* _ftinit.c in Sources */,
+				9A6C7CD72C073E0C00676D27 /* Drawer.c in Sources */,
+				9A6C7CE12C073E0C00676D27 /* Builder.c in Sources */,
+				9A6C7CA92C073E0C00676D27 /* TexturePack.c in Sources */,
+				9A6C7C962C073E0C00676D27 /* Screens.c in Sources */,
+				9A6C7CB32C073E0C00676D27 /* SelectionBox.c in Sources */,
+				9A6C7CCC2C073E0C00676D27 /* Vorbis.c in Sources */,
+				9A6C7CDF2C073E0C00676D27 /* EntityRenderers.c in Sources */,
+				9A6C7CE02C073E0C00676D27 /* LBackend.c in Sources */,
+				9A6C7CDA2C073E0C00676D27 /* BlockPhysics.c in Sources */,
+				9A6C7CC92C073E0C00676D27 /* Gui.c in Sources */,
+				9A6C7CAB2C073E0C00676D27 /* _ftbase.c in Sources */,
+				9A6C7CB22C073E0C00676D27 /* MapRenderer.c in Sources */,
+				9A6C7C9B2C073E0C00676D27 /* Lighting.c in Sources */,
+				9A6C7C992C073E0C00676D27 /* Window_SDL.c in Sources */,
+				9A6C7CBF2C073E0C00676D27 /* TouchUI.c in Sources */,
+				9A6C7CD32C073E0C00676D27 /* Http_Worker.c in Sources */,
+				9A6C7CD82C073E0C00676D27 /* Entity.c in Sources */,
+				9A6C7CA02C073E0C00676D27 /* Resources.c in Sources */,
+				9A6C7CA72C073E0C00676D27 /* _psaux.c in Sources */,
+				9A6C7CCB2C073E0C00676D27 /* Window_cocoa.m in Sources */,
+				9A6C7C9C2C073E0C00676D27 /* EntityComponents.c in Sources */,
+				9A6C7C982C073E0C00676D27 /* LBackend_Android.c in Sources */,
+				9A6C7CB02C073E0C00676D27 /* Particle.c in Sources */,
+				9A6C7C942C073E0C00676D27 /* LWeb.c in Sources */,
+				9A6C7C952C073E0C00676D27 /* Generator.c in Sources */,
+				9A6C7C932C073E0C00676D27 /* Menus.c in Sources */,
+				9A6C7CA22C073E0C00676D27 /* Queue.c in Sources */,
+				9A6C7CC42C073E0C00676D27 /* LScreens.c in Sources */,
+				9A6C7CD92C073E0C00676D27 /* SystemFonts.c in Sources */,
+				9A6C7CA82C073E0C00676D27 /* Window_SDL3.c in Sources */,
+				9A6C7CBE2C073E0C00676D27 /* Protocol.c in Sources */,
+				9A6C7CC02C073E0C00676D27 /* _type1.c in Sources */,
+				9A6C7CA12C073E0C00676D27 /* AudioBackend.c in Sources */,
+				9A6C7CDD2C073E0C00676D27 /* Graphics_Metal.m in Sources */,
+				9A6C7CBD2C073E0C00676D27 /* String.c in Sources */,
+				9A6C7C8F2C073E0C00676D27 /* Input.c in Sources */,
+				9A6C7CB52C073E0C00676D27 /* Formats.c in Sources */,
+				9A6C7CB72C073E0C00676D27 /* Graphics_GL1.c in Sources */,
+				9A6C7CA42C073E0C00676D27 /* _pshinter.c in Sources */,
+				9A6C7CBA2C073E0C00676D27 /* EnvRenderer.c in Sources */,
+				9A6C7C9F2C073E0C00676D27 /* Utils.c in Sources */,
+				9A6C7C922C073E0C00676D27 /* _autofit.c in Sources */,
+				9A6C7CCD2C073E0C00676D27 /* Inventory.c in Sources */,
+				9A6C7CB12C073E0C00676D27 /* Graphics_SoftGPU.c in Sources */,
+				9A6C7C9D2C073E0C00676D27 /* Game.c in Sources */,
+				9A6C7CC62C073E0C00676D27 /* IsometricDrawer.c in Sources */,
+				9A6C7CD12C073E0C00676D27 /* Picking.c in Sources */,
+				9A6C7CAE2C073E0C00676D27 /* Physics.c in Sources */,
+				9A6C7CA32C073E0C00676D27 /* _smooth.c in Sources */,
+				9A6C7C8E2C073E0C00676D27 /* _ftglyph.c in Sources */,
+				9A6C7CE52C073E0C00676D27 /* Bitmap.c in Sources */,
+				9A6C7CD62C073E0C00676D27 /* Camera.c in Sources */,
+				9A6C7CB62C073E0C00676D27 /* Chat.c in Sources */,
+				9A6C7CCE2C073E0C00676D27 /* Animations.c in Sources */,
+				9A6C7CE42C073E0C00676D27 /* Deflate.c in Sources */,
+				9A6C7CC82C073E0C00676D27 /* _psmodule.c in Sources */,
+				9A6C7CA62C073E0C00676D27 /* World.c in Sources */,
+				9A6C7CAD2C073E0C00676D27 /* PackedCol.c in Sources */,
+				9A6C7CBC2C073E0C00676D27 /* Logger.c in Sources */,
+				9A6C7C902C073E0C00676D27 /* Options.c in Sources */,
+				9A6C7CC32C073E0C00676D27 /* _sfnt.c in Sources */,
+				9A6C7CBB2C073E0C00676D27 /* _ftsynth.c in Sources */,
+				9A6C7C8D2C073E0C00676D27 /* Vectors.c in Sources */,
+				9A6C7CD02C073E0C00676D27 /* Widgets.c in Sources */,
+				9A6C7CB82C073E0C00676D27 /* Window_Terminal.c in Sources */,
+				9A6C7CE32C073E0C00676D27 /* Audio.c in Sources */,
+				9A6C7CAC2C073E0C00676D27 /* LWidgets.c in Sources */,
+				9A6C7CCF2C073E0C00676D27 /* FancyLighting.c in Sources */,
+				9A6C7CCA2C073E0C00676D27 /* _truetype.c in Sources */,
+				9A6C7CA52C073E0C00676D27 /* Drawer2D.c in Sources */,
+				9A6C7CC22C073E0C00676D27 /* Launcher.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		9A6C79762C073BFF00676D27 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		9A6C79772C073BFF00676D27 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "-";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		9A6C79792C073BFF00676D27 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = NO;
+				CODE_SIGN_STYLE = Automatic;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		9A6C797A2C073BFF00676D27 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = NO;
+				CODE_SIGN_STYLE = Automatic;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		9A6C796C2C073BFF00676D27 /* Build configuration list for PBXProject "ClassiCube" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9A6C79762C073BFF00676D27 /* Debug */,
+				9A6C79772C073BFF00676D27 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		9A6C79782C073BFF00676D27 /* Build configuration list for PBXNativeTarget "ClassiCube" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				9A6C79792C073BFF00676D27 /* Debug */,
+				9A6C797A2C073BFF00676D27 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 9A6C79692C073BFF00676D27 /* Project object */;
+}
diff --git a/misc/macOS/info.plist b/misc/macOS/info.plist
new file mode 100644
index 0000000..404e331
--- /dev/null
+++ b/misc/macOS/info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>ClassiCube</string>
+	<key>CFBundleIconFile</key>
+	<string>ClassiCube</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.classicube.client.mac</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>ClassiCube</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleDisplayName</key>
+	<string>ClassiCube</string>
+</dict>
+</plist>
\ No newline at end of file
diff --git a/misc/macOS/mac_icon_gen.cs b/misc/macOS/mac_icon_gen.cs
new file mode 100644
index 0000000..a53e24d
--- /dev/null
+++ b/misc/macOS/mac_icon_gen.cs
@@ -0,0 +1,43 @@
+using System.Drawing.Imaging;
+using System.Drawing;
+using System.IO;
+
+namespace test 
+{
+	public static class Program 
+	{
+		const string src = "CCicon.ico";
+		const string dst = "_CCIcon_mac.h";
+		
+		static void DumpIcon(StreamWriter sw, int width, int height) {
+			using (Icon icon = new Icon(src, width, height)) {
+				using (Bitmap bmp = icon.ToBitmap()) {
+					for (int y = 0; y < bmp.Height; y++) {
+						for (int x = 0; x < bmp.Width; x++) {
+							Color c = bmp.GetPixel(x, y);
+							
+							int r = c.R * c.A / 255;
+							int g = c.G * c.A / 255;
+							int b = c.B * c.A / 255;
+							int p = (r << 24) | (g << 16) | (b << 8) | c.A;
+							sw.Write("0x" + ((uint)p).ToString("X8") + ",");
+						}
+						sw.WriteLine();
+					}
+				}
+			}
+		}
+		
+		public static void Main(string[] args) {
+			using (StreamWriter sw = new StreamWriter(dst)) {
+				sw.WriteLine("/* Generated using misc/macOS/mac_icon_gen.cs */");
+				sw.WriteLine("");
+				sw.WriteLine("static const unsigned int CCIcon_Data[] = {");
+				DumpIcon(sw, 64, 64);
+				sw.WriteLine("};");
+				sw.WriteLine("static const int CCIcon_Width  = 64;");
+				sw.WriteLine("static const int CCIcon_Height = 64;");
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/misc/macclassic/68APPL.r b/misc/macclassic/68APPL.r
new file mode 100644
index 0000000..5a71403
--- /dev/null
+++ b/misc/macclassic/68APPL.r
@@ -0,0 +1,23 @@
+#include "Processes.r"
+#include "Retro68.r"
+
+resource 'SIZE' (-1) {
+	reserved,
+	ignoreSuspendResumeEvents,
+	reserved,
+	cannotBackground,
+	needsActivateOnFGSwitch,
+	backgroundAndForeground,
+	dontGetFrontClicks,
+	ignoreChildDiedEvents,
+	is32BitCompatible,
+	notHighLevelEventAware,
+	onlyLocalHLEvents,
+	notStationeryAware,
+	dontUseTextEditServices,
+	reserved,
+	reserved,
+	reserved,
+	8192 * 1024, // preferred (maximum) memory size
+	3584 * 1024, // minimum memory size (enough to load launcher)
+};
diff --git a/misc/macclassic/Makefile_68k b/misc/macclassic/Makefile_68k
new file mode 100644
index 0000000..17aa6ef
--- /dev/null
+++ b/misc/macclassic/Makefile_68k
@@ -0,0 +1,36 @@
+# path to RETRO68
+RETRO68=../Retro68-build/toolchain
+
+PREFIX=$(RETRO68)/m68k-apple-macos
+CC=$(RETRO68)/bin/m68k-apple-macos-gcc
+CXX=$(RETRO68)/bin/m68k-apple-macos-g++
+CFLAGS=-O1 -fno-math-errno
+
+REZ=$(RETRO68)/bin/Rez
+
+LDFLAGS=-lm
+RINCLUDES=$(PREFIX)/RIncludes
+REZFLAGS=-I$(RINCLUDES)
+
+TARGET		:=	ClassiCube-68k
+BUILD_DIR 	:=	build-68k
+SOURCE_DIR	:=	src
+C_SOURCES   := $(wildcard $(SOURCE_DIR)/*.c)
+C_OBJECTS   := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
+
+$(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).code.bin
+	$(REZ) $(REZFLAGS) \
+		--copy "$(TARGET).code.bin" \
+		"misc/macclassic/68APPL.r" \
+		-t "APPL" -c "????" \
+		-o $(TARGET).bin --cc $(TARGET).APPL --cc $(TARGET).dsk
+
+
+$(TARGET).code.bin: $(C_OBJECTS)
+	$(CC) $(C_OBJECTS) -o $@ $(LDFLAGS)
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+
+$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
+	$(CC) $(CFLAGS) -c $< -o $@
diff --git a/misc/macclassic/Makefile_ppc b/misc/macclassic/Makefile_ppc
new file mode 100644
index 0000000..1f33063
--- /dev/null
+++ b/misc/macclassic/Makefile_ppc
@@ -0,0 +1,39 @@
+# path to RETRO68
+RETRO68=../Retro68-build/toolchain
+
+PREFIX=$(RETRO68)/powerpc-apple-macos
+CC=$(RETRO68)/bin/powerpc-apple-macos-gcc
+CXX=$(RETRO68)/bin/powerpc-apple-macos-g++
+CFLAGS=-O1 -fno-math-errno
+
+REZ=$(RETRO68)/bin/Rez
+MakePEF=$(RETRO68)/bin/MakePEF
+
+LDFLAGS=-lm
+RINCLUDES=$(PREFIX)/RIncludes
+REZFLAGS=-I$(RINCLUDES)
+
+TARGET		:=	ClassiCube-ppc
+BUILD_DIR 	:=	build-ppc
+SOURCE_DIR	:=	src
+C_SOURCES   := $(wildcard $(SOURCE_DIR)/*.c)
+C_OBJECTS   := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
+
+$(TARGET).bin $(TARGET).APPL $(TARGET).dsk: $(BUILD_DIR) $(TARGET).pef
+	$(REZ) $(REZFLAGS) \
+		"misc/macclassic/ppcAPPL.r" \
+		-t "APPL" -c "????" \
+		--data $(TARGET).pef \
+		-o $(TARGET).bin --cc $(TARGET).APPL --cc $(TARGET).dsk
+
+$(TARGET).elf: $(C_OBJECTS)
+	$(CC) $(C_OBJECTS) -o $@ $(LDFLAGS)
+
+$(TARGET).pef: $(TARGET).elf
+	$(MakePEF) $(TARGET).elf -o $(TARGET).pef
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+
+$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
+	$(CC) $(CFLAGS) -c $< -o $@
diff --git a/misc/macclassic/ppcAPPL.r b/misc/macclassic/ppcAPPL.r
new file mode 100644
index 0000000..9bea619
--- /dev/null
+++ b/misc/macclassic/ppcAPPL.r
@@ -0,0 +1,32 @@
+#include "Processes.r"
+#include "CodeFragments.r"
+
+resource 'cfrg' (0) {
+	{
+		kPowerPCCFragArch, kIsCompleteCFrag, kNoVersionNum, kNoVersionNum,
+		kDefaultStackSize, kNoAppSubFolder,
+		kApplicationCFrag, kDataForkCFragLocator, kZeroOffset, kCFragGoesToEOF,
+		"ClassiCube"
+	}
+};
+
+resource 'SIZE' (-1) {
+	reserved,
+	ignoreSuspendResumeEvents,
+	reserved,
+	cannotBackground,
+	needsActivateOnFGSwitch,
+	backgroundAndForeground,
+	dontGetFrontClicks,
+	ignoreChildDiedEvents,
+	is32BitCompatible,
+	notHighLevelEventAware,
+	onlyLocalHLEvents,
+	notStationeryAware,
+	dontUseTextEditServices,
+	reserved,
+	reserved,
+	reserved,
+	8192 * 1024, // preferred (maximum) memory size
+	8192 * 1024  // minimum memory size
+};
diff --git a/misc/n64/Makefile b/misc/n64/Makefile
new file mode 100644
index 0000000..e14986c
--- /dev/null
+++ b/misc/n64/Makefile
@@ -0,0 +1,26 @@
+all: ClassiCube-n64.z64
+
+BUILD_DIR = build-n64
+SOURCE_DIR = src
+N64_ROM_TITLE = "ClassiCube"
+N64_ROM_RTC = true
+
+CFILES 	:= $(notdir $(wildcard src/*.c))
+OFILES 	:= $(CFILES:.c=.o)
+OBJS 	:= $(addprefix $(BUILD_DIR)/,$(OFILES))
+CFLAGS	:= -Wno-error=missing-braces -Wno-error=strict-aliasing -Wno-error=incompatible-pointer-types -Wno-error=maybe-uninitialized
+
+include $(N64_INST)/include/n64.mk
+
+ClassiCube-n64.z64: N64_ROM_TITLE = "ClassiCube"
+ClassiCube-n64.z64: $(BUILD_DIR)/filesystem.dfs
+
+$(BUILD_DIR)/filesystem.dfs: misc/n64/default.zip
+
+$(BUILD_DIR)/ClassiCube-n64.elf: $(OBJS)
+
+clean:
+	rm -rf $(BUILD_DIR) *.z64
+.PHONY: clean
+
+-include $(wildcard $(BUILD_DIR)/*.d)
diff --git a/misc/n64/default.zip b/misc/n64/default.zip
new file mode 100644
index 0000000..73447f6
--- /dev/null
+++ b/misc/n64/default.zip
Binary files differdiff --git a/misc/opengl/GL1Funcs.h b/misc/opengl/GL1Funcs.h
new file mode 100644
index 0000000..663fdf9
--- /dev/null
+++ b/misc/opengl/GL1Funcs.h
@@ -0,0 +1,63 @@
+/* Raster state functions */
+GL_FUNC(void, glAlphaFunc)(GLenum func, GLfloat ref);
+GL_FUNC(void, glBlendFunc)(GLenum sfactor, GLenum dfactor);
+GL_FUNC(void, glClearColor)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+GL_FUNC(void, glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+GL_FUNC(void, glDepthFunc)(GLenum func);
+GL_FUNC(void, glDepthMask)(GLboolean flag);
+GL_FUNC(void, glDisable)(GLenum cap);
+GL_FUNC(void, glDisableClientState)(GLenum array);
+GL_FUNC(void, glEnable)(GLenum cap);
+GL_FUNC(void, glEnableClientState)(GLenum array);
+
+/* Fog functions */
+GL_FUNC(void, glFogf)(GLenum pname, GLfloat param);
+GL_FUNC(void, glFogfv)(GLenum pname, const GLfloat* params);
+GL_FUNC(void, glFogi)(GLenum pname, GLint param);
+GL_FUNC(void, glFogiv)(GLenum pname, const GLint* params);
+
+/* Transform functions */
+GL_FUNC(void, glLoadIdentity)(void);
+GL_FUNC(void, glLoadMatrixf)(const GLfloat* m);
+GL_FUNC(void, glMatrixMode)(GLenum mode);
+GL_FUNC(void, glViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+
+/* Draw functions */
+GL_FUNC(void, glDrawArrays)(GLenum mode, GLint first, GLsizei count);
+GL_FUNC(void, glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+GL_FUNC(void, glColorPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+GL_FUNC(void, glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+GL_FUNC(void, glVertexPointer)(GLint size, GLenum type, GLsizei stride, GLpointer pointer);
+
+/* Misc functions */
+GL_FUNC(void, glClear)(GLuint mask);
+GL_FUNC(void, glHint)(GLenum target, GLenum mode);
+GL_FUNC(void, glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+
+/* Texture functions */
+GL_FUNC(void, glBindTexture)(GLenum target, GLuint texture);
+GL_FUNC(void, glDeleteTextures)(GLsizei n, const GLuint* textures);
+GL_FUNC(void, glGenTextures)(GLsizei n, GLuint* textures);
+GL_FUNC(void, glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+GL_FUNC(void, glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+GL_FUNC(void, glTexParameteri)(GLenum target, GLenum pname, GLint param);
+
+/* State get functions */
+GL_FUNC(GLenum,         glGetError)(void);
+GL_FUNC(void,           glGetFloatv)(GLenum pname, GLfloat* params);
+GL_FUNC(void,           glGetIntegerv)(GLenum pname, GLint* params);
+GL_FUNC(const GLubyte*, glGetString)(GLenum name);
+
+/* Legacy display list functions */
+GL_FUNC(void,   glCallList)(GLuint list);
+GL_FUNC(void,   glDeleteLists)(GLuint list, GLsizei range);
+GL_FUNC(GLuint, glGenLists)(GLsizei range);
+GL_FUNC(void,   glNewList)(GLuint list, GLenum mode);
+GL_FUNC(void,   glEndList)(void);
+
+/* Legacy vertex draw functions */
+GL_FUNC(void,   glBegin)(GLenum mode);
+GL_FUNC(void,   glEnd)(void);
+GL_FUNC(void,   glColor4ub)(GLubyte r, GLubyte g, GLubyte b, GLubyte a);
+GL_FUNC(void,   glTexCoord2f)(float u, float v);
+GL_FUNC(void,   glVertex3f)(float x, float y, float z);
\ No newline at end of file
diff --git a/misc/opengl/GL2Funcs.h b/misc/opengl/GL2Funcs.h
new file mode 100644
index 0000000..da12075
--- /dev/null
+++ b/misc/opengl/GL2Funcs.h
@@ -0,0 +1,36 @@
+/* Buffer functions */
+GL_FUNC(void,   glBindBuffer)(GLenum target, GLuint buffer);
+GL_FUNC(void,   glDeleteBuffers)(GLsizei n, const GLuint* buffers);
+GL_FUNC(void,   glGenBuffers)(GLsizei n, GLuint *buffers);
+GL_FUNC(void,   glBufferData)(GLenum target, cc_uintptr size, const GLvoid* data, GLenum usage);
+GL_FUNC(void,   glBufferSubData)(GLenum target, cc_uintptr offset, cc_uintptr size, const GLvoid* data);
+
+/* Shader functions */
+GL_FUNC(GLuint, glCreateShader)(GLenum type);
+GL_FUNC(void,   glDeleteShader)(GLuint shader);
+GL_FUNC(void,   glGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
+GL_FUNC(void,   glGetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei* length, char* infoLog);
+GL_FUNC(void,   glShaderSource)(GLuint shader, GLsizei count, const char* const* string, const GLint* length);
+
+GL_FUNC(void,   glAttachShader)(GLuint program, GLuint shader);
+GL_FUNC(void,   glBindAttribLocation)(GLuint program, GLuint index, const char* name);
+GL_FUNC(void,   glCompileShader)(GLuint shader);
+GL_FUNC(void,   glDetachShader)(GLuint program, GLuint shader);
+GL_FUNC(void,   glLinkProgram)(GLuint program);
+
+/* Program functions */
+GL_FUNC(GLuint, glCreateProgram)(void);
+GL_FUNC(void,   glDeleteProgram)(GLuint program);
+GL_FUNC(void,   glGetProgramiv)(GLuint program, GLenum pname, GLint* params);
+GL_FUNC(void,   glGetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei* length, char* infoLog);
+GL_FUNC(void,   glUseProgram)(GLuint program);
+
+GL_FUNC(void,   glDisableVertexAttribArray)(GLuint index);
+GL_FUNC(void,   glEnableVertexAttribArray)(GLuint index);
+GL_FUNC(void,   glVertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer);
+
+GL_FUNC(GLint,  glGetUniformLocation)(GLuint program, const char* name);
+GL_FUNC(void,   glUniform1f)(GLint location, GLfloat v0);
+GL_FUNC(void,   glUniform2f)(GLint location, GLfloat v0, GLfloat v1);
+GL_FUNC(void,   glUniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GL_FUNC(void,   glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
\ No newline at end of file
diff --git a/misc/opengl/GLCommon.h b/misc/opengl/GLCommon.h
new file mode 100644
index 0000000..8b56922
--- /dev/null
+++ b/misc/opengl/GLCommon.h
@@ -0,0 +1,102 @@
+#if defined CC_BUILD_WIN
+	/* Avoid pointless includes */
+	#define WIN32_LEAN_AND_MEAN
+	#define NOSERVICE
+	#define NOMCX
+	#define NOIME
+	#include <windows.h>
+	#define GLAPI WINGDIAPI
+#else
+	#define GLAPI extern
+	#define APIENTRY
+#endif
+
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef signed char GLbyte;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef void GLvoid;
+
+/* NOTE: With the OpenGL 1.1 backend "pointer" arguments are actual pointers, */
+/* but with VBOs they are just offsets instead */
+#ifdef CC_BUILD_GL11
+typedef const void* GLpointer;
+#else
+typedef cc_uintptr GLpointer;
+#endif
+
+#define GL_LEQUAL                0x0203
+#define GL_GREATER               0x0204
+
+#define GL_DEPTH_BUFFER_BIT      0x00000100
+#define GL_COLOR_BUFFER_BIT      0x00004000
+
+#define GL_LINES                 0x0001
+#define GL_TRIANGLES             0x0004
+#define GL_QUADS                 0x0007
+
+#define GL_BLEND                 0x0BE2
+#define GL_SRC_ALPHA             0x0302
+#define GL_ONE_MINUS_SRC_ALPHA   0x0303
+
+#define GL_UNSIGNED_BYTE         0x1401
+#define GL_UNSIGNED_SHORT        0x1403
+#define GL_UNSIGNED_INT          0x1405
+#define GL_FLOAT                 0x1406
+#define GL_RGBA                  0x1908
+
+#define GL_FOG                   0x0B60
+#define GL_FOG_DENSITY           0x0B62
+#define GL_FOG_END               0x0B64
+#define GL_FOG_MODE              0x0B65
+#define GL_FOG_COLOR             0x0B66
+#define GL_LINEAR                0x2601
+#define GL_EXP                   0x0800
+#define GL_EXP2                  0x0801
+
+#define GL_CULL_FACE             0x0B44
+#define GL_DEPTH_TEST            0x0B71
+#define GL_MATRIX_MODE           0x0BA0
+#define GL_VIEWPORT              0x0BA2
+#define GL_ALPHA_TEST            0x0BC0
+#define GL_MAX_TEXTURE_SIZE      0x0D33
+#define GL_DEPTH_BITS            0x0D56
+
+#define GL_FOG_HINT              0x0C54
+#define GL_NICEST                0x1102
+#define GL_COMPILE               0x1300
+
+#define GL_MODELVIEW             0x1700
+#define GL_PROJECTION            0x1701
+#define GL_TEXTURE               0x1702
+
+#define GL_VENDOR                0x1F00
+#define GL_RENDERER              0x1F01
+#define GL_VERSION               0x1F02
+#define GL_EXTENSIONS            0x1F03
+
+#define GL_TEXTURE_2D            0x0DE1
+#define GL_NEAREST               0x2600
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_TEXTURE_MAG_FILTER    0x2800
+#define GL_TEXTURE_MIN_FILTER    0x2801
+
+#define GL_VERTEX_ARRAY          0x8074
+#define GL_COLOR_ARRAY           0x8076
+#define GL_TEXTURE_COORD_ARRAY   0x8078
+
+/* Not present in gl.h on Windows (only up to OpenGL 1.1) */
+#define GL_ARRAY_BUFFER          0x8892
+#define GL_ELEMENT_ARRAY_BUFFER  0x8893
+#define GL_STATIC_DRAW           0x88E4
+#define GL_DYNAMIC_DRAW          0x88E8
+
+#define GL_FRAGMENT_SHADER       0x8B30
+#define GL_VERTEX_SHADER         0x8B31
+#define GL_COMPILE_STATUS        0x8B81
+#define GL_LINK_STATUS           0x8B82
+#define GL_INFO_LOG_LENGTH       0x8B84
\ No newline at end of file
diff --git a/misc/os2/Makefile b/misc/os2/Makefile
new file mode 100644
index 0000000..8e1c1d3
--- /dev/null
+++ b/misc/os2/Makefile
@@ -0,0 +1,59 @@
+#--------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# DATA is a list of directories containing data files
+#
+# NO_ICON: if set to anything, do not use icon.
+# NO_NACP: if set to anything, no .nacp file is generated.
+# APP_TITLE is the name of the app stored in the .nacp file (Optional)
+# APP_AUTHOR is the author of the app stored in the .nacp file (Optional)
+# APP_VERSION is the version of the app stored in the .nacp file (Optional)
+# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional)
+# ICON is the filename of the icon (.jpg), relative to the project folder.
+#   If not set, it attempts to use one of the following (in this order):
+#     - <Project name>.jpg
+#     - icon.jpg
+#     - <libnx folder>/default_icon.jpg
+#
+# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder.
+#   If not set, it attempts to use one of the following (in this order):
+#     - <Project name>.json
+#     - config.json
+#   If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead
+#   of a homebrew executable (.nro). This is intended to be used for sysmodules.
+#   NACP building is skipped as well.
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube
+BUILD_DIR :=	build
+SOURCE_DIR:=	src
+DATA			:=	data
+C_SOURCES   := $(wildcard $(SOURCE_DIR)/*.c)
+C_OBJECTS   := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
+
+OBJECTS := $(C_OBJECTS) $(BUILD_DIR)/$(TARGET).res misc/os2/classicube.def
+ENAME   = ClassiCube
+DEL     = rm -f
+APP_TITLE 	:= ClassiCube
+APP_AUTHOR 	:= UnknownShadow200
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+CC      := gcc
+CFLAGS	:= -pipe -fno-math-errno -O3 -g -mtune=pentium4 -msse2 -march=i686 -idirafter /@unixroot/usr/include/os2tk45 -DOS2
+LDFLAGS	:=	-Zhigh-mem -Zomf -Zargs-wild -Zargs-resp -Zlinker DISABLE -Zlinker 1121
+LIBS	  := -lcx -lmmpm2 -lpthread -lSDL2
+
+$(TARGET).exe: $(BUILD_DIR) $(OBJECTS)
+	$(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS)
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+
+$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
+	$(CC) $(CFLAGS) -c $< -o $@
+
+$(BUILD_DIR)/$(TARGET).res: misc/os2/$(TARGET).rc misc/os2/$(TARGET).ico
+	wrc -r misc/os2/$(TARGET).rc -fo=$@
+
diff --git a/misc/ps1/CMakeLists.txt b/misc/ps1/CMakeLists.txt
new file mode 100644
index 0000000..1f78b62
--- /dev/null
+++ b/misc/ps1/CMakeLists.txt
@@ -0,0 +1,21 @@
+cmake_minimum_required(VERSION 3.21)
+
+project(
+	ClassiCube
+	LANGUAGES    C ASM
+	VERSION      1.0.0
+	DESCRIPTION  "ClassiCube PS1 port"
+	HOMEPAGE_URL "https://classicube.net"
+)
+
+add_definitions(-DPLAT_PS1)
+file(GLOB _sources ../../src/*.c)
+
+psn00bsdk_add_executable(template GPREL ${_sources})
+
+psn00bsdk_add_cd_image(
+	iso      # Target name
+	template # Output file name (= template.bin + template.cue)
+	iso.xml  # Path to config file
+	DEPENDS template system.cnf
+)
diff --git a/misc/ps1/CMakePresets.json b/misc/ps1/CMakePresets.json
new file mode 100644
index 0000000..97d8428
--- /dev/null
+++ b/misc/ps1/CMakePresets.json
@@ -0,0 +1,26 @@
+{
+	"version": 3,
+	"cmakeMinimumRequired": {
+		"major": 3,
+		"minor": 21,
+		"patch": 0
+	},
+	"configurePresets": [
+		{
+			"name":          "default",
+			"displayName":   "Default configuration",
+			"description":   "Use this preset to build the project using PSn00bSDK.",
+			"generator":     "Ninja",
+			"toolchainFile": "$env{PSN00BSDK_LIBS}/cmake/sdk.cmake",
+			"binaryDir":     "${sourceDir}/build",
+			"cacheVariables": {
+				"CMAKE_BUILD_TYPE": "Debug",
+				"PSN00BSDK_TC":     "",
+				"PSN00BSDK_TARGET": "mipsel-none-elf"
+			},
+			"warnings": {
+				"dev": false
+			}
+		}
+	]
+}
diff --git a/misc/ps1/iso.xml b/misc/ps1/iso.xml
new file mode 100644
index 0000000..220f726
--- /dev/null
+++ b/misc/ps1/iso.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+	This file is processed by CMake and used by mkpsxiso to build the CD image.
+
+	NOTE: all paths are relative to the build directory; if you want to include
+	a file from the source tree, you'll have to prepend its path with
+	${PROJECT_SOURCE_DIR}.
+-->
+<iso_project>
+	<track type="data">
+		<!--
+			The "volume", "volume_set", "publisher", "data_preparer" and
+			"copyright" strings below can be freely modified. The ISO9660
+			specification, however, imposes the following limitations:
+
+			- "volume" and "volume_set" must be 32 characters or less, and can
+			  only contain uppercase letters, digits and underscores.
+			- "publisher" and "data_preparer" can be up to 128 characters long
+			  and can additionally contain spaces and some special characters.
+			- "copyright" should be a path to a file on the disc, even one that
+			  does not exist (but in practice it can be set to anything).
+
+			"system" and "application" must always be set to "PLAYSTATION" in
+			order for the disc to be recognized as valid.
+		-->
+		<identifiers
+			system			="PLAYSTATION"
+			volume			="PSN00BSDK_TEMPLATE"
+			volume_set		="PSN00BSDK_TEMPLATE"
+			publisher		="MEIDOTEK"
+			data_preparer	="PSN00BSDK ${PSN00BSDK_VERSION}"
+			application		="PLAYSTATION"
+			copyright		="README.TXT;1"
+		/>
+
+		<!--
+			You may optionally include a license file using the <license> tag.
+			Some consoles, particularly Japanese or PAL models with a modchip,
+			require the disc to contain valid license data and will refuse to
+			boot if it is missing. License files are usually not required on
+			US consoles or when booting via softmods or cheat cartridges.
+
+			License files are region-specific and are not distributed with
+			PSn00bSDK for obvious reasons, but can be dumped from an official
+			game using dumpsxiso or extracted from the Sony SDK.
+		-->
+		<!--<license file="${PROJECT_SOURCE_DIR}/license.dat" />-->
+
+		<!--
+			Files and directories can be added to the disc by placing <file>
+			and <dir> tags below. All file names are case-insensitive and must
+			be in 8.3 format, i.e. no more than 8 characters for the name and 3
+			for the optional extension. Directories cannot have extensions.
+
+			A boot configuration file (SYSTEM.CNF) or executable (PSX.EXE) must
+			be present in the root directory. Due to BIOS limitations the root
+			directory cannot hold more than 30 files or directories, and the
+			entire disc must contain 45 directories or less. Subdirectories can
+			contain any number of files.
+		-->
+		<directory_tree>
+			<file name="SYSTEM.CNF"		type="data" source="${PROJECT_SOURCE_DIR}/system.cnf" />
+			<file name="TEMPLATE.EXE"	type="data" source="template.exe" />
+			<!--
+				This file is only required if you are using dynamic linking
+				(see the system/dynlink example). It contains the executable's
+				symbol map and can be used to obtain the address of a function
+				or global variable by its name.
+			-->
+			<!--<file name="TEMPLATE.MAP"	type="data" source="template.map" />-->
+
+			<dir name="texpacks">
+				<file name="default.zip" type="data" source="../classicube.zip" />
+			</dir>
+			<dummy sectors="1024"/>
+		</directory_tree>
+	</track>
+
+	<!--
+		CD-DA tracks can be added to the CD image by using one or more <track>
+		tags. The source attribute must be a path to an audio file in WAV, FLAC
+		or MP3 format (using WAV or FLAC is highly recommended to preserve
+		audio quality if you have a lossless copy of the source track).
+	-->
+	<!--<track type="audio" source="${PROJECT_SOURCE_DIR}/track2.wav" />-->
+</iso_project>
diff --git a/misc/ps1/system.cnf b/misc/ps1/system.cnf
new file mode 100644
index 0000000..e221726
--- /dev/null
+++ b/misc/ps1/system.cnf
@@ -0,0 +1,4 @@
+BOOT=cdrom:\template.exe;1
+TCB=4
+EVENT=10
+STACK=801FFFF0
diff --git a/misc/ps2/Makefile b/misc/ps2/Makefile
new file mode 100644
index 0000000..897ea19
--- /dev/null
+++ b/misc/ps2/Makefile
@@ -0,0 +1,55 @@
+ifeq ($(strip $(PS2SDK)),)
+$(error "PS2SDK must be set in your environment")
+endif
+BUILD_DIR = build-ps2
+
+CFILES 	:= $(wildcard src/*.c)
+OBJS	:=$(patsubst %.c, %.o, $(CFILES))
+IOP_MODS:= DEV9_irx.o NETMAN_irx.o SMAP_irx.o USBD_irx.o BDM_irx.o BDMFS_FATFS_irx.o USBMASS_BD_irx.o USBHDFSD_irx.o USBMOUSE_irx.o
+
+EE_BIN = ClassiCube-ps2.elf
+EE_OBJS = $(OBJS) $(patsubst %.o, $(BUILD_DIR)/%.o, $(IOP_MODS))
+EE_LIBS = -lpatches -lpad -lpacket -ldma -lgraph -ldraw -lc -lps2ip -lnetman -lmc -lmouse
+EE_CFLAGS = -DPLAT_PS2
+
+all: $(BUILD_DIR) $(EE_BIN)
+
+clean:
+	rm -f $(EE_BIN) $(EE_OBJS)
+	
+$(BUILD_DIR):
+	mkdir -p $@
+	
+# Networking IRX modules
+$(BUILD_DIR)/DEV9_irx.c: $(PS2SDK)/iop/irx/ps2dev9.irx
+	bin2c $< $@ DEV9_irx
+
+$(BUILD_DIR)/NETMAN_irx.c: $(PS2SDK)/iop/irx/netman.irx
+	bin2c $< $@ NETMAN_irx
+
+$(BUILD_DIR)/SMAP_irx.c: $(PS2SDK)/iop/irx/smap.irx
+	bin2c $< $@ SMAP_irx
+	
+# USB storage IRX modules
+$(BUILD_DIR)/USBD_irx.c: $(PS2SDK)/iop/irx/usbd.irx
+	bin2c $< $@ USBD_irx
+
+$(BUILD_DIR)/BDM_irx.c: $(PS2SDK)/iop/irx/bdm.irx
+	bin2c $< $@ BDM_irx
+
+$(BUILD_DIR)/BDMFS_FATFS_irx.c: $(PS2SDK)/iop/irx/bdmfs_fatfs.irx
+	bin2c $< $@ BDMFS_FATFS_irx
+
+$(BUILD_DIR)/USBMASS_BD_irx.c: $(PS2SDK)/iop/irx/usbmass_bd.irx
+	bin2c $< $@ USBMASS_BD_irx
+
+$(BUILD_DIR)/USBHDFSD_irx.c: $(PS2SDK)/iop/irx/usbhdfsd.irx
+	bin2c $< $@ USBHDFSD_irx
+
+# USB input IRX modules
+$(BUILD_DIR)/USBMOUSE_irx.c: $(PS2SDK)/iop/irx/ps2mouse.irx
+	bin2c $< $@ USBMOUSE_irx
+
+
+include $(PS2SDK)/samples/Makefile.pref
+include $(PS2SDK)/samples/Makefile.eeglobal
diff --git a/misc/ps3/ICON0.png b/misc/ps3/ICON0.png
new file mode 100644
index 0000000..f6446f9
--- /dev/null
+++ b/misc/ps3/ICON0.png
Binary files differdiff --git a/misc/ps3/Makefile b/misc/ps3/Makefile
new file mode 100644
index 0000000..1ab8320
--- /dev/null
+++ b/misc/ps3/Makefile
@@ -0,0 +1,144 @@
+#---------------------------------------------------------------------------------
+# Clear the implicit built in rules
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+#---------------------------------------------------------------------------------
+ifeq ($(strip $(PS3DEV)),)
+$(error "Please set PS3DEV in your environment. export PS3DEV=<path>")
+endif
+ifeq ($(strip $(PSL1GHT)),)
+$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
+endif
+
+include $(PS3DEV)/ppu_rules
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# INCLUDES is a list of directories containing extra header files
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-PS3
+BUILD		:=	build-ps3
+SOURCES		:=	src third_party/bearssl/src
+INCLUDES	:= third_party/bearssl/inc
+SHADERS		:=	misc/ps3
+
+TITLE		:=	ClassiCube
+APPID		:=	CUBE00200
+CONTENTID	:=	UP0001-$(APPID)_00-0000000000000000
+ICON0		:=	../misc/ps3/ICON0.png
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+
+CFLAGS		=	-O2 -DPLAT_PS3 -Wall -mcpu=cell -fno-math-errno $(MACHDEP) $(INCLUDE)
+CXXFLAGS	=	$(CFLAGS)
+
+LDFLAGS	=	$(MACHDEP) -Wl,-Map,$(notdir $@).map -fno-use-linker-plugin
+
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS	:=	-lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm -lnet -lsysmodule 
+
+#---------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level containing
+# include and lib
+#---------------------------------------------------------------------------------
+LIBDIRS	:=
+
+#---------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#---------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#---------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
+			$(foreach dir,$(SHADERS),$(CURDIR)/$(dir))
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+export BUILDDIR	:=	$(CURDIR)/$(BUILD)
+
+#---------------------------------------------------------------------------------
+# automatically build a list of object files for our project
+#---------------------------------------------------------------------------------
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
+VCGFILES	:=	$(notdir $(wildcard misc/ps3/*.vcg))
+FCGFILES	:=	$(notdir $(wildcard misc/ps3/*.fcg))
+
+VPOFILES	:=	$(VCGFILES:.vcg=.vpo)
+FPOFILES	:=	$(FCGFILES:.fcg=.fpo)
+
+#---------------------------------------------------------------------------------
+# use CXX for linking C++ projects, CC for standard C
+#---------------------------------------------------------------------------------
+export LD	:=	$(CC)
+export OFILES	:=	$(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o) \
+			$(addsuffix .o,$(VPOFILES)) \
+			$(addsuffix .o,$(FPOFILES))
+			
+#---------------------------------------------------------------------------------
+# build a list of include paths
+#---------------------------------------------------------------------------------
+export INCLUDE	:=	$(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \
+					$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
+					$(LIBPSL1GHT_INC) \
+					-I$(CURDIR)/$(BUILD)
+
+#---------------------------------------------------------------------------------
+# build a list of library paths
+#---------------------------------------------------------------------------------
+export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
+					$(LIBPSL1GHT_LIB)
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+.PHONY: $(BUILD) clean
+
+#---------------------------------------------------------------------------------
+$(BUILD):
+	@[ -d $@ ] || mkdir -p $@
+	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/ps3/Makefile
+
+#---------------------------------------------------------------------------------
+clean:
+	@echo clean ...
+	@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self
+
+#---------------------------------------------------------------------------------
+else
+
+DEPENDS	:=	$(OFILES:.o=.d)
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+$(OUTPUT).pkg: $(OUTPUT).self
+$(OUTPUT).self: $(OUTPUT).elf
+$(OUTPUT).elf:	$(OFILES)
+
+#---------------------------------------------------------------------------------
+# This rule links in binary data with the .bin extension
+%.bin.o : %.bin
+	@echo $(notdir $<)
+	@$(bin2o)
+	
+%.vpo.o : %.vpo
+	@echo $(notdir $<)
+	@$(bin2o)
+
+%.fpo.o : %.fpo
+	@echo $(notdir $<)
+	@$(bin2o)
+
+-include $(DEPENDS)
+
+#---------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------
diff --git a/misc/ps3/ps_coloured.fcg b/misc/ps3/ps_coloured.fcg
new file mode 100644
index 0000000..928ade4
--- /dev/null
+++ b/misc/ps3/ps_coloured.fcg
@@ -0,0 +1,7 @@
+float4 main
+(
+	float4 in_color : COLOR
+) : COLOR
+{
+	return in_color;
+}
\ No newline at end of file
diff --git a/misc/ps3/ps_textured.fcg b/misc/ps3/ps_textured.fcg
new file mode 100644
index 0000000..d800712
--- /dev/null
+++ b/misc/ps3/ps_textured.fcg
@@ -0,0 +1,9 @@
+float4 main
+(
+	float4 in_color : COLOR,
+	float2 in_tex0  : TEXCOORD0,
+	uniform sampler2D tex
+) : COLOR
+{
+	return tex2D(tex, in_tex0) * in_color;
+}
\ No newline at end of file
diff --git a/misc/ps3/vs_coloured.vcg b/misc/ps3/vs_coloured.vcg
new file mode 100644
index 0000000..b41f690
--- /dev/null
+++ b/misc/ps3/vs_coloured.vcg
@@ -0,0 +1,11 @@
+void main(
+	float4 in_position : POSITION,
+	float4 in_color    : DIFFUSE,
+	uniform float4x4 mvp,
+	out float4 out_pos   : POSITION, 
+	out float4 out_color : COLOR)
+{
+	float4 pos = float4(in_position.xyz, 1.0f);	
+	out_pos    = mul(pos, mvp);
+	out_color  = in_color;
+}
\ No newline at end of file
diff --git a/misc/ps3/vs_offset.vcg b/misc/ps3/vs_offset.vcg
new file mode 100644
index 0000000..000e16e
--- /dev/null
+++ b/misc/ps3/vs_offset.vcg
@@ -0,0 +1,15 @@
+void main(
+	float4 in_position : POSITION,
+	float4 in_color    : DIFFUSE,
+	float4 in_tex      : TEXCOORD,
+	uniform float4x4 mvp,
+	uniform float4 uv_offset,
+	out float4 out_pos   : POSITION, 
+	out float4 out_color : COLOR, 
+	out float2 out_tex   : TEXCOORD0)
+{
+	float4 pos = float4(in_position.xyz, 1.0f);	
+	out_pos    = mul(pos, mvp);
+	out_color  = in_color;
+	out_tex    = in_tex + uv_offset;
+}
\ No newline at end of file
diff --git a/misc/ps3/vs_textured.vcg b/misc/ps3/vs_textured.vcg
new file mode 100644
index 0000000..f0edbfa
--- /dev/null
+++ b/misc/ps3/vs_textured.vcg
@@ -0,0 +1,14 @@
+void main(
+	float4 in_position : POSITION,
+	float4 in_color    : DIFFUSE,
+	float4 in_tex      : TEXCOORD,
+	uniform float4x4 mvp,
+	out float4 out_pos   : POSITION, 
+	out float4 out_color : COLOR, 
+	out float2 out_tex   : TEXCOORD0)
+{
+	float4 pos = float4(in_position.xyz, 1.0f);	
+	out_pos    = mul(pos, mvp);
+	out_color  = in_color;
+	out_tex    = in_tex;
+}
\ No newline at end of file
diff --git a/misc/psp/Makefile b/misc/psp/Makefile
new file mode 100644
index 0000000..45dde84
--- /dev/null
+++ b/misc/psp/Makefile
@@ -0,0 +1,19 @@
+TARGET 	= ClassiCube-psp
+SOURCES	= $(wildcard src/*.c) $(wildcard third_party/bearssl/src/*.c)
+OBJS   	= $(patsubst %.c, %.o, $(SOURCES))
+
+INCDIR   = third_party/bearssl/inc
+CFLAGS   = -g -O1 -fno-math-errno
+ASFLAGS  = $(CFLAGS)
+
+LIBDIR  =
+LDFLAGS =
+LIBS    = -lm -lpspgum -lpspgu -lpspge -lpspdisplay -lpspctrl
+
+BUILD_PRX = 1
+
+EXTRA_TARGETS   = EBOOT.PBP
+PSP_EBOOT_TITLE = ClassiCube
+
+PSPSDK=$(shell psp-config --pspsdk-path)
+include $(PSPSDK)/lib/build.mak
diff --git a/misc/readme.md b/misc/readme.md
new file mode 100644
index 0000000..56f5358
--- /dev/null
+++ b/misc/readme.md
@@ -0,0 +1,19 @@
+This folder contains additional files and resources for ClassiCube
+
+## Icons
+
+CCicon.ico is the basis icon for the other icon files
+
+Generating icons that can be embedded in the executable is operating system and compiler specific - see the relevant operating system folder for more details
+
+TODO: Explain how to compile your own icon for all the platforms
+
+## Folder meanings
+
+|File|Description|
+|--------|-------|
+|windows | Contains icons |
+|macOS | Contains icons, Info.plist for generating macOS Application Bundle |
+|linux | Contains icons, script for generating a Desktop Entry |
+|xbox | Contains Xbox shaders |
+|build_scripts | Contains scripts for compiling plugins and optimised ClassiCube executables|
\ No newline at end of file
diff --git a/misc/saturn/Makefile b/misc/saturn/Makefile
new file mode 100644
index 0000000..3bf455c
--- /dev/null
+++ b/misc/saturn/Makefile
@@ -0,0 +1,28 @@
+ifeq ($(strip $(YAUL_INSTALL_ROOT)),)
+  $(error Undefined YAUL_INSTALL_ROOT (install root directory))
+endif
+
+SH_BUILD_DIR	:= build-saturn
+
+include $(YAUL_INSTALL_ROOT)/share/build.pre.mk
+
+# Each asset follows the format: <path>;<symbol>. Duplicates are removed
+BUILTIN_ASSETS=
+
+SH_PROGRAM		:= ClassiCube-saturn
+SH_SRCS			:= $(wildcard src/*.c)
+
+SH_CFLAGS+= -Os -I. -DPLAT_SATURN -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers
+SH_LDFLAGS+=
+
+IP_VERSION:= V1.000
+IP_RELEASE_DATE:= 20230101
+IP_AREAS:= JTUBKAEL
+IP_PERIPHERALS:= JAMKST
+IP_TITLE:= ClassiCube
+IP_MASTER_STACK_ADDR:= 0x06004000
+IP_SLAVE_STACK_ADDR:= 0x06001E00
+IP_1ST_READ_ADDR:= 0x06004000
+IP_1ST_READ_SIZE:= 0
+
+include $(YAUL_INSTALL_ROOT)/share/build.post.iso-cue.mk
diff --git a/misc/sdl/CCIcon_SDL.h b/misc/sdl/CCIcon_SDL.h
new file mode 100644
index 0000000..aaf79e1
--- /dev/null
+++ b/misc/sdl/CCIcon_SDL.h
@@ -0,0 +1,71 @@
+/* Generated using misc/linux_icon_gen.cs */
+
+static const unsigned CCIcon_Data[] = {
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF363636,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB5B5B5,0xFF373737,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFB6B6B6,0xFF363636,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFD6D6D6,0xFFEBEBEB,0xFFF6F6F6,0xFFF5F5F5,0xFFEAEAEA,0xFFCFCFCF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFEDEDED,0xFFE4E4E4,0xFFE7E7E7,0xFFF2F2F2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFD4D4D4,0xFFF7F7F7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFCFCFC,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFE1E1E1,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFEFEFEF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFF1F1F1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE0E0E0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD6D6D6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFE5E5E5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF2F2F2,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEAEAEA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFE8E8E8,0xFFF2F2F2,0xFFFAFAFA,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFEDEDED,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD9D9D9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFD0D0D0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEEEEEE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFE0E0E0,0xFFE0E0E0,0xFFCDCDCD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFF8F8F8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC6C6C6,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCDCDCD,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFC1C1C1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD3D3D3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF3F3F3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFFC4C4C4,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFC5C5C5,0xFFF5F5F5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFBEBEBE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD7D7D7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD8D8D8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFF6F6F6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDCDCDC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD8D8D8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDFDFDF,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD7D7D7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE1E1E1,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBFBFBF,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDDDDDD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE1E1E1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF9F9F9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD5D5D5,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC7C7C7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDCDCDC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDDDDDD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBEBEBE,0xFFF9F9F9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDEDEDE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFC2C2C2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE6E6E6,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE4E4E4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE4E4E4,0xFFF3F3F3,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE3E3E3,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD1D1D1,0xFFFEFEFE,0xFFFEFEFE,0xFFF5F5F5,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE5E5E5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCACACA,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD1D1D1,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC5C5C5,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFDBDBDB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE7E7E7,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFECECEC,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF090909,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFEBEBEB,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFCCCCCC,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD0D0D0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFE9E9E9,0xFFD3D3D3,0xFFD6D6D6,0xFFECECEC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFAFAFA,0xFFC5C5C5,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF070707,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF080808,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD4D4D4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC7C7C7,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF0F0F0,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFD2D2D2,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF060606,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0xBF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFBFBFB,0xFFC8C8C8,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC8C8C8,0xFFD3D3D3,0xFFCCCCCC,0xFFBEBEBE,0xFFE2E2E2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFEEEEEE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFDADADA,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xBF000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x96000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF6F6F6,0xFFC4C4C4,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC3C3C3,0xFFFCFCFC,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFD2D2D2,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFDFDFD,0xFFD9D9D9,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0x9B000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF4F4F4,0xFFC6C6C6,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE0E0E0,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE9E9E9,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF7F7F7,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFCECECE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC2C2C2,0xFFFAFAFA,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC0C0C0,0xFFE7E7E7,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFF8F8F8,0xFFDDDDDD,0xFFC0C0C0,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFE3E3E3,0xFFC3C3C3,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFE8E8E8,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFC9C9C9,0xFFDCDCDC,0xFFE1E1E1,0xFFDCDCDC,0xFFCFCFCF,0xFFBFBFBF,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFBFBFB,0xFFE4E4E4,0xFFD0D0D0,0xFFC4C4C4,0xFFC3C3C3,0xFFCFCFCF,0xFFEBEBEB,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF313131,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF282828,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFFEFEFE,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAFAFAF,0xFFFDFDFD,0xFFFEFEFE,0xFFBDBDBD,0xFFBDBDBD,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF303030,0xFFAEAEAE,0xFF878787,0xFF292929,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xBF000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB9000000,0xFF000000,0xFF000000,0xFF000000,0xFF000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x39000000,0xB8000000,0xC0000000,0x40000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+};
+static const int CCIcon_Width  = 64;
+static const int CCIcon_Height = 64;
+static const int CCIcon_Pitch  = 256;
diff --git a/misc/sdl/sdl_icon_gen.cs b/misc/sdl/sdl_icon_gen.cs
new file mode 100644
index 0000000..90d0e5f
--- /dev/null
+++ b/misc/sdl/sdl_icon_gen.cs
@@ -0,0 +1,40 @@
+using System.Drawing.Imaging;
+using System.Drawing;
+using System.IO;
+
+namespace test 
+{
+	public static class Program 
+	{
+		const string src = "CCicon.ico";
+		const string dst = "CCIcon_SDL.h";
+		
+		static void DumpIcon(StreamWriter sw, int width, int height) {
+			using (Icon icon = new Icon(src, width, height)) {
+				using (Bitmap bmp = icon.ToBitmap()) {
+					for (int y = 0; y < bmp.Height; y++) {
+						for (int x = 0; x < bmp.Width; x++) {
+							Color c = bmp.GetPixel(x, y);
+							int p = (c.A << 24) | (c.R << 16) | (c.G << 8) | c.B;
+							sw.Write("0x" + ((uint)p).ToString("X8") + ",");
+						}
+						sw.WriteLine();
+					}
+				}
+			}
+			sw.WriteLine("static const int CCIcon_Width  = {0};", width);
+			sw.WriteLine("static const int CCIcon_Height = {0};", height);
+			sw.WriteLine("static const int CCIcon_Pitch  = {0};", width * 4);
+		}
+		
+		public static void Main(string[] args) {
+			using (StreamWriter sw = new StreamWriter(dst)) {
+				sw.WriteLine("/* Generated using misc/sdl/sdl_icon_gen.cs */");
+				sw.WriteLine("");
+				sw.WriteLine("static const unsigned CCIcon_Data[] = {");
+				DumpIcon(sw, 64, 64);
+				sw.WriteLine("};");
+			}
+		}
+	}
+}
diff --git a/misc/switch/Makefile b/misc/switch/Makefile
new file mode 100644
index 0000000..9d1b3a8
--- /dev/null
+++ b/misc/switch/Makefile
@@ -0,0 +1,212 @@
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+#---------------------------------------------------------------------------------
+
+ifeq ($(strip $(DEVKITPRO)),)
+$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
+endif
+
+TOPDIR ?= $(CURDIR)
+include $(DEVKITPRO)/libnx/switch_rules
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# DATA is a list of directories containing data files
+# INCLUDES is a list of directories containing header files
+# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional)
+#
+# NO_ICON: if set to anything, do not use icon.
+# NO_NACP: if set to anything, no .nacp file is generated.
+# APP_TITLE is the name of the app stored in the .nacp file (Optional)
+# APP_AUTHOR is the author of the app stored in the .nacp file (Optional)
+# APP_VERSION is the version of the app stored in the .nacp file (Optional)
+# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional)
+# ICON is the filename of the icon (.jpg), relative to the project folder.
+#   If not set, it attempts to use one of the following (in this order):
+#     - <Project name>.jpg
+#     - icon.jpg
+#     - <libnx folder>/default_icon.jpg
+#
+# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder.
+#   If not set, it attempts to use one of the following (in this order):
+#     - <Project name>.json
+#     - config.json
+#   If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead
+#   of a homebrew executable (.nro). This is intended to be used for sysmodules.
+#   NACP building is skipped as well.
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-switch
+BUILD		:=	build-switch
+SOURCES		:=	src misc/switch third_party/bearssl/src
+DATA		:=	data
+INCLUDES	:=	third_party/bearssl/inc
+#ROMFS	:=	romfs
+
+APP_TITLE 	:= ClassiCube
+APP_AUTHOR 	:= UnknownShadow200
+ICON        := misc/switch/icon.jpg
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+ARCH	:=	-march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE
+
+CFLAGS	:=	-g -Wall -O2 -ffunction-sections \
+			$(ARCH) $(DEFINES)
+
+CFLAGS	+=	$(INCLUDE) -D__SWITCH__
+
+CXXFLAGS	:= $(CFLAGS) -fno-rtti -fno-exceptions
+
+ASFLAGS	:=	-g $(ARCH)
+LDFLAGS	=	-specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
+
+LIBS	:= -lGLESv2 -lEGL -lglapi -ldrm_nouveau -lnx -lm
+
+#---------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level containing
+# include and lib
+#---------------------------------------------------------------------------------
+LIBDIRS	:= $(PORTLIBS) $(LIBNX)
+
+
+#---------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#---------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#---------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+export TOPDIR	:=	$(CURDIR)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
+			$(foreach dir,$(DATA),$(CURDIR)/$(dir))
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
+export LD	:=	$(CXX)
+
+export OFILES_BIN	:=	$(addsuffix .o,$(BINFILES))
+export OFILES_SRC	:=	$(CFILES:.c=.o) $(SFILES:.s=.o)
+export OFILES 	:=	$(OFILES_BIN) $(OFILES_SRC)
+export HFILES_BIN	:=	$(addsuffix .h,$(subst .,_,$(BINFILES)))
+
+export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
+			$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
+			-I$(CURDIR)/$(BUILD)
+
+export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib)
+
+ifeq ($(strip $(CONFIG_JSON)),)
+	jsons := $(wildcard *.json)
+	ifneq (,$(findstring $(TARGET).json,$(jsons)))
+		export APP_JSON := $(TOPDIR)/$(TARGET).json
+	else
+		ifneq (,$(findstring config.json,$(jsons)))
+			export APP_JSON := $(TOPDIR)/config.json
+		endif
+	endif
+else
+	export APP_JSON := $(TOPDIR)/$(CONFIG_JSON)
+endif
+
+ifeq ($(strip $(ICON)),)
+	icons := $(wildcard *.jpg)
+	ifneq (,$(findstring $(TARGET).jpg,$(icons)))
+		export APP_ICON := $(TOPDIR)/$(TARGET).jpg
+	else
+		ifneq (,$(findstring icon.jpg,$(icons)))
+			export APP_ICON := $(TOPDIR)/icon.jpg
+		endif
+	endif
+else
+	export APP_ICON := $(TOPDIR)/$(ICON)
+endif
+
+ifeq ($(strip $(NO_ICON)),)
+	export NROFLAGS += --icon=$(APP_ICON)
+endif
+
+ifeq ($(strip $(NO_NACP)),)
+	export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp
+endif
+
+ifneq ($(APP_TITLEID),)
+	export NACPFLAGS += --titleid=$(APP_TITLEID)
+endif
+
+ifneq ($(ROMFS),)
+	export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS)
+endif
+
+.PHONY: $(BUILD) clean all
+
+#---------------------------------------------------------------------------------
+all: $(BUILD)
+
+$(BUILD):
+	@[ -d $@ ] || mkdir -p $@
+	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/switch/Makefile
+
+#---------------------------------------------------------------------------------
+clean:
+	@echo clean ...
+ifeq ($(strip $(APP_JSON)),)
+	@rm -fr $(BUILD) $(TARGET).nro $(TARGET).nacp $(TARGET).elf
+else
+	@rm -fr $(BUILD) $(TARGET).nsp $(TARGET).nso $(TARGET).npdm $(TARGET).elf
+endif
+
+
+#---------------------------------------------------------------------------------
+else
+.PHONY:	all
+
+DEPENDS	:=	$(OFILES:.o=.d)
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+ifeq ($(strip $(APP_JSON)),)
+
+all	:	$(OUTPUT).nro
+
+ifeq ($(strip $(NO_NACP)),)
+$(OUTPUT).nro	:	$(OUTPUT).elf $(OUTPUT).nacp
+else
+$(OUTPUT).nro	:	$(OUTPUT).elf
+endif
+
+else
+
+all	:	$(OUTPUT).nsp
+
+$(OUTPUT).nsp	:	$(OUTPUT).nso $(OUTPUT).npdm
+
+$(OUTPUT).nso	:	$(OUTPUT).elf
+
+endif
+
+$(OUTPUT).elf	:	$(OFILES)
+
+$(OFILES_SRC)	: $(HFILES_BIN)
+
+#---------------------------------------------------------------------------------
+# you need a rule like this for each extension you use as binary data
+#---------------------------------------------------------------------------------
+%.bin.o	%_bin.h :	%.bin
+#---------------------------------------------------------------------------------
+	@echo $(notdir $<)
+	@$(bin2o)
+
+-include $(DEPENDS)
+
+#---------------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------------
diff --git a/misc/switch/icon.jpg b/misc/switch/icon.jpg
new file mode 100644
index 0000000..a8a2b59
--- /dev/null
+++ b/misc/switch/icon.jpg
Binary files differdiff --git a/misc/vita/Makefile b/misc/vita/Makefile
new file mode 100644
index 0000000..702723f
--- /dev/null
+++ b/misc/vita/Makefile
@@ -0,0 +1,48 @@
+PROJECT_TITLE 	:= ClassiCube
+PROJECT_TITLEID := CUBE00200
+TARGET 			:= ClassiCube-vita
+
+BUILD_DIR		:= build-vita
+SOURCE_DIRS		:= src third_party/bearssl/src
+
+CFLAGS += -Wl,-q -Ithird_party/bearssl/inc -O1
+C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
+OBJS 	:= $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o)))
+
+LIBS += -lm -lSceDisplay_stub -lSceCtrl_stub -lSceTouch_stub -lSceGxm_stub -lSceCommonDialog_stub
+
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+default: $(BUILD_DIR) $(TARGET).vpk
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+
+$(TARGET).vpk: eboot.bin param.sfo
+	vita-pack-vpk -s param.sfo -b eboot.bin -a misc/vita/sce_sys/ICON0.png=sce_sys/ICON0.png $(TARGET).vpk
+
+eboot.bin: $(TARGET).velf
+	vita-make-fself $(TARGET).velf eboot.bin
+
+param.sfo:
+	vita-mksfoex -s TITLE_ID="$(PROJECT_TITLEID)" "$(PROJECT_TITLE)" param.sfo
+
+$(TARGET).velf: $(TARGET).elf
+	arm-vita-eabi-strip -g $<
+	vita-elf-create $< $@
+
+$(TARGET).elf: $(OBJS)
+	arm-vita-eabi-gcc $(CFLAGS) $^ $(LIBS) -o $@
+
+$(BUILD_DIR)/%.o : src/%.c
+	arm-vita-eabi-gcc -c $(CFLAGS) -o $@ $<
+	
+$(BUILD_DIR)/%.o : third_party/bearssl/src/%.c
+	arm-vita-eabi-gcc -c $(CFLAGS) -o $@ $<
+	
+# TODO: There's gotta be a better way of .o to .c than this
+
+clean:
+	rm $(TARGET).velf $(TARGET).elf $(TARGET).vpk param.sfo eboot.bin $(OBJS)
diff --git a/misc/vita/colored_alpha_f.cg b/misc/vita/colored_alpha_f.cg
new file mode 100644
index 0000000..8bae2c1
--- /dev/null
+++ b/misc/vita/colored_alpha_f.cg
@@ -0,0 +1,9 @@
+float4 main
+(
+	float4 out_color: COLOR
+) : COLOR
+{
+	if (out_color.a < 0.5) discard;
+	
+	return out_color;
+}
\ No newline at end of file
diff --git a/misc/vita/colored_alpha_f.gxp b/misc/vita/colored_alpha_f.gxp
new file mode 100644
index 0000000..00a87e8
--- /dev/null
+++ b/misc/vita/colored_alpha_f.gxp
Binary files differdiff --git a/misc/vita/colored_alpha_f.h b/misc/vita/colored_alpha_f.h
new file mode 100644
index 0000000..25f508d
--- /dev/null
+++ b/misc/vita/colored_alpha_f.h
@@ -0,0 +1,21 @@
+const char colored_alpha_f[304] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, 
+	0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x03, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x0f, 0xa0, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0xfa, 
+	0x8c, 0x80, 0x03, 0x90, 0x91, 0xc6, 0x89, 0x48, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x10, 0x81, 0x91, 
+	0x80, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x81, 0x55, 0x01, 0x00, 0x0a, 0x30, 0x85, 0x01, 0x88, 0x48, 
+	0x00, 0x00, 0x00, 0xf0, 0x06, 0x04, 0x30, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x04, 0xf8, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x02, 0x80, 0x19, 0xa0, 0x7e, 0x0d, 0x80, 0x40, 
+	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00
+};
\ No newline at end of file
diff --git a/misc/vita/colored_f.cg b/misc/vita/colored_f.cg
new file mode 100644
index 0000000..2d95ff7
--- /dev/null
+++ b/misc/vita/colored_f.cg
@@ -0,0 +1,7 @@
+float4 main
+(
+	float4 out_color : COLOR
+) : COLOR
+{
+	return out_color;
+}
\ No newline at end of file
diff --git a/misc/vita/colored_f.gxp b/misc/vita/colored_f.gxp
new file mode 100644
index 0000000..f626c95
--- /dev/null
+++ b/misc/vita/colored_f.gxp
Binary files differdiff --git a/misc/vita/colored_f.h b/misc/vita/colored_f.h
new file mode 100644
index 0000000..234ce86
--- /dev/null
+++ b/misc/vita/colored_f.h
@@ -0,0 +1,16 @@
+const char colored_f[212] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 
+	0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x0f, 0xa0, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x02, 0x80, 0x19, 0xa0, 
+	0x7e, 0x0d, 0x80, 0x40
+};
\ No newline at end of file
diff --git a/misc/vita/colored_v.cg b/misc/vita/colored_v.cg
new file mode 100644
index 0000000..dc132a1
--- /dev/null
+++ b/misc/vita/colored_v.cg
@@ -0,0 +1,10 @@
+void main(
+	float3 in_position, 
+	float4 in_color,
+	uniform float4x4 mvp_matrix,
+	out float4 out_position: POSITION, 
+	out float4 out_color: COLOR)
+{
+	out_position = mul(mvp_matrix, float4(in_position, 1.0f));
+	out_color    = in_color;
+}
\ No newline at end of file
diff --git a/misc/vita/colored_v.gxp b/misc/vita/colored_v.gxp
new file mode 100644
index 0000000..113ce7e
--- /dev/null
+++ b/misc/vita/colored_v.gxp
Binary files differdiff --git a/misc/vita/colored_v.h b/misc/vita/colored_v.h
new file mode 100644
index 0000000..9274ed8
--- /dev/null
+++ b/misc/vita/colored_v.h
@@ -0,0 +1,22 @@
+const char colored_v[320] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 
+	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x80, 0x00, 0x08, 0x83, 0x21, 0x1d, 0x80, 0x38, 
+	0x02, 0x80, 0x81, 0xaf, 0x9c, 0x0d, 0x80, 0x40, 0x00, 0xa2, 0x3d, 0xc0, 0x81, 0x30, 0x90, 0x18, 
+	0x00, 0x00, 0x20, 0xa0, 0x00, 0x50, 0x27, 0xfb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 
+	0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x2c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x25, 0x00, 0x00, 0x00, 0x01, 0xe4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x69, 0x6e, 0x5f, 0x63, 
+	0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x6d, 0x76, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00
+};
\ No newline at end of file
diff --git a/misc/vita/gxp_to_c.c b/misc/vita/gxp_to_c.c
new file mode 100644
index 0000000..2fe8422
--- /dev/null
+++ b/misc/vita/gxp_to_c.c
@@ -0,0 +1,60 @@
+#include <dirent.h> 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+// Inspired by the public domain bin2c https://github.com/gwilymk/bin2c
+// TODO: log errors
+void convert_gxp(const char* src) {
+	char* copy = strdup(src);
+	char* name = strtok(copy, ".");
+	char dst[256];
+	sprintf(dst, "%s.h", name);	
+	printf("  %s --> %s\n", src, dst);
+
+	FILE* file_in  = fopen(src, "r");
+	if (!file_in) return;
+
+	FILE* file_out = fopen(dst, "w");
+	if (!file_out) return;
+	
+	fseek(file_in, 0, SEEK_END);
+	int file_size = ftell(file_in);
+	fseek(file_in, 0, SEEK_SET);
+
+	char* data = malloc(file_size);
+	fread(data, file_size, 1, file_in);
+	fclose(file_in);
+
+	int comma = 0;
+	fprintf(file_out, "const char %s[%i] = {", name, file_size);
+	
+	for (int i = 0; i < file_size; i++)
+	{
+		if (comma) fprintf(file_out, ", ");
+		if ((i % 16) == 0) fprintf(file_out, "\n\t");
+			
+		fprintf(file_out, "0x%.2x", data[i] & 0xFF);
+		comma = 1;
+	}
+	
+	fprintf(file_out, "\n};");
+	fclose(file_out);
+}
+
+int main(void) {
+	struct dirent* e;
+	DIR* d = opendir(".");
+	if (!d) return 0;
+
+	while ((e = readdir(d))) {
+		printf("checking %s\n", e->d_name);
+		
+		if (strstr(e->d_name, ".gxp")) {
+			convert_gxp(e->d_name);
+		}
+	}
+	
+	closedir(d);
+	return 0;
+}
diff --git a/misc/vita/readme.txt b/misc/vita/readme.txt
new file mode 100644
index 0000000..3dd61a5
--- /dev/null
+++ b/misc/vita/readme.txt
@@ -0,0 +1,9 @@
+Shaders on the PS Vita use the proprietary .gxp binary format
+
+To compile CG shaders to .gxp you need to use
+1) Extract libshacccg.suprx - see https://cimmerian.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx
+2) Use vitaShaRK to compile the CG shader (see sample 3 in https://github.com/Rinnegatamante/vitaShaRK for some reference)
+
+You can then use compiled gxp_to_c to convert all the .gxp shaders into .h files, which src/Graphics_PSVita.c can then include
+
+Note that you only need to perform these steps if you want to compile modified shaders - you don't need libshacccg.suprx to run ClassiCube
\ No newline at end of file
diff --git a/misc/vita/sce_sys/ICON0.png b/misc/vita/sce_sys/ICON0.png
new file mode 100644
index 0000000..190549b
--- /dev/null
+++ b/misc/vita/sce_sys/ICON0.png
Binary files differdiff --git a/misc/vita/textured_alpha_f.cg b/misc/vita/textured_alpha_f.cg
new file mode 100644
index 0000000..cc04854
--- /dev/null
+++ b/misc/vita/textured_alpha_f.cg
@@ -0,0 +1,12 @@
+float4 main
+(
+	uniform sampler2D tex,
+	float4 out_color    : COLOR,
+	float2 out_texcoord : TEXCOORD0
+) : COLOR
+{
+	float4 color = tex2D(tex, out_texcoord) * out_color;
+	
+	if (color.a < 0.5) discard;
+	return color;
+}
\ No newline at end of file
diff --git a/misc/vita/textured_alpha_f.gxp b/misc/vita/textured_alpha_f.gxp
new file mode 100644
index 0000000..cec48c1
--- /dev/null
+++ b/misc/vita/textured_alpha_f.gxp
Binary files differdiff --git a/misc/vita/textured_alpha_f.h b/misc/vita/textured_alpha_f.h
new file mode 100644
index 0000000..e07981e
--- /dev/null
+++ b/misc/vita/textured_alpha_f.h
@@ -0,0 +1,26 @@
+const char textured_alpha_f[372] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x08, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x00, 
+	0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x03, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x00, 0xa9, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0xfa, 
+	0x02, 0x00, 0x84, 0xa0, 0x86, 0x41, 0xa4, 0x08, 0x43, 0x00, 0xc4, 0xa0, 0x8a, 0x41, 0xc0, 0x08, 
+	0x8c, 0x81, 0x03, 0x90, 0x91, 0xc6, 0x89, 0x48, 0x00, 0x01, 0x00, 0xe0, 0x02, 0x10, 0x81, 0x91, 
+	0x80, 0x00, 0x00, 0xe0, 0x0a, 0x00, 0x81, 0x55, 0x01, 0x00, 0x0a, 0xb0, 0x85, 0x01, 0x88, 0x48, 
+	0x00, 0x00, 0x00, 0xf0, 0x06, 0x04, 0x30, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x04, 0xf8, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x06, 0x82, 0x19, 0xa0, 0x7e, 0x0d, 0x80, 0x40, 
+	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 
+	0x30, 0x00, 0x00, 0x00, 0x02, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x74, 0x65, 0x78, 0x00
+};
\ No newline at end of file
diff --git a/misc/vita/textured_f.cg b/misc/vita/textured_f.cg
new file mode 100644
index 0000000..a59b804
--- /dev/null
+++ b/misc/vita/textured_f.cg
@@ -0,0 +1,9 @@
+float4 main
+(
+	uniform sampler2D tex,
+	float4 out_color    : COLOR,
+	float2 out_texcoord : TEXCOORD0
+) : COLOR
+{
+	return tex2D(tex, out_texcoord) * out_color;
+}
\ No newline at end of file
diff --git a/misc/vita/textured_f.gxp b/misc/vita/textured_f.gxp
new file mode 100644
index 0000000..83df3e5
--- /dev/null
+++ b/misc/vita/textured_f.gxp
Binary files differdiff --git a/misc/vita/textured_f.h b/misc/vita/textured_f.h
new file mode 100644
index 0000000..033305b
--- /dev/null
+++ b/misc/vita/textured_f.h
@@ -0,0 +1,20 @@
+const char textured_f[288] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x05, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 
+	0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x00, 0xa9, 0xd0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x00, 0x00, 0x00, 0x00, 
+	0x40, 0x09, 0x00, 0xf8, 0x02, 0x80, 0x99, 0xaf, 0xbc, 0x0d, 0xc0, 0x40, 0x06, 0x82, 0xb9, 0xaf, 
+	0xbc, 0x0d, 0x80, 0x40, 0x7c, 0x0f, 0x04, 0x00, 0x86, 0x47, 0xa4, 0x10, 0x30, 0x00, 0x00, 0x00, 
+	0x02, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x00
+};
\ No newline at end of file
diff --git a/misc/vita/textured_v.cg b/misc/vita/textured_v.cg
new file mode 100644
index 0000000..7952b91
--- /dev/null
+++ b/misc/vita/textured_v.cg
@@ -0,0 +1,13 @@
+void main(
+	float3 in_position,
+	float4 in_color, 
+	float2 in_texcoord,
+	uniform float4x4 mvp_matrix,
+	out float4 out_position : POSITION, 
+	out float4 out_color : COLOR, 
+	out float2 out_texcoord: TEXCOORD0)
+{
+	out_position = mul(mvp_matrix, float4(in_position, 1.0f));
+	out_color    = in_color;
+	out_texcoord = in_texcoord;
+}
\ No newline at end of file
diff --git a/misc/vita/textured_v.gxp b/misc/vita/textured_v.gxp
new file mode 100644
index 0000000..46577ec
--- /dev/null
+++ b/misc/vita/textured_v.gxp
Binary files differdiff --git a/misc/vita/textured_v.h b/misc/vita/textured_v.h
new file mode 100644
index 0000000..e8b212f
--- /dev/null
+++ b/misc/vita/textured_v.h
@@ -0,0 +1,24 @@
+const char textured_v[348] = {
+	0x47, 0x58, 0x50, 0x00, 0x01, 0x05, 0x00, 0x03, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x0c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 
+	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x90, 0x3a, 0x03, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x03, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a, 
+	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x44, 0xfa, 0x80, 0x00, 0x08, 0x83, 0x21, 0x2d, 0x80, 0x38, 
+	0x02, 0x80, 0x81, 0xaf, 0x9c, 0x0d, 0x80, 0x40, 0x00, 0xa2, 0x3d, 0xc0, 0x81, 0x30, 0x90, 0x18, 
+	0x00, 0x00, 0x20, 0xa0, 0x00, 0x50, 0x27, 0xfb, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 
+	0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x3c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
+	0x35, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 
+	0x31, 0x00, 0x00, 0x00, 0x01, 0xe4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x69, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x69, 0x6e, 0x5f, 0x63, 
+	0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x69, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 
+	0x00, 0x6d, 0x76, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00
+};
\ No newline at end of file
diff --git a/misc/wii/Makefile b/misc/wii/Makefile
new file mode 100644
index 0000000..b685a30
--- /dev/null
+++ b/misc/wii/Makefile
@@ -0,0 +1,103 @@
+#---------------------------------------------------------------------------------
+# Clear the implicit built in rules
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+.SECONDARY:
+
+ifeq ($(strip $(DEVKITPPC)),)
+$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
+endif
+
+include $(DEVKITPPC)/wii_rules
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# INCLUDES is a list of directories containing extra header files
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-wii
+BUILD		:=	build-wii
+SOURCES		:=	src third_party/bearssl/src
+INCLUDES	:= third_party/bearssl/inc
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+
+CFLAGS		=	-g -O2 -Wall $(MACHDEP) $(INCLUDE)
+CXXFLAGS	=	$(CFLAGS)
+
+LDFLAGS	=	-g $(MACHDEP) -Wl,-Map,$(notdir $@).map
+
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS	:=	-lasnd -lwiikeyboard -lwiiuse -lbte -lfat -logc -lm
+
+#---------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#---------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#---------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+					
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+#---------------------------------------------------------------------------------
+# automatically build a list of object files for our project
+#---------------------------------------------------------------------------------
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
+
+export LD	:=	$(CC)
+
+export OFILES	:=	$(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
+
+#---------------------------------------------------------------------------------
+# build a list of include paths
+#---------------------------------------------------------------------------------
+export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
+					-I$(CURDIR)/$(BUILD) \
+					-I$(LIBOGC_INC)
+
+#---------------------------------------------------------------------------------
+# build a list of library paths
+#---------------------------------------------------------------------------------
+export LIBPATHS	:=	-L$(LIBOGC_LIB)
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+.PHONY: $(BUILD) clean
+
+#---------------------------------------------------------------------------------
+all: $(BUILD)
+	$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/wii/Makefile
+	
+$(BUILD):
+	mkdir -p $@
+
+#---------------------------------------------------------------------------------
+clean:
+	echo clean ...
+	rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
+
+#---------------------------------------------------------------------------------
+else
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+$(OUTPUT).dol: $(OUTPUT).elf
+$(OUTPUT).elf: $(OFILES)
+
+-include $(DEPSDIR)/*.d
+
+#---------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------
diff --git a/misc/wii/icon.png b/misc/wii/icon.png
new file mode 100644
index 0000000..681f066
--- /dev/null
+++ b/misc/wii/icon.png
Binary files differdiff --git a/misc/wii/meta.xml b/misc/wii/meta.xml
new file mode 100644
index 0000000..5c0f6c3
--- /dev/null
+++ b/misc/wii/meta.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<app version="1.2">
+<name>ClassiCube</name>
+<version>1.3.5</version>
+<coder>Unknownshadow200</coder>
+<short_description>Play ClassiCube</short_description>
+<long_description>yeet the blocks
+
+place the blocks</long_description>
+</app>
diff --git a/misc/wiiu/Makefile b/misc/wiiu/Makefile
new file mode 100644
index 0000000..47bad6d
--- /dev/null
+++ b/misc/wiiu/Makefile
@@ -0,0 +1,174 @@
+#-------------------------------------------------------------------------------
+.SUFFIXES:
+#-------------------------------------------------------------------------------
+
+ifeq ($(strip $(DEVKITPRO)),)
+$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
+endif
+
+TOPDIR ?= $(CURDIR)
+
+#-------------------------------------------------------------------------------
+# APP_NAME sets the long name of the application
+# APP_SHORTNAME sets the short name of the application
+# APP_AUTHOR sets the author of the application
+#-------------------------------------------------------------------------------
+#APP_NAME	:= Application Name
+#APP_SHORTNAME	:= App Name
+#APP_AUTHOR	:= Built with devkitPPC & wut
+
+include $(DEVKITPRO)/wut/share/wut_rules
+
+#-------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# DATA is a list of directories containing data files
+# INCLUDES is a list of directories containing header files
+# CONTENT is the path to the bundled folder that will be mounted as /vol/content/
+# ICON is the game icon, leave blank to use default rule
+# TV_SPLASH is the image displayed during bootup on the TV, leave blank to use default rule
+# DRC_SPLASH is the image displayed during bootup on the DRC, leave blank to use default rule
+#-------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-wiiu
+BUILD		:=	build-wiiu
+SOURCES		:=	src third_party/bearssl/src
+SHADERS		:=	misc/wiiu
+DATA		:=	data
+INCLUDES	:=	third_party/bearssl/inc
+CONTENT		:=
+ICON		:=
+TV_SPLASH	:=
+DRC_SPLASH	:=
+
+#-------------------------------------------------------------------------------
+# options for code generation
+#-------------------------------------------------------------------------------
+CFLAGS	:=	-g -Wall -O2 -ffunction-sections -fno-math-errno \
+			$(MACHDEP)
+
+CFLAGS	+=	$(INCLUDE) -D__WIIU__ -D__WUT__
+
+CXXFLAGS	:= $(CFLAGS)
+
+ASFLAGS	:=	-g $(ARCH)
+LDFLAGS	=	-g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map)
+
+LIBS	:= -lwut -lm
+
+#-------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level
+# containing include and lib
+#-------------------------------------------------------------------------------
+LIBDIRS	:= $(PORTLIBS) $(WUT_ROOT)
+
+#-------------------------------------------------------------------------------
+# no real need to edit anything past this point unless you need to add additional
+# rules for different file extensions
+#-------------------------------------------------------------------------------
+ifneq ($(BUILD),$(notdir $(CURDIR)))
+#-------------------------------------------------------------------------------
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+export TOPDIR	:=	$(CURDIR)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
+			$(foreach dir,$(DATA),$(CURDIR)/$(dir))
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) \
+				$(foreach dir,$(SHADERS),$(notdir $(wildcard $(dir)/*.gsh)))
+
+export LD	:=	$(CXX)
+
+export OFILES_BIN	:=	$(addsuffix .o,$(BINFILES))
+export OFILES_SRC	:=	$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
+export OFILES 	:=	$(OFILES_BIN) $(OFILES_SRC)
+export HFILES_BIN	:=	$(addsuffix .h,$(subst .,_,$(BINFILES)))
+
+export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
+			$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
+			-I$(CURDIR)/$(BUILD)
+
+export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib)
+
+ifneq (,$(strip $(CONTENT)))
+	export APP_CONTENT := $(TOPDIR)/$(CONTENT)
+endif
+
+ifneq (,$(strip $(ICON)))
+	export APP_ICON := $(TOPDIR)/$(ICON)
+else ifneq (,$(wildcard $(TOPDIR)/$(TARGET).png))
+	export APP_ICON := $(TOPDIR)/$(TARGET).png
+else ifneq (,$(wildcard $(TOPDIR)/icon.png))
+	export APP_ICON := $(TOPDIR)/icon.png
+endif
+
+ifneq (,$(strip $(TV_SPLASH)))
+	export APP_TV_SPLASH := $(TOPDIR)/$(TV_SPLASH)
+else ifneq (,$(wildcard $(TOPDIR)/tv-splash.png))
+	export APP_TV_SPLASH := $(TOPDIR)/tv-splash.png
+else ifneq (,$(wildcard $(TOPDIR)/splash.png))
+	export APP_TV_SPLASH := $(TOPDIR)/splash.png
+endif
+
+ifneq (,$(strip $(DRC_SPLASH)))
+	export APP_DRC_SPLASH := $(TOPDIR)/$(DRC_SPLASH)
+else ifneq (,$(wildcard $(TOPDIR)/drc-splash.png))
+	export APP_DRC_SPLASH := $(TOPDIR)/drc-splash.png
+else ifneq (,$(wildcard $(TOPDIR)/splash.png))
+	export APP_DRC_SPLASH := $(TOPDIR)/splash.png
+endif
+
+.PHONY: $(BUILD) clean all
+
+#-------------------------------------------------------------------------------
+all: $(BUILD)
+
+$(BUILD):
+	@[ -d $@ ] || mkdir -p $@
+	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/wiiu/Makefile
+
+#-------------------------------------------------------------------------------
+clean:
+	@echo clean ...
+	@rm -fr $(BUILD) $(TARGET).wuhb $(TARGET).rpx $(TARGET).elf
+
+#-------------------------------------------------------------------------------
+else
+.PHONY:	all
+
+DEPENDS	:=	$(OFILES:.o=.d)
+
+#-------------------------------------------------------------------------------
+# main targets
+#-------------------------------------------------------------------------------
+all	:	$(OUTPUT).wuhb
+
+$(OUTPUT).wuhb	:	$(OUTPUT).rpx
+$(OUTPUT).rpx	:	$(OUTPUT).elf
+$(OUTPUT).elf	:	$(OFILES)
+
+$(OFILES_SRC)	: $(HFILES_BIN)
+
+# you need a rule like this for each extension you use as binary data
+#-------------------------------------------------------------------------------
+%.bin.o	%_bin.h :	%.bin
+#-------------------------------------------------------------------------------
+	@echo $(notdir $<)
+	@$(bin2o)
+#-------------------------------------------------------------------------------
+%.gsh.o	%_gsh.h : ../misc/wiiu/%.gsh
+#-------------------------------------------------------------------------------
+	echo $(notdir $<)
+	$(bin2o)
+
+-include $(DEPENDS)
+
+#-------------------------------------------------------------------------------
+endif
+#-------------------------------------------------------------------------------
diff --git a/misc/wiiu/coloured.gsh b/misc/wiiu/coloured.gsh
new file mode 100644
index 0000000..22a1131
--- /dev/null
+++ b/misc/wiiu/coloured.gsh
Binary files differdiff --git a/misc/wiiu/coloured.psh b/misc/wiiu/coloured.psh
new file mode 100644
index 0000000..3248826
--- /dev/null
+++ b/misc/wiiu/coloured.psh
@@ -0,0 +1,8 @@
+; $NUM_SPI_PS_INPUT_CNTL = 1
+; $SPI_PS_INPUT_CNTL[0].SEMANTIC = 0
+; $SPI_PS_INPUT_CNTL[0].DEFAULT_VAL = 1
+; $SQ_PGM_RESOURCES_PS.STACK_SIZE = 0
+
+; --------  Disassembly --------------------
+00 EXP_DONE: PIX0, R0
+END_OF_PROGRAM
diff --git a/misc/wiiu/coloured.psh.glsl b/misc/wiiu/coloured.psh.glsl
new file mode 100644
index 0000000..fae46dd
--- /dev/null
+++ b/misc/wiiu/coloured.psh.glsl
@@ -0,0 +1,6 @@
+varying vec4 out_col;
+
+void main() {
+  vec4 col = out_col;
+  gl_FragColor = col;
+}
\ No newline at end of file
diff --git a/misc/wiiu/coloured.vsh b/misc/wiiu/coloured.vsh
new file mode 100644
index 0000000..1f57c2b
--- /dev/null
+++ b/misc/wiiu/coloured.vsh
@@ -0,0 +1,46 @@
+; $MODE = "UniformRegister"
+
+; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 0
+; $NUM_SPI_VS_OUT_ID = 1
+; out_colour
+; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0
+
+; C0
+; $UNIFORM_VARS[0].name = "mvp"
+; $UNIFORM_VARS[0].type = "mat4"
+; $UNIFORM_VARS[0].count = 1
+; $UNIFORM_VARS[0].block = -1
+; $UNIFORM_VARS[0].offset = 0
+
+; R1
+; $ATTRIB_VARS[0].name = "in_pos"
+; $ATTRIB_VARS[0].type = "vec3"
+; $ATTRIB_VARS[0].location = 0
+; R2
+; $ATTRIB_VARS[1].name = "in_col"
+; $ATTRIB_VARS[1].type = "vec4"
+; $ATTRIB_VARS[1].location = 1
+
+; --------  Disassembly --------------------
+00 CALL_FS NO_BARRIER 
+01 ALU: ADDR(32) CNT(18)
+      0  x: MUL         ____,  C3.w,  1.0f      
+         y: MUL         ____,  C3.z,  1.0f      
+         z: MUL         ____,  C3.y,  1.0f      
+         w: MUL         ____,  C3.x,  1.0f      
+      1  x: MULADD      R127.x,  R1.z,  C2.w,  PV0.x      
+         y: MULADD      R127.y,  R1.z,  C2.z,  PV0.y      
+         z: MULADD      R127.z,  R1.z,  C2.y,  PV0.z      
+         w: MULADD      R127.w,  R1.z,  C2.x,  PV0.w      
+      2  x: MULADD      R127.x,  R1.y,  C1.w,  PV1.x      
+         y: MULADD      R127.y,  R1.y,  C1.z,  PV1.y      
+         z: MULADD      R127.z,  R1.y,  C1.y,  PV1.z      
+         w: MULADD      R127.w,  R1.y,  C1.x,  PV1.w      
+      3  x: MULADD      R1.x,  R1.x,  C0.x,  PV2.w      
+         y: MULADD      R1.y,  R1.x,  C0.y,  PV2.z      
+         z: MULADD      R1.z,  R1.x,  C0.z,  PV2.y      
+         w: MULADD      R1.w,  R1.x,  C0.w,  PV2.x      
+02 EXP_DONE: POS0, R1
+03 EXP_DONE: PARAM0, R2  NO_BARRIER 
+END_OF_PROGRAM
+
diff --git a/misc/wiiu/coloured.vsh.glsl b/misc/wiiu/coloured.vsh.glsl
new file mode 100644
index 0000000..a160758
--- /dev/null
+++ b/misc/wiiu/coloured.vsh.glsl
@@ -0,0 +1,9 @@
+attribute vec3 in_pos;
+attribute vec4 in_col;
+varying vec4 out_col;
+uniform mat4 mvp;
+
+void main() {
+  gl_Position = mvp * vec4(in_pos, 1.0);
+  out_col = in_col;
+}
diff --git a/misc/wiiu/shaders.txt b/misc/wiiu/shaders.txt
new file mode 100644
index 0000000..cca3c2b
--- /dev/null
+++ b/misc/wiiu/shaders.txt
@@ -0,0 +1,14 @@
+Shader samples
+https://github.com/decaf-emu/wiiu-tests/blob/master/content/shaders/pos_colour.vsh
+https://github.com/GaryOderNichts/wiiu-shaders/blob/master/shaders.md
+https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/plain.vsh#L6
+https://github.com/GaryOderNichts/MultiDRCSpaceDemo/blob/30a6337a47dabafd6d601ce0555b326866f63247/shaders/textureShader.vsh#L6
+https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/texture.vsh#L9
+https://github.com/rw-r-r-0644/gx2-texture/blob/83d7707e8d4b33ec7ba63d5c7dfe62c359b2b50a/shaders/texture_shader.vsh#L9
+https://github.com/yawut/ntrview-wiiu/blob/45b1c7f05cfd9917b8b171f3db08dc63293fc5c5/gfx/gx2_shaders/main.psh
+https://github.com/Hydr8gon/NooDS/blob/b41cb3b9b889481c998e7e83db1ab3ef9d97b838/src/console/shaders/shader_wiiu.vsh
+https://github.com/luRaichu/recsbr/blob/163fa441712f6b25e780e914617941c2385b330e/src/Backends/Rendering/WiiUShaders/shader%20sources/wtf%20is%20this.txt
+
+To generate shader assembly
+1) Get AMD ShaderAnalyzer
+2) Select Radeon HD 4670 (RV370) Assembly as the output format
\ No newline at end of file
diff --git a/misc/wiiu/textured.gsh b/misc/wiiu/textured.gsh
new file mode 100644
index 0000000..cd3fb3b
--- /dev/null
+++ b/misc/wiiu/textured.gsh
Binary files differdiff --git a/misc/wiiu/textured.psh b/misc/wiiu/textured.psh
new file mode 100644
index 0000000..9305d3e
--- /dev/null
+++ b/misc/wiiu/textured.psh
@@ -0,0 +1,21 @@
+; $MODE = "UniformRegister"
+; $SAMPLER_VARS[0].name= "texImage"
+; $SAMPLER_VARS[0].type= "sampler2D"
+; $SAMPLER_VARS[0].location = 0
+
+; $NUM_SPI_PS_INPUT_CNTL = 2
+; $SPI_PS_INPUT_CNTL[0].semantic = 0
+; $SPI_PS_INPUT_CNTL[0].default_val = 1
+; $SPI_PS_INPUT_CNTL[1].semantic = 1
+; $SPI_PS_INPUT_CNTL[1].default_val = 1
+
+; --------  Disassembly --------------------
+00 TEX: ADDR(48) CNT(1) VALID_PIX 
+      0  SAMPLE R1, R1.xy0x, t0, s0
+01 ALU: ADDR(32) CNT(4) 
+      1  x: MUL         R0.x,  R0.x,  R1.x      
+         y: MUL         R0.y,  R0.y,  R1.y      
+         z: MUL         R0.z,  R0.z,  R1.z      
+         w: MUL         R0.w,  R0.w,  R1.w      
+02 EXP_DONE: PIX0, R0
+END_OF_PROGRAM
\ No newline at end of file
diff --git a/misc/wiiu/textured.psh.glsl b/misc/wiiu/textured.psh.glsl
new file mode 100644
index 0000000..71ef45b
--- /dev/null
+++ b/misc/wiiu/textured.psh.glsl
@@ -0,0 +1,9 @@
+varying vec4 out_col;
+varying vec2 out_uv;
+uniform sampler2D texImage;
+
+void main() {
+  vec4 col = texture(texImage, out_uv) * out_col;
+  gl_FragColor = col;
+}
+
diff --git a/misc/wiiu/textured.vsh b/misc/wiiu/textured.vsh
new file mode 100644
index 0000000..dc021e5
--- /dev/null
+++ b/misc/wiiu/textured.vsh
@@ -0,0 +1,55 @@
+; $MODE = "UniformRegister"
+
+; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 1
+; $NUM_SPI_VS_OUT_ID = 1
+; out_colour
+; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0
+; out_uv
+; $SPI_VS_OUT_ID[0].SEMANTIC_1 = 1
+
+; C0
+; $UNIFORM_VARS[0].name = "mvp"
+; $UNIFORM_VARS[0].type = "mat4"
+; $UNIFORM_VARS[0].count = 1
+; $UNIFORM_VARS[0].block = -1
+; $UNIFORM_VARS[0].offset = 0
+
+; R1
+; $ATTRIB_VARS[0].name = "in_pos"
+; $ATTRIB_VARS[0].type = "vec3"
+; $ATTRIB_VARS[0].location = 0
+; R2
+; $ATTRIB_VARS[1].name = "in_col"
+; $ATTRIB_VARS[1].type = "vec4"
+; $ATTRIB_VARS[1].location = 1
+; R3
+; $ATTRIB_VARS[2].name = "in_uv"
+; $ATTRIB_VARS[2].type = "vec2"
+; $ATTRIB_VARS[2].location = 2
+
+; --------  Disassembly --------------------
+00 CALL_FS NO_BARRIER 
+01 ALU: ADDR(32) CNT(20) 
+      0  x: MUL         ____,  C3.y,  1.0f      
+         y: MUL         ____,  C3.x,  1.0f      
+         z: MUL         ____,  C3.w,  1.0f      
+         w: MUL         ____,  C3.z,  1.0f      
+         t: MOV         R0.x,  R3.x      
+      1  x: MULADD      R127.x,  R1.z,  C2.y,  PV0.x      
+         y: MULADD      R127.y,  R1.z,  C2.x,  PV0.y      
+         z: MULADD      R127.z,  R1.z,  C2.w,  PV0.z      
+         w: MULADD      R127.w,  R1.z,  C2.z,  PV0.w
+         t: MOV         R0.y,  R3.y      
+      2  x: MULADD      R127.x,  R1.y,  C1.y,  PV1.x      
+         y: MULADD      R127.y,  R1.y,  C1.x,  PV1.y      
+         z: MULADD      R127.z,  R1.y,  C1.w,  PV1.z      
+         w: MULADD      R127.w,  R1.y,  C1.z,  PV1.w      
+      3  x: MULADD      R1.x,  R1.x,  C0.x,  PV2.y      
+         y: MULADD      R1.y,  R1.x,  C0.y,  PV2.x      
+         z: MULADD      R1.z,  R1.x,  C0.z,  PV2.w      
+         w: MULADD      R1.w,  R1.x,  C0.w,  PV2.z      
+02 EXP_DONE: POS0, R1
+03 EXP: PARAM0, R2  NO_BARRIER 
+04 EXP_DONE: PARAM1, R0.xyzz  NO_BARRIER 
+END_OF_PROGRAM
+
diff --git a/misc/wiiu/textured.vsh.glsl b/misc/wiiu/textured.vsh.glsl
new file mode 100644
index 0000000..d7a805d
--- /dev/null
+++ b/misc/wiiu/textured.vsh.glsl
@@ -0,0 +1,12 @@
+attribute vec3 in_pos;
+attribute vec4 in_col;
+attribute vec2 in_uv;
+varying vec4 out_col;
+varying vec2 out_uv;
+uniform mat4 mvp;
+
+void main() {
+  gl_Position = mvp * vec4(in_pos, 1.0);
+  out_col = in_col;
+  out_uv  = in_uv;
+}
diff --git a/misc/wiiu/textured_offset.vsh b/misc/wiiu/textured_offset.vsh
new file mode 100644
index 0000000..e750be6
--- /dev/null
+++ b/misc/wiiu/textured_offset.vsh
@@ -0,0 +1,64 @@
+; $MODE = "UniformRegister"
+
+; $SPI_VS_OUT_CONFIG.VS_EXPORT_COUNT = 1
+; $NUM_SPI_VS_OUT_ID = 1
+; out_colour
+; $SPI_VS_OUT_ID[0].SEMANTIC_0 = 0
+; out_uv
+; $SPI_VS_OUT_ID[0].SEMANTIC_1 = 1
+
+; C0
+; $UNIFORM_VARS[0].name = "mvp"
+; $UNIFORM_VARS[0].type = "mat4"
+; $UNIFORM_VARS[0].count = 1
+; $UNIFORM_VARS[0].block = -1
+; $UNIFORM_VARS[0].offset = 0
+; C4 (MIGHT BE WRONG AND SHOULD BE [3] instead??? )
+; $UNIFORM_VARS[1].name = "texOffset"
+; $UNIFORM_VARS[1].type = "vec2"
+; $UNIFORM_VARS[1].count = 1
+; $UNIFORM_VARS[1].block = -1
+; $UNIFORM_VARS[1].offset = 0
+
+; R1
+; $ATTRIB_VARS[0].name = "in_pos"
+; $ATTRIB_VARS[0].type = "vec3"
+; $ATTRIB_VARS[0].location = 0
+; R2
+; $ATTRIB_VARS[1].name = "in_col"
+; $ATTRIB_VARS[1].type = "vec4"
+; $ATTRIB_VARS[1].location = 1
+; R3
+; $ATTRIB_VARS[2].name = "in_uv"
+; $ATTRIB_VARS[2].type = "vec2"
+; $ATTRIB_VARS[2].location = 2
+
+; --------  Disassembly --------------------
+00 CALL_FS NO_BARRIER 
+01 ALU: ADDR(32) CNT(18) 
+      0  x: MUL         ____,  C3.y,  1.0f      
+         y: MUL         ____,  C3.x,  1.0f      
+         z: MUL         ____,  C3.w,  1.0f      
+         w: MUL         ____,  C3.z,  1.0f      
+      1  x: MULADD      R127.x,  R2.z,  C2.y,  PV0.x      
+         y: MULADD      R127.y,  R2.z,  C2.x,  PV0.y      
+         z: MULADD      R127.z,  R2.z,  C2.w,  PV0.z      
+         w: MULADD      R127.w,  R2.z,  C2.z,  PV0.w      
+      2  x: MULADD      R127.x,  R2.y,  C1.y,  PV1.x      
+         y: MULADD      R127.y,  R2.y,  C1.x,  PV1.y      
+         z: MULADD      R127.z,  R2.y,  C1.w,  PV1.z      
+         w: MULADD      R127.w,  R2.y,  C1.z,  PV1.w      
+      3  x: MULADD      R2.x,  R2.x,  C0.x,  PV2.y      
+         y: MULADD      R2.y,  R2.x,  C0.y,  PV2.x      
+         z: MULADD      R2.z,  R2.x,  C0.z,  PV2.w      
+         w: MULADD      R2.w,  R2.x,  C0.w,  PV2.z      
+      4  x: ADD         R3.x,  R3.x,  C4.x      
+         y: ADD         R3.y,  R3.y,  C4.y      
+02 EXP_DONE: POS0, R2
+03 EXP: PARAM0, R1  NO_BARRIER 
+04 EXP_DONE: PARAM1, R3.xyzz  NO_BARRIER 
+05 ALU: ADDR(50) CNT(1) 
+      5  x: NOP         ____      
+06 NOP NO_BARRIER 
+END_OF_PROGRAM
+
diff --git a/misc/wiiu/textured_offset.vsh.glsl b/misc/wiiu/textured_offset.vsh.glsl
new file mode 100644
index 0000000..7248768
--- /dev/null
+++ b/misc/wiiu/textured_offset.vsh.glsl
@@ -0,0 +1,13 @@
+attribute vec3 in_pos;
+attribute vec4 in_col;
+attribute vec2 in_uv;
+varying vec4 out_col;
+varying vec2 out_uv;
+uniform mat4 mvp;
+uniform vec2 texOffset;
+
+void main() {
+  gl_Position = mvp * vec4(in_pos, 1.0);
+  out_col = in_col;
+  out_uv  = in_uv + texOffset;
+}
\ No newline at end of file
diff --git a/misc/windows/CCicon.rc b/misc/windows/CCicon.rc
new file mode 100644
index 0000000..6c0d8cd
--- /dev/null
+++ b/misc/windows/CCicon.rc
@@ -0,0 +1 @@
+1 ICON "../CCicon.ico"
diff --git a/misc/windows/CCicon_32.res b/misc/windows/CCicon_32.res
new file mode 100644
index 0000000..7a25402
--- /dev/null
+++ b/misc/windows/CCicon_32.res
Binary files differdiff --git a/misc/windows/CCicon_64.res b/misc/windows/CCicon_64.res
new file mode 100644
index 0000000..fb3cf5f
--- /dev/null
+++ b/misc/windows/CCicon_64.res
Binary files differdiff --git a/misc/windows/D3D11ShaderGen.c b/misc/windows/D3D11ShaderGen.c
new file mode 100644
index 0000000..8617f34
--- /dev/null
+++ b/misc/windows/D3D11ShaderGen.c
@@ -0,0 +1,186 @@
+#define _WIN32_WINNT 0x600
+#define COBJMACROS
+#include <stdio.h>
+#include <d3dcompiler.h>
+
+#define GetBlobPointer ID3D10Blob_GetBufferPointer
+#define GetBlobSize    ID3D10Blob_GetBufferSize
+#pragma comment(lib,"d3dcompiler.lib")
+
+static const char VS_SOURCE[] =
+"float4x4 mvpMatrix;                                                \n" \
+"#ifdef VS_TEXTURE_OFFSET                                           \n" \
+"float2 texOffset;                                                  \n" \
+"#endif                                                             \n" \
+"                                                                   \n" \
+"struct INPUT_VERTEX {                                              \n" \
+"   float3 position : POSITION;                                     \n" \
+"   float4 color : COLOR0;                                          \n" \
+"#ifndef VS_COLOR_ONLY                                              \n" \
+"   float2 coords : TEXCOORD0;                                      \n" \
+"#endif                                                             \n" \
+"};                                                                 \n" \
+"struct OUTPUT_VERTEX {                                             \n" \
+"#ifndef VS_COLOR_ONLY                                              \n" \
+"   float2 coords : TEXCOORD0;                                      \n" \
+"#endif                                                             \n" \
+"   float4 color : COLOR0;                                          \n" \
+"   float4 position : VPOS;                                         \n" \
+"};                                                                 \n" \
+"                                                                   \n" \
+"OUTPUT_VERTEX main(INPUT_VERTEX input) {                           \n" \
+"   OUTPUT_VERTEX output;                                           \n" \
+"   // https://stackoverflow.com/questions/16578765/hlsl-mul-variables-clarification \n" \
+"   output.position = mul(mvpMatrix, float4(input.position, 1.0f)); \n" \
+"#ifndef VS_COLOR_ONLY                                              \n" \
+"   output.coords = input.coords;                                   \n" \
+"#endif                                                             \n" \
+"#ifdef VS_TEXTURE_OFFSET                                           \n" \
+"   output.coords += texOffset;                                     \n" \
+"#endif                                                             \n" \
+"   output.color = input.color;                                     \n" \
+"   return output;                                                  \n" \
+"}";
+
+static const char PS_SOURCE[] =
+"#ifndef PS_COLOR_ONLY                                              \n" \
+"Texture2D    texValue;                                             \n" \
+"SamplerState texState;                                             \n" \
+"#endif                                                             \n" \
+"#ifdef PS_FOG_LINEAR                                               \n" \
+"float  fogEnd;                                                     \n" \
+"float3 fogColor;                                                   \n" \
+"#endif                                                             \n" \
+"#ifdef PS_FOG_DENSITY                                              \n" \
+"float  fogDensity;                                                 \n" \
+"float3 fogColor;                                                   \n" \
+"#endif                                                             \n" \
+"                                                                   \n" \
+"struct INPUT_VERTEX {                                              \n" \
+"#ifndef PS_COLOR_ONLY                                              \n" \
+"   float2 coords : TEXCOORD0;                                      \n" \
+"#endif                                                             \n" \
+"   float4 color : COLOR0;                                          \n" \
+"#ifdef PS_FOG_LINEAR                                               \n" \
+"   float4 position : VPOS;                                         \n" \
+"#endif                                                             \n" \
+"#ifdef PS_FOG_DENSITY                                              \n" \
+"   float4 position : VPOS;                                         \n" \
+"#endif                                                             \n" \
+"};                                                                 \n" \
+"                                                                   \n" \
+"//float4 main(float2 coords : TEXCOORD0, float4 color : COLOR0) : SV_TARGET {\n" \
+"float4 main(INPUT_VERTEX input) : SV_TARGET{                       \n" \
+"   float4 color;                                                   \n" \
+"#ifdef PS_COLOR_ONLY                                               \n" \
+"   color = input.color;                                            \n" \
+"#else                                                              \n" \
+"   float4 texColor = texValue.Sample(texState, input.coords);      \n" \
+"   color = texColor * input.color;                                 \n" \
+"#endif                                                             \n" \
+"                                                                   \n" \
+"#ifdef PS_ALPHA_TEST                                               \n" \
+"   // https://jbrd.github.io/2008/02/14/hlsl-discard-doesnt-return.html \n" \
+"   if (color.a < 0.5) { discard; return color; }                   \n" \
+"#endif                                                             \n" \
+"#ifdef PS_FOG_LINEAR                                               \n" \
+"   float depth = input.position.w;                                 \n" \
+"   float fog   = saturate((fogEnd - depth) / fogEnd);              \n" \
+"   color.rgb   = lerp(fogColor, color.rgb, fog);                   \n" \
+"#endif                                                             \n" \
+"#ifdef PS_FOG_DENSITY                                              \n" \
+"   float depth = input.position.w;                                 \n" \
+"   float fog   = saturate(exp(fogDensity * depth));                \n" \
+"   color.rgb   = lerp(fogColor, color.rgb, fog);                   \n" \
+"#endif                                                             \n" \
+"   return color;                                                   \n" \
+"}";
+
+static void CompileShader(LPCSTR src, LPCSTR name, LPCSTR profile, const D3D_SHADER_MACRO* defines) {
+	UINT flags = D3DCOMPILE_ENABLE_STRICTNESS | D3DCOMPILE_OPTIMIZATION_LEVEL1;// | D3DCOMPILE_DEBUG;
+    ID3DBlob* shaderBlob = NULL;
+    ID3DBlob* errorBlob  = NULL;
+    HRESULT hr = D3DCompile(src, strlen(src), name, defines, D3D_COMPILE_STANDARD_FILE_INCLUDE,
+                            "main", profile, flags, 0, &shaderBlob, &errorBlob );
+
+	if (hr && errorBlob) {
+		char* errText = (char*)GetBlobPointer(errorBlob);
+		OutputDebugStringA(errText);
+		printf("// Compiling %s failed\n", name);
+		printf("//   %s\n", errText);
+	}
+	if (hr) {
+		printf("// Compiling %s failed - %08X\n", name, hr);
+		return;
+	}
+
+	unsigned char* data = GetBlobPointer(shaderBlob);
+	SIZE_T size         = GetBlobSize(shaderBlob);
+	printf("static const unsigned char %s[%i] = {\n", name, size);
+
+	for (int i = 0; i < size; )
+	{
+		int count = min(size - i, 32);
+		printf("\t");
+		for (int j = 0; j < count; j++)
+		{
+			printf("0x%02x,", data[i + j]);
+		}
+		printf("\n");
+		i += count;
+	}
+	printf("};\n");
+}
+
+#define CompileVertexShader(name, defines) CompileShader(VS_SOURCE, name, "vs_4_0_level_9_1", defines)
+#define CompilePixelShader( name, defines) CompileShader(PS_SOURCE, name, "ps_4_0_level_9_1", defines)
+int main() {
+	const D3D_SHADER_MACRO vs_colored[]  = { "VS_COLOR_ONLY","1",  NULL,NULL };
+	const D3D_SHADER_MACRO vs_textured[] = {                       NULL,NULL };
+	const D3D_SHADER_MACRO vs_offset[]   = { "VS_TEXTURE_OFFSET","1",  NULL,NULL };
+
+	const D3D_SHADER_MACRO ps_colored[]       = { "PS_COLOR_ONLY","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured[]      = {                       NULL,NULL };
+	const D3D_SHADER_MACRO ps_colored_test[]  = { "PS_COLOR_ONLY","1",  "PS_ALPHA_TEST","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured_test[] = {                       "PS_ALPHA_TEST","1",  NULL,NULL };
+
+	const D3D_SHADER_MACRO ps_colored_linear[]       = { "PS_FOG_LINEAR","1",  "PS_COLOR_ONLY","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured_linear[]      = { "PS_FOG_LINEAR","1",                        NULL,NULL };
+	const D3D_SHADER_MACRO ps_colored_test_linear[]  = { "PS_FOG_LINEAR","1",  "PS_COLOR_ONLY","1",  "PS_ALPHA_TEST","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured_test_linear[] = { "PS_FOG_LINEAR","1",                        "PS_ALPHA_TEST","1",  NULL,NULL };
+
+	const D3D_SHADER_MACRO ps_colored_density[]       = { "PS_FOG_DENSITY","1",  "PS_COLOR_ONLY","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured_density[]      = { "PS_FOG_DENSITY","1",                        NULL,NULL };
+	const D3D_SHADER_MACRO ps_colored_test_density[]  = { "PS_FOG_DENSITY","1",  "PS_COLOR_ONLY","1",  "PS_ALPHA_TEST","1",  NULL,NULL };
+	const D3D_SHADER_MACRO ps_textured_test_density[] = { "PS_FOG_DENSITY","1",                        "PS_ALPHA_TEST","1",  NULL,NULL };
+
+	printf("// Generated using misc/D3D11ShaderGen.c\n\n");
+	printf("//########################################################################################################################\n");
+	printf("//------------------------------------------------------Vertex shaders----------------------------------------------------\n");
+	printf("//########################################################################################################################\n");
+	CompileVertexShader("vs_colored",         vs_colored);
+	CompileVertexShader("vs_textured",        vs_textured);
+	CompileVertexShader("vs_textured_offset", vs_offset);
+
+	printf("\n\n");
+	printf("//########################################################################################################################\n");
+	printf("//------------------------------------------------------Pixel shaders-----------------------------------------------------\n");
+	printf("//########################################################################################################################\n");
+	CompilePixelShader("ps_colored",       ps_colored);
+	CompilePixelShader("ps_textured",      ps_textured);
+	CompilePixelShader("ps_colored_test",  ps_colored_test);
+	CompilePixelShader("ps_textured_test", ps_textured_test);
+
+	CompilePixelShader("ps_colored_linear",       ps_colored_linear);
+	CompilePixelShader("ps_textured_linear",      ps_textured_linear);
+	CompilePixelShader("ps_colored_test_linear",  ps_colored_test_linear);
+	CompilePixelShader("ps_textured_test_linear", ps_textured_test_linear);
+
+	CompilePixelShader("ps_colored_density",       ps_colored_density);
+	CompilePixelShader("ps_textured_density",      ps_textured_density);
+	CompilePixelShader("ps_colored_test_density",  ps_colored_test_density);
+	CompilePixelShader("ps_textured_test_density", ps_textured_test_density);
+
+	//Sleep(5000);
+	return 0;
+}
diff --git a/misc/windows/D3D11Shaders.h b/misc/windows/D3D11Shaders.h
new file mode 100644
index 0000000..838384e
--- /dev/null
+++ b/misc/windows/D3D11Shaders.h
@@ -0,0 +1,449 @@
+// Generated using misc/D3D11ShaderGen.c
+
+//########################################################################################################################
+//------------------------------------------------------Vertex shaders----------------------------------------------------
+//########################################################################################################################
+static const unsigned char vs_colored[804] = {
+	0x44,0x58,0x42,0x43,0x1a,0x76,0x9d,0x56,0x98,0x2d,0x30,0x9a,0x2f,0x00,0xd8,0xb0,0x6d,0xda,0x7a,0x6b,0x01,0x00,0x00,0x00,0x24,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x50,0x01,0x00,0x00,0xa4,0x01,0x00,0x00,0xa8,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0x94,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab,
+	0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,
+	0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,
+	0x49,0x53,0x47,0x4e,0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,
+	0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,
+	0x4e,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xfc,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x3f,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,
+	0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,
+	0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,
+	0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
+	0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,
+};
+static const unsigned char vs_textured[912] = {
+	0x44,0x58,0x42,0x43,0x05,0x38,0x0a,0xc5,0x5e,0x15,0x86,0xef,0xa6,0xbc,0xb1,0x6a,0x8b,0x6c,0xf4,0x1e,0x01,0x00,0x00,0x00,0x90,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0xe4,0x01,0x00,0x00,0x14,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xc4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0x94,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab,
+	0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,
+	0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,
+	0x49,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,
+	0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,
+	0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x4f,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
+	0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,
+	0x4f,0x4e,0x00,0xab,0x53,0x48,0x44,0x52,0x28,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x4a,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x04,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,
+	0x32,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char vs_textured_offset[976] = {
+	0x44,0x58,0x42,0x43,0x5c,0x17,0x5e,0xed,0xce,0x9c,0xa2,0x40,0x5c,0x3e,0x7c,0x93,0xb5,0xed,0x14,0x40,0x01,0x00,0x00,0x00,0xd0,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0xa4,0x01,0x00,0x00,0x18,0x02,0x00,0x00,0x54,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6d,0x76,0x70,0x4d,0x61,0x74,0x72,0x69,0x78,0x00,0xab,0xab,0x03,0x00,0x03,0x00,0x04,0x00,0x04,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x4f,0x66,0x66,0x73,0x65,0x74,0x00,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,
+	0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00,0x00,0x59,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x54,0x45,0x58,0x43,0x4f,
+	0x4f,0x52,0x44,0x00,0x4f,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x0f,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,
+	0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x53,0x48,0x44,0x52,0x34,0x01,0x00,0x00,
+	0x40,0x00,0x01,0x00,0x4d,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x72,0x10,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,
+	0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x02,0x00,0x00,0x00,
+	0x46,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x08,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x15,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0xa6,0x1a,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+
+
+//########################################################################################################################
+//------------------------------------------------------Pixel shaders-----------------------------------------------------
+//########################################################################################################################
+static const unsigned char ps_colored[424] = {
+	0x44,0x58,0x42,0x43,0x16,0x20,0x1a,0xbf,0xc8,0x73,0x21,0xb1,0xcb,0xa1,0x3a,0x9c,0xc5,0xa5,0x36,0x55,0x01,0x00,0x00,0x00,0xa8,0x01,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xec,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x1c,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,
+	0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,
+	0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
+	0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x38,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x62,0x10,0x00,0x03,
+	0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured[632] = {
+	0x44,0x58,0x42,0x43,0x6b,0x07,0x3a,0x46,0xe7,0x48,0xcd,0xc6,0x61,0xf4,0x31,0x00,0x4d,0xa2,0x88,0x52,0x01,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0xdc,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x60,0x01,0x00,0x00,0xfc,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x6e,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,
+	0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0xab,0xab,0x49,0x53,0x47,0x4e,
+	0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x03,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,
+	0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,
+	0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,
+	0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,
+	0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,
+	0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_colored_test[512] = {
+	0x44,0x58,0x42,0x43,0x96,0x8a,0x87,0x09,0x0b,0x87,0x03,0xec,0x5f,0xc8,0x2e,0xe4,0x75,0xae,0x39,0xc8,0x01,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0xec,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x1c,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,
+	0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,
+	0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x28,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
+	0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x90,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x62,0x10,0x00,0x03,
+	0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,
+	0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured_test[732] = {
+	0x44,0x58,0x42,0x43,0x79,0x06,0x95,0x54,0x09,0x72,0xe5,0xe5,0x96,0x93,0xa5,0x15,0x18,0x9d,0xd3,0x7e,0x01,0x00,0x00,0x00,0xdc,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0xdc,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x60,0x01,0x00,0x00,0x60,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x6e,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x65,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,
+	0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0xab,0xab,0x49,0x53,0x47,0x4e,
+	0x48,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x03,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,
+	0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,
+	0x53,0x48,0x44,0x52,0xf8,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,
+	0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,
+	0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,
+	0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_colored_linear[812] = {
+	0x44,0x58,0x42,0x43,0x4d,0x07,0xb0,0xb7,0x92,0xe8,0xd5,0x3f,0x71,0x68,0x19,0x03,0x90,0x20,0xa6,0x6d,0x01,0x00,0x00,0x00,0x2c,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x84,0x01,0x00,0x00,0xb8,0x01,0x00,0x00,0xb0,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xf4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0xb4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,
+	0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,
+	0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xf0,0x00,0x00,0x00,
+	0x40,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured_linear[1036] = {
+	0x44,0x58,0x42,0x43,0xea,0x4f,0xef,0xd5,0x7f,0x41,0x2e,0x1b,0xb7,0x39,0xd9,0x13,0x36,0xaf,0xbb,0x5a,0x01,0x00,0x00,0x00,0x0c,0x04,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xf4,0x01,0x00,0x00,0x28,0x02,0x00,0x00,0x90,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x14,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,
+	0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xe8,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,
+	0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,
+	0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,
+	0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,
+	0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,
+	0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
+	0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,
+	0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x60,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x64,0x20,0x00,0x04,
+	0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x09,0x10,0x00,0x01,0x00,0x00,0x00,0x06,0x19,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_colored_test_linear[892] = {
+	0x44,0x58,0x42,0x43,0x8a,0xcb,0x96,0x93,0x3f,0x48,0x28,0x07,0x96,0x55,0xae,0xf3,0xd3,0x7b,0xa5,0x81,0x01,0x00,0x00,0x00,0x7c,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x84,0x01,0x00,0x00,0xb8,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf4,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc4,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0xb4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,
+	0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,
+	0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x40,0x01,0x00,0x00,
+	0x40,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,
+	0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,
+	0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x12,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,0x41,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,
+	0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
+	0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,
+	0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured_test_linear[1116] = {
+	0x44,0x58,0x42,0x43,0x1d,0x79,0x4f,0x31,0xfb,0x7d,0xd0,0xf9,0x3d,0xad,0x4f,0xc0,0xb9,0xbe,0x19,0x8b,0x01,0x00,0x00,0x00,0x5c,0x04,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0xf4,0x01,0x00,0x00,0x28,0x02,0x00,0x00,0xe0,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x44,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x14,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,
+	0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xe8,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x45,
+	0x6e,0x64,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,
+	0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,
+	0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,
+	0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,
+	0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
+	0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,
+	0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xb0,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x6c,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x64,0x20,0x00,0x04,
+	0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x02,0x00,0x00,0x00,
+	0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x31,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,
+	0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x0e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x80,
+	0x41,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x20,0x00,0x08,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0x72,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x12,0x10,0x00,0x01,0x00,0x00,0x00,0x96,0x87,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0xf6,0x0f,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,
+	0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_colored_density[856] = {
+	0x44,0x58,0x42,0x43,0x9c,0xb3,0xe5,0x3c,0x3d,0x38,0xc9,0xc6,0x6e,0x98,0xfc,0xe6,0x28,0x0a,0xcd,0x79,0x01,0x00,0x00,0x00,0x58,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0xdc,0x02,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,
+	0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,
+	0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,
+	0x18,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,
+	0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,
+	0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,
+	0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,
+	0x74,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured_density[1080] = {
+	0x44,0x58,0x42,0x43,0xc0,0x13,0x86,0xc6,0xba,0x6d,0x77,0x79,0x76,0x05,0x6f,0x20,0x79,0xb9,0x5d,0x48,0x01,0x00,0x00,0x00,0x38,0x04,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x2c,0x02,0x00,0x00,0xbc,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0x48,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x18,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,
+	0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xec,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,
+	0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,
+	0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,
+	0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,
+	0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,
+	0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
+	0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x88,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x62,0x00,0x00,0x00,0x59,0x00,0x00,0x04,
+	0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,
+	0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x08,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,
+	0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x10,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0b,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x06,0x09,0x10,0x00,0x01,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x01,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x38,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,
+	0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,
+	0x74,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_colored_test_density[936] = {
+	0x44,0x58,0x42,0x43,0x8b,0xbd,0x84,0x52,0xb8,0xfa,0xa4,0x23,0x37,0x6a,0xff,0xe0,0x97,0x76,0x5b,0xe3,0x01,0x00,0x00,0x00,0xa8,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0x2c,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xf8,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0xc8,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,
+	0x00,0xab,0xab,0xab,0x3c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,
+	0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x4c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x3e,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,
+	0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,
+	0x68,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x62,0x10,0x00,0x03,
+	0xf2,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x00,0x04,0x03,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,
+	0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x38,0x00,0x00,0x08,
+	0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,
+	0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x12,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x12,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x09,0xe2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x19,0x10,0x00,0x00,0x00,0x00,0x00,0x56,0x8e,0x20,0x80,
+	0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x96,0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3a,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+static const unsigned char ps_textured_test_density[1160] = {
+	0x44,0x58,0x42,0x43,0xbd,0x21,0xa2,0x31,0xd8,0x5a,0x9a,0x36,0xba,0x5b,0x4d,0xde,0x22,0x7e,0xc8,0x19,0x01,0x00,0x00,0x00,0x88,0x04,0x00,0x00,0x05,0x00,0x00,0x00,
+	0x34,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x2c,0x02,0x00,0x00,0x0c,0x04,0x00,0x00,0x52,0x44,0x45,0x46,0x48,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x98,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,0x00,0x09,0x00,0x00,0x18,0x01,0x00,0x00,0x7c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
+	0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x53,0x74,0x61,0x74,0x65,
+	0x00,0x74,0x65,0x78,0x56,0x61,0x6c,0x75,0x65,0x00,0x24,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x00,0xab,0x8e,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,
+	0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0xec,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x44,
+	0x65,0x6e,0x73,0x69,0x74,0x79,0x00,0xab,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x6f,0x67,0x43,0x6f,0x6c,0x6f,0x72,
+	0x00,0xab,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,
+	0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x30,0x2e,0x31,0x30,0x30,0x31,
+	0x31,0x2e,0x30,0x00,0x49,0x53,0x47,0x4e,0x6c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+	0x0f,0x0f,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0f,0x08,0x00,0x00,0x54,0x45,0x58,0x43,
+	0x4f,0x4f,0x52,0x44,0x00,0x43,0x4f,0x4c,0x4f,0x52,0x00,0x53,0x56,0x5f,0x50,0x4f,0x53,0x49,0x54,0x49,0x4f,0x4e,0x00,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,
+	0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
+	0x53,0x56,0x5f,0x54,0x41,0x52,0x47,0x45,0x54,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0xd8,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x76,0x00,0x00,0x00,0x59,0x00,0x00,0x04,
+	0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,
+	0x64,0x20,0x00,0x04,0x82,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,
+	0x02,0x00,0x00,0x00,0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0xf2,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,
+	0x01,0x00,0x00,0x00,0x31,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x3f,
+	0x1f,0x00,0x04,0x03,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x04,0x03,0x01,0x40,0x00,0x00,0xff,0xff,0xff,0xff,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x46,0x0e,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x15,0x00,0x00,0x01,0x38,0x00,0x00,0x08,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3a,0x10,0x10,0x00,0x02,0x00,0x00,0x00,0x0a,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x3b,0xaa,0xb8,0x3f,0x19,0x00,0x00,0x05,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,
+	0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x07,0x82,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x3a,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x80,0x3f,
+	0x32,0x00,0x00,0x0b,0x72,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x12,0x10,0x00,0x01,0x00,0x00,0x00,0x96,0x87,0x20,0x80,
+	0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x0a,0x72,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0xf6,0x0f,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x46,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x96,0x87,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x82,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
+	0x3a,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
diff --git a/misc/xbox/Makefile b/misc/xbox/Makefile
new file mode 100644
index 0000000..f3a7985
--- /dev/null
+++ b/misc/xbox/Makefile
@@ -0,0 +1,13 @@
+ifeq ($(strip $(NXDK_DIR)),)
+$(error "Please set NXDK_DIR in your environment")
+endif
+
+XBE_TITLE 	= ClassiCube
+GEN_XISO 	= ClassiCube-xbox.iso
+SRCS 		= $(wildcard src/*.c) $(wildcard third_party/bearssl/src/*.c)
+SHADER_OBJS = misc/xbox/vs_coloured.inl misc/xbox/vs_textured.inl misc/xbox/ps_coloured.inl misc/xbox/ps_textured.inl
+NXDK_NET 	= y
+NXDK_CFLAGS = -Ithird_party/bearssl/inc -O1
+NXDK_LDFLAGS = -stack:196608
+
+include $(NXDK_DIR)/Makefile
\ No newline at end of file
diff --git a/misc/xbox/ps_coloured.ps.cg b/misc/xbox/ps_coloured.ps.cg
new file mode 100644
index 0000000..aec8b40
--- /dev/null
+++ b/misc/xbox/ps_coloured.ps.cg
@@ -0,0 +1,10 @@
+struct vOut {
+	float4 color : COLOR;
+};
+
+float4 main(
+		vOut input
+	) : COLOR
+{
+	return input.color;
+}
diff --git a/misc/xbox/ps_textured.ps.cg b/misc/xbox/ps_textured.ps.cg
new file mode 100644
index 0000000..19d4f9e
--- /dev/null
+++ b/misc/xbox/ps_textured.ps.cg
@@ -0,0 +1,12 @@
+struct vOut {
+	float4 color : COLOR;
+	float2 tex0  : TEXCOORD0;
+};
+
+float4 main(
+		vOut input,
+		uniform sampler2D tex
+	) : COLOR
+{
+	return tex2D(tex, input.tex0.xy) * input.color;
+}
diff --git a/misc/xbox/vs_coloured.vs.cg b/misc/xbox/vs_coloured.vs.cg
new file mode 100644
index 0000000..f006be4
--- /dev/null
+++ b/misc/xbox/vs_coloured.vs.cg
@@ -0,0 +1,33 @@
+struct vIn {
+	float4 color    : DIFFUSE;
+	float4 position : POSITION;
+};
+
+struct vOut {
+	float4 col : COLOR;
+	float4 pos : POSITION;
+};
+
+vOut main(
+	vIn              input,
+	uniform float4x4 mvp,
+	uniform float4 vp_scale,
+	uniform float4 vp_offset
+	)
+{
+	vOut   result;
+	float4 position;
+
+	position = float4(input.position.xyz, 1.0f);
+	position = mul(position, mvp);
+	position.xyz = position.xyz / position.w;
+	
+	position.x = position.x * vp_scale.x + vp_offset.x;
+	position.y = position.y * vp_scale.y + vp_offset.y;
+	position.z = position.z * vp_scale.z + vp_offset.z;
+	//position.w =  1.0 / half_viewport.w;
+	
+	result.pos = position;
+	result.col = input.color;
+	return result;
+}
diff --git a/misc/xbox/vs_textured.vs.cg b/misc/xbox/vs_textured.vs.cg
new file mode 100644
index 0000000..2e3b39b
--- /dev/null
+++ b/misc/xbox/vs_textured.vs.cg
@@ -0,0 +1,36 @@
+struct vIn {
+	float4 tex      : TEXCOORD;
+	float4 color    : DIFFUSE;
+	float4 position : POSITION;
+};
+
+struct vOut {
+	float4 pos : POSITION;
+	float4 col : COLOR;
+	float4 tex : TEXCOORD0;
+};
+
+vOut main(
+	vIn              input,
+	uniform float4x4 mvp,
+	uniform float4 vp_scale,
+	uniform float4 vp_offset
+	)
+{
+	vOut   result;
+	float4 position;
+
+	position = float4(input.position.xyz, 1.0f);
+	position = mul(position, mvp);
+	position.xyz = position.xyz / position.w;
+	
+	position.x = position.x * vp_scale.x + vp_offset.x;
+	position.y = position.y * vp_scale.y + vp_offset.y;
+	position.z = position.z * vp_scale.z + vp_offset.z;
+	//position.w =  1.0 / half_viewport.w;
+	
+	result.pos = position;
+	result.col = input.color;
+	result.tex = input.tex;
+	return result;
+}
diff --git a/misc/xbox360/Makefile b/misc/xbox360/Makefile
new file mode 100644
index 0000000..1438c4d
--- /dev/null
+++ b/misc/xbox360/Makefile
@@ -0,0 +1,117 @@
+#---------------------------------------------------------------------------------
+# Clear the implicit built in rules
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+
+#---------------------------------------------------------------------------------
+ifeq ($(strip $(DEVKITXENON)),)
+$(error "Please set DEVKITXENON in your environment. export DEVKITXENON=<path to>devkitPPC")
+endif
+
+#---------------------------------------------------------------------------------
+export LIBXENON_INC	:= $(DEVKITXENON)/usr/include
+export LIBXENON_LIB	:= $(DEVKITXENON)/usr/lib
+LDSCRIPT 			:= $(DEVKITXENON)/app.lds
+
+MACHDEP = -DXENON -m32 -maltivec -fno-pic -mpowerpc64 -mhard-float -L$(DEVKITXENON)/xenon/lib/32
+
+export AS		:= xenon-as
+export CC		:= xenon-gcc
+export CXX		:= xenon-g++
+export AR       := xenon-ar
+
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output
+# BUILD is the directory where object files & intermediate files will be placed
+# SOURCES is a list of directories containing source code
+# INCLUDES is a list of directories containing extra header files
+#---------------------------------------------------------------------------------
+TARGET		:=	ClassiCube-xbox360
+BUILD		:=	build-360
+SOURCES		:=	src
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+
+CFLAGS	= -g -O2 -Wall $(MACHDEP) $(INCLUDE)
+CXXFLAGS=	$(CFLAGS)
+
+LDFLAGS	=	-g $(MACHDEP) -Wl,--gc-sections -Wl,-Map,$(notdir $@).map
+
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS	:=	-lxenon -lm
+
+#---------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level containing
+# include and lib
+#---------------------------------------------------------------------------------
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+
+export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+
+export DEPSDIR	:=	$(CURDIR)/$(BUILD)
+
+#---------------------------------------------------------------------------------
+# automatically build a list of object files for our project
+#---------------------------------------------------------------------------------
+CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
+
+export LD		:=	$(CC)
+export OFILES	:=	$(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
+
+#---------------------------------------------------------------------------------
+# build a list of include paths
+#---------------------------------------------------------------------------------
+export INCLUDE	:= -I$(LIBXENON_INC)
+
+#---------------------------------------------------------------------------------
+# build a list of library paths
+#---------------------------------------------------------------------------------
+export LIBPATHS	:= -L$(LIBXENON_LIB)
+
+export OUTPUT	:=	$(CURDIR)/$(TARGET)
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+$(OUTPUT).elf32: $(OUTPUT).elf
+$(OUTPUT).elf: $(OFILES)
+
+default: $(BUILD) $(OUTPUT).elf32
+	cp $(OUTPUT).elf32 /tftpboot/xenon
+	xenon-strip /tftpboot/xenon
+
+
+#---------------------------------------------------------------------------------
+$(BUILD):
+	@[ -d $@ ] || mkdir -p $@
+
+#---------------------------------------------------------------------------------
+clean:
+	@echo clean ...
+	@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).elf32
+	
+#---------------------------------------------------------------------------------
+%.o: %.c
+	@$(CC) $(CFLAGS) -c $< -o $@
+
+%.o: %.s
+	@$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@
+
+%.o: %.S
+	@$(CC) -x assembler-with-cpp $(ASFLAGS) -c $< -o $@
+
+%.elf:
+	@echo linking ... $(notdir $@)
+	@$(LD)  $^ $(LDFLAGS) $(LIBPATHS) $(LIBS) -n -T $(LDSCRIPT) -o $@
+
+%.elf32: %.elf
+	@echo converting and stripping ... $(notdir $@)
+	@xenon-objcopy -O elf32-powerpc --adjust-vma 0x80000000 $< $@
+	@xenon-strip $@
diff --git a/misc/xbox360/ps_coloured.bin b/misc/xbox360/ps_coloured.bin
new file mode 100644
index 0000000..5495b5d
--- /dev/null
+++ b/misc/xbox360/ps_coloured.bin
Binary files differdiff --git a/misc/xbox360/ps_coloured.h b/misc/xbox360/ps_coloured.h
new file mode 100644
index 0000000..a48a75c
--- /dev/null
+++ b/misc/xbox360/ps_coloured.h
@@ -0,0 +1,19 @@
+const char ps_coloured[160] = {
+	0x10, 0x2a, 0x11, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 
+	0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1c, 
+	0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x1c, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x32, 0x2e, 
+	0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, 0x30, 0x00, 0xab, 0xab, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x10, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x10, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 
+	0x00, 0xf0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xc4, 0x00, 
+	0x22, 0x00, 0x00, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const int ps_coloured_length = 160;
diff --git a/misc/xbox360/ps_coloured.hlsl b/misc/xbox360/ps_coloured.hlsl
new file mode 100644
index 0000000..19a5568
--- /dev/null
+++ b/misc/xbox360/ps_coloured.hlsl
@@ -0,0 +1,7 @@
+struct INPUT_VERTEX {
+   float4 col : COLOR0;
+};
+
+float4 main(INPUT_VERTEX input) : COLOR0 {
+	return input.col;
+}
\ No newline at end of file
diff --git a/misc/xbox360/ps_textured.bin b/misc/xbox360/ps_textured.bin
new file mode 100644
index 0000000..20e28f0
--- /dev/null
+++ b/misc/xbox360/ps_textured.bin
Binary files differdiff --git a/misc/xbox360/ps_textured.h b/misc/xbox360/ps_textured.h
new file mode 100644
index 0000000..17a0131
--- /dev/null
+++ b/misc/xbox360/ps_textured.h
@@ -0,0 +1,25 @@
+const char ps_textured[228] = {
+	0x10, 0x2a, 0x11, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 
+	0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x1c, 
+	0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x44, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 
+	0x73, 0x00, 0xab, 0xab, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 
+	0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 
+	0x5f, 0x33, 0x5f, 0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, 
+	0x31, 0x34, 0x2e, 0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x3c, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 
+	0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x42, 0x00, 0x01, 
+	0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x30, 0x50, 0x00, 
+	0x00, 0xf1, 0xa0, 0x00, 0x01, 0x10, 0x02, 0x00, 0x00, 0x12, 0x00, 
+	0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x22, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x1f, 0x1f, 
+	0xf6, 0x88, 0x00, 0x00, 0x40, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const int ps_textured_length = 228;
diff --git a/misc/xbox360/ps_textured.hlsl b/misc/xbox360/ps_textured.hlsl
new file mode 100644
index 0000000..e3f0b22
--- /dev/null
+++ b/misc/xbox360/ps_textured.hlsl
@@ -0,0 +1,10 @@
+sampler s;
+
+struct INPUT_VERTEX {
+   float4 col : COLOR0;
+   float2 uv  : TEXCOORD0;
+};
+
+float4 main(INPUT_VERTEX input) : COLOR0 {
+	return tex2D(s, input.uv) * input.col;
+}
\ No newline at end of file
diff --git a/misc/xbox360/vs_coloured.bin b/misc/xbox360/vs_coloured.bin
new file mode 100644
index 0000000..8373dfb
--- /dev/null
+++ b/misc/xbox360/vs_coloured.bin
Binary files differdiff --git a/misc/xbox360/vs_coloured.h b/misc/xbox360/vs_coloured.h
new file mode 100644
index 0000000..3157423
--- /dev/null
+++ b/misc/xbox360/vs_coloured.h
@@ -0,0 +1,34 @@
+const char vs_coloured[324] = {
+	0x10, 0x2a, 0x11, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 
+	0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 
+	0x00, 0x00, 0x00, 0x53, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 
+	0x6d, 0x76, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0xab, 
+	0xab, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 
+	0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, 
+	0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x84, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x10, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 
+	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x90, 
+	0x00, 0x10, 0x00, 0x03, 0x00, 0x30, 0xa0, 0x04, 0x00, 0x00, 0xf0, 
+	0x50, 0x00, 0x00, 0x10, 0x09, 0x30, 0x05, 0x20, 0x03, 0x00, 0x00, 
+	0x12, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 
+	0x00, 0x12, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 
+	0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, 0x20, 
+	0x00, 0x00, 0x00, 0x0e, 0x88, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, 
+	0x00, 0x00, 0x00, 0x00, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc8, 
+	0x0f, 0x00, 0x01, 0x00, 0xb1, 0x77, 0x00, 0x81, 0x02, 0x01, 0x00, 
+	0xc8, 0x0f, 0x00, 0x01, 0x00, 0x6c, 0x94, 0xe3, 0xab, 0x02, 0x00, 
+	0x01, 0xc8, 0x0f, 0x00, 0x01, 0x00, 0xc6, 0x25, 0xe3, 0xab, 0x02, 
+	0x02, 0x01, 0xc8, 0x0f, 0x80, 0x3e, 0x00, 0x3e, 0x00, 0x00, 0x80, 
+	0x01, 0x03, 0x00, 0xc8, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const int vs_coloured_length = 324;
diff --git a/misc/xbox360/vs_coloured.hlsl b/misc/xbox360/vs_coloured.hlsl
new file mode 100644
index 0000000..7404109
--- /dev/null
+++ b/misc/xbox360/vs_coloured.hlsl
@@ -0,0 +1,20 @@
+struct INPUT_VERTEX 
+{
+	float3 pos : POSITION;
+	float4 col : COLOR0;
+};
+
+struct OUTPUT_VERTEX
+{ 
+	float4 pos : POSITION;
+	float4 col : TEXCOORD0;
+};
+
+float4x4 mvpMatrix: register(c0);
+
+OUTPUT_VERTEX main(INPUT_VERTEX input) {
+   OUTPUT_VERTEX output;
+   output.pos = mul(mvpMatrix, float4(input.pos, 1.0f));
+   output.col = input.col;
+   return output;
+}
\ No newline at end of file
diff --git a/misc/xbox360/vs_textured.bin b/misc/xbox360/vs_textured.bin
new file mode 100644
index 0000000..ba0ce7c
--- /dev/null
+++ b/misc/xbox360/vs_textured.bin
Binary files differdiff --git a/misc/xbox360/vs_textured.h b/misc/xbox360/vs_textured.h
new file mode 100644
index 0000000..ca65c47
--- /dev/null
+++ b/misc/xbox360/vs_textured.h
@@ -0,0 +1,37 @@
+const char vs_textured[360] = {
+	0x10, 0x2a, 0x11, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 
+	0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 
+	0x00, 0x00, 0x00, 0x53, 0xff, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 
+	0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 
+	0x6d, 0x76, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0xab, 
+	0xab, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 
+	0x30, 0x00, 0x32, 0x2e, 0x30, 0x2e, 0x34, 0x33, 0x31, 0x34, 0x2e, 
+	0x30, 0x00, 0xab, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x9c, 0x00, 0x11, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 
+	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x90, 
+	0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x30, 0x50, 
+	0x05, 0x00, 0x00, 0x30, 0x50, 0x00, 0x01, 0xf1, 0xa0, 0x00, 0x00, 
+	0x10, 0x0a, 0x00, 0x00, 0x10, 0x0b, 0x70, 0x15, 0x30, 0x03, 0x00, 
+	0x00, 0x12, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06, 
+	0x00, 0x00, 0x12, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
+	0x0a, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf8, 
+	0x30, 0x00, 0x00, 0x00, 0x0e, 0x88, 0x00, 0x00, 0x00, 0x00, 0x05, 
+	0xf8, 0x10, 0x00, 0x00, 0x00, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, 
+	0x05, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc8, 0x00, 0x00, 0x00, 
+	0x00, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0xb1, 0x77, 0x00, 0x81, 0x03, 
+	0x01, 0x00, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0x6c, 0x94, 0xe3, 0xab, 
+	0x03, 0x00, 0x02, 0xc8, 0x0f, 0x00, 0x02, 0x00, 0xc6, 0x25, 0xe3, 
+	0xab, 0x03, 0x02, 0x02, 0xc8, 0x0f, 0x80, 0x3e, 0x00, 0x3e, 0x00, 
+	0x00, 0x80, 0x02, 0x03, 0x00, 0xc8, 0x03, 0x80, 0x00, 0x00, 0xb0, 
+	0xb0, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc8, 0x0f, 0x80, 0x01, 0x00, 
+	0x00, 0x00, 0x00, 0xc2, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const int vs_textured_length = 360;
diff --git a/misc/xbox360/vs_textured.hlsl b/misc/xbox360/vs_textured.hlsl
new file mode 100644
index 0000000..e271988
--- /dev/null
+++ b/misc/xbox360/vs_textured.hlsl
@@ -0,0 +1,23 @@
+struct INPUT_VERTEX 
+{
+	float3 pos : POSITION;
+	float4 col : COLOR0;
+	float2 uv  : TEXCOORD0; 
+};
+
+struct OUTPUT_VERTEX
+{ 
+	float4 pos : POSITION;
+	float4 col : COLOR0;
+	float2 uv  : TEXCOORD0;
+};
+
+float4x4 mvpMatrix: register(c0);
+
+OUTPUT_VERTEX main(INPUT_VERTEX input) {
+   OUTPUT_VERTEX output;
+   output.pos = mul(mvpMatrix, float4(input.pos, 1.0f));
+   output.col = input.col;
+   output.uv  = input.uv;
+   return output;
+}
\ No newline at end of file