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__;$_C1353562110='Pz48P0dmRwpreSAoIXlhZFJJa2dkX2lTazFJMSgiX19NYUlnMmdNWCIp..

Decoded Output download

?><?php
if (!function_exists("__autoload")) {
    include("../lib/app_top.php");
}
if (!isset($_SESSION[SESSION_VAR_NAME]['user_id'])) {
    header("location: ../error_401.php");
    exit();
}
//else {
else {
    $page_ctl = new page_access_ctl($db);
    if ($page_ctl->hasPermission('152', $_SESSION[SESSION_VAR_NAME]['role'])) {

        $Page = new page($db);
        $userAccessRight = $Page->accesspermissions('152', $_SESSION[SESSION_VAR_NAME]['role']);
        $no_userAccessRight = count($userAccessRight);
        $access_type = array();
        $Global_Settings = new global_settings($db);
        $Approved1 = $Global_Settings->get_application_sizeLimit_detail_byId(4);
        $Unapproved1 = $Global_Settings->get_application_sizeLimit_detail_byId(5);
        $Rejected1 = $Global_Settings->get_application_sizeLimit_detail_byId(6);
        foreach ($userAccessRight as $p_ar) {
            array_push($access_type, $p_ar['type']);
        }
        if (in_array('2', $access_type)) {

// EMPTY SESSION FOLDER 
            $dir = 'documents/tmp/' . $_SESSION[SESSION_VAR_NAME]['user_temp_number'];
            $files = clear_session_files($dir, true);
            rmdir($dir);
// EMPTY SESSION FOLDER


            $pid = decrypt_url($_REQUEST['project_id'], APP_ENCRYPTION_SALT);

// echo '*********************************************************8' . $pid;
            $id = decrypt_url($_REQUEST['doc_id'], APP_ENCRYPTION_SALT);

//$document_all = decrypt_url($_REQUEST['document_all'], APP_ENCRYPTION_SALT);
            //$document_all = gzinflate(gzinflate(gzinflate((urldecode(decrypt_url($_REQUEST['document_all'], APP_ENCRYPTION_SALT))))));
            //$comparess = urlencode(gzdeflate(gzdeflate(gzdeflate($document_all, 9), 9), 9));
            //$document_all_arr = @explode(",", $document_all);
            //$key = array_search($id, $document_all_arr);
            //$next_id = $document_all_arr[$key + 1];
            //$prev_id = $document_all_arr[$key - 1];
/////End
//$id = decrypt_url($_REQUEST['doc_id'], APP_ENCRYPTION_SALT);
            $Project = new project($db);
            $project_details = $Project->getProject_ById($pid);

            $Category = new category($db);
            $parent_category_details = $Category->getCategoryByID($project_details[0]['category_id']);

            $File = new file_manager($db);
            $doc_details = $File->getDoc_ByID_All($id);
            $sel_parent_category_details = $Category->getCategoryByID($doc_details[0]['category_id']);

            /*             * *************************** */
            $stack = array();
            $parent = $sel_parent_category_details[0]['parent_id'];
            array_push($stack, $sel_parent_category_details[0]['parent_id']);
            while ($parent != 0) {
                $category_details = $Category->getCategoryByID($parent);
                $parent = $category_details[0]['parent_id'];
                array_push($stack, $parent);
            }
            $stack = array_reverse($stack);
            array_shift($stack);
            array_push($stack, $doc_details[0]['category_id']);
            $category_path = join('/', $stack);
            /*             * ********************************** */
            $parent_id = $File->get_ParentId($id);
            $perpetual_status = $File->get_PerpetualStatus($parent_id[0]['parent_id']);
            $parent_doc_details = $File->getDocument_ByparenId($id);
            $Global_Settings = new global_settings($db);
            $doc_life_cycle_id = $Global_Settings->get_module_info_byId(12);
            ?>
            <style>
                .form-horizontal .control-group {
                    margin-bottom:7px;
                }

            </style>
            <script type="text/javascript" nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                $(document).ready(function () {

                    $("#span_prv").hide();
                    $("#span_nxt").hide();

                    setTimeout(function () {
                        ajax_common_request("dms/dms_indexing_incl.php?id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>", 'div_preview_indexing');

                        $.ajax({
                            url: 'dms/dms_dashboard_nxt_prv.php',
                            type: 'post',
                            data: {
                                pid: '<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>',
                                id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'
                            },
                            beforeSend: function () {
                            },
                            error: function (data) {
                            },
                            success: function (response) {
                                //                                console.log(response);
                                var result = [];
                                result = $.parseJSON(response);
                                //                                console.log(result[2]);
                                $("#prv").val(result[0]);
                                $("#nxt").val(result[1]);
                                if (result[0] != 0) {
                                    $("#span_prv").show();
                                }
                                if (result[1] != 0) {
                                    $("#span_nxt").show();
                                }
                            },
                            complete: function (data) {
                            }
                        });

                    }, 2000);
                });

                //            $document.ready(function ()) {
                //                $('.span7').hide().delay(10000).fadeIn(1850);
                //            });
                //
                //            setTimeout(function () {
                //                $(".span").show()
                //            }, 4000);
                //
                //            $(function () {
                //
                //                $('#tags_1').tagsInput({
                //                    width: 'auto'
                //                });
                //
                //            });
                /*====Select Box====*/
                $(function () {
                    $(".chzn-select").chosen();
                    $(".chzn-select-deselect").chosen({
                        allow_single_deselect: true
                    });

                    $(document).on('click', '.add_im_value', function (event) {
                        var id = $(this).prop("id");
                        var index_master_id = id.split('_')[3];
                        var title = 'Add New Index Master Value';
                        var a_url = "dms/add_im_value_form.php?id=" + index_master_id + '&pid=' +<?php echo $pid; ?>;
                        $("#add_im_value").remove();
                        mypanel = $.jsPanel({
                            id: 'add_im_value',
                            contentType: 'overflow',
                            headerControls: {
                                maximize: 'remove',
                                smallify: 'remove'
                            },
                            headerTitle: title,
                            contentSize: {width: 800, height: 500},
                            theme: '#233a77',
                            contentAjax: {
                                url: a_url,
                                autoload: true
                            },
                        });
                    });
                });

                /*====DATE Time Picker====*/
                $(function () {

                    $('#datetimepicker1').datetimepicker({
                        language: 'pt-BR'
                    });

                });
                $(function () {
                    $('#datetimepicker3').datetimepicker({
                        pickDate: false
                    });



                });
                $(function () {
                    $('#datetimepicker4').datetimepicker({
                        pickTime: false
                    });
                });

                $(function () {
                    // validate signup form on keyup and submit
                    $("#EditForm").validate({
                        rules: {
                            dod: {
                                required: true,
                                IndianDate: true
                            }
                        },
                        messages: {
                            dod: "Please enter date of document"
                        },
                        submitHandler: function (form) {
                            var count = 0;

                            var ChosenDropDowns = $('.chzn-done');
                            ChosenDropDowns.each(function (index) {
                                var ID = $(this).attr("id");
                                if (!$(this).valid())
                                {
                                    $("#" + ID + "_chzn a").addClass("input-validation-error");
                                    count++;
                                } else
                                {
                                    $("#" + ID + "_chzn a").removeClass("input-validation-error");

                                }
                            });
                            if (count == 0)
                            {
                                basic_form_submit_msg('dms/dms_indexEdit.php', '', 'EditForm');
                            }
                        }
                    });

                    $.validator.addMethod(
                            "IndianDate",
                            function (value, element) {
                                // put your own logic here, this is just a (crappy) example
                                return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
                            },
                            "Please enter a date in the format dd/mm/yyyy."
                            );

                });


                $(function () {
                    var container = $('div.error-container ');
                    // validate the form when it is submitted
                    var validator = $("#form2").validate({
                        errorContainer: container,
                        errorLabelContainer: $("ol", container),
                        wrapper: 'li',
                        meta: "validate"
                    });
                    $(".cancel").click(function () {
                        validator.resetForm();
                    });
                    /*====DATE Time Picker====*/



                    $(document).on('click', '.btn-cancel', function () {
                        window.close();
                        //history.back(1);
                    });


                });

            </script>

            <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                $(document).ready(function () {
                    $(document).on('click', ".btn-next", function () {
                        var id = $("#nxt").val();
                        //alert(id);
                        document.getElementById("EditForm").action = 'index.php?rq=<?php echo encrypt_url("dms/dms_indexing.php", APP_ENCRYPTION_SALT); ?>&doc_id=' + id + '&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT) ?>';
                        document.getElementById("EditForm").submit();
                        document.getElementById("EditForm").target = "";
                        document.getElementById("EditForm").action = '';


                    });

                    $(document).on('click', ".btn-prev", function () {
                        var id = $("#prv").val();
                        //alert(id);
                        document.getElementById("EditForm").action = 'index.php?rq=<?php echo encrypt_url("dms/dms_indexing.php", APP_ENCRYPTION_SALT); ?>&doc_id=' + id + '&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT) ?>';
                        document.getElementById("EditForm").submit();
                        document.getElementById("EditForm").target = "";
                        document.getElementById("EditForm").action = '';


                    });
                });
            </script>

            <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                $(document).ready(function () {
                    /********************** Category List *********************/

                    //ajax_common_request("dms/category_path_a.php?pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&cateId=<?php echo $doc_details[0]['category_id']; ?>&path=<?php echo $category_path; ?>&doc_id=<?php echo $_REQUEST['doc_id']; ?>", 'div_category_path');
                    // ajax_common_request('dms/category_tags_a.php?alpha=all&cateId=<?php echo $doc_details[0]['category_id']; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&doc_id=<?php echo $_REQUEST['doc_id']; ?>', 'div_category_tags');

                    setTimeout(function () {

                    }, 1000);

                    /**********************************************************/


                });
                $(function () {

                    $('body').on('click', '.input-append', function () {
                        $(this).datetimepicker({
                            pickTime: false
                        });
                    });
                });
            </script>
            <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                $(function () {
                    var els = jQuery(".chzn-select-deselect");
                    els.chosen({no_results_text: "No results matched"});
                    els.on("liszt:showing_dropdown", function () {
                        $(this).parents("div").css("overflow", "visible");
                    });
                    els.on("liszt:hiding_dropdown", function () {
                        $(this).parents("div").css("overflow", "");
                    });
                });
            </script>  
            <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                $(function () {
                    $(document).on('click', '.show_previous_logs_modal', function () {
                        $('#file_logs').modal('show');
                        $.ajax({
                            type: "POST",
                            url: 'dms/document_logs.php',
                            data: {
                                doc_id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'},
                            beforeSend: function () {
                                $(".PopupPanel").show();
                            },
                            error: function (data) {
                                $(".PopupPanel").hide();
                            },
                            success: function (data) {
                                $(".PopupPanel").show();
                            },
                            complete: function (data) {

                                $(".PopupPanel").hide();
                                $("#file_logs_div").html(data.responseText)
                            }
                        });
                    });
                });
            </script>
            <div class="modal2 fade" id="file_logs" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false"  >
                <form class="modal-form" id="file_logs_form" method="post" action="#" >
                    <div class="modal-dialog2" style="width:750px;">
                        <div class="modal-content2">
                            <div class="modal-header2">
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                <h4 class="modal-title2" id="myModalLabel" style="color:steelblue;font-size:24px">Document Log</h4>

                        <!--                                <h2 class="label label-info" style="font-size:15px">Document ID: <?php echo $file_details[0]['doc_id'] ?></h2>&nbsp;&nbsp;
                        <h2 class="label label-info" style="font-size:15px">Document Name:   <?php echo $file_details[0]['title'] ?></h2>-->
                            </div>
                            <div class="modal-body2" style="overflow: scroll;height:350px;">                                           
                                <div id="file_logs_div"></div>
                            </div>
                            <div class="modal-footer2">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div><!-- /.modal-content -->
                    </div><!-- /.modal-dialog -->
                </form>
            </div>
            <div class="main-wrapper">
                <div class="container-fluid">
                    <div class="row-fluid ">
                        <div class="span12">
                            <div class="primary-head">
                                <h3 class="page-header"><?php echo $project_details[0]['project_name']; ?> - DMS 
                                    <button type="button" style="float:right" class="btn btn-primary show_previous_logs_modal" id="show_previous_logs_modal">View Logs</button>
                                </h3>
                            </div>
                            <ul class="breadcrumb">
                                <!--  sakshee   --> 
                                <span id= "nxt-prv" style="float:right;position: relative;top:-7px;">
                                    <span id="span_prv">

                                        <button class="btn btn-info btn-prev" title="previous" type="button" ><b><i class="icon-angle-left" ></i></b></button>
                                    </span>
                                    <span id="span_nxt">
                                        <button class="btn btn-info btn-next" title="next" type="button" ><b><i class="icon-angle-right"></i></b></button> 

                                    </span>
                                    <input type="hidden" id="prv" name="prv" value="0">    
                                    <input type="hidden" id="nxt" name="nxt" value="0">
                                </span>

                                <!--  end sakshee   --> 
                                <li><a href="index.php" class="icon-home"></a><span class="divider "><i class="icon-angle-right"></i></span></li>
                                <?php if (!$_SESSION[SESSION_VAR_NAME]['empdash']['dash_flag']) { ?>
                                    <li><a href="index.php?rq=<?php echo encrypt_url('deal_room/dealroom_dashboard.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>">Deal Room's List</a><span class="divider"><i class="icon-angle-right"></i></span></li>
                                    <li> <a href="index.php?rq=<?php echo encrypt_url('deal_room/dealroom_workspace.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>&itag=<?php echo encrypt_url('iworkspace', APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($project_details[0]['id'], APP_ENCRYPTION_SALT); ?>"><?php echo $project_details[0]['project_name']; ?> - Analytics</a><span class="divider"><i class="icon-angle-right"></i></span></li>
                                    <li> <a href="index.php?rq=<?php echo encrypt_url('dms/dms_dashboard.php', APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_dashboard.php", APP_ENCRYPTION_SALT); ?>&itag=<?php echo encrypt_url('imodule', APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($project_details[0]['id'], APP_ENCRYPTION_SALT); ?>">DMS</a><span class="divider"><i class="icon-angle-right"></i></span></li>
                                <?php } ?>
                                <li class="active">Indexing</li>						
                            </ul>
                        </div>
                    </div>
                    <div class="row-fluid">
                        <div class="span5">
                            <div class="content-widgets white">
                                <div class="widget-head blue">
                                    <h3> <i class="icon-file-alt"></i> Edit Indexing</h3>
                                </div>
                                <div class="widget-container">
                                    <div class="form-container grid-form form-background">
                                        <form class="form-horizontal left-align" id="EditForm" method="post" enctype="multipart/form-data" action="#">
                                            <input type="hidden" name="pid" value="<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>">    
                                            <input type="hidden" id="doc_id" name="id" value="<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>"> 

                                            <input type="hidden" id="actionIndex" name="actionIndex" value="actionIndex">
                                            <input type="hidden" id="doc_c_id" name="doc_c_id" value="<?php echo $doc_details[0]['category_id']; ?>"> 
                                            <input type="hidden" name="project_id" value="<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>">

                                            <input type="hidden" name="document_all" value="<?php echo encrypt_url($comparess, APP_ENCRYPTION_SALT); ?>">

                                            <div style="display:none">

                                                <div class="control-group">
                                                    <label class="control-label">Selected Category Path</label>
                                                    <div class="controls">
                                                        <ul class="breadcrumb2" id="div_category_path"></ul>
                                                    </div>
                                                </div>

                                                <div class="control-group">
                                                    <label class="control-label">Sub Categories</label>
                                                    <div class="controls">
                                                        <div id="div_category_tags">

                                                        </div>
                                                    </div>
                                                </div>  


                                                <div id="div_tags"></div>
                                            </div>


                                            <?php
                                            $IuserAccessRight = $Page->accesspermissions('413', $_SESSION[SESSION_VAR_NAME]['role']);
                                            $no_IuserAccessRight = count($IuserAccessRight);
                                            $Iaccess_type = array();
                                            foreach ($IuserAccessRight as $p_ar) {
                                                array_push($Iaccess_type, $p_ar['type']);
                                            }



                                            $Category = new category($db);
                                            $parent_category_details = $Category->getCategoryByID($doc_details[0]['category_id']);
                                            ?>
                                            <div class="control-group">
                                                <label class="control-label">Selected Category Path</label>
                                                <div class="controls">
                                                    <?php
                                                    for ($p = 1; $p < count($stack); $p++) {
                                                        $parent_category_details_1 = $Category->getCategoryByID($stack[$p]);
                                                        echo $parent_category_details_1[0]['category'];
                                                        if ($p != (count($stack) - 1)) {
                                                            echo ' > ';
                                                        }
                                                    }
                                                    ?>
                                                </div>
                                            </div>

                                            <!--                                        <div class="control-group">
                                                                                        <label class="control-label">Sub Categories</label>
                                                                                        <div class="controls">
                                                                                            <div id="div_category_tags">
                                            
                                                                                            </div>
                                                                                        </div>
                                                                                    </div>  -->


                                            <div class="control-group">
                                                <label class="control-label">Doc id</label>
                                                <div class="controls">
                                                    <?php echo $doc_details[0]['doc_id'] ?>
                                                </div>
                                            </div>
                                            <div class="control-group">
                                                <label class="control-label">Title</label>
                                                <div class="controls">
                                                    <?php echo $doc_details[0]['new_title'] ?> 
                                                </div>
                                            </div>
                                            <?php
                                            $QCuserAccessRight = $Page->accesspermissions('419', $_SESSION[SESSION_VAR_NAME]['role']);
                                            $no_QCuserAccessRight = count($QCuserAccessRight);
                                            $QCaccess_type = array();
                                            foreach ($QCuserAccessRight as $p_ar) {
                                                array_push($QCaccess_type, $p_ar['type']);
                                            }
                                            if (in_array('3', $QCaccess_type)) {
                                                ?>
                                                <div class="control-group">
                                                    <label class="control-label">Status</label>
                                                    <div class="controls">
                                                        <button type="button" style="float:right" class="btn btn-primary show_previous_comments_modal" id="show_previous_comments_modal">File Status Comments</button>                                                                                

                                                        <label class="radio">
                                                            <input name="status" value="Approved" class="comment" <?php
                                                            if ($doc_details[0]['status'] == 'Approved') {
                                                                echo "checked";
                                                            }
                                                            ?> type="radio">Approved</label>
                                                        <label class="radio">
                                                            <input name="status" value="Unapproved" class="comment" <?php
                                                            if ($doc_details[0]['status'] == 'Unapproved') {
                                                                echo "checked";
                                                            }
                                                            ?> type="radio">Unapproved</label>
                                                        <label class="radio">
                                                            <input name="status" value="Rejected" class="comment" <?php
                                                            if ($doc_details[0]['status'] == 'Rejected') {
                                                                echo "checked";
                                                            }
                                                            ?> type="radio">Rejected</label>
                                                    </div>
                                                </div>
                                                <div class="status_comment_div hide">
                                                    <label class="control-label">Comment</label>
                                                    <div class="controls">
                                                        <textarea id="status_comment" name="status_comment" rows="3" class="span8" placeholder="Enter reason for change of status..." required="true"></textarea><br/>
                                                        <span class="label label-important">* Comment once submitted, cannot be edited.</span><br/>
                                                    </div>
                                                </div>
                                                <?php
//                                            if ($perpetual_status[0]['perpetual'] == '0') {
                                                if ($doc_life_cycle_id[0]['status'] == '1') {
                                                    ?>
                                                    <div class="control-group">
                                                        <label class="control-label">Perpetual</label>
                                                        <div class="controls">
                                                            <input type="checkbox" id="perpetual" class="perpetual" name="perpetual" value="perpetual"  style="border:0; background:transparent; "
                                                            <?php
                                                            $perpetual_status_a = $File->getDocumentDetailsByID_IfArchived($id);
                                                            if ($perpetual_status_a[0]['doc_life_cycle'] == 'perpetual') {
                                                                echo "checked";
                                                            }
                                                            if ($perpetual_status[0]['perpetual'] == 1 || !empty($parent_doc_details)) {

                                                                echo ' disabled="disabled" ';
                                                            }
                                                            ?>
                                                                   />                                 
                                                        </div>
                                                    </div>          
                                                    <?php
                                                }
                                            } else {
                                                ?>
                                                <div class="control-group">
                                                    <label class="control-label">QC Approval</label>
                                                    <div class="controls">
                                                        <input name="status" type="hidden" value="<?php echo $doc_details[0]['status']; ?>">
                                                        <?php echo $doc_details[0]['status']; ?>

                                                    </div>
                                                </div>
                                                <div class="status_comment_div hide">
                                                    <label class="control-label">Comment</label>
                                                    <div class="controls">
                                                        <textarea id="status_comment" name="status_comment" rows="3" class="span8" placeholder="Enter reason for change of status..." required="true"></textarea><br/>
                                                        <span class="label label-important">* Comment once submitted, cannot be edited.</span><br/>
                                                    </div>
                                                </div>
                                                <?php
                                            }
                                            ?>
                                            <div class="control-group">
                                                <label class="control-label">Doc Set Type</label>
                                                <div class="controls">
                                                    <?php
                                                    $IndexMaster = new index_master($db);
                                                    $IndexMaster->setCategoryId($doc_details[0]['category_id']);
                                                    $details = $IndexMaster->getIndexMasterByCategory();

                                                    $Doc_Set_Obj = new doc_set($db);
                                                    $join = '';
                                                    if (!($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['role'] == 2)) {
                                                        $join = "JOIN doc_set_permissions as ds ON ds.user_group = '" . $_SESSION[SESSION_VAR_NAME]['role'] . "' AND ds.doc_set_dropdown_value_id = dsd.id AND ds.edit_r = 1";
                                                    }
                                                    $fielddropdowndetails = $Doc_Set_Obj->getAll_doc_set_dropdown_values_By_Ids($details[0]['doc_set_ids'], $join);

                                                    $details_doc_set = $Doc_Set_Obj->get_dropdown_field_value_by_id($doc_details[0]['doc_type']);
                                                    //echo $details_doc_set[0]['dropdown_name'];
                                                    ?>
                                                    <select style="width:250px" name="doc_type" class="chzn-select span10">
                                                        <option value=""></option>
                                                        <?php
                                                        for ($t = 0; $t < count($fielddropdowndetails); $t++) {
                                                            ?>
                                                            <option value="<?php echo $fielddropdowndetails[$t]['id']; ?>" <?php
                                                            if ($details_doc_set[0]['id'] == $fielddropdowndetails[$t]['id']) {
                                                                echo ' Selected';
                                                            }
                                                            ?>><?php echo $fielddropdowndetails[$t]['dropdown_name'];
                                                            ?></option><?php
                                                        }
                                                        ?>
                                                    </select>
                                                </div>
                                            </div>

                                            <div class="content-widgets">
                                                <div>
                                                    <div class="widget-header-block">
                                                        <h4 class="widget-header">Indexing</h4>
                                                    </div>
                                                    <div class="content-box">
                                                        <div class="well">

                                                            <?php
                                                            $category_id = $doc_details[0]['category_id'];
                                                            $master = new index_master($db);
                                                            $index = new index_group($db);
                                                            $master->setCategoryId($category_id);
                                                            $indexing_details = $master->getIndexingLinkByCategory();
                                                            $index_groups = @explode(',', $indexing_details[0]['index_group_id']);
                                                            $no_index_groups = count($index_groups);
                                                            $index_master = @explode(',', $indexing_details[0]['index_master_id']);
                                                            $no_index_master = count($index_master);
                                                            ?> 
                                                            <!--                                                        <h5>Index Group</h5>
                                                                                                                    <hr style="border-color:#c7bfbd">-->
                                                            <?php
                                                            if (empty($index_groups) || $index_groups[0] == '') {
                                                                ?>
                                                                <span class="label">No Index Groups tagged with this category!</span>
                                                                <br><br>
                                                                <?php
                                                            } else {
                                                                for ($k = 0; $k < $no_index_groups; $k++) {
                                                                    $index_show = $index->getIndexGroup_ById($index_groups[$k]);
                                                                    $index_values = $index->getIndexValue_ByDoc_ID('_dynamic_ig_' . $index_show[0]['id'], $id);
                                                                    //print_r($index_values);
                                                                    if (empty($index_values)) {
                                                                        ?><input type="hidden" name="index_group_value_exist[]" value='notexist'>
                                                                        <input type="hidden" name="index_group_value_record[]" value=''> 
                                                                        <?php
                                                                    } else {
                                                                        ?><input type="hidden" name="index_group_value_exist[]" value='exist'>
                                                                        <input type="hidden" name="index_group_value_record[]" value='<?php echo $index_values[0]['id'] ?>'>  <?php
                                                                    }
                                                                    ?>
                                                                    <input type="hidden" name="index_group_id[]" value="<?php echo $index_show[0]['id']; ?>"/>
                                                                    <h5>Index Group (<?php echo $index_show[0]['index_group'] ?>)</h5>
                                                                    <hr style="border-color:#c7bfbd">
                                                                    <input type="button" style="margin-left:420px" id="<?php echo 'button_' . $index_show[0]['id']; ?>" title="Clear Indexing" value="X"/>
                                                                    <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                                                                        $(document).on('click', '#button_<?php echo $index_show[0]['id']; ?>', function () {
                                                                            var elements = [];

                                                                            elements = document.getElementsByClassName('button_clear_<?php echo $index_show[0]['id']; ?>');

                                                                            for (var i = 0; i < elements.length; i++) {
                                                                                //alert(elements[i].value);
                                                                                elements[i].value = "";
                                                                                $('.button_clear_<?php echo $index_show[0]['id']; ?> option').prop('selected', false);
                                                                                $('.button_clear_<?php echo $index_show[0]['id']; ?>').trigger('liszt:updated');


                                                                            }

                                                                        });
                                                                    </script>

                                                                    <?php
                                                                    if ($index_show[0]['id'] != '') {
                                                                        $index_fields = $index->getIndexField_ByIGId($index_show[0]['id']);
                                                                        if (!empty($index_fields) && $index_fields[0] != '') {
                                                                            for ($ig_field = 0; $ig_field < count($index_fields); $ig_field++) {
                                                                                $field_type = $index_fields[$ig_field]['field_type'];
                                                                                $field_name = $index_fields[$ig_field]['field_name'];

                                                                                if ($field_type == "Dropdown") {
                                                                                    //$doc_rights = new doc_rights($db);
                                                                                    //$page_tag_details = $doc_rights->getPageTags_byIndex($id, $index_show[0]['id'], $index_fields[$ig_field]['id']);
                                                                                    ?>

                                                                                                                                                                                                                                                                    <!--<script nonce=<?php //echo $_SESSION[SESSION_VAR_NAME]['usernonce'];                         ?>>

                                                                                                                                                                                                                                                                    <!--<script nonce=<?php //echo $_SESSION[SESSION_VAR_NAME]['usernonce'];          ?>>



                                                                                                                                                                                                                                                                    $(document).on('click', '.page_tag_<?php //echo $index_show[0]['id'];                         ?>', function () {
                                                                                                                                                                                                                                                                    var id = this.id;

                                                                                                                                                                                                                                                                    $(document).on('click', '.page_tag_<?php //echo $index_show[0]['id'];          ?>', function () {
                                                                                                                                                                                                                                                                    var id = this.id;



                                                                                                                                                                                                                                                                    //  $(this).closest('div').find('.chzn-selects').attr('disabled', true);
                                                                                                                                                                                                                                                                    var id_arr = id.split("-");
                                                                                                                                                                                                                                                                    //alert(id_arr);
                                                                                                                                                                                                                                                                    if ($('.page_tag_<?php //echo $index_show[0]['id'];                         ?>').is(':checked')) {
                                                                                                                                                                                                                                                                    //alert(id);
                                                                                                                                                                                                                                                                    //
                                                                                                                                                                                                                                                                    $("#sel-" + id_arr[1]).val('').prop('disabled', false);
                                                                                                                                                                                                                                                                    $("#select-" + id_arr[1]).prop('disabled', true).trigger("liszt:updated");
                                                                                                                                                                                                                                                                    } else {
                                                                                                                                                                                                                                                                    //alert("#select-" + id_arr[1]);
                                                                                                                                                                                                                                                                    var val = $("#select-" + id_arr[1]).val();
                                                                                                                                                                                                                                                                    $("#sel-" + id_arr[1]).val(val).prop('disabled', true);
                                                                                                                                                                                                                                                                    $("#select-" + id_arr[1]).prop('disabled', false).trigger("liszt:updated");
                                                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                                                    //  $(this).closest('div').find('.chzn-selects').attr('disabled', true);
                                                                                                                                                                                                                                                                    var id_arr = id.split("-");
                                                                                                                                                                                                                                                                    //alert(id_arr);
                                                                                                                                                                                                                                                                    if ($('.page_tag_<?php //echo $index_show[0]['id'];          ?>').is(':checked')) {
                                                                                                                                                                                                                                                                    //alert(id);
                                                                                                                                                                                                                                                                    //
                                                                                                                                                                                                                                                                    $("#sel-" + id_arr[1]).val('').prop('disabled', false);
                                                                                                                                                                                                                                                                    $("#select-" + id_arr[1]).prop('disabled', true).trigger("liszt:updated");
                                                                                                                                                                                                                                                                    } else {
                                                                                                                                                                                                                                                                    //alert("#select-" + id_arr[1]);
                                                                                                                                                                                                                                                                    var val = $("#select-" + id_arr[1]).val();
                                                                                                                                                                                                                                                                    $("#sel-" + id_arr[1]).val(val).prop('disabled', true);
                                                                                                                                                                                                                                                                    $("#select-" + id_arr[1]).prop('disabled', false).trigger("liszt:updated");
                                                                                                                                                                                                                                                                    }



                                                                                                                                                                                                                                                                    });</script>

                                                                                                            });</script>-->

                                                                                    <?php
//                                                                                    $sql_cond = '';
//                                                                                    if ($index_fields[$ig_field]['doc_set_flag'] == 1) {
//                                                                                        if ($_SESSION[SESSION_VAR_NAME]['role'] != 1 && $_SESSION[SESSION_VAR_NAME]['role'] != 2) {
//                                                                                            $sql_cond = "JOIN doc_set_permissions dp On dp.doc_set_dropdown_value_id = iv.doc_set_dropdown_id AND dp.user_id = '" . $_SESSION[SESSION_VAR_NAME]['user_id'] . "' AND dp.view_r = '1'";
//                                                                                        }
//                                                                                    }
                                                                                    //$fielddropdowndetails = $index->getFieldValueByDocTypePermission($index_fields[$ig_field]['id'], $sql_cond);
                                                                                    $fielddropdowndetails = $index->getFieldValue($index_fields[$ig_field]['id']);
                                                                                    ?>
                                                                                    <div class="control-group"  >
                                                                                        <label class="control-label"> <?php echo $field_name; ?></label>

                                                                                        <div class="controls">
                                                                                            <select name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" 

                                                                                                    <?php
                                                                                                    if ($index_fields[$ig_field]['mandatory'] == '1') {
                                                                                                        echo ' required ';
                                                                                                    }
                                                                                                    /* if (!empty($page_tag_details)) {
                                                                                                      echo ' disabled';
                                                                                                      } */
                                                                                                    ?> id="select-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>" 
                                                                                                    class="chzn-select-deselect span10 selecx_box validate_fun button_clear_<?php echo $index_show[0]['id']; ?>"  


                                                                                                    >
                                                                                                <option value=""></option>
                                                                                                <?php
                                                                                                for ($t = 0; $t < count($fielddropdowndetails); $t++) {
                                                                                                    ?>
                                                                                                    <option value="<?php echo $fielddropdowndetails[$t]['id']; ?>" <?php
                                                                                                    if ($index_values[0]['ig_field_' . $index_fields[$ig_field]['id']] == $fielddropdowndetails[$t]['id']) {
                                                                                                        echo ' Selected';
                                                                                                    }
                                                                                                    ?>><?php echo $fielddropdowndetails[$t]['field_values'];
                                                                                                    ?></option><?php
                                                                                                }
                                                                                                ?>
                                                                                            </select>
                                                                                            <?php
                                                                                            /* if ($index_fields[$ig_field]['page_tag'] == '1') {
                                                                                              if (!empty($page_tag_details)) {
                                                                                              ?>
                                                                                              <input type="hidden" id="sel-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>" name="index_value_<?php echo $index_show[0]['id']; ?>[]" value=" ">
                                                                                              <br><input type="checkbox" value="1" id="id-<?php echo $index_fields[$ig_field]['id'] . '_' . $index_show[0]['id']; ?>" class="page_tag_<?php echo $index_show[0]['id']; ?>" name="disable_page_tag_<?php echo $index_show[0]['id']; ?>"  checked> Page Tagged
                                                                                              <?php
                                                                                              }
                                                                                              } */
                                                                                            ?>
                                                                                        </div>
                                                                                    </div>



                                                                                    <?php
                                                                                } else if ($field_type == "date") {
                                                                                    ?>
                                                                                    <div class="control-group"  >
                                                                                        <label class="control-label"> <?php echo $field_name; ?></label>

                                                                                        <div class="controls">
                                                                                            <div id="datetimepicker_index" class="input-append">

                                                                                                <input  style="width:153px" class="validate_fun button_clear_<?php echo $index_show[0]['id']; ?>" id="dod_index" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>" data-format="dd/MM/yyyy" type="text"  
                                                                                                <?php
                                                                                                if ($index_fields[$ig_field]['mandatory'] == '1') {
                                                                                                    echo ' " required "';
                                                                                                }
                                                                                                ?>
                                                                                                        value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>"    />
                                                                                                <span class="add-on"><i class="icon-calendar" data-time-icon="icon-time" data-date-icon="icon-calendar"></i></span>
                                                                                            </div>      
                                                                                        </div>
                                                                                    </div>


                                                                                    <?php
                                                                                } else if ($field_type == "Numeric") {
                                                                                    ?>
                                                                                    <script type="text/javascript" nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>

                                                                                        /*====Select Box====*/
                                                                                        $(function () {

                                                                                            $("#index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>").rules('add', {
                                                                                                num1_index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>: true
                                                                                            });
                                                                                            jQuery.validator.addMethod("num1_index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>", function (value, element)
                                                                                            {

                                                                                                var regEx = new RegExp(/^[0-9]*$/i);
                                                                                                return this.optional(element) || regEx.test(value);
                                                                                            }, "<?php echo "Please enter a valid Numeric value" ?>");
                                                                                        });</script>
                                                                                    <div class="control-group"  >
                                                                                        <label class="control-label"> <?php echo $field_name; ?></label>

                                                                                        <div class="controls">
                                                                                            <input type="text" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>"   <?php
                                                                                            if ($index_fields[$ig_field]['mandatory'] == '1') {
                                                                                                echo ' required ';
                                                                                            }
                                                                                            ?> class="span10 validate_fun button_clear_<?php echo $index_show[0]['id']; ?>" id="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>"   value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>"/>
                                                                                        </div>
                                                                                    </div>


                                                                                    <?php
                                                                                } else {
                                                                                    ?>

                                                                                    <div class="control-group"  >
                                                                                        <label class="control-label"> <?php echo $field_name; ?></label>

                                                                                        <div class="controls">
                                                                                            <input type="text" name="index_value_<?php echo $index_show[0]['id'] . "_" . $index_fields[$ig_field]['id']; ?>"   <?php
                                                                                            if ($index_fields[$ig_field]['mandatory'] == '1') {
                                                                                                echo ' required ';
                                                                                            }
                                                                                            ?> class="span10 validate_fun button_clear_<?php echo $index_show[0]['id']; ?>"  value="<?php echo $index_values[0]['ig_field_' . $index_fields[$ig_field]['id']]; ?>"/>
                                                                                        </div>
                                                                                    </div>


                                                                                    <?php
                                                                                }
                                                                                ?>
                                                                                <input type="hidden" name="field_type_<?php echo $index_show[0]['id']; ?>[]" value="<?php echo $field_type; ?>"/>
                                                                                <input type="hidden" name="field_ids_<?php echo $index_show[0]['id']; ?>[]" value="<?php echo $index_fields[$ig_field]['id']; ?>"/>

                                                                                <?php
                                                                            }
                                                                        }
                                                                    }
                                                                    ?>






                                                                    <br>
                                                                    <?php
                                                                }
                                                            }
                                                            ?>
                                                            <!--                                                        <h5>Index Master</h5> 
                                                                                                                    <hr style="border-color:#c7bfbd">-->
                                                            <?php
                                                            if (empty($index_master) || $index_master[0] == '') {
                                                                ?>
                                                                <span class="label">No Index Master tagged with this category!</span>
                                                                <?php
                                                            } else {
                                                                for ($ma = 0; $ma < $no_index_master; $ma++) {
                                                                    $index_master_details = $master->getIndexMaster_ById($index_master[$ma]);
                                                                    $master_values = $index->getIndexValue_ByDocIdANDMasterID($id, $index_master_details[0]['id']);
                                                                    $record_values = array();
                                                                    for ($mv = 0; $mv < count($master_values); $mv++) {
                                                                        array_push($record_values, $master_values[$mv]['index_master_value_id']);
                                                                    }
                                                                    $rec_str = @join(',', $record_values);
                                                                    ?>
                                                                    <input type="hidden" name="index_master_id[]" value="<?php echo $index_master_details[0]['id']; ?>"/>

                                                                    <h5>Index Master (<?php echo $index_master_details[0]['index_master'] ?>)</h5> 
                                                                    <hr style="border-color:#c7bfbd">
                                                                    <?php
                                                                    $category_index_master = $master->getIndexMasterMandatoryByIM_Category($category_id, $index_master_details[0]['id']);
                                                                    if (!empty($category_index_master)) {
                                                                        echo "<input type='hidden' name='mandatory_index_master' value='" . $index_master_details[0]['id'] . "'> (Mandatory)";
                                                                    }
                                                                    ?>
                                                                    <div class="" id="s_div_index_master_<?php echo $index_master_details[0]['id']; ?>">

                                                                    </div>



                                                                    <div id="s_div_index_master_search_content_<?php echo $index_master_details[0]['id']; ?>">

                                                                        <div id="s_div_index_master_fields_<?php echo $index_master_details[0]['id']; ?>">
                                                                        </div>


                                                                    </div>
                                                                    <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                                                                        $(function () {
                                                                            ajax_common_request('dms/si_index_master_byindex.php?id=<?php echo $index_master_details[0]['id']; ?>&record_id=<?php echo $rec_str; ?>&width=203', 's_div_index_master_<?php echo $index_master_details[0]['id']; ?>');
                                                                        });
                                                                    </script>



                                                                    <?php
                                                                }
                                                            }
                                                            ?>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>

                                            <hr></hr>
                                            <div class = "content-widgets">




                                                <div class = "form-actions">
                                                    <button type = "button" id = "submitbtn" class = "btn btn-primary">Update</button>
                                                    <?php
                                                    if ($next_id != '') {
                                                        ?>
                                                        <a id="<?php echo encrypt_url($next_id, APP_ENCRYPTION_SALT); ?>" class="next" title="Next" class="table_tool_link" >
                                                            <button class="btn btn-info" type="button" ><b>Next</b></button></a>  
                                                    <?php }
                                                    ?>
                                                    <button type="button" class="btn btn-cancel">Cancel</button>
                                                </div>


                                            </div>
                                        </form>  
                                    </div>
                                </div>
                            </div>
                        </div>

                        <div id='div_preview_indexing' class="span7">
                            <?php // include_once('dms_indexing_incl.php');    ?>
                        </div>
                    </div>
                </div>
            </div>

            <style>
                .modal-dialog2  {width:850px;}
            </style>

            <div class="modal2 fade" id="s_masterindex_search_popup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
                <form class="modal-form" id="s_index_popupform" method="post" action="#">
                    <div class="modal-dialog2">
                        <div class="modal-content2">
                            <div class="modal-header2">
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                <h4 class="modal-title2" id="myModalLabel">Index Master Search Results</h4>
                            </div>
                            <div class="modal-body2" style="height: 400px;overflow: scroll;">                 

                                <div id="s_masterindex_search_popup_content" ></div>

                            </div>
                            <div class="modal-footer2">
                                <button type="button" class="btn btn-success popup_sel_btn">Select</button>
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

                            </div>
                        </div><!-- /.modal-content -->
                    </div><!-- /.modal-dialog -->
                </form>
            </div>

            <div class="modal2 fade" id="s_masterindex_info_popup" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
                <form class="modal-form" id="s_index_info_popupform" method="post" action="#">
                    <div class="modal-dialog2">
                        <div class="modal-content2">
                            <div class="modal-header2">
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                <h4 class="modal-title2" id="myModalLabel">Index Master Record Details</h4>
                            </div>
                            <div class="modal-body2" style="overflow: scroll;">                 

                                <div id="s_masterindex_info_popup_content" ></div>

                            </div>
                            <div class="modal-footer2">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

                            </div>
                        </div><!-- /.modal-content -->
                    </div><!-- /.modal-dialog -->
                </form>
            </div>
            <div class="modal2 fade" id="file_status_comments" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true" data-backdrop="static" data-keyboard="false" >
                <form class="modal-form" id="file_status_comments_form" method="post" action="#">
                    <div class="modal-dialog2">
                        <div class="modal-content2">
                            <div class="modal-header2">
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                <h4 class="modal-title2" id="myModalLabel">File Status Comments</h4>
                            </div>
                            <div class="modal-body2" style="overflow: scroll;">                 
                                <div id="file_status_comments_div" ></div>
                            </div>
                            <div class="modal-footer2">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                            </div>
                        </div><!-- /.modal-content -->
                    </div><!-- /.modal-dialog -->
                </form>
            </div>


            <script nonce =<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?> >
                $(function () {


                    $("#s_div_index_master_search").hide();
                    $(document).on("change", ".class_im_fields", function () {


                        var index_master_fid = $(this).prop('value').split('|')[0];
                        var index_master_id = $(this).prop('value').split('|')[1];
                        if (index_master_fid != '') {
                            $("#s_div_index_master_search").show();
                            ajax_common_request('dms/si_index_master_fields_search_val.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&index_master_fid=' + index_master_fid + '&index_master_id=' + index_master_id + '&search_by_fields=true', 's_div_index_master_field_search_val_' + index_master_id);
                        } else {

                            var index_master_id = $(this).prop('id').split('_')[4];
                            $('#s_div_index_master_field_search_val_' + index_master_id).html("");
                        }

                    });
                    $(document).on("change keyup focusin", ".class_index_master_field_val", function () {
                        var index_master_fid = $(this).prop('name').split('_')[4];
                        var master_id = $(this).prop('name').split('_')[5];
                        var sel_value = $(this).prop('value');
                        ajax_common_request('dms/si_index_master_field_check.php?master_id=' + master_id + '&index_master_fid=' + index_master_fid + '&sel_value=' + encodeURIComponent(sel_value), 'field_val_match_' + index_master_fid);
                    });
                    $(document).on("click", ".class_im_info, .btn_im_info", function () {
                        //var index_master_search_field_id = $(this).prop('value');
                        //ajax_common_request('dms/si_index_master_fields_search_val.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&index_master_search_field_id=' + index_master_search_field_id + '&search_by_fields=true', 's_div_index_master_field_search_val');

                        $('#s_masterindex_info_popup').modal('show');
                        var id = $(this).prop('id').split("_");
                        var r_id = id[0];
                        var master_id = id[1];
                        $.ajax({
                            type: "POST",
                            url: 'dms/si_index_master_info.php?r_id=' + r_id + '&master_id=' + master_id,
                            data: '',
                            beforeSend: function () {
                                $(".PopupPanel").show();
                            },
                            error: function (data) {
                                $(".PopupPanel").hide();
                                //bootbox.alert("Request failed");
                            },
                            success: function (data) {
                                $(".PopupPanel").show();
                            },
                            complete: function (data) {

                                $(".PopupPanel").hide();
                                $("#s_masterindex_info_popup_content").html(data.responseText)

                            }
                        });
                    });
                    $(document).on("click", ".class_im_search", function () {
                        $('#s_masterindex_search_popup').modal('show');
                        var index_master_fid = $(this).prop('id').split('_')[3];
                        var master_id = $(this).prop('id').split('_')[4];
                        var search_val = $(this).prop('id').split('_')[5];
                        $.ajax({
                            type: "POST",
                            url: 'dms/si_index_master_fields_search_result.php?page=1&field_id=' + index_master_fid + '&master_id=' + master_id + '&search_val=' + encodeURIComponent(search_val),
                            data: $('#EditForm').serialize(),
                            beforeSend: function () {
                                $(".PopupPanel").show();
                            },
                            error: function (data) {
                                $(".PopupPanel").hide();
                                //bootbox.alert("Request failed");
                            },
                            success: function (data) {
                                $(".PopupPanel").show();
                            },
                            complete: function (data) {

                                $(".PopupPanel").hide();
                                $("#s_masterindex_search_popup_content").html(data.responseText)

                            }
                        });
                    });
                    $(document).on("click", ".s_btn_index_field_search", function () {

                        var index_master_id = $("#sel_field_index_master_id").prop('value');
                        var selected_master_index_id_arr = [];
                        $('input[name^=selected_index_master_id_' + index_master_id + ']').each(function () {
                            selected_master_index_id_arr.push($(this).val());
                        });
                        //alert(index_master_id);
                        //alert(selected_master_index_id_arr);

                        if (jQuery.inArray(index_master_id, selected_master_index_id_arr) == -1) {
                            $('#s_masterindex_search_popup').modal('show');
                            var index_master_fid = $("#s_index_master_fid").prop('value');
                            $.ajax({
                                type: "POST",
                                url: 'dms/si_index_master_fields_search_result.php?page=1',
                                data: $('#EditForm').serialize(),
                                beforeSend: function () {
                                    $(".PopupPanel").show();
                                },
                                error: function (data) {
                                    $(".PopupPanel").hide();
                                    //bootbox.alert("Request failed");
                                },
                                success: function (data) {
                                    $(".PopupPanel").show();
                                },
                                complete: function (data) {

                                    $(".PopupPanel").hide();
                                    $("#s_masterindex_search_popup_content").html(data.responseText)

                                }
                            });
                        } else {
                            bootbox.alert("Already Index Master Record Selected!");
                        }

                    });

                    /*
                     $(document).on("click", ".popup_sel_btn", function () {
                     var id = $('input:radio[name=sel_pop_record_set_id]:checked').val();
                     var sel_pop_record_set_id = id.split("_")[0];
                     var master_id = id.split("_")[1];
                     var field_id = id.split("_")[2];
                     var selected_record_set_id_arr = [];
                     $('input[name^=selected_record_set_id_' + master_id + ']').each(function () {
                     selected_record_set_id_arr.push($(this).val());
                     });
                     var selected_master_index_id_arr = [];
                     $('input[name^=selected_master_index_id]').each(function () {
                     selected_master_index_id_arr.push($(this).val());
                     });
                     var s_pop_search_fid = $("#s_pop_search_fid").prop('value');
                     var s_pop_index_master_id = $("#s_pop_index_master_id").prop('value')
                     var s_pop_field_match_val = $("#s_pop_field_match_val_" + master_id).prop('value');
                     $("input[name=index_master_field_val_" + s_pop_search_fid + '_' + s_pop_index_master_id + ']').prop("value", s_pop_field_match_val);
                     $('#s_masterindex_search_popup').modal('hide');
                     bootbox.hideAll();
                     selected_record_set_id_arr.push(sel_pop_record_set_id);
                     ajax_common_request('dms/si_index_master_field_check.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&record_set_id=' + sel_pop_record_set_id + '&master_id=' + master_id + '&index_master_fid=' + field_id, 'field_val_match_' + s_pop_search_fid);
                     });*/

                    $(document).on("click", ".popup_sel_btn", function () {

                        var selected_record_set_id_arr = [];
                        var master_id_arr = [];
                        var field_id_arr = [];
                        var searchIDs = $("input:checkbox[name=sel_pop_record_set_id]:checked").map(function () {
                            var id = $(this).val();
                            var sel_pop_record_set_id = id.split("_")[0];
                            var master_id = id.split("_")[1];
                            var field_id = id.split("_")[2];
                            selected_record_set_id_arr.push(sel_pop_record_set_id);
                            master_id_arr.push(master_id);
                            field_id_arr.push(field_id);
                            return sel_pop_record_set_id;
                        }).get();
                       
                        $('#s_masterindex_search_popup').modal('hide');
                        bootbox.hideAll();
                        
                        if (selected_record_set_id_arr.length > 0) {
                            var index_master_id = master_id_arr[0];                            
                            var s_pop_search_fid = $("#s_pop_search_fid").prop('value');
                            var s_pop_index_master_id = $("#s_pop_index_master_id").prop('value')
                            var s_pop_field_match_val = $("#s_pop_field_match_val_" + index_master_id).prop('value');
                            $("input[name=index_master_field_val_" + s_pop_search_fid + '_' + s_pop_index_master_id + ']').prop("value", s_pop_field_match_val);

                            var exists_record_set_id = [];
                            $('[id^=divimselrset]').each(function () {
                                //divimselrset_2_2
                                var id = $(this).prop("id");
                                var master_id = id.split("_")[1];
                                var record_set_id = id.split("_")[2];
                                exists_record_set_id.push(master_id + '_' + record_set_id);
                            });

                            $.ajax({
                                type: "POST",
                                url: 'dms/si_index_master_field_check.php?doc_id=<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&record_set_id=' + selected_record_set_id_arr + '&master_id=' + master_id_arr + '&index_master_fid=' + field_id_arr + '&exists_record_set_id=' + exists_record_set_id,
                                beforeSend: function () {
                                    $(".PopupPanel").show();
                                },
                                error: function (data) {
                                    $(".PopupPanel").hide();
                                },
                                success: function (data) {
                                    $(".PopupPanel").show();
                                },
                                complete: function (data) {

                                    $(".PopupPanel").hide();
                                    //$("#file_status_comments_div").html(data.responseText);
                                    $("#s_im_sel_recordsets_" + index_master_id).append(data.responseText);

                                }
                            });
                        }

                    });

                    $(document).on("click", '#submitbtn', function (e) {

                        var autoIndex = $('#autoIndexing:checked').val();
                        var selected_master_index_id_arr = [];
                        $('input[name^=selected_index_master_id]').each(function () {
                            //alert($(this).val());
                            selected_master_index_id_arr.push($(this).val());
                        });
                        //alert(selected_master_index_id_arr);

                        var mandatory_index_master_arr = [];
                        var x = 0;
                        $('input[name^=mandatory_index_master]').each(function () {
                            var m_selected_record_set_id_arr = 0;
                            $('input[name^=f_selected_record_set_id_' + $(this).val() + ']').each(function () {
                                m_selected_record_set_id_arr = 1;
                            });
                            $('input[name^=selected_record_set_id_o_' + $(this).val() + ']').each(function () {
                                m_selected_record_set_id_arr = 1;
                            });
                            //alert(m_selected_record_set_id_arr);
                            if (m_selected_record_set_id_arr == 0) {
                                bootbox.alert('Please Choose Mandatory Index Master');
                                e.preventDefault();
                                exit(0);
                            } else {
                                x++;
                            }



                            mandatory_index_master_arr.push($(this).val());
                        });
                        //s
                        //alert(mandatory_index_master_arr.length);




                        if (x == mandatory_index_master_arr.length) {

                            $('#EditForm').submit();
                            exit(0);
                        }
                    });
                    $(document).on("click", '.class_im_move', function (e) {


                        var c_id1 = $(this).prop('id').split('_')[1];
                        var selected_index_master_id = c_id1.split('|')[1];
                        var selected_record_set_id = c_id1.split('|')[0];
                        var show_val = c_id1.split('|')[2];
                        var sel_f_text = $("#s_index_master_fid_" + selected_index_master_id + ' option:selected').text();
                        var sel_f_id = $("#s_index_master_fid_" + selected_index_master_id).val().split('|')[0];
                        var sel_f_value = $("input[name=index_master_field_val_" + sel_f_id + '_' + selected_index_master_id + "]").val();
                        if (sel_f_value == undefined)
                        {
                            sel_f_value = show_val;
                        }
                        var f_selected_record_set_id_arr = [];
                        $('input[name^=f_selected_record_set_id_' + selected_index_master_id + ']').each(function () {
                            f_selected_record_set_id_arr.push($(this).val());
                        });

                        $('input[name^=selected_record_set_id_o_' + selected_index_master_id + ']').each(function () {
                            f_selected_record_set_id_arr.push($(this).val());
                        });
                        if (jQuery.inArray(selected_record_set_id, f_selected_record_set_id_arr) == -1) {
                            //$("#s_im_sel_recordsets_" + selected_index_master_id).append('');
                            //$("#s_im_sel_recordsets_" + selected_index_master_id).append('');

                            $("#s_im_sel_recordsets_" + selected_index_master_id).append('<div id="divimselrset_' + selected_index_master_id + '_' + selected_record_set_id + '" class="row-fluid"><div class="span12"><input type="hidden" name="f_selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_index_master_id_' + selected_index_master_id + '" value="' + selected_index_master_id + '"><span id="' + selected_record_set_id + '_' + selected_index_master_id + '" style="cursor: pointer" class="class_im_info label">' + sel_f_text + ': ' + sel_f_value + '</span><span id="labelimremove_' + selected_index_master_id + '_' + selected_record_set_id + '" class="class_im_remove label label-important" style="cursor: pointer" ><i class="icon-remove"></i></span></div></div> ');
                            //  $("#s_im_sel_recordsets_" + selected_index_master_id).append('<div id="divimselrset_' + selected_index_master_id + '_' + selected_record_set_id + '" class="row-fluid"><div class="span12"><input type="hidden" name="selected_index_master_id_' + selected_index_master_id + '" value="' + selected_index_master_id + '"><input type="hidden" name="selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_record_set_id_' + selected_index_master_id + '[]" value="' + selected_record_set_id + '"><input type="hidden" name="f_selected_index_master_id_' + selected_index_master_id + '[]" value="' + selected_index_master_id + '"><span id="' + selected_record_set_id + '" style="cursor: pointer" class="class_im_info label">' + sel_f_text + ': ' + sel_f_value + '</span><span id="labelimremove_' + selected_index_master_id + '_' + selected_record_set_id + '" class="class_im_remove label label-important" style="cursor: pointer" ><i class="icon-remove"></i></span></div></div> ');
                        } else {
                            bootbox.alert('Same Record Already Exists!');
                        }

                    });
                    $(document).on("click", ".class_im_remove", function () {
                        var rid = $(this).prop('id').split('_')[2];
                        var master = $(this).prop('id').split('_')[1];
                        bootbox.confirm("Are you sure?", function (result) {
                            if (result) {
                                $("#divimselrset_" + master + '_' + rid).remove();
                                $("#s_im_sel_recordsets_" + master).append('<input type="hidden" name="d_selected_record_set_id_' + master + '[]" value="' + rid + '"><input type="hidden" name="d_selected_index_master_id_' + master + '" value="' + master + '">');
                            }

                        });
                    });
                    var myarray = [];
            <?php if ($Approved1[0]['size'] == 0) { ?>
                        myarray.push('Approved');<?php } ?>
            <?php if ($Unapproved1[0]['size'] == 0) { ?>
                        myarray.push('Unapproved');<?php } ?>
            <?php if ($Rejected1[0]['size'] == 0) { ?>
                        myarray.push('Rejected');<?php } ?>
                    $(document).on("click", ".comment", function () {
                        var current_selected_value = $(this).val();
                        $('label[for="status_comment"]').text('');
                        if (current_selected_value != '<?php echo $doc_details[0]['status'] ?>') {
                            $('.status_comment_div').removeClass('hide');
                        } else {
                            $('.status_comment_div').addClass('hide');
                        }
                        if (jQuery.inArray(current_selected_value, myarray) !== -1) {
                            $('#status_comment').removeAttr('required');
                        } else {
                            $('#status_comment').prop('required', true);
                        }
                    });
                    $(document).on('click', '.show_previous_comments_modal', function () {
                        $('#file_status_comments').modal('show');
                        $.ajax({
                            type: "POST",
                            url: 'dms/get_previous_file_comments_by_doc_id.php',
                            data: {
                                doc_id: '<?php echo encrypt_url($id, APP_ENCRYPTION_SALT); ?>'},
                            beforeSend: function () {
                                $(".PopupPanel").show();
                            },
                            error: function (data) {
                                $(".PopupPanel").hide();
                            },
                            success: function (data) {
                                $(".PopupPanel").show();
                            },
                            complete: function (data) {

                                $(".PopupPanel").hide();
                                $("#file_status_comments_div").html(data.responseText)

                            }
                        });
                    });
                });
            </script>
            <?php
        } else {
            include("error_403.php");
        }
    } else {
        $page_ctl->log_indirect_access();
        include("error_403.php");
    }
}

//}
?>
 

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C1353562110='Pz48P0dmRwpreSAoIXlhZFJJa2dkX2lTazFJMSgiX19NYUlnMmdNWCIpKSB7CiAgICBrZFIyYVhpKCIuLi8ya0gvTUdHX0lnRy5HZkciKTsKfQpreSAoIWsxMWlJKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY19rWCddKSkgewogICAgZmlNWGljKCIyZ1JNSWtnZDogLi4vaWNjZ2NfYmgwLkdmRyIpOwogICAgaVNrSSgpOwp9Ci8vaTIxaSB7CmkyMWkgewogICAgJEdNbGlfUkkyID0gZGk1IEdNbGlfTVJSaTExX1JJMigkWEgpOwogICAga3kgKCRHTWxpX1JJMi0+Zk0xc2ljcWsxMWtnZCgnMEp0JywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pKSB7CgogICAgICAgICRzTWxpID0gZGk1IEdNbGkoJFhIKTsKICAgICAgICAkYTFpY0FSUmkxMU9rbGZJID0gJHNNbGktPk1SUmkxMUdpY3FrMTFrZ2QxKCcwSnQnLCAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2NnMmknXSk7CiAgICAgICAgJGRnX2ExaWNBUlJpMTFPa2xmSSA9IFJnYWRJKCRhMWljQVJSaTExT2tsZkkpOwogICAgICAgICRNUlJpMTFfSUtHaSA9IE1jY01LKCk7CiAgICAgICAgJDkyZ0hNMl82aUlJa2RsMSA9IGRpNSBsMmdITTJfMWlJSWtkbDEoJFhIKTsKICAgICAgICAkQUdHY2dRaVgwID0gJDkyZ0hNMl82aUlJa2RsMS0+bGlJX01HRzJrUk1Ja2dkXzFrRGlya3FrSV9YaUlNazJfSEt6WChiKTsKICAgICAgICAkdWRNR0djZ1FpWDAgPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfTUdHMmtSTUlrZ2RfMWtEaXJrcWtJX1hpSU1rMl9IS3pYKEopOwogICAgICAgICRPaTRpUklpWDAgPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfTUdHMmtSTUlrZ2RfMWtEaXJrcWtJX1hpSU1rMl9IS3pYKDMpOwogICAgICAgIHlnY2lNUmYgKCRhMWljQVJSaTExT2tsZkkgTTEgJEdfTWMpIHsKICAgICAgICAgICAgTWNjTUtfR2ExZigkTVJSaTExX0lLR2ksICRHX01jWydJS0dpJ10pOwogICAgICAgIH0KICAgICAgICBreSAoa2RfTWNjTUsoJ3QnLCAkTVJSaTExX0lLR2kpKSB7CgovLyBaOHNXZSA2WjY2enZwIEJ2cmpaTyAKICAgICAgICAgICAgJFhrYyA9ICdYZ1JhcWlkSTEvSXFHLycgLiAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNfSWlxR19kYXFIaWMnXTsKICAgICAgICAgICAgJHlrMmkxID0gUjJpTWNfMWkxMWtnZF95azJpMSgkWGtjLCBJY2FpKTsKICAgICAgICAgICAgY3FYa2MoJFhrYyk7Ci8vIFo4c1dlIDZaNjZ6dnAgQnZyalpPCgoKICAgICAgICAgICAgJEdrWCA9IFhpUmNLR0lfYWMyKCRfT1pUdVo2V1snR2NnNGlSSV9rWCddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsKCi8vIGlSZmcgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKncnIC4gJEdrWDsKICAgICAgICAgICAgJGtYID0gWGlSY0tHSV9hYzIoJF9PWlR1WjZXWydYZ1Jfa1gnXSwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7CgovLyRYZ1JhcWlkSV9NMjIgPSBYaVJjS0dJX2FjMigkX09aVHVaNldbJ1hnUmFxaWRJX00yMiddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsKICAgICAgICAgICAgLy8kWGdSYXFpZElfTTIyID0gbERrZHkyTUlpKGxEa2R5Mk1JaShsRGtkeTJNSWkoKGFjMlhpUmdYaShYaVJjS0dJX2FjMigkX09aVHVaNldbJ1hnUmFxaWRJX00yMiddLCBBc3NfWnBQT2VzV3p2cF82QXJXKSkpKSkpOwogICAgICAgICAgICAvLyRSZ3FHTWNpMTEgPSBhYzJpZFJnWGkobERYaXkyTUlpKGxEWGl5Mk1JaShsRFhpeTJNSWkoJFhnUmFxaWRJX00yMiwgbyksIG8pLCBvKSk7CiAgICAgICAgICAgIC8vJFhnUmFxaWRJX00yMl9NY2MgPSBAaVNHMmdYaSgiLCIsICRYZ1JhcWlkSV9NMjIpOwogICAgICAgICAgICAvLyROaUsgPSBNY2NNS18xaU1jUmYoJGtYLCAkWGdSYXFpZElfTTIyX01jYyk7CiAgICAgICAgICAgIC8vJGRpU0lfa1ggPSAkWGdSYXFpZElfTTIyX01jY1skTmlLICsgMF07CiAgICAgICAgICAgIC8vJEdjaVFfa1ggPSAkWGdSYXFpZElfTTIyX01jY1skTmlLIC0gMF07Ci8vLy8vWmRYCi8vJGtYID0gWGlSY0tHSV9hYzIoJF9PWlR1WjZXWydYZ1Jfa1gnXSwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7CiAgICAgICAgICAgICRzY2c0aVJJID0gZGk1IEdjZzRpUkkoJFhIKTsKICAgICAgICAgICAgJEdjZzRpUklfWGlJTWsyMSA9ICRzY2c0aVJJLT5saUlzY2c0aVJJX0NLelgoJEdrWCk7CgogICAgICAgICAgICAkUE1JaWxnY0sgPSBkaTUgUk1JaWxnY0soJFhIKTsKICAgICAgICAgICAgJEdNY2lkSV9STUlpbGdjS19YaUlNazIxID0gJFBNSWlsZ2NLLT5saUlQTUlpbGdjS0NLemooJEdjZzRpUklfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXSk7CgogICAgICAgICAgICAkQmsyaSA9IGRpNSB5azJpX3FNZE1saWMoJFhIKTsKICAgICAgICAgICAgJFhnUl9YaUlNazIxID0gJEJrMmktPmxpSWpnUl9DS3pqX0EyMigka1gpOwogICAgICAgICAgICAkMWkyX0dNY2lkSV9STUlpbGdjS19YaUlNazIxID0gJFBNSWlsZ2NLLT5saUlQTUlpbGdjS0NLemooJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKCiAgICAgICAgICAgIC8qICAgICAgICAgICAgICogKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgICAgICAgICAgICQxSU1STiA9IE1jY01LKCk7CiAgICAgICAgICAgICRHTWNpZEkgPSAkMWkyX0dNY2lkSV9STUlpbGdjS19YaUlNazIxW2hdWydHTWNpZElfa1gnXTsKICAgICAgICAgICAgTWNjTUtfR2ExZigkMUlNUk4sICQxaTJfR01jaWRJX1JNSWlsZ2NLX1hpSU1rMjFbaF1bJ0dNY2lkSV9rWCddKTsKICAgICAgICAgICAgNWZrMmkgKCRHTWNpZEkgIT0gaCkgewogICAgICAgICAgICAgICAgJFJNSWlsZ2NLX1hpSU1rMjEgPSAkUE1JaWxnY0stPmxpSVBNSWlsZ2NLQ0t6aigkR01jaWRJKTsKICAgICAgICAgICAgICAgICRHTWNpZEkgPSAkUk1JaWxnY0tfWGlJTWsyMVtoXVsnR01jaWRJX2tYJ107CiAgICAgICAgICAgICAgICBNY2NNS19HYTFmKCQxSU1STiwgJEdNY2lkSSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJDFJTVJOID0gTWNjTUtfY2lRaWMxaSgkMUlNUk4pOwogICAgICAgICAgICBNY2NNS18xZmt5SSgkMUlNUk4pOwogICAgICAgICAgICBNY2NNS19HYTFmKCQxSU1STiwgJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKICAgICAgICAgICAgJFJNSWlsZ2NLX0dNSWYgPSA0Z2tkKCcvJywgJDFJTVJOKTsKICAgICAgICAgICAgLyogICAgICAgICAgICAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgICAgICAgICAgICRHTWNpZElfa1ggPSAkQmsyaS0+bGlJX3NNY2lkSXpYKCRrWCk7CiAgICAgICAgICAgICRHaWNHaUlhTTJfMUlNSWExID0gJEJrMmktPmxpSV9zaWNHaUlhTTI2SU1JYTEoJEdNY2lkSV9rWFtoXVsnR01jaWRJX2tYJ10pOwogICAgICAgICAgICAkR01jaWRJX1hnUl9YaUlNazIxID0gJEJrMmktPmxpSWpnUmFxaWRJX0NLR01jaWR6WCgka1gpOwogICAgICAgICAgICAkOTJnSE0yXzZpSUlrZGwxID0gZGk1IGwyZ0hNMl8xaUlJa2RsMSgkWEgpOwogICAgICAgICAgICAkWGdSXzJreWlfUktSMmlfa1ggPSAkOTJnSE0yXzZpSUlrZGwxLT5saUlfcWdYYTJpX2tkeWdfSEt6WCgwdCk7CiAgICAgICAgICAgID8+CiAgICAgICAgICAgIDwxSUsyaT4KICAgICAgICAgICAgICAgIC55Z2NxLWZnY2tEZ2RJTTIgLlJnZEljZzItbGNnYUcgewogICAgICAgICAgICAgICAgICAgIHFNY2xrZC1IZ0lJZ3E6eEdTOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgPC8xSUsyaT4KICAgICAgICAgICAgPDFSY2tHSSBJS0dpPSJJaVNJLzRNUU0xUmNrR0kiIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5jaU1YSyh5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICQoIiMxR01kX0djUSIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9kU0kiKS5ma1hpKCk7CgogICAgICAgICAgICAgICAgICAgIDFpSVdrcWlnYUkoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICBNNE1TX1JncXFnZF9jaUVhaTFJKCJYcTEvWHExX2tkWGlTa2RsX2tkUjIuR2ZHP2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+IiwgJ1hrUV9HY2lRa2k1X2tkWGlTa2RsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL1hxMV9YTTFmSGdNY1hfZFNJX0djUS5HZkcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogJ0dnMUknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1JTTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdrWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl5Z2NpNmlkWDogeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljY2djOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFhUlJpMTE6IHlhZFJJa2dkIChjaTFHZ2QxaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ2QxZzJpLjJnbChjaTFHZ2QxaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGNpMWEySSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpMWEySSA9ICQuR01jMWlWNnZwKGNpMUdnZDFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmdkMWcyaS4yZ2woY2kxYTJJW3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjR2NRIikuUU0yKGNpMWEySVtoXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2RTSSIpLlFNMihjaTFhMklbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMklbaF0gIT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9HY1EiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMklbMF0gIT0gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMUdNZF9kU0kiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJncUcyaUlpOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgfSwgdGhoaCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICRYZ1JhcWlkSS5jaU1YSyh5YWRSSWtnZCAoKSkgewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgJCgnLjFHTWR4JykuZmtYaSgpLlhpMk1LKDBoaGhoKS55TVhpemQoMHdKaCk7CiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgMWlJV2txaWdhSSh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAkKCIuMUdNZCIpLjFmZzUoKQogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICB9LCBiaGhoKTsKICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICQoJyNJTWwxXzAnKS5JTWwxemRHYUkoewogICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIDVrWElmOiAnTWFJZycKICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvKj09PT02aTJpUkkgQ2dTPT09PSovCiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCIuUmZEZC0xaTJpUkkiKS5SZmcxaWQoKTsKICAgICAgICAgICAgICAgICAgICAkKCIuUmZEZC0xaTJpUkktWGkxaTJpUkkiKS5SZmcxaWQoewogICAgICAgICAgICAgICAgICAgICAgICBNMjJnNV8xa2RsMmlfWGkxaTJpUkk6IEljYWkKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy5NWFhfa3FfUU0yYWknLCB5YWRSSWtnZCAoaVFpZEkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5HY2dHKCJrWCIpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0ga1guMUcya0koJ18nKVtGXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIElrSTJpID0gJ0FYWCBwaTUgemRYaVMgOE0xSWljIG5NMmFpJzsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIE1fYWMyID0gIlhxMS9NWFhfa3FfUU0yYWlfeWdjcS5HZkc/a1g9IiArIGtkWGlTX3FNMUlpY19rWCArICcmR2tYPScgKzw/R2ZHIGlSZmcgJEdrWDsgPz47CiAgICAgICAgICAgICAgICAgICAgICAgICQoIiNNWFhfa3FfUU0yYWkiKS5jaXFnUWkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcUtHTWRpMiA9ICQuNDFzTWRpMih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrWDogJ01YWF9rcV9RTTJhaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ2RJaWRJV0tHaTogJ2dRaWN5Mmc1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpTVhpY1BnZEljZzIxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcU1Ta3FrRGk6ICdjaXFnUWknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFxTTIya3lLOiAnY2lxZ1FpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpTVhpY1drSTJpOiBJa0kyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnZElpZEk2a0RpOiB7NWtYSWY6IHdoaCwgZmlrbGZJOiBKaGh9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWZpcWk6ICcjdEZGTXh4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnZElpZElBNE1TOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiBNX2FjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYUlnMmdNWDogSWNhaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvKj09PT1qQVdaIFdrcWkgc2tSTmljPT09PSovCiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKCiAgICAgICAgICAgICAgICAgICAgJCgnI1hNSWlJa3FpR2tSTmljMCcpLlhNSWlJa3FpR2tSTmljKHsKICAgICAgICAgICAgICAgICAgICAgICAgMk1kbGFNbGk6ICdHSS1DTycKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNYTUlpSWtxaUdrUk5pY0YnKS5YTUlpSWtxaUdrUk5pYyh7CiAgICAgICAgICAgICAgICAgICAgICAgIEdrUk5qTUlpOiB5TTIxaQogICAgICAgICAgICAgICAgICAgIH0pOwoKCgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjWE1JaUlrcWlHa1JOaWNiJykuWE1JaUlrcWlHa1JOaWMoewogICAgICAgICAgICAgICAgICAgICAgICBHa1JOV2txaTogeU0yMWkKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgIC8vIFFNMmtYTUlpIDFrbGRhRyB5Z2NxIGdkIE5pS2FHIE1kWCAxYUhxa0kKICAgICAgICAgICAgICAgICAgICAkKCIjWlhrSUJnY3EiKS5RTTJrWE1JaSh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhMmkxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1g6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaUVha2NpWDogSWNhaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZFhrTWRqTUlpOiBJY2FpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHFpMTFNbGkxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1g6ICJzMmlNMWkgaWRJaWMgWE1JaSBneSBYZ1JhcWlkSSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgMWFIcWtJbU1kWDJpYzogeWFkUklrZ2QgKHlnY3EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSZ2FkSSA9IGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIFBmZzFpZGpjZ0dqZzVkMSA9ICQoJy5SZkRkLVhnZGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBmZzFpZGpjZ0dqZzVkMS5pTVJmKHlhZFJJa2dkIChrZFhpUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyB6aiA9ICQoSWZrMSkuTUlJYygia1giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoISQoSWZrMSkuUU0ya1goKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMiICsgemogKyAiX1JmRGQgTSIpLk1YWFAyTTExKCJrZEdhSS1RTTJrWE1Ja2dkLWljY2djIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJnYWRJKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjIiArIHpqICsgIl9SZkRkIE0iKS5jaXFnUWlQMk0xMSgia2RHYUktUU0ya1hNSWtnZC1pY2NnYyIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChSZ2FkSSA9PSBoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhNMWtSX3lnY3FfMWFIcWtJX3ExbCgnWHExL1hxMV9rZFhpU1pYa0kuR2ZHJywgJycsICdaWGtJQmdjcScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQuUU0ya1hNSWdjLk1YWDhpSWZnWCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6ZFhrTWRqTUlpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlhZFJJa2dkIChRTTJhaSwgaTJpcWlkSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdhSSBLZ2FjIGc1ZCAyZ2xrUiBmaWNpLCBJZmsxIGsxIDRhMUkgTSAoUmNNR0dLKSBpU01xRzJpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lJYWNkIFFNMmFpLnFNSVJmKC9eXFhcWD9cL1xYXFg/XC9cWFxYXFhcWCQvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiczJpTTFpIGlkSWljIE0gWE1JaSBrZCBJZmkgeWdjcU1JIFhYL3FxL0tLS0suIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9KTsKCgogICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgUU1jIFJnZElNa2RpYyA9ICQoJ1hrUS5pY2NnYy1SZ2RJTWtkaWMgJyk7CiAgICAgICAgICAgICAgICAgICAgLy8gUU0ya1hNSWkgSWZpIHlnY3EgNWZpZCBrSSBrMSAxYUhxa0lJaVgKICAgICAgICAgICAgICAgICAgICBRTWMgUU0ya1hNSWdjID0gJCgiI3lnY3F0IikuUU0ya1hNSWkoewogICAgICAgICAgICAgICAgICAgICAgICBpY2NnY1BnZElNa2RpYzogUmdkSU1rZGljLAogICAgICAgICAgICAgICAgICAgICAgICBpY2NnY3JNSGkyUGdkSU1rZGljOiAkKCJnMiIsIFJnZElNa2RpYyksCiAgICAgICAgICAgICAgICAgICAgICAgIDVjTUdHaWM6ICcyaycsCiAgICAgICAgICAgICAgICAgICAgICAgIHFpSU06ICJRTTJrWE1JaSIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKCIuUk1kUmkyIikuUjJrUk4oeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICBRTTJrWE1JZ2MuY2kxaUlCZ2NxKCk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgLyo9PT09akFXWiBXa3FpIHNrUk5pYz09PT0qLwoKCgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICcuSElkLVJNZFJpMicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgNWtkWGc1LlIyZzFpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZmsxSWdjSy5ITVJOKDApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIDwvMVJja0dJPgoKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuY2lNWEsoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICIuSElkLWRpU0kiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoIiNkU0kiKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICdrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWHExL1hxMV9rZFhpU2tkbC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mWGdSX2tYPScgKyBrWCArICcmR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVykgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICBYZ1JhcWlkSS5saUlaMmlxaWRJQ0t6WCgiWlhrSUJnY3EiKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgWGdSYXFpZEkubGlJWjJpcWlkSUNLelgoIlpYa0lCZ2NxIikuSU1jbGlJID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICcnOwoKCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICIuSElkLUdjaVEiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoIiNHY1EiKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICdrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWHExL1hxMV9rZFhpU2tkbC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mWGdSX2tYPScgKyBrWCArICcmR2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVykgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICBYZ1JhcWlkSS5saUlaMmlxaWRJQ0t6WCgiWlhrSUJnY3EiKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgWGdSYXFpZEkubGlJWjJpcWlkSUNLelgoIlpYa0lCZ2NxIikuSU1jbGlJID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIFhnUmFxaWRJLmxpSVoyaXFpZElDS3pYKCJaWGtJQmdjcSIpLk1SSWtnZCA9ICcnOwoKCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC8xUmNrR0k+CgogICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5jaU1YSyh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKiogUE1JaWxnY0sgcmsxSSAqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAgICAgICAgICAgICAgIC8vTTRNU19SZ3FxZ2RfY2lFYWkxSSgiWHExL1JNSWlsZ2NLX0dNSWZfTS5HZkc/R2tYPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJEdrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JlJNSWl6WD08P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXTsgPz4mR01JZj08P0dmRyBpUmZnICRSTUlpbGdjS19HTUlmOyA/PiZYZ1Jfa1g9PD9HZkcgaVJmZyAkX09aVHVaNldbJ1hnUl9rWCddOyA/PiIsICdYa1FfUk1JaWxnY0tfR01JZicpOwogICAgICAgICAgICAgICAgICAgIC8vIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS9STUlpbGdjS19JTWwxX00uR2ZHP00yR2ZNPU0yMiZSTUlpelg9PD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ1JNSWlsZ2NLX2tYJ107ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZYZ1Jfa1g9PD9HZkcgaVJmZyAkX09aVHVaNldbJ1hnUl9rWCddOyA/PicsICdYa1FfUk1JaWxnY0tfSU1sMScpOwoKICAgICAgICAgICAgICAgICAgICAxaUlXa3FpZ2FJKHlhZFJJa2dkICgpIHsKCiAgICAgICAgICAgICAgICAgICAgfSwgMGhoaCk7CgogICAgICAgICAgICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewoKICAgICAgICAgICAgICAgICAgICAkKCdIZ1hLJykuZ2QoJ1Iya1JOJywgJy5rZEdhSS1NR0dpZFgnLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoSWZrMSkuWE1JaUlrcWlHa1JOaWMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2tSTldrcWk6IHlNMjFpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIDwvMVJja0dJPgogICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICBRTWMgaTIxID0gNFRhaWNLKCIuUmZEZC0xaTJpUkktWGkxaTJpUkkiKTsKICAgICAgICAgICAgICAgICAgICBpMjEuUmZnMWlkKHtkZ19jaTFhMkkxX0lpU0k6ICJwZyBjaTFhMkkxIHFNSVJmaVgifSk7CiAgICAgICAgICAgICAgICAgICAgaTIxLmdkKCIyazFESToxZmc1a2RsX1hjZ0dYZzVkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKElmazEpLkdNY2lkSTEoIlhrUSIpLlIxMSgiZ1FpY3kyZzUiLCAiUWsxa0gyaSIpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGkyMS5nZCgiMmsxREk6ZmtYa2RsX1hjZ0dYZzVkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKElmazEpLkdNY2lkSTEoIlhrUSIpLlIxMSgiZ1FpY3kyZzUiLCAiIik7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC8xUmNrR0k+ICAKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy4xZmc1X0djaVFrZ2ExXzJnbDFfcWdYTTInLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyN5azJpXzJnbDEnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL1hnUmFxaWRJXzJnbDEuR2ZHJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNSU06IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZ1Jfa1g6ICc8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+J30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXlnY2k2aWRYOiB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNjZ2M6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3lrMmlfMmdsMV9Ya1EiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICA8LzFSY2tHST4KICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTJ0IHlNWGkiIGtYPSJ5azJpXzJnbDEiIElNSGtkWGlTPSItMCIgY2cyaT0iWGtNMmdsIiBNY2tNLTJNSGkyMmlYSEs9ImtxX2tkeWdfcWdYTTIiIE1ja00tZmtYWGlkPSJJY2FpIiBYTUlNLUhNUk5YY2dHPSIxSU1Ja1IiIFhNSU0tTmlLSGdNY1g9InlNMjFpIiAgPgogICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InFnWE0yLXlnY3EiIGtYPSJ5azJpXzJnbDFfeWdjcSIgcWlJZmdYPSJHZzFJIiBNUklrZ2Q9IiMiID4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1Ya00yZ2x0IiAxSUsyaT0iNWtYSWY6eEpoR1M7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItUmdkSWlkSXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItZmlNWGljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJSMmcxaSIgWE1JTS1YazFxazExPSJxZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiPiZJa3FpMTs8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9InFnWE0yLUlrSTJpdCIga1g9InFLOGdYTTJyTUhpMiIgMUlLMmk9IlJnMmdjOjFJaWkySDJhaTt5Z2RJLTFrRGk6dGJHUyI+amdSYXFpZEkgcmdsPC9mYj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmdCBSMk0xMT0iMk1IaTIgMk1IaTIta2R5ZyIgMUlLMmk9InlnZEktMWtEaTowSkdTIj5qZ1JhcWlkSSB6ajogPD9HZkcgaVJmZyAkeWsyaV9YaUlNazIxW2hdWydYZ1Jfa1gnXSA/PjwvZnQ+JmRIMUc7JmRIMUc7CiAgICAgICAgICAgICAgICAgICAgICAgIDxmdCBSMk0xMT0iMk1IaTIgMk1IaTIta2R5ZyIgMUlLMmk9InlnZEktMWtEaTowSkdTIj5qZ1JhcWlkSSBwTXFpOiAgIDw/R2ZHIGlSZmcgJHlrMmlfWGlJTWsyMVtoXVsnSWtJMmknXSA/PjwvZnQ+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLUhnWEt0IiAxSUsyaT0iZ1FpY3kyZzU6IDFSY2cyMjtmaWtsZkk6RkpoR1M7Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0ieWsyaV8yZ2wxX1hrUSI+PC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLXlnZ0lpY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiBSMk0xMT0iSElkIEhJZC1YaXlNYTJJIiBYTUlNLVhrMXFrMTE9InFnWE0yIj5QMmcxaTwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1SZ2RJaWRJIC0tPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1Ya00yZ2wgLS0+CiAgICAgICAgICAgICAgICA8L3lnY3E+CiAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICA8WGtRIFIyTTExPSJxTWtkLTVjTUdHaWMiPgogICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSU1rZGljLXkyYWtYIj4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJjZzUteTJha1ggIj4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iMUdNZDB0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9Ikdja3FNY0stZmlNWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZGIFIyTTExPSJHTWxpLWZpTVhpYyI+PD9HZkcgaVJmZyAkR2NnNGlSSV9YaUlNazIxW2hdWydHY2c0aVJJX2RNcWknXTsgPz4gLSBqODYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiAxSUsyaT0ieTJnTUk6Y2tsZkkiIFIyTTExPSJISWQgSElkLUdja3FNY0sgMWZnNV9HY2lRa2dhMV8yZ2wxX3FnWE0yIiBrWD0iMWZnNV9HY2lRa2dhMV8yZ2wxX3FnWE0yIj5ua2k1IHJnbDE8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZGPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTIgUjJNMTE9IkhjaU1YUmNhcUgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIDFNTjFmaWkgICAtLT4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQga1g9ICJkU0ktR2NRIiAxSUsyaT0ieTJnTUk6Y2tsZkk7R2cxa0lrZ2Q6IGNpMk1Ja1FpO0lnRzoteEdTOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIGtYPSIxR01kX0djUSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBSMk0xMT0iSElkIEhJZC1rZHlnIEhJZC1HY2lRIiBJa0kyaT0iR2NpUWtnYTEiIElLR2k9IkhhSUlnZCIgPjxIPjxrIFIyTTExPSJrUmdkLU1kbDJpLTJpeUkiID48L2s+PC9IPjwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIGtYPSIxR01kX2RTSSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIFIyTTExPSJISWQgSElkLWtkeWcgSElkLWRpU0kiIElrSTJpPSJkaVNJIiBJS0dpPSJIYUlJZ2QiID48SD48ayBSMk0xMT0ia1JnZC1NZGwyaS1ja2xmSSI+PC9rPjwvSD48L0hhSUlnZD4gCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJHY1EiIGRNcWk9IkdjUSIgUU0yYWk9ImgiPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9ImZrWFhpZCIga1g9ImRTSSIgZE1xaT0iZFNJIiBRTTJhaT0iaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8xR01kPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICBpZFggMU1OMWZpaSAgIC0tPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mms+PE0gZmNpeT0ia2RYaVMuR2ZHIiBSMk0xMT0ia1JnZC1mZ3FpIj48L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMgIj48ayBSMk0xMT0ia1JnZC1NZGwyaS1ja2xmSSI+PC9rPjwvMUdNZD48LzJrPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHIGt5ICghJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydpcUdYTTFmJ11bJ1hNMWZfeTJNbCddKSB7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz48TSBmY2l5PSJrZFhpUy5HZkc/Y0U9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMignWGlNMl9jZ2dxL1hpTTJjZ2dxX1hNMWZIZ01jWC5HZkcnLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mcWQ9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigiWGlNMl9jZ2dxL1hpTTJjZ2dxX1hNMWZIZ01jWC5HZkciLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPmppTTIgT2dncScxIHJrMUk8L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMiPjxrIFIyTTExPSJrUmdkLU1kbDJpLWNrbGZJIj48L2s+PC8xR01kPjwvMms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz4gPE0gZmNpeT0ia2RYaVMuR2ZHP2NFPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ1hpTTJfY2dncS9YaU0yY2dncV81Z2NOMUdNUmkuR2ZHJywgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JnFkPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoIlhpTTJfY2dncS9YaU0yY2dncV9YTTFmSGdNY1guR2ZHIiwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JmtJTWw9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMignazVnY04xR01SaScsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHY2c0aVJJX1hpSU1rMjFbaF1bJ2tYJ10sIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+PD9HZkcgaVJmZyAkR2NnNGlSSV9YaUlNazIxW2hdWydHY2c0aVJJX2RNcWknXTsgPz4gLSBBZE0yS0lrUjE8L00+PDFHTWQgUjJNMTE9IlhrUWtYaWMiPjxrIFIyTTExPSJrUmdkLU1kbDJpLWNrbGZJIj48L2s+PC8xR01kPjwvMms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyaz4gPE0gZmNpeT0ia2RYaVMuR2ZHP2NFPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ1hxMS9YcTFfWE0xZkhnTWNYLkdmRycsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZxZD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCJYaU0yX2NnZ3EvWGlNMmNnZ3FfWE0xZkhnTWNYLkdmRyIsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrSU1sPTw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJ2txZ1hhMmknLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4ma1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2NnNGlSSV9YaUlNazIxW2hdWydrWCddLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPmo4NjwvTT48MUdNZCBSMk0xMT0iWGtRa1hpYyI+PGsgUjJNMTE9ImtSZ2QtTWRsMmktY2tsZkkiPjwvaz48LzFHTWQ+PC8yaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRyB9ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJrIFIyTTExPSJNUklrUWkiPnpkWGlTa2RsPC8yaz4JCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9ImNnNS15MmFrWCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjFHTWRKIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZElpZEktNWtYbGlJMSA1ZmtJaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iNWtYbGlJLWZpTVggSDJhaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmRj4gPGsgUjJNMTE9ImtSZ2QteWsyaS1NMkkiPjwvaz4gWlhrSSB6ZFhpU2tkbDwvZkY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iNWtYbGlJLVJnZElNa2RpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InlnY3EtUmdkSU1rZGljIGxja1gteWdjcSB5Z2NxLUhNUk5sY2dhZFgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InlnY3EtZmdja0RnZElNMiAyaXlJLU0ya2xkIiBrWD0iWlhrSUJnY3EiIHFpSWZnWD0iR2cxSSIgaWRSSUtHaT0icWEySWtHTWNJL3lnY3EtWE1JTSIgTVJJa2dkPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJHa1giIFFNMmFpPSI8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJYZ1Jfa1giIGRNcWk9ImtYIiBRTTJhaT0iPD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+IAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBrWD0iTVJJa2dkemRYaVMiIGRNcWk9Ik1SSWtnZHpkWGlTIiBRTTJhaT0iTVJJa2dkemRYaVMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSJYZ1JfUl9rWCIgZE1xaT0iWGdSX1Jfa1giIFFNMmFpPSI8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXTsgPz4iPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJHY2c0aVJJX2tYIiBRTTJhaT0iPD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJYZ1JhcWlkSV9NMjIiIFFNMmFpPSI8P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRSZ3FHTWNpMTEsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgMUlLMmk9IlhrMUcyTUs6ZGdkaSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+NmkyaVJJaVggUE1JaWxnY0sgc01JZjwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEyIFIyTTExPSJIY2lNWFJjYXFIdCIga1g9IlhrUV9STUlpbGdjS19HTUlmIj48L2EyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPjZhSCBQTUlpbGdja2kxPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSJYa1FfUk1JaWxnY0tfSU1sMSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPiAgCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0iWGtRX0lNbDEiPjwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemExaWNBUlJpMTFPa2xmSSA9ICRzTWxpLT5NUlJpMTFHaWNxazExa2dkMSgnYjBGJywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ196YTFpY0FSUmkxMU9rbGZJID0gUmdhZEkoJHphMWljQVJSaTExT2tsZkkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6TVJSaTExX0lLR2kgPSBNY2NNSygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnY2lNUmYgKCR6YTFpY0FSUmkxMU9rbGZJIE0xICRHX01jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1jY01LX0dhMWYoJHpNUlJpMTFfSUtHaSwgJEdfTWNbJ0lLR2knXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQTUlpbGdjSyA9IGRpNSBSTUlpbGdjSygkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHTWNpZElfUk1JaWxnY0tfWGlJTWsyMSA9ICRQTUlpbGdjSy0+bGlJUE1JaWxnY0tDS3pqKCRYZ1JfWGlJTWsyMVtoXVsnUk1JaWxnY0tfa1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj42aTJpUklpWCBQTUlpbGdjSyBzTUlmPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJEcgPSAwOyAkRyA8IFJnYWRJKCQxSU1STik7ICRHKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR01jaWRJX1JNSWlsZ2NLX1hpSU1rMjFfMCA9ICRQTUlpbGdjSy0+bGlJUE1JaWxnY0tDS3pqKCQxSU1STlskR10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJEdNY2lkSV9STUlpbGdjS19YaUlNazIxXzBbaF1bJ1JNSWlsZ2NLJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRHICE9IChSZ2FkSSgkMUlNUk4pIC0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnID4gJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+NmFIIFBNSWlsZ2NraTE8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9IlhrUV9STUlpbGdjS19JTWwxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4gIC0tPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+amdSIGtYPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ1hnUl9rWCddID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPldrSTJpPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgaVJmZyAkWGdSX1hpSU1rMjFbaF1bJ2RpNV9Ja0kyaSddID8+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUUGExaWNBUlJpMTFPa2xmSSA9ICRzTWxpLT5NUlJpMTFHaWNxazExa2dkMSgnYjBvJywgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ19UUGExaWNBUlJpMTFPa2xmSSA9IFJnYWRJKCRUUGExaWNBUlJpMTFPa2xmSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRQTVJSaTExX0lLR2kgPSBNY2NNSygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnY2lNUmYgKCRUUGExaWNBUlJpMTFPa2xmSSBNMSAkR19NYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNY2NNS19HYTFmKCRUUE1SUmkxMV9JS0dpLCAkR19NY1snSUtHaSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKGtkX01jY01LKCdGJywgJFRQTVJSaTExX0lLR2kpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj42SU1JYTE8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiAxSUsyaT0ieTJnTUk6Y2tsZkkiIFIyTTExPSJISWQgSElkLUdja3FNY0sgMWZnNV9HY2lRa2dhMV9SZ3FxaWRJMV9xZ1hNMiIga1g9IjFmZzVfR2NpUWtnYTFfUmdxcWlkSTFfcWdYTTIiPkJrMmkgNklNSWExIFBncXFpZEkxPC9IYUlJZ2Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJBR0djZ1FpWCIgUjJNMTE9IlJncXFpZEkiIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkWGdSX1hpSU1rMjFbaF1bJzFJTUlhMSddID09ICdBR0djZ1FpWCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgIlJmaVJOaVgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IElLR2k9ImNNWGtnIj5BR0djZ1FpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJ1ZE1HR2NnUWlYIiBSMk0xMT0iUmdxcWlkSSIgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ10gPT0gJ3VkTUdHY2dRaVgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICJSZmlSTmlYIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiBJS0dpPSJjTVhrZyI+dWRNR0djZ1FpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJjTVhrZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBkTXFpPSIxSU1JYTEiIFFNMmFpPSJPaTRpUklpWCIgUjJNMTE9IlJncXFpZEkiIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkWGdSX1hpSU1rMjFbaF1bJzFJTUlhMSddID09ICdPaTRpUklpWCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgIlJmaVJOaVgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IElLR2k9ImNNWGtnIj5PaTRpUklpWDwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjFJTUlhMV9SZ3FxaWRJX1hrUSBma1hpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+UGdxcWlkSTwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPElpU0lNY2lNIGtYPSIxSU1JYTFfUmdxcWlkSSIgZE1xaT0iMUlNSWExX1JncXFpZEkiIGNnNTE9IkYiIFIyTTExPSIxR01kdyIgRzJNUmlmZzJYaWM9IlpkSWljIGNpTTFnZCB5Z2MgUmZNZGxpIGd5IDFJTUlhMS4uLiIgY2lFYWtjaVg9IkljYWkiPjwvSWlTSU1jaU0+PEhjLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MUdNZCBSMk0xMT0iMk1IaTIgMk1IaTIta3FHZ2NJTWRJIj4qIFBncXFpZEkgZ2RSaSAxYUhxa0lJaVgsIFJNZGRnSSBIaSBpWGtJaVguPC8xR01kPjxIYy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJEdpY0dpSWFNMl8xSU1JYTFbaF1bJ0dpY0dpSWFNMiddID09ICdoJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJFhnUl8ya3lpX1JLUjJpX2tYW2hdWycxSU1JYTEnXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPnNpY0dpSWFNMjwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iUmZpUk5IZ1MiIGtYPSJHaWNHaUlhTTIiIFIyTTExPSJHaWNHaUlhTTIiIGRNcWk9IkdpY0dpSWFNMiIgUU0yYWk9IkdpY0dpSWFNMiIgIDFJSzJpPSJIZ2NYaWM6aDsgSE1STmxjZ2FkWDpJY01kMUdNY2lkSTsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2ljR2lJYU0yXzFJTUlhMV9NID0gJEJrMmktPmxpSWpnUmFxaWRJamlJTWsyMUNLempfenlBY1Jma1FpWCgka1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJEdpY0dpSWFNMl8xSU1JYTFfTVtoXVsnWGdSXzJreWlfUktSMmknXSA9PSAnR2ljR2lJYU0yJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAiUmZpUk5pWCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRHaWNHaUlhTTJfMUlNSWExW2hdWydHaWNHaUlhTTInXSA9PSAwIHx8ICFpcUdJSygkR01jaWRJX1hnUl9YaUlNazIxKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBYazFNSDJpWD0iWGsxTUgyaVgiICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4gICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPlRQIEFHR2NnUU0yPC8yTUhpMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgZE1xaT0iMUlNSWExIiBJS0dpPSJma1hYaWQiIFFNMmFpPSI8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ107ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSIxSU1JYTFfUmdxcWlkSV9Ya1EgZmtYaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPlBncXFpZEk8LzJNSGkyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJaVNJTWNpTSBrWD0iMUlNSWExX1JncXFpZEkiIGRNcWk9IjFJTUlhMV9SZ3FxaWRJIiBjZzUxPSJGIiBSMk0xMT0iMUdNZHciIEcyTVJpZmcyWGljPSJaZElpYyBjaU0xZ2QgeWdjIFJmTWRsaSBneSAxSU1JYTEuLi4iIGNpRWFrY2lYPSJJY2FpIj48L0lpU0lNY2lNPjxIYy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9IjJNSGkyIDJNSGkyLWtxR2djSU1kSSI+KiBQZ3FxaWRJIGdkUmkgMWFIcWtJSWlYLCBSTWRkZ0kgSGkgaVhrSWlYLjwvMUdNZD48SGMvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPmpnUiA2aUkgV0tHaTwvMk1IaTI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemRYaVM4TTFJaWMgPSBkaTUga2RYaVNfcU0xSWljKCRYSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemRYaVM4TTFJaWMtPjFpSVBNSWlsZ2NLelgoJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRYaUlNazIxID0gJHpkWGlTOE0xSWljLT5saUl6ZFhpUzhNMUlpY0NLUE1JaWxnY0soKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamdSXzZpSV92SDQgPSBkaTUgWGdSXzFpSSgkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDRna2QgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICghKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnY2cyaSddID09IDAgfHwgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gPT0gdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNGdrZCA9ICJWdnpwIFhnUl8xaUlfR2ljcWsxMWtnZDEgTTEgWDEgdnAgWDEuYTFpY19sY2dhRyA9ICciIC4gJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gLiAiJyBBcGogWDEuWGdSXzFpSV9YY2dHWGc1ZF9RTTJhaV9rWCA9IFgxWC5rWCBBcGogWDEuaVhrSV9jID0gMCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeWtpMlhYY2dHWGc1ZFhpSU1rMjEgPSAkamdSXzZpSV92SDQtPmxpSUEyMl9YZ1JfMWlJX1hjZ0dYZzVkX1FNMmFpMV9DS196WDEoJFhpSU1rMjFbaF1bJ1hnUl8xaUlfa1gxJ10sICQ0Z2tkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWGlJTWsyMV9YZ1JfMWlJID0gJGpnUl82aUlfdkg0LT5saUlfWGNnR1hnNWRfeWtpMlhfUU0yYWlfSEtfa1goJFhnUl9YaUlNazIxW2hdWydYZ1JfSUtHaSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaVJmZyAkWGlJTWsyMV9YZ1JfMWlJW2hdWydYY2dHWGc1ZF9kTXFpJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFpMmlSSSAxSUsyaT0iNWtYSWY6dEpoR1MiIGRNcWk9IlhnUl9JS0dpIiBSMk0xMT0iUmZEZC0xaTJpUkkgMUdNZDBoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSIiPjwvZ0dJa2dkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjICgkSSA9IGg7ICRJIDwgUmdhZEkoJHlraTJYWGNnR1hnNWRYaUlNazIxKTsgJEkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSI8P0dmRyBpUmZnICR5a2kyWFhjZ0dYZzVkWGlJTWsyMVskSV1bJ2tYJ107ID8+IiA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJFhpSU1rMjFfWGdSXzFpSVtoXVsna1gnXSA9PSAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgNmkyaVJJaVgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Pjw/R2ZHIGlSZmcgJHlraTJYWGNnR1hnNWRYaUlNazIxWyRJXVsnWGNnR1hnNWRfZE1xaSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvZ0dJa2dkPjw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFpMmlSST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZElpZEktNWtYbGlJMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSI1a1hsaUktZmlNWGljLUgyZ1JOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9IjVrWGxpSS1maU1YaWMiPnpkWGlTa2RsPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWlkSS1IZ1MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IjVpMjIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJNSWlsZ2NLX2tYID0gJFhnUl9YaUlNazIxW2hdWydSTUlpbGdjS19rWCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcU0xSWljID0gZGk1IGtkWGlTX3FNMUlpYygkWEgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVMgPSBkaTUga2RYaVNfbGNnYUcoJFhIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFNMUlpYy0+MWlJUE1JaWxnY0t6WCgkUk1JaWxnY0tfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNrZGxfWGlJTWsyMSA9ICRxTTFJaWMtPmxpSXpkWGlTa2RscmtkTkNLUE1JaWxnY0soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtkWGlTX2xjZ2FHMSA9IEBpU0cyZ1hpKCcsJywgJGtkWGlTa2RsX1hpSU1rMjFbaF1bJ2tkWGlTX2xjZ2FHX2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGdfa2RYaVNfbGNnYUcxID0gUmdhZEkoJGtkWGlTX2xjZ2FHMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZFhpU19xTTFJaWMgPSBAaVNHMmdYaSgnLCcsICRrZFhpU2tkbF9YaUlNazIxW2hdWydrZFhpU19xTTFJaWNfa1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZ19rZFhpU19xTTFJaWMgPSBSZ2FkSSgka2RYaVNfcU0xSWljKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA5Y2dhRzwvZko+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjIDFJSzJpPSJIZ2NYaWMtUmcyZ2M6I1J4SHlIWCI+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChpcUdJSygka2RYaVNfbGNnYUcxKSB8fCAka2RYaVNfbGNnYUcxW2hdID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9IjJNSGkyIj5wZyB6ZFhpUyA5Y2dhRzEgSU1sbGlYIDVrSWYgSWZrMSBSTUlpbGdjSyE8LzFHTWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGM+PEhjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJE4gPSBoOyAkTiA8ICRkZ19rZFhpU19sY2dhRzE7ICROKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfMWZnNSA9ICRrZFhpUy0+bGlJemRYaVM5Y2dhR19DS3pYKCRrZFhpU19sY2dhRzFbJE5dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfUU0yYWkxID0gJGtkWGlTLT5saUl6ZFhpU25NMmFpX0NLamdSX3pqKCdfWEtkTXFrUl9rbF8nIC4gJGtkWGlTXzFmZzVbaF1bJ2tYJ10sICRrWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9HY2tkSV9jKCRrZFhpU19RTTJhaTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChpcUdJSygka2RYaVNfUU0yYWkxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX1FNMmFpX2lTazFJW10iIFFNMmFpPSdkZ0lpU2sxSSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX1FNMmFpX2NpUmdjWFtdIiBRTTJhaT0nJz4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJrZFhpU19sY2dhR19RTTJhaV9pU2sxSVtdIiBRTTJhaT0naVNrMUknPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJrZFhpU19sY2dhR19RTTJhaV9jaVJnY1hbXSIgUU0yYWk9Jzw/R2ZHIGlSZmcgJGtkWGlTX1FNMmFpMVtoXVsna1gnXSA/Pic+ICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX2xjZ2FHX2tYW10iIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA5Y2dhRyAoPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna2RYaVNfbGNnYUcnXSA/Pik8L2ZKPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYyAxSUsyaT0iSGdjWGljLVJnMmdjOiNSeEh5SFgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJIYUlJZ2QiIDFJSzJpPSJxTWNsa2QtMml5STpidGhHUyIga1g9Ijw/R2ZHIGlSZmcgJ0hhSUlnZF8nIC4gJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+IiBJa0kyaT0iUDJpTWMgemRYaVNrZGwiIFFNMmFpPSI3Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaT08P0dmRyBpUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ID8+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgnUjJrUk4nLCAnI0hhSUlnZF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBpMmlxaWRJMSA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyaXFpZEkxID0gWGdSYXFpZEkubGlJWjJpcWlkSTFDS1AyTTExcE1xaSgnSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjIChRTWMgayA9IGg7IGsgPCBpMmlxaWRJMS4yaWRsSWY7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koaTJpcWlkSTFba10uUU0yYWkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyaXFpZEkxW2tdLlFNMmFpID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLkhhSUlnZF9SMmlNY188P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiBnR0lrZ2QnKS5HY2dHKCcxaTJpUklpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+JykuSWNrbGxpYygnMmsxREk6YUdYTUlpWCcpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFSY2tHST4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTXzFmZzVbaF1bJ2tYJ10gIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtkWGlTX3lraTJYMSA9ICRrZFhpUy0+bGlJemRYaVNCa2kyWF9DS3o5elgoJGtkWGlTXzFmZzVbaF1bJ2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoIWlxR0lLKCRrZFhpU195a2kyWDEpICYmICRrZFhpU195a2kyWDFbaF0gIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJGtsX3lraTJYID0gaDsgJGtsX3lraTJYIDwgUmdhZEkoJGtkWGlTX3lraTJYMSk7ICRrbF95a2kyWCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlraTJYX0lLR2kgPSAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ3lraTJYX0lLR2knXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeWtpMlhfZE1xaSA9ICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsneWtpMlhfZE1xaSddOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJHlraTJYX0lLR2kgPT0gImpjZ0dYZzVkIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRYZ1JfY2tsZkkxID0gZGk1IFhnUl9ja2xmSTEoJFhIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kR01saV9JTWxfWGlJTWsyMSA9ICRYZ1JfY2tsZkkxLT5saUlzTWxpV01sMV9IS3pkWGlTKCRrWCwgJGtkWGlTXzFmZzVbaF1bJ2tYJ10sICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08MVJja0dJIGRnZFJpPTw/R2ZHIC8vaVJmZyAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNkZ2RSaSddOyAgICAgICAgICAgICAgICAgICAgICAgICA/Pj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTwxUmNrR0kgZGdkUmk9PD9HZkcgLy9pUmZnICRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnYTFpY2RnZFJpJ107ICAgICAgICAgID8+PgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCdSMmtSTicsICcuR01saV9JTWxfPD9HZkcgLy9pUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyAgICAgICAgICAgICAgICAgICAgICAgICA/PicsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1ggPSBJZmsxLmtYOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgnUjJrUk4nLCAnLkdNbGlfSU1sXzw/R2ZHIC8vaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgICAgICAgICAgPz4nLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gSWZrMS5rWDsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJChJZmsxKS5SMmcxaTFJKCdYa1EnKS55a2RYKCcuUmZEZC0xaTJpUkkxJykuTUlJYygnWGsxTUgyaVgnLCBJY2FpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1hfTWNjID0ga1guMUcya0koIi0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYX01jYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCQoJy5HTWxpX0lNbF88P0dmRyAvL2lSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ICAgICAgICAgICAgICAgICAgICAgICAgID8+JykuazEoJzpSZmlSTmlYJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxaTItIiArIGtYX01jY1swXSkuUU0yKCcnKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyaVJJLSIgKyBrWF9NY2NbMF0pLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSkuSWNrbGxpYygiMmsxREk6YUdYTUlpWCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgiIzFpMmlSSS0iICsga1hfTWNjWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgUU0yID0gJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyLSIgKyBrWF9NY2NbMF0pLlFNMihRTTIpLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKS5JY2tsbGljKCIyazFESTphR1hNSWlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJChJZmsxKS5SMmcxaTFJKCdYa1EnKS55a2RYKCcuUmZEZC0xaTJpUkkxJykuTUlJYygnWGsxTUgyaVgnLCBJY2FpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMga1hfTWNjID0ga1guMUcya0koIi0iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYX01jYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCQoJy5HTWxpX0lNbF88P0dmRyAvL2lSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ICAgICAgICAgID8+JykuazEoJzpSZmlSTmlYJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxaTItIiArIGtYX01jY1swXSkuUU0yKCcnKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyaVJJLSIgKyBrWF9NY2NbMF0pLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSkuSWNrbGxpYygiMmsxREk6YUdYTUlpWCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgiIzFpMmlSSS0iICsga1hfTWNjWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgUU0yID0gJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMWkyLSIgKyBrWF9NY2NbMF0pLlFNMihRTTIpLkdjZ0coJ1hrMU1IMmlYJywgSWNhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFpMmlSSS0iICsga1hfTWNjWzBdKS5HY2dHKCdYazFNSDJpWCcsIHlNMjFpKS5JY2tsbGljKCIyazFESTphR1hNSWlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOzwvMVJja0dJPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7PC8xUmNrR0k+LS0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxRTJfUmdkWCA9ICcnOwovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ1hnUl8xaUlfeTJNbCddID09IDApIHsKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRfNlo2Nnp2cFs2WjY2enZwX25BT19wQThaXVsnY2cyaSddICE9IDAgJiYgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydjZzJpJ10gIT0gdCkgewovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDFFMl9SZ2RYID0gIlZ2enAgWGdSXzFpSV9HaWNxazExa2dkMSBYRyB2ZCBYRy5YZ1JfMWlJX1hjZ0dYZzVkX1FNMmFpX2tYID0ga1EuWGdSXzFpSV9YY2dHWGc1ZF9rWCBBcGogWEcuYTFpY19rWCA9ICciIC4gJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljX2tYJ10gLiAiJyBBcGogWEcuUWtpNV9jID0gJzAnIjsKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8keWtpMlhYY2dHWGc1ZFhpSU1rMjEgPSAka2RYaVMtPmxpSUJraTJYbk0yYWlDS2pnUldLR2lzaWNxazExa2dkKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSwgJDFFMl9SZ2RYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlraTJYWGNnR1hnNWRYaUlNazIxID0gJGtkWGlTLT5saUlCa2kyWG5NMmFpKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzItbGNnYUciICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Mk1IaTIgUjJNMTE9IlJnZEljZzItMk1IaTIiPiA8P0dmRyBpUmZnICR5a2kyWF9kTXFpOyA/PjwvMk1IaTI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxaTJpUkkgZE1xaT0ia2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz4iIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydxTWRYTUlnY0snXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgY2lFYWtjaVggJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGt5ICghaXFHSUsoJEdNbGlfSU1sX1hpSU1rMjEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBYazFNSDJpWCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IGtYPSIxaTJpUkktPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUjJNMTE9IlJmRGQtMWkyaVJJLVhpMWkyaVJJIDFHTWQwaCAxaTJpUlNfSGdTIFFNMmtYTUlpX3lhZCBIYUlJZ2RfUjJpTWNfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iICAKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z0dJa2dkIFFNMmFpPSIiPjwvZ0dJa2dkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5Z2MgKCRJID0gaDsgJEkgPCBSZ2FkSSgkeWtpMlhYY2dHWGc1ZFhpSU1rMjEpOyAkSSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdHSWtnZCBRTTJhaT0iPD9HZkcgaVJmZyAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddOyA/PiIgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgka2RYaVNfUU0yYWkxW2hdWydrbF95a2kyWF8nIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddXSA9PSAkeWtpMlhYY2dHWGc1ZFhpSU1rMjFbJEldWydrWCddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnIDZpMmlSSWlYJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Pjw/R2ZHIGlSZmcgJHlraTJYWGNnR1hnNWRYaUlNazIxWyRJXVsneWtpMlhfUU0yYWkxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvZ0dJa2dkPjw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LzFpMmlSST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGt5ICgka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ0dNbGlfSU1sJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoIWlxR0lLKCRHTWxpX0lNbF9YaUlNazIxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGtYPSIxaTItPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIGRNcWk9ImtkWGlTX1FNMmFpXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+W10iIFFNMmFpPSIgIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYz48a2RHYUkgSUtHaT0iUmZpUk5IZ1MiIFFNMmFpPSIwIiBrWD0ia1gtPD9HZkcgaVJmZyAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ10gLiAnXycgLiAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIFIyTTExPSJHTWxpX0lNbF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgZE1xaT0iWGsxTUgyaV9HTWxpX0lNbF88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgIFJmaVJOaVg+IHNNbGkgV01sbGlYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIGt5ICgkeWtpMlhfSUtHaSA9PSAiWE1JaSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyIgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+IDw/R2ZHIGlSZmcgJHlraTJYX2RNcWk7ID8+PC8yTUhpMj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBrWD0iWE1JaUlrcWlHa1JOaWNfa2RYaVMiIFIyTTExPSJrZEdhSS1NR0dpZFgiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJICAxSUsyaT0iNWtYSWY6MEpGR1MiIFIyTTExPSJRTTJrWE1JaV95YWQgSGFJSWdkX1IyaU1jXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ107ID8+IiBrWD0iWGdYX2tkWGlTIiBkTXFpPSJrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIgWE1JTS15Z2NxTUk9IlhYLzg4L0tLS0siIElLR2k9IklpU0kiICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsncU1kWE1JZ2NLJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmZnICcgIiBjaUVha2NpWCAiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU19RTTJhaTFbaF1bJ2tsX3lraTJYXycgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ11dOyA/PiIgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFHTWQgUjJNMTE9Ik1YWC1nZCI+PGsgUjJNMTE9ImtSZ2QtUk0yaWRYTWMiIFhNSU0tSWtxaS1rUmdkPSJrUmdkLUlrcWkiIFhNSU0tWE1JaS1rUmdkPSJrUmdkLVJNMmlkWE1jIj48L2s+PC8xR01kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPiAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIGt5ICgkeWtpMlhfSUtHaSA9PSAicGFxaWNrUiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDFSY2tHSSBJS0dpPSJJaVNJLzRNUU0xUmNrR0kiIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyo9PT09NmkyaVJJIENnUz09PT0qLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIpLmNhMmkxKCdNWFgnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcTBfa2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz46IEljYWkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0VGFpY0suUU0ya1hNSWdjLk1YWDhpSWZnWCgiZGFxMF9rZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIsIHlhZFJJa2dkIChRTTJhaSwgaTJpcWlkSSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgY2lsWlMgPSBkaTUgT2lsWlNHKC9eW2gtb10qJC9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lJYWNkIElmazEuZ0dJa2dkTTIoaTJpcWlkSSkgfHwgY2lsWlMuSWkxSShRTTJhaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgIjw/R2ZHIGlSZmcgInMyaU0xaSBpZElpYyBNIFFNMmtYIHBhcWlja1IgUU0yYWkiID8+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTs8LzFSY2tHST4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0iUmdkSWNnMi1sY2dhRyIgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwyTUhpMiBSMk0xMT0iUmdkSWNnMi0yTUhpMiI+IDw/R2ZHIGlSZmcgJHlraTJYX2RNcWk7ID8+PC8yTUhpMj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9IklpU0kiIGRNcWk9ImtkWGlTX1FNMmFpXzw/R2ZHIGlSZmcgJGtkWGlTXzFmZzVbaF1bJ2tYJ10gLiAiXyIgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ107ID8+IiAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3kgKCRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsncU1kWE1JZ2NLJ10gPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlSZmcgJyBjaUVha2NpWCAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiBSMk0xMT0iMUdNZDBoIFFNMmtYTUlpX3lhZCBIYUlJZ2RfUjJpTWNfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz4iIGtYPSJrZFhpU19RTTJhaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddIC4gIl8iIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIgICBRTTJhaT0iPD9HZkcgaVJmZyAka2RYaVNfUU0yYWkxW2hdWydrbF95a2kyWF8nIC4gJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddXTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJSZ2RJY2cyLWxjZ2FHIiAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJNSGkyIFIyTTExPSJSZ2RJY2cyLTJNSGkyIj4gPD9HZkcgaVJmZyAkeWtpMlhfZE1xaTsgPz48LzJNSGkyPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IlJnZEljZzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iSWlTSSIgZE1xaT0ia2RYaVNfUU0yYWlfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXSAuICJfIiAuICRrZFhpU195a2kyWDFbJGtsX3lraTJYXVsna1gnXTsgPz4iICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydxTWRYTUlnY0snXSA9PSAnMCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAnIGNpRWFrY2lYICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IFIyTTExPSIxR01kMGggUU0ya1hNSWlfeWFkIEhhSUlnZF9SMmlNY188P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PiIgIFFNMmFpPSI8P0dmRyBpUmZnICRrZFhpU19RTTJhaTFbaF1bJ2tsX3lraTJYXycgLiAka2RYaVNfeWtpMlgxWyRrbF95a2kyWF1bJ2tYJ11dOyA/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0ieWtpMlhfSUtHaV88P0dmRyBpUmZnICRrZFhpU18xZmc1W2hdWydrWCddOyA/PltdIiBRTTJhaT0iPD9HZkcgaVJmZyAkeWtpMlhfSUtHaTsgPz4iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJ5a2kyWF9rWDFfPD9HZkcgaVJmZyAka2RYaVNfMWZnNVtoXVsna1gnXTsgPz5bXSIgUU0yYWk9Ijw/R2ZHIGlSZmcgJGtkWGlTX3lraTJYMVska2xfeWtpMlhdWydrWCddOyA/PiIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhjPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZKPnpkWGlTIDhNMUlpYzwvZko+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYyAxSUsyaT0iSGdjWGljLVJnMmdjOiNSeEh5SFgiPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBreSAoaXFHSUsoJGtkWGlTX3FNMUlpYykgfHwgJGtkWGlTX3FNMUlpY1toXSA9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwxR01kIFIyTTExPSIyTUhpMiI+cGcgemRYaVMgOE0xSWljIElNbGxpWCA1a0lmIElmazEgUk1JaWxnY0shPC8xR01kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlnYyAoJHFNID0gaDsgJHFNIDwgJGRnX2tkWGlTX3FNMUlpYzsgJHFNKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2RYaVNfcU0xSWljX1hpSU1rMjEgPSAkcU0xSWljLT5saUl6ZFhpUzhNMUlpY19DS3pYKCRrZFhpU19xTTFJaWNbJHFNXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFNMUlpY19RTTJhaTEgPSAka2RYaVMtPmxpSXpkWGlTbk0yYWlfQ0tqZ1J6WEFwajhNMUlpY3pqKCRrWCwgJGtkWGlTX3FNMUlpY19YaUlNazIxW2hdWydrWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2lSZ2NYX1FNMmFpMSA9IE1jY01LKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWdjICgkcVEgPSBoOyAkcVEgPCBSZ2FkSSgkcU0xSWljX1FNMmFpMSk7ICRxUSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1jY01LX0dhMWYoJGNpUmdjWF9RTTJhaTEsICRxTTFJaWNfUU0yYWkxWyRxUV1bJ2tkWGlTX3FNMUlpY19RTTJhaV9rWCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNpUl8xSWMgPSBANGdrZCgnLCcsICRjaVJnY1hfUU0yYWkxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9ImtkWGlTX3FNMUlpY19rWFtdIiBRTTJhaT0iPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmSj56ZFhpUyA4TTFJaWMgKDw/R2ZHIGlSZmcgJGtkWGlTX3FNMUlpY19YaUlNazIxW2hdWydrZFhpU19xTTFJaWMnXSA/Pik8L2ZKPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmMgMUlLMmk9IkhnY1hpYy1SZzJnYzojUnhIeUhYIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P0dmRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSTUlpbGdjS19rZFhpU19xTTFJaWMgPSAkcU0xSWljLT5saUl6ZFhpUzhNMUlpYzhNZFhNSWdjS0NLejhfUE1JaWxnY0soJFJNSWlsZ2NLX2tYLCAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICghaXFHSUsoJFJNSWlsZ2NLX2tkWGlTX3FNMUlpYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVJmZyAiPGtkR2FJIElLR2k9J2ZrWFhpZCcgZE1xaT0ncU1kWE1JZ2NLX2tkWGlTX3FNMUlpYycgUU0yYWk9JyIgLiAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ10gLiAiJz4gKDhNZFhNSWdjSykiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9IiIga1g9IjFfWGtRX2tkWGlTX3FNMUlpY188P0dmRyBpUmZnICRrZFhpU19xTTFJaWNfWGlJTWsyMVtoXVsna1gnXTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX1hrUV9rZFhpU19xTTFJaWNfMWlNY1JmX1JnZElpZElfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9IjFfWGtRX2tkWGlTX3FNMUlpY195a2kyWDFfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MVJja0dJIGRnZFJpPTw/R2ZHIGlSZmcgJF82WjY2enZwWzZaNjZ6dnBfbkFPX3BBOFpdWydhMWljZGdkUmknXTsgPz4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTTRNU19SZ3FxZ2RfY2lFYWkxSSgnWHExLzFrX2tkWGlTX3FNMUlpY19IS2tkWGlTLkdmRz9rWD08P0dmRyBpUmZnICRrZFhpU19xTTFJaWNfWGlJTWsyMVtoXVsna1gnXTsgPz4mY2lSZ2NYX2tYPTw/R2ZHIGlSZmcgJGNpUl8xSWM7ID8+JjVrWElmPXRoRicsICcxX1hrUV9rZFhpU19xTTFJaWNfPD9HZkcgaVJmZyAka2RYaVNfcU0xSWljX1hpSU1rMjFbaF1bJ2tYJ107ID8+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvMVJja0dJPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZjPjwvZmM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMSA9ICJSZ2RJaWRJLTVrWGxpSTEiPgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMSA9ICJ5Z2NxLU1SSWtnZDEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpID0gIkhhSUlnZCIga1ggPSAiMWFIcWtJSElkIiBSMk0xMSA9ICJISWQgSElkLUdja3FNY0siPnVHWE1JaTwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5ICgkZGlTSV9rWCAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE0ga1g9Ijw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGRpU0lfa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiIgUjJNMTE9ImRpU0kiIElrSTJpPSJwaVNJIiBSMk0xMT0iSU1IMmlfSWdnMl8ya2ROIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgUjJNMTE9IkhJZCBISWQta2R5ZyIgSUtHaT0iSGFJSWdkIiA+PEg+cGlTSTwvSD48L0hhSUlnZD48L00+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/R2ZHIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtUk1kUmkyIj5QTWRSaTI8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveWdjcT4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1Ega1g9J1hrUV9HY2lRa2k1X2tkWGlTa2RsJyBSMk0xMT0iMUdNZHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9HZkcgLy8ga2RSMmFYaV9nZFJpKCdYcTFfa2RYaVNrZGxfa2RSMi5HZkcnKTsgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICA8MUlLMmk+CiAgICAgICAgICAgICAgICAucWdYTTItWGtNMmdsdCAgezVrWElmOndKaEdTO30KICAgICAgICAgICAgPC8xSUsyaT4KCiAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0ydCB5TVhpIiBrWD0iMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUciIElNSGtkWGlTPSItMCIgY2cyaT0iWGtNMmdsIiBNY2tNLTJNSGkyMmlYSEs9InFLOGdYTTJyTUhpMiIgTWNrTS1ma1hYaWQ9IkljYWkiIFhNSU0tSE1STlhjZ0c9IjFJTUlrUiIgWE1JTS1OaUtIZ01jWD0ieU0yMWkiID4KICAgICAgICAgICAgICAgIDx5Z2NxIFIyTTExPSJxZ1hNMi15Z2NxIiBrWD0iMV9rZFhpU19HZ0dhR3lnY3EiIHFpSWZnWD0iR2cxSSIgTVJJa2dkPSIjIj4KICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1Ya00yZ2x0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItUmdkSWlkSXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItZmlNWGljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJSMmcxaSIgWE1JTS1YazFxazExPSJxZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiPiZJa3FpMTs8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmIgUjJNMTE9InFnWE0yLUlrSTJpdCIga1g9InFLOGdYTTJyTUhpMiI+emRYaVMgOE0xSWljIDZpTWNSZiBPaTFhMkkxPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItSGdYS3QiIDFJSzJpPSJmaWtsZkk6IGJoaEdTO2dRaWN5Mmc1OiAxUmNnMjI7Ij4gICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX3FNMUlpY2tkWGlTXzFpTWNSZl9HZ0dhR19SZ2RJaWRJIiA+PC9Ya1E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi15Z2dJaWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtMWFSUmkxMSBHZ0dhR18xaTJfSElkIj42aTJpUkk8L0hhSUlnZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IkhJZCBISWQtWGl5TWEySSIgWE1JTS1YazFxazExPSJxZ1hNMiI+UDJnMWk8L0hhSUlnZD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVJnZElpZEkgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVhrTTJnbCAtLT4KICAgICAgICAgICAgICAgIDwveWdjcT4KICAgICAgICAgICAgPC9Ya1E+CgogICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMnQgeU1YaSIga1g9IjFfcU0xSWlja2RYaVNfa2R5Z19HZ0dhRyIgSU1Ia2RYaVM9Ii0wIiBjZzJpPSJYa00yZ2wiIE1ja00tMk1IaTIyaVhISz0ia3Ffa2R5Z19xZ1hNMiIgTWNrTS1ma1hYaWQ9IkljYWkiIFhNSU0tSE1STlhjZ0c9IjFJTUlrUiIgWE1JTS1OaUtIZ01jWD0ieU0yMWkiID4KICAgICAgICAgICAgICAgIDx5Z2NxIFIyTTExPSJxZ1hNMi15Z2NxIiBrWD0iMV9rZFhpU19rZHlnX0dnR2FHeWdjcSIgcWlJZmdYPSJHZzFJIiBNUklrZ2Q9IiMiPgogICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLVhrTTJnbHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1SZ2RJaWRJdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1maU1YaWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFJSWdkIElLR2k9IkhhSUlnZCIgUjJNMTE9IlIyZzFpIiBYTUlNLVhrMXFrMTE9InFnWE0yIiBNY2tNLWZrWFhpZD0iSWNhaSI+JklrcWkxOzwvSGFJSWdkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYiBSMk0xMT0icWdYTTItSWtJMml0IiBrWD0icUs4Z1hNMnJNSGkyIj56ZFhpUyA4TTFJaWMgT2lSZ2NYIGppSU1rMjE8L2ZiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMi1IZ1hLdCIgMUlLMmk9ImdRaWN5Mmc1OiAxUmNnMjI7Ij4gICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSIxX3FNMUlpY2tkWGlTX2tkeWdfR2dHYUdfUmdkSWlkSSIgPjwvWGtRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTIteWdnSWljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJISWQgSElkLVhpeU1hMkkiIFhNSU0tWGsxcWsxMT0icWdYTTIiPlAyZzFpPC9IYUlJZ2Q+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1SZ2RJaWRJIC0tPgogICAgICAgICAgICAgICAgICAgIDwvWGtRPjwhLS0gLy5xZ1hNMi1Ya00yZ2wgLS0+CiAgICAgICAgICAgICAgICA8L3lnY3E+CiAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICA8WGtRIFIyTTExPSJxZ1hNMnQgeU1YaSIga1g9InlrMmlfMUlNSWExX1JncXFpZEkxIiBJTUhrZFhpUz0iLTAiIGNnMmk9IlhrTTJnbCIgTWNrTS0yTUhpMjJpWEhLPSJrcV9rZHlnX3FnWE0yIiBNY2tNLWZrWFhpZD0iSWNhaSIgWE1JTS1ITVJOWGNnRz0iMUlNSWtSIiBYTUlNLU5pS0hnTWNYPSJ5TTIxaSIgPgogICAgICAgICAgICAgICAgPHlnY3EgUjJNMTE9InFnWE0yLXlnY3EiIGtYPSJ5azJpXzFJTUlhMV9SZ3FxaWRJMV95Z2NxIiBxaUlmZ1g9IkdnMUkiIE1SSWtnZD0iIyI+CiAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItWGtNMmdsdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLVJnZElpZEl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYa1EgUjJNMTE9InFnWE0yLWZpTVhpY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYUlJZ2QgSUtHaT0iSGFJSWdkIiBSMk0xMT0iUjJnMWkiIFhNSU0tWGsxcWsxMT0icWdYTTIiIE1ja00tZmtYWGlkPSJJY2FpIj4mSWtxaTE7PC9IYUlJZ2Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZiIFIyTTExPSJxZ1hNMi1Ja0kyaXQiIGtYPSJxSzhnWE0yck1IaTIiPkJrMmkgNklNSWExIFBncXFpZEkxPC9mYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTItSGdYS3QiIDFJSzJpPSJnUWljeTJnNTogMVJjZzIyOyI+ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8WGtRIGtYPSJ5azJpXzFJTUlhMV9SZ3FxaWRJMV9Ya1EiID48L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWGtRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFhrUSBSMk0xMT0icWdYTTIteWdnSWljdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhSUlnZCBJS0dpPSJIYUlJZ2QiIFIyTTExPSJISWQgSElkLVhpeU1hMkkiIFhNSU0tWGsxcWsxMT0icWdYTTIiPlAyZzFpPC9IYUlJZ2Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hrUT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVJnZElpZEkgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9Ya1E+PCEtLSAvLnFnWE0yLVhrTTJnbCAtLT4KICAgICAgICAgICAgICAgIDwveWdjcT4KICAgICAgICAgICAgPC9Ya1E+CgoKICAgICAgICAgICAgPDFSY2tHSSBkZ2RSaSA9PD9HZkcgaVJmZyAkXzZaNjZ6dnBbNlo2Nnp2cF9uQU9fcEE4Wl1bJ2ExaWNkZ2RSaSddOyA/PiA+CiAgICAgICAgICAgICAgICAkKHlhZFJJa2dkICgpIHsKCgogICAgICAgICAgICAgICAgICAgICQoIiMxX1hrUV9rZFhpU19xTTFJaWNfMWlNY1JmIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSZk1kbGkiLCAiLlIyTTExX2txX3lraTJYMSIsIHlhZFJJa2dkICgpIHsKCgogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX3lrWCA9ICQoSWZrMSkuR2NnRygnUU0yYWknKS4xRzJrSSgnfCcpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0gJChJZmsxKS5HY2dHKCdRTTJhaScpLjFHMmtJKCd8JylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGt5IChrZFhpU19xTTFJaWNfeWtYICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMV9Ya1Ffa2RYaVNfcU0xSWljXzFpTWNSZiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlgxXzFpTWNSZl9RTTIuR2ZHP1hnUl9rWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZrZFhpU19xTTFJaWNfeWtYPScgKyBrZFhpU19xTTFJaWNfeWtYICsgJyZrZFhpU19xTTFJaWNfa1g9JyArIGtkWGlTX3FNMUlpY19rWCArICcmMWlNY1JmX0hLX3lraTJYMT1JY2FpJywgJzFfWGtRX2tkWGlTX3FNMUlpY195a2kyWF8xaU1jUmZfUU0yXycgKyBrZFhpU19xTTFJaWNfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGkyMWkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfa1ggPSAkKElmazEpLkdjZ0coJ2tYJykuMUcya0koJ18nKVtiXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyMxX1hrUV9rZFhpU19xTTFJaWNfeWtpMlhfMWlNY1JmX1FNMl8nICsga2RYaVNfcU0xSWljX2tYKS5mSXEyKCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUmZNZGxpIE5pS2FHIHlnUmExa2QiLCAiLlIyTTExX2tkWGlTX3FNMUlpY195a2kyWF9RTTIiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfeWtYID0gJChJZmsxKS5HY2dHKCdkTXFpJykuMUcya0koJ18nKVtiXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9ICQoSWZrMSkuR2NnRygnZE1xaScpLjFHMmtJKCdfJylbSl07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfUU0yYWkgPSAkKElmazEpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIE00TVNfUmdxcWdkX2NpRWFpMUkoJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlhfUmZpUk4uR2ZHP3FNMUlpY19rWD0nICsgcU0xSWljX2tYICsgJyZrZFhpU19xTTFJaWNfeWtYPScgKyBrZFhpU19xTTFJaWNfeWtYICsgJyYxaTJfUU0yYWk9JyArIGlkUmdYaXVPelBncUdnZGlkSSgxaTJfUU0yYWkpLCAneWtpMlhfUU0yX3FNSVJmXycgKyBrZFhpU19xTTFJaWNfeWtYKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlIyTTExX2txX2tkeWcsIC5ISWRfa3Ffa2R5ZyIsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9RTWMga2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWCA9ICQoSWZrMSkuR2NnRygnUU0yYWknKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9NNE1TX1JncXFnZF9jaUVhaTFJKCdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfUU0yLkdmRz9YZ1Jfa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZHa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4ma2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWD0nICsga2RYaVNfcU0xSWljXzFpTWNSZl95a2kyWF9rWCArICcmMWlNY1JmX0hLX3lraTJYMT1JY2FpJywgJzFfWGtRX2tkWGlTX3FNMUlpY195a2kyWF8xaU1jUmZfUU0yJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU19rZHlnX0dnR2FHJykucWdYTTIoJzFmZzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCJfIik7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBjX2tYID0ga1hbaF07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBxTTFJaWNfa1ggPSBrWFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5NNE1TKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElLR2k6ICJzdjZXIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjMjogJ1hxMS8xa19rZFhpU19xTTFJaWNfa2R5Zy5HZkc/Y19rWD0nICsgY19rWCArICcmcU0xSWljX2tYPScgKyBxTTFJaWNfa1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUlNOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hnZ0lIZ1MuTTJpY0koIk9pRWFpMUkgeU1rMmlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfa2R5Z19HZ0dhR19SZ2RJaWRJIikuZklxMihYTUlNLmNpMUdnZDFpV2lTSSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSMmtSTiIsICIuUjJNMTFfa3FfMWlNY1JmIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUcnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX3lrWCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpW0ZdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljX2tYID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbYl07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaU1jUmZfUU0yID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbSl07CiAgICAgICAgICAgICAgICAgICAgICAgICQuTTRNUyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJS0dpOiAic3Y2VyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYzI6ICdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfY2kxYTJJLkdmRz9HTWxpPTAmeWtpMlhfa1g9JyArIGtkWGlTX3FNMUlpY195a1ggKyAnJnFNMUlpY19rWD0nICsgcU0xSWljX2tYICsgJyYxaU1jUmZfUU0yPScgKyBpZFJnWGl1T3pQZ3FHZ2RpZEkoMWlNY1JmX1FNMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUlNOiAkKCcjWlhrSUJnY3EnKS4xaWNrTTJrRGkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hnZ0lIZ1MuTTJpY0koIk9pRWFpMUkgeU1rMmlYIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHX1JnZElpZEkiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoIlIya1JOIiwgIi4xX0hJZF9rZFhpU195a2kyWF8xaU1jUmYiLCB5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMga2RYaVNfcU0xSWljX2tYID0gJCgiIzFpMl95a2kyWF9rZFhpU19xTTFJaWNfa1giKS5HY2dHKCdRTTJhaScpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9rZFhpU19xTTFJaWNfa1hfJyArIGtkWGlTX3FNMUlpY19rWCArICddJykuaU1SZih5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKGtkWGlTX3FNMUlpY19rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyk7CgogICAgICAgICAgICAgICAgICAgICAgICBreSAoNFRhaWNLLmtkQWNjTUsoa2RYaVNfcU0xSWljX2tYLCAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjKSA9PSAtMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHJykucWdYTTIoJzFmZzUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrZFhpU19xTTFJaWNfeWtYID0gJCgiIzFfa2RYaVNfcU0xSWljX3lrWCIpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElLR2k6ICJzdjZXIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYzI6ICdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYMV8xaU1jUmZfY2kxYTJJLkdmRz9HTWxpPTAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNSU06ICQoJyNaWGtJQmdjcScpLjFpY2tNMmtEaSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS5ma1hpKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSGdnSUhnUy5NMmljSSgiT2lFYWkxSSB5TWsyaVgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFhUlJpMTE6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmdxRzJpSWk6IHlhZFJJa2dkIChYTUlNKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHX1JnZElpZEkiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhnZ0lIZ1MuTTJpY0koIkEyY2lNWEsgemRYaVMgOE0xSWljIE9pUmdjWCA2aTJpUklpWCEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoIlIya1JOIiwgIi5HZ0dhR18xaTJfSElkIiwgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICBRTWMga1ggPSAkKCdrZEdhSTpjTVhrZ1tkTXFpPTFpMl9HZ0dfY2lSZ2NYXzFpSV9rWF06UmZpUk5pWCcpLlFNMigpOwogICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX0dnR19jaVJnY1hfMWlJX2tYID0ga1guMUcya0koIl8iKVtoXTsKICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9IGtYLjFHMmtJKCJfIilbMF07CiAgICAgICAgICAgICAgICAgICAgIFFNYyB5a2kyWF9rWCA9IGtYLjFHMmtJKCJfIilbdF07CiAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyBxTTFJaWNfa1ggKyAnXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYy5HYTFmKCQoSWZrMSkuUU0yKCkpOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAxaTJpUklpWF9xTTFJaWNfa2RYaVNfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICBRTWMgMV9HZ0dfMWlNY1JmX3lrWCA9ICQoIiMxX0dnR18xaU1jUmZfeWtYIikuR2NnRygnUU0yYWknKTsKICAgICAgICAgICAgICAgICAgICAgUU1jIDFfR2dHX2tkWGlTX3FNMUlpY19rWCA9ICQoIiMxX0dnR19rZFhpU19xTTFJaWNfa1giKS5HY2dHKCdRTTJhaScpCiAgICAgICAgICAgICAgICAgICAgIFFNYyAxX0dnR195a2kyWF9xTUlSZl9RTTIgPSAkKCIjMV9HZ0dfeWtpMlhfcU1JUmZfUU0yXyIgKyBxTTFJaWNfa1gpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICQoImtkR2FJW2RNcWk9a2RYaVNfcU0xSWljX3lraTJYX1FNMl8iICsgMV9HZ0dfMWlNY1JmX3lrWCArICdfJyArIDFfR2dHX2tkWGlTX3FNMUlpY19rWCArICddJykuR2NnRygiUU0yYWkiLCAxX0dnR195a2kyWF9xTUlSZl9RTTIpOwogICAgICAgICAgICAgICAgICAgICAkKCcjMV9xTTFJaWNrZFhpU18xaU1jUmZfR2dHYUcnKS5xZ1hNMignZmtYaScpOwogICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLmZrWGlBMjIoKTsKICAgICAgICAgICAgICAgICAgICAgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigxaTJfR2dHX2NpUmdjWF8xaUlfa1gpOwogICAgICAgICAgICAgICAgICAgICBNNE1TX1JncXFnZF9jaUVhaTFJKCdYcTEvMWtfa2RYaVNfcU0xSWljX3lraTJYX1JmaVJOLkdmRz9YZ1Jfa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigka1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZHa1g9PD9HZkcgaVJmZyBpZFJjS0dJX2FjMigkR2tYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4mY2lSZ2NYXzFpSV9rWD0nICsgMWkyX0dnR19jaVJnY1hfMWlJX2tYICsgJyZxTTFJaWNfa1g9JyArIHFNMUlpY19rWCArICcma2RYaVNfcU0xSWljX3lrWD0nICsgeWtpMlhfa1gsICd5a2kyWF9RTTJfcU1JUmZfJyArIDFfR2dHXzFpTWNSZl95a1gpOwogICAgICAgICAgICAgICAgICAgICB9KTsqLwoKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLkdnR2FHXzFpMl9ISWQiLCB5YWRSSWtnZCAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHlraTJYX2tYX01jYyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWlNY1JmemoxID0gJCgia2RHYUk6UmZpUk5IZ1NbZE1xaT0xaTJfR2dHX2NpUmdjWF8xaUlfa1hdOlJmaVJOaVgiKS5xTUcoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtYID0gJChJZmsxKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfR2dHX2NpUmdjWF8xaUlfa1ggPSBrWC4xRzJrSSgiXyIpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFNMUlpY19rWCA9IGtYLjFHMmtJKCJfIilbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgeWtpMlhfa1ggPSBrWC4xRzJrSSgiXyIpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigxaTJfR2dHX2NpUmdjWF8xaUlfa1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcU0xSWljX2tYX01jYy5HYTFmKHFNMUlpY19rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5a2kyWF9rWF9NY2MuR2ExZih5a2kyWF9rWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaUlhY2QgMWkyX0dnR19jaVJnY1hfMWlJX2tYOwogICAgICAgICAgICAgICAgICAgICAgICB9KS5saUkoKTsKICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgJCgnIzFfcU0xSWlja2RYaVNfMWlNY1JmX0dnR2FHJykucWdYTTIoJ2ZrWGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgSGdnSUhnUy5ma1hpQTIyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBreSAoMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuMmlkbElmID4gaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGtkWGlTX3FNMUlpY19rWCA9IHFNMUlpY19rWF9NY2NbaF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFfR2dHXzFpTWNSZl95a1ggPSAkKCIjMV9HZ0dfMWlNY1JmX3lrWCIpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgMV9HZ0dfa2RYaVNfcU0xSWljX2tYID0gJCgiIzFfR2dHX2tkWGlTX3FNMUlpY19rWCIpLkdjZ0coJ1FNMmFpJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxX0dnR195a2kyWF9xTUlSZl9RTTIgPSAkKCIjMV9HZ0dfeWtpMlhfcU1JUmZfUU0yXyIgKyBrZFhpU19xTTFJaWNfa1gpLkdjZ0coJ1FNMmFpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCJrZEdhSVtkTXFpPWtkWGlTX3FNMUlpY195a2kyWF9RTTJfIiArIDFfR2dHXzFpTWNSZl95a1ggKyAnXycgKyAxX0dnR19rZFhpU19xTTFJaWNfa1ggKyAnXScpLkdjZ0coIlFNMmFpIiwgMV9HZ0dfeWtpMlhfcU1JUmZfUU0yKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgaVNrMUkxX2NpUmdjWF8xaUlfa1ggPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ1trWF49WGtRa3ExaTJjMWlJXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vWGtRa3ExaTJjMWlJX3RfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBrWCA9ICQoSWZrMSkuR2NnRygia1giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljX2tYID0ga1guMUcya0koIl8iKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWMgY2lSZ2NYXzFpSV9rWCA9IGtYLjFHMmtJKCJfIilbdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVNrMUkxX2NpUmdjWF8xaUlfa1guR2ExZihxTTFJaWNfa1ggKyAnXycgKyBjaVJnY1hfMWlJX2tYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuTTRNUyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjMjogJ1hxMS8xa19rZFhpU19xTTFJaWNfeWtpMlhfUmZpUk4uR2ZHP1hnUl9rWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRrWCwgQXNzX1pwUE9lc1d6dnBfNkFyVyk7ID8+JkdrWD08P0dmRyBpUmZnIGlkUmNLR0lfYWMyKCRHa1gsIEFzc19acFBPZXNXenZwXzZBclcpOyA/PiZjaVJnY1hfMWlJX2tYPScgKyAxaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYyArICcmcU0xSWljX2tYPScgKyBxTTFJaWNfa1hfTWNjICsgJyZrZFhpU19xTTFJaWNfeWtYPScgKyB5a2kyWF9rWF9NY2MgKyAnJmlTazFJMV9jaVJnY1hfMWlJX2tYPScgKyBpU2sxSTFfY2lSZ2NYXzFpSV9rWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXlnY2k2aWRYOiB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNjZ2M6IHlhZFJJa2dkIChYTUlNKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMWFSUmkxMTogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnNnR2FHc01kaTIiKS4xZmc1KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZ3FHMmlJaTogeWFkUklrZ2QgKFhNSU0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuZmtYaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiN5azJpXzFJTUlhMV9SZ3FxaWRJMV9Ya1EiKS5mSXEyKFhNSU0uY2kxR2dkMWlXaVNJKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIGtkWGlTX3FNMUlpY19rWCkuTUdHaWRYKFhNSU0uY2kxR2dkMWlXaVNJKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICQoWGdSYXFpZEkpLmdkKCJSMmtSTiIsICcjMWFIcWtJSElkJywgeWFkUklrZ2QgKGkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBNYUlnemRYaVMgPSAkKCcjTWFJZ3pkWGlTa2RsOlJmaVJOaVgnKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSSgkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFpMmlSSWlYX3FNMUlpY19rZFhpU19rWF9NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTTJpY0koMWkyaVJJaVhfcU0xSWljX2tkWGlTX2tYX01jYyk7CgogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU1kWE1JZ2NLX2tkWGlTX3FNMUlpY19NY2MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIFMgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj1xTWRYTUlnY0tfa2RYaVNfcU0xSWljXScpLmlNUmYoeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1jIHFfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49eV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAkKElmazEpLlFNMigpICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgna2RHYUlbZE1xaV49MWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9nXycgKyAkKElmazEpLlFNMigpICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NMmljSShxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChxXzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID09IGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLk0yaWNJKCdzMmlNMWkgUGZnZzFpIDhNZFhNSWdjSyB6ZFhpUyA4TTFJaWMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLkdjaVFpZElqaXlNYTJJKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVNrSShoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcU1kWE1JZ2NLX2tkWGlTX3FNMUlpY19NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vMQogICAgICAgICAgICAgICAgICAgICAgICAvL00yaWNJKHFNZFhNSWdjS19rZFhpU19xTTFJaWNfTWNjLjJpZGxJZik7CgoKCgogICAgICAgICAgICAgICAgICAgICAgICBreSAoUyA9PSBxTWRYTUlnY0tfa2RYaVNfcU0xSWljX01jYy4yaWRsSWYpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjWlhrSUJnY3EnKS4xYUhxa0koKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlTa0koaCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAnLlIyTTExX2txX3FnUWknLCB5YWRSSWtnZCAoaSkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSX2tYMCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYID0gUl9rWDAuMUcya0koJ3wnKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggPSBSX2tYMC4xRzJrSSgnfCcpW2hdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWZnNV9RTTIgPSBSX2tYMC4xRzJrSSgnfCcpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX3lfSWlTSSA9ICQoIiMxX2tkWGlTX3FNMUlpY195a1hfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICcgZ0dJa2dkOjFpMmlSSWlYJykuSWlTSSgpOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgMWkyX3lfa1ggPSAkKCIjMV9rZFhpU19xTTFJaWNfeWtYXyIgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1gpLlFNMigpLjFHMmtJKCd8JylbaF07CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyAxaTJfeV9RTTJhaSA9ICQoImtkR2FJW2RNcWk9a2RYaVNfcU0xSWljX3lraTJYX1FNMl8iICsgMWkyX3lfa1ggKyAnXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAiXSIpLlFNMigpOwogICAgICAgICAgICAgICAgICAgICAgICBreSAoMWkyX3lfUU0yYWkgPT0gYWRYaXlrZGlYKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxaTJfeV9RTTJhaSA9IDFmZzVfUU0yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyB5XzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2tkR2FJW2RNcWlePXlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ10nKS5pTVJmKHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF9NY2MuR2ExZigkKElmazEpLlFNMigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKCdrZEdhSVtkTXFpXj0xaTJpUklpWF9jaVJnY1hfMWlJX2tYX2dfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICddJykuaU1SZih5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XzFpMmlSSWlYX2NpUmdjWF8xaUlfa1hfTWNjLkdhMWYoJChJZmsxKS5RTTIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBreSAoNFRhaWNLLmtkQWNjTUsoMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCwgeV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYX01jYykgPT0gLTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCcnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjMV9rcV8xaTJfY2lSZ2NYMWlJMV8iICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYKS5NR0dpZFgoJzxYa1Ega1g9IlhrUWtxMWkyYzFpSV8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ18nICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciIFIyTTExPSJjZzUteTJha1giPjxYa1EgUjJNMTE9IjFHTWQwdCI+PGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0ieV8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnW10iIFFNMmFpPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9InlfMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnIiBRTTJhaT0iJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciPjwxR01kIGtYPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICdfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciIDFJSzJpPSJSYWMxZ2M6IEdna2RJaWMiIFIyTTExPSJSMk0xMV9rcV9rZHlnIDJNSGkyIj4nICsgMWkyX3lfSWlTSSArICc6ICcgKyAxaTJfeV9RTTJhaSArICc8LzFHTWQ+PDFHTWQga1g9IjJNSGkya3FjaXFnUWlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iUjJNMTFfa3FfY2lxZ1FpIDJNSGkyIDJNSGkyLWtxR2djSU1kSSIgMUlLMmk9IlJhYzFnYzogR2drZElpYyIgPjxrIFIyTTExPSJrUmdkLWNpcWdRaSI+PC9rPjwvMUdNZD48L1hrUT48L1hrUT4gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgJCgiIzFfa3FfMWkyX2NpUmdjWDFpSTFfIiArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCkuTUdHaWRYKCc8WGtRIGtYPSJYa1FrcTFpMmMxaUlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iY2c1LXkyYWtYIj48WGtRIFIyTTExPSIxR01kMHQiPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9IjFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJyIgUU0yYWk9IicgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnIj48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSIxaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyAxaTJpUklpWF9rZFhpU19xTTFJaWNfa1ggKyAnW10iIFFNMmFpPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciPjxrZEdhSSBJS0dpPSJma1hYaWQiIGRNcWk9InlfMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ1tdIiBRTTJhaT0iJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIj48a2RHYUkgSUtHaT0iZmtYWGlkIiBkTXFpPSJ5XzFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWF8nICsgMWkyaVJJaVhfa2RYaVNfcU0xSWljX2tYICsgJ1tdIiBRTTJhaT0iJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICciPjwxR01kIGtYPSInICsgMWkyaVJJaVhfY2lSZ2NYXzFpSV9rWCArICciIDFJSzJpPSJSYWMxZ2M6IEdna2RJaWMiIFIyTTExPSJSMk0xMV9rcV9rZHlnIDJNSGkyIj4nICsgMWkyX3lfSWlTSSArICc6ICcgKyAxaTJfeV9RTTJhaSArICc8LzFHTWQ+PDFHTWQga1g9IjJNSGkya3FjaXFnUWlfJyArIDFpMmlSSWlYX2tkWGlTX3FNMUlpY19rWCArICdfJyArIDFpMmlSSWlYX2NpUmdjWF8xaUlfa1ggKyAnIiBSMk0xMT0iUjJNMTFfa3FfY2lxZ1FpIDJNSGkyIDJNSGkyLWtxR2djSU1kSSIgMUlLMmk9IlJhYzFnYzogR2drZElpYyIgPjxrIFIyTTExPSJrUmdkLWNpcWdRaSI+PC9rPjwvMUdNZD48L1hrUT48L1hrUT4gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZ2dJSGdTLk0yaWNJKCc2TXFpIE9pUmdjWCBBMmNpTVhLIFpTazFJMSEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlIyTTExX2txX2NpcWdRaSIsIHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUU1jIGNrWCA9ICQoSWZrMSkuR2NnRygna1gnKS4xRzJrSSgnXycpW3RdOwogICAgICAgICAgICAgICAgICAgICAgICBRTWMgcU0xSWljID0gJChJZmsxKS5HY2dHKCdrWCcpLjFHMmtJKCdfJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIEhnZ0lIZ1MuUmdkeWtjcSgiQWNpIEtnYSAxYWNpPyIsIHlhZFJJa2dkIChjaTFhMkkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt5IChjaTFhMkkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjWGtRa3ExaTJjMWlJXyIgKyBxTTFJaWMgKyAnXycgKyBja1gpLmNpcWdRaSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiMxX2txXzFpMl9jaVJnY1gxaUkxXyIgKyBxTTFJaWMpLk1HR2lkWCgnPGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0iWF8xaTJpUklpWF9jaVJnY1hfMWlJX2tYXycgKyBxTTFJaWMgKyAnW10iIFFNMmFpPSInICsgY2tYICsgJyI+PGtkR2FJIElLR2k9ImZrWFhpZCIgZE1xaT0iWF8xaTJpUklpWF9rZFhpU19xTTFJaWNfa1hfJyArIHFNMUlpYyArICciIFFNMmFpPSInICsgcU0xSWljICsgJyI+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBRTWMgcUtNY2NNSyA9IFtdOwogICAgICAgICAgICA8P0dmRyBreSAoJEFHR2NnUWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCdBR0djZ1FpWCcpOzw/R2ZHIH0gPz4KICAgICAgICAgICAgPD9HZkcga3kgKCR1ZE1HR2NnUWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCd1ZE1HR2NnUWlYJyk7PD9HZkcgfSA/PgogICAgICAgICAgICA8P0dmRyBreSAoJE9pNGlSSWlYMFtoXVsnMWtEaSddID09IGgpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgcUtNY2NNSy5HYTFmKCdPaTRpUklpWCcpOzw/R2ZHIH0gPz4KICAgICAgICAgICAgICAgICAgICAkKFhnUmFxaWRJKS5nZCgiUjJrUk4iLCAiLlJncXFpZEkiLCB5YWRSSWtnZCAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFNYyBSYWNjaWRJXzFpMmlSSWlYX1FNMmFpID0gJChJZmsxKS5RTTIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnMk1IaTJbeWdjPSIxSU1JYTFfUmdxcWlkSSJdJykuSWlTSSgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGt5IChSYWNjaWRJXzFpMmlSSWlYX1FNMmFpICE9ICc8P0dmRyBpUmZnICRYZ1JfWGlJTWsyMVtoXVsnMUlNSWExJ10gPz4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuMUlNSWExX1JncXFpZElfWGtRJykuY2lxZ1FpUDJNMTEoJ2ZrWGknKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBpMjFpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy4xSU1JYTFfUmdxcWlkSV9Ya1EnKS5NWFhQMk0xMSgnZmtYaScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGt5ICg0VGFpY0sua2RBY2NNSyhSYWNjaWRJXzFpMmlSSWlYX1FNMmFpLCBxS01jY01LKSAhPT0gLTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyMxSU1JYTFfUmdxcWlkSScpLmNpcWdRaUFJSWMoJ2NpRWFrY2lYJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjMUlNSWExX1JncXFpZEknKS5HY2dHKCdjaUVha2NpWCcsIEljYWkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgJChYZ1JhcWlkSSkuZ2QoJ1Iya1JOJywgJy4xZmc1X0djaVFrZ2ExX1JncXFpZEkxX3FnWE0yJywgeWFkUklrZ2QgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjeWsyaV8xSU1JYTFfUmdxcWlkSTEnKS5xZ1hNMignMWZnNScpOwogICAgICAgICAgICAgICAgICAgICAgICAkLk00TVMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUtHaTogInN2NlciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWMyOiAnWHExL2xpSV9HY2lRa2dhMV95azJpX1JncXFpZEkxX0hLX1hnUl9rWC5HZkcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1JTTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhnUl9rWDogJzw/R2ZHIGlSZmcgaWRSY0tHSV9hYzIoJGtYLCBBc3NfWnBQT2VzV3p2cF82QXJXKTsgPz4nfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpeWdjaTZpZFg6IHlhZFJJa2dkICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLjFmZzUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY2NnYzogeWFkUklrZ2QgKFhNSU0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxYVJSaTExOiB5YWRSSWtnZCAoWE1JTSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5zZ0dhR3NNZGkyIikuMWZnNSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJncUcyaUlpOiB5YWRSSWtnZCAoWE1JTSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuc2dHYUdzTWRpMiIpLmZrWGkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjeWsyaV8xSU1JYTFfUmdxcWlkSTFfWGtRIikuZklxMihYTUlNLmNpMUdnZDFpV2lTSSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIDwvMVJja0dJPgogICAgICAgICAgICA8P0dmRwogICAgICAgIH0gaTIxaSB7CiAgICAgICAgICAgIGtkUjJhWGkoImljY2djX2JoRi5HZkciKTsKICAgICAgICB9CiAgICB9IGkyMWkgewogICAgICAgICRHTWxpX1JJMi0+MmdsX2tkWGtjaVJJX01SUmkxMSgpOwogICAgICAgIGtkUjJhWGkoImljY2djX2JoRi5HZkciKTsKICAgIH0KfQoKLy99Cj8+CiAK';$_D=strrev('edoced_46esab');eval($_D('JF9DMTM1MzU2MjExMD1iYXNlNjRfZGVjb2RlKCRfQzEzNTM1NjIxMTApOyRfQzEzNTM1NjIxMTA9c3RydHIoJF9DMTM1MzU2MjExMCwnTUFEdndjOVlyU1JRdGxrOGlXZ3oxeXgyT0NaUEo0cGhvamJzZlY1VFhOQlVldTBkS0lMN0Y2bnEzSG1FYUcnLCdhQXpPOHJHV0x4Y3YyZ2lNZVRvSXNmN2xSQkVDNWpOMDlENFBoSndRZGtGS1lVMW55dFpYM1NWbTZiSHF1cCcpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzEzNTM1NjIxMTApO2V2YWwoJF9SKTskX1I9MDskX0MxMzUzNTYyMTEwPTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C1353562110 0

Stats

MD5 5b4706b45b2ef0e9271e1cdcbcb6b023
Eval Count 2
Decode Time 499 ms