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 $_F=__FILE__;$_C60465765='Pz48P2p3ag0KCWJIVUxDV08oIi4uLy4uL0xiaWVPZWJWL09IZ2JITy5qd2..
Decoded Output download
?><?php
include("../../libreria/engine.php");
$_SESSION["logError"] = array();
$gasto = new af_gasto();
$gasto->fecha = date("Y-m-d",time());
$gasto->pago = 0; //Cuando se paga se pone el 1
$gasto->fpago = '' ; //Vacio cuando nuevo
$gasto->stad = 1;
if($_POST)
{
$gasto = new af_gasto();
$gasto->cod = $_POST['txtNo'] ;
if($gasto->cod > 0)
{
$gasto->cargar();
if($gasto->pago > 0)
{
$usr = strtoupper($_SESSION['muniUser']['username']);
echo mensajeDeError("<b>{$usr}</b>: Recuerde que no debe modificar un comprobante ya pago... Esta accion no se registrara, ya que puede producir un descuadre grave en el sistema, debido a que este comprobante esta registrado como pago. <br/>");
echo "
<script type='text/javascript'>
actualizarPestana();
alert('Acción cancelada!!');
</script>
";
exit();
}
}
$gasto = new af_gasto();
$gasto->cod = $_POST['txtNo'] ;
$gasto->nombre = $_POST['txtAl'] ;
$gasto->fecha = $_POST['txtFechaComprote'] ;
$gasto->detalle = $_POST['txtDetalle'] ;
$gasto->stad = (isset($_POST["txtCoActivo"]))?1:0;
$gasto->fdo = $_POST['txtFondo_la'];
$gasto->oe = (isset($_POST["txtNoCheque"]))?1:0;
$gasto->ck = (isset($_POST["txtNoCheque"]))?0:1;
$gasto->doc = (isset($_POST["txtTipoRnc"]))?$_POST["txtTipoRnc"]:"";
$gasto->numdoc = $_POST["txtCedRNCSuplidor"];
$gasto->retencion = (isset($_POST["txtRetenido"]))?$_POST["txtRetenido"]:0;
$gasto->itbis = $_POST["txtItbis"];
$gasto->gdirectos = $_POST["txtOtros"];
$gasto->bruto = $_POST["txtBruto"];
$gasto->descuento = $_POST["txtDescuento"];
$gasto->adelanto = $_POST["txtAdelanto"];
$gasto->origen = $_POST["txtOrigen"];
$gasto->stad = $_POST["txtStad"];
$gasto->direccion = $_POST["txtDireccionSuplidor"];
$gasto->condicion = $_POST["txtCondicion"];
$gasto->numerocuenta = $_POST["txtNumerocuenta"];
$codigosPresupuestarios = $_POST["dtxtCodigo"];
$montossPresupuestarios = $_POST["dtxtMonto"];
if(count($codigosPresupuestarios) > 0)
{
foreach($codigosPresupuestarios as $pos=>$pres)
{
$monto = $montossPresupuestarios[$pos];
$gasto->agregarPresupuesto($pres, $monto);
}
}
if(isset( $_POST["txtRetenCodigo"]))
{
$retencionPres = $_POST["txtRetenCodigo"];
$retencionCodigo = $_POST["txtRetenCodigoRetencion"];
$retencionReten = $_POST["txtRetenRetencionRetencion"];
$retencionMontoBase = $_POST["txtRetenMonto"];
$gasto->Rrnc = $_POST["txtRetenRNC"];
$gasto->Rncf = $_POST["txtRetenNCF"];
if(count($retencionPres) > 0);
{
foreach($retencionPres as $pos=>$pres)
{
$gasto->agregarRetencion($retencionCodigo[$pos],$retencionPres[$pos], $retencionReten[$pos], $retencionMontoBase[$pos]);//
}
}
}
/*if($gasto->presTotal!=$gasto->neto){
echo mensajeDeError("Animal, el total de presupuesto debe de ser igual que el neto del comprobante, BESTIA!!");
}
//exit();*/
$gasto->guardar();
$txtDataCxP = $_POST["txtDataCxP"];
if($txtDataCxP != "")
{
$gasto->registrarPagoCpX($txtDataCxP);
}
echo mensajeDeAlerta("Datos del Registro Guardados.");
echo "
<script language='javascript'>
document.getElementById('txtNo').value = '$gasto->cod';
</script>
";
exit();
}
else
{
if(isset($_GET['cod']) && strlen($_GET['cod']) > 5)
{
$gasto->cod = $_GET['cod'];
$gasto->cargar();
}else if(isset($_GET['asig']) && strlen($_GET['asig']) > 3){
$asig = $_GET['asig'];
/////////////////sql para sacar los datos de llenar el comprobante
$dtAsig_c = new dataTable("SELECT m.cod, s.nombre, m.fecha, b.titulo AS fondo,
m.fondo AS fondo_cod, c.concepto, s.rnc, s.direc,
m.stad, m.origen, c.bruto, c.itbis, c.descuento, c.otros, (c.bruto+ c.itbis- c.descuento+ c.otros) AS total
FROM af_gasigna m LEFT JOIN af_exec d ON m.cod = d.ref AND d.tipo = 'A'
LEFT JOIN af_cxpagar c ON c.cod = m.referencia
LEFT JOIN am_sup s ON s.cod = c.suplidor
LEFT JOIN af_mbanco b ON b.fondo = m.fondo WHERE m.cod = '{$asig}'
GROUP BY m.cod ORDER BY m.cod");
}
}
function mostrarAsigna($CodCG)
{
$sql = "SELECT m.cod, m.fecha, CONCAT(m.origen,' ', m.referencia, ' de fecha ', m.freferencia) AS origen, b.titulo AS fondo, SUM(d.monto) AS monto
FROM af_gasigna m, af_mbanco b, af_exec d
WHERE b.fondo = m.fondo AND m.comprogasto = '$CodCG' AND d.ref = m.cod AND d.tipo = 'A' AND m.stad = 1
group by m.cod
";
echo $sql;
$dt = new dataTable($sql);
if($CodCG == 0){
$dt->numRows = 0;
}
$total = 0;
if ($dt->numRows > 0)
{
foreach($dt->data["origen"] as $pos=>&$valor)
{
$valor = ($valor);
$dt->data["monto"][$pos] = "<div align='right'>". number_format($dt->data["monto"][$pos],2)."</div>";
$total += $dt->data["monto"][$pos];
}
}
$gridasigna = new dataGrid($dt);
$gridasigna->cambiarLabel("cod" , "Asignacion #");
$gridasigna->cambiarLabel("origen" , "Origen");
$gridasigna->cambiarLabel("monto" , "Monto");
if($gasto->cod==""){
$gasto->stad=1;
}else{
$gasto->stad=$gasto->stad;
}
?>
<style>
#divBotonesM button
{
margin-left:50px;
}
</style>
<table>
<tr>
<td>Se Muestran <?php echo $dt->numRows; ?> Registros por $ <?php echo number_format($total,2); ?>
</td>
<td>
<div id='divBotonesM'>
<button type='button' title = 'Imprimir Listado' onclick='imprimir();' style = 'height:35px; width:35px'><img src='images/printer.png' style = 'width:22px' /></button>
</div>
</td>
</tr>
</table>
<?php
$gridasigna->display();
}
function mostrarCheques($CodCG)
{
$sql = "SELECT cod, fecha, det, doc, stad, conc, oe, deb AS monto
FROM af_banco WHERE ref = '$CodCG'
";
$dt = new dataTable($sql);
if($CodCG == 0){
$dt->numRows = 0;
}
$total = 0;
if ($dt->numRows > 0)
{
foreach($dt->data["det"] as $pos=>&$valor)
{
$valor = ($valor);
$dt->data["monto"][$pos] = "<div align='right'>". number_format($dt->data["monto"][$pos],2)."</div>";
$estado = ($dt->data["stad"][$pos] == 1)?"Activo":"Cancelado";
$total += $dt->data["monto"][$pos];
$conc = 'Por Conciliar';
if ($dt->data["conc"][$pos] <> '0000-00')
{
$conc = 'Conciliado en '.$dt->data["conc"][$pos];
}
$operacion = ($dt->data["oe"][$pos] == 1)?"Pago Electronico":"";
}
}
$grid = new dataGrid($dt);
$grid->setRowAction("ondblclick", "cheque", array("cod"));
$grid->cambiarLabel("cod" , "Código");
$grid->cambiarLabel("det" , "A Nombre de...");
$grid->cambiarLabel("doc" , "Doc.");
$grid->cambiarLabel("docfis" , "Doc. Fisico");
?>
<style>
#divBotonesM button
{
margin-left:50px;
}
</style>
<table>
<tr>
<td>Se Muestran <?php echo $dt->numRows; ?> Registros por $ <?php echo number_format($total,2); ?>
</td>
<td>
<div id='divBotonesM'>
<button type='button' title = 'Imprimir Listado' onclick='imprimir();' style = 'height:35px; width:35px'><img src='images/printer.png' style = 'width:22px' /></button>
</div>
</td>
</tr>
</table>
<?php
$grid->display();
}
$sql = "SELECT fondo, titulo FROM af_mbanco";
$txtFondo_la = new comboBox("txtFondo_la", new dataTable($sql));
$txtFondo_la->accion = "onchange='cambioFondo(this);' title='Debe indicar la cuenta' title='Debe seleccionar el fondo ' ";
$txtFondo_la->class = "requerido";
$txtFondo_la->setValue($gasto->fdo);
$per = $_SESSION["sistemVARS"]["per"];
$sql = "SELECT t.prg, CONCAT(t.prg, '-',IF(p.detprg IS NULL,c.detprg,p.detprg)) AS det
FROM af_tgasto t
LEFT JOIN cat_mprog c ON t.prg = c.cod
LEFT JOIN af_proy p ON t.prg = p.proy AND p.per =t.per
WHERE t.fdo = 1 AND t.per = $per
GROUP BY t.prg
ORDER BY t.prg";
$dtxtPrograma = new comboBox("dtxtPrograma", new dataTable($sql));
$dtxtPrograma->width = "180";
if($gasto->cod==""){
$gasto->stad=1;
$gasto->condicion=1;
}else{
$gasto->stad = $gasto->stad;
$gasto->condicion=2;
}
$gasto->neto = $gasto->bruto+$gasto->itbis- $gasto->descuento;
?>
<style>
.comboClas
{
width:150px;
}
#divBotonesMcg button
{
margin-left:90px;
}
.bontonIMg
{
border:none;
cursor:pointer;
width:20px;
}
</style>
<form method="post" action="modulos/comprobante/comprobante.php" id="frmComprobanteCompleto">
<input type="hidden" value="" name="txtDataCxP" id="txtDataCxP" />
<input type="hidden" value="0" name="txtMontoCxPComprobante" id="txtMontoCxPComprobante" />
<fieldset>
<legend><b>Datos del Comprobante de Gasto</b></legend>
<table>
<tr>
<td>
CG No. <input value="<?php echo $gasto->cod; ?>" readonly="readonly" type="text" name="txtNo" id="txtNo" />
</td>
<td>
Fondo:
<?php
$txtFondo_la->display();
?>
</td>
<td>
Fecha: <input class="fechacompro" title="Debe indicar una fecha valida" value="<?php echo $gasto->fecha; ?>" type="text" name="txtFechaComprote" id="txtFechaComprote"/>
<input class="" title="Debe indicar una fecha valida" value="<?php echo $gasto->adelanto; ?>" type="hidden" name="txtAdelanto" id="txtAdelanto"/>
</td>
<td>
<label><input <?php echo ($gasto->oe > 0)?"checked='checked'":""; ?> name="txtNoCheque" value="1" type="checkbox" /> No Cheque</label>
</td>
<td>
<button type="button" class="btnPrint" title="Solicitud de cheque" onclick="imprimirSolicitud();" ></button>
</td>
</tr>
</table>
</fieldset>
<table>
<tr>
<td><input type="hidden" value="<?php echo $gasto->origen; ?>" name="txtOrigen" id="txtOrigen">
<td><input type="hidden" value="<?php echo $gasto->condicion; ?>" name="txtCondicion" id="txtCondicion">
<td>
<fieldset style='height:130px'>
<legend><b>Datos del Suplidor</b></legend>
<table>
<tr>
<td align="left">
<button class="btnSearch" onclick="buscarSuplidorCompro();" type="button"></button> Al:
</td>
<td colspan="2">
<input name="txtAl" type="text" class="requerido" id="txtAl" style="width:400px;" title="Debe inidicar el nombre del Suplidor" value="<?php echo $gasto->nombre; ?>" maxlength="45" />
</td>
</tr>
<tr>
<td align="right">
Dirección:
</td>
<td colspan="2">
<input style="width:400px;" name="txtDireccionSuplidor" id="txtDireccion" type="text" value="<?php echo $gasto->direccion;?>" />
</td>
</tr>
<tr>
<td valign="top">
Cédula/RNC:
</td>
<td valign="top">
<input type="hidden" value="<?php echo $gasto->stad; ?>" name="txtStad" id="txtStad">
<input value="<?php echo $gasto->numdoc; ?>" name="txtCedRNCSuplidor" type="text" id="txtCedRNCSuplidor"/>
</td>
<td>
<fieldset>
<label><input <?php echo ($gasto->doc == "R")?"checked":""; ?> type="radio" name="txtTipoRnc" value="R"/>RNC</label>
<label><input <?php echo ($gasto->doc == "C")?"checked":""; ?> type="radio" name="txtTipoRnc" value="C"/>Cédula</label>
<label><input <?php echo ($gasto->doc == "P")?"checked":""; ?> type="radio" name="txtTipoRnc" value="P"/>Pasaporte</label>
</fieldset>
</td>
</tr>
</table>
</fieldset>
</td>
<td style='vertical-align:top'>
<fieldset style='height:130px'>
<legend><b>Detalle del Comprobante</b></legend>
<table>
<tr>
<td>
<textarea onDblClick = "Detalle('<?php echo $gasto->cod; ?>')"; name="txtDetalle" class="requerido" id="txtDetallex" style="width:330px; height:105px;" title="Debe llenar el detalle del comprobante"><?php echo $gasto->detalle; ?></textarea>
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
<fieldset>
<legend><b>Monto Bruto, Itbis, Descuentos y Otros</b></legend>
<table>
<tr>
<td><input value="<?php echo $gasto->numerocuenta; ?>" class='' type="hidden" name="txtNumerocuenta" id="txtNumerocuenta" /> </td>
<td>Bruto: <input onkeyup="vernetoComprobante();" value="<?php echo $gasto->bruto; ?>" class='decimal requerido' type="text" name="txtBruto" id="txtBruto" /> </td>
<td>Itbis: <input onkeyup="vernetoComprobante();" value="<?php echo $gasto->itbis; ?>" class='decimal requerido' type="text" name="txtItbis" id="txtItbis" /> </td>
<td>Descuento: <input onkeyup="vernetoComprobante();" value="<?php echo $gasto->descuento; ?>" class='decimal requerido' type="text" name="txtDescuento" id="txtDescuento" /> </td>
<td>Otros: <input onkeyup="vernetoComprobante();" value="<?php echo $gasto->gdirectos; ?>" class='decimal requerido' type="text" name="txtOtros" id="txtOtros" /> </td>
<td><strong>Neto:</strong> <input readonly value="<?php echo $gasto->neto; ?>" class='' type="text" name="txtTotalComprobanteNeto" id="txtTotalComprobanteNeto" /> </td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><b>Asignación Presupuestaria, Retenciones y Cheques</b></legend>
<div id="divDetalles_comprogasto369">
<ul style="font-size:90%">
<li><a href="#divPresupuestoCompro">Presupuesto</a></li>
<li><a href="#divRetenciones">Retenciones</a></li>
<li><a href="#divConsultaCheques">Cheques</a></li>
</ul>
<div id="divPresupuestoCompro">
<table width="100%" border="0" style="border:1px green solid; border-top:none">
<thead>
<tr>
<td colspan="6" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
<b>Total : </b><input readonly="readonly" class="requerido" value="<?php echo $gasto->presTotal; ?>" title="El total debe ser mayor de cero." id='txtTotalComprobante' name="txtTotalComprobante" type="text" /> </td>
</tr>
</thead>
<tr>
<td colspan='6'>
<?php
#VERIFICA_DTASIG
if(isset($dtAsig_c)){
$filaAsig = $dtAsig_c->getRow(0);
$pres = new dataTable("SELECT pres, monto FROM af_exec WHERE ref = '{$filaAsig['cod']}' AND tipo = 'A'");
echo $sql;
$total = array_sum($pres->data['monto']);
$grid = new dataGrid($pres);
$grid->display();
echo "<script> $('#txtTotalComprobante').val('{$total}'); </script>";
}
?>
</td>
</tr>
<tr style="background:#cccccc">
<th>Código</th>
<th>Código Presupuestario</th>
<th>Monto</th>
<td><button onclick="cargarDetalle();" type="button" class="btnAdd"></button></td>
</tr>
<tbody id="tblDetalleComprobante"><?php
if(count($gasto->presupuestos) > 0)
foreach($gasto->presupuestos as $pres)
{
echo "<tr><td><input type='text' name='dtxtCodigo[]' readonly value='$pres->pres' /></td><td><input readonly name='txtCodPres[]' value='$pres->nombre' style='width: 300px;' type='text'/><input readonly name='txtBal[]' type='hidden'/></td><td><input type='text' onkeyup='sumaTotalPresupuesto();' name='dtxtMonto[]' value='$pres->monto' /></td><td>
<button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalPresupuesto()'></button>
</td></tr>";
}
?></tbody>
</table>
</div>
<div id="divRetenciones">
<table width="100%" border="0" style="border:solid 1px #cccccc;">
<thead style="border:1px solid #cccccc;">
<tr>
<td colspan="6">
<table cellpadding="0" cellspacing="0" class="ui-corner-top ui-state-default ui-state-focus border:solid 1px blue" width="100%">
<tr >
<td >
<b>Total Retenciones: </b><input readonly="readonly" class=" " title="El total de retenciones debe ser mayor que cero" id='txtTotalComprobanteRet' name="txtTotalComprobanteRet" type="text" value="<?php echo $gasto->retenTotal; ?>" />
</td>
<td><b>RNC/Cédula: </b><input value="<?php echo $gasto->Rrnc; ?>" name="txtRetenRNC" type="text" class="" id="txtRetenRNC" title="Debe llenar el RNC o Cedula"></td>
<td><b>NCF: </b><input value="<?php echo $gasto->Rncf; ?>" name="txtRetenNCF" type="text" id="txtRetenNCF"></td>
<td>
<button id="btnAplicarReten" type="button" onclick="aplicarRetenciones()" <?php echo ($gasto->retencion > 0)?"disabled":"" ?>>Aplicar Retenciones</button>
<input onfocus="this.blur;" value="1" onclick="return false;" type="checkbox" name="txtRetenido" id="txtRetenido" readonly="readonly" <?php echo ($gasto->retencion > 0)?"checked":"" ?> />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th>Código Presupuestario</th>
<th>Monto</th>
<th>Cod. Retención</th>
<th>Retención</th>
<td><button onclick="cargarRetencion();" class="btnAdd" type="button"></button></td>
</tr>
</thead>
<tbody id="tblDetalleRetencion"><?php
if(count($gasto->retenciones) > 0)
foreach($gasto->retenciones as $ret)
{
echo "<tr><td><input type='text' value='{$ret->pres}' name='txtRetenCodigo[]'></td><td><input type='text' name='txtRetenMonto[]' value='{$ret->montoOriginal}'></td><td><input type='text' name='txtRetenCodigoRetencion[]' value='{$ret->codret}'></td><td><input type='text' onkeyup='sumaTotalRetenciones();' name='txtRetenRetencionRetencion[]' value='{$ret->monto}'></td><td><button class='btnDeleteSmall' onclick='eliminarDetalle1(this); sumaTotalRetenciones();'></button></td></tr>";
}
?></tbody>
</table>
</div>
<div id="divConsultaCheques" >
<div id = "divlista" style="overflow:auto; height:300px;">
<?php mostrarCheques($gasto->cod); ?>
</div>
</div>
</div>
</fieldset>
<div id="divResultadoEnvioComprobante"></div>
</div>
<center>
<div id="divBotonesMcg">
<button type="button" onclick="verificarDatos() " class="btnSave" title = "Salvar Comprobante" style = ''></button>
<?php
if($_SESSION["sistemVARS"]["imprimirComprobantte"]==1){
echo '<button type="button" class = "btnPrintdoc" title = "Imprimir Comprobantes" onclick="imprimirEsteComprobantePapel();" ></button>';
}else{
echo '<button type="button" class = "btnPrintdoc" title = "Imprimir Comprobantes" onclick="imprimirEsteComprobante();" ></button>';
}
?>
<button type="button" class="btnClose" title = "Salir" onclick="comprobanteSalir();" ></button>
</div>
</center>
</form>
<script language="javascript">
function vernetoComprobante(){
bruto = $("#txtBruto").val();
itbis = $("#txtItbis").val();
otros = $("#txtOtros").val();
descuento = $("#txtDescuento").val();
neto = $("#txtTotalComprobanteNeto").val();
neto = parseFloat(bruto)+parseFloat(itbis)+parseFloat(otros)-parseFloat(descuento);
neto = (isNaN(neto))?0:neto;
document.getElementById("txtTotalComprobanteNeto").value = neto;
}
var ckpres = '<?php echo $_SESSION["sistemVARS"]["ckpres"]; ?>';
asgForm($("#frmComprobanteCompleto"),$("#divResultadoEnvioComprobante"));
function imprimirSolicitud()
{
cod = document.getElementById("txtNo").value;
if(cod != "")
{
ImprimirPDF("modulos/reporte/comprobantes/RSolicitudCheque.php?cod="+cod);
}
else
{
alert("Debe guardar antes de imprimir");
}
}
function verificarDatos()
{
todoBien = true;
total = parseFloat(document.getElementById("txtTotalComprobante").value);
if(total != 0)
{
//Todo bien
}
else
{
alert(" Debe agregar al menos una asignacion presupuestaria. ");
todoBien = false;
}
monto = parseFloat(document.getElementById("txtMontoCxPComprobante").value);
/* esto se desabilito porque da un error
if(monto > 0 && monto != total)
{
todoBien = false;
alert("El monto no es igual a la suma de las facturas a pagar"+monto+"/ "+ total);
}
*/
if(todoBien)
{
$("#frmComprobanteCompleto").submit();
}
}
function verificarMonto(bal, obj)
{
if(!(obj.value > 0))
{
alert("Favor de colocar una cantidad valida");
obj.setAttribute('class','error');
}
else
{
obj.setAttribute('class','');
}
if(ckpres == 1)
{
bal =parseFloat(bal);
if(obj.value > bal)
{
alert("El monto de esta cuenta supera el balance disponible: " + bal);
obj.setAttribute('class','error');
obj.style.background = "pink";
verifica('SI');
}
else
{
obj.setAttribute('class','');
obj.style.background = "";
verifica('NO');
}
}
total = 0;
t = document.getElementsByName(obj.name);
for(x=0; x<t.length ; x++)
{
v = parseFloat(t[x].value);
if(v > 0)
{
total += v;
}
}
document.getElementById("txtTotalComprobante").value = total;
}
function eliminarDetalle1(obj)
{
if(confirm("Desea eliminar este detalle?"))
{
obj.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode);
}
}
function cargarDetalle()
{
fondo = document.getElementById("txtFondo_la").value;
if(fondo > 0)
{
abrirOpcion("divCarcarDetallesClass","Asignación de Cuentas Presupuestarias ", "modulos/comprobante/codigosPresupuestarios.php?fondo="+fondo,true);
}
else
{
alert("Debe seleccionar una Cuenta Bancaria");
}
}
function crearLinea(cod, nombre, bal)
{
destino = document.getElementById("tblDetalleComprobante");
num = destino.childNodes.length;
tr = document.createElement('tr');
text = document.createElement('input');
text.type='text';
text.name = 'dtxtCodigo[]';
text.id = 'dtxtCodigo'+num;
text.value = '<?php echo $per; ?>' + cod;
td = document.createElement('td');
td.appendChild(text);
tr.appendChild(td);
text = document.createElement('input');
text.type='text';
text.style.width='300px';
text.name = 'txtCodPres[]';
text.id = 'txtCodPres'+num;
text.value = nombre;
td = document.createElement('td');
td.appendChild(text);
text = document.createElement('input');
text.type='hidden';
text.name = 'txtBal[]';
text.id = 'txtBal'+num;
text.value = bal;
td.appendChild(text);
tr.appendChild(td);
monto = document.createElement('input');
monto.type='text';
monto.name = 'dtxtMonto[]';
monto.id = 'dtxtMonto'+num;
monto.setAttribute('onkeyup','sumaTotalPresupuesto()');
monto.value = 0;
monto.setAttribute("onkeyup", "verificarMonto('"+bal+"', this);")
td = document.createElement('td');
td.appendChild(monto);
tr.appendChild(td);
text = document.createElement('button');
text.setAttribute('class','btnDeleteSmall');
text.setAttribute('onclick','eliminarDetalle1(this)');
td = document.createElement('td');
td.appendChild(text);
tr.appendChild(td);
destino.appendChild(tr);
monto.focus();
}
function seleccionarDetalle(cod, nombre, monto)
{
crearLinea(cod, nombre, monto);
$("#divCarcarDetallesClass").dialog('close');
}
function cargarRetencion()
{
monto = document.getElementById("txtBruto").value;
if(monto > 0)
{
abrirOpcion("divCargarRetenciones","Asignación de Retenciones ", "modulos/comprobante/retencionCG.php?Monto="+monto,true, 350, 200);
}
else
{
alert("El monto del Comprobante debe ser mayor que 0 para asignar Retenciones");
}
}
function RetenSalirRetencion()
{
$("#divCargarRetenciones").dialog('close');
}
function Detalle(cod)
{
abrirOpcion("divEditDetalle","Edicion del Detalle del Comprobante ", "modulos/comprobante/detcg.php?cod="+cod,true, 400, 360);
}
function verifica(dato){
cargarEn("divRefrescoMonto","modulos/comprobante/reciboInfo.php", "cod="+dato);
}
function DetalleSalir()
{
$("#divEditDetalle").dialog('close');
}
function comprobanteSalir()
{
$("#divComprobanteEditWindows").dialog('close');
}
//function generarCalculosParaRetencion(tipoRetencion, valorRetencion, codigoRetencion, itebisReten)
function generarCalculosParaRetencion(tipoRetencion, valorRetencion, codigoRetencion, itebisReten)
{
try{
if(tipoRetencion > 0)
{
comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
numC = comprobantes.length;
destino = document.getElementById("tblDetalleRetencion");
//Por cada uno de los comprobantes se va a agregar una fila.
for(xCPR=0; xCPR<numC; xCPR++)
{
num = destino.childNodes.length;
tr = document.createElement('tr');
td = document.createElement('td');
texto = document.createElement("input");
texto.type= 'text';
texto.name ='txtRetenCodigo[]';
texto.value = (comprobantes[xCPR].childNodes[0].childNodes[0].value);
td.appendChild(texto);
tr.appendChild(td);
td = document.createElement('td');
texto = document.createElement("input");
texto.type= 'text';
texto.name ='txtRetenMonto[]';
montoComprobante = comprobantes[xCPR].childNodes[2].childNodes[0].value;
//Monto para el calculo B3/1.16*0.5/100 del Itebis 16%
//montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.86206897):montoComprobante);
//Monto para el calculo B3/1.18*0.5/100 del Itebis 18%
montoComprobanteC = a2dec((itebisReten >0)?(montoComprobante*0.847457627):montoComprobante);
texto.value = montoComprobante;
td.appendChild(texto);
tr.appendChild(td);
td = document.createElement('td');
texto = document.createElement("input");
texto.type= 'text';
texto.value = codigoRetencion;
texto.name='txtRetenCodigoRetencion[]';
td.appendChild(texto);
tr.appendChild(td);
td = document.createElement('td');
texto = document.createElement("input");
texto.type= 'text';
texto.value = a2dec(montoComprobanteC * valorRetencion );
texto.name='txtRetenRetencionRetencion[]';
texto.setAttribute('onkeyup','sumaTotalRetenciones()');
td.appendChild(texto);
tr.appendChild(td);
text = document.createElement('button');
text.setAttribute('class','btnDeleteSmall');
text.setAttribute('onclick','eliminarDetalle1(this); sumaTotalRetenciones();');
td = document.createElement('td');
td.appendChild(text);
tr.appendChild(td);
destino.appendChild(tr);
sumaTotalRetenciones();
}
}
else
{
//Aqui van los calculos de la retencion fija!!!
}
RetenSalirRetencion(); //Para salir del cuadro de dialogo
}
catch(ex)
{
alert(ex);
}
}
function sumaTotalRetenciones()
{
elems = document.getElementsByName("txtRetenRetencionRetencion[]");
total = 0;
for(x=0; x< elems.length; x++)
{
if(elems[x].value > 0)
{
total += parseFloat( elems[x].value);
}
}
document.getElementById("txtTotalComprobanteRet").value = a2dec(total);
}
function sumaTotalPresupuesto()
{
elems = document.getElementsByName("dtxtMonto[]");
total = 0;
for(x=0; x< elems.length; x++)
{
if(elems[x].value > 0)
{
total += parseFloat( elems[x].value);
}
}
elems = document.getElementsByName("txtRetenRetencionRetencion[]");
for(x=0; x< elems.length; x++)
{
if(elems[x].value > 0)
{
total += parseFloat( elems[x].value);
}
}
document.getElementById("txtTotalComprobante").value = total;
}
function aplicarRetenciones()
{
try
{
rs = confirm("Esta seguro que quiere aplicar las retenciones? ");
if(rs)
{
retencionesTotal = document.getElementById("txtTotalComprobanteRet").value;
if(retencionesTotal > 0)
{
comprobantes = document.getElementById("tblDetalleComprobante").childNodes;
numC = comprobantes.length;
retenciones = document.getElementById("tblDetalleRetencion").childNodes;
numR = retenciones.length;
for(xCAR = 0; xCAR < numR; xCAR++) //Recorrer las retenciones
{
rowRetencion = retenciones[xCAR];
for(xCAC=0; xCAC< numC; xCAC++) //Recorrer los comprobantes
{
rowComprobante = comprobantes[xCAC];
if(rowComprobante.childNodes[0].childNodes[0].value == rowRetencion.childNodes[0].childNodes[0].value)
{
reten = rowRetencion.childNodes[3].childNodes[0].value;
monto = rowComprobante.childNodes[2].childNodes[0].value;
nmonto = monto - reten;
rowComprobante.childNodes[2].childNodes[0].value = nmonto;
rowRetencion.childNodes[1].childNodes[0].value = nmonto;
}
}
}
document.getElementById("btnAplicarReten").disabled = true;
document.getElementById("btnAplicarReten").innerHTML = "Reten. Aplicada";
document.getElementById("txtRetenido").checked=true;
}
else
{
alert("Debe agregrar al menos una retencion para poder aplicar.");
}
}
}
catch(ex)
{
alert(ex);
}
}
$("#divDetalles_comprogasto369").tabs();
function buscarSuplidorCompro()
{
abrirOpcion("divSuplidorCompro","Buscar Suplidor", "modulos/comprobante/cargarSuplidor.php",true);
}
function aceptarSuplidor(nombre,rnc,direc)
{
document.getElementById("txtAl").value = nombre;
document.getElementById("txtCedRNCSuplidor").value = rnc;
document.getElementById("txtDireccion").value = direc;
$("#divSuplidorCompro").dialog('close');
}
function imprimirEsteComprobante()
{
ccompro = document.getElementById("txtNo").value;
if(ccompro == "")
{
alert("Debe Guardar el comprobante antes de imprimir");
}
else
{
abrirOpcion("impresionDelComprobante","Impresion de Comprobante", "modulos/comprobante/imprimirComprobante.php?cods="+ccompro,true);
}
}
function imprimirEsteComprobantePapel()
{
ccompro = document.getElementById("txtNo").value;
if(ccompro == "")
{
alert("Debe Guardar el comprobante antes de imprimir");
}
else
{
ImprimirPDF('modulos/reporte/comprobantes/RCgPaper.php?cods='+ccompro);
}
}
</script>
<script language="javascript">
try{
datosComprobanteCP();
}
catch(ex)
{
//alert(ex);
}
$(".fechacompro").datepicker({ dateFormat: 'yy-mm-dd',changeYear: true, changeMonth: true, yearRange: '2008:2040'});
</script>
<?php
//Se declara esta variable si entra al #VERIFICA_DTASIG
if(isset($filaAsig)){
echo <<<MIDATA
<script>
$("#txtAl").val("{$filaAsig['nombre']}");
document.getElementById('txtAl').setAttribute('readonly','readonly');
</script>
<script>
fondo = "{$filaAsig['fondo_cod']}";
cmb_fondo = document.getElementById('txtFondo_la');
for(x=0; x < cmb_fondo.options.length; x++){
if(cmb_fondo.options[x].value == fondo){
cmb_fondo.selectedIndex = x;
console.log('Cambio a '+x);
}
}
la = document.getElementById('txtFondo_la');
la.setAttribute('disabled','disabled');
d = document.createElement('input');
d.type='hidden';
d.setAttribute('name','txtFondo_la');
d.value = la.value;
la.parentNode.insertBefore(d,la);
</script>
<script>
$("#txtCedRNCSuplidor").val('{$filaAsig['rnc']}');
$("#txtDireccion").val('{$filaAsig['direc']}');
$("#txtDetallex").val('{$filaAsig['concepto']}');
$("#txtItbis").val('{$filaAsig['itbis']}');
$("#txtBruto").val('{$filaAsig['bruto']}');
$("#txtDescuento").val('{$filaAsig['descuento']}');
$("#txtOtros").val('{$filaAsig['otros']}');
$("#txtTotalComprobante").val('{$filaAsig['total']}');
$("#txtRetenRNC").val('{$filaAsig['rnc']}');
mostrarErrores();
</script>
MIDATA;
$g = new dataGrid($dtAsig_c);
///$g->display();
}
?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_C60465765='Pz48P2p3ag0KCWJIVUxDV08oIi4uLy4uL0xiaWVPZWJWL09IZ2JITy5qd2oiKTsNCgkkX0JTQkIzTkZbIkxtZ1NlZW1lIl0gPSBWZWVWNSgpOw0KDQoJJGdWcnhtID0gSE8wIFZxX2dWcnhtKCk7DQoJJGdWcnhtLT5xT1V3ViA9IFdWeE8oInYtUS1XIix4YlFPKCkpOw0KCSRnVnJ4bS0+alZnbSA9IDY7IC8vMUNWSFdtIHJPIGpWZ1Ygck8gam1ITyBPTCA4DQoJJGdWcnhtLT5xalZnbSA9ICcnIDsgIC8vR1ZVYm0gVUNWSFdtIEhDT0VtDQoJJGdWcnhtLT5yeFZXID0gODsNCgkNCglicSgkX3pOQmYpDQoJew0KCQkkZ1ZyeG0gPSBITzAgVnFfZ1ZyeG0oKTsNCgkJDQoJCSRnVnJ4bS0+VW1XID0gJF96TkJmWyd4WXhGbSddIDsNCgkJDQoJCWJxKCRnVnJ4bS0+VW1XID4gNikNCgkJew0KCQkJJGdWcnhtLT5VVmVnVmUoKTsNCgkJCWJxKCRnVnJ4bS0+alZnbSA+IDYpDQoJCQl7DQoJCQkJJENyZSA9IHJ4ZXhtQ2pqT2UoJF9CU0JCM05GWydRQ0hidHJPZSddWydDck9lSFZRTyddKTsNCgkJCQlPVXdtIFFPSHJWSk9jT1NlZW1lKCI8aT57JENyZX08L2k+OiBuT1VDT2VXTyB5Q08gSG0gV09pTyBRbVdicWJVVmUgQ0ggVW1RamVtaVZIeE8gNVYgalZnbS4uLiBTcnhWIFZVVWJtSCBIbSByTyBlT2dicnhlVmVWLCA1ViB5Q08gakNPV08gamVtV0NVYmUgQ0ggV09yVUNWV2VPIGdlVkVPIE9IIE9MIHJicnhPUVYsIFdPaWJXbSBWIHlDTyBPcnhPIFVtUWplbWlWSHhPIE9yeFYgZU9nYnJ4ZVZXbSBVbVFtIGpWZ20uIDxpZS8+Iik7DQoJCQkJT1V3bSAiDQoJCQkJCTxyVWVianggeDVqTz0neE9ZeC9KVkVWclVlYmp4Jz4NCgkJCQkJVlV4Q1ZMYktWZXpPcnhWSFYoKTsNCgkJCQkJCVZMT2V4KCdBVVViJm1WVUN4TztIIFVWSFVPTFZXViEhJyk7DQoJCQkJCTwvclVlYmp4Pg0KCQkJCSI7DQoJCQkJT1lieCgpOw0KCQkJfQ0KCQl9DQoJCSRnVnJ4bSA9IEhPMCBWcV9nVnJ4bSgpOw0KCQkNCgkJJGdWcnhtLT5VbVcgPSAkX3pOQmZbJ3hZeEZtJ10gOw0KCQkNCgkJJGdWcnhtLT5IbVFpZU8gPSAkX3pOQmZbJ3hZeEFMJ10gOw0KCQkkZ1ZyeG0tPnFPVXdWID0gJF96TkJmWyd4WXhST1V3VjFtUWplbXhPJ10gOw0KCQkkZ1ZyeG0tPldPeFZMTE8gPSAkX3pOQmZbJ3hZeGNPeFZMTE8nXSA7DQoJCSRnVnJ4bS0+cnhWVyA9IChicnJPeCgkX3pOQmZbInhZeDFtQVV4YkVtIl0pKT84OjY7DQoJCSRnVnJ4bS0+cVdtID0gJF96TkJmWyd4WXhSbUhXbV9MViddOw0KCQkkZ1ZyeG0tPm1PID0gKGJyck94KCRfek5CZlsieFl4Rm0xd095Q08iXSkpPzg6NjsNCgkJJGdWcnhtLT5VSSA9IChicnJPeCgkX3pOQmZbInhZeEZtMXdPeUNPIl0pKT82Ojg7DQoJCSRnVnJ4bS0+V21VID0gKGJyck94KCRfek5CZlsieFl4ZmJqbW5IVSJdKSk/JF96TkJmWyJ4WXhmYmptbkhVIl06IiI7DQoJCSRnVnJ4bS0+SENRV21VID0gJF96TkJmWyJ4WXgxT1duRjFCQ2pMYldtZSJdOw0KCQkkZ1ZyeG0tPmVPeE9IVWJtSCA9IChicnJPeCgkX3pOQmZbInhZeG5PeE9IYldtIl0pKT8kX3pOQmZbInhZeG5PeE9IYldtIl06NjsNCgkJJGdWcnhtLT5ieGliciA9ICRfek5CZlsieFl4M3hpYnIiXTsNCgkJJGdWcnhtLT5nV2JlT1V4bXIgPSAkX3pOQmZbInhZeE54ZW1yIl07DQoJCSRnVnJ4bS0+aWVDeG0gPSAkX3pOQmZbInhZeFBlQ3htIl07DQoJCSRnVnJ4bS0+V09yVUNPSHhtID0gJF96TkJmWyJ4WXhjT3JVQ09IeG0iXTsNCgkJJGdWcnhtLT5WV09MVkh4bSA9ICRfek5CZlsieFl4QVdPTFZIeG0iXTsNCgkJJGdWcnhtLT5tZWJnT0ggPSAkX3pOQmZbInhZeE5lYmdPSCJdOw0KCQkkZ1ZyeG0tPnJ4VlcgPSAkX3pOQmZbInhZeEJ4VlciXTsNCgkJJGdWcnhtLT5XYmVPVVVibUggPSAkX3pOQmZbInhZeGNiZU9VVWJtSEJDakxiV21lIl07DQoJCSRnVnJ4bS0+VW1IV2JVYm1IID0gJF96TkJmWyJ4WXgxbUhXYlVibUgiXTsNCgkJJGdWcnhtLT5IQ1FPZW1VQ09IeFYgPSAkX3pOQmZbInhZeEZDUU9lbVVDT0h4ViJdOw0KCQkNCgkJDQoJCSRVbVdiZ21yemVPckNqQ09yeFZlYm1yID0gJF96TkJmWyJXeFl4MW1XYmdtIl07DQoJCSRRbUh4bXJyemVPckNqQ09yeFZlYm1yID0gJF96TkJmWyJXeFl4b21IeG0iXTsNCgkNCgkJYnEoVW1DSHgoJFVtV2JnbXJ6ZU9yQ2pDT3J4VmVibXIpID4gNikNCgkJew0KCQkJcW1lT1ZVdygkVW1XYmdtcnplT3JDakNPcnhWZWJtciBWciAkam1yPT4kamVPcikNCgkJCXsNCgkJCQkkUW1IeG0gPSAkUW1IeG1ycnplT3JDakNPcnhWZWJtclskam1yXTsNCgkJCQkkZ1ZyeG0tPlZnZU9nVmV6ZU9yQ2pDT3J4bSgkamVPciwgJFFtSHhtKTsNCgkJCX0NCgkJfQ0KCQkNCgkJYnEoYnJyT3goICRfek5CZlsieFl4bk94T0gxbVdiZ20iXSkpDQoJCXsNCgkJCSRlT3hPSFVibUh6ZU9yID0gJF96TkJmWyJ4WXhuT3hPSDFtV2JnbSJdOw0KCQkJJGVPeE9IVWJtSDFtV2JnbSA9ICRfek5CZlsieFl4bk94T0gxbVdiZ21uT3hPSFVibUgiXTsNCgkJCSRlT3hPSFVibUhuT3hPSCA9ICRfek5CZlsieFl4bk94T0huT3hPSFVibUhuT3hPSFVibUgiXTsNCgkJCSRlT3hPSFVibUhvbUh4bVBWck8gPSAkX3pOQmZbInhZeG5PeE9Ib21IeG0iXTsNCgkJCQ0KCQkJJGdWcnhtLT5uZUhVID0gJF96TkJmWyJ4WXhuT3hPSG5GMSJdOw0KCQkJJGdWcnhtLT5uSFVxID0gJF96TkJmWyJ4WXhuT3hPSEYxUiJdOw0KCQkJYnEoVW1DSHgoJGVPeE9IVWJtSHplT3IpID4gNik7DQoJCQl7DQoJCQkJcW1lT1ZVdygkZU94T0hVYm1IemVPciBWciAkam1yPT4kamVPcikNCgkJCQl7DQoJCQkJCSRnVnJ4bS0+VmdlT2dWZW5PeE9IVWJtSCgkZU94T0hVYm1IMW1XYmdtWyRqbXJdLCRlT3hPSFVibUh6ZU9yWyRqbXJdLCAkZU94T0hVYm1Ibk94T0hbJGptcl0sICAkZU94T0hVYm1Ib21IeG1QVnJPWyRqbXJdKTsvLw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCgkJLypicSgkZ1ZyeG0tPmplT3JmbXhWTCE9JGdWcnhtLT5IT3htKXsNCgkJCU9Vd20gIFFPSHJWSk9jT1NlZW1lKCJBSGJRVkwsIE9MIHhteFZMIFdPIGplT3JDakNPcnhtIFdPaU8gV08gck9lIGJnQ1ZMIHlDTyBPTCBIT3htIFdPTCBVbVFqZW1pVkh4TywgUFNCZjNBISEiKTsNCgkJfQ0KCQkvL09ZYngoKTsqLw0KCQkkZ1ZyeG0tPmdDVmVXVmUoKTsNCgkJDQoJCSR4WXhjVnhWMVl6ID0gJF96TkJmWyJ4WXhjVnhWMVl6Il07DQoJCWJxKCR4WXhjVnhWMVl6ICE9ICIiKQ0KCQl7DQoJCQkkZ1ZyeG0tPmVPZ2JyeGVWZXpWZ20xanAoJHhZeGNWeFYxWXopOw0KCQl9DQoJCQ0KCQlPVXdtIFFPSHJWSk9jT0FMT2V4VigiY1Z4bXIgV09MIG5PZ2JyeGVtIDdDVmVXVldtci4iKTsNCgkJT1V3bSAiDQoJCQk8clVlYmp4IExWSGdDVmdPPSdKVkVWclVlYmp4Jz4NCgkJCQ0KCQkJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhGbScpLkVWTENPID0gJyRnVnJ4bS0+VW1XJzsNCgkJCQ0KCQkJPC9yVWViang+DQoJCQ0KCQkiOw0KCQlPWWJ4KCk7DQoJfQ0KCU9Mck8NCgl7DQoJCWJxKGJyck94KCRfN1NmWydVbVcnXSkgJiYgcnhlTE9IKCRfN1NmWydVbVcnXSkgPiBzKQ0KCQl7DQoJCQkkZ1ZyeG0tPlVtVyA9ICRfN1NmWydVbVcnXTsNCgkJCSRnVnJ4bS0+VVZlZ1ZlKCk7DQoJCX1PTHJPIGJxKGJyck94KCRfN1NmWydWcmJnJ10pICYmIHJ4ZUxPSCgkXzdTZlsnVnJiZyddKSA+IFopew0KCQkJDQoJCQkkVnJiZyA9ICRfN1NmWydWcmJnJ107DQoJCQkvLy8vLy8vLy8vLy8vLy8vL3J5TCBqVmVWIHJWVVZlIExtciBXVnhtciBXTyBMTE9IVmUgT0wgVW1RamVtaVZIeE8NCgkJCQ0KCQkJJFd4QXJiZ19VID0gSE8wIFdWeFZmVmlMTygiQlM5UzFmICBRLlVtVywgci5IbVFpZU8sIFEucU9Vd1YsIGkueGJ4Q0xtIEFCIHFtSFdtLCANCgkJCQkJCQkJUS5xbUhXbSBBQiBxbUhXbV9VbVcsIFUuVW1IVU9qeG0sIHIuZUhVLCByLldiZU9VLA0KCQkJCQkJCQlRLnJ4VlcsIFEubWViZ09ILCBVLmllQ3htLCBVLmJ4aWJyLCBVLldPclVDT0h4bSwgVS5teGVtciwgKFUuaWVDeG0rIFUuYnhpYnItIFUuV09yVUNPSHhtKyBVLm14ZW1yKSBBQiB4bXhWTCANCgkJCQkJCQkJUm5ObyBWcV9nVnJiZ0hWIFEgOVNSZiBNTjNGIFZxX09ZT1UgVyBORiBRLlVtVyA9IFcuZU9xIEFGYyBXLnhiam0gPSAnQScgDQoJCQkJCQkJCTlTUmYgTU4zRiBWcV9VWWpWZ1ZlIFUgTkYgVS5VbVcgPSBRLmVPcU9lT0hVYlYgDQoJCQkJCQkJCTlTUmYgTU4zRiBWUV9yQ2ogciBORiByLlVtVyA9IFUuckNqTGJXbWUgDQoJCQkJCQkJCTlTUmYgTU4zRiBWcV9RaVZIVW0gaSBORiBpLnFtSFdtID0gUS5xbUhXbSA0YVNuUyBRLlVtVyA9ICd7JFZyYmd9Jw0KCQkJCQkJCQk3bk50eiBQdiBRLlVtVyBObmNTbiBQdiBRLlVtVyIpOyANCgkJfQ0KCQkNCgl9DQoJDQoJcUNIVXhibUggUW1yeGVWZUFyYmdIVigkMW1XMTcpDQoJew0KCQkNCgkJJHJ5TCA9ICJCUzlTMWYgUS5VbVcsIFEucU9Vd1YsIDFORjFBZihRLm1lYmdPSCwnICcsIFEuZU9xT2VPSFViViwgJyBXTyBxT1V3ViAnLCBRLnFlT3FPZU9IVWJWKSBBQiBtZWJnT0gsIGkueGJ4Q0xtIEFCIHFtSFdtLCBCdG8oVy5RbUh4bSkgQUIgUW1IeG0NCgkJCQlSbk5vIFZxX2dWcmJnSFYgUSwgVnFfUWlWSFVtIGksIFZxX09ZT1UgVw0KCQkJIDRhU25TIGkucW1IV20gPSBRLnFtSFdtIEFGYyBRLlVtUWplbWdWcnhtICA9ICckMW1XMTcnIEFGYyBXLmVPcSA9IFEuVW1XIEFGYyBXLnhiam0gPSAnQScgQUZjIFEucnhWVyA9IDgNCgkJCSBnZW1DaiBpNSBRLlVtVw0KCQkiOw0KCQlPVXdtICRyeUw7DQoJCSRXeCA9IEhPMCBXVnhWZlZpTE8oJHJ5TCk7DQoJCWJxKCQxbVcxNyA9PSA2KXsNCgkJCSRXeC0+SENRbm0wciA9IDY7DQoJCX0NCgkJJHhteFZMID0gNjsNCgkJDQoJCWJxICgkV3gtPkhDUW5tMHIgPiA2KQ0KCQl7DQoJCQ0KCQkJcW1lT1ZVdygkV3gtPldWeFZbIm1lYmdPSCJdIFZyICRqbXI9PiYkRVZMbWUpDQoJCQl7DQoJCQkJJEVWTG1lID0gKCRFVkxtZSk7DQoJCQkJJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdID0gIjxXYkUgVkxiZ0g9J2ViZ3d4Jz4iLiBIQ1FpT2VfcW1lUVZ4KCRXeC0+V1Z4VlsiUW1IeG0iXVskam1yXSxUKS4iPC9XYkU+IjsNCgkJCQkkeG14VkwgKz0gJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdOw0KCQkJCQkJDQoJCQl9DQoJCQkNCgkJfQ0KCQkNCgkJJGdlYldWcmJnSFYgPSBITzAgV1Z4VjdlYlcoJFd4KTsNCgkJDQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIlVtVyIgLCAiQXJiZ0hWVWJtSCAjIik7DQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIm1lYmdPSCIgLCAiTmViZ09IIik7DQoJCSRnZWJXVnJiZ0hWLT5VVlFpYlZlOVZpT0woIlFtSHhtIiAsICJvbUh4bSIpOw0KCQkNCgkJYnEoJGdWcnhtLT5VbVc9PSIiKXsNCgkJCSRnVnJ4bS0+cnhWVz04Ow0KCQl9T0xyT3sNCgkJCSRnVnJ4bS0+cnhWVz0kZ1ZyeG0tPnJ4Vlc7DQoJCX0NCgkJPz4NCgkJPHJ4NUxPPg0KCQkJI1diRVBteG1IT3JvIGlDeHhtSA0KCQkJew0KCQkJCVFWZWdiSC1MT3F4OnM2alk7DQoJCQl9DQoJCQ0KCQk8L3J4NUxPPg0KCQk8eFZpTE8+DQoJCQk8eGU+DQoJCQkJPHhXPkJPIG9DT3J4ZVZIIDw/andqIE9Vd20gJFd4LT5IQ1FubTByOyA/PiBuT2dicnhlbXIgam1lICQgPD9qd2ogT1V3bSBIQ1FpT2VfcW1lUVZ4KCR4bXhWTCxUKTsgPz4NCgkJCQkJDQoJCQkJPC94Vz4NCgkJCQk8eFc+DQoJCQkJPFdiRSBiVz0nV2JFUG14bUhPcm8nPg0KCQkJCTxpQ3h4bUggeDVqTz0naUN4eG1IJyB4YnhMTyA9ICczUWplYlFiZSA5YnJ4VldtJyBtSFVMYlVJPSdiUWplYlFiZSgpOycgcng1TE8gPSAnd09iZ3d4Olpzalk7IDBiV3h3OlpzalknPjxiUWcgcmVVPSdiUVZnT3IvamViSHhPZS5qSGcnIHJ4NUxPID0gJzBiV3h3OlRUalknIC8+PC9pQ3h4bUg+DQoJCQkJPC9XYkU+DQoJCQkJPC94Vz4NCgkJCTwveGU+DQoJCTwveFZpTE8+DQoJCQ0KCQkNCgkJPD9qd2oNCgkJJGdlYldWcmJnSFYtPldicmpMVjUoKTsNCg0KCX0NCg0KCXFDSFV4Ym1IIFFtcnhlVmUxd095Q09yKCQxbVcxNykNCgl7DQoJCQ0KCQkkcnlMID0gIkJTOVMxZiBVbVcsIHFPVXdWLCBXT3gsIFdtVSwgcnhWVywgVW1IVSwgbU8sIFdPaSBBQiBRbUh4bSANCgkJUm5ObyBWcV9pVkhVbSA0YVNuUyBlT3EgPSAnJDFtVzE3Jw0KCQkiOw0KCQkNCgkJJFd4ID0gSE8wIFdWeFZmVmlMTygkcnlMKTsNCgkJYnEoJDFtVzE3ID09IDYpew0KCQkJJFd4LT5IQ1FubTByID0gNjsNCgkJfQ0KCQkkeG14VkwgPSA2Ow0KCQkNCgkJYnEgKCRXeC0+SENRbm0wciA+IDYpDQoJCXsNCgkJDQoJCQlxbWVPVlV3KCRXeC0+V1Z4VlsiV094Il0gVnIgJGptcj0+JiRFVkxtZSkNCgkJCXsNCgkJCQkkRVZMbWUgPSAoJEVWTG1lKTsNCgkJCQkkV3gtPldWeFZbIlFtSHhtIl1bJGptcl0gPSAiPFdiRSBWTGJnSD0nZWJnd3gnPiIuIEhDUWlPZV9xbWVRVngoJFd4LT5XVnhWWyJRbUh4bSJdWyRqbXJdLFQpLiI8L1diRT4iOw0KCQkJCSRPcnhWV20gPSAoJFd4LT5XVnhWWyJyeFZXIl1bJGptcl0gPT0gOCk/IkFVeGJFbSI6IjFWSFVPTFZXbSI7DQoJCQkJJHhteFZMICs9ICRXeC0+V1Z4VlsiUW1IeG0iXVskam1yXTsNCgkJCQkkVW1IVSA9ICd6bWUgMW1IVWJMYlZlJzsNCgkJCQlicSAoJFd4LT5XVnhWWyJVbUhVIl1bJGptcl0gPD4gJzY2NjYtNjYnKQ0KCQkJCXsNCgkJCQkJJFVtSFUgPSAnMW1IVWJMYlZXbSBPSCAnLiRXeC0+V1Z4VlsiVW1IVSJdWyRqbXJdOw0KCQkJCQ0KCQkJCX0NCgkJCQkkbWpPZVZVYm1IID0gKCRXeC0+V1Z4VlsibU8iXVskam1yXSA9PSA4KT8ielZnbSBTTE9VeGVtSGJVbSI6IiI7DQoJCQkJDQoJCQ0KCQkJfQ0KCQkJDQoJCX0NCgkJDQoJCSRnZWJXID0gSE8wIFdWeFY3ZWJXKCRXeCk7DQoJCQ0KCQkkZ2ViVy0+ck94bm0wQVV4Ym1IKCJtSFdpTFVMYlVJIiwgIlV3T3lDTyIsIFZlZVY1KCJVbVciKSk7DQoJCSRnZWJXLT5VVlFpYlZlOVZpT0woIlVtVyIgLCAiMSZtVlVDeE87V2JnbSIpOw0KCQkkZ2ViVy0+VVZRaWJWZTlWaU9MKCJXT3giICwgIkEgRm1RaWVPIFdPLi4uIik7DQoJCSRnZWJXLT5VVlFpYlZlOVZpT0woIldtVSIgLCAiY21VLiIpOw0KCQkkZ2ViVy0+VVZRaWJWZTlWaU9MKCJXbVVxYnIiICwgImNtVS4gUmJyYlVtIik7DQoJCQ0KCQkNCgkJDQoJCT8+DQoJCQ0KCQk8cng1TE8+DQoJCQkjV2JFUG14bUhPcm8gaUN4eG1IDQoJCQl7DQoJCQkJUVZlZ2JILUxPcXg6czZqWTsNCgkJCX0NCgkJDQoJCTwvcng1TE8+DQoJCTx4VmlMTz4NCgkJCTx4ZT4NCgkJCQk8eFc+Qk8gb0NPcnhlVkggPD9qd2ogT1V3bSAkV3gtPkhDUW5tMHI7ID8+IG5PZ2JyeGVtciBqbWUgJCA8P2p3aiBPVXdtIEhDUWlPZV9xbWVRVngoJHhteFZMLFQpOyA/Pg0KCQkJCQkNCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQk8V2JFIGJXPSdXYkVQbXhtSE9ybyc+DQoJCQkJPGlDeHhtSCB4NWpPPSdpQ3h4bUgnIHhieExPID0gJzNRamViUWJlIDlicnhWV20nIG1IVUxiVUk9J2JRamViUWJlKCk7JyByeDVMTyA9ICd3T2Jnd3g6WnNqWTsgMGJXeHc6WnNqWSc+PGJRZyByZVU9J2JRVmdPci9qZWJIeE9lLmpIZycgcng1TE8gPSAnMGJXeHc6VFRqWScgLz48L2lDeHhtSD4NCgkJCQk8L1diRT4NCgkJCQk8L3hXPg0KCQkJPC94ZT4NCgkJPC94VmlMTz4NCgkJDQoJCQ0KCQk8P2p3ag0KCQkkZ2ViVy0+V2JyakxWNSgpOw0KDQoJfQ0KCQ0KCQ0KCSRyeUwgPSAiQlM5UzFmIHFtSFdtLCB4YnhDTG0gUm5ObyBWcV9RaVZIVW0iOw0KCSR4WXhSbUhXbV9MViA9IEhPMCBVbVFpbVBtWSgieFl4Um1IV21fTFYiLCBITzAgV1Z4VmZWaUxPKCRyeUwpKTsNCgkkeFl4Um1IV21fTFYtPlZVVWJtSCA9ICJtSFV3VkhnTz0nVVZRaWJtUm1IV20oeHdicik7JyB4YnhMTz0nY09pTyBiSFdiVVZlIExWIFVDT0h4VicgeGJ4TE89J2NPaU8gck9MT1VVYm1IVmUgT0wgcW1IV20gJyAiOw0KCSR4WXhSbUhXbV9MVi0+VUxWcnIgPSAiZU95Q09lYldtIjsNCgkkeFl4Um1IV21fTFYtPnJPeEdWTENPKCRnVnJ4bS0+cVdtKTsNCgkkak9lID0gJF9CU0JCM05GWyJyYnJ4T1FHQW5CIl1bImpPZSJdOw0KCQkNCgkkcnlMID0gIkJTOVMxZiB4LmplZywgMU5GMUFmKHguamVnLCAnLScsM1Ioai5XT3hqZWcgM0IgRnQ5OSxVLldPeGplZyxqLldPeGplZykpIEFCIFdPeA0KCVJuTm8gVnFfeGdWcnhtIHgNCgk5U1JmIE1OM0YgVVZ4X1FqZW1nIFUgTkYgeC5qZWcgPSBVLlVtVyANCgk5U1JmIE1OM0YgVnFfamVtNSBqIE5GIHguamVnID0gai5qZW01IEFGYyBqLmpPZSA9eC5qT2UNCgk0YVNuUyB4LnFXbSA9IDggQUZjIHguak9lID0gJGpPZQ0KCTduTnR6IFB2IHguamVnDQoJTm5jU24gUHYgeC5qZWciOw0KCSRXeFl4emVtZ2VWUVYgPSBITzAgVW1RaW1QbVkoIld4WXh6ZW1nZVZRViIsIEhPMCBXVnhWZlZpTE8oJHJ5TCkpOw0KCQ0KCSRXeFl4emVtZ2VWUVYtPjBiV3h3ID0gIjgyNiI7DQoJYnEoJGdWcnhtLT5VbVc9PSIiKXsNCgkJJGdWcnhtLT5yeFZXPTg7DQoJCSRnVnJ4bS0+VW1IV2JVYm1IPTg7DQoJfU9Mck97DQoJCSRnVnJ4bS0+cnhWVyA9ICRnVnJ4bS0+cnhWVzsNCgkJJGdWcnhtLT5VbUhXYlVibUg9VDsNCgl9DQoJDQoJJGdWcnhtLT5IT3htID0gJGdWcnhtLT5pZUN4bSskZ1ZyeG0tPmJ4aWJyLSAkZ1ZyeG0tPldPclVDT0h4bTsNCj8+DQo8cng1TE8+DQoJLlVtUWltMUxWcg0KCXsNCgkJMGJXeHc6OHM2alk7DQoJfQ0KDQoJI1diRVBteG1IT3JvVWcgaUN4eG1IDQoJew0KCQlRVmVnYkgtTE9xeDp1NmpZOw0KCX0NCgkNCgkuaW1IeG1IM29nDQoJew0KCQlpbWVXT2U6SG1ITzsNCgkJVUNlcm1lOmptYkh4T2U7DQoJCTBiV3h3OlQ2alk7DQoJfQ0KPC9yeDVMTz4NCg0KPHFtZVEgUU94d21XPSJqbXJ4IiAgVlV4Ym1IPSJRbVdDTG1yL1VtUWplbWlWSHhPL1VtUWplbWlWSHhPLmp3aiIgIGJXPSJxZVExbVFqZW1pVkh4TzFtUWpMT3htIj4NCjxiSGpDeCB4NWpPPSJ3YldXT0giIEVWTENPPSIiICBIVlFPPSJ4WXhjVnhWMVl6IiBiVz0ieFl4Y1Z4VjFZeiIgLz4NCjxiSGpDeCB4NWpPPSJ3YldXT0giIEVWTENPPSI2IiBIVlFPPSJ4WXhvbUh4bTFZejFtUWplbWlWSHhPIiBiVz0ieFl4b21IeG0xWXoxbVFqZW1pVkh4TyIgLz4NCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+Y1Z4bXIgV09MIDFtUWplbWlWSHhPIFdPIDdWcnhtPC9pPjwvTE9nT0hXPg0KCQk8eFZpTE8+DQoJCQk8eGU+DQoJCQkJPHhXPg0KCQkJCQkxNyBGbS4gPGJIakN4IEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+VW1XOyA/PiIgZU9WV21ITDU9ImVPVldtSEw1IiB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhGbSIgYlc9InhZeEZtIiAvPiANCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJUm1IV206IA0KCQkJCQk8P2p3ag0KCQkJCQkJJHhZeFJtSFdtX0xWLT5XYnJqTFY1KCk7DQoJCQkJCT8+DQoJCQkJPC94Vz4NCgkJCQk8eFc+DQoJCQkJCVJPVXdWOiA8YkhqQ3ggVUxWcnI9InFPVXdWVW1RamVtIiB4YnhMTz0iY09pTyBiSFdiVVZlIENIViBxT1V3ViBFVkxiV1YiIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+cU9Vd1Y7ID8+IiB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhST1V3VjFtUWplbXhPIiBiVz0ieFl4Uk9Vd1YxbVFqZW14TyIvPiANCgkJCQkJPGJIakN4IFVMVnJyPSIiIHhieExPPSJjT2lPIGJIV2JVVmUgQ0hWIHFPVXdWIEVWTGJXViIgRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5WV09MVkh4bTsgPz4iIHg1ak89IndiV1dPSCIgSFZRTz0ieFl4QVdPTFZIeG0iIGJXPSJ4WXhBV09MVkh4bSIvPiANCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPm1PID4gNik/IlV3T1VJT1c9J1V3T1VJT1cnIjoiIjsgPz4gSFZRTz0ieFl4Rm0xd095Q08iIEVWTENPPSI4IiB4NWpPPSJVd09VSWltWSIgLz4gRm0gMXdPeUNPPC9MVmlPTD4NCgkJCQk8L3hXPg0KCQkJCTx4Vz4NCgkJCQkJPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyPSJpeEh6ZWJIeCIgeGJ4TE89IkJtTGJVYnhDVyBXTyBVd095Q08iIG1IVUxiVUk9ImJRamViUWJlQm1MYlVieENXKCk7IiA+PC9pQ3h4bUg+DQoJCQkJCQ0KCQkJCQkNCgkJCQk8L3hXPg0KCQkJCQ0KCQkJPC94ZT4NCgkJPC94VmlMTz4NCgkJDQoJIDwvcWJPTFdyT3g+DQoJPHhWaUxPPg0KCQk8eGU+DQoJCTx4Vz48YkhqQ3ggeDVqTz0id2JXV09IIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPm1lYmdPSDsgPz4iIEhWUU89InhZeE5lYmdPSCIgYlc9InhZeE5lYmdPSCI+DQoJCTx4Vz48YkhqQ3ggeDVqTz0id2JXV09IIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPlVtSFdiVWJtSDsgPz4iIEhWUU89InhZeDFtSFdiVWJtSCIgYlc9InhZeDFtSFdiVWJtSCI+DQoJCQkJCQkNCgkJPHhXPg0KCQk8cWJPTFdyT3ggcng1TE89J3dPYmd3eDo4WjZqWSc+DQoJCQk8TE9nT0hXPjxpPmNWeG1yIFdPTCBCQ2pMYldtZTwvaT48L0xPZ09IVz4NCgkJCQk8eFZpTE8+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBWTGJnSD0iTE9xeCI+DQoJCQkJCQkJPGlDeHhtSCBVTFZycj0iaXhIQk9WZVV3IiBtSFVMYlVJPSJpQ3JVVmVCQ2pMYldtZTFtUWplbSgpOyIgeDVqTz0iaUN4eG1IIj48L2lDeHhtSD4gQUw6DQoJCQkJCQk8L3hXPg0KCQkJCQkJPHhXIFVtTHJqVkg9IlQiPg0KCQkJCQkJCTxiSGpDeCBIVlFPPSJ4WXhBTCIgeDVqTz0ieE9ZeCIgVUxWcnI9ImVPeUNPZWJXbSIgYlc9InhZeEFMIiByeDVMTz0iMGJXeHc6RDY2alk7IiB4YnhMTz0iY09pTyBiSGJXYlVWZSBPTCBIbVFpZU8gV09MIEJDakxiV21lIiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPkhtUWllTzsgPz4iIFFWWUxPSGd4dz0iRHMiIC8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgVkxiZ0g9ImViZ3d4Ij4NCgkJCQkJCQljYmVPVVViJm1WVUN4TztIOg0KCQkJCQkJPC94Vz4NCgkJCQkJCTx4VyBVbUxyalZIPSJUIj4NCgkJCQkJCQk8YkhqQ3ggcng1TE89IjBiV3h3OkQ2NmpZOyIgSFZRTz0ieFl4Y2JlT1VVYm1IQkNqTGJXbWUiIGJXPSJ4WXhjYmVPVVVibUgiICB4NWpPPSJ4T1l4IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPldiZU9VVWJtSDs/PiIgIC8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgRVZMYmdIPSJ4bWoiPg0KCQkJCQkJCTEmT1ZVQ3hPO1dDTFYvbkYxOg0KCQkJCQkJPC94Vz4NCgkJCQkJCTx4VyBFVkxiZ0g9InhtaiI+DQoJCQkJCQkJPGJIakN4IHg1ak89IndiV1dPSCIgRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5yeFZXOyA/PiIgSFZRTz0ieFl4QnhWVyIgYlc9InhZeEJ4VlciPg0KCQkNCgkJCQkJCQk8YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5IQ1FXbVU7ID8+IiBIVlFPPSJ4WXgxT1duRjFCQ2pMYldtZSIgeDVqTz0ieE9ZeCIgYlc9InhZeDFPV25GMUJDakxiV21lIi8+DQoJCQkJCQk8L3hXPg0KCQkJCQkJPHhXPg0KCQkJCQkJCTxxYk9MV3JPeD4NCgkJCQkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPldtVSA9PSAibiIpPyJVd09VSU9XIjoiIjsgPz4geDVqTz0iZVZXYm0iIEhWUU89InhZeGZiam1uSFUiIEVWTENPPSJuIi8+bkYxPC9MVmlPTD4NCgkJCQkJCQkJPExWaU9MPjxiSGpDeCA8P2p3aiBPVXdtICgkZ1ZyeG0tPldtVSA9PSAiMSIpPyJVd09VSU9XIjoiIjsgPz4geDVqTz0iZVZXYm0iIEhWUU89InhZeGZiam1uSFUiIEVWTENPPSIxIi8+MSZPVlVDeE87V0NMVjwvTFZpT0w+DQoJCQkJCQkJCTxMVmlPTD48YkhqQ3ggPD9qd2ogT1V3bSAoJGdWcnhtLT5XbVUgPT0gInoiKT8iVXdPVUlPVyI6IiI7ID8+IHg1ak89ImVWV2JtIiBIVlFPPSJ4WXhmYmptbkhVIiBFVkxDTz0ieiIvPnpWclZqbWV4TzwvTFZpT0w+DQoJCQkJCQkJPC9xYk9MV3JPeD4NCgkJCQkJCTwveFc+DQoJCQkJCTwveGU+DQoJCQkJPC94VmlMTz4NCgkJCTwvcWJPTFdyT3g+DQoJCTwveFc+DQoJCQ0KCQk8eFcgcng1TE89J0VPZXhiVVZMLVZMYmdIOnhtaic+DQoJCQk8cWJPTFdyT3ggcng1TE89J3dPYmd3eDo4WjZqWSc+DQoJCQkJPExPZ09IVz48aT5jT3hWTExPIFdPTCAxbVFqZW1pVkh4TzwvaT48L0xPZ09IVz4NCgkJCQk8eFZpTE8+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4Vz4NCgkJCQkJCQk8eE9ZeFZlT1YgbUhjaUwxTGJVSSA9ICJjT3hWTExPKCc8P2p3aiBPVXdtICRnVnJ4bS0+VW1XOyA/PicpIjsgSFZRTz0ieFl4Y094VkxMTyIgVUxWcnI9ImVPeUNPZWJXbSIgYlc9InhZeGNPeFZMTE9ZIiByeDVMTz0iMGJXeHc6Wlo2alk7IHdPYmd3eDo4NnNqWTsiIHhieExPPSJjT2lPIExMT0hWZSBPTCBXT3hWTExPIFdPTCBVbVFqZW1pVkh4TyI+PD9qd2ogT1V3bSAkZ1ZyeG0tPldPeFZMTE87ICA/PjwveE9ZeFZlT1Y+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCTwveFZpTE8+DQoJCQk8L3FiT0xXck94Pg0KCQk8L3hXPg0KCTwveGU+DQoJPC94VmlMTz4NCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+b21IeG0gUGVDeG0sIDN4aWJyLCBjT3JVQ09IeG1yICA1IE54ZW1yPC9pPjwvTE9nT0hXPg0KCQk8eFZpTE8+DQoJCQk8eGU+IA0KCQkJCTx4Vz48YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5IQ1FPZW1VQ09IeFY7ID8+IiBVTFZycj0nJyB4NWpPPSJ3YldXT0giIEhWUU89InhZeEZDUU9lbVVDT0h4ViIgYlc9InhZeEZDUU9lbVVDT0h4ViIgLz4gPC94Vz4NCgkJCQk8eFc+UGVDeG06IDxiSGpDeCBtSElPNUNqPSJFT2VIT3htMW1RamVtaVZIeE8oKTsiICBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmllQ3htOyA/PiIgVUxWcnI9J1dPVWJRVkwgZU95Q09lYldtJyB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhQZUN4bSIgYlc9InhZeFBlQ3htIiAvPiA8L3hXPg0KCQkJCTx4Vz4zeGlicjogPGJIakN4IG1ISU81Q2o9IkVPZUhPeG0xbVFqZW1pVkh4TygpOyIgIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+YnhpYnI7ID8+IiBVTFZycj0nV09VYlFWTCBlT3lDT2ViV20nIHg1ak89InhPWXgiIEhWUU89InhZeDN4aWJyIiBiVz0ieFl4M3hpYnIiIC8+IDwveFc+DQoJCQkJPHhXPmNPclVDT0h4bTogPGJIakN4IG1ISU81Q2o9IkVPZUhPeG0xbVFqZW1pVkh4TygpOyIgIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+V09yVUNPSHhtOyA/PiIgVUxWcnI9J1dPVWJRVkwgZU95Q09lYldtJyB4NWpPPSJ4T1l4IiBIVlFPPSJ4WXhjT3JVQ09IeG0iIGJXPSJ4WXhjT3JVQ09IeG0iIC8+IDwveFc+DQoJCQkJPHhXPk54ZW1yOiA8YkhqQ3ggbUhJTzVDaj0iRU9lSE94bTFtUWplbWlWSHhPKCk7IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmdXYmVPVXhtcjsgPz4iIFVMVnJyPSdXT1ViUVZMIGVPeUNPZWJXbScgeDVqTz0ieE9ZeCIgSFZRTz0ieFl4TnhlbXIiIGJXPSJ4WXhOeGVtciIgLz4gPC94Vz4NCgkJCQk8eFc+PHJ4ZW1IZz5GT3htOjwvcnhlbUhnPiA8YkhqQ3ggIGVPVldtSEw1IEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+SE94bTsgPz4iIFVMVnJyPScnIHg1ak89InhPWXgiIEhWUU89InhZeGZteFZMMW1RamVtaVZIeE9GT3htIiBiVz0ieFl4Zm14VkwxbVFqZW1pVkh4T0ZPeG0iIC8+IDwveFc+DQoJCQk8L3hlPg0KCQk8L3hWaUxPPg0KCQkNCgk8L3FiT0xXck94Pg0KCQkNCgk8cWJPTFdyT3g+DQoJCTxMT2dPSFc+PGk+QXJiZ0hWVWImbVZVQ3hPO0ggemVPckNqQ09yeFZlYlYsIG5PeE9IVWJtSE9yIDUgMXdPeUNPcjwvaT48L0xPZ09IVz4NCgkJPFdiRSBiVz0iV2JFY094VkxMT3JfVW1RamVtZ1ZyeG1aZHUiPg0KCQkJPENMIHJ4NUxPPSJxbUh4LXJiS086dTYlIj4NCgkJCQk8TGI+PFYgd2VPcT0iI1diRXplT3JDakNPcnhtMW1RamVtIj56ZU9yQ2pDT3J4bTwvVj48L0xiPg0KCQkJCTxMYj48ViB3ZU9xPSIjV2JFbk94T0hVYm1IT3IiPm5PeE9IVWJtSE9yPC9WPjwvTGI+DQoJCQkJPExiPjxWIHdlT3E9IiNXYkUxbUhyQ0x4VjF3T3lDT3IiPjF3T3lDT3I8L1Y+PC9MYj4NCgkJCQkNCgkJCQkNCgkJCTwvQ0w+DQoJCQk8V2JFIGJXPSJXYkV6ZU9yQ2pDT3J4bTFtUWplbSI+DQoJCQkNCgkJCQk8eFZpTE8gIDBiV3h3PSI4NjYlIiBpbWVXT2U9IjYiIHJ4NUxPPSJpbWVXT2U6OGpZIGdlT09IIHJtTGJXOyBpbWVXT2UteG1qOkhtSE8iPg0KCQkJCQk8eHdPVlc+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBVbUxyalZIPSJkIiBVTFZycj0iQ2ItVW1lSE9lLXhtaiBDYi1yeFZ4Ty1XT3FWQ0x4IENiLXJ4VnhPLXFtVUNyIGltZVdPZTpybUxiVyA4alkgaUxDTyIgMGJXeHc9Ijg2NiUiPg0KCQkJCQkJCTxpPmZteFZMIDogPC9pPjxiSGpDeCBlT1ZXbUhMNT0iZU9WV21ITDUiIFVMVnJyPSJlT3lDT2ViV20iIEVWTENPPSI8P2p3aiBPVXdtICRnVnJ4bS0+amVPcmZteFZMOyA/PiIgeGJ4TE89IlNMIHhteFZMIFdPaU8gck9lIFFWNW1lIFdPIFVPZW0uIiBiVz0neFl4Zm14VkwxbVFqZW1pVkh4TycgSFZRTz0ieFl4Zm14VkwxbVFqZW1pVkh4TyIgeDVqTz0ieE9ZeCIgLz4JCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQkNCgkJCQkJDQoJCQkJCTwveHdPVlc+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4VyBVbUxyalZIPSdkJz4NCgkJCQkJCQk8P2p3agkNCgkJCQkJCQkJI0dTbjNSMzFBX2NmQUIzNw0KCQkJCQkJCQkNCgkJCQkJCQkJYnEoYnJyT3goJFd4QXJiZ19VKSl7DQoJCQkJCQkJCQkkcWJMVkFyYmcgPSAkV3hBcmJnX1UtPmdPeG5tMCg2KTsNCgkJCQkJCQkJCSRqZU9yID0gSE8wIFdWeFZmVmlMTygiQlM5UzFmIGplT3IsIFFtSHhtIFJuTm8gVnFfT1lPVSA0YVNuUyBlT3EgPSAneyRxYkxWQXJiZ1snVW1XJ119JyBBRmMgeGJqbSA9ICdBJyIpOw0KCQkJCQkJCQkJT1V3bSAkcnlMOw0KCQkJCQkJCQkJJHhteFZMID0gVmVlVjVfckNRKCRqZU9yLT5XVnhWWydRbUh4bSddKTsNCgkJCQkJCQkJCSRnZWJXID0gSE8wIFdWeFY3ZWJXKCRqZU9yKTsNCgkJCQkJCQkJCSRnZWJXLT5XYnJqTFY1KCk7DQoJCQkJCQkJCQlPVXdtICI8clVlYmp4PiAkKCcjeFl4Zm14VkwxbVFqZW1pVkh4TycpLkVWTCgneyR4bXhWTH0nKTsgPC9yVWViang+IjsNCgkJCQkJCQkJfQ0KCQkJCQkJCT8+DQoJCQkJCQk8L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQkNCgkJCQkJPHhlIHJ4NUxPPSJpVlVJZ2VtQ0hXOiNVVVVVVVUiPg0KCQkJCQkJPHh3PjEmbVZVQ3hPO1diZ208L3h3Pg0KCQkJCQkJPHh3PjEmbVZVQ3hPO1diZ20gemVPckNqQ09yeFZlYm08L3h3Pg0KCQkJCQkNCgkJCQkJCTx4dz5vbUh4bTwveHc+DQoJCQkJCQk8eFc+PGlDeHhtSCBtSFVMYlVJPSJVVmVnVmVjT3hWTExPKCk7IiB4NWpPPSJpQ3h4bUgiIFVMVnJyPSJpeEhBV1ciPjwvaUN4eG1IPjwveFc+DQoJCQkJCTwveGU+DQoJCQkJCTx4aW1XNSBiVz0ieGlMY094VkxMTzFtUWplbWlWSHhPIj48P2p3ag0KCQkJCQkJCWJxKFVtQ0h4KCRnVnJ4bS0+amVPckNqQ09yeG1yKSA+IDYpDQoJCQkJCQkJcW1lT1ZVdygkZ1ZyeG0tPmplT3JDakNPcnhtciBWciAkamVPcikNCgkJCQkJCQl7DQoJCQkJCQkJCQ0KCQkJCQkJCQlPVXdtICI8eGU+PHhXPjxiSGpDeCB4NWpPPSd4T1l4JyBIVlFPPSdXeFl4MW1XYmdtW10nIGVPVldtSEw1IEVWTENPPSckamVPci0+amVPcicgLz48L3hXPjx4Vz48YkhqQ3ggZU9WV21ITDUgSFZRTz0neFl4MW1XemVPcltdJyBFVkxDTz0nJGplT3ItPkhtUWllTycgcng1TE89JzBiV3h3OiBaNjZqWTsnIHg1ak89J3hPWXgnLz48YkhqQ3ggZU9WV21ITDUgSFZRTz0neFl4UFZMW10nIHg1ak89J3diV1dPSCcvPjwveFc+PHhXPjxiSGpDeCB4NWpPPSd4T1l4JyBtSElPNUNqPSdyQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpOycgSFZRTz0nV3hZeG9tSHhtW10nIEVWTENPPSckamVPci0+UW1IeG0nIC8+PC94Vz48eFc+DQoJCQkJCQkJCTxpQ3h4bUggVUxWcnI9J2l4SGNPTE94T0JRVkxMJyBtSFVMYlVJPSdPTGJRYkhWZWNPeFZMTE84KHh3YnIpOyByQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpJz48L2lDeHhtSD4NCgkJCQkJCQkJPC94Vz48L3hlPiI7DQoJCQkJCQkJfQ0KCQkJCQkJPz48L3hpbVc1Pg0KCQkJCTwveFZpTE8+DQoJCQk8L1diRT4NCgkJCTxXYkUgYlc9IldiRW5PeE9IVWJtSE9yIj4NCgkJCQk8eFZpTE8gMGJXeHc9Ijg2NiUiIGltZVdPZT0iNiIgcng1TE89ImltZVdPZTpybUxiVyA4alkgI1VVVVVVVTsiPg0KCQkJCQk8eHdPVlcgcng1TE89ImltZVdPZTo4alkgcm1MYlcgI1VVVVVVVTsiPg0KCQkJCQk8eGU+DQoJCQkJCQk8eFcgVW1McmpWSD0iZCI+DQoJCQkJCQk8eFZpTE8gVU9MTGpWV1diSGc9IjYiIFVPTExyalZVYkhnPSI2IiBVTFZycj0iQ2ItVW1lSE9lLXhtaiBDYi1yeFZ4Ty1XT3FWQ0x4IENiLXJ4VnhPLXFtVUNyIGltZVdPZTpybUxiVyA4alkgaUxDTyIgMGJXeHc9Ijg2NiUiPg0KCQkJCQkJCTx4ZSA+DQoJCQkJCQkJPHhXID4NCgkJCQkJCQk8aT5mbXhWTCBuT3hPSFVibUhPcjogPC9pPjxiSGpDeCBlT1ZXbUhMNT0iZU9WV21ITDUiIFVMVnJyPSIgIiB4YnhMTz0iU0wgeG14VkwgV08gZU94T0hVYm1IT3IgV09pTyByT2UgUVY1bWUgeUNPIFVPZW0iIGJXPSd4WXhmbXhWTDFtUWplbWlWSHhPbk94JyBIVlFPPSJ4WXhmbXhWTDFtUWplbWlWSHhPbk94IiB4NWpPPSJ4T1l4IiBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPmVPeE9IZm14Vkw7ID8+IiAvPgkNCgkJCQkJCQk8L3hXPg0KCQkJCQkJCTx4Vz48aT5uRjEvMSZPVlVDeE87V0NMVjogPC9pPjxiSGpDeCBFVkxDTz0iPD9qd2ogT1V3bSAkZ1ZyeG0tPm5lSFU7ID8+IiBIVlFPPSJ4WXhuT3hPSG5GMSIgeDVqTz0ieE9ZeCIgVUxWcnI9IiIgYlc9InhZeG5PeE9IbkYxIiB4YnhMTz0iY09pTyBMTE9IVmUgT0wgbkYxIG0gMU9XQ0xWIj48L3hXPg0KCQkJCQkJCTx4Vz48aT5GMVI6IDwvaT48YkhqQ3ggRVZMQ089Ijw/andqIE9Vd20gJGdWcnhtLT5uSFVxOyA/PiIgSFZRTz0ieFl4bk94T0hGMVIiIHg1ak89InhPWXgiIGJXPSJ4WXhuT3hPSEYxUiI+PC94Vz4NCgkJCQkJCQk8eFc+DQoJCQkJCQkJCTxpQ3h4bUggYlc9Iml4SEFqTGJVVmVuT3hPSCIgeDVqTz0iaUN4eG1IIiBtSFVMYlVJPSJWakxiVVZlbk94T0hVYm1IT3IoKSIgPD9qd2ogT1V3bSAoJGdWcnhtLT5lT3hPSFVibUggPiA2KT8iV2JyVmlMT1ciOiIiID8+PkFqTGJVVmUgbk94T0hVYm1IT3I8L2lDeHhtSD4JDQoJCQkJCQkJCTxiSGpDeCBtSHFtVUNyPSJ4d2JyLmlMQ2U7IiBFVkxDTz0iOCIgIG1IVUxiVUk9ImVPeENlSCBxVkxyTzsiIHg1ak89IlV3T1VJaW1ZIiBIVlFPPSJ4WXhuT3hPSGJXbSIgYlc9InhZeG5PeE9IYldtIiBlT1ZXbUhMNT0iZU9WV21ITDUiIDw/andqIE9Vd20gKCRnVnJ4bS0+ZU94T0hVYm1IID4gNik/IlV3T1VJT1ciOiIiID8+IC8+DQoJCQkJCQkJPC94Vz4NCgkJCQkJCQk8L3hlPg0KCQkJCQkJPC94VmlMTz4NCgkJCQkJCTwveFc+DQoJCQkJCTwveGU+DQoJCQkJCTx4ZT4NCgkJCQkJCTx4dz4xJm1WVUN4TztXYmdtIHplT3JDakNPcnhWZWJtPC94dz4NCgkJCQkJCTx4dz5vbUh4bTwveHc+DQoJCQkJCQk8eHc+MW1XLiBuT3hPSFViJm1WVUN4TztIPC94dz4NCgkJCQkJCTx4dz5uT3hPSFViJm1WVUN4TztIPC94dz4NCgkJCQkJCTx4Vz48aUN4eG1IIG1IVUxiVUk9IlVWZWdWZW5PeE9IVWJtSCgpOyIgVUxWcnI9Iml4SEFXVyIgeDVqTz0iaUN4eG1IIj48L2lDeHhtSD48L3hXPg0KCQkJCQk8L3hlPg0KCQkJCQk8L3h3T1ZXPg0KCQkJCQk8eGltVzUgYlc9InhpTGNPeFZMTE9uT3hPSFVibUgiPjw/andqDQoJCQkJCQkJYnEoVW1DSHgoJGdWcnhtLT5lT3hPSFVibUhPcikgPiA2KQ0KCQkJCQkJCXFtZU9WVXcoJGdWcnhtLT5lT3hPSFVibUhPciBWciAkZU94KQ0KCQkJCQkJCXsNCgkJCQkJCQkJT1V3bSAiPHhlPjx4Vz48YkhqQ3ggeDVqTz0neE9ZeCcgRVZMQ089J3skZU94LT5qZU9yfScgSFZRTz0neFl4bk94T0gxbVdiZ21bXSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIEhWUU89J3hZeG5PeE9Ib21IeG1bXScgRVZMQ089J3skZU94LT5RbUh4bU5lYmdiSFZMfSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIEhWUU89J3hZeG5PeE9IMW1XYmdtbk94T0hVYm1IW10nIEVWTENPPSd7JGVPeC0+VW1XZU94fSc+PC94Vz48eFc+PGJIakN4IHg1ak89J3hPWXgnIG1ISU81Q2o9J3JDUVZmbXhWTG5PeE9IVWJtSE9yKCk7JyBIVlFPPSd4WXhuT3hPSG5PeE9IVWJtSG5PeE9IVWJtSFtdJyBFVkxDTz0neyRlT3gtPlFtSHhtfSc+PC94Vz48eFc+PGlDeHhtSCBVTFZycj0naXhIY09MT3hPQlFWTEwnIG1IVUxiVUk9J09MYlFiSFZlY094VkxMTzgoeHdicik7IHJDUVZmbXhWTG5PeE9IVWJtSE9yKCk7Jz48L2lDeHhtSD48L3hXPjwveGU+IjsNCgkJCQkJCQl9DQoJCQkJCQkJPz48L3hpbVc1Pg0KCQkJCTwveFZpTE8+DQoJCQk8L1diRT4NCgkJCQ0KCQkJPFdiRSBiVz0iV2JFMW1IckNMeFYxd095Q09yIiA+DQoJCQkJPFdiRSBiVyA9ICJXYkVMYnJ4ViIgcng1TE89Im1FT2VxTG0wOlZDeG07IHdPYmd3eDpaNjZqWTsiPg0KCQkJCQ0KCQkJCQ0KCQkJCQk8P2p3aiBRbXJ4ZVZlMXdPeUNPcigkZ1ZyeG0tPlVtVyk7ICA/Pg0KCQkJCTwvV2JFPg0KCQkJPC9XYkU+DQoJCTwvV2JFPg0KCTwvcWJPTFdyT3g+DQoJDQoJPFdiRSBiVz0iV2JFbk9yQ0x4VldtU0hFYm0xbVFqZW1pVkh4TyI+PC9XYkU+DQo8L1diRT4NCjxVT0h4T2U+DQo8V2JFIGJXPSJXYkVQbXhtSE9yb1VnIj4NCgkJPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIG1IVUxiVUk9IkVPZWJxYlVWZWNWeG1yKCkgIiBVTFZycj0iaXhIQlZFTyIgeGJ4TE8gPSAiQlZMRVZlIDFtUWplbWlWSHhPIiByeDVMTyA9ICcnPjwvaUN4eG1IPg0KCQkNCgkJPD9qd2ogDQoJCQlicSgkX0JTQkIzTkZbInJicnhPUUdBbkIiXVsiYlFqZWJRYmUxbVFqZW1pVkh4eE8iXT09OCl7DQoJCQkJT1V3bSAnPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyID0gIml4SHplYkh4V21VIiB4YnhMTyA9ICIzUWplYlFiZSAxbVFqZW1pVkh4T3IiIG1IVUxiVUk9ImJRamViUWJlU3J4TzFtUWplbWlWSHhPelZqT0woKTsiID48L2lDeHhtSD4nOw0KCQkJfU9Mck97DQoJCQkJT1V3bSAnPGlDeHhtSCB4NWpPPSJpQ3h4bUgiIFVMVnJyID0gIml4SHplYkh4V21VIiB4YnhMTyA9ICIzUWplYlFiZSAxbVFqZW1pVkh4T3IiIG1IVUxiVUk9ImJRamViUWJlU3J4TzFtUWplbWlWSHhPKCk7IiA+PC9pQ3h4bUg+JzsNCgkJCX0NCgkJCQ0KCQk/Pg0KCQk8aUN4eG1IIHg1ak89ImlDeHhtSCIgVUxWcnI9Iml4SDFMbXJPIiB4YnhMTyA9ICJCVkxiZSIgbUhVTGJVST0iVW1RamVtaVZIeE9CVkxiZSgpOyIgPjwvaUN4eG1IPg0KCQ0KPC9XYkU+DQo8L1VPSHhPZT4NCjwvcW1lUT4NCjxyVWVianggTFZIZ0NWZ089IkpWRVZyVWViangiPg0KCXFDSFV4Ym1IIEVPZUhPeG0xbVFqZW1pVkh4Tygpew0KCQkNCgkJDQoJCWllQ3htID0gJCgiI3hZeFBlQ3htIikuRVZMKCk7DQoJCWJ4aWJyID0gJCgiI3hZeDN4aWJyIikuRVZMKCk7DQoJCW14ZW1yID0gJCgiI3hZeE54ZW1yIikuRVZMKCk7DQoJCVdPclVDT0h4bSA9ICQoIiN4WXhjT3JVQ09IeG0iKS5FVkwoKTsNCgkJSE94bSA9ICQoIiN4WXhmbXhWTDFtUWplbWlWSHhPRk94bSIpLkVWTCgpOw0KCQkNCgkJSE94bSA9IGpWZXJPUkxtVngoaWVDeG0pK2pWZXJPUkxtVngoYnhpYnIpK2pWZXJPUkxtVngobXhlbXIpLWpWZXJPUkxtVngoV09yVUNPSHhtKTsNCgkJSE94bSA9IChickZWRihIT3htKSk/NjpIT3htOw0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4T0ZPeG0iKS5FVkxDTyA9IEhPeG07DQoJCQ0KCX0NCgkNCglFVmUgVUlqZU9yID0gJzw/andqIE9Vd20gJF9CU0JCM05GWyJyYnJ4T1FHQW5CIl1bIlVJamVPciJdOyA/Pic7DQoJDQoJVnJnUm1lUSgkKCIjcWVRMW1RamVtaVZIeE8xbVFqTE94bSIpLCQoIiNXYkVuT3JDTHhWV21TSEVibTFtUWplbWlWSHhPIikpOw0KCQ0KCXFDSFV4Ym1IIGJRamViUWJlQm1MYlVieENXKCkNCgl7DQoJCVVtVyA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhGbSIpLkVWTENPOw0KCQlicShVbVcgIT0gIiIpDQoJCXsNCgkJCQ0KCQkJM1FqZWJRYmV6Y1IoIlFtV0NMbXIvZU9qbWV4Ty9VbVFqZW1pVkh4T3IvbkJtTGJVYnhDVzF3T3lDTy5qd2o/VW1XPSIrVW1XKTsNCgkJDQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiY09pTyBnQ1ZlV1ZlIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgl9DQoJDQoJcUNIVXhibUggRU9lYnFiVVZlY1Z4bXIoKQ0KCXsNCgkJeG1XbVBiT0ggPSB4ZUNPOw0KCQl4bXhWTCA9IGpWZXJPUkxtVngoV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeGZteFZMMW1RamVtaVZIeE8iKS5FVkxDTyk7DQoJCWJxKHhteFZMICE9IDYpDQoJCXsNCgkJCS8vZm1XbSBpYk9IDQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiIGNPaU8gVmdlT2dWZSBWTCBRT0htciBDSFYgVnJiZ0hWVWJtSCBqZU9yQ2pDT3J4VmViVi4gIik7DQoJCQl4bVdtUGJPSCA9IHFWTHJPOw0KCQl9DQoJCQ0KCQkNCgkJDQoJCQ0KCQlRbUh4bSA9IGpWZXJPUkxtVngoV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeG9tSHhtMVl6MW1RamVtaVZIeE8iKS5FVkxDTyk7DQoJCQ0KCQkvKiBPcnhtIHJPIFdPclZpYkxieG0gam1leUNPIFdWIENIIE9lZW1lDQoJCWJxKFFtSHhtID4gNiAmJiBRbUh4bSAhPSB4bXhWTCkNCgkJew0KCQkJeG1XbVBiT0ggPSBxVkxyTzsNCgkJCVZMT2V4KCJTTCBRbUh4bSBIbSBPciBiZ0NWTCBWIExWIHJDUVYgV08gTFZyIHFWVXhDZVZyIFYgalZnVmUiK1FtSHhtKyIvICAiKyB4bXhWTCk7DQoJCX0NCgkJKi8NCgkJDQoJCQ0KCQlicSh4bVdtUGJPSCkNCgkJew0KCQkJJCgiI3FlUTFtUWplbWlWSHhPMW1RakxPeG0iKS5yQ2lRYngoKTsNCgkJfQ0KCQ0KCX0NCgkNCgkNCgkNCglxQ0hVeGJtSCBFT2VicWJVVmVvbUh4bShpVkwsIG1pSikNCgl7DQoJDQoJCWJxKCEobWlKLkVWTENPID4gNikpDQoJCXsNCgkJCVZMT2V4KCJSVkVtZSBXTyBVbUxtVVZlIENIViBVVkh4YldWVyBFVkxiV1YiKTsNCgkJCW1pSi5yT3hBeHhlYmlDeE8oJ1VMVnJyJywnT2VlbWUnKTsNCgkJCQ0KCQl9DQoJCU9Mck8NCgkJew0KCQkJbWlKLnJPeEF4eGViaUN4TygnVUxWcnInLCcnKTsNCgkJfQ0KCQlicShVSWplT3IgPT0gOCkNCgkJew0KCQkJDQoJCQlpVkwgPWpWZXJPUkxtVngoaVZMKTsNCgkJCQ0KCQkJYnEobWlKLkVWTENPID4gaVZMKQ0KCQkJew0KCQkJCVZMT2V4KCJTTCBRbUh4bSBXTyBPcnhWIFVDT0h4ViByQ2pPZVYgT0wgaVZMVkhVTyBXYnJqbUhiaUxPOiAiICsgaVZMKTsNCgkJCQltaUouck94QXh4ZWJpQ3hPKCdVTFZycicsJ09lZW1lJyk7DQoJCQkJbWlKLnJ4NUxPLmlWVUlnZW1DSFcgPSAiamJISSI7DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgRU9lYnFiVVYoJ0IzJyk7DQoJCQl9DQoJCQlPTHJPDQoJCQl7DQoJCQkJbWlKLnJPeEF4eGViaUN4TygnVUxWcnInLCcnKTsNCgkJCQltaUoucng1TE8uaVZVSWdlbUNIVyA9ICIiOw0KICAgICAgICAgICAgICAgIEVPZWJxYlVWKCdGTicpOw0KCQkJfQ0KCQl9DQoJCXhteFZMID0gNjsNCgkJeCA9IFdtVUNRT0h4LmdPeFNMT1FPSHhyUDVGVlFPKG1pSi5IVlFPKTsNCgkNCgkJcW1lKFk9NjsgWTx4LkxPSGd4dyA7IFkrKykNCgkJew0KCQkJRSA9IGpWZXJPUkxtVngoeFtZXS5FVkxDTyk7DQoJCQlicShFID4gNikNCgkJCXsNCgkJCQl4bXhWTCArPSBFOw0KCQkJfQ0KCQl9DQoJCQ0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4TyIpLkVWTENPID0geG14Vkw7DQoJfQ0KCQ0KCXFDSFV4Ym1IIE9MYlFiSFZlY094VkxMTzgobWlKKQ0KCXsNCgkJYnEoVW1IcWJlUSgiY09yT1YgT0xiUWJIVmUgT3J4TyBXT3hWTExPPyIpKQ0KCQl7DQoJCQltaUoualZlT0h4Rm1XTy5qVmVPSHhGbVdPLmpWZU9IeEZtV08uZU9RbUVPMXdiTFcobWlKLmpWZU9IeEZtV08ualZlT0h4Rm1XTyk7DQoJCX0NCgl9DQoNCgkNCglxQ0hVeGJtSCBVVmVnVmVjT3hWTExPKCkNCgl7DQoJCXFtSFdtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeFJtSFdtX0xWIikuRVZMQ087DQoJCQ0KCQkNCgkJYnEocW1IV20gPiA2KQ0KCQl7DQoJCQlWaWViZU5qVWJtSCgiV2JFMVZlVVZlY094VkxMT3IxTFZyciIsIkFyYmdIVlViJm1WVUN4TztIIFdPIDFDT0h4VnIgemVPckNqQ09yeFZlYlZyICIsICJRbVdDTG1yL1VtUWplbWlWSHhPL1VtV2JnbXJ6ZU9yQ2pDT3J4VmVibXIuandqP3FtSFdtPSIrcW1IV20seGVDTyk7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQlWTE9leCgiY09pTyByT0xPVVVibUhWZSBDSFYgMUNPSHhWIFBWSFVWZWJWIik7DQoJCX0NCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFVlT1ZlOWJIT1YoVW1XLCBIbVFpZU8sIGlWTCkNCgl7DQoJDQoJCVdPcnhiSG0gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieGlMY094VkxMTzFtUWplbWlWSHhPIik7DQoJCUhDUSA9IFdPcnhiSG0uVXdiTFdGbVdPci5MT0hneHc7DQoJCXhlID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneGUnKTsNCgkNCgkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2JIakN4Jyk7DQoJCXhPWXgueDVqTz0neE9ZeCc7DQoJCXhPWXguSFZRTyA9ICdXeFl4MW1XYmdtW10nOw0KCQl4T1l4LmJXID0gJ1d4WXgxbVdiZ20nK0hDUTsNCgkJeE9ZeC5FVkxDTyA9ICc8P2p3aiBPVXdtICRqT2U7ID8+JyArIFVtVzsNCgkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQl4Vy5WampPSFcxd2JMVyh4T1l4KTsNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2JIakN4Jyk7DQoJCXhPWXgueDVqTz0neE9ZeCc7DQoJCXhPWXgucng1TE8uMGJXeHc9J1o2NmpZJzsNCgkJeE9ZeC5IVlFPID0gJ3hZeDFtV3plT3JbXSc7DQoJCXhPWXguYlcgPSAneFl4MW1XemVPcicrSENROw0KCQl4T1l4LkVWTENPID0gSG1RaWVPOw0KCQl4VyA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ3hXJyk7DQoJCXhXLlZqak9IVzF3YkxXKHhPWXgpOw0KCQl4T1l4ID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgnYkhqQ3gnKTsNCgkJeE9ZeC54NWpPPSd3YldXT0gnOw0KCQl4T1l4LkhWUU8gPSAneFl4UFZMW10nOw0KCQl4T1l4LmJXID0gJ3hZeFBWTCcrSENROw0KCQl4T1l4LkVWTENPID0gaVZMOw0KCQl4Vy5WampPSFcxd2JMVyh4T1l4KTsNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJUW1IeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCdiSGpDeCcpOw0KCQlRbUh4bS54NWpPPSd4T1l4JzsNCgkJUW1IeG0uSFZRTyA9ICdXeFl4b21IeG1bXSc7DQoJCVFtSHhtLmJXID0gJ1d4WXhvbUh4bScrSENROw0KCQlRbUh4bS5yT3hBeHhlYmlDeE8oJ21ISU81Q2onLCdyQ1FWZm14Vkx6ZU9yQ2pDT3J4bSgpJyk7DQoJCVFtSHhtLkVWTENPID0gNjsNCgkJUW1IeG0uck94QXh4ZWJpQ3hPKCJtSElPNUNqIiwgIkVPZWJxYlVWZW9tSHhtKCciK2lWTCsiJywgeHdicik7IikNCgkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQl4Vy5WampPSFcxd2JMVyhRbUh4bSk7DQoJCXhlLlZqak9IVzF3YkxXKHhXKTsNCgkJDQoJCXhPWXggPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCdpQ3h4bUgnKTsNCgkJeE9ZeC5yT3hBeHhlYmlDeE8oJ1VMVnJyJywnaXhIY09MT3hPQlFWTEwnKTsNCgkJeE9ZeC5yT3hBeHhlYmlDeE8oJ21IVUxiVUknLCdPTGJRYkhWZWNPeFZMTE84KHh3YnIpJyk7DQoJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJeFcuVmpqT0hXMXdiTFcoeE9ZeCk7CQkNCgkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkNCgkJV09yeGJIbS5WampPSFcxd2JMVyh4ZSk7DQoJCVFtSHhtLnFtVUNyKCk7DQoJDQoJDQoJfQ0KCQ0KCXFDSFV4Ym1IIHJPTE9VVWJtSFZlY094VkxMTyhVbVcsIEhtUWllTywgUW1IeG0pDQoJew0KCQlVZU9WZTliSE9WKFVtVywgSG1RaWVPLCBRbUh4bSk7DQoJCSQoIiNXYkUxVmVVVmVjT3hWTExPcjFMVnJyIikuV2JWTG1nKCdVTG1yTycpOw0KCX0NCg0KCXFDSFV4Ym1IIFVWZWdWZW5PeE9IVWJtSCgpDQoJew0KCQlRbUh4bSA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhQZUN4bSIpLkVWTENPOw0KCQkNCgkJDQoJCWJxKFFtSHhtID4gNikNCgkJew0KCQkJVmllYmVOalVibUgoIldiRTFWZWdWZW5PeE9IVWJtSE9yIiwiQXJiZ0hWVWImbVZVQ3hPO0ggV08gbk94T0hVYm1IT3IgIiwgIlFtV0NMbXIvVW1RamVtaVZIeE8vZU94T0hVYm1IMTcuandqP29tSHhtPSIrUW1IeG0seGVDTywgWnM2LCBUNjYpOw0KCQl9DQoJCU9Mck8NCgkJew0KCQkJVkxPZXgoIlNMIFFtSHhtIFdPTCAxbVFqZW1pVkh4TyBXT2lPIHJPZSBRVjVtZSB5Q08gNiBqVmVWIFZyYmdIVmUgbk94T0hVYm1IT3IiKTsNCgkJfQ0KCQkNCgl9CQ0KCQ0KCXFDSFV4Ym1IIG5PeE9IQlZMYmVuT3hPSFVibUgoKQ0KCXsNCgkJDQoJCSQoIiNXYkUxVmVnVmVuT3hPSFVibUhPciIpLldiVkxtZygnVUxtck8nKTsNCgl9DQoJDQoJcUNIVXhibUggY094VkxMTyhVbVcpDQoJew0KCVZpZWJlTmpVYm1IKCJXYkVTV2J4Y094VkxMTyIsIlNXYlVibUggV09MIGNPeFZMTE8gV09MIDFtUWplbWlWSHhPICIsICJRbVdDTG1yL1VtUWplbWlWSHhPL1dPeFVnLmp3aj9VbVc9IitVbVcseGVDTywgRDY2LCBaZDYpOw0KCQkNCgkNCgl9DQoJIHFDSFV4Ym1IIEVPZWJxYlVWKFdWeG0pew0KICAgICAgICANCiAgICAgICAgICAgIAlVVmVnVmVTSCgiV2JFbk9xZU9yVW1vbUh4bSIsIlFtV0NMbXIvVW1RamVtaVZIeE8vZU9VYmltM0hxbS5qd2oiLCAiVW1XPSIrV1Z4bSk7DQogICAgIA0KICAgIH0NCglxQ0hVeGJtSCBjT3hWTExPQlZMYmUoKQ0KCXsNCgkJDQoJCSQoIiNXYkVTV2J4Y094VkxMTyIpLldiVkxtZygnVUxtck8nKTsNCgl9DQoJcUNIVXhibUggVW1RamVtaVZIeE9CVkxiZSgpDQoJew0KCQkNCgkJJCgiI1diRTFtUWplbWlWSHhPU1dieDRiSFdtMHIiKS5XYlZMbWcoJ1VMbXJPJyk7DQoJfQ0KCS8vcUNIVXhibUggZ09IT2VWZTFWTFVDTG1yelZlVm5PeE9IVWJtSCh4Ymptbk94T0hVYm1ILCBFVkxtZW5PeE9IVWJtSCwgVW1XYmdtbk94T0hVYm1ILCBieE9pYnJuT3hPSCkNCgkJcUNIVXhibUggZ09IT2VWZTFWTFVDTG1yelZlVm5PeE9IVWJtSCh4Ymptbk94T0hVYm1ILCBFVkxtZW5PeE9IVWJtSCwgVW1XYmdtbk94T0hVYm1ILCBieE9pYnJuT3hPSCkNCgl7DQoJDQoJDQoJCXhlNXsNCgkNCgkJCWJxKHhiam1uT3hPSFVibUggPiA2KQ0KCQkJew0KCQkJCVVtUWplbWlWSHhPciA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4aUxjT3hWTExPMW1RamVtaVZIeE8iKS5Vd2JMV0ZtV09yOw0KCQkJCUhDUTEgPSBVbVFqZW1pVkh4T3IuTE9IZ3h3Ow0KCQkJCVdPcnhiSG0gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieGlMY094VkxMT25PeE9IVWJtSCIpOw0KCQkJCQ0KCQkJCQ0KCQkJCQ0KCQkJDQoJCQkJDQoJCQkJLy96bWUgVVZXViBDSG0gV08gTG1yIFVtUWplbWlWSHhPciByTyBFViBWIFZnZU9nVmUgQ0hWIHFiTFYuDQoJCQkJcW1lKFkxem49NjsgWTF6bjxIQ1ExOyBZMXpuKyspDQoJCQkJew0KCQkJCQkNCgkJCQkJDQoJCQkJCUhDUSA9IFdPcnhiSG0uVXdiTFdGbVdPci5MT0hneHc7DQoJCQkJCXhlID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneGUnKTsNCgkJCQkJDQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeE9ZeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCJiSGpDeCIpOw0KCQkJCQl4T1l4bS54NWpPPSAneE9ZeCc7DQoJCQkJCXhPWXhtLkhWUU8gPSd4WXhuT3hPSDFtV2JnbVtdJzsNCgkJCQkJeE9ZeG0uRVZMQ08gPSAoVW1RamVtaVZIeE9yW1kxem5dLlV3YkxXRm1XT3JbNl0uVXdiTFdGbVdPcls2XS5FVkxDTyk7DQoJCQkJCXhXLlZqak9IVzF3YkxXKHhPWXhtKTsNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQkJCQl4T1l4bSA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoImJIakN4Iik7DQoJCQkJCXhPWXhtLng1ak89ICd4T1l4JzsNCgkJCQkJeE9ZeG0uSFZRTyA9J3hZeG5PeE9Ib21IeG1bXSc7DQoJCQkJCVFtSHhtMW1RamVtaVZIeE8gPSBVbVFqZW1pVkh4T3JbWTF6bl0uVXdiTFdGbVdPcltUXS5Vd2JMV0ZtV09yWzZdLkVWTENPOw0KCQkJCQkvL29tSHhtIGpWZVYgT0wgVVZMVUNMbSAgIFBaLzguOGQqNi5zLzg2NiBXT0wgM3hPaWJyIDhkJQ0KCQkJCQkvL1FtSHhtMW1RamVtaVZIeE8xID0gVlRXT1UoKGJ4T2licm5PeE9IID42KT8oUW1IeG0xbVFqZW1pVkh4Tyo2LjJkVDZkMnVrKTpRbUh4bTFtUWplbWlWSHhPKTsNCgkJCQkJDQoJCQkJCS8vb21IeG0galZlViBPTCBVVkxVQ0xtICAgUFovOC44Mio2LnMvODY2IFdPTCAzeE9pYnIgODIlDQoJCQkJCVFtSHhtMW1RamVtaVZIeE8xID0gVlRXT1UoKGJ4T2licm5PeE9IID42KT8oUW1IeG0xbVFqZW1pVkh4Tyo2LjJEa0Rza2RUayk6UW1IeG0xbVFqZW1pVkh4Tyk7DQoJCQkJCQ0KCQkJCQkNCg0KCQkJCQkNCgkJCQkJeE9ZeG0uRVZMQ08gPSBRbUh4bTFtUWplbWlWSHhPOw0KCQkJCQl4Vy5WampPSFcxd2JMVyh4T1l4bSk7DQoJCQkJCXhlLlZqak9IVzF3YkxXKHhXKTsNCgkJCQkJDQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeE9ZeG0gPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCJiSGpDeCIpOw0KCQkJCQl4T1l4bS54NWpPPSAneE9ZeCc7DQoJCQkJCXhPWXhtLkVWTENPID0gVW1XYmdtbk94T0hVYm1IOw0KCQkJCQl4T1l4bS5IVlFPPSd4WXhuT3hPSDFtV2JnbW5PeE9IVWJtSFtdJzsNCgkJCQkJeFcuVmpqT0hXMXdiTFcoeE9ZeG0pOw0KCQkJCQl4ZS5WampPSFcxd2JMVyh4Vyk7DQoJCQkJCQ0KCQkJCQkNCgkJCQkJeFcgPSBXbVVDUU9IeC5VZU9WeE9TTE9RT0h4KCd4VycpOw0KCQkJCQl4T1l4bSA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoImJIakN4Iik7DQoJCQkJCXhPWXhtLng1ak89ICd4T1l4JzsNCgkJCQkJeE9ZeG0uRVZMQ08gPSBWVFdPVShRbUh4bTFtUWplbWlWSHhPMSAqIEVWTG1lbk94T0hVYm1IICk7DQoJCQkJCXhPWXhtLkhWUU89J3hZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10nOw0KCQkJCQl4T1l4bS5yT3hBeHhlYmlDeE8oJ21ISU81Q2onLCdyQ1FWZm14VkxuT3hPSFVibUhPcigpJyk7DQoJCQkJCXhXLlZqak9IVzF3YkxXKHhPWXhtKTsNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJeE9ZeCA9IFdtVUNRT0h4LlVlT1Z4T1NMT1FPSHgoJ2lDeHhtSCcpOw0KCQkJCQl4T1l4LnJPeEF4eGViaUN4TygnVUxWcnInLCdpeEhjT0xPeE9CUVZMTCcpOw0KCQkJCQl4T1l4LnJPeEF4eGViaUN4TygnbUhVTGJVSScsJ09MYlFiSFZlY094VkxMTzgoeHdicik7IHJDUVZmbXhWTG5PeE9IVWJtSE9yKCk7Jyk7DQoJCQkJCXhXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgneFcnKTsNCgkJCQkJeFcuVmpqT0hXMXdiTFcoeE9ZeCk7CQkNCgkJCQkJeGUuVmpqT0hXMXdiTFcoeFcpOw0KCQkJCQkNCgkJCQkJDQoJCQkJCQ0KCQkJCQlXT3J4YkhtLlZqak9IVzF3YkxXKHhlKTsNCgkJCQkJckNRVmZteFZMbk94T0hVYm1IT3IoKTsNCgkJCQkJDQoJCQkJfQ0KCQkJfQ0KCQkJT0xyTw0KCQkJew0KCQkJCS8vQXlDYiBFVkggIExtciBVVkxVQ0xtciBXTyBMViBlT3hPSFVibUggIHFiSlYhISENCgkJCX0NCgkJCQ0KCQkJbk94T0hCVkxiZW5PeE9IVWJtSCgpOyAgLy96VmVWIHJWTGJlIFdPTCBVQ1ZXZW0gV08gV2JWTG1nbQ0KCQkNCgkJfQ0KCQlVVnhVdyhPWSkNCgkJew0KCQkJVkxPZXgoT1kpOw0KCQl9DQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIHJDUVZmbXhWTG5PeE9IVWJtSE9yKCkNCgl7DQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oInhZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10iKTsNCgkJeG14VkwgPSA2Ow0KCQlxbWUoWT02OyBZPCBPTE9Rci5MT0hneHc7IFkrKykNCgkJew0KCQkJYnEoT0xPUXJbWV0uRVZMQ08gPiA2KQ0KCQkJew0KCQkJCXhteFZMICs9IGpWZXJPUkxtVngoIE9MT1FyW1ldLkVWTENPKTsNCgkJCX0NCgkJfQ0KCQkNCgkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeGZteFZMMW1RamVtaVZIeE9uT3giKS5FVkxDTyA9IFZUV09VKHhteFZMKTsNCgkJDQoJfQ0KCQ0KCXFDSFV4Ym1IIHJDUVZmbXhWTHplT3JDakNPcnhtKCkNCgl7DQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oIld4WXhvbUh4bVtdIik7DQoJCXhteFZMID0gNjsNCgkJcW1lKFk9NjsgWTwgT0xPUXIuTE9IZ3h3OyBZKyspDQoJCXsNCgkJCWJxKE9MT1FyW1ldLkVWTENPID4gNikNCgkJCXsNCgkJCQl4bXhWTCArPSBqVmVyT1JMbVZ4KCBPTE9RcltZXS5FVkxDTyk7DQoJCQl9DQoJCX0NCgkJDQoJCU9MT1FyID0gV21VQ1FPSHguZ094U0xPUU9IeHJQNUZWUU8oInhZeG5PeE9Ibk94T0hVYm1Ibk94T0hVYm1IW10iKTsNCgkJDQoJCXFtZShZPTY7IFk8IE9MT1FyLkxPSGd4dzsgWSsrKQ0KCQl7DQoJCQlicShPTE9RcltZXS5FVkxDTyA+IDYpDQoJCQl7DQoJCQkJeG14VkwgKz0galZlck9STG1WeCggT0xPUXJbWV0uRVZMQ08pOw0KCQkJfQ0KCQl9DQoJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXhmbXhWTDFtUWplbWlWSHhPIikuRVZMQ08gPSB4bXhWTDsNCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFZqTGJVVmVuT3hPSFVibUhPcigpDQoJew0KCQl4ZTUNCgkJew0KCQkJZXIgPSBVbUhxYmVRKCJTcnhWIHJPZ0NlbSB5Q08geUNiT2VPIFZqTGJVVmUgTFZyIGVPeE9IVWJtSE9yPyAiKTsNCgkJCWJxKGVyKQ0KCQkJew0KCQkJCWVPeE9IVWJtSE9yZm14VkwgPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Zm14VkwxbVFqZW1pVkh4T25PeCIpLkVWTENPOw0KCQkJCWJxKGVPeE9IVWJtSE9yZm14VkwgPiA2KQ0KCQkJCXsNCgkJCQkJVW1RamVtaVZIeE9yID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhpTGNPeFZMTE8xbVFqZW1pVkh4TyIpLlV3YkxXRm1XT3I7DQoJCQkJCUhDUTEgPSBVbVFqZW1pVkh4T3IuTE9IZ3h3Ow0KCQkJCQllT3hPSFVibUhPciA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4aUxjT3hWTExPbk94T0hVYm1IIikuVXdiTFdGbVdPcjsNCgkJCQkJSENRbiA9IGVPeE9IVWJtSE9yLkxPSGd4dzsNCgkJCQkJDQoJCQkJCXFtZShZMUFuID0gNjsgWTFBbiA8IEhDUW47IFkxQW4rKykgLy9uT1VtZWVPZSBMVnIgZU94T0hVYm1IT3INCgkJCQkJew0KCQkJCQkJZW0wbk94T0hVYm1IID0gZU94T0hVYm1IT3JbWTFBbl07DQoJCQkJCQlxbWUoWTFBMT02OyBZMUExPCBIQ1ExOyBZMUExKyspICAgICAgIC8vbk9VbWVlT2UgTG1yIFVtUWplbWlWSHhPcg0KCQkJCQkJew0KCQkJCQkJCWVtMDFtUWplbWlWSHhPID0gVW1RamVtaVZIeE9yW1kxQTFdOw0KCQkJCQkJCWJxKGVtMDFtUWplbWlWSHhPLlV3YkxXRm1XT3JbNl0uVXdiTFdGbVdPcls2XS5FVkxDTyA9PSBlbTBuT3hPSFVibUguVXdiTFdGbVdPcls2XS5Vd2JMV0ZtV09yWzZdLkVWTENPKQ0KCQkJCQkJCXsNCgkJCQkJCWVPeE9IID0gZW0wbk94T0hVYm1ILlV3YkxXRm1XT3JbWl0uVXdiTFdGbVdPcls2XS5FVkxDTzsNCgkJCQkJCQkJUW1IeG0gPSBlbTAxbVFqZW1pVkh4Ty5Vd2JMV0ZtV09yW1RdLlV3YkxXRm1XT3JbNl0uRVZMQ087DQoJCQkJCQkJCUhRbUh4bSA9IFFtSHhtIC0gZU94T0g7DQoJCQkJCQkJCQ0KCQkJCQkJCQllbTAxbVFqZW1pVkh4Ty5Vd2JMV0ZtV09yW1RdLlV3YkxXRm1XT3JbNl0uRVZMQ08gPSBIUW1IeG07DQoJCQkJCQkJCWVtMG5PeE9IVWJtSC5Vd2JMV0ZtV09yWzhdLlV3YkxXRm1XT3JbNl0uRVZMQ08gPSBIUW1IeG07DQoJCQkJCQkJDQoJCQkJCQkJDQoJCQkJCQkJfQ0KCQkJCQkJCQ0KCQkJCQkJfQ0KCQkJCQl9IA0KCQkJCQkNCgkJCQkgICAgV21VQ1FPSHguZ094U0xPUU9IeFA1M1coIml4SEFqTGJVVmVuT3hPSCIpLldiclZpTE9XID0geGVDTzsNCgkJCQkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coIml4SEFqTGJVVmVuT3hPSCIpLmJISE9lYWZvOSA9ICJuT3hPSC4gQWpMYlVWV1YiOw0KCQkJCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4bk94T0hiV20iKS5Vd09VSU9XPXhlQ087DQoJCQkJCQ0KCQkJCQkNCgkJCQkJDQoJCQkJDQoJCQkJfQ0KCQkJCU9Mck8NCgkJCQl7DQoJCQkJCVZMT2V4KCJjT2lPIFZnZU9nZVZlIFZMIFFPSG1yIENIViBlT3hPSFVibUggalZlViBqbVdPZSBWakxiVVZlLiIpOw0KCQkJCX0NCgkJCQ0KCQkJfQ0KCQl9DQoJCVVWeFV3KE9ZKQ0KCQl7DQoJCQlWTE9leChPWSk7DQoJCX0NCgl9DQoNCgkkKCIjV2JFY094VkxMT3JfVW1RamVtZ1ZyeG1aZHUiKS54VmlyKCk7DQoNCglxQ0hVeGJtSCBpQ3JVVmVCQ2pMYldtZTFtUWplbSgpDQoJew0KCQlWaWViZU5qVWJtSCgiV2JFQkNqTGJXbWUxbVFqZW0iLCJQQ3JVVmUgQkNqTGJXbWUiLCAiUW1XQ0xtci9VbVFqZW1pVkh4Ty9VVmVnVmVCQ2pMYldtZS5qd2oiLHhlQ08pOw0KCQkNCgkJDQoJfQ0KCQ0KCQ0KCXFDSFV4Ym1IIFZVT2p4VmVCQ2pMYldtZShIbVFpZU8sZUhVLFdiZU9VKQ0KCXsNCgkJV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEFMIikuRVZMQ08gPSBIbVFpZU87DQoJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCJ4WXgxT1duRjFCQ2pMYldtZSIpLkVWTENPID0gZUhVOw0KCQlXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygieFl4Y2JlT1VVYm1IIikuRVZMQ08gPSBXYmVPVTsNCgkJJCgiI1diRUJDakxiV21lMW1RamVtIikuV2JWTG1nKCdVTG1yTycpOw0KCX0NCgkNCglxQ0hVeGJtSCBiUWplYlFiZVNyeE8xbVFqZW1pVkh4TygpDQoJew0KCQlVVW1RamVtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEZtIikuRVZMQ087DQoJCQ0KCQlicShVVW1RamVtID09ICIiKQ0KCQl7DQoJCQlWTE9leCgiY09pTyA3Q1ZlV1ZlIE9MIFVtUWplbWlWSHhPIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQ0KCQkJVmllYmVOalVibUgoImJRamVPcmJtSGNPTDFtUWplbWlWSHhPIiwiM1FqZU9yYm1IIFdPIDFtUWplbWlWSHhPIiwgIlFtV0NMbXIvVW1RamVtaVZIeE8vYlFqZWJRYmUxbVFqZW1pVkh4Ty5qd2o/VW1Xcj0iK1VVbVFqZW0seGVDTyk7DQoJDQoJCQkNCgkJfQ0KCQkNCgl9DQoJcUNIVXhibUggYlFqZWJRYmVTcnhPMW1RamVtaVZIeE96VmpPTCgpDQoJew0KCQlVVW1RamVtID0gV21VQ1FPSHguZ094U0xPUU9IeFA1M1coInhZeEZtIikuRVZMQ087DQoJCQ0KCQlicShVVW1RamVtID09ICIiKQ0KCQl7DQoJCQlWTE9leCgiY09pTyA3Q1ZlV1ZlIE9MIFVtUWplbWlWSHhPIFZIeE9yIFdPIGJRamViUWJlIik7DQoJCX0NCgkJT0xyTw0KCQl7DQoJCQ0KCQkJM1FqZWJRYmV6Y1IoJ1FtV0NMbXIvZU9qbWV4Ty9VbVFqZW1pVkh4T3IvbjFnelZqT2UuandqP1VtV3I9JytVVW1RamVtKTsNCgkJCQ0KCQl9DQoJCQ0KCX0NCgkNCjwvclVlYmp4Pg0KPHJVZWJqeCBMVkhnQ1ZnTz0iSlZFVnJVZWJqeCI+DQoJeGU1ew0KCVdWeG1yMW1RamVtaVZIeE8xeigpOw0KCX0NCglVVnhVdyhPWSkNCgl7DQoJCS8vVkxPZXgoT1kpOw0KCX0NCgkkKCIucU9Vd1ZVbVFqZW0iKS5XVnhPamJVSU9lKHsgV1Z4T1JtZVFWeDogJzU1LVFRLVdXJyxVd1ZIZ092T1ZlOiB4ZUNPLCBVd1ZIZ09vbUh4dzogeGVDTywgNU9WZW5WSGdPOiAnVDY2MjpUNkQ2J30pOw0KDQo8L3JVZWJqeD4NCjw/andqIA0KDQoNCgkvL0JPIFdPVUxWZVYgT3J4ViBFVmViVmlMTyByYiBPSHhlViBWTCAjR1NuM1IzMUFfY2ZBQjM3DQoJYnEoYnJyT3goJHFiTFZBcmJnKSl7DQoJCQkNCgkJT1V3bSA8PDxvM2NBZkENCgkJPHJVZWJqeD4gDQoJCQkkKCIjeFl4QUwiKS5FVkwoInskcWJMVkFyYmdbJ0htUWllTyddfSIpOyANCgkJCVdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhBTCcpLnJPeEF4eGViaUN4TygnZU9WV21ITDUnLCdlT1ZXbUhMNScpOw0KCQk8L3JVZWJqeD4NCgkJPHJVZWJqeD4NCgkJCXFtSFdtID0gInskcWJMVkFyYmdbJ3FtSFdtX1VtVyddfSI7DQoJCQlVUWlfcW1IV20gPSBXbVVDUU9IeC5nT3hTTE9RT0h4UDUzVygneFl4Um1IV21fTFYnKTsNCgkJCXFtZShZPTY7IFkgPCBVUWlfcW1IV20ubWp4Ym1Ici5MT0hneHc7IFkrKyl7DQoJCQkJYnEoVVFpX3FtSFdtLm1qeGJtSHJbWV0uRVZMQ08gPT0gcW1IV20pew0KCQkJCQlVUWlfcW1IV20uck9MT1V4T1czSFdPWSA9IFk7DQoJCQkJCVVtSHJtTE8uTG1nKCcxVlFpYm0gViAnK1kpOw0KCQkJCQkNCgkJCQl9DQoJCQl9IA0KCQkJDQoJCQlMViA9IFdtVUNRT0h4LmdPeFNMT1FPSHhQNTNXKCd4WXhSbUhXbV9MVicpOw0KCQkJTFYuck94QXh4ZWJpQ3hPKCdXYnJWaUxPVycsJ1diclZpTE9XJyk7DQoJCQlXID0gV21VQ1FPSHguVWVPVnhPU0xPUU9IeCgnYkhqQ3gnKTsNCgkJCVcueDVqTz0nd2JXV09IJzsNCgkJCVcuck94QXh4ZWJpQ3hPKCdIVlFPJywneFl4Um1IV21fTFYnKTsNCgkJCVcuRVZMQ08gPSBMVi5FVkxDTzsNCgkJCUxWLmpWZU9IeEZtV08uYkhyT2V4UE9xbWVPKFcsTFYpOw0KCQkJDQoJCTwvclVlYmp4Pg0KCQk8clVlYmp4Pg0KCQkJJCgiI3hZeDFPV25GMUJDakxiV21lIikuRVZMKCd7JHFiTFZBcmJnWydlSFUnXX0nKTsNCgkJCSQoIiN4WXhjYmVPVVVibUgiKS5FVkwoJ3skcWJMVkFyYmdbJ1diZU9VJ119Jyk7DQoJCQkkKCIjeFl4Y094VkxMT1kiKS5FVkwoJ3skcWJMVkFyYmdbJ1VtSFVPanhtJ119Jyk7DQoJCQkkKCIjeFl4M3hpYnIiKS5FVkwoJ3skcWJMVkFyYmdbJ2J4aWJyJ119Jyk7DQoJCQkkKCIjeFl4UGVDeG0iKS5FVkwoJ3skcWJMVkFyYmdbJ2llQ3htJ119Jyk7DQoJCQkkKCIjeFl4Y09yVUNPSHhtIikuRVZMKCd7JHFiTFZBcmJnWydXT3JVQ09IeG0nXX0nKTsNCgkJCSQoIiN4WXhOeGVtciIpLkVWTCgneyRxYkxWQXJiZ1snbXhlbXInXX0nKTsNCgkJCSQoIiN4WXhmbXhWTDFtUWplbWlWSHhPIikuRVZMKCd7JHFiTFZBcmJnWyd4bXhWTCddfScpOw0KCQkJJCgiI3hZeG5PeE9IbkYxIikuRVZMKCd7JHFiTFZBcmJnWydlSFUnXX0nKTsNCgkJCVFtcnhlVmVTZWVtZU9yKCk7DQoJCTwvclVlYmp4Pg0KbzNjQWZBOw0KCQkkZyA9IEhPMCBXVnhWN2ViVygkV3hBcmJnX1UpOw0KCQkvLy8kZy0+V2JyakxWNSgpOw0KCX0NCj8+';$_D=strrev('edoced_46esab');eval($_D('JF9DNjA0NjU3NjU9YmFzZTY0X2RlY29kZSgkX0M2MDQ2NTc2NSk7JF9DNjA0NjU3NjU9c3RydHIoJF9DNjA0NjU3NjUsJ1JBR3k4blRwUWFkU2loSzZNSXNvMjBMdk8zdENCbVpyVUVjZUZOWDl6WUoxNWJ3VnFqbHg0a2c3UEhXdWZEJywnRkFWcTFSMlhtSDZFYlF6MEprNU04d2xZZUlVdVNvM3NjdkRyTk9LTFB4akN5aWhhZnBadFc3Z0dCbmQ5VDQnKTskX1I9c3RyX3JlcGxhY2UoJ19fRklMRV9fJywiJyIuJF9GLiInIiwkX0M2MDQ2NTc2NSk7ZXZhbCgkX1IpOyRfUj0wOyRfQzYwNDY1NzY1PTA7'));?>
Function Calls
strtr | 1 |
strrev | 1 |
str_replace | 1 |
base64_decode | 2 |
Stats
MD5 | e5858fc8ecbb4cb94c323d8722e8d81f |
Eval Count | 2 |
Decode Time | 219 ms |