<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Credits</title>
<style>
body {
  font-family:Helvetica,Arial,sans-serif;
  background-color:white;
  font-size:84%;
  max-width:1020px;
}
.page-title {
  font-size:164%;
  font-weight:bold;
}
.product {
  background-color:#c3d9ff;
  overflow:auto;
  padding:2px;
  margin-top:16px;
  border-radius:5px;
}
.product .title {
  font-size:110%;
  font-weight:bold;
  float:left;
  margin:3px;
}
.product .homepage {
  text-align:right;
  float:right;
  margin:3px;
}
.product .homepage:after {
  content:" - ";
}
.product .show {
  text-align:right;
  float:right;
  margin:3px;
}
.licence {
  clear:both;
  background-color:#e8eef7;
  padding:16px;
  border-radius:3px;
  display:none;
}
.licence pre {
  white-space: pre-wrap
}
.licence h3 {
  margin-top:0px;
}
.license-packages {
  font-size:80%;
}
</style>
<script>
//<![CDATA[
function toggle(o) {
  var licence = o.nextSibling;

  while (licence.className != 'licence') {
    if (!licence) return false;
    licence = licence.nextSibling;
  }
  return toggleblock(licence, o);
}

function toggleblock(licence, o) {
  if (licence.style && licence.style.display == 'block') {
    licence.style.display = 'none';
    o.innerHTML = 'show license text';
  } else {
    licence.style.display = 'block';
    o.innerHTML = 'hide license text';
  }
  return false;
}

function toggleall() {
  var a = window.document.getElementsByClassName('licence');
  for (var i = 0; i < a.length; i++) {
    toggleblock(a[i], a[i].previousSibling.previousSibling.previousSibling.previousSibling);
  }
  return false;
}
//]]>
</script>
</head>
<body>
<span class="page-title" style="float:left;">Credits</span>
<span style="float:right">
<a href="javascript:toggleall()">Toggle All</a>
<a href="javascript:window.print();">Print</a>
</span>
<div style="clear:both; overflow:auto;">
<h2>List of Packages used in Google Chrome OS:</h2>
<!-- Chromium <3s the following projects -->
{{entries}}
</div>

<h2>List of Shared Licenses used in Google Chrome OS:</h2>
{{licenses}}

<!-- Note that some packages included above are used during build, but not
shipped with ChromeOS proper /merlin -->
</body>
</html>
