// !$*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 */,
				6517571727C9AD6B00D9FE40 /* Copy Frameworks to Secondary 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 = {
				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 = "if [[ \"${ACTION}\" == \"installapi\" || \"${ACTION}\" == \"installhdrs\" ]]; then\n    exit\nfi\n\n/usr/bin/perl \"${SRCROOT}/Scripts/copy-user-interface-resources.pl\"\n";
		};
		6517571727C9AD6B00D9FE40 /* Copy Frameworks to Secondary Path */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 8;
			files = (
			);
			inputFileListPaths = (
			);
			inputPaths = (
			);
			name = "Copy Frameworks to Secondary Path";
			outputFileListPaths = (
			);
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 1;
			shellPath = /bin/sh;
			shellScript = "export FRAMEWORKS_TO_COPY_TO_SECONDARY_PATH=\"WebInspectorUI\"\n\"${SRCROOT}/Scripts/copy-frameworks-to-secondary-path.sh\"\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 */;
}
