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

/* Begin PBXBuildFile section */
		1C60FF1614E6E3F7006CD77D /* localizedStrings.js in Resources */ = {isa = PBXBuildFile; fileRef = 1C60FF1314E6E35D006CD77D /* localizedStrings.js */; };
		1C78EE1717611340002F6AA5 /* WebInspectorUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C78EE1617611340002F6AA5 /* WebInspectorUI.c */; };
		DDE9931A278D0D8000F60D26 /* libWebKitAdditions.a in Product Dependencies */ = {isa = PBXBuildFile; fileRef = DDE992FB278D078100F60D26 /* libWebKitAdditions.a */; };
		DDE9931D278D0DA400F60D26 /* JavaScriptCore.framework in Product Dependencies */ = {isa = PBXBuildFile; fileRef = DDE9931C278D0D9900F60D26 /* JavaScriptCore.framework */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		DDE992FA278D076300F60D26 /* Product Dependencies */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 16;
			files = (
				DDE9931A278D0D8000F60D26 /* libWebKitAdditions.a in Product Dependencies */,
				DDE9931D278D0DA400F60D26 /* JavaScriptCore.framework in Product Dependencies */,
			);
			name = "Product Dependencies";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
		1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
		1C60FE3214E5F3CD006CD77D /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
		1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebInspectorUIFramework.xcconfig; sourceTree = "<group>"; };
		1C60FF1014E6D992006CD77D /* UserInterface */ = {isa = PBXFileReference; lastKnownFileType = folder; path = UserInterface; sourceTree = "<group>"; };
		1C60FF1414E6E35D006CD77D /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = en; path = Localizations/en.lproj/localizedStrings.js; sourceTree = "<group>"; };
		1C60FF1914E73C64006CD77D /* combine-resources.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "combine-resources.pl"; sourceTree = "<group>"; };
		1C60FF1A14E73DCA006CD77D /* remove-console-asserts.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "remove-console-asserts.pl"; sourceTree = "<group>"; };
		1C60FFE114E79B0F006CD77D /* copy-user-interface-resources.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = "copy-user-interface-resources.pl"; sourceTree = "<group>"; };
		1C78EE131760E115002F6AA5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		1C78EE1617611340002F6AA5 /* WebInspectorUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = WebInspectorUI.c; sourceTree = "<group>"; };
		A1B89B8F221E021000EB4CEA /* SDKVariant.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = SDKVariant.xcconfig; sourceTree = "<group>"; };
		A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WebInspectorUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		DDE992FB278D078100F60D26 /* libWebKitAdditions.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libWebKitAdditions.a; sourceTree = BUILT_PRODUCTS_DIR; };
		DDE9931C278D0D9900F60D26 /* JavaScriptCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXGroup section */
		1C60FE2E14E5F3CD006CD77D /* Configurations */ = {
			isa = PBXGroup;
			children = (
				1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */,
				1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */,
				A1B89B8F221E021000EB4CEA /* SDKVariant.xcconfig */,
				1C60FE3214E5F3CD006CD77D /* Version.xcconfig */,
				1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */,
			);
			path = Configurations;
			sourceTree = "<group>";
		};
		1C60FF1514E6E39B006CD77D /* Resources */ = {
			isa = PBXGroup;
			children = (
				1C78EE131760E115002F6AA5 /* Info.plist */,
				1C60FF1314E6E35D006CD77D /* localizedStrings.js */,
			);
			name = Resources;
			sourceTree = "<group>";
		};
		1C60FFE014E79B0F006CD77D /* Scripts */ = {
			isa = PBXGroup;
			children = (
				1C60FF1914E73C64006CD77D /* combine-resources.pl */,
				1C60FFE114E79B0F006CD77D /* copy-user-interface-resources.pl */,
				1C60FF1A14E73DCA006CD77D /* remove-console-asserts.pl */,
			);
			path = Scripts;
			sourceTree = "<group>";
		};
		A54C224B148B23DE00373FA3 = {
			isa = PBXGroup;
			children = (
				DDE9931C278D0D9900F60D26 /* JavaScriptCore.framework */,
				1C60FE2E14E5F3CD006CD77D /* Configurations */,
				DDE99320278D100000F60D26 /* Frameworks */,
				A54C2258148B23DF00373FA3 /* Products */,
				1C60FF1514E6E39B006CD77D /* Resources */,
				1C60FFE014E79B0F006CD77D /* Scripts */,
				1C60FF1014E6D992006CD77D /* UserInterface */,
				1C78EE1617611340002F6AA5 /* WebInspectorUI.c */,
			);
			sourceTree = "<group>";
		};
		A54C2258148B23DF00373FA3 /* Products */ = {
			isa = PBXGroup;
			children = (
				A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		DDE99320278D100000F60D26 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				DDE992FB278D078100F60D26 /* libWebKitAdditions.a */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		A54C2256148B23DF00373FA3 /* WebInspectorUI */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = A54C226C148B23DF00373FA3 /* Build configuration list for PBXNativeTarget "WebInspectorUI" */;
			buildPhases = (
				DDE992FA278D076300F60D26 /* Product Dependencies */,
				A54C2255148B23DF00373FA3 /* Resources */,
				1C60FF1214E6D9AF006CD77D /* Copy User Interface Resources */,
				1C78EE1417611302002F6AA5 /* Sources */,
				6577FFC9276ACA680011AEC8 /* Create Symlink to Alt Root Path */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = WebInspectorUI;
			productName = WebInspector;
			productReference = A54C2257148B23DF00373FA3 /* WebInspectorUI.framework */;
			productType = "com.apple.product-type.framework";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		A54C224D148B23DE00373FA3 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				DefaultBuildSystemTypeForWorkspace = Original;
				LastSwiftUpdateCheck = 0700;
				LastUpgradeCheck = 1140;
				ORGANIZATIONNAME = Apple;
			};
			buildConfigurationList = A54C2250148B23DE00373FA3 /* Build configuration list for PBXProject "WebInspectorUI" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = A54C224B148B23DE00373FA3;
			productRefGroup = A54C2258148B23DF00373FA3 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				A54C2256148B23DF00373FA3 /* WebInspectorUI */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		A54C2255148B23DF00373FA3 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1C60FF1614E6E3F7006CD77D /* localizedStrings.js in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		1C60FF1214E6D9AF006CD77D /* Copy User Interface Resources */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			name = "Copy User Interface Resources";
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "/usr/bin/perl \"${SRCROOT}/Scripts/copy-user-interface-resources.pl\"\n";
		};
		6577FFC9276ACA680011AEC8 /* Create Symlink to Alt Root Path */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 8;
			files = (
			);
			inputFileListPaths = (
			);
			inputPaths = (
			);
			name = "Create Symlink to Alt Root Path";
			outputFileListPaths = (
			);
			outputPaths = (
				"${OUTPUT_ALTERNATE_ROOT_PATH}",
			);
			runOnlyForDeploymentPostprocessing = 1;
			shellPath = /bin/zsh;
			shellScript = "\"${SRCROOT}/Scripts/create-symlink-to-altroot.sh\"\n";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		1C78EE1417611302002F6AA5 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1C78EE1717611340002F6AA5 /* WebInspectorUI.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		1C60FF1314E6E35D006CD77D /* localizedStrings.js */ = {
			isa = PBXVariantGroup;
			children = (
				1C60FF1414E6E35D006CD77D /* en */,
			);
			name = localizedStrings.js;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		1C60FE3514E5F47E006CD77D /* Production */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE2F14E5F3CD006CD77D /* Base.xcconfig */;
			buildSettings = {
			};
			name = Production;
		};
		1C60FE3614E5F47E006CD77D /* Production */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */;
			buildSettings = {
			};
			name = Production;
		};
		A54C226A148B23DF00373FA3 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */;
			buildSettings = {
			};
			name = Debug;
		};
		A54C226B148B23DF00373FA3 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE3114E5F3CD006CD77D /* DebugRelease.xcconfig */;
			buildSettings = {
			};
			name = Release;
		};
		A54C226D148B23DF00373FA3 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */;
			buildSettings = {
			};
			name = Debug;
		};
		A54C226E148B23DF00373FA3 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 1C60FE3314E5F3CD006CD77D /* WebInspectorUIFramework.xcconfig */;
			buildSettings = {
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		A54C2250148B23DE00373FA3 /* Build configuration list for PBXProject "WebInspectorUI" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				A54C226A148B23DF00373FA3 /* Debug */,
				A54C226B148B23DF00373FA3 /* Release */,
				1C60FE3514E5F47E006CD77D /* Production */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Production;
		};
		A54C226C148B23DF00373FA3 /* Build configuration list for PBXNativeTarget "WebInspectorUI" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				A54C226D148B23DF00373FA3 /* Debug */,
				A54C226E148B23DF00373FA3 /* Release */,
				1C60FE3614E5F47E006CD77D /* Production */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Production;
		};
/* End XCConfigurationList section */
	};
	rootObject = A54C224D148B23DE00373FA3 /* Project object */;
}
