// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		30029EAC1CCA0F7300B76510 /* AdvertiseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EA61CCA0F7300B76510 /* AdvertiseViewController.swift */; };
		30029EAE1CCA0F7300B76510 /* BleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EA81CCA0F7300B76510 /* BleModel.swift */; };
		30029EAF1CCA0F7300B76510 /* BleUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EA91CCA0F7300B76510 /* BleUtil.swift */; };
		30029EB01CCA0F7300B76510 /* DeviceInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EAA1CCA0F7300B76510 /* DeviceInfoViewController.swift */; };
		30029EB11CCA0F7300B76510 /* DevicesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EAB1CCA0F7300B76510 /* DevicesViewController.swift */; };
		30029EBB1CCA0FD500B76510 /* BleDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30029EBA1CCA0FD500B76510 /* BleDemo.swift */; };
		30A291DD1CAC981E00F3612E /* RPCDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A291DC1CAC981E00F3612E /* RPCDemo.swift */; };
		30A291DF1CAC982900F3612E /* Demo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30A291DE1CAC982900F3612E /* Demo.swift */; };
		30A291F11CACB0F000F3612E /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A291F01CACB0F000F3612E /* AddressBook.framework */; };
		30A291F31CACB0F500F3612E /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A291F21CACB0F500F3612E /* SafariServices.framework */; };
		30A291F51CACB0FB00F3612E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A291F41CACB0FB00F3612E /* SystemConfiguration.framework */; };
		30A292041CACB4C300F3612E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A292031CACB4C300F3612E /* libz.tbd */; };
		30AD2DD61CDD4EBB00A28A0C /* VanadiumCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30AD2DD31CDD4EB300A28A0C /* VanadiumCore.framework */; };
		30AD2DD71CDD4EBB00A28A0C /* VanadiumCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 30AD2DD31CDD4EB300A28A0C /* VanadiumCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
		9306FB941BFC049400DE7190 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9306FB931BFC049400DE7190 /* AppDelegate.swift */; };
		9306FB961BFC049400DE7190 /* DemoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9306FB951BFC049400DE7190 /* DemoViewController.swift */; };
		9306FB991BFC049400DE7190 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9306FB971BFC049400DE7190 /* Main.storyboard */; };
		9306FB9B1BFC049400DE7190 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9306FB9A1BFC049400DE7190 /* Assets.xcassets */; };
		9306FB9E1BFC049400DE7190 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9306FB9C1BFC049400DE7190 /* LaunchScreen.storyboard */; };
		93BDAFE41CE17BB800D9CECA /* DiscoveryDemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93BDAFE31CE17BB800D9CECA /* DiscoveryDemo.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		30AD2DD21CDD4EB300A28A0C /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 93BC21551C9E199F0074C612;
			remoteInfo = VanadiumCore;
		};
		30AD2DD41CDD4EB300A28A0C /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30AD2DB51CDD4CF200A28A0C;
			remoteInfo = VanadiumCoreTests;
		};
		30AD2DD81CDD4EBB00A28A0C /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */;
			proxyType = 1;
			remoteGlobalIDString = 93BC21541C9E199F0074C612;
			remoteInfo = VanadiumCore;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
		30A2920A1CADD82D00F3612E /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
				30AD2DD71CDD4EBB00A28A0C /* VanadiumCore.framework in Embed Frameworks */,
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		30029EA61CCA0F7300B76510 /* AdvertiseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvertiseViewController.swift; sourceTree = "<group>"; };
		30029EA81CCA0F7300B76510 /* BleModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleModel.swift; sourceTree = "<group>"; };
		30029EA91CCA0F7300B76510 /* BleUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleUtil.swift; sourceTree = "<group>"; };
		30029EAA1CCA0F7300B76510 /* DeviceInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceInfoViewController.swift; sourceTree = "<group>"; };
		30029EAB1CCA0F7300B76510 /* DevicesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DevicesViewController.swift; sourceTree = "<group>"; };
		30029EBA1CCA0FD500B76510 /* BleDemo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BleDemo.swift; sourceTree = "<group>"; };
		30A291DC1CAC981E00F3612E /* RPCDemo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RPCDemo.swift; sourceTree = "<group>"; };
		30A291DE1CAC982900F3612E /* Demo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Demo.swift; sourceTree = "<group>"; };
		30A291F01CACB0F000F3612E /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
		30A291F21CACB0F500F3612E /* SafariServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SafariServices.framework; path = System/Library/Frameworks/SafariServices.framework; sourceTree = SDKROOT; };
		30A291F41CACB0FB00F3612E /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
		30A292031CACB4C300F3612E /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
		30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VanadiumCore.xcodeproj; path = ../VanadiumCore.xcodeproj; sourceTree = "<group>"; };
		9306FB901BFC049400DE7190 /* V23 Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "V23 Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
		9306FB931BFC049400DE7190 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		9306FB951BFC049400DE7190 /* DemoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoViewController.swift; sourceTree = "<group>"; };
		9306FB981BFC049400DE7190 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		9306FB9A1BFC049400DE7190 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		9306FB9D1BFC049400DE7190 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		9306FB9F1BFC049400DE7190 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		93BDAFE31CE17BB800D9CECA /* DiscoveryDemo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoveryDemo.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		9306FB8D1BFC049400DE7190 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				30AD2DD61CDD4EBB00A28A0C /* VanadiumCore.framework in Frameworks */,
				30A292041CACB4C300F3612E /* libz.tbd in Frameworks */,
				30A291F51CACB0FB00F3612E /* SystemConfiguration.framework in Frameworks */,
				30A291F31CACB0F500F3612E /* SafariServices.framework in Frameworks */,
				30A291F11CACB0F000F3612E /* AddressBook.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		30029EA51CCA0F7300B76510 /* BLE */ = {
			isa = PBXGroup;
			children = (
				30029EA61CCA0F7300B76510 /* AdvertiseViewController.swift */,
				30029EBA1CCA0FD500B76510 /* BleDemo.swift */,
				30029EA81CCA0F7300B76510 /* BleModel.swift */,
				30029EA91CCA0F7300B76510 /* BleUtil.swift */,
				30029EAA1CCA0F7300B76510 /* DeviceInfoViewController.swift */,
				30029EAB1CCA0F7300B76510 /* DevicesViewController.swift */,
			);
			path = BLE;
			sourceTree = "<group>";
		};
		30A291F91CACB14000F3612E /* Vanadium Core Demos */ = {
			isa = PBXGroup;
			children = (
				30A291DC1CAC981E00F3612E /* RPCDemo.swift */,
				93BDAFE31CE17BB800D9CECA /* DiscoveryDemo.swift */,
			);
			name = "Vanadium Core Demos";
			sourceTree = "<group>";
		};
		30A292121CAE290500F3612E /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */,
				30A291F01CACB0F000F3612E /* AddressBook.framework */,
				30A291F21CACB0F500F3612E /* SafariServices.framework */,
				30A291F41CACB0FB00F3612E /* SystemConfiguration.framework */,
				30A292031CACB4C300F3612E /* libz.tbd */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		30AD2DCE1CDD4EB300A28A0C /* Products */ = {
			isa = PBXGroup;
			children = (
				30AD2DD31CDD4EB300A28A0C /* VanadiumCore.framework */,
				30AD2DD51CDD4EB300A28A0C /* VanadiumCoreTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		9306FB871BFC049400DE7190 = {
			isa = PBXGroup;
			children = (
				9306FB921BFC049400DE7190 /* Demo */,
				30A292121CAE290500F3612E /* Frameworks */,
				9306FB911BFC049400DE7190 /* Products */,
			);
			sourceTree = "<group>";
		};
		9306FB911BFC049400DE7190 /* Products */ = {
			isa = PBXGroup;
			children = (
				9306FB901BFC049400DE7190 /* V23 Demo.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		9306FB921BFC049400DE7190 /* Demo */ = {
			isa = PBXGroup;
			children = (
				9306FB931BFC049400DE7190 /* AppDelegate.swift */,
				9306FB951BFC049400DE7190 /* DemoViewController.swift */,
				9306FB971BFC049400DE7190 /* Main.storyboard */,
				30A291DE1CAC982900F3612E /* Demo.swift */,
				30029EA51CCA0F7300B76510 /* BLE */,
				30A291F91CACB14000F3612E /* Vanadium Core Demos */,
				9306FB9A1BFC049400DE7190 /* Assets.xcassets */,
				9306FB9C1BFC049400DE7190 /* LaunchScreen.storyboard */,
				9306FB9F1BFC049400DE7190 /* Info.plist */,
			);
			path = Demo;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		9306FB8F1BFC049400DE7190 /* V23 Demo */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 9306FBAD1BFC049400DE7190 /* Build configuration list for PBXNativeTarget "V23 Demo" */;
			buildPhases = (
				9306FB8C1BFC049400DE7190 /* Sources */,
				9306FB8D1BFC049400DE7190 /* Frameworks */,
				9306FB8E1BFC049400DE7190 /* Resources */,
				30A2920A1CADD82D00F3612E /* Embed Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
				30AD2DD91CDD4EBB00A28A0C /* PBXTargetDependency */,
			);
			name = "V23 Demo";
			productName = Demo;
			productReference = 9306FB901BFC049400DE7190 /* V23 Demo.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		9306FB881BFC049400DE7190 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0730;
				LastUpgradeCheck = 0710;
				ORGANIZATIONNAME = "Google Inc.";
				TargetAttributes = {
					9306FB8F1BFC049400DE7190 = {
						CreatedOnToolsVersion = 7.1;
					};
				};
			};
			buildConfigurationList = 9306FB8B1BFC049400DE7190 /* Build configuration list for PBXProject "V23 Demo" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 9306FB871BFC049400DE7190;
			productRefGroup = 9306FB911BFC049400DE7190 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 30AD2DCE1CDD4EB300A28A0C /* Products */;
					ProjectRef = 30AD2DCD1CDD4EB300A28A0C /* VanadiumCore.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				9306FB8F1BFC049400DE7190 /* V23 Demo */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		30AD2DD31CDD4EB300A28A0C /* VanadiumCore.framework */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.framework;
			path = VanadiumCore.framework;
			remoteRef = 30AD2DD21CDD4EB300A28A0C /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		30AD2DD51CDD4EB300A28A0C /* VanadiumCoreTests.xctest */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.cfbundle;
			path = VanadiumCoreTests.xctest;
			remoteRef = 30AD2DD41CDD4EB300A28A0C /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		9306FB8E1BFC049400DE7190 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				9306FB9E1BFC049400DE7190 /* LaunchScreen.storyboard in Resources */,
				9306FB9B1BFC049400DE7190 /* Assets.xcassets in Resources */,
				9306FB991BFC049400DE7190 /* Main.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		9306FB8C1BFC049400DE7190 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				9306FB961BFC049400DE7190 /* DemoViewController.swift in Sources */,
				9306FB941BFC049400DE7190 /* AppDelegate.swift in Sources */,
				30029EAF1CCA0F7300B76510 /* BleUtil.swift in Sources */,
				30029EAC1CCA0F7300B76510 /* AdvertiseViewController.swift in Sources */,
				30029EAE1CCA0F7300B76510 /* BleModel.swift in Sources */,
				30A291DF1CAC982900F3612E /* Demo.swift in Sources */,
				93BDAFE41CE17BB800D9CECA /* DiscoveryDemo.swift in Sources */,
				30029EBB1CCA0FD500B76510 /* BleDemo.swift in Sources */,
				30029EB01CCA0F7300B76510 /* DeviceInfoViewController.swift in Sources */,
				30029EB11CCA0F7300B76510 /* DevicesViewController.swift in Sources */,
				30A291DD1CAC981E00F3612E /* RPCDemo.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		30AD2DD91CDD4EBB00A28A0C /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			name = VanadiumCore;
			targetProxy = 30AD2DD81CDD4EBB00A28A0C /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		9306FB971BFC049400DE7190 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				9306FB981BFC049400DE7190 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		9306FB9C1BFC049400DE7190 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				9306FB9D1BFC049400DE7190 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		9306FBAB1BFC049400DE7190 /* 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;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_BITCODE = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		9306FBAC1BFC049400DE7190 /* 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;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_BITCODE = NO;
				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;
				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		9306FBAE1BFC049400DE7190 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_MODULES = YES;
				EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
				FRAMEWORK_SEARCH_PATHS = "";
				INFOPLIST_FILE = Demo/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				OTHER_LDFLAGS = (
					"$(OTHER_LDFLAGS)",
					"-ObjC",
				);
				PRODUCT_BUNDLE_IDENTIFIER = v.io.V23Demo;
				PRODUCT_NAME = "V23 Demo";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TARGETED_DEVICE_FAMILY = 1;
			};
			name = Debug;
		};
		9306FBAF1BFC049400DE7190 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CLANG_ENABLE_MODULES = YES;
				EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
				FRAMEWORK_SEARCH_PATHS = "";
				INFOPLIST_FILE = Demo/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				OTHER_LDFLAGS = (
					"$(OTHER_LDFLAGS)",
					"-ObjC",
				);
				PRODUCT_BUNDLE_IDENTIFIER = v.io.V23Demo;
				PRODUCT_NAME = "V23 Demo";
				TARGETED_DEVICE_FAMILY = 1;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		9306FB8B1BFC049400DE7190 /* Build configuration list for PBXProject "V23 Demo" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				9306FBAB1BFC049400DE7190 /* Debug */,
				9306FBAC1BFC049400DE7190 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		9306FBAD1BFC049400DE7190 /* Build configuration list for PBXNativeTarget "V23 Demo" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				9306FBAE1BFC049400DE7190 /* Debug */,
				9306FBAF1BFC049400DE7190 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 9306FB881BFC049400DE7190 /* Project object */;
}
