MZ@ !L!This program cannot be run in DOS mode. $Rؕ3}3}3}H̴3}H̱3}Rich3}PEL!  (@@,&.rsrc0(@@(@Xpl   \ MUIʙ+h0[VKL9y]SRpB MUIen-US4VS_VERSION_INFO @% @%?StringFileInfo040904B0LCompanyNameMicrosoft Corporationp$FileDescriptionF12 Developer Tools Diagnostics TAPv+FileVersion11.00.9600.16384 (winblue_rtm.130821-1623)FInternalNameDiagnosticsTap.dll.LegalCopyright Microsoft Corporation. All rights reserved.VOriginalFilenameDiagnosticsTap.dll.muiDProductNameInternet ExplorerFProductVersion11.00.9600.16384DVarFileInfo$Translation // Scoping function (function () { // Disable the usage of ActiveX ActiveXObject = null; function EventHelper() { /// /// This object is used as a base class for objects that require event listener functions /// It stores a set of attached event listeners that are the callbacks for events, /// and provides a fire event helper function that is used internally to mimic real events. /// this.__eventListeners = {}; } EventHelper.prototype.addEventListener = function (eventName, listener) { if (!this.__eventListeners[eventName]) { this.__eventListeners[eventName] = []; } this.__eventListeners[eventName].push(listener); }; EventHelper.prototype.removeEventListener = function (eventName, listener) { if (this.__eventListeners[eventName]) { for (var i = 0; i < this.__eventListeners[eventName].length; i++) { if (this.__eventListeners[eventName][i] === listener) { this.__eventListeners[eventName].splice(i, 1); break; } } } }; EventHelper.prototype.isEventListenerAttached = function (eventName, listener) { if (this.__eventListeners[eventName]) { if (listener) { for (var i = 0; i < this.__eventListeners[eventName].length; i++) { if (this.__eventListeners[eventName][i] === callback) { return 1; } } } else { return this.__eventListeners[eventName].length; } } return 0; }; EventHelper.prototype.removeAllEventListeners = function () { this.__eventListeners = []; }; EventHelper.prototype.__fireEvent = function (eventName, params) { if (this.__eventListeners[eventName]) { for (var i = 0; i < this.__eventListeners[eventName].length; i++) { this.__eventListeners[eventName][i](params); } } }; toolUI = function () { // Track existing ports with private access var privatePorts = {}; var isAttached = true; var createPortInternal = function ScriptedHost$createPortInternal(portName) { /// /// /// Creates a port and its private data for storage to use later when /// connecting the incoming events from VS to the actual script objects /// they correspond to. /// /// /// The portName that will identify the port /// /// An object containing the internal data and the public port to return to callers. /// // Only create one port of a given name. if (privatePorts.hasOwnProperty(portName)) { throw new Error("A port with that name already exists."); } var _internalData = { isConnected: false, eventManager: new EventHelper() }; var _port = { name: portName, postMessage: function (data) { if (_internalData.isConnected) { external.sendMessage("OnMessage", this.name, data); } else { throw new Error("Cannot postMessage on an unconnected port."); } }, addEventListener: _internalData.eventManager.addEventListener.bind(_internalData.eventManager), removeEventListener: _internalData.eventManager.removeEventListener.bind(_internalData.eventManager) }; var privatePort = { internalData: _internalData, port: _port }; privatePorts[portName] = privatePort; return privatePort; }; var diagnosticsEventManager = new EventHelper(); var breakFlags = 0; var hwnd = 0; external.addEventListener("message", function (e) { switch (e.commandId) { case "OnHWND": hwnd = e.hwnd; break; case "OnConnect": var privatePort = createPortInternal(e.portName); privatePort.internalData.isConnected = true; diagnosticsEventManager.__fireEvent("connect", privatePort.port); break; case "OnMessage": if (privatePorts.hasOwnProperty(e.portName)) { privatePorts[e.portName].internalData.eventManager.__fireEvent("message", { data: e.data }); } else { throw new Error("Diagnostics message received for unknown port."); } break; case "OnDetach": privatePorts = {}; isAttached = false; diagnosticsEventManager.__fireEvent("detach", {}); break; case "OnBreakpointHit": diagnosticsEventManager.__fireEvent("breakpointhit", {}); break; case "OnGetBreakFlagsResult": breakFlags = parseInt(e.breakFlags, 10); break; } }); // Public Diagnostics API: var diagnostics = { // diagOM supports ES5 engineSupportsES5: true, createPort: function ScriptedHost$Diagnostics$createPort(portName) { /// /// Creates a port to be used to talk to script running in the diagnostics engine in the remote target. /// /// The portName that will identify the port /// /// The port object which can be connected, postMessage'd and listened on (using the "message event"). /// return createPortInternal(portName).port; }, connect: function ScriptedHost$Diagnostics$connect(port) { /// /// Connects a port to the remote target - on the remote side, a "connect" event will be fired with the other end of the port. /// /// The port to connect to the remote side. /// /// if (!privatePorts.hasOwnProperty(port.name)) { throw new Error("You must use a port created by ScriptedHost.Diagnostics.createPort"); } external.sendMessage("OnConnect", port.name); privatePorts[port.name].internalData.isConnected = true; }, addEventListener: diagnosticsEventManager.addEventListener.bind(diagnosticsEventManager), removeEventListener: diagnosticsEventManager.removeEventListener.bind(diagnosticsEventManager), getBreakFlags: function () { // sendMessage requires at least one after the message ID string, however we don't use any for GetBreakFlags external.sendMessage("GetBreakFlags", "empty"); // GetBreakFlags triggers a synchronous message back to us of commandId "OnGetBreakFlagsResult" which sets breakFlags above. return breakFlags; }, getHWND: function () { external.sendMessage("GetHWND", "empty"); // A synchronous message will be sent back which will update the value of hwnd above. return hwnd; } }; return diagnostics; }(); // Hacks to get console working without code changes mainBrowser = browser; })(); PADPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADD