diff --git a/Makefile.in b/Makefile.in
index 4f31852..834e7c6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -46,7 +46,7 @@
 
 INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
 
-SRC_DIST = *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac debian docs include Makefile.* sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake src test VisualC.html VisualC VisualC-WinRT Xcode wayland-protocols
+SRC_DIST = *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac debian docs include Makefile.* sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake src test VisualC.html VisualC VisualC-WinRT Xcode Xcode-iOS wayland-protocols
 GEN_DIST = SDL2.spec
 
 ifneq ($V,1)
diff --git a/Xcode-iOS/Demos/Default.png b/Xcode-iOS/Demos/Default.png
new file mode 100644
index 0000000..f912828
--- /dev/null
+++ b/Xcode-iOS/Demos/Default.png
Binary files differ
diff --git a/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj b/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..5bc18fe
--- /dev/null
+++ b/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj
@@ -0,0 +1,1417 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		F3A497102555EE4800E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A4972F2555EE8A00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A497392555EEA900E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497422555EEBE00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A497432555EEC400E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497442555EECD00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A497452555EED500E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497462555EEDF00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A4959B2555ED0500E92A8B /* libSDL2.a */; };
+		F3A497482555EEEE00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497472555EEEE00E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497492555EF0B00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A4974A2555EF1200E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4974B2555EF1B00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A4974C2555EF2000E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4974D2555EF9500E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4974E2555EF9F00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A495992555ED0500E92A8B /* libSDL2.a */; };
+		F3A4974F2555EFA400E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497382555EEA900E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497592555EFC300E92A8B /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497582555EFC300E92A8B /* AVFoundation.framework */; };
+		F3A497632555EFCF00E92A8B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497622555EFCF00E92A8B /* Metal.framework */; };
+		F3F7590022AC5EC7001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590122AC5F00001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590222AC5F3D001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590322AC5F71001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590422AC5F8D001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590522AC5FB3001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		F3F7590622AC5FD1001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3F758FF22AC5EC7001D97F2 /* Metal.framework */; };
+		FA30DEB01BBF5A8F009C397F /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FA30DEB11BBF5A93009C397F /* happy.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0080E26BC0500F39101 /* happy.c */; };
+		FA30DEB31BBF5AD7009C397F /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CC0E43D19800F688B5 /* icon.bmp */; };
+		FA30DEB41BBF5ADD009C397F /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FA30DEB61BBF5AE6009C397F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FA30DEC81BBF5C14009C397F /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FA30DEC91BBF5C14009C397F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FA30DECA1BBF5C14009C397F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FA30DECB1BBF5C14009C397F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FA30DECC1BBF5C14009C397F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FA30DECD1BBF5C14009C397F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FA30DECE1BBF5C14009C397F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FA30DECF1BBF5C14009C397F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FA86C0371D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C0381D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C0391D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03A1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03B1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03C1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03D1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA8B4BA31967070A00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA41967071300F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA51967071A00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA61967072100F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA71967072800F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA81967073400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BA91967073D00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FABA34D41D8B5E5600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34D61D8B5E5A00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34D91D8B5E7B00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DA1D8B5E7F00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DB1D8B5E8500915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DC1D8B5E8900915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DD1D8B5E8D00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FAE0E96A1BAF96A00098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E96C1BAF96A90098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E96D1BAF96AF0098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E96E1BAF96B10098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E96F1BAF96B50098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E9701BAF96B80098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FAE0E9711BAF96BB0098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FD15FD690E086911003BDF25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FD15FD6A0E086911003BDF25 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FD15FD6B0E086911003BDF25 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FD15FD6C0E086911003BDF25 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FD15FD6D0E086911003BDF25 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FD5F9CE80E0E0741008E885B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FD5F9CE90E0E0741008E885B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FD5F9CEA0E0E0741008E885B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FD5F9CEB0E0E0741008E885B /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FD5F9CEC0E0E0741008E885B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FD77A00E0E26BC0500F39101 /* happy.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0080E26BC0500F39101 /* happy.c */; };
+		FD77A0130E26BC0500F39101 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FD77A0160E26BC0500F39101 /* rectangles.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A00A0E26BC0500F39101 /* rectangles.c */; };
+		FD77A0190E26BC0500F39101 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FD77A01F0E26BC0500F39101 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FD77A0230E26BC0500F39101 /* touch.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A00B0E26BC0500F39101 /* touch.c */; };
+		FD77A0250E26BC0500F39101 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FD77A0270E26BC0500F39101 /* mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0090E26BC0500F39101 /* mixer.c */; };
+		FD77A02A0E26BC2700F39101 /* accelerometer.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0050E26BC0500F39101 /* accelerometer.c */; };
+		FD787AA10E22A5CC003E8E36 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FD787AA20E22A5CC003E8E36 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FD787AA30E22A5CC003E8E36 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FD787AA40E22A5CC003E8E36 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FD787AA50E22A5CC003E8E36 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FD925B190E0F276600E92347 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FD925B1A0E0F276600E92347 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FD925B1B0E0F276600E92347 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FDB651D00E43D1AD00F688B5 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CC0E43D19800F688B5 /* icon.bmp */; };
+		FDB651D10E43D1B300F688B5 /* ship.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CD0E43D19800F688B5 /* ship.bmp */; };
+		FDB651D20E43D1B500F688B5 /* space.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CE0E43D19800F688B5 /* space.bmp */; };
+		FDB651D30E43D1BA00F688B5 /* stroke.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CF0E43D19800F688B5 /* stroke.bmp */; };
+		FDB651D40E43D1C500F688B5 /* ds_brush_snare.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDB651C80E43D19800F688B5 /* ds_brush_snare.wav */; };
+		FDB651D50E43D1C500F688B5 /* ds_china.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDB651C90E43D19800F688B5 /* ds_china.wav */; };
+		FDB651D60E43D1C500F688B5 /* ds_kick_big_amb.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CA0E43D19800F688B5 /* ds_kick_big_amb.wav */; };
+		FDB651D70E43D1C500F688B5 /* ds_loose_skin_mute.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CB0E43D19800F688B5 /* ds_loose_skin_mute.wav */; };
+		FDB651D80E43D1D800F688B5 /* stroke.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CF0E43D19800F688B5 /* stroke.bmp */; };
+		FDB651F90E43D1F300F688B5 /* stroke.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CF0E43D19800F688B5 /* stroke.bmp */; };
+		FDB651FA0E43D1F300F688B5 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FDB651FB0E43D1F300F688B5 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FDB651FD0E43D1F300F688B5 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FDB652020E43D1F300F688B5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FDB652030E43D1F300F688B5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FDB652040E43D1F300F688B5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FDB652050E43D1F300F688B5 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FDB652060E43D1F300F688B5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FDB652070E43D1F300F688B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDB652080E43D1F300F688B5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDB652120E43D21A00F688B5 /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = FDB652110E43D21A00F688B5 /* keyboard.c */; };
+		FDB652C70E43E25900F688B5 /* kromasky_16x16.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB652C60E43E25900F688B5 /* kromasky_16x16.bmp */; };
+		FDB96ED40DEFC9C700FAF19F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FDB96EE00DEFC9DC00FAF19F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FDC202E10E107B1200ABAC90 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FDC202E60E107B1200ABAC90 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FDC202E70E107B1200ABAC90 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FDC202E80E107B1200ABAC90 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FDC202E90E107B1200ABAC90 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FDC202EA0E107B1200ABAC90 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FDC214870E26D78A00DDED23 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FDC52EC80E2843D6008D768C /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FDC52EC90E2843D6008D768C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FDC52ECF0E2843D6008D768C /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FDC52ED40E2843D6008D768C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FDC52ED50E2843D6008D768C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FDC52ED60E2843D6008D768C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FDC52ED70E2843D6008D768C /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FDC52ED80E2843D6008D768C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FDC52ED90E2843D6008D768C /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDC52EDA0E2843D6008D768C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDC52EE50E284410008D768C /* fireworks.c in Sources */ = {isa = PBXBuildFile; fileRef = FDC52EE40E284410008D768C /* fireworks.c */; };
+		FDF0D6960E12D05400247964 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FDF0D69C0E12D05400247964 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FDF0D69D0E12D05400247964 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FDF0D69E0E12D05400247964 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FDF0D69F0E12D05400247964 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FDF0D6A00E12D05400247964 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FDF0D71E0E12D2AB00247964 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDF0D7230E12D31800247964 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDF0D7950E12D52900247964 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDF0D7960E12D52900247964 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDF0D7A70E12D53200247964 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDF0D7A80E12D53200247964 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDF0D7A90E12D53500247964 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDF0D7AA0E12D53500247964 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FDF0D7AB0E12D53800247964 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FDF0D7AC0E12D53800247964 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		F3A495902555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF66C0761BA81005FE872;
+			remoteInfo = Framework;
+		};
+		F3A495922555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88B5423E2437C00DCD162;
+			remoteInfo = "Framework-iOS";
+		};
+		F3A495942555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88D1523E24BED00DCD162;
+			remoteInfo = "Framework-tvOS";
+		};
+		F3A495962555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6B30761BA81005FE872;
+			remoteInfo = "Static Library";
+		};
+		F3A495982555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88E5423E24D3B00DCD162;
+			remoteInfo = "Static Library-iOS";
+		};
+		F3A4959A2555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A769B23D23E259AE00872273;
+			remoteInfo = "Static Library-tvOS";
+		};
+		F3A4959C2555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = DB31407717554B71006C0E22;
+			remoteInfo = "Shared Library";
+		};
+		F3A4959E2555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FCEB323E25AB700529352;
+			remoteInfo = "Shared Library-iOS";
+		};
+		F3A495A02555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FD06C23E25AC700529352;
+			remoteInfo = "Shared Library-tvOS";
+		};
+		F3A495A22555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6BE0761BA81005FE872;
+			remoteInfo = "Standard DMG";
+		};
+		F3A495A42555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB8C23E4C74400529352;
+			remoteInfo = hidapi;
+		};
+		F3A495A62555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB4923E399AC00529352;
+			remoteInfo = "hidapi-iOS";
+		};
+		F3A495A82555ED0500E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB6E23E3A2C900529352;
+			remoteInfo = "hidapi-tvOS";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		1D6058910D05DD3D006BFB54 /* Rectangles.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rectangles.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		F3A495802555ED0400E92A8B /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../../Xcode/SDL/SDL.xcodeproj; sourceTree = "<group>"; };
+		F3A497382555EEA900E92A8B /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = System/Library/Frameworks/CoreHaptics.framework; sourceTree = SDKROOT; };
+		F3A497472555EEEE00E92A8B /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; };
+		F3A497582555EFC300E92A8B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
+		F3A497622555EFCF00E92A8B /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
+		F3F758FF22AC5EC7001D97F2 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
+		FA30DE961BBF59D9009C397F /* Happy-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Happy-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "iOS Launch Screen.storyboard"; sourceTree = "<group>"; };
+		FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		FABA34D31D8B5E5600915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		FABA34D71D8B5E7700915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
+		FAE0E9691BAF96A00098DFA4 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
+		FD15FCB20E086866003BDF25 /* Happy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Happy.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FD5F9BE40E0DEBEA008E885B /* Accel.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Accel.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FD77A0050E26BC0500F39101 /* accelerometer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = accelerometer.c; sourceTree = "<group>"; };
+		FD77A0060E26BC0500F39101 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = "<group>"; };
+		FD77A0070E26BC0500F39101 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
+		FD77A0080E26BC0500F39101 /* happy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = happy.c; sourceTree = "<group>"; };
+		FD77A0090E26BC0500F39101 /* mixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mixer.c; sourceTree = "<group>"; };
+		FD77A00A0E26BC0500F39101 /* rectangles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rectangles.c; sourceTree = "<group>"; };
+		FD77A00B0E26BC0500F39101 /* touch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = touch.c; sourceTree = "<group>"; };
+		FD787AA00E22A5CC003E8E36 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
+		FD925B180E0F276600E92347 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
+		FDB651C60E43D19800F688B5 /* license.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = license.txt; sourceTree = "<group>"; };
+		FDB651C80E43D19800F688B5 /* ds_brush_snare.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_brush_snare.wav; sourceTree = "<group>"; };
+		FDB651C90E43D19800F688B5 /* ds_china.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_china.wav; sourceTree = "<group>"; };
+		FDB651CA0E43D19800F688B5 /* ds_kick_big_amb.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_kick_big_amb.wav; sourceTree = "<group>"; };
+		FDB651CB0E43D19800F688B5 /* ds_loose_skin_mute.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ds_loose_skin_mute.wav; sourceTree = "<group>"; };
+		FDB651CC0E43D19800F688B5 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = icon.bmp; sourceTree = "<group>"; };
+		FDB651CD0E43D19800F688B5 /* ship.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = ship.bmp; sourceTree = "<group>"; };
+		FDB651CE0E43D19800F688B5 /* space.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = space.bmp; sourceTree = "<group>"; };
+		FDB651CF0E43D19800F688B5 /* stroke.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = stroke.bmp; sourceTree = "<group>"; };
+		FDB6520C0E43D1F300F688B5 /* Keyboard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Keyboard.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDB652110E43D21A00F688B5 /* keyboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = keyboard.c; sourceTree = "<group>"; };
+		FDB652C60E43E25900F688B5 /* kromasky_16x16.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = kromasky_16x16.bmp; sourceTree = "<group>"; };
+		FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		FDC202EE0E107B1200ABAC90 /* Touch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Touch.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDC52EDE0E2843D6008D768C /* Fireworks.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fireworks.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDC52EE40E284410008D768C /* fireworks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fireworks.c; sourceTree = "<group>"; };
+		FDF0D6A40E12D05400247964 /* Mixer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mixer.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		FDF0D7220E12D31800247964 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497102555EE4800E92A8B /* libSDL2.a in Frameworks */,
+				FDF0D7AC0E12D53800247964 /* AudioToolbox.framework in Frameworks */,
+				FABA34D41D8B5E5600915323 /* AVFoundation.framework in Frameworks */,
+				FDF0D7AB0E12D53800247964 /* CoreAudio.framework in Frameworks */,
+				1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */,
+				F3A4974D2555EF9500E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA31967070A00F8EB7C /* CoreMotion.framework in Frameworks */,
+				1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
+				FAE0E96A1BAF96A00098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590022AC5EC7001D97F2 /* Metal.framework in Frameworks */,
+				FDB96ED40DEFC9C700FAF19F /* OpenGLES.framework in Frameworks */,
+				FDB96EE00DEFC9DC00FAF19F /* QuartzCore.framework in Frameworks */,
+				1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA30DE931BBF59D9009C397F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497462555EEDF00E92A8B /* libSDL2.a in Frameworks */,
+				FA30DEC91BBF5C14009C397F /* AudioToolbox.framework in Frameworks */,
+				F3A497592555EFC300E92A8B /* AVFoundation.framework in Frameworks */,
+				FA30DECF1BBF5C14009C397F /* CoreAudio.framework in Frameworks */,
+				FA30DECC1BBF5C14009C397F /* CoreGraphics.framework in Frameworks */,
+				F3A497482555EEEE00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA30DECE1BBF5C14009C397F /* Foundation.framework in Frameworks */,
+				FA30DEC81BBF5C14009C397F /* GameController.framework in Frameworks */,
+				F3A497632555EFCF00E92A8B /* Metal.framework in Frameworks */,
+				FA30DECA1BBF5C14009C397F /* QuartzCore.framework in Frameworks */,
+				FA30DECB1BBF5C14009C397F /* OpenGLES.framework in Frameworks */,
+				FA30DECD1BBF5C14009C397F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD15FCB00E086866003BDF25 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497442555EECD00E92A8B /* libSDL2.a in Frameworks */,
+				FDF0D7AA0E12D53500247964 /* AudioToolbox.framework in Frameworks */,
+				FABA34D61D8B5E5A00915323 /* AVFoundation.framework in Frameworks */,
+				FDF0D7A90E12D53500247964 /* CoreAudio.framework in Frameworks */,
+				FD15FD6B0E086911003BDF25 /* CoreGraphics.framework in Frameworks */,
+				F3A497452555EED500E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA41967071300F8EB7C /* CoreMotion.framework in Frameworks */,
+				FD15FD690E086911003BDF25 /* Foundation.framework in Frameworks */,
+				FAE0E96C1BAF96A90098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590122AC5F00001D97F2 /* Metal.framework in Frameworks */,
+				FD15FD6C0E086911003BDF25 /* OpenGLES.framework in Frameworks */,
+				FD15FD6D0E086911003BDF25 /* QuartzCore.framework in Frameworks */,
+				FD15FD6A0E086911003BDF25 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD5F9BE20E0DEBEA008E885B /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4972F2555EE8A00E92A8B /* libSDL2.a in Frameworks */,
+				FDF0D7A80E12D53200247964 /* AudioToolbox.framework in Frameworks */,
+				FABA34D91D8B5E7B00915323 /* AVFoundation.framework in Frameworks */,
+				FDF0D7A70E12D53200247964 /* CoreAudio.framework in Frameworks */,
+				FD5F9CEA0E0E0741008E885B /* CoreGraphics.framework in Frameworks */,
+				F3A497392555EEA900E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA51967071A00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FD5F9CE80E0E0741008E885B /* Foundation.framework in Frameworks */,
+				FAE0E96D1BAF96AF0098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590222AC5F3D001D97F2 /* Metal.framework in Frameworks */,
+				FD5F9CEB0E0E0741008E885B /* OpenGLES.framework in Frameworks */,
+				FD5F9CEC0E0E0741008E885B /* QuartzCore.framework in Frameworks */,
+				FD5F9CE90E0E0741008E885B /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDB651FF0E43D1F300F688B5 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497492555EF0B00E92A8B /* libSDL2.a in Frameworks */,
+				FDB652080E43D1F300F688B5 /* AudioToolbox.framework in Frameworks */,
+				FABA34DD1D8B5E8D00915323 /* AVFoundation.framework in Frameworks */,
+				FDB652070E43D1F300F688B5 /* CoreAudio.framework in Frameworks */,
+				FDB652040E43D1F300F688B5 /* CoreGraphics.framework in Frameworks */,
+				F3A4974A2555EF1200E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA91967073D00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDB652020E43D1F300F688B5 /* Foundation.framework in Frameworks */,
+				FAE0E9711BAF96BB0098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590622AC5FD1001D97F2 /* Metal.framework in Frameworks */,
+				FDB652050E43D1F300F688B5 /* OpenGLES.framework in Frameworks */,
+				FDB652060E43D1F300F688B5 /* QuartzCore.framework in Frameworks */,
+				FDB652030E43D1F300F688B5 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC202E40E107B1200ABAC90 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4974E2555EF9F00E92A8B /* libSDL2.a in Frameworks */,
+				FDF0D7960E12D52900247964 /* AudioToolbox.framework in Frameworks */,
+				FABA34DA1D8B5E7F00915323 /* AVFoundation.framework in Frameworks */,
+				FDF0D7950E12D52900247964 /* CoreAudio.framework in Frameworks */,
+				FDC202E80E107B1200ABAC90 /* CoreGraphics.framework in Frameworks */,
+				F3A4974F2555EFA400E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA61967072100F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDC202E60E107B1200ABAC90 /* Foundation.framework in Frameworks */,
+				FAE0E96E1BAF96B10098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590322AC5F71001D97F2 /* Metal.framework in Frameworks */,
+				FDC202E90E107B1200ABAC90 /* OpenGLES.framework in Frameworks */,
+				FDC202EA0E107B1200ABAC90 /* QuartzCore.framework in Frameworks */,
+				FDC202E70E107B1200ABAC90 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC52ED10E2843D6008D768C /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497422555EEBE00E92A8B /* libSDL2.a in Frameworks */,
+				FDC52EDA0E2843D6008D768C /* AudioToolbox.framework in Frameworks */,
+				FABA34DC1D8B5E8900915323 /* AVFoundation.framework in Frameworks */,
+				FDC52ED90E2843D6008D768C /* CoreAudio.framework in Frameworks */,
+				FDC52ED60E2843D6008D768C /* CoreGraphics.framework in Frameworks */,
+				F3A497432555EEC400E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA81967073400F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDC52ED40E2843D6008D768C /* Foundation.framework in Frameworks */,
+				FAE0E9701BAF96B80098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590522AC5FB3001D97F2 /* Metal.framework in Frameworks */,
+				FDC52ED70E2843D6008D768C /* OpenGLES.framework in Frameworks */,
+				FDC52ED80E2843D6008D768C /* QuartzCore.framework in Frameworks */,
+				FDC52ED50E2843D6008D768C /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDF0D69A0E12D05400247964 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4974B2555EF1B00E92A8B /* libSDL2.a in Frameworks */,
+				FDF0D7230E12D31800247964 /* AudioToolbox.framework in Frameworks */,
+				FABA34DB1D8B5E8500915323 /* AVFoundation.framework in Frameworks */,
+				FDF0D71E0E12D2AB00247964 /* CoreAudio.framework in Frameworks */,
+				FDF0D69E0E12D05400247964 /* CoreGraphics.framework in Frameworks */,
+				F3A4974C2555EF2000E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BA71967072800F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDF0D69C0E12D05400247964 /* Foundation.framework in Frameworks */,
+				FAE0E96F1BAF96B50098DFA4 /* GameController.framework in Frameworks */,
+				F3F7590422AC5F8D001D97F2 /* Metal.framework in Frameworks */,
+				FDF0D69F0E12D05400247964 /* OpenGLES.framework in Frameworks */,
+				FDF0D6A00E12D05400247964 /* QuartzCore.framework in Frameworks */,
+				FDF0D69D0E12D05400247964 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		19C28FACFE9D520D11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				1D6058910D05DD3D006BFB54 /* Rectangles.app */,
+				FD15FCB20E086866003BDF25 /* Happy.app */,
+				FD5F9BE40E0DEBEA008E885B /* Accel.app */,
+				FDC202EE0E107B1200ABAC90 /* Touch.app */,
+				FDF0D6A40E12D05400247964 /* Mixer.app */,
+				FDC52EDE0E2843D6008D768C /* Fireworks.app */,
+				FDB6520C0E43D1F300F688B5 /* Keyboard.app */,
+				FA30DE961BBF59D9009C397F /* Happy-TV.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+			isa = PBXGroup;
+			children = (
+				F3A495802555ED0400E92A8B /* SDL.xcodeproj */,
+				FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */,
+				FD77A0040E26BC0500F39101 /* src */,
+				29B97317FDCFA39411CA2CEA /* Resources */,
+				29B97323FDCFA39411CA2CEA /* Frameworks */,
+				19C28FACFE9D520D11CA2CBB /* Products */,
+			);
+			name = CustomTemplate;
+			sourceTree = "<group>";
+		};
+		29B97317FDCFA39411CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				FDB651C30E43D19800F688B5 /* data */,
+				FD787AA00E22A5CC003E8E36 /* Default.png */,
+				FD925B180E0F276600E92347 /* Icon.png */,
+				8D1107310486CEB800E47090 /* Info.plist */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				F3A497622555EFCF00E92A8B /* Metal.framework */,
+				F3A497582555EFC300E92A8B /* AVFoundation.framework */,
+				F3A497382555EEA900E92A8B /* CoreHaptics.framework */,
+				F3A497472555EEEE00E92A8B /* CoreHaptics.framework */,
+				F3F758FF22AC5EC7001D97F2 /* Metal.framework */,
+				FABA34D71D8B5E7700915323 /* AVFoundation.framework */,
+				FABA34D31D8B5E5600915323 /* AVFoundation.framework */,
+				FAE0E9691BAF96A00098DFA4 /* GameController.framework */,
+				FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */,
+				FDF0D7220E12D31800247964 /* AudioToolbox.framework */,
+				FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */,
+				FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */,
+				1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */,
+				1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+				1D30AB110D05D00D00671497 /* Foundation.framework */,
+				FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		F3A495812555ED0400E92A8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F3A495912555ED0500E92A8B /* SDL2.framework */,
+				F3A495932555ED0500E92A8B /* SDL2.framework */,
+				F3A495952555ED0500E92A8B /* SDL2.framework */,
+				F3A495972555ED0500E92A8B /* libSDL2.a */,
+				F3A495992555ED0500E92A8B /* libSDL2.a */,
+				F3A4959B2555ED0500E92A8B /* libSDL2.a */,
+				F3A4959D2555ED0500E92A8B /* libSDL2.dylib */,
+				F3A4959F2555ED0500E92A8B /* libSDL2.dylib */,
+				F3A495A12555ED0500E92A8B /* libSDL2.dylib */,
+				F3A495A32555ED0500E92A8B /* SDL2 */,
+				F3A495A52555ED0500E92A8B /* hidapi.framework */,
+				F3A495A72555ED0500E92A8B /* hidapi.framework */,
+				F3A495A92555ED0500E92A8B /* hidapi.framework */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		FD77A0040E26BC0500F39101 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				FD77A0060E26BC0500F39101 /* common.c */,
+				FD77A0070E26BC0500F39101 /* common.h */,
+				FD77A00A0E26BC0500F39101 /* rectangles.c */,
+				FD77A0080E26BC0500F39101 /* happy.c */,
+				FD77A0050E26BC0500F39101 /* accelerometer.c */,
+				FD77A00B0E26BC0500F39101 /* touch.c */,
+				FD77A0090E26BC0500F39101 /* mixer.c */,
+				FDB652110E43D21A00F688B5 /* keyboard.c */,
+				FDC52EE40E284410008D768C /* fireworks.c */,
+			);
+			path = src;
+			sourceTree = "<group>";
+		};
+		FDB651C30E43D19800F688B5 /* data */ = {
+			isa = PBXGroup;
+			children = (
+				FDB651C40E43D19800F688B5 /* bitmapfont */,
+				FDB651C70E43D19800F688B5 /* drums */,
+				FDB651CC0E43D19800F688B5 /* icon.bmp */,
+				FDB651CD0E43D19800F688B5 /* ship.bmp */,
+				FDB651CE0E43D19800F688B5 /* space.bmp */,
+				FDB651CF0E43D19800F688B5 /* stroke.bmp */,
+			);
+			path = data;
+			sourceTree = "<group>";
+		};
+		FDB651C40E43D19800F688B5 /* bitmapfont */ = {
+			isa = PBXGroup;
+			children = (
+				FDB652C60E43E25900F688B5 /* kromasky_16x16.bmp */,
+				FDB651C60E43D19800F688B5 /* license.txt */,
+			);
+			path = bitmapfont;
+			sourceTree = "<group>";
+		};
+		FDB651C70E43D19800F688B5 /* drums */ = {
+			isa = PBXGroup;
+			children = (
+				FDB651C80E43D19800F688B5 /* ds_brush_snare.wav */,
+				FDB651C90E43D19800F688B5 /* ds_china.wav */,
+				FDB651CA0E43D19800F688B5 /* ds_kick_big_amb.wav */,
+				FDB651CB0E43D19800F688B5 /* ds_loose_skin_mute.wav */,
+			);
+			path = drums;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		1D6058900D05DD3D006BFB54 /* Rectangles */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Rectangles" */;
+			buildPhases = (
+				1D60588D0D05DD3D006BFB54 /* Resources */,
+				1D60588E0D05DD3D006BFB54 /* Sources */,
+				1D60588F0D05DD3D006BFB54 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Rectangles;
+			productName = SDLiPodTest;
+			productReference = 1D6058910D05DD3D006BFB54 /* Rectangles.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FA30DE951BBF59D9009C397F /* Happy-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA30DEAD1BBF59D9009C397F /* Build configuration list for PBXNativeTarget "Happy-TV" */;
+			buildPhases = (
+				FA30DE921BBF59D9009C397F /* Sources */,
+				FA30DE941BBF59D9009C397F /* Resources */,
+				FA30DE931BBF59D9009C397F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "Happy-TV";
+			productName = "Happy-TV";
+			productReference = FA30DE961BBF59D9009C397F /* Happy-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FD15FCB10E086866003BDF25 /* Happy */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FD15FCB70E086867003BDF25 /* Build configuration list for PBXNativeTarget "Happy" */;
+			buildPhases = (
+				FD15FCAE0E086866003BDF25 /* Resources */,
+				FD15FCAF0E086866003BDF25 /* Sources */,
+				FD15FCB00E086866003BDF25 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Happy;
+			productName = BMPTest;
+			productReference = FD15FCB20E086866003BDF25 /* Happy.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FD5F9BE30E0DEBEA008E885B /* Accel */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FD5F9BE90E0DEBEB008E885B /* Build configuration list for PBXNativeTarget "Accel" */;
+			buildPhases = (
+				FD5F9BE00E0DEBEA008E885B /* Resources */,
+				FD5F9BE10E0DEBEA008E885B /* Sources */,
+				FD5F9BE20E0DEBEA008E885B /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Accel;
+			productName = Accelerometer;
+			productReference = FD5F9BE40E0DEBEA008E885B /* Accel.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDB651F70E43D1F300F688B5 /* Keyboard */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDB652090E43D1F300F688B5 /* Build configuration list for PBXNativeTarget "Keyboard" */;
+			buildPhases = (
+				FDB651F80E43D1F300F688B5 /* Resources */,
+				FDB651FC0E43D1F300F688B5 /* Sources */,
+				FDB651FF0E43D1F300F688B5 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Keyboard;
+			productName = Accelerometer;
+			productReference = FDB6520C0E43D1F300F688B5 /* Keyboard.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDC202DD0E107B1200ABAC90 /* Touch */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDC202EB0E107B1200ABAC90 /* Build configuration list for PBXNativeTarget "Touch" */;
+			buildPhases = (
+				FDC202DE0E107B1200ABAC90 /* Resources */,
+				FDC202E20E107B1200ABAC90 /* Sources */,
+				FDC202E40E107B1200ABAC90 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Touch;
+			productName = Accelerometer;
+			productReference = FDC202EE0E107B1200ABAC90 /* Touch.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDC52EC60E2843D6008D768C /* Fireworks */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDC52EDB0E2843D6008D768C /* Build configuration list for PBXNativeTarget "Fireworks" */;
+			buildPhases = (
+				FDC52EC70E2843D6008D768C /* Resources */,
+				FDC52ECE0E2843D6008D768C /* Sources */,
+				FDC52ED10E2843D6008D768C /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Fireworks;
+			productName = Accelerometer;
+			productReference = FDC52EDE0E2843D6008D768C /* Fireworks.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDF0D6920E12D05400247964 /* Mixer */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDF0D6A10E12D05400247964 /* Build configuration list for PBXNativeTarget "Mixer" */;
+			buildPhases = (
+				FDF0D6930E12D05400247964 /* Resources */,
+				FDF0D6980E12D05400247964 /* Sources */,
+				FDF0D69A0E12D05400247964 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Mixer;
+			productName = Accelerometer;
+			productReference = FDF0D6A40E12D05400247964 /* Mixer.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		29B97313FDCFA39411CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0630;
+				TargetAttributes = {
+					1D6058900D05DD3D006BFB54 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FA30DE951BBF59D9009C397F = {
+						CreatedOnToolsVersion = 7.1;
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FD15FCB10E086866003BDF25 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FD5F9BE30E0DEBEA008E885B = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDB651F70E43D1F300F688B5 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDC202DD0E107B1200ABAC90 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDC52EC60E2843D6008D768C = {
+						DevelopmentTeam = MXGJJ98X76;
+						ProvisioningStyle = Automatic;
+					};
+					FDF0D6920E12D05400247964 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+				};
+			};
+			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Demos" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				Base,
+			);
+			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = F3A495812555ED0400E92A8B /* Products */;
+					ProjectRef = F3A495802555ED0400E92A8B /* SDL.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				FD5F9BE30E0DEBEA008E885B /* Accel */,
+				FDC52EC60E2843D6008D768C /* Fireworks */,
+				FD15FCB10E086866003BDF25 /* Happy */,
+				FA30DE951BBF59D9009C397F /* Happy-TV */,
+				FDB651F70E43D1F300F688B5 /* Keyboard */,
+				FDF0D6920E12D05400247964 /* Mixer */,
+				1D6058900D05DD3D006BFB54 /* Rectangles */,
+				FDC202DD0E107B1200ABAC90 /* Touch */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+		F3A495912555ED0500E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A495902555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495932555ED0500E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A495922555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495952555ED0500E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A495942555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495972555ED0500E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A495962555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495992555ED0500E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A495982555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4959B2555ED0500E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A4959A2555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4959D2555ED0500E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A4959C2555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4959F2555ED0500E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A4959E2555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495A12555ED0500E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A495A02555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495A32555ED0500E92A8B /* SDL2 */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = SDL2;
+			remoteRef = F3A495A22555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495A52555ED0500E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A495A42555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495A72555ED0500E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A495A62555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A495A92555ED0500E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A495A82555ED0500E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+		1D60588D0D05DD3D006BFB54 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA86C0371D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+				FD925B1B0E0F276600E92347 /* Icon.png in Resources */,
+				FD787AA20E22A5CC003E8E36 /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA30DE941BBF59D9009C397F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA30DEB31BBF5AD7009C397F /* icon.bmp in Resources */,
+				FA30DEB41BBF5ADD009C397F /* Icon.png in Resources */,
+				FA30DEB61BBF5AE6009C397F /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD15FCAE0E086866003BDF25 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651D00E43D1AD00F688B5 /* icon.bmp in Resources */,
+				FA86C0381D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+				FD925B1A0E0F276600E92347 /* Icon.png in Resources */,
+				FD787AA10E22A5CC003E8E36 /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD5F9BE00E0DEBEA008E885B /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651D20E43D1B500F688B5 /* space.bmp in Resources */,
+				FDB651D10E43D1B300F688B5 /* ship.bmp in Resources */,
+				FD925B190E0F276600E92347 /* Icon.png in Resources */,
+				FD787AA30E22A5CC003E8E36 /* Default.png in Resources */,
+				FA86C0391D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDB651F80E43D1F300F688B5 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651F90E43D1F300F688B5 /* stroke.bmp in Resources */,
+				FDB651FA0E43D1F300F688B5 /* Icon.png in Resources */,
+				FDB651FB0E43D1F300F688B5 /* Default.png in Resources */,
+				FDB652C70E43E25900F688B5 /* kromasky_16x16.bmp in Resources */,
+				FA86C03D1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC202DE0E107B1200ABAC90 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651D30E43D1BA00F688B5 /* stroke.bmp in Resources */,
+				FA86C03A1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+				FDC202E10E107B1200ABAC90 /* Icon.png in Resources */,
+				FD787AA40E22A5CC003E8E36 /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC52EC70E2843D6008D768C /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651D80E43D1D800F688B5 /* stroke.bmp in Resources */,
+				FA86C03C1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+				FDC52EC80E2843D6008D768C /* Icon.png in Resources */,
+				FDC52EC90E2843D6008D768C /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDF0D6930E12D05400247964 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651D40E43D1C500F688B5 /* ds_brush_snare.wav in Resources */,
+				FDB651D50E43D1C500F688B5 /* ds_china.wav in Resources */,
+				FDB651D60E43D1C500F688B5 /* ds_kick_big_amb.wav in Resources */,
+				FA86C03B1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
+				FDB651D70E43D1C500F688B5 /* ds_loose_skin_mute.wav in Resources */,
+				FDF0D6960E12D05400247964 /* Icon.png in Resources */,
+				FD787AA50E22A5CC003E8E36 /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		1D60588E0D05DD3D006BFB54 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A0130E26BC0500F39101 /* common.c in Sources */,
+				FD77A0160E26BC0500F39101 /* rectangles.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA30DE921BBF59D9009C397F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA30DEB01BBF5A8F009C397F /* common.c in Sources */,
+				FA30DEB11BBF5A93009C397F /* happy.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD15FCAF0E086866003BDF25 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDC214870E26D78A00DDED23 /* common.c in Sources */,
+				FD77A00E0E26BC0500F39101 /* happy.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FD5F9BE10E0DEBEA008E885B /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A0190E26BC0500F39101 /* common.c in Sources */,
+				FD77A02A0E26BC2700F39101 /* accelerometer.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDB651FC0E43D1F300F688B5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDB651FD0E43D1F300F688B5 /* common.c in Sources */,
+				FDB652120E43D21A00F688B5 /* keyboard.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC202E20E107B1200ABAC90 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A01F0E26BC0500F39101 /* common.c in Sources */,
+				FD77A0230E26BC0500F39101 /* touch.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC52ECE0E2843D6008D768C /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDC52ECF0E2843D6008D768C /* common.c in Sources */,
+				FDC52EE50E284410008D768C /* fireworks.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDF0D6980E12D05400247964 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A0250E26BC0500F39101 /* common.c in Sources */,
+				FD77A0270E26BC0500F39101 /* mixer.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1D6058940D05DD3E006BFB54 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Rectangles;
+				PRODUCT_NAME = Rectangles;
+			};
+			name = Debug;
+		};
+		1D6058950D05DD3E006BFB54 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Rectangles;
+				PRODUCT_NAME = Rectangles;
+			};
+			name = Release;
+		};
+		C01FCF4F08A954540054247B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = ../../include;
+				ONLY_ACTIVE_ARCH = YES;
+				PRELINK_LIBS = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		C01FCF5008A954540054247B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				HEADER_SEARCH_PATHS = ../../include;
+				PRELINK_LIBS = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+		FA30DEA71BBF59D9009C397F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				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;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.Happy-TV";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA30DEA81BBF59D9009C397F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				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;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = NO;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.Happy-TV";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		FD15FCB50E086866003BDF25 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_DYNAMIC_NO_PIC = NO;
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Happy;
+				PRODUCT_NAME = Happy;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FD15FCB60E086866003BDF25 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Happy;
+				PRODUCT_NAME = Happy;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		FD5F9BE70E0DEBEB008E885B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Accel;
+				PRODUCT_NAME = Accel;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FD5F9BE80E0DEBEB008E885B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Accel;
+				PRODUCT_NAME = Accel;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		FDB6520A0E43D1F300F688B5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Keyboard;
+				PRODUCT_NAME = Keyboard;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FDB6520B0E43D1F300F688B5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Keyboard;
+				PRODUCT_NAME = Keyboard;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		FDC202EC0E107B1200ABAC90 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Touch;
+				PRODUCT_NAME = Touch;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FDC202ED0E107B1200ABAC90 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Touch;
+				PRODUCT_NAME = Touch;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		FDC52EDC0E2843D6008D768C /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Fireworks;
+				PRODUCT_NAME = Fireworks;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FDC52EDD0E2843D6008D768C /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Fireworks;
+				PRODUCT_NAME = Fireworks;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		FDF0D6A20E12D05400247964 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Mixer;
+				PRODUCT_NAME = Mixer;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		FDF0D6A30E12D05400247964 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Mixer;
+				PRODUCT_NAME = Mixer;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Rectangles" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1D6058940D05DD3E006BFB54 /* Debug */,
+				1D6058950D05DD3E006BFB54 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Demos" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C01FCF4F08A954540054247B /* Debug */,
+				C01FCF5008A954540054247B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FA30DEAD1BBF59D9009C397F /* Build configuration list for PBXNativeTarget "Happy-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA30DEA71BBF59D9009C397F /* Debug */,
+				FA30DEA81BBF59D9009C397F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FD15FCB70E086867003BDF25 /* Build configuration list for PBXNativeTarget "Happy" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FD15FCB50E086866003BDF25 /* Debug */,
+				FD15FCB60E086866003BDF25 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FD5F9BE90E0DEBEB008E885B /* Build configuration list for PBXNativeTarget "Accel" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FD5F9BE70E0DEBEB008E885B /* Debug */,
+				FD5F9BE80E0DEBEB008E885B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDB652090E43D1F300F688B5 /* Build configuration list for PBXNativeTarget "Keyboard" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDB6520A0E43D1F300F688B5 /* Debug */,
+				FDB6520B0E43D1F300F688B5 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDC202EB0E107B1200ABAC90 /* Build configuration list for PBXNativeTarget "Touch" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDC202EC0E107B1200ABAC90 /* Debug */,
+				FDC202ED0E107B1200ABAC90 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDC52EDB0E2843D6008D768C /* Build configuration list for PBXNativeTarget "Fireworks" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDC52EDC0E2843D6008D768C /* Debug */,
+				FDC52EDD0E2843D6008D768C /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDF0D6A10E12D05400247964 /* Build configuration list for PBXNativeTarget "Mixer" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDF0D6A20E12D05400247964 /* Debug */,
+				FDF0D6A30E12D05400247964 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git a/Xcode-iOS/Demos/Icon.png b/Xcode-iOS/Demos/Icon.png
new file mode 100644
index 0000000..83f4d10
--- /dev/null
+++ b/Xcode-iOS/Demos/Icon.png
Binary files differ
diff --git a/Xcode-iOS/Demos/Info.plist b/Xcode-iOS/Demos/Info.plist
new file mode 100644
index 0000000..fbbaf7f
--- /dev/null
+++ b/Xcode-iOS/Demos/Info.plist
@@ -0,0 +1,32 @@
+<?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>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>NSMainNibFile</key>
+	<string></string>
+	<key>UILaunchStoryboardName</key>
+	<string>iOS Launch Screen</string>
+	<key>UISupportedInterfaceOrientations</key>
+	<array/>
+</dict>
+</plist>
diff --git a/Xcode-iOS/Demos/README b/Xcode-iOS/Demos/README
new file mode 100644
index 0000000..da6fb74
--- /dev/null
+++ b/Xcode-iOS/Demos/README
@@ -0,0 +1,43 @@
+==============================================================================
+About the iPhone OS Demo Applications
+==============================================================================
+
+Demos.xcodeproj contains several targets for iPhone oriented SDL demos.  These demos are written strictly using SDL 2.0 calls.  All the demos except for Fireworks (which requires OpenGL ES) should work on platforms other than iPhone OS, though you'll need to write your own compile script.
+
+Common files:
+
+	common.c and common.h contain code common to all demo applications.  This includes functions about delta timing (in seconds), simple error handling, and functions for generating random numbers.
+
+Rectangles (rectangles.c):
+
+	Draws randomly sized and colored rectangles all over the screen by using SDL_RenderFillRect.  This is the simplest of all the demos.
+
+Happy (happy.c):
+
+	Loads the classic happy-face bitmap and draws a large number of happy faces bouncing around the screen.  Shows how you can load a bitmap into an SDL_Texture.
+
+Accelerometer (accelerometer.c):
+
+	Uses the iPhone's accelerometer as a joystick device to move a spaceship around the screen.  Note the use of the macro SDL_IPHONE_MAX_GFORCE (normally defined in SDL_config_iphoneos.h) which converts between the Sint16 number returned by SDL_JoystickGetAxis, and the floating point units of g-force reported natively by the iPhone. 
+
+Touch (touch.c):
+
+	Acts as a finger-paint type program.  Demonstrates how you can use SDL mouse input to accept touch input from the iPhone.  If SDL for iPhone is compiled with multitouch as multiple mouse emulation (SDL_IPHONE_MULTIPLE_MICE in SDL_config_iphoneos.h) then the program will accept multiple finger inputs simultaneously. 
+
+Mixer (mixer.c):
+
+	Displays several rectangular buttons which can be used as a virtual drumkit.  Demonstrates how you can play .wav sounds in SDL and how you can use SDL_MixAudioFormat to build a software mixer that can play multiple sounds at once.
+
+Keyboard (keyboard.c):
+
+	Loads a bitmap font and let's the user type words, numbers, and symbols using the iPhone's virtual keyboard.  The iPhone's onscreen keyboard visibility is toggled when the user taps the screen.  If the user types ':)' a happy face is displayed.  Demonstrates how to use functions added to the iPhone implementation of SDL to toggle keyboard onscreen visibility.
+
+Fireworks (fireworks.c):
+
+	Displays a fireworks show.  When you tap the iPhone's screen, fireworks fly from the bottom of the screen and explode at the point that you tapped.  Demonstrates how you can use SDL on iPhone to build an OpenGL ES based application. Shows you how you can use SDL_LoadBMP to load a bmp image and convert it to an OpenGL ES texture.  Of lesser importance, shows how you can use OpenGL ES point sprites to build an efficient particle system.
+
+==============================================================================
+Building and Running the demos
+==============================================================================
+
+Before building the demos you must first build SDL as a static library for BOTH the iPhone Simulator and the iPhone itself.  See the iPhone SDL main README file for directions on how to do this.  Once this is done, simply launch XCode, select the target you'd like to build, select the active SDK (simulator or device), and then build and go.
diff --git a/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp b/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp
new file mode 100644
index 0000000..c0b6fb9
--- /dev/null
+++ b/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp
Binary files differ
diff --git a/Xcode-iOS/Demos/data/bitmapfont/license.txt b/Xcode-iOS/Demos/data/bitmapfont/license.txt
new file mode 100644
index 0000000..6949ec4
--- /dev/null
+++ b/Xcode-iOS/Demos/data/bitmapfont/license.txt
@@ -0,0 +1,258 @@
+  __            _                    _    
+ / _|          | |                  | |   
+| |_ ___  _ __ | |_ _ __   __ _  ___| | __
+|  _/ _ \| '_ \| __| '_ \ / _` |/ __| |/ /
+| || (_) | | | | |_| |_) | (_| | (__|   < 
+|_| \___/|_| |_|\__| .__/ \__,_|\___|_|\_\
+                   | |                    
+                   |_|                              
+----------------------------------------------------------------------
+Product	: font-pack.zip
+Website	: http://www.spicypixel.net
+Author	: Marc Russell
+Released: 16th January 2008
+----------------------------------------------------------------------
+
+What is this?
+-------------
+font-pack is a package of free art assets to be used under the terms of this document. It is available to game developers and hobbyists alike.
+
+Contents
+--------
+The contents of the font-pack ZIP file include 20 bitmap fonts
+
+Usage License & Restrictions
+----------------------------
+font-pack is distributed under the "Common Public License Version 1.0."
+The terms of which are given below. If you do not understand the terms of the license please refer to a solicitor. It should however, be relatively clear how this package can be used.
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON 
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF 
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+    a) in the case of the initial Contributor, the initial code and 
+    documentation distributed under this Agreement, and
+
+    b) in the case of each subsequent Contributor:
+
+    i) changes to the Program, and
+
+    ii) additions to the Program;
+
+    where such changes and/or additions to the Program originate from 
+    and are distributed by that particular Contributor. A Contribution 
+    'originates' from a Contributor if it was added to the Program by 
+    such Contributor itself or anyone acting on such Contributor's 
+    behalf. Contributions do not include additions to the Program which: 
+    (i) are separate modules of software distributed in conjunction with 
+    the Program under their own license agreement, and (ii) are not 
+    derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which 
+are necessarily infringed by the use or sale of its Contribution alone 
+or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this 
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, 
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+    a) Subject to the terms of this Agreement, each Contributor hereby 
+    grants Recipient a non-exclusive, worldwide, royalty-free copyright 
+    license to reproduce, prepare derivative works of, publicly display, 
+    publicly perform, distribute and sublicense the Contribution of such 
+    Contributor, if any, and such derivative works, in source code and 
+    object code form.
+
+    b) Subject to the terms of this Agreement, each Contributor hereby 
+    grants Recipient a non-exclusive, worldwide, royalty-free patent 
+    license under Licensed Patents to make, use, sell, offer to sell, 
+    import and otherwise transfer the Contribution of such Contributor, 
+    if any, in source code and object code form. This patent license 
+    shall apply to the combination of the Contribution and the Program 
+    if, at the time the Contribution is added by the Contributor, such 
+    addition of the Contribution causes such combination to be covered 
+    by the Licensed Patents. The patent license shall not apply to any 
+    other combinations which include the Contribution. No hardware per 
+    se is licensed hereunder.
+
+    c) Recipient understands that although each Contributor grants the 
+    licenses to its Contributions set forth herein, no assurances are 
+    provided by any Contributor that the Program does not infringe the 
+    patent or other intellectual property rights of any other entity. 
+    Each Contributor disclaims any liability to Recipient for claims 
+    brought by any other entity based on infringement of intellectual 
+    property rights or otherwise. As a condition to exercising the 
+    rights and licenses granted hereunder, each Recipient hereby assumes 
+    sole responsibility to secure any other intellectual property rights 
+    needed, if any. For example, if a third party patent license is 
+    required to allow Recipient to distribute the Program, it is 
+    Recipient's responsibility to acquire that license before 
+    distributing the Program.
+
+    d) Each Contributor represents that to its knowledge it has 
+    sufficient copyright rights in its Contribution, if any, to grant 
+    the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form 
+under its own license agreement, provided that:
+
+    a) it complies with the terms and conditions of this Agreement; and
+
+    b) its license agreement:
+
+    i) effectively disclaims on behalf of all Contributors all 
+    warranties and conditions, express and implied, including warranties 
+    or conditions of title and non-infringement, and implied warranties 
+    or conditions of merchantability and fitness for a particular 
+    purpose;
+
+    ii) effectively excludes on behalf of all Contributors all liability 
+    for damages, including direct, indirect, special, incidental and 
+    consequential damages, such as lost profits;
+
+    iii) states that any provisions which differ from this Agreement are 
+    offered by that Contributor alone and not by any other party; and
+
+    iv) states that source code for the Program is available from such 
+    Contributor, and informs licensees how to obtain it in a reasonable 
+    manner on or through a medium customarily used for software 
+    exchange. 
+
+When the Program is made available in source code form:
+
+    a) it must be made available under this Agreement; and
+
+    b) a copy of this Agreement must be included with each copy of the 
+    Program. 
+
+Contributors may not remove or alter any copyright notices contained 
+within the Program.
+
+Each Contributor must identify itself as the originator of its 
+Contribution, if any, in a manner that reasonably allows subsequent 
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities 
+with respect to end users, business partners and the like. While this 
+license is intended to facilitate the commercial use of the Program, the 
+Contributor who includes the Program in a commercial product offering 
+should do so in a manner which does not create potential liability for 
+other Contributors. Therefore, if a Contributor includes the Program in 
+a commercial product offering, such Contributor ("Commercial 
+Contributor") hereby agrees to defend and indemnify every other 
+Contributor ("Indemnified Contributor") against any losses, damages and 
+costs (collectively "Losses") arising from claims, lawsuits and other 
+legal actions brought by a third party against the Indemnified 
+Contributor to the extent caused by the acts or omissions of such 
+Commercial Contributor in connection with its distribution of the 
+Program in a commercial product offering. The obligations in this 
+section do not apply to any claims or Losses relating to any actual or 
+alleged intellectual property infringement. In order to qualify, an 
+Indemnified Contributor must: a) promptly notify the Commercial 
+Contributor in writing of such claim, and b) allow the Commercial 
+Contributor to control, and cooperate with the Commercial Contributor 
+in, the defense and any related settlement negotiations. The Indemnified 
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial 
+product offering, Product X. That Contributor is then a Commercial 
+Contributor. If that Commercial Contributor then makes performance 
+claims, or offers warranties related to Product X, those performance 
+claims and warranties are such Commercial Contributor's responsibility 
+alone. Under this section, the Commercial Contributor would have to 
+defend claims against the other Contributors related to those 
+performance claims and warranties, and if a court requires any other 
+Contributor to pay any damages as a result, the Commercial Contributor 
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 
+ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES 
+OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR 
+A PARTICULAR PURPOSE. Each Recipient is solely responsible for 
+determining the appropriateness of using and distributing the Program 
+and assumes all risks associated with its exercise of rights under this 
+Agreement, including but not limited to the risks and costs of program 
+errors, compliance with applicable laws, damage to or loss of data, 
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR 
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING 
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF 
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR 
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under 
+applicable law, it shall not affect the validity or enforceability of 
+the remainder of the terms of this Agreement, and without further action 
+by the parties hereto, such provision shall be reformed to the minimum 
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with 
+respect to a patent applicable to software (including a cross-claim or 
+counterclaim in a lawsuit), then any patent licenses granted by that 
+Contributor to such Recipient under this Agreement shall terminate as of 
+the date such litigation is filed. In addition, if Recipient institutes 
+patent litigation against any entity (including a cross-claim or 
+counterclaim in a lawsuit) alleging that the Program itself (excluding 
+combinations of the Program with other software or hardware) infringes 
+such Recipient's patent(s), then such Recipient's rights granted under 
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails 
+to comply with any of the material terms or conditions of this Agreement 
+and does not cure such failure in a reasonable period of time after 
+becoming aware of such noncompliance. If all Recipient's rights under 
+this Agreement terminate, Recipient agrees to cease use and distribution 
+of the Program as soon as reasonably practicable. However, Recipient's 
+obligations under this Agreement and any licenses granted by Recipient 
+relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, 
+but in order to avoid inconsistency the Agreement is copyrighted and may 
+only be modified in the following manner. The Agreement Steward reserves 
+the right to publish new versions (including revisions) of this 
+Agreement from time to time. No one other than the Agreement Steward has 
+the right to modify this Agreement. IBM is the initial Agreement 
+Steward. IBM may assign the responsibility to serve as the Agreement 
+Steward to a suitable separate entity. Each new version of the Agreement 
+will be given a distinguishing version number. The Program (including 
+Contributions) may always be distributed subject to the version of the 
+Agreement under which it was received. In addition, after a new version 
+of the Agreement is published, Contributor may elect to distribute the 
+Program (including its Contributions) under the new version. Except as 
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no 
+rights or licenses to the intellectual property of any Contributor under 
+this Agreement, whether expressly, by implication, estoppel or 
+otherwise. All rights in the Program not expressly granted under this 
+Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the 
+intellectual property laws of the United States of America. No party to 
+this Agreement will bring a legal action under this Agreement more than 
+one year after the cause of action arose. Each party waives its rights 
+to a jury trial in any resulting litigation.
+
diff --git a/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav b/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav
new file mode 100644
index 0000000..fa75263
--- /dev/null
+++ b/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav
Binary files differ
diff --git a/Xcode-iOS/Demos/data/drums/ds_china.wav b/Xcode-iOS/Demos/data/drums/ds_china.wav
new file mode 100644
index 0000000..21a71a1
--- /dev/null
+++ b/Xcode-iOS/Demos/data/drums/ds_china.wav
Binary files differ
diff --git a/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav b/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav
new file mode 100644
index 0000000..404115a
--- /dev/null
+++ b/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav
Binary files differ
diff --git a/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav b/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav
new file mode 100644
index 0000000..3db0522
--- /dev/null
+++ b/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav
Binary files differ
diff --git a/Xcode-iOS/Demos/data/icon.bmp b/Xcode-iOS/Demos/data/icon.bmp
new file mode 100644
index 0000000..cc96356
--- /dev/null
+++ b/Xcode-iOS/Demos/data/icon.bmp
Binary files differ
diff --git a/Xcode-iOS/Demos/data/ship.bmp b/Xcode-iOS/Demos/data/ship.bmp
new file mode 100644
index 0000000..b682dc4
--- /dev/null
+++ b/Xcode-iOS/Demos/data/ship.bmp
Binary files differ
diff --git a/Xcode-iOS/Demos/data/space.bmp b/Xcode-iOS/Demos/data/space.bmp
new file mode 100644
index 0000000..5bcf273
--- /dev/null
+++ b/Xcode-iOS/Demos/data/space.bmp
Binary files differ
diff --git a/Xcode-iOS/Demos/data/stroke.bmp b/Xcode-iOS/Demos/data/stroke.bmp
new file mode 100644
index 0000000..d59fed4
--- /dev/null
+++ b/Xcode-iOS/Demos/data/stroke.bmp
Binary files differ
diff --git a/Xcode-iOS/Demos/iOS Launch Screen.storyboard b/Xcode-iOS/Demos/iOS Launch Screen.storyboard
new file mode 100644
index 0000000..4d8722a
--- /dev/null
+++ b/Xcode-iOS/Demos/iOS Launch Screen.storyboard
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Default.png" translatesAutoresizingMaskIntoConstraints="NO" id="VeL-6u-rS3"/>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="VeL-6u-rS3" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="C5X-Vg-tvO"/>
+                            <constraint firstAttribute="trailing" secondItem="VeL-6u-rS3" secondAttribute="trailing" id="X4i-1U-3JE"/>
+                            <constraint firstItem="VeL-6u-rS3" firstAttribute="bottom" secondItem="xb3-aO-Qok" secondAttribute="top" id="dSu-2l-DcF"/>
+                            <constraint firstItem="VeL-6u-rS3" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="xKC-uj-bxE"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="52" y="374.66266866566718"/>
+        </scene>
+    </scenes>
+    <resources>
+        <image name="Default.png" width="320" height="480"/>
+    </resources>
+</document>
diff --git a/Xcode-iOS/Demos/src/accelerometer.c b/Xcode-iOS/Demos/src/accelerometer.c
new file mode 100644
index 0000000..2cc0123
--- /dev/null
+++ b/Xcode-iOS/Demos/src/accelerometer.c
@@ -0,0 +1,226 @@
+/*
+ *  accelerometer.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include <math.h>
+#include "common.h"
+
+#define DAMPING 0.5f;           /* after bouncing off a wall, damping coefficient determines final speed */
+#define FRICTION 0.0008f        /* coefficient of acceleration that opposes direction of motion */
+#define GRAVITY_CONSTANT 0.004f /* how sensitive the ship is to the accelerometer */
+
+/*  If we aren't on an iPhone, then this definition ought to yield reasonable behavior */
+#ifndef SDL_IPHONE_MAX_GFORCE
+#define SDL_IPHONE_MAX_GFORCE 5.0f
+#endif
+
+static SDL_Joystick *accelerometer;     /* used for controlling the ship */
+
+static struct
+{
+    float x, y;                 /* position of ship */
+    float vx, vy;               /* velocity of ship (in pixels per millesecond) */
+    SDL_Rect rect;              /* (drawn) position and size of ship */
+} shipData;
+
+static SDL_Texture *ship = 0;        /* texture for spaceship */
+static SDL_Texture *space = 0;       /* texture for space (background */
+
+void
+render(SDL_Renderer *renderer, int w, int h, double deltaTime)
+{
+    double deltaMilliseconds = deltaTime * 1000;
+    float speed;
+
+    /* get joystick (accelerometer) axis values and normalize them */
+    float ax = SDL_JoystickGetAxis(accelerometer, 0);
+    float ay = SDL_JoystickGetAxis(accelerometer, 1);
+
+    /* ship screen constraints */
+    Uint32 minx = 0.0f;
+    Uint32 maxx = w - shipData.rect.w;
+    Uint32 miny = 0.0f;
+    Uint32 maxy = h - shipData.rect.h;
+
+#define SINT16_MAX ((float)(0x7FFF))
+
+    /* update velocity from accelerometer
+       the factor SDL_IPHONE_MAX_G_FORCE / SINT16_MAX converts between
+       SDL's units reported from the joytick, and units of g-force, as reported by the accelerometer
+     */
+    shipData.vx +=
+        ax * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT *
+        deltaMilliseconds;
+    shipData.vy +=
+        ay * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT *
+        deltaMilliseconds;
+
+    speed = sqrt(shipData.vx * shipData.vx + shipData.vy * shipData.vy);
+
+    if (speed > 0) {
+        /* compensate for friction */
+        float dirx = shipData.vx / speed;   /* normalized x velocity */
+        float diry = shipData.vy / speed;   /* normalized y velocity */
+
+        /* update velocity due to friction */
+        if (speed - FRICTION * deltaMilliseconds > 0) {
+            /* apply friction */
+            shipData.vx -= dirx * FRICTION * deltaMilliseconds;
+            shipData.vy -= diry * FRICTION * deltaMilliseconds;
+        } else {
+            /* applying friction would MORE than stop the ship, so just stop the ship */
+            shipData.vx = 0.0f;
+            shipData.vy = 0.0f;
+        }
+    }
+
+    /* update ship location */
+    shipData.x += shipData.vx * deltaMilliseconds;
+    shipData.y += shipData.vy * deltaMilliseconds;
+
+    if (shipData.x > maxx) {
+        shipData.x = maxx;
+        shipData.vx = -shipData.vx * DAMPING;
+    } else if (shipData.x < minx) {
+        shipData.x = minx;
+        shipData.vx = -shipData.vx * DAMPING;
+    }
+    if (shipData.y > maxy) {
+        shipData.y = maxy;
+        shipData.vy = -shipData.vy * DAMPING;
+    } else if (shipData.y < miny) {
+        shipData.y = miny;
+        shipData.vy = -shipData.vy * DAMPING;
+    }
+
+    /* draw the background */
+    SDL_RenderCopy(renderer, space, NULL, NULL);
+
+    /* draw the ship */
+    shipData.rect.x = shipData.x;
+    shipData.rect.y = shipData.y;
+
+    SDL_RenderCopy(renderer, ship, NULL, &shipData.rect);
+
+    /* update screen */
+    SDL_RenderPresent(renderer);
+
+}
+
+void
+initializeTextures(SDL_Renderer *renderer)
+{
+
+    SDL_Surface *bmp_surface;
+
+    /* load the ship */
+    bmp_surface = SDL_LoadBMP("ship.bmp");
+    if (bmp_surface == NULL) {
+        fatalError("could not ship.bmp");
+    }
+    /* set blue to transparent on the ship */
+    SDL_SetColorKey(bmp_surface, 1,
+                    SDL_MapRGB(bmp_surface->format, 0, 0, 255));
+
+    /* create ship texture from surface */
+    ship = SDL_CreateTextureFromSurface(renderer, bmp_surface);
+    if (ship == 0) {
+        fatalError("could not create ship texture");
+    }
+    SDL_SetTextureBlendMode(ship, SDL_BLENDMODE_BLEND);
+
+    /* set the width and height of the ship from the surface dimensions */
+    shipData.rect.w = bmp_surface->w;
+    shipData.rect.h = bmp_surface->h;
+
+    SDL_FreeSurface(bmp_surface);
+
+    /* load the space background */
+    bmp_surface = SDL_LoadBMP("space.bmp");
+    if (bmp_surface == NULL) {
+        fatalError("could not load space.bmp");
+    }
+    /* create space texture from surface */
+    space = SDL_CreateTextureFromSurface(renderer, bmp_surface);
+    if (space == 0) {
+        fatalError("could not create space texture");
+    }
+    SDL_FreeSurface(bmp_surface);
+
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+
+    SDL_Window *window;         /* main window */
+    SDL_Renderer *renderer;
+    int done;                   /* should we clean up and exit? */
+    int w, h;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+
+    /* create main window and renderer */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_ALLOW_HIGHDPI);
+    renderer = SDL_CreateRenderer(window, 0, 0);
+    
+    SDL_GetWindowSize(window, &w, &h);
+    SDL_RenderSetLogicalSize(renderer, w, h);
+
+    /* print out some info about joysticks and try to open accelerometer for use */
+    printf("There are %d joysticks available\n", SDL_NumJoysticks());
+    printf("Default joystick (index 0) is %s\n", SDL_JoystickName(0));
+    accelerometer = SDL_JoystickOpen(0);
+    if (accelerometer == NULL) {
+        fatalError("Could not open joystick (accelerometer)");
+    }
+    printf("joystick number of axis = %d\n",
+           SDL_JoystickNumAxes(accelerometer));
+    printf("joystick number of hats = %d\n",
+           SDL_JoystickNumHats(accelerometer));
+    printf("joystick number of balls = %d\n",
+           SDL_JoystickNumBalls(accelerometer));
+    printf("joystick number of buttons = %d\n",
+           SDL_JoystickNumButtons(accelerometer));
+
+    /* load graphics */
+    initializeTextures(renderer);
+
+    /* setup ship */
+    shipData.x = (w - shipData.rect.w) / 2;
+    shipData.y = (h - shipData.rect.h) / 2;
+    shipData.vx = 0.0f;
+    shipData.vy = 0.0f;
+
+    done = 0;
+    /* enter main loop */
+    while (!done) {
+        double deltaTime = updateDeltaTime();
+        SDL_Event event;
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+        }
+        render(renderer, w, h, deltaTime);
+        SDL_Delay(1);
+    }
+
+    /* delete textures */
+    SDL_DestroyTexture(ship);
+    SDL_DestroyTexture(space);
+
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+
+}
diff --git a/Xcode-iOS/Demos/src/common.c b/Xcode-iOS/Demos/src/common.c
new file mode 100644
index 0000000..e15fb5f
--- /dev/null
+++ b/Xcode-iOS/Demos/src/common.c
@@ -0,0 +1,56 @@
+/*
+ *  common.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "common.h"
+#include "SDL.h"
+#include <stdlib.h>
+
+/*
+    Produces a random int x, min <= x <= max
+    following a uniform distribution
+*/
+int
+randomInt(int min, int max)
+{
+    return min + rand() % (max - min + 1);
+}
+
+/*
+    Produces a random float x, min <= x <= max
+    following a uniform distribution
+ */
+float
+randomFloat(float min, float max)
+{
+    return rand() / (float) RAND_MAX *(max - min) + min;
+}
+
+void
+fatalError(const char *string)
+{
+    printf("%s: %s\n", string, SDL_GetError());
+    SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, string, SDL_GetError(), NULL);
+    exit(1);
+}
+
+static Uint64 prevTime = 0;
+
+double
+updateDeltaTime(void)
+{
+    Uint64 curTime;
+    double deltaTime;
+
+    if (prevTime == 0) {
+        prevTime = SDL_GetPerformanceCounter();
+    }
+
+    curTime = SDL_GetPerformanceCounter();
+    deltaTime = (double) (curTime - prevTime) / (double) SDL_GetPerformanceFrequency();
+    prevTime = curTime;
+
+    return deltaTime;
+}
diff --git a/Xcode-iOS/Demos/src/common.h b/Xcode-iOS/Demos/src/common.h
new file mode 100644
index 0000000..6047508
--- /dev/null
+++ b/Xcode-iOS/Demos/src/common.h
@@ -0,0 +1,10 @@
+/*
+ *  common.h
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+extern int randomInt(int min, int max);
+extern float randomFloat(float min, float max);
+extern void fatalError(const char *string);
+extern double updateDeltaTime(void);
diff --git a/Xcode-iOS/Demos/src/fireworks.c b/Xcode-iOS/Demos/src/fireworks.c
new file mode 100644
index 0000000..2c4f621
--- /dev/null
+++ b/Xcode-iOS/Demos/src/fireworks.c
@@ -0,0 +1,474 @@
+/*
+ *  fireworks.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include "SDL_opengles.h"
+#include "common.h"
+#include <math.h>
+#include <time.h>
+
+#define ACCEL 0.0001f           /* acceleration due to gravity, units in pixels per millesecond squared */
+#define WIND_RESISTANCE 0.00005f        /* acceleration per unit velocity due to wind resistance */
+#define MAX_PARTICLES 2000      /* maximum number of particles displayed at once */
+
+static GLuint particleTextureID;        /* OpenGL particle texture id */
+static SDL_bool pointSizeExtensionSupported;    /* is GL_OES_point_size_array supported ? */
+static float pointSizeScale;
+/*
+    used to describe what type of particle a given struct particle is.
+    emitter - this particle flies up, shooting off trail particles, then finally explodes into dust particles.
+    trail   - shoots off, following emitter particle
+    dust    - radiates outwards from emitter explosion
+*/
+enum particleType
+{
+    emitter = 0,
+    trail,
+    dust
+};
+/*
+    struct particle is used to describe each particle displayed on screen
+*/
+struct particle
+{
+    GLfloat x;                  /* x position of particle */
+    GLfloat y;                  /* y position of particle */
+    GLubyte color[4];           /* rgba color of particle */
+    GLfloat size;               /* size of particle in pixels */
+    GLfloat xvel;               /* x velocity of particle in pixels per milesecond */
+    GLfloat yvel;               /* y velocity of particle in pixels per millescond */
+    int isActive;               /* if not active, then particle is overwritten */
+    enum particleType type;     /* see enum particleType */
+} particles[MAX_PARTICLES];     /* this array holds all our particles */
+
+static int num_active_particles;        /* how many members of the particle array are actually being drawn / animated? */
+static int screen_w, screen_h;
+
+/* function declarations */
+void spawnTrailFromEmitter(struct particle *emitter);
+void spawnEmitterParticle(GLfloat x, GLfloat y);
+void explodeEmitter(struct particle *emitter);
+void initializeParticles(void);
+void initializeTexture();
+int nextPowerOfTwo(int x);
+void drawParticles();
+void stepParticles(double deltaTime);
+
+/*  helper function (used in texture loading)
+    returns next power of two greater than or equal to x
+*/
+int
+nextPowerOfTwo(int x)
+{
+    int val = 1;
+    while (val < x) {
+        val *= 2;
+    }
+    return val;
+}
+
+/*
+    steps each active particle by timestep deltaTime
+*/
+void
+stepParticles(double deltaTime)
+{
+    float deltaMilliseconds = deltaTime * 1000;
+    int i;
+    struct particle *slot = particles;
+    struct particle *curr = particles;
+    for (i = 0; i < num_active_particles; i++) {
+        /* is the particle actually active, or is it marked for deletion? */
+        if (curr->isActive) {
+            /* is the particle off the screen? */
+            if (curr->y > screen_h)
+                curr->isActive = 0;
+            else if (curr->y < 0)
+                curr->isActive = 0;
+            if (curr->x > screen_w)
+                curr->isActive = 0;
+            else if (curr->x < 0)
+                curr->isActive = 0;
+
+            /* step velocity, then step position */
+            curr->yvel += ACCEL * deltaMilliseconds;
+            curr->xvel += 0.0f;
+            curr->y += curr->yvel * deltaMilliseconds;
+            curr->x += curr->xvel * deltaMilliseconds;
+
+            /* particle behavior */
+            if (curr->type == emitter) {
+                /* if we're an emitter, spawn a trail */
+                spawnTrailFromEmitter(curr);
+                /* if we've reached our peak, explode */
+                if (curr->yvel > 0.0) {
+                    explodeEmitter(curr);
+                }
+            } else {
+                float speed =
+                    sqrt(curr->xvel * curr->xvel + curr->yvel * curr->yvel);
+                /*      if wind resistance is not powerful enough to stop us completely,
+                   then apply winde resistance, otherwise just stop us completely */
+                if (WIND_RESISTANCE * deltaMilliseconds < speed) {
+                    float normx = curr->xvel / speed;
+                    float normy = curr->yvel / speed;
+                    curr->xvel -=
+                        normx * WIND_RESISTANCE * deltaMilliseconds;
+                    curr->yvel -=
+                        normy * WIND_RESISTANCE * deltaMilliseconds;
+                } else {
+                    curr->xvel = curr->yvel = 0;        /* stop particle */
+                }
+
+                if (curr->color[3] <= deltaMilliseconds * 0.1275f) {
+                    /* if this next step will cause us to fade out completely
+                       then just mark for deletion */
+                    curr->isActive = 0;
+                } else {
+                    /* otherwise, let's fade a bit more */
+                    curr->color[3] -= deltaMilliseconds * 0.1275f;
+                }
+
+                /* if we're a dust particle, shrink our size */
+                if (curr->type == dust)
+                    curr->size -= deltaMilliseconds * 0.010f;
+
+            }
+
+            /* if we're still active, pack ourselves in the array next
+               to the last active guy (pack the array tightly) */
+            if (curr->isActive)
+                *(slot++) = *curr;
+        }                       /* endif (curr->isActive) */
+        curr++;
+    }
+    /* the number of active particles is computed as the difference between
+       old number of active particles, where slot points, and the
+       new size of the array, where particles points */
+    num_active_particles = (int) (slot - particles);
+}
+
+/*
+    This draws all the particles shown on screen
+*/
+void
+drawParticles()
+{
+
+    /* draw the background */
+    glClear(GL_COLOR_BUFFER_BIT);
+
+    /* set up the position and color pointers */
+    glVertexPointer(2, GL_FLOAT, sizeof(struct particle), particles);
+    glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(struct particle),
+                   particles[0].color);
+
+    if (pointSizeExtensionSupported) {
+        /* pass in our array of point sizes */
+        glPointSizePointerOES(GL_FLOAT, sizeof(struct particle),
+                              &(particles[0].size));
+    }
+
+    /* draw our particles! */
+    glDrawArrays(GL_POINTS, 0, num_active_particles);
+
+}
+
+/*
+    This causes an emitter to explode in a circular bloom of dust particles
+*/
+void
+explodeEmitter(struct particle *emitter)
+{
+    /* first off, we're done with this particle, so turn active off */
+    emitter->isActive = 0;
+    int i;
+    for (i = 0; i < 200; i++) {
+
+        if (num_active_particles >= MAX_PARTICLES)
+            return;
+
+        /* come up with a random angle and speed for new particle */
+        float theta = randomFloat(0, 2.0f * 3.141592);
+        float exponent = 3.0f;
+        float speed = randomFloat(0.00, powf(0.17, exponent));
+        speed = powf(speed, 1.0f / exponent);
+
+        /* select the particle at the end of our array */
+        struct particle *p = &particles[num_active_particles];
+
+        /* set the particles properties */
+        p->xvel = speed * cos(theta);
+        p->yvel = speed * sin(theta);
+        p->x = emitter->x + emitter->xvel;
+        p->y = emitter->y + emitter->yvel;
+        p->isActive = 1;
+        p->type = dust;
+        p->size = 15 * pointSizeScale;
+        /* inherit emitter's color */
+        p->color[0] = emitter->color[0];
+        p->color[1] = emitter->color[1];
+        p->color[2] = emitter->color[2];
+        p->color[3] = 255;
+        /* our array has expanded at the end */
+        num_active_particles++;
+    }
+
+}
+
+/*
+    This spawns a trail particle from an emitter
+*/
+void
+spawnTrailFromEmitter(struct particle *emitter)
+{
+
+    if (num_active_particles >= MAX_PARTICLES)
+        return;
+
+    /* select the particle at the slot at the end of our array */
+    struct particle *p = &particles[num_active_particles];
+
+    /* set position and velocity to roughly that of the emitter */
+    p->x = emitter->x + randomFloat(-3.0, 3.0);
+    p->y = emitter->y + emitter->size / 2.0f;
+    p->xvel = emitter->xvel + randomFloat(-0.005, 0.005);
+    p->yvel = emitter->yvel + 0.1;
+
+    /* set the color to a random-ish orangy type color */
+    p->color[0] = (0.8f + randomFloat(-0.1, 0.0)) * 255;
+    p->color[1] = (0.4f + randomFloat(-0.1, 0.1)) * 255;
+    p->color[2] = (0.0f + randomFloat(0.0, 0.2)) * 255;
+    p->color[3] = (0.7f) * 255;
+
+    /* set other attributes */
+    p->size = 10 * pointSizeScale;
+    p->type = trail;
+    p->isActive = 1;
+
+    /* our array has expanded at the end */
+    num_active_particles++;
+
+}
+
+/*
+    spawns a new emitter particle at the bottom of the screen
+    destined for the point (x,y).
+*/
+void
+spawnEmitterParticle(GLfloat x, GLfloat y)
+{
+
+    if (num_active_particles >= MAX_PARTICLES)
+        return;
+
+    /* find particle at endpoint of array */
+    struct particle *p = &particles[num_active_particles];
+
+    /* set the color randomly */
+    switch (rand() % 4) {
+    case 0:
+        p->color[0] = 255;
+        p->color[1] = 100;
+        p->color[2] = 100;
+        break;
+    case 1:
+        p->color[0] = 100;
+        p->color[1] = 255;
+        p->color[2] = 100;
+        break;
+    case 2:
+        p->color[0] = 100;
+        p->color[1] = 100;
+        p->color[2] = 255;
+        break;
+    case 3:
+        p->color[0] = 255;
+        p->color[1] = 150;
+        p->color[2] = 50;
+        break;
+    }
+    p->color[3] = 255;
+    /* set position to (x, screen_h) */
+    p->x = x;
+    p->y = screen_h;
+    /* set velocity so that terminal point is (x,y) */
+    p->xvel = 0;
+    p->yvel = -sqrt(2 * ACCEL * (screen_h - y));
+    /* set other attributes */
+    p->size = 10 * pointSizeScale;
+    p->type = emitter;
+    p->isActive = 1;
+    /* our array has expanded at the end */
+    num_active_particles++;
+}
+
+/* just sets the endpoint of the particle array to element zero */
+void
+initializeParticles(void)
+{
+    num_active_particles = 0;
+}
+
+/*
+    loads the particle texture
+ */
+void
+initializeTexture()
+{
+
+    int bpp;                    /* texture bits per pixel */
+    Uint32 Rmask, Gmask, Bmask, Amask;  /* masks for pixel format passed into OpenGL */
+    SDL_Surface *bmp_surface;   /* the bmp is loaded here */
+    SDL_Surface *bmp_surface_rgba8888;  /* this serves as a destination to convert the BMP
+                                           to format passed into OpenGL */
+
+    bmp_surface = SDL_LoadBMP("stroke.bmp");
+    if (bmp_surface == NULL) {
+        fatalError("could not load stroke.bmp");
+    }
+
+    /* Grab info about format that will be passed into OpenGL */
+    SDL_PixelFormatEnumToMasks(SDL_PIXELFORMAT_ABGR8888, &bpp, &Rmask, &Gmask,
+                               &Bmask, &Amask);
+    /* Create surface that will hold pixels passed into OpenGL */
+    bmp_surface_rgba8888 =
+        SDL_CreateRGBSurface(0, bmp_surface->w, bmp_surface->h, bpp, Rmask,
+                             Gmask, Bmask, Amask);
+    /* Blit to this surface, effectively converting the format */
+    SDL_BlitSurface(bmp_surface, NULL, bmp_surface_rgba8888, NULL);
+
+    glGenTextures(1, &particleTextureID);
+    glBindTexture(GL_TEXTURE_2D, particleTextureID);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
+                 nextPowerOfTwo(bmp_surface->w),
+                 nextPowerOfTwo(bmp_surface->h),
+                 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    /* this is where we actually pass in the pixel data */
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bmp_surface->w, bmp_surface->h, 0,
+                 GL_RGBA, GL_UNSIGNED_BYTE, bmp_surface_rgba8888->pixels);
+
+    /* free bmp surface and converted bmp surface */
+    SDL_FreeSurface(bmp_surface);
+    SDL_FreeSurface(bmp_surface_rgba8888);
+
+}
+
+int
+main(int argc, char *argv[])
+{
+    SDL_Window *window;         /* main window */
+    SDL_GLContext context;
+    int drawableW, drawableH;
+    int done;                   /* should we clean up and exit? */
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+    /* seed the random number generator */
+    srand(time(NULL));
+    /*
+       request some OpenGL parameters
+       that may speed drawing
+     */
+    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
+    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
+    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
+    SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0);
+    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
+    SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 0);
+    SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
+
+    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
+    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
+
+    /* create main window and renderer */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480,
+                                SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
+    context = SDL_GL_CreateContext(window);
+
+    /* The window size and drawable size may be different when highdpi is enabled,
+     * due to the increased pixel density of the drawable. */
+    SDL_GetWindowSize(window, &screen_w, &screen_h);
+    SDL_GL_GetDrawableSize(window, &drawableW, &drawableH);
+
+    /* In OpenGL, point sizes are always in pixels. We don't want them looking
+     * tiny on a retina screen. */
+    pointSizeScale = (float) drawableH / (float) screen_h;
+
+    /* load the particle texture */
+    initializeTexture();
+
+    /*      check if GL_POINT_SIZE_ARRAY_OES is supported
+       this is used to give each particle its own size
+     */
+    pointSizeExtensionSupported =
+        SDL_GL_ExtensionSupported("GL_OES_point_size_array");
+
+    /* set up some OpenGL state */
+    glDisable(GL_DEPTH_TEST);
+    glDisable(GL_CULL_FACE);
+
+    glMatrixMode(GL_MODELVIEW);
+    glLoadIdentity();
+
+    glViewport(0, 0, drawableW, drawableH);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrthof((GLfloat) 0,
+             (GLfloat) screen_w,
+             (GLfloat) screen_h,
+             (GLfloat) 0, 0.0, 1.0);
+
+    glEnable(GL_TEXTURE_2D);
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glEnableClientState(GL_COLOR_ARRAY);
+
+    glEnable(GL_POINT_SPRITE_OES);
+    glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, 1);
+
+    if (pointSizeExtensionSupported) {
+        /* we use this to set the sizes of all the particles */
+        glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
+    } else {
+        /* if extension not available then all particles have size 10 */
+        glPointSize(10 * pointSizeScale);
+    }
+
+    done = 0;
+    /* enter main loop */
+    while (!done) {
+        SDL_Event event;
+        double deltaTime = updateDeltaTime();
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+            if (event.type == SDL_MOUSEBUTTONDOWN) {
+                int x, y;
+                SDL_GetMouseState(&x, &y);
+                spawnEmitterParticle(x, y);
+            }
+        }
+        stepParticles(deltaTime);
+        drawParticles();
+        SDL_GL_SwapWindow(window);
+        SDL_Delay(1);
+    }
+
+    /* delete textures */
+    glDeleteTextures(1, &particleTextureID);
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+}
diff --git a/Xcode-iOS/Demos/src/happy.c b/Xcode-iOS/Demos/src/happy.c
new file mode 100644
index 0000000..658a65f
--- /dev/null
+++ b/Xcode-iOS/Demos/src/happy.c
@@ -0,0 +1,180 @@
+/*
+ *  happy.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include "common.h"
+
+#define NUM_HAPPY_FACES 100     /* number of faces to draw */
+#define HAPPY_FACE_SIZE 32      /* width and height of happyface */
+
+static SDL_Texture *texture = 0;    /* reference to texture holding happyface */
+
+static struct
+{
+    float x, y;                 /* position of happyface */
+    float xvel, yvel;           /* velocity of happyface */
+} faces[NUM_HAPPY_FACES];
+
+/*
+    Sets initial positions and velocities of happyfaces
+    units of velocity are pixels per millesecond
+*/
+void
+initializeHappyFaces(SDL_Renderer *renderer)
+{
+    int i;
+    int w;
+    int h;
+    SDL_RenderGetLogicalSize(renderer, &w, &h);
+
+    for (i = 0; i < NUM_HAPPY_FACES; i++) {
+        faces[i].x = randomFloat(0.0f, w - HAPPY_FACE_SIZE);
+        faces[i].y = randomFloat(0.0f, h - HAPPY_FACE_SIZE);
+        faces[i].xvel = randomFloat(-60.0f, 60.0f);
+        faces[i].yvel = randomFloat(-60.0f, 60.0f);
+    }
+}
+
+void
+render(SDL_Renderer *renderer, double deltaTime)
+{
+    int i;
+    SDL_Rect srcRect;
+    SDL_Rect dstRect;
+    int w;
+    int h;
+
+    SDL_RenderGetLogicalSize(renderer, &w, &h);
+
+    /* setup boundaries for happyface bouncing */
+    int maxx = w - HAPPY_FACE_SIZE;
+    int maxy = h - HAPPY_FACE_SIZE;
+    int minx = 0;
+    int miny = 0;
+
+    /* setup rects for drawing */
+    srcRect.x = 0;
+    srcRect.y = 0;
+    srcRect.w = HAPPY_FACE_SIZE;
+    srcRect.h = HAPPY_FACE_SIZE;
+    dstRect.w = HAPPY_FACE_SIZE;
+    dstRect.h = HAPPY_FACE_SIZE;
+
+    /* fill background in with black */
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+
+    /*
+       loop through all the happy faces:
+       - update position
+       - update velocity (if boundary is hit)
+       - draw
+     */
+    for (i = 0; i < NUM_HAPPY_FACES; i++) {
+        faces[i].x += faces[i].xvel * deltaTime;
+        faces[i].y += faces[i].yvel * deltaTime;
+        if (faces[i].x > maxx) {
+            faces[i].x = maxx;
+            faces[i].xvel = -faces[i].xvel;
+        } else if (faces[i].y > maxy) {
+            faces[i].y = maxy;
+            faces[i].yvel = -faces[i].yvel;
+        }
+        if (faces[i].x < minx) {
+            faces[i].x = minx;
+            faces[i].xvel = -faces[i].xvel;
+        } else if (faces[i].y < miny) {
+            faces[i].y = miny;
+            faces[i].yvel = -faces[i].yvel;
+        }
+        dstRect.x = faces[i].x;
+        dstRect.y = faces[i].y;
+        SDL_RenderCopy(renderer, texture, &srcRect, &dstRect);
+    }
+    /* update screen */
+    SDL_RenderPresent(renderer);
+
+}
+
+/*
+    loads the happyface graphic into a texture
+*/
+void
+initializeTexture(SDL_Renderer *renderer)
+{
+    SDL_Surface *bmp_surface;
+    /* load the bmp */
+    bmp_surface = SDL_LoadBMP("icon.bmp");
+    if (bmp_surface == NULL) {
+        fatalError("could not load bmp");
+    }
+    /* set white to transparent on the happyface */
+    SDL_SetColorKey(bmp_surface, 1,
+                    SDL_MapRGB(bmp_surface->format, 255, 255, 255));
+
+    /* convert RGBA surface to texture */
+    texture = SDL_CreateTextureFromSurface(renderer, bmp_surface);
+    if (texture == 0) {
+        fatalError("could not create texture");
+    }
+    SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
+
+    /* free up allocated memory */
+    SDL_FreeSurface(bmp_surface);
+}
+
+int
+main(int argc, char *argv[])
+{
+    SDL_Window *window;
+    SDL_Renderer *renderer;
+    int done;
+    int width;
+    int height;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+
+    /* The specified window size doesn't matter - except for its aspect ratio,
+     * which determines whether the window is in portrait or landscape on iOS
+     * (if SDL_WINDOW_RESIZABLE isn't specified). */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_ALLOW_HIGHDPI);
+
+    renderer = SDL_CreateRenderer(window, -1, 0);
+
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
+    initializeTexture(renderer);
+    initializeHappyFaces(renderer);
+
+
+    /* main loop */
+    done = 0;
+    while (!done) {
+        SDL_Event event;
+        double deltaTime = updateDeltaTime();
+
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+        }
+
+        render(renderer, deltaTime);
+        SDL_Delay(1);
+    }
+
+    /* cleanup */
+    SDL_DestroyTexture(texture);
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+
+}
diff --git a/Xcode-iOS/Demos/src/keyboard.c b/Xcode-iOS/Demos/src/keyboard.c
new file mode 100644
index 0000000..cfbe4e6
--- /dev/null
+++ b/Xcode-iOS/Demos/src/keyboard.c
@@ -0,0 +1,301 @@
+/*
+ *  keyboard.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include "common.h"
+
+#define TEST_INPUT_RECT
+
+#define GLYPH_SIZE_IMAGE 16     /* size of glyphs (characters) in the bitmap font file */
+#define GLYPH_SIZE_SCREEN 32    /* size of glyphs (characters) as shown on the screen */
+
+#define MAX_CHARS 1024
+
+static SDL_Texture *texture; /* texture where we'll hold our font */
+
+static SDL_Renderer *renderer;
+static int numChars = 0;        /* number of characters we've typed so far */
+static SDL_Color bg_color = { 50, 50, 100, 255 };       /* color of background */
+
+static int glyphs[MAX_CHARS];
+
+/* this structure maps a scancode to an index in our bitmap font.
+   it also contains data about under which modifiers the mapping is valid
+   (for example, we don't want shift + 1 to produce the character '1',
+   but rather the character '!')
+*/
+typedef struct
+{
+    SDL_Scancode scancode;      /* scancode of the key we want to map */
+    int allow_no_mod;           /* is the map valid if the key has no modifiers? */
+    SDL_Keymod mod;             /* what modifiers are allowed for the mapping */
+    int index;                  /* what index in the font does the scancode map to */
+} fontMapping;
+
+#define TABLE_SIZE 51           /* size of our table which maps keys and modifiers to font indices */
+
+/* Below is the table that defines the mapping between scancodes and modifiers to indices in the
+   bitmap font.  As an example, then line '{ SDL_SCANCODE_A, 1, KMOD_SHIFT, 33 }' means, map
+   the key A (which has scancode SDL_SCANCODE_A) to index 33 in the font (which is a picture of an A),
+   The '1' means that the mapping is valid even if there are no modifiers, and KMOD_SHIFT means the
+   mapping is also valid if the user is holding shift.
+*/
+fontMapping map[TABLE_SIZE] = {
+
+    {SDL_SCANCODE_A, 1, KMOD_SHIFT, 33},        /* A */
+    {SDL_SCANCODE_B, 1, KMOD_SHIFT, 34},        /* B */
+    {SDL_SCANCODE_C, 1, KMOD_SHIFT, 35},        /* C */
+    {SDL_SCANCODE_D, 1, KMOD_SHIFT, 36},        /* D */
+    {SDL_SCANCODE_E, 1, KMOD_SHIFT, 37},        /* E */
+    {SDL_SCANCODE_F, 1, KMOD_SHIFT, 38},        /* F */
+    {SDL_SCANCODE_G, 1, KMOD_SHIFT, 39},        /* G */
+    {SDL_SCANCODE_H, 1, KMOD_SHIFT, 40},        /* H */
+    {SDL_SCANCODE_I, 1, KMOD_SHIFT, 41},        /* I */
+    {SDL_SCANCODE_J, 1, KMOD_SHIFT, 42},        /* J */
+    {SDL_SCANCODE_K, 1, KMOD_SHIFT, 43},        /* K */
+    {SDL_SCANCODE_L, 1, KMOD_SHIFT, 44},        /* L */
+    {SDL_SCANCODE_M, 1, KMOD_SHIFT, 45},        /* M */
+    {SDL_SCANCODE_N, 1, KMOD_SHIFT, 46},        /* N */
+    {SDL_SCANCODE_O, 1, KMOD_SHIFT, 47},        /* O */
+    {SDL_SCANCODE_P, 1, KMOD_SHIFT, 48},        /* P */
+    {SDL_SCANCODE_Q, 1, KMOD_SHIFT, 49},        /* Q */
+    {SDL_SCANCODE_R, 1, KMOD_SHIFT, 50},        /* R */
+    {SDL_SCANCODE_S, 1, KMOD_SHIFT, 51},        /* S */
+    {SDL_SCANCODE_T, 1, KMOD_SHIFT, 52},        /* T */
+    {SDL_SCANCODE_U, 1, KMOD_SHIFT, 53},        /* U */
+    {SDL_SCANCODE_V, 1, KMOD_SHIFT, 54},        /* V */
+    {SDL_SCANCODE_W, 1, KMOD_SHIFT, 55},        /* W */
+    {SDL_SCANCODE_X, 1, KMOD_SHIFT, 56},        /* X */
+    {SDL_SCANCODE_Y, 1, KMOD_SHIFT, 57},        /* Y */
+    {SDL_SCANCODE_Z, 1, KMOD_SHIFT, 58},        /* Z */
+    {SDL_SCANCODE_0, 1, 0, 16}, /* 0 */
+    {SDL_SCANCODE_1, 1, 0, 17}, /* 1 */
+    {SDL_SCANCODE_2, 1, 0, 18}, /* 2 */
+    {SDL_SCANCODE_3, 1, 0, 19}, /* 3 */
+    {SDL_SCANCODE_4, 1, 0, 20}, /* 4 */
+    {SDL_SCANCODE_5, 1, 0, 21}, /* 5 */
+    {SDL_SCANCODE_6, 1, 0, 22}, /* 6 */
+    {SDL_SCANCODE_7, 1, 0, 23}, /* 7 */
+    {SDL_SCANCODE_8, 1, 0, 24}, /* 8 */
+    {SDL_SCANCODE_9, 1, 0, 25}, /* 9 */
+    {SDL_SCANCODE_SPACE, 1, 0, 0},      /* ' ' */
+    {SDL_SCANCODE_1, 0, KMOD_SHIFT, 1}, /* ! */
+    {SDL_SCANCODE_SLASH, 0, KMOD_SHIFT, 31},    /* ? */
+    {SDL_SCANCODE_SLASH, 1, 0, 15},     /* / */
+    {SDL_SCANCODE_COMMA, 1, 0, 12},     /* , */
+    {SDL_SCANCODE_SEMICOLON, 1, 0, 27}, /* ; */
+    {SDL_SCANCODE_SEMICOLON, 0, KMOD_SHIFT, 26},        /* : */
+    {SDL_SCANCODE_PERIOD, 1, 0, 14},    /* . */
+    {SDL_SCANCODE_MINUS, 1, 0, 13},     /* - */
+    {SDL_SCANCODE_EQUALS, 0, KMOD_SHIFT, 11},   /* = */
+    {SDL_SCANCODE_APOSTROPHE, 1, 0, 7}, /* ' */
+    {SDL_SCANCODE_APOSTROPHE, 0, KMOD_SHIFT, 2},        /* " */
+    {SDL_SCANCODE_5, 0, KMOD_SHIFT, 5}, /* % */
+
+};
+
+/*
+    This function maps an SDL_KeySym to an index in the bitmap font.
+    It does so by scanning through the font mapping table one entry
+    at a time.
+
+    If a match is found (scancode and allowed modifiers), the proper
+    index is returned.
+
+    If there is no entry for the key, -1 is returned
+*/
+int
+keyToGlyphIndex(SDL_Keysym key)
+{
+    int i, index = -1;
+    for (i = 0; i < TABLE_SIZE; i++) {
+        fontMapping compare = map[i];
+        if (key.scancode == compare.scancode) {
+            /* if this entry is valid with no key mod and we have no keymod, or if
+               the key's modifiers are allowed modifiers for that mapping */
+            if ((compare.allow_no_mod && key.mod == 0)
+                || (key.mod & compare.mod)) {
+                index = compare.index;
+                break;
+            }
+        }
+    }
+    return index;
+}
+
+/*
+    This function returns and x,y position for a given character number.
+    It is used for positioning each character of text
+*/
+void
+getPositionForCharNumber(int n, int *x, int *y)
+{
+    int renderW, renderH;
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
+
+    int x_padding = 16;         /* padding space on left and right side of screen */
+    int y_padding = 32;         /* padding space at top of screen */
+    /* figure out the number of characters that can fit horizontally across the screen */
+    int max_x_chars = (renderW - 2 * x_padding) / GLYPH_SIZE_SCREEN;
+    int line_separation = 5;    /* pixels between each line */
+    *x = (n % max_x_chars) * GLYPH_SIZE_SCREEN + x_padding;
+#ifdef TEST_INPUT_RECT
+    *y = renderH - GLYPH_SIZE_SCREEN;
+#else
+    *y = (n / max_x_chars) * (GLYPH_SIZE_SCREEN + line_separation) + y_padding;
+#endif
+}
+
+void
+drawGlyph(int glyph, int positionIndex)
+{
+    int x, y;
+    getPositionForCharNumber(positionIndex, &x, &y);
+    SDL_Rect srcRect = { GLYPH_SIZE_IMAGE * glyph, 0, GLYPH_SIZE_IMAGE, GLYPH_SIZE_IMAGE };
+    SDL_Rect dstRect = { x, y, GLYPH_SIZE_SCREEN, GLYPH_SIZE_SCREEN };
+    SDL_RenderCopy(renderer, texture, &srcRect, &dstRect);
+}
+
+/* this function loads our font into an SDL_Texture and returns the SDL_Texture  */
+SDL_Texture*
+loadFont(void)
+{
+    SDL_Surface *surface = SDL_LoadBMP("kromasky_16x16.bmp");
+
+    if (!surface) {
+        printf("Error loading bitmap: %s\n", SDL_GetError());
+        return 0;
+    } else {
+        /* set the transparent color for the bitmap font (hot pink) */
+        SDL_SetColorKey(surface, 1, SDL_MapRGB(surface->format, 238, 0, 252));
+        /* now we convert the surface to our desired pixel format */
+        int format = SDL_PIXELFORMAT_ABGR8888;  /* desired texture format */
+        Uint32 Rmask, Gmask, Bmask, Amask;      /* masks for desired format */
+        int bpp;                /* bits per pixel for desired format */
+        SDL_PixelFormatEnumToMasks(format, &bpp, &Rmask, &Gmask, &Bmask,
+                                   &Amask);
+        SDL_Surface *converted =
+            SDL_CreateRGBSurface(0, surface->w, surface->h, bpp, Rmask, Gmask,
+                                 Bmask, Amask);
+        SDL_BlitSurface(surface, NULL, converted, NULL);
+        /* create our texture */
+        texture = SDL_CreateTextureFromSurface(renderer, converted);
+        if (texture == 0) {
+            printf("texture creation failed: %s\n", SDL_GetError());
+        } else {
+            /* set blend mode for our texture */
+            SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
+        }
+        SDL_FreeSurface(surface);
+        SDL_FreeSurface(converted);
+        return texture;
+    }
+}
+
+void
+draw()
+{
+    SDL_SetRenderDrawColor(renderer, bg_color.r, bg_color.g, bg_color.b, bg_color.a);
+    SDL_RenderClear(renderer);
+
+    for (int i = 0; i < numChars; i++) {
+        drawGlyph(glyphs[i], i);
+    }
+
+    drawGlyph(29, numChars); /* cursor is at index 29 in the bitmap font */
+
+    SDL_RenderPresent(renderer);
+}
+
+int
+main(int argc, char *argv[])
+{
+    SDL_Window *window;
+    SDL_Event event;            /* last event received */
+    SDL_Scancode scancode;      /* scancode of last key we pushed */
+    int width;
+    int height;
+    int done;
+    SDL_Rect textrect;
+
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        printf("Error initializing SDL: %s", SDL_GetError());
+    }
+    /* create window */
+    window = SDL_CreateWindow("iOS keyboard test", 0, 0, 0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI);
+    /* create renderer */
+    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC);
+
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
+    /* load up our font */
+    loadFont();
+    
+    /* Show onscreen keyboard */
+#ifdef TEST_INPUT_RECT
+    textrect.x = 0;
+    textrect.y = height - GLYPH_SIZE_IMAGE;
+    textrect.w = width;
+    textrect.h = GLYPH_SIZE_IMAGE;
+    SDL_SetTextInputRect(&textrect);
+#endif
+    SDL_StartTextInput();
+
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            switch (event.type) {
+            case SDL_QUIT:
+                done = 1;
+                break;
+            case SDL_WINDOWEVENT:
+                if (event.window.event == SDL_WINDOWEVENT_RESIZED) {
+					width = event.window.data1;
+					height = event.window.data2;
+                    SDL_RenderSetLogicalSize(renderer, width, height);
+#ifdef TEST_INPUT_RECT
+                    textrect.x = 0;
+                    textrect.y = height - GLYPH_SIZE_IMAGE;
+                    textrect.w = width;
+                    textrect.h = GLYPH_SIZE_IMAGE;
+                    SDL_SetTextInputRect(&textrect);
+#endif
+                }
+                break;
+            case SDL_KEYDOWN:
+                if (event.key.keysym.scancode == SDL_SCANCODE_BACKSPACE) {
+                    if (numChars > 0) {
+                        numChars--;
+                    }
+                } else if (numChars + 1 < MAX_CHARS) {
+                    int index = keyToGlyphIndex(event.key.keysym);
+                    if (index >= 0) {
+                        glyphs[numChars++] = index;
+                    }
+                }
+                break;
+            case SDL_MOUSEBUTTONUP:
+                /* mouse up toggles onscreen keyboard visibility */
+                if (SDL_IsTextInputActive()) {
+                    SDL_StopTextInput();
+                } else {
+                    SDL_StartTextInput();
+                }
+                break;
+            }
+        }
+
+        draw();
+        SDL_Delay(15);
+    }
+
+    SDL_DestroyTexture(texture);
+    SDL_DestroyRenderer(renderer);
+    SDL_DestroyWindow(window);
+    SDL_Quit();
+    return 0;
+}
diff --git a/Xcode-iOS/Demos/src/mixer.c b/Xcode-iOS/Demos/src/mixer.c
new file mode 100644
index 0000000..14945ad
--- /dev/null
+++ b/Xcode-iOS/Demos/src/mixer.c
@@ -0,0 +1,344 @@
+/*
+ *  mixer.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include "common.h"
+
+#define NUM_CHANNELS 8          /* max number of sounds we can play at once */
+#define NUM_DRUMS 4             /* number of drums in our set */
+
+static struct
+{
+    SDL_Rect rect;              /* where the button is drawn */
+    SDL_Color upColor;          /* color when button is not active */
+    SDL_Color downColor;        /* color when button is active */
+    int isPressed;              /* is the button being pressed ? */
+    int touchIndex;             /* what mouse (touch) index pressed the button ? */
+} buttons[NUM_DRUMS];
+
+struct sound
+{
+    Uint8 *buffer;              /* audio buffer for sound file */
+    Uint32 length;              /* length of the buffer (in bytes) */
+};
+
+/* this array holds the audio for the drum noises */
+static struct sound drums[NUM_DRUMS];
+
+/* function declarations */
+void handleMouseButtonDown(SDL_Event * event);
+void handleMouseButtonUp(SDL_Event * event);
+int playSound(struct sound *);
+void initializeButtons(SDL_Renderer *);
+void audioCallback(void *userdata, Uint8 * stream, int len);
+void loadSound(const char *file, struct sound *s);
+
+struct
+{
+    /* channel array holds information about currently playing sounds */
+    struct
+    {
+        Uint8 *position;        /* what is the current position in the buffer of this sound ? */
+        Uint32 remaining;       /* how many bytes remaining before we're done playing the sound ? */
+        Uint32 timestamp;       /* when did this sound start playing ? */
+    } channels[NUM_CHANNELS];
+    SDL_AudioSpec outputSpec;   /* what audio format are we using for output? */
+    int numSoundsPlaying;       /* how many sounds are currently playing */
+} mixer;
+
+/* sets up the buttons (color, position, state) */
+void
+initializeButtons(SDL_Renderer *renderer)
+{
+    int i;
+    int spacing = 10;           /* gap between drum buttons */
+    SDL_Rect buttonRect;        /* keeps track of where to position drum */
+    SDL_Color upColor = { 86, 86, 140, 255 };   /* color of drum when not pressed */
+    SDL_Color downColor = { 191, 191, 221, 255 };       /* color of drum when pressed */
+    int renderW, renderH;
+
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
+
+    buttonRect.x = spacing;
+    buttonRect.y = spacing;
+    buttonRect.w = renderW - 2 * spacing;
+    buttonRect.h = (renderH - (NUM_DRUMS + 1) * spacing) / NUM_DRUMS;
+
+    /* setup each button */
+    for (i = 0; i < NUM_DRUMS; i++) {
+
+        buttons[i].rect = buttonRect;
+        buttons[i].isPressed = 0;
+        buttons[i].upColor = upColor;
+        buttons[i].downColor = downColor;
+
+        buttonRect.y += spacing + buttonRect.h; /* setup y coordinate for next drum */
+
+    }
+}
+
+/*
+ loads a wav file (stored in 'file'), converts it to the mixer's output format,
+ and stores the resulting buffer and length in the sound structure
+ */
+void
+loadSound(const char *file, struct sound *s)
+{
+    SDL_AudioSpec spec;         /* the audio format of the .wav file */
+    SDL_AudioCVT cvt;           /* used to convert .wav to output format when formats differ */
+    int result;
+    if (SDL_LoadWAV(file, &spec, &s->buffer, &s->length) == NULL) {
+        fatalError("could not load .wav");
+    }
+    /* build the audio converter */
+    result = SDL_BuildAudioCVT(&cvt, spec.format, spec.channels, spec.freq,
+                               mixer.outputSpec.format,
+                               mixer.outputSpec.channels,
+                               mixer.outputSpec.freq);
+    if (result == -1) {
+        fatalError("could not build audio CVT");
+    } else if (result != 0) {
+        /*
+           this happens when the .wav format differs from the output format.
+           we convert the .wav buffer here
+         */
+        cvt.buf = (Uint8 *) SDL_malloc(s->length * cvt.len_mult);       /* allocate conversion buffer */
+        cvt.len = s->length;    /* set conversion buffer length */
+        SDL_memcpy(cvt.buf, s->buffer, s->length);      /* copy sound to conversion buffer */
+        if (SDL_ConvertAudio(&cvt) == -1) {     /* convert the sound */
+            fatalError("could not convert .wav");
+        }
+        SDL_free(s->buffer);    /* free the original (unconverted) buffer */
+        s->buffer = cvt.buf;    /* point sound buffer to converted buffer */
+        s->length = cvt.len_cvt;        /* set sound buffer's new length */
+    }
+}
+
+/* called from main event loop */
+void
+handleMouseButtonDown(SDL_Event * event)
+{
+
+    int x, y, mouseIndex, i, drumIndex;
+
+    mouseIndex = 0;
+    drumIndex = -1;
+
+    SDL_GetMouseState(&x, &y);
+    /* check if we hit any of the drum buttons */
+    for (i = 0; i < NUM_DRUMS; i++) {
+        if (x >= buttons[i].rect.x
+            && x < buttons[i].rect.x + buttons[i].rect.w
+            && y >= buttons[i].rect.y
+            && y < buttons[i].rect.y + buttons[i].rect.h) {
+            drumIndex = i;
+            break;
+        }
+    }
+    if (drumIndex != -1) {
+        /* if we hit a button */
+        buttons[drumIndex].touchIndex = mouseIndex;
+        buttons[drumIndex].isPressed = 1;
+        playSound(&drums[drumIndex]);
+    }
+
+}
+
+/* called from main event loop */
+void
+handleMouseButtonUp(SDL_Event * event)
+{
+    int i;
+    int mouseIndex = 0;
+    /* check if this should cause any of the buttons to become unpressed */
+    for (i = 0; i < NUM_DRUMS; i++) {
+        if (buttons[i].touchIndex == mouseIndex) {
+            buttons[i].isPressed = 0;
+        }
+    }
+}
+
+/* draws buttons to screen */
+void
+render(SDL_Renderer *renderer)
+{
+    int i;
+    SDL_SetRenderDrawColor(renderer, 50, 50, 50, 255);
+    SDL_RenderClear(renderer);       /* draw background (gray) */
+    /* draw the drum buttons */
+    for (i = 0; i < NUM_DRUMS; i++) {
+        SDL_Color color =
+            buttons[i].isPressed ? buttons[i].downColor : buttons[i].upColor;
+        SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
+        SDL_RenderFillRect(renderer, &buttons[i].rect);
+    }
+    /* update the screen */
+    SDL_RenderPresent(renderer);
+}
+
+/*
+    finds a sound channel in the mixer for a sound
+    and sets it up to start playing
+*/
+int
+playSound(struct sound *s)
+{
+    /*
+       find an empty channel to play on.
+       if no channel is available, use oldest channel
+     */
+    int i;
+    int selected_channel = -1;
+    int oldest_channel = 0;
+
+    if (mixer.numSoundsPlaying == 0) {
+        /* we're playing a sound now, so start audio callback back up */
+        SDL_PauseAudio(0);
+    }
+
+    /* find a sound channel to play the sound on */
+    for (i = 0; i < NUM_CHANNELS; i++) {
+        if (mixer.channels[i].position == NULL) {
+            /* if no sound on this channel, select it */
+            selected_channel = i;
+            break;
+        }
+        /* if this channel's sound is older than the oldest so far, set it to oldest */
+        if (mixer.channels[i].timestamp <
+            mixer.channels[oldest_channel].timestamp)
+            oldest_channel = i;
+    }
+
+    /* no empty channels, take the oldest one */
+    if (selected_channel == -1)
+        selected_channel = oldest_channel;
+    else
+        mixer.numSoundsPlaying++;
+
+    /* point channel data to wav data */
+    mixer.channels[selected_channel].position = s->buffer;
+    mixer.channels[selected_channel].remaining = s->length;
+    mixer.channels[selected_channel].timestamp = SDL_GetTicks();
+
+    return selected_channel;
+}
+
+/*
+    Called from SDL's audio system.  Supplies sound input with data by mixing together all
+    currently playing sound effects.
+*/
+void
+audioCallback(void *userdata, Uint8 * stream, int len)
+{
+    int i;
+    int copy_amt;
+    SDL_memset(stream, mixer.outputSpec.silence, len);  /* initialize buffer to silence */
+    /* for each channel, mix in whatever is playing on that channel */
+    for (i = 0; i < NUM_CHANNELS; i++) {
+        if (mixer.channels[i].position == NULL) {
+            /* if no sound is playing on this channel */
+            continue;           /* nothing to do for this channel */
+        }
+
+        /* copy len bytes to the buffer, unless we have fewer than len bytes remaining */
+        copy_amt =
+            mixer.channels[i].remaining <
+            len ? mixer.channels[i].remaining : len;
+
+        /* mix this sound effect with the output */
+        SDL_MixAudioFormat(stream, mixer.channels[i].position,
+                           mixer.outputSpec.format, copy_amt, SDL_MIX_MAXVOLUME);
+
+        /* update buffer position in sound effect and the number of bytes left */
+        mixer.channels[i].position += copy_amt;
+        mixer.channels[i].remaining -= copy_amt;
+
+        /* did we finish playing the sound effect ? */
+        if (mixer.channels[i].remaining == 0) {
+            mixer.channels[i].position = NULL;  /* indicates no sound playing on channel anymore */
+            mixer.numSoundsPlaying--;
+            if (mixer.numSoundsPlaying == 0) {
+                /* if no sounds left playing, pause audio callback */
+                SDL_PauseAudio(1);
+            }
+        }
+    }
+}
+
+int
+main(int argc, char *argv[])
+{
+    int done;                   /* has user tried to quit ? */
+    SDL_Window *window;         /* main window */
+    SDL_Renderer *renderer;
+    SDL_Event event;
+    int i;
+    int width;
+    int height;
+
+    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {
+        fatalError("could not initialize SDL");
+    }
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
+    renderer = SDL_CreateRenderer(window, 0, 0);
+
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
+    /* initialize the mixer */
+    SDL_memset(&mixer, 0, sizeof(mixer));
+    /* setup output format */
+    mixer.outputSpec.freq = 44100;
+    mixer.outputSpec.format = AUDIO_S16LSB;
+    mixer.outputSpec.channels = 2;
+    mixer.outputSpec.samples = 256;
+    mixer.outputSpec.callback = audioCallback;
+    mixer.outputSpec.userdata = NULL;
+
+    /* open audio for output */
+    if (SDL_OpenAudio(&mixer.outputSpec, NULL) != 0) {
+        fatalError("Opening audio failed");
+    }
+
+    /* load our drum noises */
+    loadSound("ds_kick_big_amb.wav", &drums[3]);
+    loadSound("ds_brush_snare.wav", &drums[2]);
+    loadSound("ds_loose_skin_mute.wav", &drums[1]);
+    loadSound("ds_china.wav", &drums[0]);
+
+    /* setup positions, colors, and state of buttons */
+    initializeButtons(renderer);
+
+    /* enter main loop */
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            switch (event.type) {
+            case SDL_MOUSEBUTTONDOWN:
+                handleMouseButtonDown(&event);
+                break;
+            case SDL_MOUSEBUTTONUP:
+                handleMouseButtonUp(&event);
+                break;
+            case SDL_QUIT:
+                done = 1;
+                break;
+            }
+        }
+        render(renderer);               /* draw buttons */
+
+        SDL_Delay(1);
+    }
+
+    /* cleanup code, let's free up those sound buffers */
+    for (i = 0; i < NUM_DRUMS; i++) {
+        SDL_free(drums[i].buffer);
+    }
+    /* let SDL do its exit code */
+    SDL_Quit();
+
+    return 0;
+}
diff --git a/Xcode-iOS/Demos/src/rectangles.c b/Xcode-iOS/Demos/src/rectangles.c
new file mode 100644
index 0000000..10f9f85
--- /dev/null
+++ b/Xcode-iOS/Demos/src/rectangles.c
@@ -0,0 +1,92 @@
+/*
+ *  rectangles.c
+ *  written by Holmes Futrell
+ *  use however you want
+*/
+
+#include "SDL.h"
+#include <time.h>
+#include "common.h"
+
+void
+render(SDL_Renderer *renderer)
+{
+    Uint8 r, g, b;
+    int renderW;
+    int renderH;
+
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
+
+    /*  Come up with a random rectangle */
+    SDL_Rect rect;
+    rect.w = randomInt(64, 128);
+    rect.h = randomInt(64, 128);
+    rect.x = randomInt(0, renderW);
+    rect.y = randomInt(0, renderH);
+
+    /* Come up with a random color */
+    r = randomInt(50, 255);
+    g = randomInt(50, 255);
+    b = randomInt(50, 255);
+
+    /*  Fill the rectangle in the color */
+    SDL_SetRenderDrawColor(renderer, r, g, b, 255);
+    SDL_RenderFillRect(renderer, &rect);
+
+    /* update screen */
+    SDL_RenderPresent(renderer);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+    SDL_Window *window;
+    SDL_Renderer *renderer;
+    int done;
+    SDL_Event event;
+    int windowW;
+    int windowH;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+
+    /* seed random number generator */
+    srand(time(NULL));
+
+    /* create window and renderer */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI);
+    if (window == 0) {
+        fatalError("Could not initialize Window");
+    }
+    renderer = SDL_CreateRenderer(window, -1, 0);
+    if (!renderer) {
+        fatalError("Could not create renderer");
+    }
+
+    SDL_GetWindowSize(window, &windowW, &windowH);
+    SDL_RenderSetLogicalSize(renderer, windowW, windowH);
+
+    /* Fill screen with black */
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+
+    /* Enter render loop, waiting for user to quit */
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+        }
+        render(renderer);
+        SDL_Delay(1);
+    }
+
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+}
diff --git a/Xcode-iOS/Demos/src/touch.c b/Xcode-iOS/Demos/src/touch.c
new file mode 100644
index 0000000..470b9d1
--- /dev/null
+++ b/Xcode-iOS/Demos/src/touch.c
@@ -0,0 +1,129 @@
+/*
+ *  touch.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include <math.h>
+#include "common.h"
+
+#define BRUSH_SIZE 32           /* width and height of the brush */
+#define PIXELS_PER_ITERATION 5  /* number of pixels between brush blots when forming a line */
+
+static SDL_Texture *brush = 0;       /* texture for the brush */
+
+/*
+    draws a line from (startx, starty) to (startx + dx, starty + dy)
+    this is accomplished by drawing several blots spaced PIXELS_PER_ITERATION apart
+*/
+void
+drawLine(SDL_Renderer *renderer, float startx, float starty, float dx, float dy)
+{
+
+    float distance = sqrt(dx * dx + dy * dy);   /* length of line segment (pythagoras) */
+    int iterations = distance / PIXELS_PER_ITERATION + 1;       /* number of brush sprites to draw for the line */
+    float dx_prime = dx / iterations;   /* x-shift per iteration */
+    float dy_prime = dy / iterations;   /* y-shift per iteration */
+    SDL_Rect dstRect;           /* rect to draw brush sprite into */
+    float x;
+    float y;
+    int i;
+
+    dstRect.w = BRUSH_SIZE;
+    dstRect.h = BRUSH_SIZE;
+
+    /* setup x and y for the location of the first sprite */
+    x = startx - BRUSH_SIZE / 2.0f;
+    y = starty - BRUSH_SIZE / 2.0f;
+
+    /* draw a series of blots to form the line */
+    for (i = 0; i < iterations; i++) {
+        dstRect.x = x;
+        dstRect.y = y;
+        /* shift x and y for next sprite location */
+        x += dx_prime;
+        y += dy_prime;
+        /* draw brush blot */
+        SDL_RenderCopy(renderer, brush, NULL, &dstRect);
+    }
+}
+
+/*
+    loads the brush texture
+*/
+void
+initializeTexture(SDL_Renderer *renderer)
+{
+    SDL_Surface *bmp_surface;
+    bmp_surface = SDL_LoadBMP("stroke.bmp");
+    if (bmp_surface == NULL) {
+        fatalError("could not load stroke.bmp");
+    }
+    brush =
+        SDL_CreateTextureFromSurface(renderer, bmp_surface);
+    SDL_FreeSurface(bmp_surface);
+    if (brush == 0) {
+        fatalError("could not create brush texture");
+    }
+    /* additive blending -- laying strokes on top of eachother makes them brighter */
+    SDL_SetTextureBlendMode(brush, SDL_BLENDMODE_ADD);
+    /* set brush color (red) */
+    SDL_SetTextureColorMod(brush, 255, 100, 100);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+    int x, y, dx, dy;           /* mouse location          */
+    Uint8 state;                /* mouse (touch) state */
+    SDL_Event event;
+    SDL_Window *window;         /* main window */
+    SDL_Renderer *renderer;
+    int done;                   /* does user want to quit? */
+    int w, h;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+
+    /* create main window and renderer */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
+    renderer = SDL_CreateRenderer(window, 0, 0);
+
+    SDL_GetWindowSize(window, &w, &h);
+    SDL_RenderSetLogicalSize(renderer, w, h);
+
+    /* load brush texture */
+    initializeTexture(renderer);
+
+    /* fill canvass initially with all black */
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+    SDL_RenderPresent(renderer);
+
+    done = 0;
+    while (!done && SDL_WaitEvent(&event)) {
+        switch (event.type) {
+        case SDL_QUIT:
+            done = 1;
+            break;
+        case SDL_MOUSEMOTION:
+            state = SDL_GetMouseState(&x, &y);  /* get its location */
+            SDL_GetRelativeMouseState(&dx, &dy);        /* find how much the mouse moved */
+            if (state & SDL_BUTTON_LMASK) {     /* is the mouse (touch) down? */
+                drawLine(renderer, x - dx, y - dy, dx, dy);       /* draw line segment */
+                SDL_RenderPresent(renderer);
+            }
+            break;
+        }
+    }
+
+    /* cleanup */
+    SDL_DestroyTexture(brush);
+    SDL_Quit();
+
+    return 0;
+}
diff --git a/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj b/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..8a6ef37
--- /dev/null
+++ b/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj
@@ -0,0 +1,422 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		AA1EE462176059AB0029C7A5 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE454176059AB0029C7A5 /* SDL_test_common.c */; };
+		AA1EE463176059AB0029C7A5 /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE455176059AB0029C7A5 /* SDL_test_compare.c */; };
+		AA1EE464176059AB0029C7A5 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE456176059AB0029C7A5 /* SDL_test_crc32.c */; };
+		AA1EE465176059AB0029C7A5 /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE457176059AB0029C7A5 /* SDL_test_font.c */; };
+		AA1EE466176059AB0029C7A5 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE458176059AB0029C7A5 /* SDL_test_fuzzer.c */; };
+		AA1EE467176059AB0029C7A5 /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE459176059AB0029C7A5 /* SDL_test_harness.c */; };
+		AA1EE468176059AB0029C7A5 /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45A176059AB0029C7A5 /* SDL_test_imageBlit.c */; };
+		AA1EE469176059AB0029C7A5 /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45B176059AB0029C7A5 /* SDL_test_imageBlitBlend.c */; };
+		AA1EE46A176059AB0029C7A5 /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45C176059AB0029C7A5 /* SDL_test_imageFace.c */; };
+		AA1EE46B176059AB0029C7A5 /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45D176059AB0029C7A5 /* SDL_test_imagePrimitives.c */; };
+		AA1EE46C176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45E176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c */; };
+		AA1EE46D176059AB0029C7A5 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */; };
+		AA1EE46E176059AB0029C7A5 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */; };
+		AA1EE46F176059AB0029C7A5 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE461176059AB0029C7A5 /* SDL_test_random.c */; };
+		AAF030011F9009B100B9A9FB /* SDL_test_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = AAF02FFF1F9009B100B9A9FB /* SDL_test_memory.c */; };
+		AAF030021F9009B100B9A9FB /* SDL_test_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = AAF030001F9009B100B9A9FB /* SDL_test_assert.c */; };
+		FA3D99011BC4E5BC002C96C8 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE454176059AB0029C7A5 /* SDL_test_common.c */; };
+		FA3D99021BC4E5BC002C96C8 /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE455176059AB0029C7A5 /* SDL_test_compare.c */; };
+		FA3D99031BC4E5BC002C96C8 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE456176059AB0029C7A5 /* SDL_test_crc32.c */; };
+		FA3D99041BC4E5BC002C96C8 /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE457176059AB0029C7A5 /* SDL_test_font.c */; };
+		FA3D99051BC4E5BC002C96C8 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE458176059AB0029C7A5 /* SDL_test_fuzzer.c */; };
+		FA3D99061BC4E5BC002C96C8 /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE459176059AB0029C7A5 /* SDL_test_harness.c */; };
+		FA3D99071BC4E5BC002C96C8 /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45A176059AB0029C7A5 /* SDL_test_imageBlit.c */; };
+		FA3D99081BC4E5BC002C96C8 /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45B176059AB0029C7A5 /* SDL_test_imageBlitBlend.c */; };
+		FA3D99091BC4E5BC002C96C8 /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45C176059AB0029C7A5 /* SDL_test_imageFace.c */; };
+		FA3D990A1BC4E5BC002C96C8 /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45D176059AB0029C7A5 /* SDL_test_imagePrimitives.c */; };
+		FA3D990B1BC4E5BC002C96C8 /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45E176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c */; };
+		FA3D990C1BC4E5BC002C96C8 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */; };
+		FA3D990D1BC4E5BC002C96C8 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */; };
+		FA3D990E1BC4E5BC002C96C8 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE461176059AB0029C7A5 /* SDL_test_random.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		FA3D98F61BC4E5A2002C96C8 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "include/$(PRODUCT_NAME)";
+			dstSubfolderSpec = 16;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		AA1EE4461760589B0029C7A5 /* libSDL2test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDL2test.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		AA1EE454176059AB0029C7A5 /* SDL_test_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_common.c; sourceTree = "<group>"; };
+		AA1EE455176059AB0029C7A5 /* SDL_test_compare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_compare.c; sourceTree = "<group>"; };
+		AA1EE456176059AB0029C7A5 /* SDL_test_crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_crc32.c; sourceTree = "<group>"; };
+		AA1EE457176059AB0029C7A5 /* SDL_test_font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_font.c; sourceTree = "<group>"; };
+		AA1EE458176059AB0029C7A5 /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_fuzzer.c; sourceTree = "<group>"; };
+		AA1EE459176059AB0029C7A5 /* SDL_test_harness.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_harness.c; sourceTree = "<group>"; };
+		AA1EE45A176059AB0029C7A5 /* SDL_test_imageBlit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageBlit.c; sourceTree = "<group>"; };
+		AA1EE45B176059AB0029C7A5 /* SDL_test_imageBlitBlend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageBlitBlend.c; sourceTree = "<group>"; };
+		AA1EE45C176059AB0029C7A5 /* SDL_test_imageFace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_imageFace.c; sourceTree = "<group>"; };
+		AA1EE45D176059AB0029C7A5 /* SDL_test_imagePrimitives.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_imagePrimitives.c; sourceTree = "<group>"; };
+		AA1EE45E176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_imagePrimitivesBlend.c; sourceTree = "<group>"; };
+		AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_log.c; sourceTree = "<group>"; };
+		AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_md5.c; sourceTree = "<group>"; };
+		AA1EE461176059AB0029C7A5 /* SDL_test_random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_random.c; sourceTree = "<group>"; };
+		AAF02FFF1F9009B100B9A9FB /* SDL_test_memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_memory.c; sourceTree = "<group>"; };
+		AAF030001F9009B100B9A9FB /* SDL_test_assert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_assert.c; sourceTree = "<group>"; };
+		FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSDL2test-TV.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		AA1EE4431760589B0029C7A5 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA3D98F51BC4E5A2002C96C8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		AA1EE43D1760589B0029C7A5 = {
+			isa = PBXGroup;
+			children = (
+				AA1EE453176059770029C7A5 /* Library Source */,
+				AA1EE4471760589B0029C7A5 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		AA1EE4471760589B0029C7A5 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				AA1EE4461760589B0029C7A5 /* libSDL2test.a */,
+				FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		AA1EE453176059770029C7A5 /* Library Source */ = {
+			isa = PBXGroup;
+			children = (
+				AAF030001F9009B100B9A9FB /* SDL_test_assert.c */,
+				AA1EE454176059AB0029C7A5 /* SDL_test_common.c */,
+				AA1EE455176059AB0029C7A5 /* SDL_test_compare.c */,
+				AA1EE456176059AB0029C7A5 /* SDL_test_crc32.c */,
+				AA1EE457176059AB0029C7A5 /* SDL_test_font.c */,
+				AA1EE458176059AB0029C7A5 /* SDL_test_fuzzer.c */,
+				AA1EE459176059AB0029C7A5 /* SDL_test_harness.c */,
+				AA1EE45A176059AB0029C7A5 /* SDL_test_imageBlit.c */,
+				AA1EE45B176059AB0029C7A5 /* SDL_test_imageBlitBlend.c */,
+				AA1EE45C176059AB0029C7A5 /* SDL_test_imageFace.c */,
+				AA1EE45D176059AB0029C7A5 /* SDL_test_imagePrimitives.c */,
+				AA1EE45E176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c */,
+				AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */,
+				AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */,
+				AAF02FFF1F9009B100B9A9FB /* SDL_test_memory.c */,
+				AA1EE461176059AB0029C7A5 /* SDL_test_random.c */,
+			);
+			name = "Library Source";
+			path = ../../src/test;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		AA1EE4441760589B0029C7A5 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		AA1EE4451760589B0029C7A5 /* SDL2test */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = AA1EE44A1760589B0029C7A5 /* Build configuration list for PBXNativeTarget "SDL2test" */;
+			buildPhases = (
+				AA1EE4421760589B0029C7A5 /* Sources */,
+				AA1EE4431760589B0029C7A5 /* Frameworks */,
+				AA1EE4441760589B0029C7A5 /* Headers */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = SDL2test;
+			productName = SDL2test;
+			productReference = AA1EE4461760589B0029C7A5 /* libSDL2test.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		FA3D98F71BC4E5A2002C96C8 /* SDL2test-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA3D99001BC4E5A3002C96C8 /* Build configuration list for PBXNativeTarget "SDL2test-TV" */;
+			buildPhases = (
+				FA3D98F41BC4E5A2002C96C8 /* Sources */,
+				FA3D98F51BC4E5A2002C96C8 /* Frameworks */,
+				FA3D98F61BC4E5A2002C96C8 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "SDL2test-TV";
+			productName = "SDL2test-TV";
+			productReference = FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		AA1EE43E1760589B0029C7A5 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0460;
+				ORGANIZATIONNAME = "Sam Lantinga";
+				TargetAttributes = {
+					FA3D98F71BC4E5A2002C96C8 = {
+						CreatedOnToolsVersion = 7.1;
+					};
+				};
+			};
+			buildConfigurationList = AA1EE4411760589B0029C7A5 /* Build configuration list for PBXProject "SDL2test" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = AA1EE43D1760589B0029C7A5;
+			productRefGroup = AA1EE4471760589B0029C7A5 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				AA1EE4451760589B0029C7A5 /* SDL2test */,
+				FA3D98F71BC4E5A2002C96C8 /* SDL2test-TV */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		AA1EE4421760589B0029C7A5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AA1EE462176059AB0029C7A5 /* SDL_test_common.c in Sources */,
+				AA1EE463176059AB0029C7A5 /* SDL_test_compare.c in Sources */,
+				AA1EE464176059AB0029C7A5 /* SDL_test_crc32.c in Sources */,
+				AA1EE465176059AB0029C7A5 /* SDL_test_font.c in Sources */,
+				AA1EE466176059AB0029C7A5 /* SDL_test_fuzzer.c in Sources */,
+				AAF030021F9009B100B9A9FB /* SDL_test_assert.c in Sources */,
+				AA1EE467176059AB0029C7A5 /* SDL_test_harness.c in Sources */,
+				AA1EE468176059AB0029C7A5 /* SDL_test_imageBlit.c in Sources */,
+				AA1EE469176059AB0029C7A5 /* SDL_test_imageBlitBlend.c in Sources */,
+				AA1EE46A176059AB0029C7A5 /* SDL_test_imageFace.c in Sources */,
+				AA1EE46B176059AB0029C7A5 /* SDL_test_imagePrimitives.c in Sources */,
+				AA1EE46C176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c in Sources */,
+				AAF030011F9009B100B9A9FB /* SDL_test_memory.c in Sources */,
+				AA1EE46D176059AB0029C7A5 /* SDL_test_log.c in Sources */,
+				AA1EE46E176059AB0029C7A5 /* SDL_test_md5.c in Sources */,
+				AA1EE46F176059AB0029C7A5 /* SDL_test_random.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA3D98F41BC4E5A2002C96C8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA3D99011BC4E5BC002C96C8 /* SDL_test_common.c in Sources */,
+				FA3D99021BC4E5BC002C96C8 /* SDL_test_compare.c in Sources */,
+				FA3D99031BC4E5BC002C96C8 /* SDL_test_crc32.c in Sources */,
+				FA3D99041BC4E5BC002C96C8 /* SDL_test_font.c in Sources */,
+				FA3D99051BC4E5BC002C96C8 /* SDL_test_fuzzer.c in Sources */,
+				FA3D99061BC4E5BC002C96C8 /* SDL_test_harness.c in Sources */,
+				FA3D99071BC4E5BC002C96C8 /* SDL_test_imageBlit.c in Sources */,
+				FA3D99081BC4E5BC002C96C8 /* SDL_test_imageBlitBlend.c in Sources */,
+				FA3D99091BC4E5BC002C96C8 /* SDL_test_imageFace.c in Sources */,
+				FA3D990A1BC4E5BC002C96C8 /* SDL_test_imagePrimitives.c in Sources */,
+				FA3D990B1BC4E5BC002C96C8 /* SDL_test_imagePrimitivesBlend.c in Sources */,
+				FA3D990C1BC4E5BC002C96C8 /* SDL_test_log.c in Sources */,
+				FA3D990D1BC4E5BC002C96C8 /* SDL_test_md5.c in Sources */,
+				FA3D990E1BC4E5BC002C96C8 /* SDL_test_random.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		AA1EE4481760589B0029C7A5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = ../../include;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		AA1EE4491760589B0029C7A5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = ../../include;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+		AA1EE44B1760589B0029C7A5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				EXECUTABLE_PREFIX = lib;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		AA1EE44C1760589B0029C7A5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				EXECUTABLE_PREFIX = lib;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		FA3D98FE1BC4E5A3002C96C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA3D98FF1BC4E5A3002C96C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				COPY_PHASE_STRIP = NO;
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		AA1EE4411760589B0029C7A5 /* Build configuration list for PBXProject "SDL2test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AA1EE4481760589B0029C7A5 /* Debug */,
+				AA1EE4491760589B0029C7A5 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		AA1EE44A1760589B0029C7A5 /* Build configuration list for PBXNativeTarget "SDL2test" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AA1EE44B1760589B0029C7A5 /* Debug */,
+				AA1EE44C1760589B0029C7A5 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FA3D99001BC4E5A3002C96C8 /* Build configuration list for PBXNativeTarget "SDL2test-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA3D98FE1BC4E5A3002C96C8 /* Debug */,
+				FA3D98FF1BC4E5A3002C96C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = AA1EE43E1760589B0029C7A5 /* Project object */;
+}
diff --git a/Xcode-iOS/Template/SDL iOS Application/Default-568h@2x.png b/Xcode-iOS/Template/SDL iOS Application/Default-568h@2x.png
new file mode 100644
index 0000000..eaea96e
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/Default-568h@2x.png
Binary files differ
diff --git a/Xcode-iOS/Template/SDL iOS Application/Default.png b/Xcode-iOS/Template/SDL iOS Application/Default.png
new file mode 100644
index 0000000..f912828
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/Default.png
Binary files differ
diff --git a/Xcode-iOS/Template/SDL iOS Application/Icon.png b/Xcode-iOS/Template/SDL iOS Application/Icon.png
new file mode 100644
index 0000000..83f4d10
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/Icon.png
Binary files differ
diff --git a/Xcode-iOS/Template/SDL iOS Application/Info.plist b/Xcode-iOS/Template/SDL iOS Application/Info.plist
new file mode 100644
index 0000000..b8089dc
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/Info.plist
@@ -0,0 +1,28 @@
+<?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>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string>Icon</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<false/>
+</dict>
+</plist>
diff --git a/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns
new file mode 100644
index 0000000..4500ce2
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns
Binary files differ
diff --git a/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist
new file mode 100644
index 0000000..498e37d
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist
@@ -0,0 +1,10 @@
+<?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>Description</key>
+	<string>This project builds an SDL based project for iPhone OS using C or Objective-C.  It includes everything you need to get up and running with SDL on iPhone.</string>
+	<key>CFBundleIconFile</key>
+	<string>Icon.png</string>
+</dict>
+</plist>
diff --git a/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..8e54e04
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj
@@ -0,0 +1,500 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		28FD15000DC6FC520079059D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD14FF0DC6FC520079059D /* OpenGLES.framework */; };
+		28FD15080DC6FC5B0079059D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD15070DC6FC5B0079059D /* QuartzCore.framework */; };
+		945C4F53195AF17F00DBBF61 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 945C4F52195AF17F00DBBF61 /* Default-568h@2x.png */; };
+		F3A497AC2555F0BD00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497AB2555F0BD00E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A497AD2555F0C000E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A4978F2555F07100E92A8B /* libSDL2.a */; };
+		F3A497B02555F0FF00E92A8B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497AF2555F0FF00E92A8B /* Metal.framework */; };
+		F3A497B32555F11600E92A8B /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A497B22555F11600E92A8B /* AVFoundation.framework */; };
+		FA8B4B97196703B400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4B96196703B400F8EB7C /* CoreMotion.framework */; };
+		FAE0E9651BAF967F0098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9641BAF967F0098DFA4 /* GameController.framework */; };
+		FD779EDE0E26BA1200F39101 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD779EDD0E26BA1200F39101 /* CoreAudio.framework */; };
+		FD77A07D0E26BD8C00F39101 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD77A07C0E26BD8C00F39101 /* Icon.png */; };
+		FD77A07F0E26BDA900F39101 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD77A07E0E26BDA900F39101 /* Default.png */; };
+		FD77A0850E26BDB800F39101 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD77A0840E26BDB800F39101 /* AudioToolbox.framework */; };
+		FD77A09D0E26BDE500F39101 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A09C0E26BDE500F39101 /* main.c */; };
+		FDB8BFC60E5A0F6A00980157 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB8BFC50E5A0F6A00980157 /* CoreGraphics.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		F3A497862555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF66C0761BA81005FE872;
+			remoteInfo = Framework;
+		};
+		F3A497882555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88B5423E2437C00DCD162;
+			remoteInfo = "Framework-iOS";
+		};
+		F3A4978A2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88D1523E24BED00DCD162;
+			remoteInfo = "Framework-tvOS";
+		};
+		F3A4978C2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6B30761BA81005FE872;
+			remoteInfo = "Static Library";
+		};
+		F3A4978E2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88E5423E24D3B00DCD162;
+			remoteInfo = "Static Library-iOS";
+		};
+		F3A497902555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A769B23D23E259AE00872273;
+			remoteInfo = "Static Library-tvOS";
+		};
+		F3A497922555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = DB31407717554B71006C0E22;
+			remoteInfo = "Shared Library";
+		};
+		F3A497942555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FCEB323E25AB700529352;
+			remoteInfo = "Shared Library-iOS";
+		};
+		F3A497962555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FD06C23E25AC700529352;
+			remoteInfo = "Shared Library-tvOS";
+		};
+		F3A497982555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6BE0761BA81005FE872;
+			remoteInfo = "Standard DMG";
+		};
+		F3A4979A2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB8C23E4C74400529352;
+			remoteInfo = hidapi;
+		};
+		F3A4979C2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB4923E399AC00529352;
+			remoteInfo = "hidapi-iOS";
+		};
+		F3A4979E2555F07100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB6E23E3A2C900529352;
+			remoteInfo = "hidapi-tvOS";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		1D6058910D05DD3D006BFB54 /* ___PROJECTNAME___.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "___PROJECTNAME___.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		28FD14FF0DC6FC520079059D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		28FD15070DC6FC5B0079059D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		944A65681957463F0094A81E /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../../../Xcode/SDL/SDL.xcodeproj; sourceTree = "<group>"; };
+		945C4F52195AF17F00DBBF61 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
+		F3A497AB2555F0BD00E92A8B /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = System/Library/Frameworks/CoreHaptics.framework; sourceTree = SDKROOT; };
+		F3A497AF2555F0FF00E92A8B /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
+		F3A497B22555F11600E92A8B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		FA8B4B96196703B400F8EB7C /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		FAE0E9641BAF967F0098DFA4 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
+		FD779EDD0E26BA1200F39101 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		FD77A07C0E26BD8C00F39101 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
+		FD77A07E0E26BDA900F39101 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
+		FD77A0840E26BDB800F39101 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		FD77A09C0E26BDE500F39101 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+		FDB8BFC50E5A0F6A00980157 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A497AD2555F0C000E92A8B /* libSDL2.a in Frameworks */,
+				FD77A0850E26BDB800F39101 /* AudioToolbox.framework in Frameworks */,
+				F3A497B32555F11600E92A8B /* AVFoundation.framework in Frameworks */,
+				1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
+				FD779EDE0E26BA1200F39101 /* CoreAudio.framework in Frameworks */,
+				FDB8BFC60E5A0F6A00980157 /* CoreGraphics.framework in Frameworks */,
+				F3A497AC2555F0BD00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4B97196703B400F8EB7C /* CoreMotion.framework in Frameworks */,
+				FAE0E9651BAF967F0098DFA4 /* GameController.framework in Frameworks */,
+				F3A497B02555F0FF00E92A8B /* Metal.framework in Frameworks */,
+				28FD15000DC6FC520079059D /* OpenGLES.framework in Frameworks */,
+				28FD15080DC6FC5B0079059D /* QuartzCore.framework in Frameworks */,
+				1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		19C28FACFE9D520D11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				1D6058910D05DD3D006BFB54 /* ___PROJECTNAME___.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+			isa = PBXGroup;
+			children = (
+				945C4F52195AF17F00DBBF61 /* Default-568h@2x.png */,
+				29B97315FDCFA39411CA2CEA /* Sources */,
+				29B97317FDCFA39411CA2CEA /* Resources */,
+				29B97323FDCFA39411CA2CEA /* Frameworks */,
+				19C28FACFE9D520D11CA2CBB /* Products */,
+			);
+			name = CustomTemplate;
+			sourceTree = "<group>";
+		};
+		29B97315FDCFA39411CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				944A65681957463F0094A81E /* SDL.xcodeproj */,
+				FD77A09C0E26BDE500F39101 /* main.c */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		29B97317FDCFA39411CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				FD77A07E0E26BDA900F39101 /* Default.png */,
+				FD77A07C0E26BD8C00F39101 /* Icon.png */,
+				8D1107310486CEB800E47090 /* Info.plist */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				F3A497B22555F11600E92A8B /* AVFoundation.framework */,
+				F3A497AF2555F0FF00E92A8B /* Metal.framework */,
+				F3A497AB2555F0BD00E92A8B /* CoreHaptics.framework */,
+				FAE0E9641BAF967F0098DFA4 /* GameController.framework */,
+				FA8B4B96196703B400F8EB7C /* CoreMotion.framework */,
+				FDB8BFC50E5A0F6A00980157 /* CoreGraphics.framework */,
+				FD77A0840E26BDB800F39101 /* AudioToolbox.framework */,
+				FD779EDD0E26BA1200F39101 /* CoreAudio.framework */,
+				28FD15070DC6FC5B0079059D /* QuartzCore.framework */,
+				28FD14FF0DC6FC520079059D /* OpenGLES.framework */,
+				1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+				1D30AB110D05D00D00671497 /* Foundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		F3A497772555F07100E92A8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F3A497872555F07100E92A8B /* SDL2.framework */,
+				F3A497892555F07100E92A8B /* SDL2.framework */,
+				F3A4978B2555F07100E92A8B /* SDL2.framework */,
+				F3A4978D2555F07100E92A8B /* libSDL2.a */,
+				F3A4978F2555F07100E92A8B /* libSDL2.a */,
+				F3A497912555F07100E92A8B /* libSDL2.a */,
+				F3A497932555F07100E92A8B /* libSDL2.dylib */,
+				F3A497952555F07100E92A8B /* libSDL2.dylib */,
+				F3A497972555F07100E92A8B /* libSDL2.dylib */,
+				F3A497992555F07100E92A8B /* SDL2 */,
+				F3A4979B2555F07100E92A8B /* hidapi.framework */,
+				F3A4979D2555F07100E92A8B /* hidapi.framework */,
+				F3A4979F2555F07100E92A8B /* hidapi.framework */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		1D6058900D05DD3D006BFB54 /* ___PROJECTNAME___ */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "___PROJECTNAME___" */;
+			buildPhases = (
+				1D60588D0D05DD3D006BFB54 /* Resources */,
+				1D60588E0D05DD3D006BFB54 /* Sources */,
+				1D60588F0D05DD3D006BFB54 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "___PROJECTNAME___";
+			productName = "___PROJECTNAME___";
+			productReference = 1D6058910D05DD3D006BFB54 /* ___PROJECTNAME___.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		29B97313FDCFA39411CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0510;
+			};
+			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "___PROJECTNAME___" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+			);
+			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = F3A497772555F07100E92A8B /* Products */;
+					ProjectRef = 944A65681957463F0094A81E /* SDL.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				1D6058900D05DD3D006BFB54 /* ___PROJECTNAME___ */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+		F3A497872555F07100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A497862555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497892555F07100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A497882555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4978B2555F07100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A4978A2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4978D2555F07100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A4978C2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4978F2555F07100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A4978E2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497912555F07100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A497902555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497932555F07100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A497922555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497952555F07100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A497942555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497972555F07100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A497962555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A497992555F07100E92A8B /* SDL2 */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = SDL2;
+			remoteRef = F3A497982555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4979B2555F07100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A4979A2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4979D2555F07100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A4979C2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A4979F2555F07100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A4979E2555F07100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+		1D60588D0D05DD3D006BFB54 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A07D0E26BD8C00F39101 /* Icon.png in Resources */,
+				FD77A07F0E26BDA900F39101 /* Default.png in Resources */,
+				945C4F53195AF17F00DBBF61 /* Default-568h@2x.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		1D60588E0D05DD3D006BFB54 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FD77A09D0E26BDE500F39101 /* main.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1D6058940D05DD3E006BFB54 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "";
+				INFOPLIST_FILE = Info.plist;
+				LIBRARY_SEARCH_PATHS = "$(inherited)";
+				PRODUCT_NAME = "___PROJECTNAME___";
+				USER_HEADER_SEARCH_PATHS = ../../../include;
+			};
+			name = Debug;
+		};
+		1D6058950D05DD3E006BFB54 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "";
+				INFOPLIST_FILE = Info.plist;
+				LIBRARY_SEARCH_PATHS = "$(inherited)";
+				PRODUCT_NAME = "___PROJECTNAME___";
+				USER_HEADER_SEARCH_PATHS = ../../../include;
+			};
+			name = Release;
+		};
+		C01FCF4F08A954540054247B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CFLAGS = "";
+				PREBINDING = NO;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		C01FCF5008A954540054247B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				OTHER_CFLAGS = "";
+				PREBINDING = NO;
+				SDKROOT = iphoneos;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "___PROJECTNAME___" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1D6058940D05DD3E006BFB54 /* Debug */,
+				1D6058950D05DD3E006BFB54 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "___PROJECTNAME___" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C01FCF4F08A954540054247B /* Debug */,
+				C01FCF5008A954540054247B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
diff --git a/Xcode-iOS/Template/SDL iOS Application/main.c b/Xcode-iOS/Template/SDL iOS Application/main.c
new file mode 100644
index 0000000..52fd9a4
--- /dev/null
+++ b/Xcode-iOS/Template/SDL iOS Application/main.c
@@ -0,0 +1,100 @@
+/*
+ *  rectangles.c
+ *  written by Holmes Futrell
+ *  use however you want
+ */
+
+#include "SDL.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#define SCREEN_WIDTH 320
+#define SCREEN_HEIGHT 480
+
+int
+randomInt(int min, int max)
+{
+    return min + rand() % (max - min + 1);
+}
+
+void
+render(SDL_Renderer *renderer)
+{
+
+    SDL_Rect rect;
+    Uint8 r, g, b;
+
+    /* Clear the screen */
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+
+    /*  Come up with a random rectangle */
+    rect.w = randomInt(64, 128);
+    rect.h = randomInt(64, 128);
+    rect.x = randomInt(0, SCREEN_WIDTH);
+    rect.y = randomInt(0, SCREEN_HEIGHT);
+
+    /* Come up with a random color */
+    r = randomInt(50, 255);
+    g = randomInt(50, 255);
+    b = randomInt(50, 255);
+    SDL_SetRenderDrawColor(renderer, r, g, b, 255);
+
+    /*  Fill the rectangle in the color */
+    SDL_RenderFillRect(renderer, &rect);
+
+    /* update screen */
+    SDL_RenderPresent(renderer);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+    SDL_Window *window;
+    SDL_Renderer *renderer;
+    int done;
+    SDL_Event event;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        printf("Could not initialize SDL\n");
+        return 1;
+    }
+
+    /* seed random number generator */
+    srand(time(NULL));
+
+    /* create window and renderer */
+    window =
+        SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
+                         SDL_WINDOW_OPENGL);
+    if (!window) {
+        printf("Could not initialize Window\n");
+        return 1;
+    }
+
+    renderer = SDL_CreateRenderer(window, -1, 0);
+    if (!renderer) {
+        printf("Could not create renderer\n");
+        return 1;
+    }
+
+    /* Enter render loop, waiting for user to quit */
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+        }
+        render(renderer);
+        SDL_Delay(1);
+    }
+
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+}
diff --git a/Xcode-iOS/Test/Info.plist b/Xcode-iOS/Test/Info.plist
new file mode 100644
index 0000000..99a1cb4
--- /dev/null
+++ b/Xcode-iOS/Test/Info.plist
@@ -0,0 +1,30 @@
+<?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>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>UIApplicationSupportsIndirectInputEvents</key>
+	<true/>
+</dict>
+</plist>
diff --git a/Xcode-iOS/Test/README b/Xcode-iOS/Test/README
new file mode 100644
index 0000000..b8d9ed3
--- /dev/null
+++ b/Xcode-iOS/Test/README
@@ -0,0 +1,11 @@
+TestiPhoneOS.xcodeproj contains targets to compile many of the SDL test programs for iPhone OS.  Most of these test programs work fine, with the following exceptions:
+
+testthread:
+	SIGTERM kills the process immediately without executing the 'kill' function.  The posix standard says this shouldn't happen.  Apple seems intent on having iPhone apps exit promptly when the user requests it, so maybe that's why(?)
+
+testlock:
+	Locks appear to work, but there doesn't appear to be a simple way to send the process SIGINT.
+
+testsprite2: 
+	SDL_CreateTextureFromSurface requests an ARGB pixel format, but iPhone's SDL video driver only supports ABGR.
+
diff --git a/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj b/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..48c4839
--- /dev/null
+++ b/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj
@@ -0,0 +1,3441 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		046CEF7713254F23007AD51D /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		046CEF7C13254F23007AD51D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		046CEF7D13254F23007AD51D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		046CEF7E13254F23007AD51D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		046CEF7F13254F23007AD51D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		046CEF8013254F23007AD51D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		046CEF8113254F23007AD51D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		046CEF8213254F23007AD51D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		046CEF8A13254F63007AD51D /* testgesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 046CEF8913254F63007AD51D /* testgesture.c */; };
+		047A63E313285C3200CD7973 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		047A63E413285C3200CD7973 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		047A63E513285C3200CD7973 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		047A63E613285C3200CD7973 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		047A63E713285C3200CD7973 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		047A63E813285C3200CD7973 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		047A63E913285C3200CD7973 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		047A63F113285CD100CD7973 /* checkkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 047A63F013285CD100CD7973 /* checkkeys.c */; };
+		56ED04FE118A8FE400A56AA6 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		56ED0503118A8FE400A56AA6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		56ED0504118A8FE400A56AA6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		56ED0505118A8FE400A56AA6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		56ED0506118A8FE400A56AA6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		56ED0507118A8FE400A56AA6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		56ED0508118A8FE400A56AA6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		56ED0509118A8FE400A56AA6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		56ED0511118A904200A56AA6 /* testpower.c in Sources */ = {isa = PBXBuildFile; fileRef = 56ED0510118A904200A56AA6 /* testpower.c */; };
+		75E09192241EACB9004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E09193241EACBE004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E09194241EACC3004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E09197241EACD3004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E09198241EACD9004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E09199241EACDF004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E0919A241EACE5004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E0919B241EACEA004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E0919D241EACF7004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E0919E241EAD14004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E0919F241EAD19004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A0241EAD21004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A1241EAD26004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A2241EAD2B004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A3241EAD31004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A4241EAD35004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A5241EAD3B004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A6241EAD3F004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A7241EAD45004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A8241EAD4A004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091A9241EAD4F004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091AA241EAD55004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091AB241EAD5B004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091AC241EAD61004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091AD241EAD65004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		75E091AE241EAD6B004729E1 /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75E09187241EACB9004729E1 /* CoreBluetooth.framework */; };
+		AA13B3171FB8AEBC00D9FEE6 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		AA13B3181FB8AEBC00D9FEE6 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA13B31A1FB8AEBC00D9FEE6 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		AA13B31B1FB8AEBC00D9FEE6 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		AA13B31C1FB8AEBC00D9FEE6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		AA13B31D1FB8AEBC00D9FEE6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		AA13B31E1FB8AEBC00D9FEE6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		AA13B31F1FB8AEBC00D9FEE6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		AA13B3201FB8AEBC00D9FEE6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		AA13B3211FB8AEBC00D9FEE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		AA13B3221FB8AEBC00D9FEE6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		AA13B32F1FB8AF0C00D9FEE6 /* testyuv.bmp in Resources */ = {isa = PBXBuildFile; fileRef = AA13B32E1FB8AF0C00D9FEE6 /* testyuv.bmp */; };
+		AA13B3301FB8AF2300D9FEE6 /* testyuv.bmp in Resources */ = {isa = PBXBuildFile; fileRef = AA13B32E1FB8AF0C00D9FEE6 /* testyuv.bmp */; };
+		AA13B35D1FB8B4E200D9FEE6 /* testyuv.c in Sources */ = {isa = PBXBuildFile; fileRef = AA13B35B1FB8B4D600D9FEE6 /* testyuv.c */; };
+		AA13B3611FB8B52500D9FEE6 /* testyuv_cvt.c in Sources */ = {isa = PBXBuildFile; fileRef = AA13B35E1FB8B50D00D9FEE6 /* testyuv_cvt.c */; };
+		AA1EE470176059D00029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47117605A7F0029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47417605B5C0029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47517605B930029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47617605B9E0029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47717605BAB0029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA1EE47817605BF60029C7A5 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		AA2F57AA1FDB544800832AD7 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		AA2F57AB1FDB5A0900832AD7 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		AA2F57AC1FDB5AB600832AD7 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		AAE7DEDC14CBB1E100DF1A0E /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		AAE7DEE214CBB1E100DF1A0E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		AAE7DEE314CBB1E100DF1A0E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		AAE7DEE414CBB1E100DF1A0E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		AAE7DEE514CBB1E100DF1A0E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		AAE7DEE614CBB1E100DF1A0E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		AAE7DEE714CBB1E100DF1A0E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		AAE7DEE814CBB1E100DF1A0E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		AAE7DF4614CBB43900DF1A0E /* testscale.c in Sources */ = {isa = PBXBuildFile; fileRef = AAE7DF4514CBB43900DF1A0E /* testscale.c */; };
+		AAE7DF4714CBB45000DF1A0E /* sample.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AADE0E2D33C100EA573E /* sample.bmp */; };
+		AAE7DFA014CBB54E00DF1A0E /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		AAE7DFA114CBB54E00DF1A0E /* sample.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AADE0E2D33C100EA573E /* sample.bmp */; };
+		AAE7DFA714CBB54E00DF1A0E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		AAE7DFA814CBB54E00DF1A0E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		AAE7DFA914CBB54E00DF1A0E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		AAE7DFAA14CBB54E00DF1A0E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		AAE7DFAB14CBB54E00DF1A0E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		AAE7DFAC14CBB54E00DF1A0E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		AAE7DFAD14CBB54E00DF1A0E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		AAE7DFB514CBB5F700DF1A0E /* testrendertarget.c in Sources */ = {isa = PBXBuildFile; fileRef = AAE7DFB414CBB5F700DF1A0E /* testrendertarget.c */; };
+		F3A4938E2555E2D500E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A493AC2555E30000E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A493C92555E32200E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494022555E37A00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4941F2555E39600E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494202555E39E00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494212555E3AE00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494222555E3B700E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494232555E3C900E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E72555E1F100E92A8B /* libSDL2.a */; };
+		F3A494252555E3D100E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494242555E3D100E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494692555E42B00E92A8B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494682555E42B00E92A8B /* Metal.framework */; };
+		F3A494D12555E75200E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494D22555E75B00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494D32555E76E00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494D42555E77400E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494F12555E7B300E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494F22555E7B900E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494F32555E7D000E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494F42555E7D800E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494F52555E7F800E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E72555E1F100E92A8B /* libSDL2.a */; };
+		F3A494F62555E7FE00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494242555E3D100E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494F72555E80E00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494F92555E83D00E92A8B /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494F82555E83D00E92A8B /* CoreBluetooth.framework */; };
+		F3A494FA2555E85600E92A8B /* CoreBluetooth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494F82555E83D00E92A8B /* CoreBluetooth.framework */; };
+		F3A494FB2555E86200E92A8B /* hidapi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492F32555E1F100E92A8B /* hidapi.framework */; };
+		F3A494FC2555E87500E92A8B /* hidapi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492F52555E1F100E92A8B /* hidapi.framework */; };
+		F3A494FD2555E89700E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A494FE2555E8AA00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A494FF2555E8B300E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495002555E8C000E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495012555E8D200E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495022555E9BF00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495032555E9C600E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495042555E9D900E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495052555E9E000E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495062555E9F100E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495072555E9F700E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495082555EA0300E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495092555EA1200E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4950A2555EA1D00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4950B2555EA2300E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4950C2555EA3700E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4950D2555EA3D00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4950E2555EA5E00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4950F2555EA6400E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495102555EA7600E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495112555EA7B00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495122555EA8700E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495132555EA8C00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495142555EA9B00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495152555EAA100E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495162555EAB000E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495172555EABB00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A495182555EAC500E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A495192555EACB00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4951A2555EADC00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4951B2555EAE200E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4951C2555EB0E00E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4951D2555EB1300E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4951E2555EB2600E92A8B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A492E52555E1F100E92A8B /* libSDL2.a */; };
+		F3A4951F2555EB2D00E92A8B /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A493AB2555E30000E92A8B /* CoreHaptics.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+		F3A4953D2555EB8100E92A8B /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A4953C2555EB8100E92A8B /* AVFoundation.framework */; };
+		F3A4955A2555EB9500E92A8B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A494682555E42B00E92A8B /* Metal.framework */; };
+		F3F758D322AC561A001D97F2 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1EE452176059230029C7A5 /* libSDL2test.a */; };
+		F3F758D422AC575F001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758D522AC57D8001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758D622AC5811001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758DA22AC59A5001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758DB22AC5A1B001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758DC22AC5A46001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758DD22AC5A6C001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758DE22AC5ABB001D97F2 /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */; };
+		F3F758DF22AC5B94001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E022AC5BB6001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E122AC5BE9001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E222AC5C12001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E322AC5C34001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E422AC5C83001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E522AC5CA5001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E622AC5CC5001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E722AC5CFE001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E822AC5D1B001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758E922AC5D51001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758EA22AC5D6B001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758EB22AC5D8B001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758EC22AC5DA6001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758ED22AC5DC5001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		F3F758EE22AC5DE1001D97F2 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA2F57A91FDB544800832AD7 /* Metal.framework */; };
+		FA0EF22E1BAF4654000E07A6 /* testjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74E0E2D0F1600EA573E /* testjoystick.c */; };
+		FA3D99481BC4E6AD002C96C8 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA3D994A1BC4E6AD002C96C8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FA3D994B1BC4E6AD002C96C8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FA3D994C1BC4E6AD002C96C8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FA3D994D1BC4E6AD002C96C8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FA3D994E1BC4E6AD002C96C8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FA3D994F1BC4E6AD002C96C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FA3D99501BC4E6AD002C96C8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FA3D99521BC4E70C002C96C8 /* controllermap.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */; };
+		FA3D99531BC4E70E002C96C8 /* axis.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2281BAF4487000E07A6 /* axis.bmp */; };
+		FA3D99541BC4E70F002C96C8 /* button.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2291BAF4487000E07A6 /* button.bmp */; };
+		FA3D99551BC4E712002C96C8 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FA684F7B1BAF1A4400DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F7F1BAF1A4D00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F801BAF1A5000DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F811BAF1A5300DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F821BAF1A5700DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F831BAF1A5A00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F841BAF1A5C00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F851BAF1A6000DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F861BAF1A6200DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F871BAF1A6500DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F881BAF1A6800DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F891BAF1A6A00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8A1BAF1A6D00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8B1BAF1A7100DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8C1BAF1A7400DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8D1BAF1A7800DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8E1BAF1A7B00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F8F1BAF1A7E00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F901BAF1A8100DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F911BAF1A8400DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F921BAF1A8700DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F931BAF1A8A00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA684F941BAF1A9400DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA8B4BAD1967076F00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BC9196766BC00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BCD196766BF00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BCE196766C100F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BCF196766C400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD0196766C600F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD1196766C900F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD2196766CB00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD3196766CE00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD4196766D100F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD5196766D400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD6196766D700F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD7196766DA00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD8196766DD00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BD9196766E000F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDA196766E200F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDB196766E500F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDC196766E800F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDD196766EB00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDE196766EE00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BDF196766F100F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BE0196766F400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FA8B4BE1196766F600F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FABA34771D8B4EAD00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34831D8B575200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34851D8B575200915323 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FABA34861D8B575200915323 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FABA34871D8B575200915323 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FABA34881D8B575200915323 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FABA34891D8B575200915323 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FABA348A1D8B575200915323 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FABA348B1D8B575200915323 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FABA348C1D8B575200915323 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FABA348D1D8B575200915323 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FABA34951D8B578600915323 /* testaudiocapture.c in Sources */ = {isa = PBXBuildFile; fileRef = FABA34931D8B578200915323 /* testaudiocapture.c */; };
+		FABA34981D8B582100915323 /* sample.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAE20E2D33C600EA573E /* sample.wav */; };
+		FABA349A1D8B582100915323 /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A78B0E2D0F3D00EA573E /* loopwave.c */; };
+		FABA349C1D8B582100915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA349E1D8B582100915323 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FABA34A01D8B582100915323 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FABA34A11D8B582100915323 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FABA34A21D8B582100915323 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FABA34A31D8B582100915323 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FABA34A41D8B582100915323 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FABA34A51D8B582100915323 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FABA34A61D8B582100915323 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FABA34AE1D8B58B200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B01D8B5B6400915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B11D8B5B6C00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B21D8B5B7300915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B31D8B5B7800915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B41D8B5B7C00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B51D8B5B8400915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B61D8B5B8900915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B71D8B5B8D00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B81D8B5B9200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B91D8B5B9600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BA1D8B5B9B00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BB1D8B5BA100915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BC1D8B5BA600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BD1D8B5BAB00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BE1D8B5BB000915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BF1D8B5BB500915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C01D8B5BBA00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C11D8B5BBE00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C21D8B5BC200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C31D8B5BC600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C41D8B5BCB00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C51D8B5BD000915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FAE0E9821BAF9B230098DFA4 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FAE0E9871BAF9B230098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FAE0E9881BAF9B230098DFA4 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FAE0E9891BAF9B230098DFA4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FAE0E98A1BAF9B230098DFA4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FAE0E98B1BAF9B230098DFA4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FAE0E98C1BAF9B230098DFA4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FAE0E98D1BAF9B230098DFA4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FAE0E98E1BAF9B230098DFA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FAE0E98F1BAF9B230098DFA4 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FAE0E9951BAF9B510098DFA4 /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */; };
+		FAE0E9961BAF9B650098DFA4 /* controllermap.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */; };
+		FAE0E9971BAF9B6A0098DFA4 /* button.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2291BAF4487000E07A6 /* button.bmp */; };
+		FAE0E9981BAF9B6E0098DFA4 /* axis.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2281BAF4487000E07A6 /* axis.bmp */; };
+		FDA8A79C0E2D0F9300EA573E /* testwm2.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A75F0E2D0F1600EA573E /* testwm2.c */; };
+		FDA8A89F0E2D111A00EA573E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDA8A8A00E2D111A00EA573E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDA8A8A10E2D111A00EA573E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDA8A8A20E2D111A00EA573E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDA8A8A30E2D111A00EA573E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDA8A8A40E2D111A00EA573E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDA8A8A50E2D111A00EA573E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDA8AAB10E2D330F00EA573E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDA8AAB20E2D330F00EA573E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDA8AAB30E2D330F00EA573E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDA8AAB40E2D330F00EA573E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDA8AAB50E2D330F00EA573E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDA8AAB60E2D330F00EA573E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDA8AAB70E2D330F00EA573E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDA8AABE0E2D335C00EA573E /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A78B0E2D0F3D00EA573E /* loopwave.c */; };
+		FDA8AAE30E2D33C600EA573E /* sample.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAE20E2D33C600EA573E /* sample.wav */; };
+		FDAAC3C30E2D47E6001DB1D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDAAC3C40E2D47E6001DB1D8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDAAC3C50E2D47E6001DB1D8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDAAC3C60E2D47E6001DB1D8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDAAC3C70E2D47E6001DB1D8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDAAC3C80E2D47E6001DB1D8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDAAC3C90E2D47E6001DB1D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDAAC3D30E2D4800001DB1D8 /* testaudioinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7410E2D0F1600EA573E /* testaudioinfo.c */; };
+		FDAAC5910E2D5429001DB1D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDAAC5920E2D5429001DB1D8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDAAC5930E2D5429001DB1D8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDAAC5940E2D5429001DB1D8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDAAC5950E2D5429001DB1D8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDAAC5960E2D5429001DB1D8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDAAC5970E2D5429001DB1D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDAAC59F0E2D54B8001DB1D8 /* testerror.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7470E2D0F1600EA573E /* testerror.c */; };
+		FDAAC5BF0E2D55B5001DB1D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDAAC5C00E2D55B5001DB1D8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDAAC5C10E2D55B5001DB1D8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDAAC5C20E2D55B5001DB1D8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDAAC5C30E2D55B5001DB1D8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDAAC5C40E2D55B5001DB1D8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDAAC5C50E2D55B5001DB1D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDAAC5CC0E2D55CA001DB1D8 /* testfile.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7480E2D0F1600EA573E /* testfile.c */; };
+		FDAAC61C0E2D5914001DB1D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDAAC61D0E2D5914001DB1D8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDAAC61E0E2D5914001DB1D8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDAAC61F0E2D5914001DB1D8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDAAC6200E2D5914001DB1D8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDAAC6210E2D5914001DB1D8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDAAC6220E2D5914001DB1D8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDAAC62A0E2D5960001DB1D8 /* testgles.c in Sources */ = {isa = PBXBuildFile; fileRef = FDAAC6290E2D5960001DB1D8 /* testgles.c */; };
+		FDAAC6390E2D59BE001DB1D8 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FDC42FF60F0D866D009C87E1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDC42FF70F0D866D009C87E1 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDC42FF80F0D866D009C87E1 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDC42FF90F0D866D009C87E1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDC42FFA0F0D866D009C87E1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDC42FFB0F0D866D009C87E1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDC42FFC0F0D866D009C87E1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDC4300A0F0D86BF009C87E1 /* testdraw2.c in Sources */ = {isa = PBXBuildFile; fileRef = FDC430090F0D86BF009C87E1 /* testdraw2.c */; };
+		FDD2C1000E2E4F4B00B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C1010E2E4F4B00B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C1020E2E4F4B00B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C1030E2E4F4B00B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C1040E2E4F4B00B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C1050E2E4F4B00B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C1060E2E4F4B00B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C10D0E2E4F6900B7A85F /* testthread.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74C0E2D0F1600EA573E /* testthread.c */; };
+		FDD2C1770E2E52C000B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C1780E2E52C000B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C1790E2E52C000B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C17A0E2E52C000B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C17B0E2E52C000B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C17C0E2E52C000B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C17D0E2E52C000B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C1840E2E52D900B7A85F /* testiconv.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74D0E2D0F1600EA573E /* testiconv.c */; };
+		FDD2C18B0E2E52FE00B7A85F /* utf8.txt in Resources */ = {isa = PBXBuildFile; fileRef = FDD2C18A0E2E52FE00B7A85F /* utf8.txt */; };
+		FDD2C19B0E2E534F00B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C19C0E2E534F00B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C19D0E2E534F00B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C19E0E2E534F00B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C19F0E2E534F00B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C1A00E2E534F00B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C1A10E2E534F00B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C4540E2E773800B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C4550E2E773800B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C4560E2E773800B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C4570E2E773800B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C4580E2E773800B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C4590E2E773800B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C45A0E2E773800B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C4610E2E777500B7A85F /* testkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74F0E2D0F1600EA573E /* testkeys.c */; };
+		FDD2C4720E2E77D700B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C4730E2E77D700B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C4740E2E77D700B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C4750E2E77D700B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C4760E2E77D700B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C4770E2E77D700B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C4780E2E77D700B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C47F0E2E77E300B7A85F /* testlock.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7510E2D0F1600EA573E /* testlock.c */; };
+		FDD2C5010E2E7F4800B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C5020E2E7F4800B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C5030E2E7F4800B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C5040E2E7F4800B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C5050E2E7F4800B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C5060E2E7F4800B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C5070E2E7F4800B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C50E0E2E7F5800B7A85F /* testplatform.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7560E2D0F1600EA573E /* testplatform.c */; };
+		FDD2C51F0E2E807600B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C5200E2E807600B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C5210E2E807600B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C5220E2E807600B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C5230E2E807600B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C5240E2E807600B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C5250E2E807600B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C52C0E2E808700B7A85F /* testsem.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7570E2D0F1600EA573E /* testsem.c */; };
+		FDD2C5440E2E80E400B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C5450E2E80E400B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C5460E2E80E400B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C5470E2E80E400B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C5480E2E80E400B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C5490E2E80E400B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C54A0E2E80E400B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C5510E2E80F400B7A85F /* testsprite2.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7590E2D0F1600EA573E /* testsprite2.c */; };
+		FDD2C5520E2E812C00B7A85F /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FDD2C5760E2E8C7400B7A85F /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FDD2C57D0E2E8C7400B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C57E0E2E8C7400B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C57F0E2E8C7400B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C5800E2E8C7400B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C5810E2E8C7400B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C5820E2E8C7400B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C5830E2E8C7400B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C58A0E2E8CB500B7A85F /* testtimer.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A75A0E2D0F1600EA573E /* testtimer.c */; };
+		FDD2C5B50E2E8CFC00B7A85F /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
+		FDD2C5BB0E2E8CFC00B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C5BC0E2E8CFC00B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C5BD0E2E8CFC00B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C5BE0E2E8CFC00B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C5BF0E2E8CFC00B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C5C00E2E8CFC00B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C5C10E2E8CFC00B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C5C80E2E8D1200B7A85F /* testver.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A75B0E2D0F1600EA573E /* testver.c */; };
+		FDD2C6EA0E2E959E00B7A85F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FDD2C6EB0E2E959E00B7A85F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FDD2C6EC0E2E959E00B7A85F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FDD2C6ED0E2E959E00B7A85F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FDD2C6EE0E2E959E00B7A85F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FDD2C6EF0E2E959E00B7A85F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FDD2C6F00E2E959E00B7A85F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FDD2C6F70E2E95B100B7A85F /* torturethread.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A7610E2D0F1600EA573E /* torturethread.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		AA1EE451176059230029C7A5 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = AA1EE4461760589B0029C7A5;
+			remoteInfo = SDL2test;
+		};
+		F3A492DC2555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF66C0761BA81005FE872;
+			remoteInfo = Framework;
+		};
+		F3A492DE2555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88B5423E2437C00DCD162;
+			remoteInfo = "Framework-iOS";
+		};
+		F3A492E02555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88D1523E24BED00DCD162;
+			remoteInfo = "Framework-tvOS";
+		};
+		F3A492E22555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6B30761BA81005FE872;
+			remoteInfo = "Static Library";
+		};
+		F3A492E42555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A7D88E5423E24D3B00DCD162;
+			remoteInfo = "Static Library-iOS";
+		};
+		F3A492E62555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A769B23D23E259AE00872273;
+			remoteInfo = "Static Library-tvOS";
+		};
+		F3A492E82555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = DB31407717554B71006C0E22;
+			remoteInfo = "Shared Library";
+		};
+		F3A492EA2555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FCEB323E25AB700529352;
+			remoteInfo = "Shared Library-iOS";
+		};
+		F3A492EC2555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FD06C23E25AC700529352;
+			remoteInfo = "Shared Library-tvOS";
+		};
+		F3A492EE2555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = BECDF6BE0761BA81005FE872;
+			remoteInfo = "Standard DMG";
+		};
+		F3A492F02555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB8C23E4C74400529352;
+			remoteInfo = hidapi;
+		};
+		F3A492F22555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB4923E399AC00529352;
+			remoteInfo = "hidapi-iOS";
+		};
+		F3A492F42555E1F100E92A8B /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = A75FDB6E23E3A2C900529352;
+			remoteInfo = "hidapi-tvOS";
+		};
+		FA3D992E1BC4E619002C96C8 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = FA3D98F81BC4E5A2002C96C8;
+			remoteInfo = "SDL2test-TV";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		046CEF8613254F23007AD51D /* testgesture.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgesture.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		046CEF8913254F63007AD51D /* testgesture.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testgesture.c; sourceTree = "<group>"; };
+		047A63ED13285C3200CD7973 /* checkkeys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = checkkeys.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		047A63F013285CD100CD7973 /* checkkeys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = checkkeys.c; sourceTree = "<group>"; };
+		1D6058910D05DD3D006BFB54 /* testwm2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testwm2.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		56ED050D118A8FE400A56AA6 /* testpower.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testpower.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		56ED0510118A904200A56AA6 /* testpower.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testpower.c; sourceTree = "<group>"; };
+		75E09187241EACB9004729E1 /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = System/Library/Frameworks/CoreBluetooth.framework; sourceTree = SDKROOT; };
+		75E09195241EACC9004729E1 /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS13.2.sdk/System/Library/Frameworks/CoreBluetooth.framework; sourceTree = DEVELOPER_DIR; };
+		AA13B3261FB8AEBC00D9FEE6 /* testyuv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testyuv.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		AA13B32E1FB8AF0C00D9FEE6 /* testyuv.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = testyuv.bmp; sourceTree = "<group>"; };
+		AA13B35B1FB8B4D600D9FEE6 /* testyuv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testyuv.c; sourceTree = "<group>"; };
+		AA13B35E1FB8B50D00D9FEE6 /* testyuv_cvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testyuv_cvt.c; sourceTree = "<group>"; };
+		AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL2test.xcodeproj; path = ../SDLtest/SDL2test.xcodeproj; sourceTree = "<group>"; };
+		AA2F57A91FDB544800832AD7 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
+		AAE7DEEC14CBB1E100DF1A0E /* testscale.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testscale.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		AAE7DF4514CBB43900DF1A0E /* testscale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testscale.c; sourceTree = "<group>"; };
+		AAE7DFB114CBB54E00DF1A0E /* testrendertarget.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testrendertarget.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		AAE7DFB414CBB5F700DF1A0E /* testrendertarget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testrendertarget.c; sourceTree = "<group>"; };
+		F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../../Xcode/SDL/SDL.xcodeproj; sourceTree = "<group>"; };
+		F3A493AB2555E30000E92A8B /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = System/Library/Frameworks/CoreHaptics.framework; sourceTree = SDKROOT; };
+		F3A494242555E3D100E92A8B /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; };
+		F3A494682555E42B00E92A8B /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
+		F3A494F82555E83D00E92A8B /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreBluetooth.framework; sourceTree = DEVELOPER_DIR; };
+		F3A4953C2555EB8100E92A8B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
+		F3F758D722AC58A1001D97F2 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.2.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
+		FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testgamecontroller.c; sourceTree = "<group>"; };
+		FA0EF2281BAF4487000E07A6 /* axis.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = axis.bmp; sourceTree = "<group>"; };
+		FA0EF2291BAF4487000E07A6 /* button.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = button.bmp; sourceTree = "<group>"; };
+		FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = controllermap.bmp; sourceTree = "<group>"; };
+		FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "testgamecontroller-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA684F7A1BAF1A4400DCFD1A /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
+		FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		FABA34761D8B4EAD00915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		FABA34911D8B575200915323 /* testaudiocapture.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testaudiocapture.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FABA34931D8B578200915323 /* testaudiocapture.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testaudiocapture.c; sourceTree = "<group>"; };
+		FABA34AA1D8B582100915323 /* loopwav-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "loopwav-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FAE0E9931BAF9B230098DFA4 /* testgamecontroller.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgamecontroller.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDA8A7410E2D0F1600EA573E /* testaudioinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testaudioinfo.c; sourceTree = "<group>"; };
+		FDA8A7470E2D0F1600EA573E /* testerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testerror.c; sourceTree = "<group>"; };
+		FDA8A7480E2D0F1600EA573E /* testfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testfile.c; sourceTree = "<group>"; };
+		FDA8A74C0E2D0F1600EA573E /* testthread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testthread.c; sourceTree = "<group>"; };
+		FDA8A74D0E2D0F1600EA573E /* testiconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testiconv.c; sourceTree = "<group>"; };
+		FDA8A74E0E2D0F1600EA573E /* testjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testjoystick.c; sourceTree = "<group>"; };
+		FDA8A74F0E2D0F1600EA573E /* testkeys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testkeys.c; sourceTree = "<group>"; };
+		FDA8A7510E2D0F1600EA573E /* testlock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testlock.c; sourceTree = "<group>"; };
+		FDA8A7540E2D0F1600EA573E /* testoverlay2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testoverlay2.c; sourceTree = "<group>"; };
+		FDA8A7560E2D0F1600EA573E /* testplatform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testplatform.c; sourceTree = "<group>"; };
+		FDA8A7570E2D0F1600EA573E /* testsem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testsem.c; sourceTree = "<group>"; };
+		FDA8A7590E2D0F1600EA573E /* testsprite2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testsprite2.c; sourceTree = "<group>"; };
+		FDA8A75A0E2D0F1600EA573E /* testtimer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testtimer.c; sourceTree = "<group>"; };
+		FDA8A75B0E2D0F1600EA573E /* testver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testver.c; sourceTree = "<group>"; };
+		FDA8A75F0E2D0F1600EA573E /* testwm2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testwm2.c; sourceTree = "<group>"; };
+		FDA8A7610E2D0F1600EA573E /* torturethread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = torturethread.c; sourceTree = "<group>"; };
+		FDA8A78B0E2D0F3D00EA573E /* loopwave.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = loopwave.c; sourceTree = "<group>"; };
+		FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		FDA8A8990E2D111A00EA573E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		FDA8A89C0E2D111A00EA573E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		FDA8A89D0E2D111A00EA573E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		FDA8AABB0E2D330F00EA573E /* loopwav.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = loopwav.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDA8AAD90E2D33B000EA573E /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = icon.bmp; sourceTree = "<group>"; };
+		FDA8AADA0E2D33BA00EA573E /* moose.dat */ = {isa = PBXFileReference; lastKnownFileType = file; path = moose.dat; sourceTree = "<group>"; };
+		FDA8AADB0E2D33BA00EA573E /* picture.xbm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = picture.xbm; sourceTree = "<group>"; };
+		FDA8AADE0E2D33C100EA573E /* sample.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = sample.bmp; sourceTree = "<group>"; };
+		FDA8AAE20E2D33C600EA573E /* sample.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = sample.wav; sourceTree = "<group>"; };
+		FDAAC3CD0E2D47E6001DB1D8 /* testaudioinfo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testaudioinfo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDAAC59B0E2D5429001DB1D8 /* testerror.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testerror.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDAAC5C90E2D55B5001DB1D8 /* testfile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testfile.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDAAC6260E2D5914001DB1D8 /* testgles.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgles.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDAAC6290E2D5960001DB1D8 /* testgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testgles.c; sourceTree = "<group>"; };
+		FDC430000F0D866D009C87E1 /* torturethread.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = torturethread.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDC430090F0D86BF009C87E1 /* testdraw2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testdraw2.c; sourceTree = "<group>"; };
+		FDD2C10A0E2E4F4B00B7A85F /* testthread.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testthread.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C1810E2E52C000B7A85F /* testiconv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testiconv.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C18A0E2E52FE00B7A85F /* utf8.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = utf8.txt; sourceTree = "<group>"; };
+		FDD2C1A50E2E534F00B7A85F /* testjoystick.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testjoystick.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C45E0E2E773800B7A85F /* testkeys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testkeys.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C47C0E2E77D700B7A85F /* testlock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testlock.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C50B0E2E7F4800B7A85F /* testplatform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testplatform.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C5290E2E807600B7A85F /* testsem.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testsem.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C54E0E2E80E400B7A85F /* testsprite2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testsprite2.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C5870E2E8C7400B7A85F /* testtimer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testtimer.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C5C50E2E8CFC00B7A85F /* testver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testver.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FDD2C6F40E2E959E00B7A85F /* torturethread.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = torturethread.app; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		046CEF7A13254F23007AD51D /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494F72555E80E00E92A8B /* libSDL2.a in Frameworks */,
+				F3F758D322AC561A001D97F2 /* libSDL2test.a in Frameworks */,
+				046CEF7C13254F23007AD51D /* AudioToolbox.framework in Frameworks */,
+				FABA34B51D8B5B8400915323 /* AVFoundation.framework in Frameworks */,
+				046CEF8213254F23007AD51D /* CoreAudio.framework in Frameworks */,
+				75E0919D241EACF7004729E1 /* CoreBluetooth.framework in Frameworks */,
+				046CEF7F13254F23007AD51D /* CoreGraphics.framework in Frameworks */,
+				F3A494FD2555E89700E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD1196766C900F8EB7C /* CoreMotion.framework in Frameworks */,
+				046CEF8113254F23007AD51D /* Foundation.framework in Frameworks */,
+				FA684F841BAF1A5C00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758DF22AC5B94001D97F2 /* Metal.framework in Frameworks */,
+				046CEF7E13254F23007AD51D /* OpenGLES.framework in Frameworks */,
+				046CEF7D13254F23007AD51D /* QuartzCore.framework in Frameworks */,
+				046CEF8013254F23007AD51D /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		047A63E113285C3200CD7973 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A493C92555E32200E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE470176059D00029C7A5 /* libSDL2test.a in Frameworks */,
+				047A63E313285C3200CD7973 /* AudioToolbox.framework in Frameworks */,
+				FABA34B01D8B5B6400915323 /* AVFoundation.framework in Frameworks */,
+				047A63E913285C3200CD7973 /* CoreAudio.framework in Frameworks */,
+				75E09192241EACB9004729E1 /* CoreBluetooth.framework in Frameworks */,
+				047A63E613285C3200CD7973 /* CoreGraphics.framework in Frameworks */,
+				F3A494022555E37A00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BAD1967076F00F8EB7C /* CoreMotion.framework in Frameworks */,
+				047A63E813285C3200CD7973 /* Foundation.framework in Frameworks */,
+				FA684F7B1BAF1A4400DCFD1A /* GameController.framework in Frameworks */,
+				F3F758D422AC575F001D97F2 /* Metal.framework in Frameworks */,
+				047A63E513285C3200CD7973 /* OpenGLES.framework in Frameworks */,
+				047A63E413285C3200CD7973 /* QuartzCore.framework in Frameworks */,
+				047A63E713285C3200CD7973 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4951A2555EADC00E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47817605BF60029C7A5 /* libSDL2test.a in Frameworks */,
+				FDA8A89F0E2D111A00EA573E /* AudioToolbox.framework in Frameworks */,
+				FABA34C41D8B5BCB00915323 /* AVFoundation.framework in Frameworks */,
+				FDA8A8A50E2D111A00EA573E /* CoreAudio.framework in Frameworks */,
+				75E091AC241EAD61004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDA8A8A20E2D111A00EA573E /* CoreGraphics.framework in Frameworks */,
+				F3A4951B2555EAE200E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BE0196766F400F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDA8A8A40E2D111A00EA573E /* Foundation.framework in Frameworks */,
+				FA684F931BAF1A8A00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758EC22AC5DA6001D97F2 /* Metal.framework in Frameworks */,
+				FDA8A8A10E2D111A00EA573E /* OpenGLES.framework in Frameworks */,
+				FDA8A8A00E2D111A00EA573E /* QuartzCore.framework in Frameworks */,
+				FDA8A8A30E2D111A00EA573E /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		56ED0501118A8FE400A56AA6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4950A2555EA1D00E92A8B /* libSDL2.a in Frameworks */,
+				56ED0503118A8FE400A56AA6 /* AudioToolbox.framework in Frameworks */,
+				FABA34BC1D8B5BA600915323 /* AVFoundation.framework in Frameworks */,
+				56ED0509118A8FE400A56AA6 /* CoreAudio.framework in Frameworks */,
+				75E091A4241EAD35004729E1 /* CoreBluetooth.framework in Frameworks */,
+				56ED0506118A8FE400A56AA6 /* CoreGraphics.framework in Frameworks */,
+				F3A4950B2555EA2300E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD8196766DD00F8EB7C /* CoreMotion.framework in Frameworks */,
+				56ED0508118A8FE400A56AA6 /* Foundation.framework in Frameworks */,
+				FA684F8B1BAF1A7100DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E622AC5CC5001D97F2 /* Metal.framework in Frameworks */,
+				56ED0505118A8FE400A56AA6 /* OpenGLES.framework in Frameworks */,
+				56ED0504118A8FE400A56AA6 /* QuartzCore.framework in Frameworks */,
+				56ED0507118A8FE400A56AA6 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AA13B3161FB8AEBC00D9FEE6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4951C2555EB0E00E92A8B /* libSDL2.a in Frameworks */,
+				AA13B3181FB8AEBC00D9FEE6 /* libSDL2test.a in Frameworks */,
+				AA13B31C1FB8AEBC00D9FEE6 /* AudioToolbox.framework in Frameworks */,
+				AA13B3171FB8AEBC00D9FEE6 /* AVFoundation.framework in Frameworks */,
+				AA13B3221FB8AEBC00D9FEE6 /* CoreAudio.framework in Frameworks */,
+				75E091AD241EAD65004729E1 /* CoreBluetooth.framework in Frameworks */,
+				AA13B31F1FB8AEBC00D9FEE6 /* CoreGraphics.framework in Frameworks */,
+				F3A4951D2555EB1300E92A8B /* CoreHaptics.framework in Frameworks */,
+				AA13B31B1FB8AEBC00D9FEE6 /* CoreMotion.framework in Frameworks */,
+				AA13B3211FB8AEBC00D9FEE6 /* Foundation.framework in Frameworks */,
+				AA13B31A1FB8AEBC00D9FEE6 /* GameController.framework in Frameworks */,
+				F3F758ED22AC5DC5001D97F2 /* Metal.framework in Frameworks */,
+				AA13B31E1FB8AEBC00D9FEE6 /* OpenGLES.framework in Frameworks */,
+				AA13B31D1FB8AEBC00D9FEE6 /* QuartzCore.framework in Frameworks */,
+				AA13B3201FB8AEBC00D9FEE6 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DEE014CBB1E100DF1A0E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4950E2555EA5E00E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47617605B9E0029C7A5 /* libSDL2test.a in Frameworks */,
+				AAE7DEE214CBB1E100DF1A0E /* AudioToolbox.framework in Frameworks */,
+				FABA34BE1D8B5BB000915323 /* AVFoundation.framework in Frameworks */,
+				AAE7DEE814CBB1E100DF1A0E /* CoreAudio.framework in Frameworks */,
+				75E091A6241EAD3F004729E1 /* CoreBluetooth.framework in Frameworks */,
+				AAE7DEE514CBB1E100DF1A0E /* CoreGraphics.framework in Frameworks */,
+				F3A4950F2555EA6400E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDA196766E200F8EB7C /* CoreMotion.framework in Frameworks */,
+				AAE7DEE714CBB1E100DF1A0E /* Foundation.framework in Frameworks */,
+				FA684F8D1BAF1A7800DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E722AC5CFE001D97F2 /* Metal.framework in Frameworks */,
+				AAE7DEE414CBB1E100DF1A0E /* OpenGLES.framework in Frameworks */,
+				AAE7DEE314CBB1E100DF1A0E /* QuartzCore.framework in Frameworks */,
+				AAE7DEE614CBB1E100DF1A0E /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DFA514CBB54E00DF1A0E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4950C2555EA3700E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47517605B930029C7A5 /* libSDL2test.a in Frameworks */,
+				AAE7DFA714CBB54E00DF1A0E /* AudioToolbox.framework in Frameworks */,
+				FABA34BD1D8B5BAB00915323 /* AVFoundation.framework in Frameworks */,
+				AAE7DFAD14CBB54E00DF1A0E /* CoreAudio.framework in Frameworks */,
+				75E091A5241EAD3B004729E1 /* CoreBluetooth.framework in Frameworks */,
+				AAE7DFAA14CBB54E00DF1A0E /* CoreGraphics.framework in Frameworks */,
+				F3A4950D2555EA3D00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD9196766E000F8EB7C /* CoreMotion.framework in Frameworks */,
+				AAE7DFAC14CBB54E00DF1A0E /* Foundation.framework in Frameworks */,
+				FA684F8C1BAF1A7400DCFD1A /* GameController.framework in Frameworks */,
+				AA2F57AA1FDB544800832AD7 /* Metal.framework in Frameworks */,
+				AAE7DFA914CBB54E00DF1A0E /* OpenGLES.framework in Frameworks */,
+				AAE7DFA814CBB54E00DF1A0E /* QuartzCore.framework in Frameworks */,
+				AAE7DFAB14CBB54E00DF1A0E /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA3D99311BC4E644002C96C8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494F52555E7F800E92A8B /* libSDL2.a in Frameworks */,
+				F3A494FC2555E87500E92A8B /* hidapi.framework in Frameworks */,
+				FA3D994A1BC4E6AD002C96C8 /* AudioToolbox.framework in Frameworks */,
+				F3A4953D2555EB8100E92A8B /* AVFoundation.framework in Frameworks */,
+				FA3D99501BC4E6AD002C96C8 /* CoreAudio.framework in Frameworks */,
+				F3A494FA2555E85600E92A8B /* CoreBluetooth.framework in Frameworks */,
+				FA3D994D1BC4E6AD002C96C8 /* CoreGraphics.framework in Frameworks */,
+				F3A494F62555E7FE00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA3D994F1BC4E6AD002C96C8 /* Foundation.framework in Frameworks */,
+				FA3D99481BC4E6AD002C96C8 /* GameController.framework in Frameworks */,
+				F3A4955A2555EB9500E92A8B /* Metal.framework in Frameworks */,
+				FA3D994C1BC4E6AD002C96C8 /* OpenGLES.framework in Frameworks */,
+				FA3D994B1BC4E6AD002C96C8 /* QuartzCore.framework in Frameworks */,
+				FA3D994E1BC4E6AD002C96C8 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34821D8B575200915323 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4941F2555E39600E92A8B /* libSDL2.a in Frameworks */,
+				FABA34871D8B575200915323 /* AudioToolbox.framework in Frameworks */,
+				FABA34831D8B575200915323 /* AVFoundation.framework in Frameworks */,
+				FABA348D1D8B575200915323 /* CoreAudio.framework in Frameworks */,
+				75E09193241EACBE004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FABA348A1D8B575200915323 /* CoreGraphics.framework in Frameworks */,
+				F3A494202555E39E00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FABA34861D8B575200915323 /* CoreMotion.framework in Frameworks */,
+				FABA348C1D8B575200915323 /* Foundation.framework in Frameworks */,
+				FABA34851D8B575200915323 /* GameController.framework in Frameworks */,
+				F3F758D522AC57D8001D97F2 /* Metal.framework in Frameworks */,
+				FABA34891D8B575200915323 /* OpenGLES.framework in Frameworks */,
+				FABA34881D8B575200915323 /* QuartzCore.framework in Frameworks */,
+				FABA348B1D8B575200915323 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA349B1D8B582100915323 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494232555E3C900E92A8B /* libSDL2.a in Frameworks */,
+				FABA34A01D8B582100915323 /* AudioToolbox.framework in Frameworks */,
+				FABA349C1D8B582100915323 /* AVFoundation.framework in Frameworks */,
+				FABA34A61D8B582100915323 /* CoreAudio.framework in Frameworks */,
+				F3A494F92555E83D00E92A8B /* CoreBluetooth.framework in Frameworks */,
+				FABA34A31D8B582100915323 /* CoreGraphics.framework in Frameworks */,
+				F3A494252555E3D100E92A8B /* CoreHaptics.framework in Frameworks */,
+				FABA34A51D8B582100915323 /* Foundation.framework in Frameworks */,
+				FABA349E1D8B582100915323 /* GameController.framework in Frameworks */,
+				F3A494692555E42B00E92A8B /* Metal.framework in Frameworks */,
+				FABA34A21D8B582100915323 /* OpenGLES.framework in Frameworks */,
+				FABA34A11D8B582100915323 /* QuartzCore.framework in Frameworks */,
+				FABA34A41D8B582100915323 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FAE0E9851BAF9B230098DFA4 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4938E2555E2D500E92A8B /* libSDL2.a in Frameworks */,
+				F3A494FB2555E86200E92A8B /* hidapi.framework in Frameworks */,
+				FAE0E9891BAF9B230098DFA4 /* AudioToolbox.framework in Frameworks */,
+				FABA34AE1D8B58B200915323 /* AVFoundation.framework in Frameworks */,
+				FAE0E98F1BAF9B230098DFA4 /* CoreAudio.framework in Frameworks */,
+				75E0919B241EACEA004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FAE0E98C1BAF9B230098DFA4 /* CoreGraphics.framework in Frameworks */,
+				F3A493AC2555E30000E92A8B /* CoreHaptics.framework in Frameworks */,
+				FAE0E9881BAF9B230098DFA4 /* CoreMotion.framework in Frameworks */,
+				FAE0E98E1BAF9B230098DFA4 /* Foundation.framework in Frameworks */,
+				FAE0E9871BAF9B230098DFA4 /* GameController.framework in Frameworks */,
+				F3F758DD22AC5A6C001D97F2 /* Metal.framework in Frameworks */,
+				FAE0E98B1BAF9B230098DFA4 /* OpenGLES.framework in Frameworks */,
+				FAE0E98A1BAF9B230098DFA4 /* QuartzCore.framework in Frameworks */,
+				FAE0E98D1BAF9B230098DFA4 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDA8AAAE0E2D330F00EA573E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494212555E3AE00E92A8B /* libSDL2.a in Frameworks */,
+				FDA8AAB10E2D330F00EA573E /* AudioToolbox.framework in Frameworks */,
+				FABA34771D8B4EAD00915323 /* AVFoundation.framework in Frameworks */,
+				FDA8AAB70E2D330F00EA573E /* CoreAudio.framework in Frameworks */,
+				75E09194241EACC3004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDA8AAB40E2D330F00EA573E /* CoreGraphics.framework in Frameworks */,
+				F3A494222555E3B700E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BC9196766BC00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDA8AAB60E2D330F00EA573E /* Foundation.framework in Frameworks */,
+				FA684F7F1BAF1A4D00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758D622AC5811001D97F2 /* Metal.framework in Frameworks */,
+				FDA8AAB30E2D330F00EA573E /* OpenGLES.framework in Frameworks */,
+				FDA8AAB20E2D330F00EA573E /* QuartzCore.framework in Frameworks */,
+				FDA8AAB50E2D330F00EA573E /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC3C00E2D47E6001DB1D8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494D12555E75200E92A8B /* libSDL2.a in Frameworks */,
+				FDAAC3C30E2D47E6001DB1D8 /* AudioToolbox.framework in Frameworks */,
+				FABA34B11D8B5B6C00915323 /* AVFoundation.framework in Frameworks */,
+				FDAAC3C90E2D47E6001DB1D8 /* CoreAudio.framework in Frameworks */,
+				75E09197241EACD3004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDAAC3C60E2D47E6001DB1D8 /* CoreGraphics.framework in Frameworks */,
+				F3A494D22555E75B00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BCD196766BF00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDAAC3C80E2D47E6001DB1D8 /* Foundation.framework in Frameworks */,
+				FA684F801BAF1A5000DCFD1A /* GameController.framework in Frameworks */,
+				F3F758DA22AC59A5001D97F2 /* Metal.framework in Frameworks */,
+				FDAAC3C50E2D47E6001DB1D8 /* OpenGLES.framework in Frameworks */,
+				FDAAC3C40E2D47E6001DB1D8 /* QuartzCore.framework in Frameworks */,
+				FDAAC3C70E2D47E6001DB1D8 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC58E0E2D5429001DB1D8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494F12555E7B300E92A8B /* libSDL2.a in Frameworks */,
+				FDAAC5910E2D5429001DB1D8 /* AudioToolbox.framework in Frameworks */,
+				FABA34B31D8B5B7800915323 /* AVFoundation.framework in Frameworks */,
+				FDAAC5970E2D5429001DB1D8 /* CoreAudio.framework in Frameworks */,
+				75E09199241EACDF004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDAAC5940E2D5429001DB1D8 /* CoreGraphics.framework in Frameworks */,
+				F3A494F22555E7B900E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BCF196766C400F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDAAC5960E2D5429001DB1D8 /* Foundation.framework in Frameworks */,
+				FA684F821BAF1A5700DCFD1A /* GameController.framework in Frameworks */,
+				F3F758DB22AC5A1B001D97F2 /* Metal.framework in Frameworks */,
+				FDAAC5930E2D5429001DB1D8 /* OpenGLES.framework in Frameworks */,
+				FDAAC5920E2D5429001DB1D8 /* QuartzCore.framework in Frameworks */,
+				FDAAC5950E2D5429001DB1D8 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC5BC0E2D55B5001DB1D8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494F32555E7D000E92A8B /* libSDL2.a in Frameworks */,
+				FDAAC5BF0E2D55B5001DB1D8 /* AudioToolbox.framework in Frameworks */,
+				FABA34B41D8B5B7C00915323 /* AVFoundation.framework in Frameworks */,
+				FDAAC5C50E2D55B5001DB1D8 /* CoreAudio.framework in Frameworks */,
+				75E0919A241EACE5004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDAAC5C20E2D55B5001DB1D8 /* CoreGraphics.framework in Frameworks */,
+				F3A494F42555E7D800E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD0196766C600F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDAAC5C40E2D55B5001DB1D8 /* Foundation.framework in Frameworks */,
+				FA684F831BAF1A5A00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758DC22AC5A46001D97F2 /* Metal.framework in Frameworks */,
+				FDAAC5C10E2D55B5001DB1D8 /* OpenGLES.framework in Frameworks */,
+				FDAAC5C00E2D55B5001DB1D8 /* QuartzCore.framework in Frameworks */,
+				FDAAC5C30E2D55B5001DB1D8 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC6190E2D5914001DB1D8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494FE2555E8AA00E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47417605B5C0029C7A5 /* libSDL2test.a in Frameworks */,
+				FDAAC61C0E2D5914001DB1D8 /* AudioToolbox.framework in Frameworks */,
+				FABA34B61D8B5B8900915323 /* AVFoundation.framework in Frameworks */,
+				FDAAC6220E2D5914001DB1D8 /* CoreAudio.framework in Frameworks */,
+				75E0919E241EAD14004729E1 /* CoreBluetooth.framework in Frameworks */,
+				F3A494FF2555E8B300E92A8B /* CoreHaptics.framework in Frameworks */,
+				FDAAC61F0E2D5914001DB1D8 /* CoreGraphics.framework in Frameworks */,
+				FA8B4BD2196766CB00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDAAC6210E2D5914001DB1D8 /* Foundation.framework in Frameworks */,
+				FA684F851BAF1A6000DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E022AC5BB6001D97F2 /* Metal.framework in Frameworks */,
+				FDAAC61E0E2D5914001DB1D8 /* OpenGLES.framework in Frameworks */,
+				FDAAC61D0E2D5914001DB1D8 /* QuartzCore.framework in Frameworks */,
+				FDAAC6200E2D5914001DB1D8 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC42FF30F0D866D009C87E1 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A494D32555E76E00E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47117605A7F0029C7A5 /* libSDL2test.a in Frameworks */,
+				FDC42FF60F0D866D009C87E1 /* AudioToolbox.framework in Frameworks */,
+				FABA34B21D8B5B7300915323 /* AVFoundation.framework in Frameworks */,
+				FDC42FFC0F0D866D009C87E1 /* CoreAudio.framework in Frameworks */,
+				75E09198241EACD9004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDC42FF90F0D866D009C87E1 /* CoreGraphics.framework in Frameworks */,
+				F3A494D42555E77400E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BCE196766C100F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDC42FFB0F0D866D009C87E1 /* Foundation.framework in Frameworks */,
+				FA684F811BAF1A5300DCFD1A /* GameController.framework in Frameworks */,
+				AA2F57AB1FDB5A0900832AD7 /* Metal.framework in Frameworks */,
+				FDC42FF80F0D866D009C87E1 /* OpenGLES.framework in Frameworks */,
+				FDC42FF70F0D866D009C87E1 /* QuartzCore.framework in Frameworks */,
+				FDC42FFA0F0D866D009C87E1 /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C0FD0E2E4F4B00B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495142555EA9B00E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C1000E2E4F4B00B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34C11D8B5BBE00915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C1060E2E4F4B00B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A9241EAD4F004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C1030E2E4F4B00B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495152555EAA100E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDD196766EB00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C1050E2E4F4B00B7A85F /* Foundation.framework in Frameworks */,
+				FA684F901BAF1A8100DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E922AC5D51001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C1020E2E4F4B00B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C1010E2E4F4B00B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C1040E2E4F4B00B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1740E2E52C000B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495002555E8C000E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C1770E2E52C000B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34B71D8B5B8D00915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C17D0E2E52C000B7A85F /* CoreAudio.framework in Frameworks */,
+				75E0919F241EAD19004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C17A0E2E52C000B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495012555E8D200E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD3196766CE00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C17C0E2E52C000B7A85F /* Foundation.framework in Frameworks */,
+				FA684F861BAF1A6200DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E122AC5BE9001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C1790E2E52C000B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C1780E2E52C000B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C17B0E2E52C000B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1980E2E534F00B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495022555E9BF00E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C19B0E2E534F00B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34B81D8B5B9200915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C1A10E2E534F00B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A0241EAD21004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C19E0E2E534F00B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495032555E9C600E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD4196766D100F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C1A00E2E534F00B7A85F /* Foundation.framework in Frameworks */,
+				FA684F871BAF1A6500DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E222AC5C12001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C19D0E2E534F00B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C19C0E2E534F00B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C19F0E2E534F00B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C4510E2E773800B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495042555E9D900E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C4540E2E773800B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34B91D8B5B9600915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C45A0E2E773800B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A1241EAD26004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C4570E2E773800B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495052555E9E000E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD5196766D400F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C4590E2E773800B7A85F /* Foundation.framework in Frameworks */,
+				FA684F881BAF1A6800DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E322AC5C34001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C4560E2E773800B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C4550E2E773800B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C4580E2E773800B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C46F0E2E77D700B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495062555E9F100E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C4720E2E77D700B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34BA1D8B5B9B00915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C4780E2E77D700B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A2241EAD2B004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C4750E2E77D700B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495072555E9F700E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD6196766D700F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C4770E2E77D700B7A85F /* Foundation.framework in Frameworks */,
+				FA684F891BAF1A6A00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E422AC5C83001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C4740E2E77D700B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C4730E2E77D700B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C4760E2E77D700B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C4FE0E2E7F4800B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495082555EA0300E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C5010E2E7F4800B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34BB1D8B5BA100915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C5070E2E7F4800B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A3241EAD31004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C5040E2E7F4800B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495092555EA1200E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BD7196766DA00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C5060E2E7F4800B7A85F /* Foundation.framework in Frameworks */,
+				FA684F8A1BAF1A6D00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E522AC5CA5001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C5030E2E7F4800B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C5020E2E7F4800B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C5050E2E7F4800B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C51C0E2E807600B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495102555EA7600E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C51F0E2E807600B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34BF1D8B5BB500915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C5250E2E807600B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A7241EAD45004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C5220E2E807600B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495112555EA7B00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDB196766E500F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C5240E2E807600B7A85F /* Foundation.framework in Frameworks */,
+				FA684F8E1BAF1A7B00DCFD1A /* GameController.framework in Frameworks */,
+				F3F758E822AC5D1B001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C5210E2E807600B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C5200E2E807600B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C5230E2E807600B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5410E2E80E400B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495122555EA8700E92A8B /* libSDL2.a in Frameworks */,
+				AA1EE47717605BAB0029C7A5 /* libSDL2test.a in Frameworks */,
+				FDD2C5440E2E80E400B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34C01D8B5BBA00915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C54A0E2E80E400B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091A8241EAD4A004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C5470E2E80E400B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495132555EA8C00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDC196766E800F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C5490E2E80E400B7A85F /* Foundation.framework in Frameworks */,
+				FA684F8F1BAF1A7E00DCFD1A /* GameController.framework in Frameworks */,
+				AA2F57AC1FDB5AB600832AD7 /* Metal.framework in Frameworks */,
+				FDD2C5460E2E80E400B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C5450E2E80E400B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C5480E2E80E400B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C57A0E2E8C7400B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495162555EAB000E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C57D0E2E8C7400B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34C21D8B5BC200915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C5830E2E8C7400B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091AA241EAD55004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C5800E2E8C7400B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495172555EABB00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDE196766EE00F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C5820E2E8C7400B7A85F /* Foundation.framework in Frameworks */,
+				FA684F911BAF1A8400DCFD1A /* GameController.framework in Frameworks */,
+				F3F758EA22AC5D6B001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C57F0E2E8C7400B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C57E0E2E8C7400B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C5810E2E8C7400B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5B80E2E8CFC00B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A495182555EAC500E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C5BB0E2E8CFC00B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34C31D8B5BC600915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C5C10E2E8CFC00B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091AB241EAD5B004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C5BE0E2E8CFC00B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A495192555EACB00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BDF196766F100F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C5C00E2E8CFC00B7A85F /* Foundation.framework in Frameworks */,
+				FA684F921BAF1A8700DCFD1A /* GameController.framework in Frameworks */,
+				F3F758EB22AC5D8B001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C5BD0E2E8CFC00B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C5BC0E2E8CFC00B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C5BF0E2E8CFC00B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C6E70E2E959E00B7A85F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3A4951E2555EB2600E92A8B /* libSDL2.a in Frameworks */,
+				FDD2C6EA0E2E959E00B7A85F /* AudioToolbox.framework in Frameworks */,
+				FABA34C51D8B5BD000915323 /* AVFoundation.framework in Frameworks */,
+				FDD2C6F00E2E959E00B7A85F /* CoreAudio.framework in Frameworks */,
+				75E091AE241EAD6B004729E1 /* CoreBluetooth.framework in Frameworks */,
+				FDD2C6ED0E2E959E00B7A85F /* CoreGraphics.framework in Frameworks */,
+				F3A4951F2555EB2D00E92A8B /* CoreHaptics.framework in Frameworks */,
+				FA8B4BE1196766F600F8EB7C /* CoreMotion.framework in Frameworks */,
+				FDD2C6EF0E2E959E00B7A85F /* Foundation.framework in Frameworks */,
+				FA684F941BAF1A9400DCFD1A /* GameController.framework in Frameworks */,
+				F3F758EE22AC5DE1001D97F2 /* Metal.framework in Frameworks */,
+				FDD2C6EC0E2E959E00B7A85F /* OpenGLES.framework in Frameworks */,
+				FDD2C6EB0E2E959E00B7A85F /* QuartzCore.framework in Frameworks */,
+				FDD2C6EE0E2E959E00B7A85F /* UIKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		19C28FACFE9D520D11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				1D6058910D05DD3D006BFB54 /* testwm2.app */,
+				FDA8AABB0E2D330F00EA573E /* loopwav.app */,
+				FDAAC3CD0E2D47E6001DB1D8 /* testaudioinfo.app */,
+				FDAAC59B0E2D5429001DB1D8 /* testerror.app */,
+				FDAAC5C90E2D55B5001DB1D8 /* testfile.app */,
+				FDAAC6260E2D5914001DB1D8 /* testgles.app */,
+				FDD2C10A0E2E4F4B00B7A85F /* testthread.app */,
+				FDD2C1810E2E52C000B7A85F /* testiconv.app */,
+				FDD2C1A50E2E534F00B7A85F /* testjoystick.app */,
+				FDD2C45E0E2E773800B7A85F /* testkeys.app */,
+				FDD2C47C0E2E77D700B7A85F /* testlock.app */,
+				FDD2C50B0E2E7F4800B7A85F /* testplatform.app */,
+				FDD2C5290E2E807600B7A85F /* testsem.app */,
+				FDD2C54E0E2E80E400B7A85F /* testsprite2.app */,
+				FDD2C5870E2E8C7400B7A85F /* testtimer.app */,
+				FDD2C5C50E2E8CFC00B7A85F /* testver.app */,
+				FDD2C6F40E2E959E00B7A85F /* torturethread.app */,
+				FDC430000F0D866D009C87E1 /* torturethread.app */,
+				56ED050D118A8FE400A56AA6 /* testpower.app */,
+				046CEF8613254F23007AD51D /* testgesture.app */,
+				047A63ED13285C3200CD7973 /* checkkeys.app */,
+				AAE7DEEC14CBB1E100DF1A0E /* testscale.app */,
+				AAE7DFB114CBB54E00DF1A0E /* testrendertarget.app */,
+				FAE0E9931BAF9B230098DFA4 /* testgamecontroller.app */,
+				FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */,
+				FABA34911D8B575200915323 /* testaudiocapture.app */,
+				FABA34AA1D8B582100915323 /* loopwav-TV.app */,
+				AA13B3261FB8AEBC00D9FEE6 /* testyuv.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+			isa = PBXGroup;
+			children = (
+				F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */,
+				AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */,
+				FDA8AAD60E2D339A00EA573E /* Resources */,
+				FDA8A7C30E2D10FA00EA573E /* Frameworks */,
+				FDA8A73B0E2D0F0400EA573E /* src */,
+				19C28FACFE9D520D11CA2CBB /* Products */,
+				FABA34751D8B4EAC00915323 /* Frameworks */,
+			);
+			name = CustomTemplate;
+			sourceTree = "<group>";
+		};
+		AA1EE44E176059220029C7A5 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				AA1EE452176059230029C7A5 /* libSDL2test.a */,
+				FA3D992F1BC4E619002C96C8 /* libSDL2test-TV.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		F3A492CD2555E1F100E92A8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				F3A492DD2555E1F100E92A8B /* SDL2.framework */,
+				F3A492DF2555E1F100E92A8B /* SDL2.framework */,
+				F3A492E12555E1F100E92A8B /* SDL2.framework */,
+				F3A492E32555E1F100E92A8B /* libSDL2.a */,
+				F3A492E52555E1F100E92A8B /* libSDL2.a */,
+				F3A492E72555E1F100E92A8B /* libSDL2.a */,
+				F3A492E92555E1F100E92A8B /* libSDL2.dylib */,
+				F3A492EB2555E1F100E92A8B /* libSDL2.dylib */,
+				F3A492ED2555E1F100E92A8B /* libSDL2.dylib */,
+				F3A492EF2555E1F100E92A8B /* SDL2 */,
+				F3A492F12555E1F100E92A8B /* hidapi.framework */,
+				F3A492F32555E1F100E92A8B /* hidapi.framework */,
+				F3A492F52555E1F100E92A8B /* hidapi.framework */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		FABA34751D8B4EAC00915323 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				AA2F57A91FDB544800832AD7 /* Metal.framework */,
+				FABA34761D8B4EAD00915323 /* AVFoundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		FDA8A73B0E2D0F0400EA573E /* src */ = {
+			isa = PBXGroup;
+			children = (
+				047A63F013285CD100CD7973 /* checkkeys.c */,
+				FDA8A78B0E2D0F3D00EA573E /* loopwave.c */,
+				FABA34931D8B578200915323 /* testaudiocapture.c */,
+				FDA8A7410E2D0F1600EA573E /* testaudioinfo.c */,
+				FDC430090F0D86BF009C87E1 /* testdraw2.c */,
+				FDA8A7470E2D0F1600EA573E /* testerror.c */,
+				FDA8A7480E2D0F1600EA573E /* testfile.c */,
+				FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */,
+				046CEF8913254F63007AD51D /* testgesture.c */,
+				FDAAC6290E2D5960001DB1D8 /* testgles.c */,
+				FDA8A74D0E2D0F1600EA573E /* testiconv.c */,
+				FDA8A74E0E2D0F1600EA573E /* testjoystick.c */,
+				FDA8A74F0E2D0F1600EA573E /* testkeys.c */,
+				FDA8A7510E2D0F1600EA573E /* testlock.c */,
+				FDA8A7540E2D0F1600EA573E /* testoverlay2.c */,
+				FDA8A7560E2D0F1600EA573E /* testplatform.c */,
+				56ED0510118A904200A56AA6 /* testpower.c */,
+				AAE7DFB414CBB5F700DF1A0E /* testrendertarget.c */,
+				AAE7DF4514CBB43900DF1A0E /* testscale.c */,
+				FDA8A7570E2D0F1600EA573E /* testsem.c */,
+				FDA8A7590E2D0F1600EA573E /* testsprite2.c */,
+				FDA8A74C0E2D0F1600EA573E /* testthread.c */,
+				FDA8A75A0E2D0F1600EA573E /* testtimer.c */,
+				FDA8A75B0E2D0F1600EA573E /* testver.c */,
+				FDA8A75F0E2D0F1600EA573E /* testwm2.c */,
+				AA13B35E1FB8B50D00D9FEE6 /* testyuv_cvt.c */,
+				AA13B35B1FB8B4D600D9FEE6 /* testyuv.c */,
+				FDA8A7610E2D0F1600EA573E /* torturethread.c */,
+			);
+			name = src;
+			path = ../../test;
+			sourceTree = "<group>";
+		};
+		FDA8A7C30E2D10FA00EA573E /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				F3A4953C2555EB8100E92A8B /* AVFoundation.framework */,
+				F3A494F82555E83D00E92A8B /* CoreBluetooth.framework */,
+				F3A494682555E42B00E92A8B /* Metal.framework */,
+				F3A493AB2555E30000E92A8B /* CoreHaptics.framework */,
+				F3A494242555E3D100E92A8B /* CoreHaptics.framework */,
+				75E09187241EACB9004729E1 /* CoreBluetooth.framework */,
+				75E09195241EACC9004729E1 /* CoreBluetooth.framework */,
+				F3F758D722AC58A1001D97F2 /* Metal.framework */,
+				FA684F7A1BAF1A4400DCFD1A /* GameController.framework */,
+				FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */,
+				FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */,
+				FDA8A8990E2D111A00EA573E /* QuartzCore.framework */,
+				FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */,
+				FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */,
+				FDA8A89C0E2D111A00EA573E /* UIKit.framework */,
+				FDA8A89D0E2D111A00EA573E /* Foundation.framework */,
+				FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		FDA8AAD60E2D339A00EA573E /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				FA0EF2281BAF4487000E07A6 /* axis.bmp */,
+				FA0EF2291BAF4487000E07A6 /* button.bmp */,
+				FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */,
+				FDA8AAD90E2D33B000EA573E /* icon.bmp */,
+				FDA8AADA0E2D33BA00EA573E /* moose.dat */,
+				FDA8AADB0E2D33BA00EA573E /* picture.xbm */,
+				FDA8AADE0E2D33C100EA573E /* sample.bmp */,
+				FDA8AAE20E2D33C600EA573E /* sample.wav */,
+				AA13B32E1FB8AF0C00D9FEE6 /* testyuv.bmp */,
+				FDD2C18A0E2E52FE00B7A85F /* utf8.txt */,
+			);
+			name = Resources;
+			path = ../../test;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		046CEF7513254F23007AD51D /* testgesture */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 046CEF8313254F23007AD51D /* Build configuration list for PBXNativeTarget "testgesture" */;
+			buildPhases = (
+				046CEF7613254F23007AD51D /* Resources */,
+				046CEF7813254F23007AD51D /* Sources */,
+				046CEF7A13254F23007AD51D /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testgesture;
+			productName = Test;
+			productReference = 046CEF8613254F23007AD51D /* testgesture.app */;
+			productType = "com.apple.product-type.application";
+		};
+		047A63DD13285C3200CD7973 /* checkkeys */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 047A63EA13285C3200CD7973 /* Build configuration list for PBXNativeTarget "checkkeys" */;
+			buildPhases = (
+				047A63DE13285C3200CD7973 /* Resources */,
+				047A63DF13285C3200CD7973 /* Sources */,
+				047A63E113285C3200CD7973 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = checkkeys;
+			productName = Test;
+			productReference = 047A63ED13285C3200CD7973 /* checkkeys.app */;
+			productType = "com.apple.product-type.application";
+		};
+		1D6058900D05DD3D006BFB54 /* testwm2 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "testwm2" */;
+			buildPhases = (
+				1D60588D0D05DD3D006BFB54 /* Resources */,
+				1D60588E0D05DD3D006BFB54 /* Sources */,
+				1D60588F0D05DD3D006BFB54 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testwm2;
+			productName = Test;
+			productReference = 1D6058910D05DD3D006BFB54 /* testwm2.app */;
+			productType = "com.apple.product-type.application";
+		};
+		56ED04FC118A8FE400A56AA6 /* testpower */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 56ED050A118A8FE400A56AA6 /* Build configuration list for PBXNativeTarget "testpower" */;
+			buildPhases = (
+				56ED04FD118A8FE400A56AA6 /* Resources */,
+				56ED04FF118A8FE400A56AA6 /* Sources */,
+				56ED0501118A8FE400A56AA6 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testpower;
+			productName = Test;
+			productReference = 56ED050D118A8FE400A56AA6 /* testpower.app */;
+			productType = "com.apple.product-type.application";
+		};
+		AA13B3111FB8AEBC00D9FEE6 /* testyuv */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = AA13B3231FB8AEBC00D9FEE6 /* Build configuration list for PBXNativeTarget "testyuv" */;
+			buildPhases = (
+				AA13B3121FB8AEBC00D9FEE6 /* Resources */,
+				AA13B3141FB8AEBC00D9FEE6 /* Sources */,
+				AA13B3161FB8AEBC00D9FEE6 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testyuv;
+			productName = Test;
+			productReference = AA13B3261FB8AEBC00D9FEE6 /* testyuv.app */;
+			productType = "com.apple.product-type.application";
+		};
+		AAE7DEDA14CBB1E100DF1A0E /* testscale */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = AAE7DEE914CBB1E100DF1A0E /* Build configuration list for PBXNativeTarget "testscale" */;
+			buildPhases = (
+				AAE7DEDB14CBB1E100DF1A0E /* Resources */,
+				AAE7DEDD14CBB1E100DF1A0E /* Sources */,
+				AAE7DEE014CBB1E100DF1A0E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testscale;
+			productName = Test;
+			productReference = AAE7DEEC14CBB1E100DF1A0E /* testscale.app */;
+			productType = "com.apple.product-type.application";
+		};
+		AAE7DF9E14CBB54E00DF1A0E /* testrendertarget */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = AAE7DFAE14CBB54E00DF1A0E /* Build configuration list for PBXNativeTarget "testrendertarget" */;
+			buildPhases = (
+				AAE7DF9F14CBB54E00DF1A0E /* Resources */,
+				AAE7DFA214CBB54E00DF1A0E /* Sources */,
+				AAE7DFA514CBB54E00DF1A0E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testrendertarget;
+			productName = Test;
+			productReference = AAE7DFB114CBB54E00DF1A0E /* testrendertarget.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FA3D99331BC4E644002C96C8 /* testgamecontroller-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA3D99451BC4E645002C96C8 /* Build configuration list for PBXNativeTarget "testgamecontroller-TV" */;
+			buildPhases = (
+				FA3D99301BC4E644002C96C8 /* Sources */,
+				FA3D99311BC4E644002C96C8 /* Frameworks */,
+				FA3D99321BC4E644002C96C8 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "testgamecontroller-TV";
+			productName = "testgamecontroller-TV";
+			productReference = FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FABA347D1D8B575200915323 /* testaudiocapture */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FABA348E1D8B575200915323 /* Build configuration list for PBXNativeTarget "testaudiocapture" */;
+			buildPhases = (
+				FABA347E1D8B575200915323 /* Resources */,
+				FABA34801D8B575200915323 /* Sources */,
+				FABA34821D8B575200915323 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testaudiocapture;
+			productName = Test;
+			productReference = FABA34911D8B575200915323 /* testaudiocapture.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FABA34961D8B582100915323 /* loopwav-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FABA34A71D8B582100915323 /* Build configuration list for PBXNativeTarget "loopwav-TV" */;
+			buildPhases = (
+				FABA34971D8B582100915323 /* Resources */,
+				FABA34991D8B582100915323 /* Sources */,
+				FABA349B1D8B582100915323 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "loopwav-TV";
+			productName = Test;
+			productReference = FABA34AA1D8B582100915323 /* loopwav-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FAE0E9801BAF9B230098DFA4 /* testgamecontroller */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FAE0E9901BAF9B230098DFA4 /* Build configuration list for PBXNativeTarget "testgamecontroller" */;
+			buildPhases = (
+				FAE0E9811BAF9B230098DFA4 /* Resources */,
+				FAE0E9831BAF9B230098DFA4 /* Sources */,
+				FAE0E9851BAF9B230098DFA4 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testgamecontroller;
+			productName = Test;
+			productReference = FAE0E9931BAF9B230098DFA4 /* testgamecontroller.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDA8AAAA0E2D330F00EA573E /* loopwav */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDA8AAB80E2D330F00EA573E /* Build configuration list for PBXNativeTarget "loopwav" */;
+			buildPhases = (
+				FDA8AAAB0E2D330F00EA573E /* Resources */,
+				FDA8AAAC0E2D330F00EA573E /* Sources */,
+				FDA8AAAE0E2D330F00EA573E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = loopwav;
+			productName = Test;
+			productReference = FDA8AABB0E2D330F00EA573E /* loopwav.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDAAC3BB0E2D47E6001DB1D8 /* testaudioinfo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDAAC3CA0E2D47E6001DB1D8 /* Build configuration list for PBXNativeTarget "testaudioinfo" */;
+			buildPhases = (
+				FDAAC3BC0E2D47E6001DB1D8 /* Resources */,
+				FDAAC3BE0E2D47E6001DB1D8 /* Sources */,
+				FDAAC3C00E2D47E6001DB1D8 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testaudioinfo;
+			productName = Test;
+			productReference = FDAAC3CD0E2D47E6001DB1D8 /* testaudioinfo.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDAAC58A0E2D5429001DB1D8 /* testerror */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDAAC5980E2D5429001DB1D8 /* Build configuration list for PBXNativeTarget "testerror" */;
+			buildPhases = (
+				FDAAC58B0E2D5429001DB1D8 /* Resources */,
+				FDAAC58C0E2D5429001DB1D8 /* Sources */,
+				FDAAC58E0E2D5429001DB1D8 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testerror;
+			productName = Test;
+			productReference = FDAAC59B0E2D5429001DB1D8 /* testerror.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDAAC5B80E2D55B5001DB1D8 /* testfile */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDAAC5C60E2D55B5001DB1D8 /* Build configuration list for PBXNativeTarget "testfile" */;
+			buildPhases = (
+				FDAAC5B90E2D55B5001DB1D8 /* Resources */,
+				FDAAC5BA0E2D55B5001DB1D8 /* Sources */,
+				FDAAC5BC0E2D55B5001DB1D8 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testfile;
+			productName = Test;
+			productReference = FDAAC5C90E2D55B5001DB1D8 /* testfile.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDAAC6150E2D5914001DB1D8 /* testgles */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDAAC6230E2D5914001DB1D8 /* Build configuration list for PBXNativeTarget "testgles" */;
+			buildPhases = (
+				FDAAC6160E2D5914001DB1D8 /* Resources */,
+				FDAAC6170E2D5914001DB1D8 /* Sources */,
+				FDAAC6190E2D5914001DB1D8 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testgles;
+			productName = Test;
+			productReference = FDAAC6260E2D5914001DB1D8 /* testgles.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDC42FEF0F0D866D009C87E1 /* testdraw2 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDC42FFD0F0D866D009C87E1 /* Build configuration list for PBXNativeTarget "testdraw2" */;
+			buildPhases = (
+				FDC42FF00F0D866D009C87E1 /* Resources */,
+				FDC42FF10F0D866D009C87E1 /* Sources */,
+				FDC42FF30F0D866D009C87E1 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testdraw2;
+			productName = Test;
+			productReference = FDC430000F0D866D009C87E1 /* torturethread.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C0F90E2E4F4B00B7A85F /* testthread */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C1070E2E4F4B00B7A85F /* Build configuration list for PBXNativeTarget "testthread" */;
+			buildPhases = (
+				FDD2C0FA0E2E4F4B00B7A85F /* Resources */,
+				FDD2C0FB0E2E4F4B00B7A85F /* Sources */,
+				FDD2C0FD0E2E4F4B00B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testthread;
+			productName = Test;
+			productReference = FDD2C10A0E2E4F4B00B7A85F /* testthread.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C1700E2E52C000B7A85F /* testiconv */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C17E0E2E52C000B7A85F /* Build configuration list for PBXNativeTarget "testiconv" */;
+			buildPhases = (
+				FDD2C1710E2E52C000B7A85F /* Resources */,
+				FDD2C1720E2E52C000B7A85F /* Sources */,
+				FDD2C1740E2E52C000B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testiconv;
+			productName = Test;
+			productReference = FDD2C1810E2E52C000B7A85F /* testiconv.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C1930E2E534F00B7A85F /* testjoystick */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C1A20E2E534F00B7A85F /* Build configuration list for PBXNativeTarget "testjoystick" */;
+			buildPhases = (
+				FDD2C1940E2E534F00B7A85F /* Resources */,
+				FDD2C1960E2E534F00B7A85F /* Sources */,
+				FDD2C1980E2E534F00B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testjoystick;
+			productName = Test;
+			productReference = FDD2C1A50E2E534F00B7A85F /* testjoystick.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C44D0E2E773800B7A85F /* testkeys */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C45B0E2E773800B7A85F /* Build configuration list for PBXNativeTarget "testkeys" */;
+			buildPhases = (
+				FDD2C44E0E2E773800B7A85F /* Resources */,
+				FDD2C44F0E2E773800B7A85F /* Sources */,
+				FDD2C4510E2E773800B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testkeys;
+			productName = Test;
+			productReference = FDD2C45E0E2E773800B7A85F /* testkeys.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C46B0E2E77D700B7A85F /* testlock */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C4790E2E77D700B7A85F /* Build configuration list for PBXNativeTarget "testlock" */;
+			buildPhases = (
+				FDD2C46C0E2E77D700B7A85F /* Resources */,
+				FDD2C46D0E2E77D700B7A85F /* Sources */,
+				FDD2C46F0E2E77D700B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testlock;
+			productName = Test;
+			productReference = FDD2C47C0E2E77D700B7A85F /* testlock.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C4F90E2E7F4800B7A85F /* testplatform */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C5080E2E7F4800B7A85F /* Build configuration list for PBXNativeTarget "testplatform" */;
+			buildPhases = (
+				FDD2C4FA0E2E7F4800B7A85F /* Resources */,
+				FDD2C4FC0E2E7F4800B7A85F /* Sources */,
+				FDD2C4FE0E2E7F4800B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testplatform;
+			productName = Test;
+			productReference = FDD2C50B0E2E7F4800B7A85F /* testplatform.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C5170E2E807600B7A85F /* testsem */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C5260E2E807600B7A85F /* Build configuration list for PBXNativeTarget "testsem" */;
+			buildPhases = (
+				FDD2C5180E2E807600B7A85F /* Resources */,
+				FDD2C51A0E2E807600B7A85F /* Sources */,
+				FDD2C51C0E2E807600B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testsem;
+			productName = Test;
+			productReference = FDD2C5290E2E807600B7A85F /* testsem.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C53D0E2E80E400B7A85F /* testsprite2 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C54B0E2E80E400B7A85F /* Build configuration list for PBXNativeTarget "testsprite2" */;
+			buildPhases = (
+				FDD2C53E0E2E80E400B7A85F /* Resources */,
+				FDD2C53F0E2E80E400B7A85F /* Sources */,
+				FDD2C5410E2E80E400B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testsprite2;
+			productName = Test;
+			productReference = FDD2C54E0E2E80E400B7A85F /* testsprite2.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C5740E2E8C7400B7A85F /* testtimer */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C5840E2E8C7400B7A85F /* Build configuration list for PBXNativeTarget "testtimer" */;
+			buildPhases = (
+				FDD2C5750E2E8C7400B7A85F /* Resources */,
+				FDD2C5770E2E8C7400B7A85F /* Sources */,
+				FDD2C57A0E2E8C7400B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testtimer;
+			productName = Test;
+			productReference = FDD2C5870E2E8C7400B7A85F /* testtimer.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C5B30E2E8CFC00B7A85F /* testver */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C5C20E2E8CFC00B7A85F /* Build configuration list for PBXNativeTarget "testver" */;
+			buildPhases = (
+				FDD2C5B40E2E8CFC00B7A85F /* Resources */,
+				FDD2C5B60E2E8CFC00B7A85F /* Sources */,
+				FDD2C5B80E2E8CFC00B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testver;
+			productName = Test;
+			productReference = FDD2C5C50E2E8CFC00B7A85F /* testver.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FDD2C6E20E2E959E00B7A85F /* torturethread */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FDD2C6F10E2E959E00B7A85F /* Build configuration list for PBXNativeTarget "torturethread" */;
+			buildPhases = (
+				FDD2C6E30E2E959E00B7A85F /* Resources */,
+				FDD2C6E50E2E959E00B7A85F /* Sources */,
+				FDD2C6E70E2E959E00B7A85F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = torturethread;
+			productName = Test;
+			productReference = FDD2C6F40E2E959E00B7A85F /* torturethread.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		29B97313FDCFA39411CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0630;
+				TargetAttributes = {
+					046CEF7513254F23007AD51D = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					047A63DD13285C3200CD7973 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					1D6058900D05DD3D006BFB54 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					56ED04FC118A8FE400A56AA6 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					AA13B3111FB8AEBC00D9FEE6 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					AAE7DEDA14CBB1E100DF1A0E = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					AAE7DF9E14CBB54E00DF1A0E = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FA3D99331BC4E644002C96C8 = {
+						CreatedOnToolsVersion = 7.1;
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FABA347D1D8B575200915323 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FABA34961D8B582100915323 = {
+						DevelopmentTeam = MXGJJ98X76;
+						ProvisioningStyle = Automatic;
+					};
+					FAE0E9801BAF9B230098DFA4 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDA8AAAA0E2D330F00EA573E = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDAAC3BB0E2D47E6001DB1D8 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDAAC58A0E2D5429001DB1D8 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDAAC5B80E2D55B5001DB1D8 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDAAC6150E2D5914001DB1D8 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDC42FEF0F0D866D009C87E1 = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C0F90E2E4F4B00B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C1700E2E52C000B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C1930E2E534F00B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C44D0E2E773800B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C46B0E2E77D700B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C4F90E2E7F4800B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C5170E2E807600B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C53D0E2E80E400B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C5740E2E8C7400B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C5B30E2E8CFC00B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+					FDD2C6E20E2E959E00B7A85F = {
+						DevelopmentTeam = MXGJJ98X76;
+					};
+				};
+			};
+			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestiPhoneOS" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				Base,
+			);
+			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = F3A492CD2555E1F100E92A8B /* Products */;
+					ProjectRef = F3A492CC2555E1F100E92A8B /* SDL.xcodeproj */;
+				},
+				{
+					ProductGroup = AA1EE44E176059220029C7A5 /* Products */;
+					ProjectRef = AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				047A63DD13285C3200CD7973 /* checkkeys */,
+				FDA8AAAA0E2D330F00EA573E /* loopwav */,
+				FABA34961D8B582100915323 /* loopwav-TV */,
+				FABA347D1D8B575200915323 /* testaudiocapture */,
+				FDAAC3BB0E2D47E6001DB1D8 /* testaudioinfo */,
+				FDC42FEF0F0D866D009C87E1 /* testdraw2 */,
+				FDAAC58A0E2D5429001DB1D8 /* testerror */,
+				FDAAC5B80E2D55B5001DB1D8 /* testfile */,
+				FAE0E9801BAF9B230098DFA4 /* testgamecontroller */,
+				FA3D99331BC4E644002C96C8 /* testgamecontroller-TV */,
+				046CEF7513254F23007AD51D /* testgesture */,
+				FDAAC6150E2D5914001DB1D8 /* testgles */,
+				FDD2C1700E2E52C000B7A85F /* testiconv */,
+				FDD2C1930E2E534F00B7A85F /* testjoystick */,
+				FDD2C44D0E2E773800B7A85F /* testkeys */,
+				FDD2C46B0E2E77D700B7A85F /* testlock */,
+				FDD2C4F90E2E7F4800B7A85F /* testplatform */,
+				56ED04FC118A8FE400A56AA6 /* testpower */,
+				AAE7DF9E14CBB54E00DF1A0E /* testrendertarget */,
+				AAE7DEDA14CBB1E100DF1A0E /* testscale */,
+				FDD2C5170E2E807600B7A85F /* testsem */,
+				FDD2C53D0E2E80E400B7A85F /* testsprite2 */,
+				FDD2C0F90E2E4F4B00B7A85F /* testthread */,
+				FDD2C5740E2E8C7400B7A85F /* testtimer */,
+				FDD2C5B30E2E8CFC00B7A85F /* testver */,
+				1D6058900D05DD3D006BFB54 /* testwm2 */,
+				AA13B3111FB8AEBC00D9FEE6 /* testyuv */,
+				FDD2C6E20E2E959E00B7A85F /* torturethread */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+		AA1EE452176059230029C7A5 /* libSDL2test.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2test.a;
+			remoteRef = AA1EE451176059230029C7A5 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492DD2555E1F100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A492DC2555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492DF2555E1F100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A492DE2555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492E12555E1F100E92A8B /* SDL2.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = SDL2.framework;
+			remoteRef = F3A492E02555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492E32555E1F100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A492E22555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492E52555E1F100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A492E42555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492E72555E1F100E92A8B /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = F3A492E62555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492E92555E1F100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A492E82555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492EB2555E1F100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A492EA2555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492ED2555E1F100E92A8B /* libSDL2.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = libSDL2.dylib;
+			remoteRef = F3A492EC2555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492EF2555E1F100E92A8B /* SDL2 */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.executable";
+			path = SDL2;
+			remoteRef = F3A492EE2555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492F12555E1F100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A492F02555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492F32555E1F100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A492F22555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		F3A492F52555E1F100E92A8B /* hidapi.framework */ = {
+			isa = PBXReferenceProxy;
+			fileType = wrapper.framework;
+			path = hidapi.framework;
+			remoteRef = F3A492F42555E1F100E92A8B /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		FA3D992F1BC4E619002C96C8 /* libSDL2test-TV.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libSDL2test-TV.a";
+			remoteRef = FA3D992E1BC4E619002C96C8 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+		046CEF7613254F23007AD51D /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				046CEF7713254F23007AD51D /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		047A63DE13285C3200CD7973 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AA13B32F1FB8AF0C00D9FEE6 /* testyuv.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		1D60588D0D05DD3D006BFB54 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		56ED04FD118A8FE400A56AA6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				56ED04FE118A8FE400A56AA6 /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AA13B3121FB8AEBC00D9FEE6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AA13B3301FB8AF2300D9FEE6 /* testyuv.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DEDB14CBB1E100DF1A0E /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AAE7DEDC14CBB1E100DF1A0E /* icon.bmp in Resources */,
+				AAE7DF4714CBB45000DF1A0E /* sample.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DF9F14CBB54E00DF1A0E /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AAE7DFA014CBB54E00DF1A0E /* icon.bmp in Resources */,
+				AAE7DFA114CBB54E00DF1A0E /* sample.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA3D99321BC4E644002C96C8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA3D99521BC4E70C002C96C8 /* controllermap.bmp in Resources */,
+				FA3D99541BC4E70F002C96C8 /* button.bmp in Resources */,
+				FA3D99531BC4E70E002C96C8 /* axis.bmp in Resources */,
+				FA3D99551BC4E712002C96C8 /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA347E1D8B575200915323 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34971D8B582100915323 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34981D8B582100915323 /* sample.wav in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FAE0E9811BAF9B230098DFA4 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FAE0E9961BAF9B650098DFA4 /* controllermap.bmp in Resources */,
+				FAE0E9821BAF9B230098DFA4 /* icon.bmp in Resources */,
+				FAE0E9981BAF9B6E0098DFA4 /* axis.bmp in Resources */,
+				FAE0E9971BAF9B6A0098DFA4 /* button.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDA8AAAB0E2D330F00EA573E /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDA8AAE30E2D33C600EA573E /* sample.wav in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC3BC0E2D47E6001DB1D8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC58B0E2D5429001DB1D8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC5B90E2D55B5001DB1D8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC6160E2D5914001DB1D8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDAAC6390E2D59BE001DB1D8 /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC42FF00F0D866D009C87E1 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C0FA0E2E4F4B00B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1710E2E52C000B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C18B0E2E52FE00B7A85F /* utf8.txt in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1940E2E534F00B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C44E0E2E773800B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C46C0E2E77D700B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C4FA0E2E7F4800B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5180E2E807600B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C53E0E2E80E400B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C5520E2E812C00B7A85F /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5750E2E8C7400B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C5760E2E8C7400B7A85F /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5B40E2E8CFC00B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C5B50E2E8CFC00B7A85F /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C6E30E2E959E00B7A85F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		046CEF7813254F23007AD51D /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				046CEF8A13254F63007AD51D /* testgesture.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		047A63DF13285C3200CD7973 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				047A63F113285CD100CD7973 /* checkkeys.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		1D60588E0D05DD3D006BFB54 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDA8A79C0E2D0F9300EA573E /* testwm2.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		56ED04FF118A8FE400A56AA6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				56ED0511118A904200A56AA6 /* testpower.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AA13B3141FB8AEBC00D9FEE6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AA13B3611FB8B52500D9FEE6 /* testyuv_cvt.c in Sources */,
+				AA13B35D1FB8B4E200D9FEE6 /* testyuv.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DEDD14CBB1E100DF1A0E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AAE7DF4614CBB43900DF1A0E /* testscale.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		AAE7DFA214CBB54E00DF1A0E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AAE7DFB514CBB5F700DF1A0E /* testrendertarget.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA3D99301BC4E644002C96C8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3F758DE22AC5ABB001D97F2 /* testgamecontroller.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34801D8B575200915323 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34951D8B578600915323 /* testaudiocapture.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34991D8B582100915323 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA349A1D8B582100915323 /* loopwave.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FAE0E9831BAF9B230098DFA4 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FAE0E9951BAF9B510098DFA4 /* testgamecontroller.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDA8AAAC0E2D330F00EA573E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDA8AABE0E2D335C00EA573E /* loopwave.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC3BE0E2D47E6001DB1D8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDAAC3D30E2D4800001DB1D8 /* testaudioinfo.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC58C0E2D5429001DB1D8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDAAC59F0E2D54B8001DB1D8 /* testerror.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC5BA0E2D55B5001DB1D8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDAAC5CC0E2D55CA001DB1D8 /* testfile.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDAAC6170E2D5914001DB1D8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDAAC62A0E2D5960001DB1D8 /* testgles.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDC42FF10F0D866D009C87E1 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDC4300A0F0D86BF009C87E1 /* testdraw2.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C0FB0E2E4F4B00B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C10D0E2E4F6900B7A85F /* testthread.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1720E2E52C000B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C1840E2E52D900B7A85F /* testiconv.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C1960E2E534F00B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA0EF22E1BAF4654000E07A6 /* testjoystick.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C44F0E2E773800B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C4610E2E777500B7A85F /* testkeys.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C46D0E2E77D700B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C47F0E2E77E300B7A85F /* testlock.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C4FC0E2E7F4800B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C50E0E2E7F5800B7A85F /* testplatform.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C51A0E2E807600B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C52C0E2E808700B7A85F /* testsem.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C53F0E2E80E400B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C5510E2E80F400B7A85F /* testsprite2.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5770E2E8C7400B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C58A0E2E8CB500B7A85F /* testtimer.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C5B60E2E8CFC00B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C5C80E2E8D1200B7A85F /* testver.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FDD2C6E50E2E959E00B7A85F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FDD2C6F70E2E95B100B7A85F /* torturethread.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		046CEF8413254F23007AD51D /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testgesture;
+			};
+			name = Debug;
+		};
+		046CEF8513254F23007AD51D /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testgesture;
+			};
+			name = Release;
+		};
+		047A63EB13285C3200CD7973 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = checkkeys;
+			};
+			name = Debug;
+		};
+		047A63EC13285C3200CD7973 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = checkkeys;
+			};
+			name = Release;
+		};
+		1D6058940D05DD3E006BFB54 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testwm2;
+			};
+			name = Debug;
+		};
+		1D6058950D05DD3E006BFB54 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testwm2;
+			};
+			name = Release;
+		};
+		56ED050B118A8FE400A56AA6 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testpower;
+			};
+			name = Debug;
+		};
+		56ED050C118A8FE400A56AA6 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testpower;
+			};
+			name = Release;
+		};
+		AA13B3241FB8AEBC00D9FEE6 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		AA13B3251FB8AEBC00D9FEE6 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		AAE7DEEA14CBB1E100DF1A0E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testscale;
+			};
+			name = Debug;
+		};
+		AAE7DEEB14CBB1E100DF1A0E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testscale;
+			};
+			name = Release;
+		};
+		AAE7DFAF14CBB54E00DF1A0E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testrendertarget;
+			};
+			name = Debug;
+		};
+		AAE7DFB014CBB54E00DF1A0E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testrendertarget;
+			};
+			name = Release;
+		};
+		C01FCF4F08A954540054247B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = ../../include;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		C01FCF5008A954540054247B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_BITCODE = NO;
+				HEADER_SEARCH_PATHS = ../../include;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				OTHER_LDFLAGS = "-ObjC";
+				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+		FA3D99461BC4E645002C96C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				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;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = YES;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA3D99471BC4E645002C96C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				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;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = NO;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		FABA348F1D8B575200915323 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		FABA34901D8B575200915323 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		FABA34A81D8B582100915323 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FABA34A91D8B582100915323 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Release;
+		};
+		FAE0E9911BAF9B230098DFA4 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		FAE0E9921BAF9B230098DFA4 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		FDA8AAB90E2D330F00EA573E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = loopwav;
+			};
+			name = Debug;
+		};
+		FDA8AABA0E2D330F00EA573E /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = loopwav;
+			};
+			name = Release;
+		};
+		FDAAC3CB0E2D47E6001DB1D8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testaudioinfo;
+			};
+			name = Debug;
+		};
+		FDAAC3CC0E2D47E6001DB1D8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testaudioinfo;
+			};
+			name = Release;
+		};
+		FDAAC5990E2D5429001DB1D8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testerror;
+			};
+			name = Debug;
+		};
+		FDAAC59A0E2D5429001DB1D8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testerror;
+			};
+			name = Release;
+		};
+		FDAAC5C70E2D55B5001DB1D8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testfile;
+			};
+			name = Debug;
+		};
+		FDAAC5C80E2D55B5001DB1D8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testfile;
+			};
+			name = Release;
+		};
+		FDAAC6240E2D5914001DB1D8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testgles;
+			};
+			name = Debug;
+		};
+		FDAAC6250E2D5914001DB1D8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testgles;
+			};
+			name = Release;
+		};
+		FDC42FFE0F0D866D009C87E1 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = torturethread;
+			};
+			name = Debug;
+		};
+		FDC42FFF0F0D866D009C87E1 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = torturethread;
+			};
+			name = Release;
+		};
+		FDD2C1080E2E4F4B00B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testthread;
+			};
+			name = Debug;
+		};
+		FDD2C1090E2E4F4B00B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testthread;
+			};
+			name = Release;
+		};
+		FDD2C17F0E2E52C000B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testiconv;
+			};
+			name = Debug;
+		};
+		FDD2C1800E2E52C000B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testiconv;
+			};
+			name = Release;
+		};
+		FDD2C1A30E2E534F00B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testjoystick;
+			};
+			name = Debug;
+		};
+		FDD2C1A40E2E534F00B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testjoystick;
+			};
+			name = Release;
+		};
+		FDD2C45C0E2E773800B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testkeys;
+			};
+			name = Debug;
+		};
+		FDD2C45D0E2E773800B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testkeys;
+			};
+			name = Release;
+		};
+		FDD2C47A0E2E77D700B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testlock;
+			};
+			name = Debug;
+		};
+		FDD2C47B0E2E77D700B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testlock;
+			};
+			name = Release;
+		};
+		FDD2C5090E2E7F4800B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testplatform;
+			};
+			name = Debug;
+		};
+		FDD2C50A0E2E7F4800B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testplatform;
+			};
+			name = Release;
+		};
+		FDD2C5270E2E807600B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testsem;
+			};
+			name = Debug;
+		};
+		FDD2C5280E2E807600B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testsem;
+			};
+			name = Release;
+		};
+		FDD2C54C0E2E80E400B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testsprite2;
+			};
+			name = Debug;
+		};
+		FDD2C54D0E2E80E400B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testsprite2;
+			};
+			name = Release;
+		};
+		FDD2C5850E2E8C7400B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testtimer;
+			};
+			name = Debug;
+		};
+		FDD2C5860E2E8C7400B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testtimer;
+			};
+			name = Release;
+		};
+		FDD2C5C30E2E8CFC00B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testver;
+			};
+			name = Debug;
+		};
+		FDD2C5C40E2E8CFC00B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = testver;
+			};
+			name = Release;
+		};
+		FDD2C6F20E2E959E00B7A85F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = torturethread;
+			};
+			name = Debug;
+		};
+		FDD2C6F30E2E959E00B7A85F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = torturethread;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		046CEF8313254F23007AD51D /* Build configuration list for PBXNativeTarget "testgesture" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				046CEF8413254F23007AD51D /* Debug */,
+				046CEF8513254F23007AD51D /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		047A63EA13285C3200CD7973 /* Build configuration list for PBXNativeTarget "checkkeys" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				047A63EB13285C3200CD7973 /* Debug */,
+				047A63EC13285C3200CD7973 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "testwm2" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1D6058940D05DD3E006BFB54 /* Debug */,
+				1D6058950D05DD3E006BFB54 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		56ED050A118A8FE400A56AA6 /* Build configuration list for PBXNativeTarget "testpower" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				56ED050B118A8FE400A56AA6 /* Debug */,
+				56ED050C118A8FE400A56AA6 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		AA13B3231FB8AEBC00D9FEE6 /* Build configuration list for PBXNativeTarget "testyuv" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AA13B3241FB8AEBC00D9FEE6 /* Debug */,
+				AA13B3251FB8AEBC00D9FEE6 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		AAE7DEE914CBB1E100DF1A0E /* Build configuration list for PBXNativeTarget "testscale" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AAE7DEEA14CBB1E100DF1A0E /* Debug */,
+				AAE7DEEB14CBB1E100DF1A0E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		AAE7DFAE14CBB54E00DF1A0E /* Build configuration list for PBXNativeTarget "testrendertarget" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AAE7DFAF14CBB54E00DF1A0E /* Debug */,
+				AAE7DFB014CBB54E00DF1A0E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestiPhoneOS" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C01FCF4F08A954540054247B /* Debug */,
+				C01FCF5008A954540054247B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FA3D99451BC4E645002C96C8 /* Build configuration list for PBXNativeTarget "testgamecontroller-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA3D99461BC4E645002C96C8 /* Debug */,
+				FA3D99471BC4E645002C96C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FABA348E1D8B575200915323 /* Build configuration list for PBXNativeTarget "testaudiocapture" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FABA348F1D8B575200915323 /* Debug */,
+				FABA34901D8B575200915323 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FABA34A71D8B582100915323 /* Build configuration list for PBXNativeTarget "loopwav-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FABA34A81D8B582100915323 /* Debug */,
+				FABA34A91D8B582100915323 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FAE0E9901BAF9B230098DFA4 /* Build configuration list for PBXNativeTarget "testgamecontroller" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FAE0E9911BAF9B230098DFA4 /* Debug */,
+				FAE0E9921BAF9B230098DFA4 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDA8AAB80E2D330F00EA573E /* Build configuration list for PBXNativeTarget "loopwav" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDA8AAB90E2D330F00EA573E /* Debug */,
+				FDA8AABA0E2D330F00EA573E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDAAC3CA0E2D47E6001DB1D8 /* Build configuration list for PBXNativeTarget "testaudioinfo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDAAC3CB0E2D47E6001DB1D8 /* Debug */,
+				FDAAC3CC0E2D47E6001DB1D8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDAAC5980E2D5429001DB1D8 /* Build configuration list for PBXNativeTarget "testerror" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDAAC5990E2D5429001DB1D8 /* Debug */,
+				FDAAC59A0E2D5429001DB1D8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDAAC5C60E2D55B5001DB1D8 /* Build configuration list for PBXNativeTarget "testfile" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDAAC5C70E2D55B5001DB1D8 /* Debug */,
+				FDAAC5C80E2D55B5001DB1D8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDAAC6230E2D5914001DB1D8 /* Build configuration list for PBXNativeTarget "testgles" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDAAC6240E2D5914001DB1D8 /* Debug */,
+				FDAAC6250E2D5914001DB1D8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDC42FFD0F0D866D009C87E1 /* Build configuration list for PBXNativeTarget "testdraw2" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDC42FFE0F0D866D009C87E1 /* Debug */,
+				FDC42FFF0F0D866D009C87E1 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C1070E2E4F4B00B7A85F /* Build configuration list for PBXNativeTarget "testthread" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C1080E2E4F4B00B7A85F /* Debug */,
+				FDD2C1090E2E4F4B00B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C17E0E2E52C000B7A85F /* Build configuration list for PBXNativeTarget "testiconv" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C17F0E2E52C000B7A85F /* Debug */,
+				FDD2C1800E2E52C000B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C1A20E2E534F00B7A85F /* Build configuration list for PBXNativeTarget "testjoystick" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C1A30E2E534F00B7A85F /* Debug */,
+				FDD2C1A40E2E534F00B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C45B0E2E773800B7A85F /* Build configuration list for PBXNativeTarget "testkeys" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C45C0E2E773800B7A85F /* Debug */,
+				FDD2C45D0E2E773800B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C4790E2E77D700B7A85F /* Build configuration list for PBXNativeTarget "testlock" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C47A0E2E77D700B7A85F /* Debug */,
+				FDD2C47B0E2E77D700B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C5080E2E7F4800B7A85F /* Build configuration list for PBXNativeTarget "testplatform" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C5090E2E7F4800B7A85F /* Debug */,
+				FDD2C50A0E2E7F4800B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C5260E2E807600B7A85F /* Build configuration list for PBXNativeTarget "testsem" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C5270E2E807600B7A85F /* Debug */,
+				FDD2C5280E2E807600B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C54B0E2E80E400B7A85F /* Build configuration list for PBXNativeTarget "testsprite2" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C54C0E2E80E400B7A85F /* Debug */,
+				FDD2C54D0E2E80E400B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C5840E2E8C7400B7A85F /* Build configuration list for PBXNativeTarget "testtimer" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C5850E2E8C7400B7A85F /* Debug */,
+				FDD2C5860E2E8C7400B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C5C20E2E8CFC00B7A85F /* Build configuration list for PBXNativeTarget "testver" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C5C30E2E8CFC00B7A85F /* Debug */,
+				FDD2C5C40E2E8CFC00B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FDD2C6F10E2E959E00B7A85F /* Build configuration list for PBXNativeTarget "torturethread" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FDD2C6F20E2E959E00B7A85F /* Debug */,
+				FDD2C6F30E2E959E00B7A85F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
