|  | <!DOCTYPE html> | 
|  |  | 
|  | <html dir="$i18n{textdirection}" lang="$i18n{language}"> | 
|  |  | 
|  | <head> | 
|  | <meta charset="utf-8"> | 
|  | <meta name="google" value="notranslate"> | 
|  |  | 
|  | <script> | 
|  | function addRow(name, url, isdir, | 
|  | size, size_string, date_modified, date_modified_string) { | 
|  | if (name == "." || name == "..") | 
|  | return; | 
|  |  | 
|  | var root = document.location.pathname; | 
|  | if (root.substr(-1) !== "/") | 
|  | root += "/"; | 
|  |  | 
|  | var tbody = document.getElementById("tbody"); | 
|  | var row = document.createElement("tr"); | 
|  | var file_cell = document.createElement("td"); | 
|  | var link = document.createElement("a"); | 
|  |  | 
|  | link.className = isdir ? "icon dir" : "icon file"; | 
|  |  | 
|  | if (isdir) { | 
|  | name = name + "/"; | 
|  | url = url + "/"; | 
|  | size = 0; | 
|  | size_string = ""; | 
|  | } else { | 
|  | link.draggable = "true"; | 
|  | link.addEventListener("dragstart", onDragStart, false); | 
|  | } | 
|  | link.innerText = name; | 
|  | link.href = root + url; | 
|  |  | 
|  | file_cell.dataset.value = name; | 
|  | file_cell.appendChild(link); | 
|  |  | 
|  | row.appendChild(file_cell); | 
|  | row.appendChild(createCell(size, size_string)); | 
|  | row.appendChild(createCell(date_modified, date_modified_string)); | 
|  |  | 
|  | tbody.appendChild(row); | 
|  | } | 
|  |  | 
|  | function onDragStart(e) { | 
|  | var el = e.srcElement; | 
|  | var name = el.innerText.replace(":", ""); | 
|  | var download_url_data = "application/octet-stream:" + name + ":" + el.href; | 
|  | e.dataTransfer.setData("DownloadURL", download_url_data); | 
|  | e.dataTransfer.effectAllowed = "copy"; | 
|  | } | 
|  |  | 
|  | function createCell(value, text) { | 
|  | var cell = document.createElement("td"); | 
|  | cell.setAttribute("class", "detailsColumn"); | 
|  | cell.dataset.value = value; | 
|  | cell.innerText = text; | 
|  | return cell; | 
|  | } | 
|  |  | 
|  | function start(location) { | 
|  | var header = document.getElementById("header"); | 
|  | header.innerText = header.innerText.replace("LOCATION", location); | 
|  |  | 
|  | document.getElementById("title").innerText = header.innerText; | 
|  | } | 
|  |  | 
|  | function onHasParentDirectory() { | 
|  | var box = document.getElementById("parentDirLinkBox"); | 
|  | box.style.display = "block"; | 
|  |  | 
|  | var root = document.location.pathname; | 
|  | if (!root.endsWith("/")) | 
|  | root += "/"; | 
|  |  | 
|  | var link = document.getElementById("parentDirLink"); | 
|  | link.href = root + ".."; | 
|  | } | 
|  |  | 
|  | function onListingParsingError() { | 
|  | var box = document.getElementById("listingParsingErrorBox"); | 
|  | box.innerHTML = box.innerHTML.replace("LOCATION", encodeURI(document.location) | 
|  | + "?raw"); | 
|  | box.style.display = "block"; | 
|  | } | 
|  |  | 
|  | function sortTable(column) { | 
|  | var theader = document.getElementById("theader"); | 
|  | var oldOrder = theader.cells[column].dataset.order || '1'; | 
|  | oldOrder = parseInt(oldOrder, 10) | 
|  | var newOrder = 0 - oldOrder; | 
|  | theader.cells[column].dataset.order = newOrder; | 
|  |  | 
|  | var tbody = document.getElementById("tbody"); | 
|  | var rows = tbody.rows; | 
|  | var list = [], i; | 
|  | for (i = 0; i < rows.length; i++) { | 
|  | list.push(rows[i]); | 
|  | } | 
|  |  | 
|  | list.sort(function(row1, row2) { | 
|  | var a = row1.cells[column].dataset.value; | 
|  | var b = row2.cells[column].dataset.value; | 
|  | if (column) { | 
|  | a = parseInt(a, 10); | 
|  | b = parseInt(b, 10); | 
|  | return a > b ? newOrder : a < b ? oldOrder : 0; | 
|  | } | 
|  |  | 
|  | // Column 0 is text. | 
|  | if (a > b) | 
|  | return newOrder; | 
|  | if (a < b) | 
|  | return oldOrder; | 
|  | return 0; | 
|  | }); | 
|  |  | 
|  | // Appending an existing child again just moves it. | 
|  | for (i = 0; i < list.length; i++) { | 
|  | tbody.appendChild(list[i]); | 
|  | } | 
|  | } | 
|  | </script> | 
|  |  | 
|  | <style> | 
|  |  | 
|  | h1 { | 
|  | border-bottom: 1px solid #c0c0c0; | 
|  | margin-bottom: 10px; | 
|  | padding-bottom: 10px; | 
|  | white-space: nowrap; | 
|  | } | 
|  |  | 
|  | table { | 
|  | border-collapse: collapse; | 
|  | } | 
|  |  | 
|  | th { | 
|  | cursor: pointer; | 
|  | } | 
|  |  | 
|  | td.detailsColumn { | 
|  | -webkit-padding-start: 2em; | 
|  | text-align: end; | 
|  | white-space: nowrap; | 
|  | } | 
|  |  | 
|  | a.icon { | 
|  | -webkit-padding-start: 1.5em; | 
|  | text-decoration: none; | 
|  | } | 
|  |  | 
|  | a.icon:hover { | 
|  | text-decoration: underline; | 
|  | } | 
|  |  | 
|  | a.file { | 
|  | background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABHUlEQVR42o2RMW7DIBiF3498iHRJD5JKHurL+CRVBp+i2T16tTynF2gO0KSb5ZrBBl4HHDBuK/WXACH4eO9/CAAAbdvijzLGNE1TVZXfZuHg6XCAQESAZXbOKaXO57eiKG6ft9PrKQIkCQqFoIiQFBGlFIB5nvM8t9aOX2Nd18oDzjnPgCDpn/BH4zh2XZdlWVmWiUK4IgCBoFMUz9eP6zRN75cLgEQhcmTQIbl72O0f9865qLAAsURAAgKBJKEtgLXWvyjLuFsThCSstb8rBCaAQhDYWgIZ7myM+TUBjDHrHlZcbMYYk34cN0YSLcgS+wL0fe9TXDMbY33fR2AYBvyQ8L0Gk8MwREBrTfKe4TpTzwhArXWi8HI84h/1DfwI5mhxJamFAAAAAElFTkSuQmCC ") left top no-repeat; | 
|  | } | 
|  |  | 
|  | a.dir { | 
|  | background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII= ") left top no-repeat; | 
|  | } | 
|  |  | 
|  | a.up { | 
|  | background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EUPfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1bmw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcLpICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6QaicK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjvH+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmagFN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu/BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat; | 
|  | } | 
|  |  | 
|  | html[dir=rtl] a { | 
|  | background-position-x: right; | 
|  | } | 
|  |  | 
|  | #parentDirLinkBox { | 
|  | margin-bottom: 10px; | 
|  | padding-bottom: 10px; | 
|  | } | 
|  |  | 
|  | #listingParsingErrorBox { | 
|  | border: 1px solid black; | 
|  | background: #fae691; | 
|  | padding: 10px; | 
|  | display: none; | 
|  | } | 
|  | </style> | 
|  |  | 
|  | <title id="title"></title> | 
|  |  | 
|  | </head> | 
|  |  | 
|  | <body> | 
|  |  | 
|  | <div id="listingParsingErrorBox">$i18nRaw{listingParsingErrorBoxText}</div> | 
|  |  | 
|  | <h1 id="header">$i18n{header}</h1> | 
|  |  | 
|  | <div id="parentDirLinkBox" style="display:none"> | 
|  | <a id="parentDirLink" class="icon up"> | 
|  | <span id="parentDirText">$i18n{parentDirText}</span> | 
|  | </a> | 
|  | </div> | 
|  |  | 
|  | <table> | 
|  | <thead> | 
|  | <tr class="header" id="theader"> | 
|  | <th onclick="javascript:sortTable(0);">$i18n{headerName}</th> | 
|  | <th class="detailsColumn" onclick="javascript:sortTable(1);"> | 
|  | $i18n{headerSize} | 
|  | </th> | 
|  | <th class="detailsColumn" onclick="javascript:sortTable(2);"> | 
|  | $i18n{headerDateModified} | 
|  | </th> | 
|  | </tr> | 
|  | </thead> | 
|  | <tbody id="tbody"> | 
|  | </tbody> | 
|  | </table> | 
|  |  | 
|  | </body> | 
|  |  | 
|  | </html> |