<!--
 * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <!--
    These resources should match the order and groups used in Main.html.
    -->
    <script src="External/CodeMirror/codemirror.js"></script>
    <script src="External/CodeMirror/css.js"></script>
    <script src="External/CodeMirror/htmlmixed.js"></script>
    <script src="External/CodeMirror/javascript.js"></script>
    <script src="External/Esprima/esprima.js"></script>

    <script src="Base/WebInspector.js"></script>
    <script src="Base/Platform.js"></script>
    <script src="Base/Debouncer.js"></script>
    <script src="Base/DebuggableType.js"></script>
    <script src="Base/LinkedList.js"></script>
    <script src="Base/ListMultimap.js"></script>
    <script src="Base/Multimap.js"></script>
    <script src="Base/Object.js"></script>
    <script src="Base/Throttler.js"></script>

    <script src="Test/TestHarness.js"></script>
    <script src="Test/FrontendTestHarness.js"></script>
    <script src="Test/TestSuite.js"></script>

    <script src="Test/Test.js"></script>
    <script src="Controllers/AppControllerBase.js"></script>
    <script src="Test/TestAppController.js"></script>
    <script src="Test/TestUtilities.js"></script>

    <script src="Base/DOMUtilities.js"></script>
    <script src="Base/EventListener.js"></script>
    <script src="Base/EventListenerSet.js"></script>
    <script src="Base/FileUtilities.js"></script>
    <script src="Base/ImageUtilities.js"></script>
    <script src="Base/MIMETypeUtilities.js"></script>
    <script src="Base/ObjectStore.js"></script>
    <script src="Base/URLUtilities.js"></script>
    <script src="Base/Utilities.js"></script>
    <script src="Base/Setting.js"></script>
    <script src="Base/YieldableTask.js"></script>

    <script src="Protocol/ProtocolTracer.js"></script>
    <script src="Protocol/LoggingProtocolTracer.js"></script>
    <script src="Protocol/InspectorBackend.js"></script>

    <script src="Protocol/Connection.js"></script>
    <script src="Protocol/InspectorFrontendAPI.js"></script>
    <script src="Protocol/LoadInspectorBackendCommands.js"></script>
    <script src="Protocol/MessageDispatcher.js"></script>
    <script src="Protocol/Target.js"></script>

    <script src="Protocol/DirectBackendTarget.js"></script>
    <script src="Protocol/MultiplexingBackendTarget.js"></script>
    <script src="Protocol/JavaScriptContextTarget.js"></script>
    <script src="Protocol/PageTarget.js"></script>
    <script src="Protocol/WorkerTarget.js"></script>

    <script src="Protocol/InspectorObserver.js"></script>
    <script src="Protocol/CPUProfilerObserver.js"></script>
    <script src="Protocol/CSSObserver.js"></script>
    <script src="Protocol/CanvasObserver.js"></script>
    <script src="Protocol/ConsoleObserver.js"></script>
    <script src="Protocol/DOMObserver.js"></script>
    <script src="Protocol/DOMStorageObserver.js"></script>
    <script src="Protocol/DebuggerObserver.js"></script>
    <script src="Protocol/HeapObserver.js"></script>
    <script src="Protocol/LayerTreeObserver.js"></script>
    <script src="Protocol/MemoryObserver.js"></script>
    <script src="Protocol/NetworkObserver.js"></script>
    <script src="Protocol/PageObserver.js"></script>
    <script src="Protocol/RemoteObject.js"></script>
    <script src="Protocol/RuntimeObserver.js"></script>
    <script src="Protocol/ScriptProfilerObserver.js"></script>
    <script src="Protocol/TargetObserver.js"></script>
    <script src="Protocol/TimelineObserver.js"></script>
    <script src="Protocol/WorkerObserver.js"></script>

    <script src="Models/BreakpointAction.js"></script>
    <script src="Models/ConsoleMessage.js"></script>
    <script src="Models/Instrument.js"></script>
    <script src="Models/SourceCode.js"></script>
    <script src="Models/SourceCodeLocation.js"></script>
    <script src="Models/SourceCodePosition.js"></script>
    <script src="Models/Timeline.js"></script>
    <script src="Models/TimelineRange.js"></script>
    <script src="Models/TimelineRecord.js"></script>

    <script src="Models/Resource.js"></script>
    <script src="Models/Script.js"></script>
    <script src="Models/LocalScript.js"></script>

    <script src="Models/Breakpoint.js"></script>
    <script src="Models/CPUInstrument.js"></script>
    <script src="Models/CPUTimelineRecord.js"></script>
    <script src="Models/CSSCompletions.js"></script>
    <script src="Models/CSSKeywordCompletions.js"></script>
    <script src="Models/CSSMedia.js"></script>
    <script src="Models/CSSProperty.js"></script>
    <script src="Models/CSSRule.js"></script>
    <script src="Models/CSSSelector.js"></script>
    <script src="Models/CSSStyleDeclaration.js"></script>
    <script src="Models/CSSStyleSheet.js"></script>
    <script src="Models/CallFrame.js"></script>
    <script src="Models/CallingContextTree.js"></script>
    <script src="Models/CallingContextTreeNode.js"></script>
    <script src="Models/Canvas.js"></script>
    <script src="Models/Collection.js"></script>
    <script src="Models/CollectionEntry.js"></script>
    <script src="Models/CollectionEntryPreview.js"></script>
    <script src="Models/CollectionTypes.js"></script>
    <script src="Models/Color.js"></script>
    <script src="Models/ConsoleCommandResultMessage.js"></script>
    <script src="Models/Cookie.js"></script>
    <script src="Models/CookieStorageObject.js"></script>
    <script src="Models/DOMBreakpoint.js"></script>
    <script src="Models/DOMNode.js"></script>
    <script src="Models/DOMNodeStyles.js"></script>
    <script src="Models/DOMStorageObject.js"></script>
    <script src="Models/DOMTree.js"></script>
    <script src="Models/DebuggerData.js"></script>
    <script src="Models/EventBreakpoint.js"></script>
    <script src="Models/ExecutionContext.js"></script>
    <script src="Models/ExecutionContextList.js"></script>
    <script src="Models/FPSInstrument.js"></script>
    <script src="Models/Frame.js"></script>
    <script src="Models/GarbageCollection.js"></script>
    <script src="Models/Geometry.js"></script>
    <script src="Models/Gradient.js"></script>
    <script src="Models/HeapAllocationsInstrument.js"></script>
    <script src="Models/HeapAllocationsTimelineRecord.js"></script>
    <script src="Models/IndexedDatabase.js"></script>
    <script src="Models/IndexedDatabaseObjectStore.js"></script>
    <script src="Models/IndexedDatabaseObjectStoreIndex.js"></script>
    <script src="Models/IssueMessage.js"></script>
    <script src="Models/Layer.js"></script>
    <script src="Models/LayoutInstrument.js"></script>
    <script src="Models/LayoutTimelineRecord.js"></script>
    <script src="Models/LazySourceCodeLocation.js"></script>
    <script src="Models/LoggingChannel.js"></script>
    <script src="Models/MediaInstrument.js"></script>
    <script src="Models/MediaTimelineRecord.js"></script>
    <script src="Models/MemoryCategory.js"></script>
    <script src="Models/MemoryInstrument.js"></script>
    <script src="Models/MemoryPressureEvent.js"></script>
    <script src="Models/MemoryTimeline.js"></script>
    <script src="Models/MemoryTimelineRecord.js"></script>
    <script src="Models/NetworkInstrument.js"></script>
    <script src="Models/NetworkTimeline.js"></script>
    <script src="Models/ObjectPreview.js"></script>
    <script src="Models/Probe.js"></script>
    <script src="Models/ProbeSet.js"></script>
    <script src="Models/ProbeSetDataFrame.js"></script>
    <script src="Models/ProbeSetDataTable.js"></script>
    <script src="Models/Profile.js"></script>
    <script src="Models/ProfileNode.js"></script>
    <script src="Models/ProfileNodeCall.js"></script>
    <script src="Models/PropertyDescriptor.js"></script>
    <script src="Models/PropertyPreview.js"></script>
    <script src="Models/Recording.js"></script>
    <script src="Models/RecordingAction.js"></script>
    <script src="Models/RecordingFrame.js"></script>
    <script src="Models/RecordingInitialStateAction.js"></script>
    <script src="Models/RecordingState.js"></script>
    <script src="Models/Redirect.js"></script>
    <script src="Models/RenderingFrameTimelineRecord.js"></script>
    <script src="Models/ResourceCollection.js"></script>
    <script src="Models/ResourceQueryMatch.js"></script>
    <script src="Models/ResourceQueryResult.js"></script>
    <script src="Models/ResourceTimelineRecord.js"></script>
    <script src="Models/ResourceTimingData.js"></script>
    <script src="Models/Revision.js"></script>
    <script src="Models/ScopeChainNode.js"></script>
    <script src="Models/ScriptInstrument.js"></script>
    <script src="Models/ScriptSyntaxTree.js"></script>
    <script src="Models/ScriptTimelineRecord.js"></script>
    <script src="Models/ServerTimingEntry.js"></script>
    <script src="Models/ShaderProgram.js"></script>
    <script src="Models/SourceCodeRevision.js"></script>
    <script src="Models/SourceCodeTimeline.js"></script>
    <script src="Models/SourceMap.js"></script>
    <script src="Models/StackTrace.js"></script>
    <script src="Models/TextRange.js"></script>
    <script src="Models/TimelineMarker.js"></script>
    <script src="Models/TimelineRecording.js"></script>
    <script src="Models/URLBreakpoint.js"></script>
    <script src="Models/WebSocketResource.js"></script>
    <script src="Models/WrappedPromise.js"></script>

    <script src="Models/LocalResource.js"></script>
    <script src="Models/SourceMapResource.js"></script>

    <script src="Models/AuditTestBase.js"></script>
    <script src="Models/AuditTestCase.js"></script>
    <script src="Models/AuditTestGroup.js"></script>
    <script src="Models/AuditTestResultBase.js"></script>
    <script src="Models/AuditTestCaseResult.js"></script>
    <script src="Models/AuditTestGroupResult.js"></script>

    <script src="Proxies/FormatterWorkerProxy.js"></script>
    <script src="Proxies/HeapSnapshotDiffProxy.js"></script>
    <script src="Proxies/HeapSnapshotEdgeProxy.js"></script>
    <script src="Proxies/HeapSnapshotNodeProxy.js"></script>
    <script src="Proxies/HeapSnapshotProxy.js"></script>
    <script src="Proxies/HeapSnapshotWorkerProxy.js"></script>

    <script src="Controllers/AuditManager.js"></script>
    <script src="Controllers/BreakpointLogMessageLexer.js"></script>
    <script src="Controllers/CSSManager.js"></script>
    <script src="Controllers/CanvasManager.js"></script>
    <script src="Controllers/ConsoleManager.js"></script>
    <script src="Controllers/DOMDebuggerManager.js"></script>
    <script src="Controllers/DOMManager.js"></script>
    <script src="Controllers/DOMStorageManager.js"></script>
    <script src="Controllers/DebuggerManager.js"></script>
    <script src="Controllers/HARBuilder.js"></script>
    <script src="Controllers/HeapManager.js"></script>
    <script src="Controllers/LayerTreeManager.js"></script>
    <script src="Controllers/MemoryManager.js"></script>
    <script src="Controllers/NetworkManager.js"></script>
    <script src="Controllers/RuntimeManager.js"></script>
    <script src="Controllers/TargetManager.js"></script>
    <script src="Controllers/TimelineManager.js"></script>
    <script src="Controllers/WorkerManager.js"></script>

    <script src="Controllers/Formatter.js"></script>
    <script src="Controllers/ResourceQueryController.js"></script>
    <script src="Controllers/SelectionController.js"></script>
    <script src="Workers/Formatter/FormatterContentBuilder.js"></script>
    <script src="Views/CodeMirrorAdditions.js"></script>
    <script src="Views/CodeMirrorFormatters.js"></script>
    <script src="Views/EditingSupport.js"></script>
    <script src="Views/View.js"></script>

    <script src="Views/Resizer.js"></script>
    <script src="Views/Table.js"></script>
    <script src="Views/TableColumn.js"></script>
    <script src="Views/TreeElement.js"></script>
    <script src="Views/TreeOutline.js"></script>

    <script type="text/javascript">
        WI.sharedApp = new WI.TestAppController;
        WI.sharedApp.initialize();

        // Debug logging is synchronous on the test page.
        InspectorTest.forceDebugLogging = false;

        // Tee all TestHarness commands to stderr from within the Inspector.
        InspectorTest.dumpActivityToSystemConsole = false;

        // Best used in combination with dumpActivityToSystemConsole.
        InspectorBackend.dumpInspectorProtocolMessages = false;
    </script>
</head>
<body>
</body>
</html>
