text: // Overwritten
  function getSearchTermFromLocation() {
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split("&");
    for (var i = 0; i < sURLVariables.length; i++) {
      var sParameterName = sURLVariables[i].split("=");
      if (sParameterName[0] == "q") {
        return decodeURIComponent(sParameterName[1].replace(/\+/g, "%20"));
      }
    }
  }
  
  function joinUrl(base, path) {
    if (path.substring(0, 1) === "/") {
      // path starts with `/`. Thus it is absolute.
      return path;
    }
    if (base.substring(base.length - 1) === "/") {
      // base ends with `/`
      return base + path;
    }
    return base + "/" + path;
  }
  
  function formatResult(location, title, summary) {
    var targetUrl = joinUrl(base_url, location);
    var gotoUrl = "gotoSearch('" + targetUrl + "')";
    return (
      '<article><h3><a onClick="' +
      gotoUrl +
      '" href="javascript:' +
      gotoUrl +
      ';" >' +
      title +
      "</a></h3><p>" +
      summary +
      "</p></article>"
    );
  }
  
  function displayResults(results) {
    var search_results = document.getElementById("mkdocs-search-results");
    while (search_results.firstChild) {
      search_results.removeChild(search_results.firstChild);
    }
    if (results.length > 0) {
      for (var i = 0; i < results.length; i++) {
        var result = results[i];
        var html = formatResult(result.location, result.title, result.summary);
        search_results.insertAdjacentHTML("beforeend", html);
      }
    } else {
      search_results.insertAdjacentHTML("beforeend", "<p>No results found</p>");
    }
  }
  
  function doSearch() {
    var query = document.getElementById("mkdocs-search-query").value;
    if (query.length > min_search_length) {
      if (!window.Worker) {
        displayResults(search(query));
      } else {
        searchWorker.postMessage({ query: query });
      }
    } else {
      // Clear results for short queries
      displayResults([]);
    }
  }
  
  function initSearch() {
    var search_input = document.getElementById("mkdocs-search-query");
    if (search_input) {
      search_input.addEventListener("keyup", doSearch);
    }
    var term = getSearchTermFromLocation();
    if (term) {
      search_input.value = term;
      doSearch();
    }
  }
  
  function onWorkerMessage(e) {
    if (e.data.allowSearch) {
      initSearch();
    } else if (e.data.results) {
      var results = e.data.results;
      displayResults(results);
    } else if (e.data.config) {
      min_search_length = e.data.config.min_search_length - 1;
    }
  }
  
  if (!window.Worker) {
    console.log("Web Worker API not supported");
    // load index in main thread
    $.getScript(joinUrl(base_url, "search/worker.js"))
      .done(function () {
        console.log("Loaded worker");
        init();
        window.postMessage = function (msg) {
          onWorkerMessage({ data: msg });
        };
      })
      .fail(function (jqxhr, settings, exception) {
        console.error("Could not load worker.js");
      });
  } else {
    // Wrap search in a web worker
    var searchWorker = new Worker(joinUrl(base_url, "search/worker.js"));
    searchWorker.postMessage({ init: true });
    searchWorker.onmessage = onWorkerMessage;
  }
  