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 /* ===================================================== DataLife Engine - by So..

Decoded Output download

?><?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group 
-----------------------------------------------------
 https://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004-2024 SoftNews Media Group
=====================================================
 This code is protected by copyright
=====================================================
 File: adminfunction.php
-----------------------------------------------------
 Use: Adminpanel AJAX functions
=====================================================
*/

if(!defined('DATALIFEENGINE')) {
	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../' );
	die( "Hacking attempt!" );
}

if ($_REQUEST['action'] == "selfdelete") {

	if (!$is_logged) {
		die("{\"error\":\"{$lang['err_notlogged']}\"}");
	}

	if (!isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash) {

		die("{\"error\":\"{$lang['err_notlogged']}\"}");
	}

	if ( !$user_group[$member_id['user_group']]['self_delete']) {
		die("{\"error\":\"{$lang['err_selfdel_1']}\"}");
	}

	if (($member_id['user_group'] == 1)) {
		die("{\"error\":\"{$lang['err_selfdel_2']}\"}");
	}

	if (!$member_id['user_id'] OR !$member_id['password'] OR !isset($_POST['password']) OR !$_POST['password'] OR !password_verify($_POST['password'], $member_id['password'])) {
		die("{\"error\":\"{$lang['password_incorect']}\"}");
	}

	if($user_group[$member_id['user_group']]['self_delete'] == 1 ){
		
		$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '137', '')");
		
		if( $user_group[$member_id['user_group']]['allow_delc'] OR $user_group[$member_id['user_group']]['del_allc']) {
	
			deletecommentsbyuserid($member_id['user_id']);
			clear_cache(array('news_', 'comm_', 'full_'));
	
		}

		deleteuserbyid($member_id['user_id']);
		clear_cache(array('stats'));
		
		if (isset($_COOKIE) and is_array($_COOKIE) and count($_COOKIE)) {

			foreach ($_COOKIE as $key => $value) {
				set_cookie($key, '', 0);
			}
		}

		session_unset();
		session_destroy();

		die("{\"status\":\"deleted\"}");
	
	} else {

		$row = $db->super_query("SELECT user_id FROM " . USERPREFIX . "_users_delete WHERE user_id='{$member_id['user_id']}'");

		if(isset($row['user_id']) AND $row['user_id']) {
			die("{\"error\":\"{$lang['err_selfdel_3']}\"}");
		}

		$db->query("INSERT INTO " . USERPREFIX . "_users_delete (user_id) values ('{$member_id['user_id']}')");

		die("{\"status\":\"wait\"}");
	}

}

if ($_REQUEST['action'] == "findcommentspage") {

	if (!isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash) {

		die("error");
	}

	function build_comments_tree($data) {

		$tree = array();
		foreach ($data as $id => &$node) {
			if ($node['parent'] === false) {
				$tree[$id] = &$node;
			} else {
				if (!isset($data[$node['parent']]['children'])) $data[$node['parent']]['children'] = array();
				$data[$node['parent']]['children'][$id] = &$node;
			}
		}

		return $tree;
	}

	function searchByFieldValue($array, $field, $value) {

		foreach ($array as $item) {
			
			if (isset($item[$field]) AND $item[$field] == $value) {
			
				return true;
			
			}

			if (isset($item['children']) AND is_array($item['children'])) {
				if (searchByFieldValue($item['children'], $field, $value)) {
					return true;
				}
			}

		}

		return false;
	}

	$post_id = intval($_REQUEST['post_id']);
	$comment_id = intval($_REQUEST['comment_id']);

	if($post_id AND $comment_id) {

		$rows = array();
		
		if ($config['allow_cmod']) $where_approve = " AND " . PREFIX . "_comments.approve=1";
		else $where_approve = "";

		$sql_result = $db->query("SELECT " . PREFIX . "_comments.id, " . PREFIX . "_comments.parent FROM " . PREFIX . "_comments WHERE " . PREFIX . "_comments.post_id = '{$post_id}'{$where_approve}  ORDER BY " . PREFIX . "_comments.id ASC");

		while ($row = $db->get_row($sql_result)) {
			$rows[$row['id']] = array();

			foreach ($row as $key => $value) {
				if ($key == "parent" AND ($value == 0 OR !$config['tree_comments'])) $value = false;
				$rows[$row['id']][$key] = $value;
			}
		}

		$db->free($sql_result);
		unset($row);

		if( count($rows ) ) {
			$rows = build_comments_tree($rows);

			if ($config['comm_msort'] == "DESC") $rows = array_reverse($rows, true);

			$rows = array_chunk($rows, intval($config['comm_nummers']) );

			$page = 1;
			$page_found = false;

			foreach ($rows as $arr ) {

				if( searchByFieldValue($arr, 'id', $comment_id) ){
					$page_found = true;
					break;
				}

				$page ++;
			}

			if($page && $page_found) {

				$return = array(
					'status' => 'ok',
					'page' => $page
				);

				$return = json_encode($return, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

				die($return);

			} 

		}

	}

	$return = array(
		'status' => 'error'
	);

	$return = json_encode($return, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

	die($return);
}

if ($_REQUEST['action'] == "newsread") {
	
	if( !$config['allow_read_count'] ) {
		die ("error");
	}
	
	$id = intval($_REQUEST['id']);
	
	$row = $db->super_query( "SELECT news_id FROM " . PREFIX . "_post_extras WHERE news_id = '{$id}'" );
	
	if(isset($row['news_id']) AND $row['news_id']) {
		
		if ( $config['allow_read_count'] == 2 ) {
	
			$readcount = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_read_log WHERE news_id='{$row['news_id']}' AND ip='{$_IP}'" );
	
			if( !$readcount['count'] ) {
	
				if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['news_id']}')" );
				else $db->query( "UPDATE " . PREFIX . "_post_extras SET news_read=news_read+1 WHERE news_id='{$row['news_id']}'" );
	
				$db->query( "INSERT INTO " . PREFIX . "_read_log (news_id, ip) VALUES ('{$row['news_id']}', '{$_IP}')" );
			}
	
		} else {
	
			if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['news_id']}')" );
			else $db->query( "UPDATE " . PREFIX . "_post_extras SET news_read=news_read+1 WHERE news_id='{$row['news_id']}'" );
		}

	}
	
	die('ok');
	
}

if ($_REQUEST['action'] == "bannersviews") {

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$ids = $uniq_ids_ip = $max_views = array();
	
	foreach ($_REQUEST['ids'] as $id) {

		$id = intval($id);

		if($id < 1 ) die ("error");

		$ids[$id] = $id;
		
	}
	
	if( !count($ids) ) die ("error");

	$db->query( "SELECT id, allow_views, max_views, views FROM " . PREFIX . "_banners WHERE id='".implode("' OR id='", $ids)."'" );
	
	while ( $row = $db->get_row() ) {
		if($row['allow_views'] == 2 ) $uniq_ids_ip[$row['id']] = $row['id'];
		if( $row['max_views'] ) $max_views[$row['id']] = array('max_views' => $row['max_views'], 'views' => $row['views']);
	}
	
	if( count($uniq_ids_ip) ) {
		$db->query( "SELECT bid FROM " . PREFIX . "_banners_logs WHERE (bid='".implode("' OR bid='", $uniq_ids_ip)."') AND ip='{$_IP}'" );
		while ( $row = $db->get_row() ) {
			unset($ids[$row['bid']]);
			unset($uniq_ids_ip[$row['bid']]);
		}
	}
	
	if( count($ids) ) {
		$db->query( "UPDATE " . PREFIX . "_banners SET views=views+1 WHERE id='".implode("' OR id='", $ids)."'" );
		foreach ($ids as $id) {
			if($max_views[$id]['max_views'] AND ($max_views[$id]['views']+1) >= $max_views[$id]['max_views'] ) {
				@unlink( ENGINE_DIR . '/cache/system/banners.php' );
			}
		}
	}
	
	if( count($uniq_ids_ip) ) {
		foreach ($uniq_ids_ip as $id) {
			$db->query( "INSERT INTO " . PREFIX . "_banners_logs (bid, ip) VALUES ('{$id}', '{$_IP}')" );
		}
	}
	
	die( "ok" );
}

if ($_REQUEST['action'] == "bannersclick") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		die ("error");
	}
	
	$id = intval($_REQUEST['id']);
	
	if($id < 1 ) die ("error");
	
	$row = $db->super_query( "SELECT allow_counts, max_counts, clicks FROM " . PREFIX . "_banners WHERE id='{$id}'" );
	$max_counts = $row['max_counts'];
	$clicks = $row['clicks'];
	
	if( !$row['allow_counts'] ) die ("error");
	
	if( $row['allow_counts'] == 2 ) {
		
		$row = $db->super_query( "SELECT id, click FROM " . PREFIX . "_banners_logs WHERE bid='{$id}' AND ip='{$_IP}'" );
		
		if(!$row['click']) {
			$db->query( "UPDATE " . PREFIX . "_banners SET clicks=clicks+1 WHERE id='{$id}'" );
			
			if($max_counts AND ($clicks+1) >= $max_counts ) {
				@unlink( ENGINE_DIR . '/cache/system/banners.php' );
			}
		}
		
		if($row['id']) $db->query( "UPDATE " . PREFIX . "_banners_logs SET click='1' WHERE id='{$row['id']}'" );
		else $db->query( "INSERT INTO " . PREFIX . "_banners_logs (bid, click, ip) VALUES ('{$id}', '1', '{$_IP}')" );
		
	} else {
		
		$db->query( "UPDATE " . PREFIX . "_banners SET clicks=clicks+1 WHERE id='{$id}'" );
		
		if($max_counts AND ($clicks+1) >= $max_counts ) {
			@unlink( ENGINE_DIR . '/cache/system/banners.php' );
		}

	}
	
	die( "ok" );	
}

if ($_REQUEST['action'] == "del_social") {
	
	$id = intval($_REQUEST['id']);

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash OR !$member_id['user_id'] OR !$id) {
		die ("error");
	}
	
	$db->query( "DELETE FROM " . USERPREFIX . "_social_login WHERE uid='{$member_id['user_id']}' AND id='{$id}'" );
	
	echo $lang['del_from_social_2'];
	die();
}

if ($_REQUEST['action'] == "add_ignore") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash OR !$member_id['user_id']) {
		die("{\"error\":\"{$lang['err_notlogged']}\"}");
	}
	
	$id = intval($_GET['id']);
	
	$row = $db->super_query( "SELECT name, user_id, user_group FROM " . USERPREFIX . "_users WHERE user_id='{$id}'" );
	
	if( !isset($row['user_id']) ) {
		die("{\"error\":\"Operation not Allowed\"}");
	}
	
	if ($row['user_id'] == $member_id['user_id']) {
		die("{\"error\":\"{$lang['ignore_error']}\"}");
	}
	
	if ($user_group[$row['user_group']]['admin_editusers']) {
		die("{\"error\":\"{$lang['ignore_error_2']}\"}");
	}
	
	$db->query( "SELECT id FROM " . USERPREFIX . "_ignore_list WHERE user_from='{$row['name']}' AND user='{$member_id['user_id']}'" );

	if ($db->num_rows()) {
		die("{\"error\":\"{$lang['ignore_error_1']}\"}");
		
	}
	
	$db->query( "INSERT INTO " . USERPREFIX . "_ignore_list (user, user_from) values ('{$member_id['user_id']}', '{$row['name']}')" );
	
	die("{\"success\":\"{$lang['ignore_ok']}\"}");
	
}

if ($_REQUEST['action'] == "del_ignore") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash OR !$member_id['user_id']) {
		die ( $lang['err_notlogged'] );
	}
	
	$id = intval($_GET['id']);

	$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_ignore_list WHERE id='{$id}'" );

	if (isset($row['id']) AND ($row['user'] == $member_id['user_id'] OR $user_group[$member_id['user_group']]['admin_editusers'] ) ) {
		
		$db->query( "DELETE FROM " . USERPREFIX . "_ignore_list WHERE id = '{$row['id']}'" );
		
		die($lang['ignore_del_ok']);
	
	}

	die("Operation not Allowed");

}

if ($_REQUEST['action'] == "saveeditnews") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash OR !$member_id['user_id']) {
		die ( "{\"error\":\"{$lang['err_notlogged']}\"}" );
	}
	
	$id = intval($_REQUEST['id']);

	$row = $db->super_query( "SELECT id, autor, date  FROM " . PREFIX . "_post WHERE id = '{$id}'" );
	
	if( isset($row['id']) AND $row['id']) {
		
		$have_perm = 0;
	
		if( $user_group[$member_id['user_group']]['allow_edit'] AND $row['autor'] == $member_id['name'] ) {
			$have_perm = 1;
		}
	
		if( $user_group[$member_id['user_group']]['allow_all_edit'] ) {
			$have_perm = 1;
			
			if($member_id['cat_add']) $allow_list = explode( ',', $member_id['cat_add'] );
			else $allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_add'] );
	
			foreach ( $cat_list as $selected ) {
				if( $allow_list[0] != "all" and !in_array( $selected, $allow_list ) ) $have_perm = 0;
			}
		}
	
		if( $user_group[$member_id['user_group']]['max_edit_days'] ) {
			$newstime = strtotime( $row['date'] );
			$maxedittime = $_TIME - ($user_group[$member_id['user_group']]['max_edit_days'] * 3600 * 24);
			if( $maxedittime > $newstime ) $have_perm = 0;
		}
		
		if( ($member_id['user_group'] == 1) ) {
			$have_perm = 1;
		}
	
		if( !$have_perm ) {
			die ( "{\"error\":\"Operation not Allowed\"}" );
		}
		
		$db->query( "UPDATE " . PREFIX . "_post_extras SET edited_now='".$db->safesql(json_encode(array('name' => $member_id['name'], 'time' => time() ), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ))."' WHERE news_id='{$row['id']}'" );
		
		die ( "{\"success\":\"1\"}" );
		
	}
	
	die ( "{\"error\":\"Operation not Allowed\"}" );

}

if ($_REQUEST['action'] == "viewshared") {
	
	if( !$is_logged ) {
		die ( "{\"error\":\"{$lang['err_notlogged']}\"}" );
	}
	
	if( !$user_group[$member_id['user_group']]['allow_image_upload'] AND !$user_group[$member_id['user_group']]['allow_file_upload'] ) {
	
		die ( "{\"error\":\"{$lang['err_noupload']}\"}" );
	
	}
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash OR !$member_id['user_id']) {
		die ( "{\"error\":\"{$lang['err_notlogged']}\"}" );
	}
	
	$allowed_extensions = array ("gif", "jpg", "png", "jpeg", "webp" , "bmp", "avif");
	$userdir = '';
	
	if( isset($_REQUEST['userdir']) AND $_REQUEST['userdir'] ) {
		
		$userdir = cleanpath( $_REQUEST['userdir'] );
		
	}
	
	$driver = null;

	if ( intval($config['shared_remote']) > -1 ) $driver = intval($config['shared_remote']);

	DLEFiles::init( $driver );

	$files = DLEFiles::ListDirectory( 'shared/'.$userdir, $allowed_extensions );
	
	if( DLEFiles::$error ) {
		
		$return_array = array (
			'success' => false,
			'error' => DLEFiles::$error
		);
		
		$error = json_encode($return_array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
		
		die($error);
	}

	$folder_list = array();
	
	$folder_list[] = '<div class="file-preview-box">';
	
	if( $userdir ) {
		
		$prev_link = explode("/", $userdir);
		array_pop($prev_link);
		$prev_link = implode("/", $prev_link);
		
		$folder_list[] = <<<HTML
<div class="folder-preview-card">
	<div class="file-content" onclick="get_shared_list('{$prev_link}'); return false;">
		<i class="mediaupload-icon mediaupload-icon-prev"></i>
	</div>
	<div class="file-footer">
		<div class="file-footer-caption">
			<div class="file-caption-info">{$lang['files_prev']}</div>
		</div>
	</div>
</div>
HTML;

	}
	
	foreach ( $files['dirs'] as $entryname) {
		
		$folder = $entryname['name'];
		
		if($folder == 'medium' OR $folder == 'thumbs') continue;
		
		if( $userdir ) $link = $userdir."/".$folder; else $link = $folder;
		
		if($link == "files") continue;
		
		$folder_list[] = <<<HTML
<div class="folder-preview-card">
	<div class="file-content" onclick="get_shared_list('{$link}'); return false;">
		<img src="{$config['http_home_url']}engine/skins/images/folder.png" class="file-preview-image">
	</div>
	<div class="file-footer">
		<div class="file-footer-caption">
			<div class="file-caption-info">{$folder}</div>
		</div>
	</div>
</div>
HTML;

	}
	
	
	foreach ( $files['files'] as $entryname ) {

		$http_url = DLEFiles::GetBaseURL() . 'shared/';
			
		if($userdir) {
			$img_url = $http_url . $userdir . "/" . $entryname['name'];
			$path = $userdir . "/" . $entryname['name'];
			$medium_path = $userdir . "/medium/" . $entryname['name'];
			$thumb_path = $userdir . "/thumbs/" . $entryname['name'];
		} else {
			$img_url = $http_url . $entryname['name'];
			$path = $entryname['name'];
			$medium_path = "medium/" . $entryname['name'];
			$thumb_path = "thumbs/" . $entryname['name'];
		}
		
		if( DLEFiles::FileExists('shared/'.$medium_path) ) $medium_data = "yes"; else $medium_data = "no";
			
		if( DLEFiles::FileExists('shared/'.$thumb_path) ) $thumb_data = "yes"; else $thumb_data = "no";
			
		$folder_list[] = <<<HTML
<div class="file-preview-card" data-type="image" data-area="shared" data-url="{$img_url}" data-thumb="{$thumb_data}" data-path="{$path}" data-medium="{$medium_data}">
	<div class="active-ribbon"><span><i class="mediaupload-icon mediaupload-icon-ok"></i></span></div>
	<div class="file-content">
		<img src="{$img_url}" class="file-preview-image">
	</div>
	<div class="file-footer">
		<div class="file-footer-caption">
			<div class="file-caption-info">{$entryname['name']}</div>
		</div>
		<div class="file-footer-bottom">
			<div class="file-preview">
				<a href="{$img_url}" data-highslide="single" rel="tooltip" title="{$lang['up_im_expand']}" target="_blank"><i class="mediaupload-icon mediaupload-icon-zoom"></i></a>
				<a class="clipboard-copy-link" href="#" rel="tooltip" title="{$lang['up_im_copy']}"><i class="mediaupload-icon mediaupload-icon-copy"></i></a>	
			</div>
		</div>
	</div>
</div>
HTML;
	
	}
	
	
	$folder_list = implode('', $folder_list);
	
	$return_array = array (
		'success' => true,
		'response' => $folder_list
	);
	
	echo json_encode($return_array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
	die();
	
}

if( !$is_logged OR !$user_group[$member_id['user_group']]['allow_admin'] ) { die ("error"); }

$buffer = "";

function parseJsonArray($jsonArray, $parentID = 0)
{
  $return = array();
  foreach ($jsonArray as $subArray) {
     $returnSubSubArray = array();
     if (isset($subArray['children'])) {
       $returnSubSubArray = parseJsonArray($subArray['children'], $subArray['id']);
     }
     $return[] = array('id' => $subArray['id'], 'parentid' => $parentID);
     $return = array_merge($return, $returnSubSubArray);
  }

  return $return;
}

if ($_REQUEST['action'] == "relatedids") {

	if ( !$user_group[$member_id['user_group']]['admin_addnews'] ) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$id = intval( $_REQUEST['id'] );
	
	if ($config['no_date'] AND !$config['news_future']) $where_date = " AND date < '" . date ( "Y-m-d H:i:s", time () ) . "'";
	else $where_date = "";
		
	$related_ids = array();
	
	if( strlen( $_REQUEST['full_txt'] ) < strlen( $_REQUEST['short_txt'] ) ) $body = $_REQUEST['short_txt'];
	else $body = $_REQUEST['full_txt'];
					
	$body = trim(strip_tags( stripslashes( $_REQUEST['title'] . " " . $body ) ));

	if( dle_strlen( $body, $config['charset'] ) > 1000 ) {
		$body = dle_substr( $body, 0, 1000, $config['charset'] );
	}
					
	$body = $db->safesql( $body );
					
	$config['related_number'] = intval( $config['related_number'] );
	if( $config['related_number'] < 1 ) $config['related_number'] = 5;
	
	$allowed_cats = array();
	
	foreach ($user_group as $value) {
		if ($value['allow_cats'] != "all" AND !$value['allow_short'] ) $allowed_cats[] = $db->safesql($value['allow_cats']);
	}

	$join_category = "";
	
	if (count($allowed_cats)) {

		$allowed_cats = implode(",", $allowed_cats);
		$allowed_cats = explode(",", $allowed_cats);
		$allowed_cats = array_unique($allowed_cats);
		sort($allowed_cats);
	
		if ($config['allow_multi_category']) {
		
			$join_category = "p INNER JOIN (SELECT DISTINCT(" . PREFIX . "_post_extras_cats.news_id) FROM " . PREFIX . "_post_extras_cats WHERE cat_id IN ('" . implode ( ',', $allowed_cats ) . "')) c ON (p.id=c.news_id) ";
			$allowed_cats = "";
		
		} else {
		
			$allowed_cats = "category IN ('" . implode ( "','", $allowed_cats ) . "') AND ";
			
		}

	} else $allowed_cats="";

	$not_allowed_cats = array();
	
	foreach ($user_group as $value) {
		if ($value['not_allow_cats'] != "" AND !$value['allow_short'] ) $not_allowed_cats[] = $db->safesql($value['not_allow_cats']);
	}
	
	if (count($not_allowed_cats)) {

		$not_allowed_cats = implode(",", $not_allowed_cats);
		$not_allowed_cats = explode(",", $not_allowed_cats);
		$not_allowed_cats = array_unique($not_allowed_cats);
		sort($not_allowed_cats);
	
		if ($config['allow_multi_category']) {
		
			$not_allowed_cats = "p.id NOT IN ( SELECT DISTINCT(" . PREFIX . "_post_extras_cats.news_id) FROM " . PREFIX . "_post_extras_cats WHERE cat_id IN (" . implode ( ',', $not_allowed_cats ) . ") ) AND ";
			$join_category = "p ";
		
		} else {
	
			$not_allowed_cats = "category NOT IN ('" . implode ( "','", $not_allowed_cats ) . "') AND ";
	
		}

	} else $not_allowed_cats="";
					
	
	if ( $id ) {
		$id = " AND id != {$id}";
	} else $id = '';
	
	$db->query( "SELECT id, MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}') as score FROM " . PREFIX . "_post {$join_category}WHERE {$allowed_cats}{$not_allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('{$body}'){$id} AND approve=1" . $where_date . " ORDER BY score DESC LIMIT " . $config['related_number'] );

	while ( $related = $db->get_row() ) {
		$related_ids[] = $related['id'];
	}
	
	if ( count($related_ids) ) {
		$related_ids = implode(",",$related_ids);
	} else $related_ids = '';
	
	$buffer = $related_ids;

}

if ($_REQUEST['action'] == "newsspam") {

	if ( !$user_group[$member_id['user_group']]['allow_all_edit']) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$id = intval( $_REQUEST['id'] );
	
	if( $id < 1 ) die( "error" );

	$row = $db->super_query( "SELECT id, autor, approve FROM " . PREFIX . "_post WHERE id = '{$id}'" );

	if ($row['id'])	{

		$author = $db->safesql($row['autor']);

		if( $row['approve'] ) die ("error");

		$row = $db->super_query( "SELECT user_id, user_group FROM " . USERPREFIX . "_users WHERE name = '{$author}'" );

		$user_id = intval($row['user_id']);

		if ($user_group[$row['user_group']]['allow_admin']) die ($lang['mark_spam_error']);

		$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '87', '{$author}')" );

		$result = $db->query( "SELECT id FROM " . PREFIX . "_post WHERE autor='{$author}' AND approve='0'" );
			
		while ( $row = $db->get_array( $result ) ) {
			deletenewsbyid( $row['id'] );
		}

		$db->free( $result );
		$db->query( "UPDATE " . USERPREFIX . "_users SET restricted='3', restricted_days='0' WHERE user_id ='{$user_id}'" );
		clear_cache( array('news_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss', 'stats') );
		$buffer = $lang['mark_spam_ok_2'];

	} else die ("error");

}

if ($_REQUEST['action'] == "timeout") {

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	set_cookie( "timeout_session", '1', 365 );
	$_SESSION['timeout_session'] = 1;
	
	die( "ok" );

}

if ($_REQUEST['action'] == "clearpoll") {

	if ( !$user_group[$member_id['user_group']]['allow_all_edit']) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$id = intval( $_REQUEST['id'] );
	
	if( $id < 1 ) die( "error" );
	
	$db->query( "UPDATE  " . PREFIX . "_poll SET  votes='0', answer='' WHERE news_id = '{$id}'" );
	$db->query( "DELETE FROM " . PREFIX . "_poll_log WHERE news_id='{$id}'" );
	
	$buffer = $lang['clear_poll_2'];

}

if ($_REQUEST['action'] == "commentspublic") {

	if ( !$user_group[$member_id['user_group']]['admin_comments']) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$c_id = intval( $_REQUEST['id'] );

	$row = $db->super_query("SELECT id, post_id, approve FROM " . PREFIX . "_comments WHERE id = '{$c_id}'");

	if (!isset($row['id']) OR $row['approve']) {
		die("error");
	}

	$post_id = $row['post_id'];

	$db->query( "UPDATE " . PREFIX . "_comments SET approve='1' WHERE id='{$c_id}'" );
	$db->query( "UPDATE " . PREFIX . "_post SET comm_num=comm_num+1 WHERE id='{$post_id}'" );

	$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '19', '')" );

	if ($config['allow_alt_url'] and !$config['seo_type']) $cprefix = "full_"; else $cprefix = "full_" . $post_id;

	clear_cache(array('news_', 'comm_' . $post_id, $cprefix, 'stats'));

	if ( $config['allow_subscribe'] ) {

		$row = $db->super_query( "SELECT autor, text, parent FROM " . PREFIX . "_comments WHERE id = '{$c_id}'" );

		$name = $row['autor'];
		$body = $row['text'];
		$parent = $row['parent'];

		$row = $db->super_query( "SELECT id, short_story, title, date, alt_name, category FROM ".PREFIX."_post WHERE id = '{$post_id}'" );

		$row['date'] = strtotime( $row['date'] );
		$row['category'] = intval( $row['category'] );

		if( $config['allow_alt_url'] ) {
				
			if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {
			
				if( $row['category'] and $config['seo_type'] == 2 ) {
					
					$full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";
					
				} else {
					
					$full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";
					
				}
				
			} else {
				
				$full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
			}
			
		} else {
				
			$full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
			
		}
	
		$title = stripslashes($row['title']);
		
		$row = $db->super_query( "SELECT * FROM " . PREFIX . "_email WHERE name='comments' LIMIT 0,1" );
		$mail = new dle_mail( $config, $row['use_html'] );

		if (strpos($full_link, "//") === 0) $full_link = "http:".$full_link;
		elseif (strpos($full_link, "/") === 0) $full_link = "http://".$_SERVER['HTTP_HOST'].$full_link;

		$row['template'] = stripslashes( $row['template'] );
		$row['template'] = str_replace( "{%username%}", $name, $row['template'] );
		$row['template'] = str_replace( "{%date%}", langdate( "j F Y H:i", $_TIME, true ), $row['template'] );
		$row['template'] = str_replace( "{%link%}", $full_link, $row['template'] );
		$row['template'] = str_replace( "{%title%}", $title, $row['template'] );

		$body = str_replace( '
', "", $body );
		$body = str_replace( '
', "", $body );
			
		$body = stripslashes( stripslashes( $body ) );
		$body = str_replace( "<br />", "
", $body );
		$body = strip_tags( $body );
			
		if( $row['use_html'] ) {
			$body = str_replace("
", "<br />", $body );
		}
					
		$row['template'] = str_replace( "{%text%}", $body, $row['template'] );
		$row['template'] = str_replace( "{%ip%}", "--", $row['template'] );
		
		$found_news_author_subscribe = false;
		$found_reply_author_subscribe = false;
		
		$news_author_subscribe = $db->super_query( "SELECT " . USERPREFIX . "_users.user_id, " . USERPREFIX . "_users.name, " . USERPREFIX . "_users.email, " . USERPREFIX . "_users.news_subscribe FROM " . PREFIX . "_post_extras LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_post_extras.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_post_extras.news_id='{$post_id}'" );
		
		if( $parent ) {
			
			$reply_author_subscribe = $db->super_query( "SELECT " . USERPREFIX . "_users.user_id, " . USERPREFIX . "_users.name, " . USERPREFIX . "_users.email, " . USERPREFIX . "_users.comments_reply_subscribe FROM " . PREFIX . "_comments LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_comments.id='{$parent}'" );
			
		} else $reply_author_subscribe = array();	

		if (strpos($config['http_home_url'], "//") === 0) $slink = "https:".$config['http_home_url'];
		elseif (strpos($config['http_home_url'], "/") === 0) $slink = "https://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
		else $slink = $config['http_home_url'];

		if( !$parent ) {
			
			$db->query( "SELECT user_id, name, email, hash FROM " . PREFIX . "_subscribe WHERE news_id='{$post_id}'" );
	
			while($rec = $db->get_row())
			{
				if( $rec['user_id'] == $news_author_subscribe['user_id'] ) {
					$found_news_author_subscribe = true;
				}
					
				if( $parent AND $rec['user_id'] == $reply_author_subscribe['user_id'] ) {
					$found_reply_author_subscribe = true;
				}
					
				if ($rec['user_id'] != $member_id['user_id'] ) {
			
					$body = str_replace( "{%username_to%}", $rec['name'], $row['template'] );
					$body = str_replace( "{%unsubscribe%}", $slink . "index.php?do=unsubscribe&post_id=" . $post_id . "&user_id=" . $rec['user_id'] . "&hash=" . $rec['hash'], $body );
					$mail->send( $rec['email'], $lang['mail_comments'], $body );
	
				}
	
			}
			
		}
		
		if($news_author_subscribe['news_subscribe'] AND !$found_news_author_subscribe) {
			
			$body = str_replace( "{%username_to%}", $news_author_subscribe['name'], $row['template'] );
			
			if ($config['allow_alt_url']) {
				$body = str_replace( "{%unsubscribe%}", $slink . "user/" . urlencode ( $news_author_subscribe['name'] ) . "/", $body );
			} else {
				$body = str_replace( "{%unsubscribe%}", $slink . "index.php?subaction=userinfo&user=" . urlencode ( $news_author_subscribe['name'] ), $body );
			}
			
			$mail->send( $news_author_subscribe['email'], $lang['mail_comments'], $body );
			
			$last_send = $news_author_subscribe['user_id'];
			
		} else $last_send = false;
		
		if($parent AND $reply_author_subscribe['comments_reply_subscribe'] AND !$found_reply_author_subscribe AND $reply_author_subscribe['user_id'] != $last_send) {
			
			$body = str_replace( "{%username_to%}", $reply_author_subscribe['name'], $row['template'] );
			
			if ($config['allow_alt_url']) {
				$body = str_replace( "{%unsubscribe%}", $slink . "user/" . urlencode ( $reply_author_subscribe['name'] ) . "/", $body );
			} else {
				$body = str_replace( "{%unsubscribe%}", $slink . "index.php?subaction=userinfo&user=" . urlencode ( $reply_author_subscribe['name'] ), $body );
			}
			
			$mail->send( $reply_author_subscribe['email'], $lang['mail_comments'], $body );
		}

		$db->free();
	}
	
	$buffer = 'ok';	
}

if ($_REQUEST['action'] == "commentsspam") {

	if ( !$user_group[$member_id['user_group']]['del_allc']) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$id = intval( $_REQUEST['id'] );
	
	if( $id < 1 ) die( "error" );

	$row = $db->super_query( "SELECT id, user_id, autor, email, ip, is_register FROM " . PREFIX . "_comments WHERE id = '{$id}'" );

	if ($row['id'])	{

		$user_id = intval($row['user_id']);
		$author = $db->safesql($row['autor']);
		$email = $db->safesql($row['email']);
		$is_register = $row['is_register'];
		$ip = $db->safesql($row['ip']);

		if ( $is_register ) {

			$row = $db->super_query( "SELECT user_group FROM " . USERPREFIX . "_users WHERE user_id = '{$user_id}'" );

			if ($user_group[$row['user_group']]['allow_admin']) die ($lang['mark_spam_error']);

			$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '87', '{$author}')" );

			$db->query( "UPDATE " . USERPREFIX . "_users SET comm_num='0', restricted='3', restricted_days='0' WHERE user_id ='{$user_id}'" );
			
			deletecommentsbyuserid($user_id);


		} else {

			$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '88', '{$author}')" );

			deletecommentsbyuserid(0, $ip);

			$db->query( "INSERT INTO " . USERPREFIX . "_banned (descr, date, days, ip) values ('{$lang['mark_spam_ok_1']}', '0', '0', '{$ip}')" );
			@unlink( ENGINE_DIR . '/cache/system/banned.php' );

		}

		clear_cache( array('news_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss', 'stats') );

		if ( $email AND strlen($config['spam_api_key']) > 3 ) {
		
			$sfs = new StopSpam($config['spam_api_key'], $config['sec_addnews']);
			$args = array('ip_addr' => $ip, 'username' => $author, 'email' => $email );
			$sfs->add( $args );
		
		}

		$buffer = $lang['mark_spam_ok'];		

	} else die ("error");
}

if ($_REQUEST['action'] == "clearcache") {

	if ( $member_id['user_group'] != 1 ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	clear_all_caches();
	clear_static_cache_id();

	$buffer = $lang['clear_cache'];

}


if ($_REQUEST['action'] == "clearsubscribe") {

	if ( $member_id['user_group'] != 1 ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		die ("error");
	}

	$db->query("TRUNCATE TABLE " . PREFIX . "_subscribe");

	$buffer = $lang['clear_subscribe'];

}

if ($_REQUEST['action'] == "clearsubscribenews") {

	if ( $member_id['user_group'] != 1 ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		die ("error");
	}
	
	$id = intval( $_REQUEST['id'] );
	
	if( $id < 1 ) die( "error" );
	
	$db->query( "DELETE FROM " . PREFIX . "_subscribe WHERE news_id='{$id}'" );

	$buffer = $lang['clear_subscribe'];

}

if ($_REQUEST['action'] == "sendnotice") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$row = $db->super_query( "SELECT id FROM " . PREFIX . "_notice WHERE user_id = '{$member_id['user_id']}'" );
	
	$notice = $_POST['notice'];
	
	$notice = $db->safesql( $notice );
	
	if( dle_strlen( $notice, $config['charset'] ) > 65000 ) {
		die( "error" );
	}
	
	if( $row['id'] ) {
		
		$db->query( "UPDATE " . PREFIX . "_notice SET notice='{$notice}' WHERE user_id = '{$member_id['user_id']}'" );
	
	} else {
		
		$db->query( "INSERT INTO " . PREFIX . "_notice (user_id, notice) values ('{$member_id['user_id']}', '{$notice}')" );
	
	}

	$buffer = $lang['saved'];

}

if ($_REQUEST['action'] == "savelang") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		echo "{\"error\":\"error\"}";
		die ();
	
	}
	
	$_REQUEST['lang'] = totranslit( $_REQUEST['lang'], false, false );

	if ($_REQUEST['lang'] AND @is_dir ( ROOT_DIR . '/language/' . $_REQUEST['lang'] )) {
		
		set_cookie ( "selected_language", $_REQUEST['lang'], 365 );
		

	}
	
	echo "{\"ok\":\"ok\"}";
	die();
	
}

if ($_REQUEST['action'] == "savetheme") {
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$file = md5(SECURE_AUTH_KEY.$member_id['user_id']);
	
	if( !is_dir( ENGINE_DIR . "/cache/system/adminpanel" ) ) {
			
		@mkdir( ENGINE_DIR . "/cache/system/adminpanel", 0777 );
		@chmod( ENGINE_DIR . "/cache/system/adminpanel", 0777 );

	}
	
	if( !is_dir( ENGINE_DIR . "/cache/system/adminpanel") ) {

		echo "{\"error\":\"{$lang['stat_cache']}\"}";
		die();
	}
	
	if( !is_writable( ENGINE_DIR . "/cache/system/adminpanel" ) ) {

		echo "{\"error\":\"{$lang['upload_error_1']} /engine/cache/system/adminpanel/ {$lang['upload_error_2']}\"}";
		die();
		
	}

	if( file_exists( ENGINE_DIR . "/cache/system/adminpanel/" . $file ) AND !is_writable( ENGINE_DIR . "/cache/system/adminpanel/" . $file ) ) {
		
		$lang['stat_system'] = str_replace ("{file}", "/engine/cache/system/adminpanel/" . $file, $lang['stat_system']);
		
		echo "{\"error\":\"{$lang['stat_system']}\"}";
		die();
		
	}
	
	$allowed_themes = array('dle_theme_a', 'dle_theme_b','dle_theme_c','dle_theme_d','dle_theme_e','dle_theme_f','dle_theme_g','dle_theme_h','dle_theme_i', 'dle_theme_j','dle_theme_dark','sidebar-xs','layout-boxed','input-classic','auto_dark_theme','style-smoothing','htmlfontsize-50','htmlfontsize-75','htmlfontsize-90','htmlfontsize-110','htmlfontsize-120','htmlfontsize-130','htmlfontsize-140','htmlfontsize-150','htmlfontsize-175', 'htmlfontsize-200' );
	$theme = array();
	
	if( strpos ( $_REQUEST['theme'], "saved_dle_theme_" ) OR strpos ( $_REQUEST['theme'], "auto_night_mode" ) ) {
		$_REQUEST['theme'] = str_replace('saved_dle_theme_', 'dle_theme_', $_REQUEST['theme']);
		$_REQUEST['theme'] = str_replace('dle_theme_dark', '', $_REQUEST['theme']);
		$_REQUEST['theme'] = trim($_REQUEST['theme']);
	}
	
	$themes = explode(" ", $_REQUEST['theme']);
	
	foreach($themes as $temp) {
		if( trim($temp) AND in_array($temp, $allowed_themes) ) {
			$theme[] = trim($temp);
		}
	}
	
	if( count($theme) ) {
		
		$theme = implode(" ", $theme);
		
		file_put_contents (ENGINE_DIR . "/cache/system/adminpanel/" . $file, $theme, LOCK_EX);
		@chmod( ENGINE_DIR . "/cache/system/adminpanel/" . $file, 0666 );
	
	} else {
		
		@unlink( ENGINE_DIR . "/cache/system/adminpanel/" . $file );
		
	}
	
	echo "{\"ok\":\"ok\"}";
	die();
	
}

if ($_REQUEST['action'] == "deletemodules") {

	if ( $member_id['user_group'] != 1 ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}
	
	$id = intval($_REQUEST['id']);

	if ( $id ) {
		$db->query( "DELETE FROM " . PREFIX . "_admin_sections WHERE id = '{$id}'" );
	
		$buffer = 'ok';
	}

}

if ($_REQUEST['action'] == "catsort") {

	if( !$user_group[$member_id['user_group']]['admin_categories'] ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$_POST['list'] = json_decode(stripslashes($_POST['list']), true);

	if ( !is_array($_POST['list']) ) die ("error");
	
	$_POST['list'] = parseJsonArray($_POST['list']);
	
	$i= 0;

	foreach ( $_POST['list'] as $value ) {
		$i++;

		$id = intval($value['id']);
		$parentid = intval($value['parentid']);
		
		if ( $id ) {

			$db->query( "UPDATE " . PREFIX . "_category SET parentid='{$parentid}', posi='{$i}' WHERE id = '{$id}'" );

		}
	}

	clear_all_caches();
	$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '11', '')" );

	$buffer = 'ok';

}

if ($_REQUEST['action'] == "catchangestatus") {

	if( !$user_group[$member_id['user_group']]['admin_categories'] ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$id = intval($_POST['id']);

	if( !$id OR $id < 1) {
		
		die ("error");
	
	}
	
	if( $_POST['status'] == 'off' ) {
		$db->query( "UPDATE " . PREFIX . "_category SET active='0' WHERE id = '{$id}'" );
		$logs = 120;
	} else {
		$db->query( "UPDATE " . PREFIX . "_category SET active='1' WHERE id = '{$id}'" );
		$logs = 121;
	}

	clear_all_caches();
	$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '{$logs}', '{$id}')" );

	$buffer = 'ok';

}

if ($_REQUEST['action'] == "pluginsort") {

	if( $member_id['user_group'] != 1 ) die ("error");
	
	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$_POST['list'] = json_decode(stripslashes($_POST['list']), true);

	if ( !is_array($_POST['list']) ) die ("error");
	
	$_POST['list'] = parseJsonArray($_POST['list']);
	
	$i= 0;

	foreach ( $_POST['list'] as $value ) {
		$i++;

		$id = intval($value['id']);
		
		if ( $id ) {

			$db->query( "UPDATE " . PREFIX . "_plugins SET posi='{$i}' WHERE id = '{$id}'" );

		}
	}

	clear_all_caches();
	$db->query( "INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('".$db->safesql($member_id['name'])."', '{$_TIME}', '{$_IP}', '119', '')" );

	$buffer = 'ok';

}

if ($_REQUEST['action'] == "storagesort") {

	if ($member_id['user_group'] != 1) die("error");

	if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {

		die("error");
	}

	$_POST['list'] = json_decode(stripslashes($_POST['list']), true);

	if (!is_array($_POST['list'])) die("error");

	$_POST['list'] = parseJsonArray($_POST['list']);

	$i = 0;

	foreach ($_POST['list'] as $value) {
		$i++;

		$id = intval($value['id']);

		if ($id) {

			$db->query("UPDATE " . PREFIX . "_storage SET posi='{$i}' WHERE id = '{$id}'");
		}
	}

	clear_all_caches();
	$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '119', '')");

	$buffer = 'ok';
}


if ($_REQUEST['action'] == "xfsort") {

	if( !$user_group[$member_id['user_group']]['admin_xfields'] ) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$_POST['list'] = json_decode(stripslashes($_POST['list']), true);

	if ( !is_array($_POST['list']) ) die ("error");
	
	$_POST['list'] = parseJsonArray($_POST['list']);

	function xfieldssave($data) {
		global $config;
	
	    $data = array_values($data);
		$filecontents = "";
	
	    foreach ($data as $index => $value) {
	      $value = array_values($value);
	      foreach ($value as $index2 => $value2) {
	        $value2 = stripslashes($value2);
	        $value2 = str_replace("|", "&#124;", $value2);
	        $value2 = str_replace("
", "__NEWL__", $value2);
	        $filecontents .= $value2 . ($index2 < count($value) - 1 ? "|" : "");
	      }
	      $filecontents .= ($index < count($data) - 1 ? "
" : "");
	    }
	
	    $filehandle = fopen(ENGINE_DIR.'/data/xfields.txt', "w+");
		
	    if (!$filehandle) die ("error");
	
		$filecontents = htmlspecialchars($filecontents, ENT_QUOTES, $config['charset'] );
		$filecontents = str_replace("&amp;#124;", "&#124;", $filecontents);

	    fwrite($filehandle, $filecontents);
	    fclose($filehandle);

	}

	$xfields = xfieldsload();
	$temp_array = array();

	foreach ( $_POST['list'] as $value ) {

		$id = intval($value['id']);
		$temp_array[] = $xfields[$id];		

	}

	$xfields = $temp_array;

	xfieldssave($xfields);

	$buffer = 'ok';

}

if ($_REQUEST['action'] == "userxfsort") {

	if( !$user_group[$member_id['user_group']]['admin_userfields'] ) die ("error");

	if( !isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash ) {
		
		die ("error");
	
	}

	$_POST['list'] = json_decode(stripslashes($_POST['list']), true);

	if ( !is_array($_POST['list']) ) die ("error");
	
	$_POST['list'] = parseJsonArray($_POST['list']);

	function profileload() {

	  $path = ENGINE_DIR.'/data/xprofile.txt';
	  $filecontents = file($path);
	
	    if (!is_array($filecontents)) die ("error");
	  
	    foreach ($filecontents as $name => $value) {
	      $filecontents[$name] = explode("|", trim($value));
	      foreach ($filecontents[$name] as $name2 => $value2) {
	        $value2 = str_replace("&#124;", "|", $value2); 
	        $value2 = str_replace("__NEWL__", "
", $value2);
	        $filecontents[$name][$name2] = $value2;
	      }
	    }
	    return $filecontents;
	}


	function profilesave($data) {
	
	    $data = array_values($data);
		$filecontents = "";
	
	    foreach ($data as $index => $value) {
	      $value = array_values($value);
	      foreach ($value as $index2 => $value2) {
	        $value2 = stripslashes($value2);
	        $value2 = str_replace("|", "&#124;", $value2);
	        $value2 = str_replace("
", "__NEWL__", $value2);
	        $filecontents .= $value2 . ($index2 < count($value) - 1 ? "|" : "");
	      }
	      $filecontents .= ($index < count($data) - 1 ? "
" : "");
	    }
	  
	    $filehandle = fopen(ENGINE_DIR.'/data/xprofile.txt', "w+");
	    if (!$filehandle) die ("error");
	
		$find = array ('/data:/i','/about:/i','/vbscript:/i','/onclick/i','/onload/i','/onunload/i','/onabort/i','/onerror/i','/onblur/i','/onchange/i','/onfocus/i','/onreset/i','/onsubmit/i','/ondblclick/i','/onkeydown/i','/onkeypress/i','/onkeyup/i','/onmousedown/i','/onmouseup/i','/onmouseover/i','/onmouseout/i','/onselect/i','/javascript/i','/onmouseenter/i','/onwheel/i','/onshow/i','/onafterprint/i','/onbeforeprint/i','/onbeforeunload/i','/onhashchange/i','/onmessage/i','/ononline/i','/onoffline/i','/onpagehide/i','/onpageshow/i','/onpopstate/i','/onresize/i','/onstorage/i','/oncontextmenu/i','/oninvalid/i','/oninput/i','/onsearch/i','/ondrag/i','/ondragend/i','/ondragenter/i','/ondragleave/i','/ondragover/i','/ondragstart/i','/ondrop/i','/onmousemove/i','/onmousewheel/i','/onscroll/i','/oncopy/i','/oncut/i','/onpaste/i','/oncanplay/i','/oncanplaythrough/i','/oncuechange/i','/ondurationchange/i','/onemptied/i','/onended/i','/onloadeddata/i','/onloadedmetadata/i','/onloadstart/i','/onpause/i','/onprogress/i',	'/onratechange/i','/onseeked/i','/onseeking/i','/onstalled/i','/onsuspend/i','/ontimeupdate/i','/onvolumechange/i','/onwaiting/i','/ontoggle/i');
		$replace = array ("d&#1072;ta:", "&#1072;bout:", "vbscript<b></b>:", "&#111;nclick", "&#111;nload", "&#111;nunload", "&#111;nabort", "&#111;nerror", "&#111;nblur", "&#111;nchange", "&#111;nfocus", "&#111;nreset", "&#111;nsubmit", "&#111;ndblclick", "&#111;nkeydown", "&#111;nkeypress", "&#111;nkeyup", "&#111;nmousedown", "&#111;nmouseup", "&#111;nmouseover", "&#111;nmouseout", "&#111;nselect", "j&#1072;vascript", '&#111;nmouseenter', '&#111;nwheel', '&#111;nshow', '&#111;nafterprint','&#111;nbeforeprint','&#111;nbeforeunload','&#111;nhashchange','&#111;nmessage','&#111;nonline','&#111;noffline','&#111;npagehide','&#111;npageshow','&#111;npopstate','&#111;nresize','&#111;nstorage','&#111;ncontextmenu','&#111;ninvalid','&#111;ninput','&#111;nsearch','&#111;ndrag','&#111;ndragend','&#111;ndragenter','&#111;ndragleave','&#111;ndragover','&#111;ndragstart','&#111;ndrop','&#111;nmousemove','&#111;nmousewheel','&#111;nscroll','&#111;ncopy','&#111;ncut','&#111;npaste','&#111;ncanplay','&#111;ncanplaythrough','&#111;ncuechange','&#111;ndurationchange','&#111;nemptied','&#111;nended','&#111;nloadeddata','&#111;nloadedmetadata','&#111;nloadstart','&#111;npause','&#111;nprogress',	'&#111;nratechange','&#111;nseeked','&#111;nseeking','&#111;nstalled','&#111;nsuspend','&#111;ntimeupdate','&#111;nvolumechange','&#111;nwaiting','&#111;ntoggle');
		
		$filecontents = preg_replace( $find, $replace, $filecontents );
		$filecontents = preg_replace( "#<iframe#i", "&lt;iframe", $filecontents );
		$filecontents = preg_replace( "#<script#i", "&lt;script", $filecontents );
		$filecontents = str_replace( "<?", "&lt;?", $filecontents );
		$filecontents = str_replace( "?>", "?&gt;", $filecontents );
		$filecontents = str_replace( "$", "&#036;", $filecontents );
	
	    fwrite($filehandle, $filecontents);
	    fclose($filehandle);
	}

	$xfields = profileload();

	$temp_array = array();

	foreach ( $_POST['list'] as $value ) {

		$id = intval($value['id']);
		$temp_array[] = $xfields[$id];		

	}

	$xfields = $temp_array;
	profilesave($xfields);

	$buffer = 'ok';
}

echo $buffer;

?>

Did this file decode correctly?

Original Code

<?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group 
-----------------------------------------------------
 https://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004,2024 SoftNews Media Group
-----------------------------------------------------
 You use Demo Version of DataLife Engine
=====================================================
*/
?><?php $_F=__FILE__;$_X='P2wgPwpECmVQKmVMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTGVkVHFwcVdvbUpkOV12b11KZC1kW0dkMzRtcGtKZk5kU0pob3FkNVo0VQpkZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZWREcHAKTjpQUGh3Si1dSmZOL1pVUGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWVkPjQKR1pvdkRwZChnKWRJSEhLLUlISUtkMzRtcGtKZk5kU0pob3FkNVo0VQplTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExlZHJEb05kZzRoSmRvTmQKWjRwSmdwSmhkW0dkZzQKR1pvdkRwZUxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMZWQ4b3dKOmRxaDBvXW1VXWdwbzRdLwpECmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWVkYk5KOmRBaDBvXQpxXUp3ZEE2QVJkbVVdZ3BvNF1OZUxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMZSpQZWVvbSghaEptb11KaCgnVEFyQVd5ODk5azV5azknKSlkMWUJREpxaEpaKGQiTXJyRlAyLzJkS0h4ZDg0WltvaGhKXSJkKTtlCURKcWhKWmQoZCdXNGdxcG80XTpkLy9QLy9QJ2QpO2UJaG9KKGQiTXFnQm9ddmRxcHBKMApwISJkKTtldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIk5Kd21oSndKcEoiKWQxZWUJb21kKCEkb05fdzR2dkpoKWQxZQkJaG9KKCIxXCJKWlo0WlwiOlwiMSR3cV12fSdKWlpfXTRwdzR2dkpoJ091XCJ1Iik7ZQl1ZWUJb21kKCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORClkMWVlCQlob0ooIjFcIkpaWjRaXCI6XCIxJHdxXXZ9J0paWl9dNHB3NHZ2SmgnT3VcInUiKTtlCXVlZQlvbWQoZCEkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdOSndtX2hKd0pwSidPKWQxZQkJaG9KKCIxXCJKWlo0WlwiOlwiMSR3cV12fSdKWlpfTkp3bWhKd18yJ091XCJ1Iik7ZQl1ZWUJb21kKCgkMEowW0paX29ofSdVTkpaX3ZaNFUKJ09kTExkMikpZDFlCQlob0ooIjFcIkpaWjRaXCI6XCIxJHdxXXZ9J0paWl9OSndtaEp3X0knT3VcInUiKTtlCXVlZQlvbWQoISQwSjBbSlpfb2h9J1VOSlpfb2gnT2RzPGQhJDBKMFtKWl9vaH0nCnFOTmY0WmgnT2RzPGQhb05OSnAoJF9GczNyfScKcU5OZjRaaCdPKWRzPGQhJF9GczNyfScKcU5OZjRaaCdPZHM8ZCEKcU5OZjRaaF9hSlpvbUcoJF9GczNyfScKcU5OZjRaaCdPLGQkMEowW0paX29ofScKcU5OZjRaaCdPKSlkMWUJCWhvSigiMVwiSlpaNFpcIjpcIjEkd3Fddn0nCnFOTmY0Wmhfb11nNFpKZ3AnT3VcInUiKTtlCXVlZQlvbSgkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdOSndtX2hKd0pwSidPZExMZDJkKTFlCQllCQkkaFstbHRVSlpHKCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfcWgwb11fdzR2TmQoXXEwSixkaHFwSixkbwosZHFncG80XSxkSmpwWnFOKWRhcXdVSk5kKCciZC9kJGhbLWxOcW1KTnR3KCQwSjBbSlpfb2h9J11xMEonTylkL2QiJyxkJzEkX3J5Uzl1JyxkJzEkX3lGdScsZCcyeD0nLGQnJykiKTtlCQllCQlvbShkJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncXd3NGZfaEp3ZydPZHM8ZCRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J2hKd19xd3dnJ08pZDFlCWUJCQloSndKcEpnNDAwSl1wTltHVU5KWm9oKCQwSjBbSlpfb2h9J1VOSlpfb2gnTyk7ZQkJCWd3SnFaX2dxZ0RKKHFaWnFHKCddSmZOXycsZCdnNDAwXycsZCdtVXd3XycpKTtlCWUJCXVlZQkJaEp3SnBKVU5KWltHb2goJDBKMFtKWl9vaH0nVU5KWl9vaCdPKTtlCQlnd0pxWl9ncWdESihxWlpxRygnTnBxcE4nKSk7ZQkJZQkJb21kKG9OTkpwKCRfPnNzRXk5KWRxXWhkb05fcVpacUcoJF8+c3NFeTkpZHFdaGRnNFVdcCgkXz5zc0V5OSkpZDFlZQkJCW00WkpxZ0RkKCRfPnNzRXk5ZHFOZCRCSkdkTGxkJGFxd1VKKWQxZQkJCQlOSnBfZzQ0Qm9KKCRCSkcsZCcnLGRIKTtlCQkJdWUJCXVlZQkJTkpOTm80XV9VXU5KcCgpO2UJCU5KTk5vNF1faEpOcFo0RygpO2VlCQlob0ooIjFcIk5wcXBVTlwiOlwiaEp3SnBKaFwidSIpO2UJZQl1ZEp3TkpkMWVlCQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRygiMzlXOT5yZFVOSlpfb2hkODxzU2QiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk5faEp3SnBKZFFNOTw5ZFVOSlpfb2hMJzEkMEowW0paX29ofSdVTkpaX29oJ091JyIpO2VlCQlvbShvTk5KcCgkWjRmfSdVTkpaX29oJ08pZEFrVGQkWjRmfSdVTkpaX29oJ08pZDFlCQkJaG9KKCIxXCJKWlo0WlwiOlwiMSR3cV12fSdKWlpfTkp3bWhKd194J091XCJ1Iik7ZQkJdWVlCQkkaFstbHRVSlpHKCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk5faEp3SnBKZChVTkpaX29oKWRhcXdVSk5kKCcxJDBKMFtKWl9vaH0nVU5KWl9vaCdPdScpIik7ZWUJCWhvSigiMVwiTnBxcFVOXCI6XCJmcW9wXCJ1Iik7ZQl1ZWV1ZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQibW9daGc0MDBKXXBOCnF2SiIpZDFlZQlvbWQoIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EKWQxZWUJCWhvSigiSlpaNFoiKTtlCXVlZQltVV1ncG80XWRbVW93aF9nNDAwSl1wTl9wWkpKKCRocXBxKWQxZWUJCSRwWkpKZExkcVpacUcoKTtlCQltNFpKcWdEZCgkaHFwcWRxTmQkb2hkTGxkJiRdNGhKKWQxZQkJCW9tZCgkXTRoSn0nCnFaSl1wJ09kTExMZG1xd05KKWQxZQkJCQkkcFpKSn0kb2hPZExkJiRdNGhKO2UJCQl1ZEp3TkpkMWUJCQkJb21kKCFvTk5KcCgkaHFwcX0kXTRoSn0nCnFaSl1wJ09PfSdnRG93aFpKXSdPKSlkJGhxcHF9JF00aEp9JwpxWkpdcCdPT30nZ0Rvd2haSl0nT2RMZHFaWnFHKCk7ZQkJCQkkaHFwcX0kXTRoSn0nCnFaSl1wJ09PfSdnRG93aFpKXSdPfSRvaE9kTGQmJF00aEo7ZQkJCXVlCQl1ZWUJCVpKcFVaXWQkcFpKSjtlCXVlZQltVV1ncG80XWROSnFaZ0R6RzhvSndobnF3VUooJHFaWnFHLGQkbW9Kd2gsZCRhcXdVSilkMWVlCQltNFpKcWdEZCgkcVpacUdkcU5kJG9wSjApZDFlCQkJZQkJCW9tZChvTk5KcCgkb3BKMH0kbW9Kd2hPKWRBa1RkJG9wSjB9JG1vSndoT2RMTGQkYXF3VUopZDFlCQkJZQkJCQlaSnBVWl1kcFpVSjtlCQkJZQkJCXVlZQkJCW9tZChvTk5KcCgkb3BKMH0nZ0Rvd2haSl0nTylkQWtUZG9OX3FaWnFHKCRvcEowfSdnRG93aFpKXSdPKSlkMWUJCQkJb21kKE5KcVpnRHpHOG9Kd2hucXdVSigkb3BKMH0nZ0Rvd2haSl0nTyxkJG1vSndoLGQkYXF3VUopKWQxZQkJCQkJWkpwVVpdZHBaVUo7ZQkJCQl1ZQkJCXVlZQkJdWVlCQlaSnBVWl1kbXF3Tko7ZQl1ZWUJJAo0TnBfb2hkTGRvXXBhcXcoJF88OWliOTNyfScKNE5wX29oJ08pO2UJJGc0MDBKXXBfb2hkTGRvXXBhcXcoJF88OWliOTNyfSdnNDAwSl1wX29oJ08pO2VlCW9tKCQKNE5wX29oZEFrVGQkZzQwMEpdcF9vaClkMWVlCQkkWjRmTmRMZHFaWnFHKCk7ZQkJZQkJb21kKCRnNF1tb3Z9J3F3dzRmX2cwNGgnTylkJGZESlpKX3EKClo0YUpkTGQiZEFrVGQiZC9kRjw5OHlSZC9kIl9nNDAwSl1wTi9xCgpaNGFKTDIiO2UJCUp3TkpkJGZESlpKX3EKClo0YUpkTGQiIjtlZQkJJE50d19aSk5Vd3BkTGQkaFstbHRVSlpHKCIzOVc5PnJkImQvZEY8OTh5UmQvZCJfZzQwMEpdcE4vb2gsZCJkL2RGPDk4eVJkL2QiX2c0MDBKXXBOLwpxWkpdcGQ4PHNTZCJkL2RGPDk4eVJkL2QiX2c0MDBKXXBOZFFNOTw5ZCJkL2RGPDk4eVJkL2QiX2c0MDBKXXBOLwo0TnBfb2hkTGQnMSQKNE5wX29odScxJGZESlpKX3EKClo0YUp1ZGRzPFQ5PGR6WGQiZC9kRjw5OHlSZC9kIl9nNDAwSl1wTi9vaGRBMz4iKTtlZQkJZkRvd0pkKCRaNGZkTGQkaFstbHZKcF9aNGYoJE50d19aSk5Vd3ApKWQxZQkJCSRaNGZOfSRaNGZ9J29oJ09PZExkcVpacUcoKTtlZQkJCW00WkpxZ0RkKCRaNGZkcU5kJEJKR2RMbGQkYXF3VUopZDFlCQkJCW9tZCgkQkpHZExMZCIKcVpKXXAiZEFrVGQoJGFxd1VKZExMZEhkczxkISRnNF1tb3Z9J3BaSkpfZzQwMEpdcE4nTykpZCRhcXdVSmRMZG1xd05KO2UJCQkJJFo0Zk59JFo0Zn0nb2gnT099JEJKR09kTGQkYXF3VUo7ZQkJCXVlCQl1ZWUJCSRoWy1sbVpKSigkTnR3X1pKTlV3cCk7ZQkJVV1OSnAoJFo0Zik7ZWUJCW9tKGRnNFVdcCgkWjRmTmQpZClkMWUJCQkkWjRmTmRMZFtVb3doX2c0MDBKXXBOX3BaSkooJFo0Zk4pO2VlCQkJb21kKCRnNF1tb3Z9J2c0MDBfME40WnAnT2RMTGQiVDkzPiIpZCRaNGZOZExkcVpacUdfWkphSlpOSigkWjRmTixkcFpVSik7ZWUJCQkkWjRmTmRMZHFaWnFHX2dEVV1CKCRaNGZOLGRvXXBhcXcoJGc0XW1vdn0nZzQwMF9dVTAwSlpOJ08pZCk7ZWUJCQkkCnF2SmRMZDI7ZQkJCSQKcXZKX200VV1oZExkbXF3Tko7ZWUJCQltNFpKcWdEZCgkWjRmTmRxTmQkcVpaZClkMWVlCQkJCW9tKGROSnFaZ0R6RzhvSndobnF3VUooJHFaWixkJ29oJyxkJGc0MDBKXXBfb2gpZCkxZQkJCQkJJApxdkpfbTRVXWhkTGRwWlVKO2UJCQkJCVtaSnFCO2UJCQkJdWVlCQkJCSQKcXZKZCsrO2UJCQl1ZWUJCQlvbSgkCnF2SmQmJmQkCnF2Sl9tNFVdaClkMWVlCQkJCSRaSnBVWl1kTGRxWlpxRyhlCQkJCQknTnBxcFVOJ2RMbGQnNEInLGUJCQkJCScKcXZKJ2RMbGQkCnF2SmUJCQkJKTtlZQkJCQkkWkpwVVpdZExke040XV9KXWc0aEooJFpKcFVaXSxkNjNza19iazkzPkFGOVRfYmt5PnNUOWR8ZDYzc2tfYms5Mz5BRjlUXzNXQTNNOTMpO2VlCQkJCWhvSigkWkpwVVpdKTtlZQkJCXVkZWUJCXVlZQl1ZWUJJFpKcFVaXWRMZHFaWnFHKGUJCSdOcHFwVU4nZExsZCdKWlo0WidlCSk7ZWUJJFpKcFVaXWRMZHtONF1fSl1nNGhKKCRaSnBVWl0sZDYzc2tfYms5Mz5BRjlUX2JreT5zVDlkfGQ2M3NrX2JrOTM+QUY5VF8zV0EzTTkzKTtlZQlob0ooJFpKcFVaXSk7ZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJdSmZOWkpxaCIpZDFlCWUJb20oZCEkZzRdbW92fSdxd3c0Zl9aSnFoX2c0VV1wJ09kKWQxZQkJaG9KZCgiSlpaNFoiKTtlCXVlCWUJJG9oZExkb11wYXF3KCRfPDlpYjkzcn0nb2gnTyk7ZQllCSRaNGZkTGQkaFstbE5VCkpaX3RVSlpHKGQiMzlXOT5yZF1KZk5fb2hkODxzU2QiZC9kRjw5OHlSZC9kIl8KNE5wX0pqcFpxTmRRTTk8OWRdSmZOX29oZExkJzEkb2h1JyJkKTtlCWUJb20ob05OSnAoJFo0Zn0nXUpmTl9vaCdPKWRBa1RkJFo0Zn0nXUpmTl9vaCdPKWQxZQkJZQkJb21kKGQkZzRdbW92fSdxd3c0Zl9aSnFoX2c0VV1wJ09kTExkSWQpZDFlCWUJCQkkWkpxaGc0VV1wZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRnNFVdcCgqKWRxTmRnNFVdcGQ4PHNTZCJkL2RGPDk4eVJkL2QiX1pKcWhfdzR2ZFFNOTw5ZF1KZk5fb2hMJzEkWjRmfSddSmZOX29oJ091J2RBa1RkbwpMJzEkX3lGdSciZCk7ZQllCQkJb20oZCEkWkpxaGc0VV1wfSdnNFVdcCdPZClkMWUJZQkJCQlvbShkJGc0XW1vdn0nZ3FnREpfZzRVXXAnT2QpZCRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kRjw5OHlSZC9kIl9hb0pmTmQoXUpmTl9vaClkbkFXYjkzZCgnMSRaNGZ9J11KZk5fb2gnT3UnKSJkKTtlCQkJCUp3TkpkJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kRjw5OHlSZC9kIl8KNE5wX0pqcFpxTmQzOXJkXUpmTl9aSnFoTF1KZk5fWkpxaCsyZFFNOTw5ZF1KZk5fb2hMJzEkWjRmfSddSmZOX29oJ091JyJkKTtlCWUJCQkJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RGPDk4eVJkL2QiX1pKcWhfdzR2ZChdSmZOX29oLGRvCilkbkFXYjkzZCgnMSRaNGZ9J11KZk5fb2gnT3UnLGQnMSRfeUZ1JykiZCk7ZQkJCXVlCWUJCXVkSndOSmQxZQllCQkJb20oZCRnNF1tb3Z9J2dxZ0RKX2c0VV1wJ09kKWQkaFstbHRVSlpHKGQieWszOTxyZHlrcnNkImQvZEY8OTh5UmQvZCJfYW9KZk5kKF1KZk5fb2gpZG5BV2I5M2QoJzEkWjRmfSddSmZOX29oJ091JykiZCk7ZQkJCUp3TkpkJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kRjw5OHlSZC9kIl8KNE5wX0pqcFpxTmQzOXJkXUpmTl9aSnFoTF1KZk5fWkpxaCsyZFFNOTw5ZF1KZk5fb2hMJzEkWjRmfSddSmZOX29oJ091JyJkKTtlCQl1ZWUJdWUJZQlob0ooJzRCJyk7ZQlldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIltxXV1KWk5hb0pmTiIpZDFlZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlCWUJJG9oTmRMZCRVXW90X29oTl9vCmRMZCQwcWpfYW9KZk5kTGRxWlpxRygpO2UJZQltNFpKcWdEZCgkXzw5aWI5M3J9J29oTidPZHFOZCRvaClkMWVlCQkkb2hkTGRvXXBhcXcoJG9oKTtlZQkJb20oJG9oZCBkMmQpZGhvSmQoIkpaWjRaIik7ZWUJCSRvaE59JG9oT2RMZCRvaDtlCQllCXVlCWUJb20oZCFnNFVdcCgkb2hOKWQpZGhvSmQoIkpaWjRaIik7ZWUJJGhbLWx0VUpaRyhkIjM5Vzk+cmRvaCxkcXd3NGZfYW9KZk4sZDBxal9hb0pmTixkYW9KZk5kODxzU2QiZC9kRjw5OHlSZC9kIl9bcV1dSlpOZFFNOTw5ZG9oTCciL28wCnc0aEooIidkczxkb2hMJyIsZCRvaE4pLyInImQpO2UJZQlmRG93SmQoZCRaNGZkTGQkaFstbHZKcF9aNGYoKWQpZDFlCQlvbSgkWjRmfSdxd3c0Zl9hb0pmTidPZExMZElkKWQkVV1vdF9vaE5fbwp9JFo0Zn0nb2gnT09kTGQkWjRmfSdvaCdPO2UJCW9tKGQkWjRmfScwcWpfYW9KZk4nT2QpZCQwcWpfYW9KZk59JFo0Zn0nb2gnT09kTGRxWlpxRygnMHFqX2FvSmZOJ2RMbGQkWjRmfScwcWpfYW9KZk4nTyxkJ2FvSmZOJ2RMbGQkWjRmfSdhb0pmTidPKTtlCXVlCWUJb20oZGc0VV1wKCRVXW90X29oTl9vCilkKWQxZQkJJGhbLWx0VUpaRyhkIjM5Vzk+cmRbb2hkODxzU2QiZC9kRjw5OHlSZC9kIl9bcV1dSlpOX3c0dk5kUU05PDlkKFtvaEwnIi9vMAp3NGhKKCInZHM8ZFtvaEwnIixkJFVdb3Rfb2hOX28KKS8iJylkQWtUZG8KTCcxJF95RnUnImQpO2UJCWZEb3dKZChkJFo0ZmRMZCRoWy1sdkpwX1o0ZigpZClkMWUJCQlVXU5KcCgkb2hOfSRaNGZ9J1tvaCdPTyk7ZQkJCVVdTkpwKCRVXW90X29oTl9vCn0kWjRmfSdbb2gnT08pO2UJCXVlCXVlCWUJb20oZGc0VV1wKCRvaE4pZClkMWUJCSRoWy1sdFVKWkcoZCJiRlRBcjlkImQvZEY8OTh5UmQvZCJfW3FdXUpaTmQzOXJkYW9KZk5MYW9KZk4rMmRRTTk8OWRvaEwnIi9vMAp3NGhKKCInZHM8ZG9oTCciLGQkb2hOKS8iJyJkKTtlCQltNFpKcWdEZCgkb2hOZHFOZCRvaClkMWUJCQlvbSgkMHFqX2FvSmZOfSRvaE99JzBxal9hb0pmTidPZEFrVGQoJDBxal9hb0pmTn0kb2hPfSdhb0pmTidPKzIpZGxMZCQwcWpfYW9KZk59JG9oT30nMHFqX2FvSmZOJ09kKWQxZQkJCQlAVV13b11CKGQ5azV5azlfVHk8ZC9kJ1BncWdESlBOR05wSjBQW3FdXUpaTi8KRAonZCk7ZQkJCXVlCQl1ZQl1ZQllCW9tKGRnNFVdcCgkVV1vdF9vaE5fbwopZClkMWUJCW00WkpxZ0RkKCRVXW90X29oTl9vCmRxTmQkb2gpZDFlCQkJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RGPDk4eVJkL2QiX1txXV1KWk5fdzR2TmQoW29oLGRvCilkbkFXYjkzZCgnMSRvaHUnLGQnMSRfeUZ1JykiZCk7ZQkJdWUJdWUJZQlob0ooZCI0QiJkKTtldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIltxXV1KWk5nd29nQiIpZDFlCWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQlob0pkKCJKWlo0WiIpO2UJdWUJZQkkb2hkTGRvXXBhcXcoJF88OWliOTNyfSdvaCdPKTtlCWUJb20oJG9oZCBkMmQpZGhvSmQoIkpaWjRaIik7ZQllCSRaNGZkTGQkaFstbE5VCkpaX3RVSlpHKGQiMzlXOT5yZHF3dzRmX2c0VV1wTixkMHFqX2c0VV1wTixkZ3dvZ0JOZDg8c1NkImQvZEY8OTh5UmQvZCJfW3FdXUpaTmRRTTk8OWRvaEwnMSRvaHUnImQpO2UJJDBxal9nNFVdcE5kTGQkWjRmfScwcWpfZzRVXXBOJ087ZQkkZ3dvZ0JOZExkJFo0Zn0nZ3dvZ0JOJ087ZQllCW9tKGQhJFo0Zn0ncXd3NGZfZzRVXXBOJ09kKWRob0pkKCJKWlo0WiIpO2UJZQlvbShkJFo0Zn0ncXd3NGZfZzRVXXBOJ09kTExkSWQpZDFlCQllCQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRvaCxkZ3dvZ0JkODxzU2QiZC9kRjw5OHlSZC9kIl9bcV1dSlpOX3c0dk5kUU05PDlkW29oTCcxJG9odSdkQWtUZG8KTCcxJF95RnUnImQpO2UJCWUJCW9tKCEkWjRmfSdnd29nQidPKWQxZQkJCSRoWy1sdFVKWkcoZCJiRlRBcjlkImQvZEY8OTh5UmQvZCJfW3FdXUpaTmQzOXJkZ3dvZ0JOTGd3b2dCTisyZFFNOTw5ZG9oTCcxJG9odSciZCk7ZQkJCWUJCQlvbSgkMHFqX2c0VV1wTmRBa1RkKCRnd29nQk4rMilkbExkJDBxal9nNFVdcE5kKWQxZQkJCQlAVV13b11CKGQ5azV5azlfVHk8ZC9kJ1BncWdESlBOR05wSjBQW3FdXUpaTi8KRAonZCk7ZQkJCXVlCQl1ZQkJZQkJb20oJFo0Zn0nb2gnTylkJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kRjw5OHlSZC9kIl9bcV1dSlpOX3c0dk5kMzlyZGd3b2dCTCcyJ2RRTTk8OWRvaEwnMSRaNGZ9J29oJ091JyJkKTtlCQlKd05KZCRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kRjw5OHlSZC9kIl9bcV1dSlpOX3c0dk5kKFtvaCxkZ3dvZ0IsZG8KKWRuQVdiOTNkKCcxJG9odScsZCcyJyxkJzEkX3lGdScpImQpO2UJCWUJdWRKd05KZDFlCQllCQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiX1txXV1KWk5kMzlyZGd3b2dCTkxnd29nQk4rMmRRTTk8OWRvaEwnMSRvaHUnImQpO2UJCWUJCW9tKCQwcWpfZzRVXXBOZEFrVGQoJGd3b2dCTisyKWRsTGQkMHFqX2c0VV1wTmQpZDFlCQkJQFVdd29dQihkOWs1eWs5X1R5PGQvZCdQZ3FnREpQTkdOcEowUFtxXV1KWk4vCkQKJ2QpO2UJCXVlZQl1ZQllCWhvSihkIjRCImQpOwlldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkImhKd19ONGdvcXciKWQxZQllCSRvaGRMZG9dcGFxdygkXzw5aWI5M3J9J29oJ08pO2VlCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkczxkISQwSjBbSlpfb2h9J1VOSlpfb2gnT2RzPGQhJG9oKWQxZQkJaG9KZCgiSlpaNFoiKTtlCXVlCWUJJGhbLWx0VUpaRyhkIlQ5VzlyOWQ4PHNTZCJkL2RiMzk8Rjw5OHlSZC9kIl9ONGdvcXdfdzR2b11kUU05PDlkVW9oTCcxJDBKMFtKWl9vaH0nVU5KWl9vaCdPdSdkQWtUZG9oTCcxJG9odSciZCk7ZQllCUpnRDRkJHdxXXZ9J2hKd19tWjQwX040Z29xd19JJ087ZQlob0ooKTtldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkInFoaF9vdl00WkoiKWQxZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkczxkISQwSjBbSlpfb2h9J1VOSlpfb2gnTylkMWUJCWhvSigiMVwiSlpaNFpcIjpcIjEkd3Fddn0nSlpaX100cHc0dnZKaCdPdVwidSIpO2UJdWUJZQkkb2hkTGRvXXBhcXcoJF81OXJ9J29oJ08pO2UJZQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRdcTBKLGRVTkpaX29oLGRVTkpaX3ZaNFUKZDg8c1NkImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOZFFNOTw5ZFVOSlpfb2hMJzEkb2h1JyJkKTtlCWUJb20oZCFvTk5KcCgkWjRmfSdVTkpaX29oJ08pZClkMWUJCWhvSigiMVwiSlpaNFpcIjpcInMKSlpxcG80XWRdNHBkQXd3NGZKaFwidSIpO2UJdWUJZQlvbWQoJFo0Zn0nVU5KWl9vaCdPZExMZCQwSjBbSlpfb2h9J1VOSlpfb2gnTylkMWUJCWhvSigiMVwiSlpaNFpcIjpcIjEkd3Fddn0nb3ZdNFpKX0paWjRaJ091XCJ1Iik7ZQl1ZQllCW9tZCgkVU5KWl92WjRVCn0kWjRmfSdVTkpaX3ZaNFUKJ09PfSdxaDBvXV9KaG9wVU5KWk4nTylkMWUJCWhvSigiMVwiSlpaNFpcIjpcIjEkd3Fddn0nb3ZdNFpKX0paWjRaX0knT3VcInUiKTtlCXVlCWUJJGhbLWx0VUpaRyhkIjM5Vzk+cmRvaGQ4PHNTZCJkL2RiMzk8Rjw5OHlSZC9kIl9vdl00Wkpfd29OcGRRTTk8OWRVTkpaX21aNDBMJzEkWjRmfSddcTBKJ091J2RBa1RkVU5KWkwnMSQwSjBbSlpfb2h9J1VOSlpfb2gnT3UnImQpO2VlCW9tZCgkaFstbF1VMF9aNGZOKCkpZDFlCQlob0ooIjFcIkpaWjRaXCI6XCIxJHdxXXZ9J292XTRaSl9KWlo0Wl8yJ091XCJ1Iik7ZQkJZQl1ZQllCSRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfb3ZdNFpKX3dvTnBkKFVOSlosZFVOSlpfbVo0MClkYXF3VUpOZCgnMSQwSjBbSlpfb2h9J1VOSlpfb2gnT3UnLGQnMSRaNGZ9J11xMEonT3UnKSJkKTtlCWUJaG9KKCIxXCJOVWdnSk5OXCI6XCIxJHdxXXZ9J292XTRaSl80QidPdVwidSIpO2UJZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJoSndfb3ZdNFpKIilkMWUJZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZHM8ZCEkMEowW0paX29ofSdVTkpaX29oJ08pZDFlCQlob0pkKGQkd3Fddn0nSlpaX100cHc0dnZKaCdPZCk7ZQl1ZQllCSRvaGRMZG9dcGFxdygkXzU5cn0nb2gnTyk7ZWUJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkKmQ4PHNTZCJkL2RiMzk8Rjw5OHlSZC9kIl9vdl00Wkpfd29OcGRRTTk8OWRvaEwnMSRvaHUnImQpO2VlCW9tZChvTk5KcCgkWjRmfSdvaCdPKWRBa1RkKCRaNGZ9J1VOSlonT2RMTGQkMEowW0paX29ofSdVTkpaX29oJ09kczxkJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncWgwb11fSmhvcFVOSlpOJ09kKWQpZDFlCQllCQkkaFstbHRVSlpHKGQiVDlXOXI5ZDg8c1NkImQvZGIzOTxGPDk4eVJkL2QiX292XTRaSl93b05wZFFNOTw5ZG9oZExkJzEkWjRmfSdvaCdPdSciZCk7ZQkJZQkJaG9KKCR3cV12fSdvdl00WkpfaEp3XzRCJ08pO2UJZQl1ZWUJaG9KKCJzCkpacXBvNF1kXTRwZEF3dzRmSmgiKTtlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJOcWFKSmhvcF1KZk4iKWQxZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkczxkISQwSjBbSlpfb2h9J1VOSlpfb2gnTylkMWUJCWhvSmQoZCIxXCJKWlo0WlwiOlwiMSR3cV12fSdKWlpfXTRwdzR2dkpoJ091XCJ1ImQpO2UJdWUJZQkkb2hkTGRvXXBhcXcoJF88OWliOTNyfSdvaCdPKTtlZQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRvaCxkcVVwNFosZGhxcEpkZDg8c1NkImQvZEY8OTh5UmQvZCJfCjROcGRRTTk8OWRvaGRMZCcxJG9odSciZCk7ZQllCW9tKGRvTk5KcCgkWjRmfSdvaCdPKWRBa1RkJFo0Zn0nb2gnTylkMWUJCWUJCSREcWFKXwpKWjBkTGRIO2UJZQkJb20oZCRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J3F3dzRmX0pob3AnT2RBa1RkJFo0Zn0ncVVwNFonT2RMTGQkMEowW0paX29ofSddcTBKJ09kKWQxZQkJCSREcWFKXwpKWjBkTGQyO2UJCXVlCWUJCW9tKGQkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdxd3c0Zl9xd3dfSmhvcCdPZClkMWUJCQkkRHFhSl8KSlowZExkMjtlCQkJZQkJCW9tKCQwSjBbSlpfb2h9J2dxcF9xaGgnTylkJHF3dzRmX3dvTnBkTGRKagp3NGhKKGQnLCcsZCQwSjBbSlpfb2h9J2dxcF9xaGgnT2QpO2UJCQlKd05KZCRxd3c0Zl93b05wZExkSmoKdzRoSihkJywnLGQkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdncXBfcWhoJ09kKTtlCWUJCQltNFpKcWdEZChkJGdxcF93b05wZHFOZCROSndKZ3BKaGQpZDFlCQkJCW9tKGQkcXd3NGZfd29OcH1IT2QhTGQicXd3ImRxXWhkIW9dX3FaWnFHKGQkTkp3SmdwSmgsZCRxd3c0Zl93b05wZClkKWQkRHFhSl8KSlowZExkSDtlCQkJdWUJCXVlCWUJCW9tKGQkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfScwcWpfSmhvcF9ocUdOJ09kKWQxZQkJCSRdSmZOcG8wSmRMZE5wWnA0cG8wSihkJFo0Zn0naHFwSidPZCk7ZQkJCSQwcWpKaG9wcG8wSmRMZCRfcnlTOWQtZCgkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfScwcWpfSmhvcF9ocUdOJ09kKmR4LkhIZCpkSUspO2UJCQlvbShkJDBxakpob3BwbzBKZGxkJF1KZk5wbzBKZClkJERxYUpfCkpaMGRMZEg7ZQkJdWUJCWUJCW9tKGQoJDBKMFtKWl9vaH0nVU5KWl92WjRVCidPZExMZDIpZClkMWUJCQkkRHFhSl8KSlowZExkMjtlCQl1ZQllCQlvbShkISREcWFKXwpKWjBkKWQxZQkJCWhvSmQoZCIxXCJKWlo0WlwiOlwicwpKWnFwbzRdZF00cGRBd3c0ZkpoXCJ1ImQpO2UJCXVlCQllCQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiXwo0TnBfSmpwWnFOZDM5cmRKaG9wSmhfXTRmTCciLyRoWy1sTnFtSk50dyh7TjRdX0pdZzRoSihxWlpxRygnXXEwSidkTGxkJDBKMFtKWl9vaH0nXXEwSidPLGQncG8wSidkTGxkcG8wSigpZCksZDYzc2tfYms5Mz5BRjlUX2JreT5zVDlkfGQ2M3NrX2JrOTM+QUY5VF8zV0EzTTkzZCkpLyInZFFNOTw5ZF1KZk5fb2hMJzEkWjRmfSdvaCdPdSciZCk7ZQkJZQkJaG9KZChkIjFcIk5VZ2dKTk5cIjpcIjJcInUiZCk7ZQkJZQl1ZQllCWhvSmQoZCIxXCJKWlo0WlwiOlwicwpKWnFwbzRdZF00cGRBd3c0ZkpoXCJ1ImQpO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkImFvSmZORHFaSmgiKWQxZQllCW9tKGQhJG9OX3c0dnZKaGQpZDFlCQlob0pkKGQiMVwiSlpaNFpcIjpcIjEkd3Fddn0nSlpaX100cHc0dnZKaCdPdVwidSJkKTtlCXVlCWUJb20oZCEkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdxd3c0Zl9vMHF2Sl9VCnc0cWgnT2RBa1RkISRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J3F3dzRmX21vd0pfVQp3NHFoJ09kKWQxZQllCQlob0pkKGQiMVwiSlpaNFpcIjpcIjEkd3Fddn0nSlpaX100VQp3NHFoJ091XCJ1ImQpO2UJZQl1ZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkczxkISQwSjBbSlpfb2h9J1VOSlpfb2gnTylkMWUJCWhvSmQoZCIxXCJKWlo0WlwiOlwiMSR3cV12fSdKWlpfXTRwdzR2dkpoJ091XCJ1ImQpO2UJdWUJZQkkcXd3NGZKaF9KanBKXU5vNF1OZExkcVpacUdkKCJ2b20iLGQiewp2IixkIgpddiIsZCJ7Ckp2IixkImZKWwoiZCxkIlswCiIsZCJxYW9tIik7ZQkkVU5KWmhvWmRMZCcnO2UJZQlvbShkb05OSnAoJF88OWliOTNyfSdVTkpaaG9aJ08pZEFrVGQkXzw5aWI5M3J9J1VOSlpob1onT2QpZDFlCQllCQkkVU5KWmhvWmRMZGd3SnFdCnFwRChkJF88OWliOTNyfSdVTkpaaG9aJ09kKTtlCQllCXVlCWUJJGhab2FKWmRMZF1Vd3c7ZWUJb21kKGRvXXBhcXcoJGc0XW1vdn0nTkRxWkpoX1pKMDRwSidPKWRsZC0yZClkJGhab2FKWmRMZG9dcGFxdygkZzRdbW92fSdORHFaSmhfWkowNHBKJ08pO2VlCVRXOThvd0pOOjpvXW9wKGQkaFpvYUpaZCk7ZWUJJG1vd0pOZExkVFc5OG93Sk46OldvTnBUb1pKZ3A0WkcoZCdORHFaSmhQJy8kVU5KWmhvWixkJHF3dzRmSmhfSmpwSl1ObzRdTmQpO2UJZQlvbShkVFc5OG93Sk46OiRKWlo0WmQpZDFlCQllCQkkWkpwVVpdX3FaWnFHZExkcVpacUdkKGUJCQknTlVnZ0pOTidkTGxkbXF3TkosZQkJCSdKWlo0WidkTGxkVFc5OG93Sk46OiRKWlo0WmUJCSk7ZQkJZQkJJEpaWjRaZExke040XV9KXWc0aEooJFpKcFVaXV9xWlpxRyxkNjNza19iazkzPkFGOVRfYmt5PnNUOWR8ZDYzc2tfYms5Mz5BRjlUXzNXQTNNOTNkKTtlCQllCQlob0ooJEpaWjRaKTtlCXVlZQkkbTR3aEpaX3dvTnBkTGRxWlpxRygpO2UJZQkkbTR3aEpaX3dvTnB9T2RMZCcgaG9hZGd3cU5OTCJtb3dKLQpaSmFvSmYtWzRqImwnO2UJZQlvbShkJFVOSlpob1pkKWQxZQkJZQkJJApaSmFfd29dQmRMZEpqCnc0aEooIlAiLGQkVU5KWmhvWik7ZQkJcVpacUdfCjQKKCQKWkphX3dvXUIpO2UJCSQKWkphX3dvXUJkTGRvMAp3NGhKKCJQIixkJApaSmFfd29dQik7ZQkJZQkJJG00d2hKWl93b05wfU9kTGQgICBNclNXZSBob2FkZ3dxTk5MIm00d2hKWi0KWkphb0pmLWdxWmgibGUJIGhvYWRnd3FOTkwibW93Si1nNF1wSl1wImQ0XWd3b2dCTCJ2SnBfTkRxWkpoX3dvTnAoJzEkClpKYV93b11CdScpO2RaSnBVWl1kbXF3Tko7ImxlCQkgb2Rnd3FOTkwiMEpob3FVCnc0cWgtb2c0XWQwSmhvcVUKdzRxaC1vZzRdLQpaSmEibCBQb2xlCSBQaG9hbGUJIGhvYWRnd3FOTkwibW93Si1tNDRwSloibGUJCSBob2FkZ3dxTk5MIm1vd0otbTQ0cEpaLWdxCnBvNF0ibGUJCQkgaG9hZGd3cU5OTCJtb3dKLWdxCnBvNF0tb11tNCJsMSR3cV12fSdtb3dKTl8KWkphJ091IFBob2FsZQkJIFBob2FsZQkgUGhvYWxlIFBob2FsZU1yU1c7ZWUJdWUJZQltNFpKcWdEZChkJG1vd0pOfSdob1pOJ09kcU5kJEpdcFpHXXEwSilkMWUJCWUJCSRtNHdoSlpkTGQkSl1wWkddcTBKfSddcTBKJ087ZQkJZQkJb20oJG00d2hKWmRMTGQnMEpob1UwJ2RzPGQkbTR3aEpaZExMZCdwRFUwW04nKWRnNF1wb11VSjtlCQllCQlvbShkJFVOSlpob1pkKWQkd29dQmRMZCRVTkpaaG9aLyJQIi8kbTR3aEpaO2RKd05KZCR3b11CZExkJG00d2hKWjtlCQllCQlvbSgkd29dQmRMTGQibW93Sk4iKWRnNF1wb11VSjtlCQllCQkkbTR3aEpaX3dvTnB9T2RMZCAgIE1yU1dlIGhvYWRnd3FOTkwibTR3aEpaLQpaSmFvSmYtZ3FaaCJsZQkgaG9hZGd3cU5OTCJtb3dKLWc0XXBKXXAiZDRdZ3dvZ0JMInZKcF9ORHFaSmhfd29OcCgnMSR3b11CdScpO2RaSnBVWl1kbXF3Tko7ImxlCQkgbzB2ZE5aZ0wiMSRnNF1tb3Z9J0RwcApfRDQwSl9VWncnT3VKXXZvXUpQTkJvXU5QbzBxdkpOUG00d2hKWi8KXXYiZGd3cU5OTCJtb3dKLQpaSmFvSmYtbzBxdkoibGUJIFBob2FsZQkgaG9hZGd3cU5OTCJtb3dKLW00NHBKWiJsZQkJIGhvYWRnd3FOTkwibW93Si1tNDRwSlotZ3EKcG80XSJsZQkJCSBob2FkZ3dxTk5MIm1vd0otZ3EKcG80XS1vXW00ImwxJG00d2hKWnUgUGhvYWxlCQkgUGhvYWxlCSBQaG9hbGUgUGhvYWxlTXJTVztlZQl1ZQllCWUJbTRaSnFnRGQoZCRtb3dKTn0nbW93Sk4nT2RxTmQkSl1wWkddcTBKZClkMWVlCQkkRHBwCl9VWndkTGRUVzk4b3dKTjo6NUpwenFOSmI8VygpZC9kJ05EcVpKaFAnO2UJCQllCQlvbSgkVU5KWmhvWilkMWUJCQkkbzB2X1Vad2RMZCREcHAKX1Vad2QvZCRVTkpaaG9aZC9kIlAiZC9kJEpdcFpHXXEwSn0nXXEwSidPO2UJCQkkCnFwRGRMZCRVTkpaaG9aZC9kIlAiZC9kJEpdcFpHXXEwSn0nXXEwSidPO2UJCQkkMEpob1UwXwpxcERkTGQkVU5KWmhvWmQvZCJQMEpob1UwUCJkL2QkSl1wWkddcTBKfSddcTBKJ087ZQkJCSRwRFUwW18KcXBEZExkJFVOSlpob1pkL2QiUHBEVTBbTlAiZC9kJEpdcFpHXXEwSn0nXXEwSidPO2UJCXVkSndOSmQxZQkJCSRvMHZfVVp3ZExkJERwcApfVVp3ZC9kJEpdcFpHXXEwSn0nXXEwSidPO2UJCQkkCnFwRGRMZCRKXXBaR11xMEp9J11xMEonTztlCQkJJDBKaG9VMF8KcXBEZExkIjBKaG9VMFAiZC9kJEpdcFpHXXEwSn0nXXEwSidPO2UJCQkkcERVMFtfCnFwRGRMZCJwRFUwW05QImQvZCRKXXBaR11xMEp9J11xMEonTztlCQl1ZQkJZQkJb20oZFRXOThvd0pOOjo4b3dKOWpvTnBOKCdORHFaSmhQJy8kMEpob1UwXwpxcEQpZClkJDBKaG9VMF9ocXBxZExkIkdKTiI7ZEp3TkpkJDBKaG9VMF9ocXBxZExkIl00IjtlCQkJZQkJb20oZFRXOThvd0pOOjo4b3dKOWpvTnBOKCdORHFaSmhQJy8kcERVMFtfCnFwRClkKWQkcERVMFtfaHFwcWRMZCJHSk4iO2RKd05KZCRwRFUwW19ocXBxZExkIl00IjtlCQkJZQkJJG00d2hKWl93b05wfU9kTGQgICBNclNXZSBob2FkZ3dxTk5MIm1vd0otClpKYW9KZi1ncVpoImRocXBxLXBHCkpMIm8wcXZKImRocXBxLXFaSnFMIk5EcVpKaCJkaHFwcS1VWndMIjEkbzB2X1Vad3UiZGhxcHEtcERVMFtMIjEkcERVMFtfaHFwcXUiZGhxcHEtCnFwREwiMSQKcXBEdSJkaHFwcS0wSmhvVTBMIjEkMEpob1UwX2hxcHF1ImxlCSBob2FkZ3dxTk5MInFncG9hSi1ab1tbNF0ibCBOCnFdbCBvZGd3cU5OTCIwSmhvcVUKdzRxaC1vZzRdZDBKaG9xVQp3NHFoLW9nNF0tNEIibCBQb2wgUE4KcV1sIFBob2FsZQkgaG9hZGd3cU5OTCJtb3dKLWc0XXBKXXAibGUJCSBvMHZkTlpnTCIxJG8wdl9VWnd1ImRnd3FOTkwibW93Si0KWkphb0pmLW8wcXZKImxlCSBQaG9hbGUJIGhvYWRnd3FOTkwibW93Si1tNDRwSloibGUJCSBob2FkZ3dxTk5MIm1vd0otbTQ0cEpaLWdxCnBvNF0ibGUJCQkgaG9hZGd3cU5OTCJtb3dKLWdxCnBvNF0tb11tNCJsMSRKXXBaR11xMEp9J11xMEonT3UgUGhvYWxlCQkgUGhvYWxlCQkgaG9hZGd3cU5OTCJtb3dKLW00NHBKWi1bNHBwNDAibGUJCQkgaG9hZGd3cU5OTCJtb3dKLQpaSmFvSmYibGUJCQkJIHFkRFpKbUwiMSRvMHZfVVp3dSJkaHFwcS1Eb3ZETndvaEpMIk5vXXZ3SiJkWkp3TCJwNDR3cG8KImRwb3B3SkwiMSR3cV12fSdVCl9vMF9KagpxXWgnT3UiZHBxWnZKcEwiX1t3cV1CImwgb2Rnd3FOTkwiMEpob3FVCnc0cWgtb2c0XWQwSmhvcVUKdzRxaC1vZzRdLWM0NDAibCBQb2wgUHFsZQkJCQkgcWRnd3FOTkwiZ3dvCls0cVpoLWc0Ckctd29dQiJkRFpKbUwiIyJkWkp3TCJwNDR3cG8KImRwb3B3SkwiMSR3cV12fSdVCl9vMF9nNApHJ091Imwgb2Rnd3FOTkwiMEpob3FVCnc0cWgtb2c0XWQwSmhvcVUKdzRxaC1vZzRdLWc0CkcibCBQb2wgUHFsCWUJCQkgUGhvYWxlCQkgUGhvYWxlCSBQaG9hbGUgUGhvYWxlTXJTVztlCWUJdWUJZQllCSRtNHdoSlpfd29OcGRMZG8wCnc0aEooJycsZCRtNHdoSlpfd29OcCk7ZQllCSRaSnBVWl1fcVpacUdkTGRxWlpxR2QoZQkJJ05VZ2dKTk4nZExsZHBaVUosZQkJJ1pKTgo0XU5KJ2RMbGQkbTR3aEpaX3dvTnBlCSk7ZQllCUpnRDRke040XV9KXWc0aEooJFpKcFVaXV9xWlpxRyxkNjNza19iazkzPkFGOVRfYmt5PnNUOWR8ZDYzc2tfYms5Mz5BRjlUXzNXQTNNOTNkKTtlCWhvSigpO2UJZXVlZW9tKGQhJG9OX3c0dnZKaGRzPGQhJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncXd3NGZfcWgwb10nT2QpZDFkaG9KZCgiSlpaNFoiKTtkdWVlJFtVbW1KWmRMZCIiO2VlbVVdZ3BvNF1kCnFaTko2TjRdQVpacUcoJHtONF1BWlpxRyxkJApxWkpdcHlUZExkSCllMWVkZCRaSnBVWl1kTGRxWlpxRygpO2VkZG00WkpxZ0RkKCR7TjRdQVpacUdkcU5kJE5VW0FaWnFHKWQxZWRkZGRkJFpKcFVaXTNVWzNVW0FaWnFHZExkcVpacUcoKTtlZGRkZGRvbWQob05OSnAoJE5VW0FaWnFHfSdnRG93aFpKXSdPKSlkMWVkZGRkZGRkJFpKcFVaXTNVWzNVW0FaWnFHZExkCnFaTko2TjRdQVpacUcoJE5VW0FaWnFHfSdnRG93aFpKXSdPLGQkTlVbQVpacUd9J29oJ08pO2VkZGRkZHVlZGRkZGQkWkpwVVpdfU9kTGRxWlpxRygnb2gnZExsZCROVVtBWlpxR30nb2gnTyxkJwpxWkpdcG9oJ2RMbGQkCnFaSl1weVQpO2VkZGRkZCRaSnBVWl1kTGRxWlpxR18wSlp2SigkWkpwVVpdLGQkWkpwVVpdM1VbM1VbQVpacUcpO2VkZHVlZWRkWkpwVVpdZCRaSnBVWl07ZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJaSndxcEpob2hOIilkMWVlCW9tZChkISRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J3FoMG9dX3FoaF1KZk4nT2QpZGhvSmQoIkpaWjRaIik7ZWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlob0pkKCJKWlo0WiIpO2UJZQl1ZWUJJG9oZExkb11wYXF3KGQkXzw5aWI5M3J9J29oJ09kKTtlCWUJb21kKCRnNF1tb3Z9J100X2hxcEonT2RBa1RkISRnNF1tb3Z9J11KZk5fbVVwVVpKJ08pZCRmREpaSl9ocXBKZExkImRBa1RkaHFwSmQgZCciZC9kaHFwSmQoZCJYLTAtaGRNOm86TiIsZHBvMEpkKClkKWQvZCInIjtlCUp3TkpkJGZESlpKX2hxcEpkTGQiIjtlCQllCSRaSndxcEpoX29oTmRMZHFaWnFHKCk7ZQllCW9tKGROcFp3Sl0oZCRfPDlpYjkzcn0nbVV3d19wanAnT2QpZCBkTnBad0pdKGQkXzw5aWI5M3J9J05ENFpwX3BqcCdPZClkKWQkWzRoR2RMZCRfPDlpYjkzcn0nTkQ0WnBfcGpwJ087ZQlKd05KZCRbNGhHZExkJF88OWliOTNyfSdtVXd3X3BqcCdPO2UJCQkJCWUJJFs0aEdkTGRwWm8wKE5wWm8KX3Bxdk4oZE5wWm8KTndxTkRKTihkJF88OWliOTNyfSdwb3B3SidPZC9kImQiZC9kJFs0aEdkKWQpKTtlZQlvbShkaHdKX05wWndKXShkJFs0aEcsZCRnNF1tb3Z9J2dEcVpOSnAnT2QpZGxkMkhISGQpZDFlCQkkWzRoR2RMZGh3Sl9OVVtOcFooZCRbNGhHLGRILGQySEhILGQkZzRdbW92fSdnRHFaTkpwJ09kKTtlCXVlCQkJCQllCSRbNGhHZExkJGhbLWxOcW1KTnR3KGQkWzRoR2QpO2UJCQkJCWUJJGc0XW1vdn0nWkp3cXBKaF9dVTBbSlonT2RMZG9dcGFxdyhkJGc0XW1vdn0nWkp3cXBKaF9dVTBbSlonT2QpO2UJb20oZCRnNF1tb3Z9J1pKd3FwSmhfXVUwW0paJ09kIGQyZClkJGc0XW1vdn0nWkp3cXBKaF9dVTBbSlonT2RMZDc7ZQllCSRxd3c0ZkpoX2dxcE5kTGRxWlpxRygpO2UJZQltNFpKcWdEZCgkVU5KWl92WjRVCmRxTmQkYXF3VUopZDFlCQlvbWQoJGFxd1VKfSdxd3c0Zl9ncXBOJ09kIUxkInF3dyJkQWtUZCEkYXF3VUp9J3F3dzRmX05ENFpwJ09kKWQkcXd3NGZKaF9ncXBOfU9kTGQkaFstbE5xbUpOdHcoJGFxd1VKfSdxd3c0Zl9ncXBOJ08pO2UJdWVlCSR7NG9dX2dxcEp2NFpHZExkIiI7ZQllCW9tZChnNFVdcCgkcXd3NGZKaF9ncXBOKSlkMWVlCQkkcXd3NGZKaF9ncXBOZExkbzAKdzRoSigiLCIsZCRxd3c0ZkpoX2dxcE4pO2UJCSRxd3c0ZkpoX2dxcE5kTGRKagp3NGhKKCIsIixkJHF3dzRmSmhfZ3FwTik7ZQkJJHF3dzRmSmhfZ3FwTmRMZHFaWnFHX1Vdb3RVSigkcXd3NGZKaF9ncXBOKTtlCQlONFpwKCRxd3c0ZkpoX2dxcE4pO2UJZQkJb21kKCRnNF1tb3Z9J3F3dzRmXzBVd3BvX2dxcEp2NFpHJ08pZDFlCQllCQkJJHs0b11fZ3FwSnY0WkdkTGQiCmR5a2s5PGQ2c3lrZCgzOVc5PnJkVHkzcnlrPnIoImQvZEY8OTh5UmQvZCJfCjROcF9KanBacU5fZ3FwTi9dSmZOX29oKWQ4PHNTZCJkL2RGPDk4eVJkL2QiXwo0TnBfSmpwWnFOX2dxcE5kUU05PDlkZ3FwX29oZHlrZCgnImQvZG8wCnc0aEpkKGQnLCcsZCRxd3c0ZkpoX2dxcE5kKWQvZCInKSlkZ2Rza2QoCi9vaExnL11KZk5fb2gpZCI7ZQkJCSRxd3c0ZkpoX2dxcE5kTGQiIjtlCQllCQl1ZEp3TkpkMWUJCWUJCQkkcXd3NGZKaF9ncXBOZExkImdxcEp2NFpHZHlrZCgnImQvZG8wCnc0aEpkKGQiJywnIixkJHF3dzRmSmhfZ3FwTmQpZC9kIicpZEFrVGQiO2UJCQllCQl1ZWUJdWRKd05KZCRxd3c0ZkpoX2dxcE5MIiI7ZWUJJF00cF9xd3c0ZkpoX2dxcE5kTGRxWlpxRygpO2UJZQltNFpKcWdEZCgkVU5KWl92WjRVCmRxTmQkYXF3VUopZDFlCQlvbWQoJGFxd1VKfSddNHBfcXd3NGZfZ3FwTidPZCFMZCIiZEFrVGQhJGFxd1VKfSdxd3c0Zl9ORDRacCdPZClkJF00cF9xd3c0ZkpoX2dxcE59T2RMZCRoWy1sTnFtSk50dygkYXF3VUp9J100cF9xd3c0Zl9ncXBOJ08pO2UJdWUJZQlvbWQoZzRVXXAoJF00cF9xd3c0ZkpoX2dxcE4pKWQxZWUJCSRdNHBfcXd3NGZKaF9ncXBOZExkbzAKdzRoSigiLCIsZCRdNHBfcXd3NGZKaF9ncXBOKTtlCQkkXTRwX3F3dzRmSmhfZ3FwTmRMZEpqCnc0aEooIiwiLGQkXTRwX3F3dzRmSmhfZ3FwTik7ZQkJJF00cF9xd3c0ZkpoX2dxcE5kTGRxWlpxR19VXW90VUooJF00cF9xd3c0ZkpoX2dxcE4pO2UJCU40WnAoJF00cF9xd3c0ZkpoX2dxcE4pO2UJZQkJb21kKCRnNF1tb3Z9J3F3dzRmXzBVd3BvX2dxcEp2NFpHJ08pZDFlCQllCQkJJF00cF9xd3c0ZkpoX2dxcE5kTGQiCi9vaGRrc3JkeWtkKGQzOVc5PnJkVHkzcnlrPnIoImQvZEY8OTh5UmQvZCJfCjROcF9KanBacU5fZ3FwTi9dSmZOX29oKWQ4PHNTZCJkL2RGPDk4eVJkL2QiXwo0TnBfSmpwWnFOX2dxcE5kUU05PDlkZ3FwX29oZHlrZCgiZC9kbzAKdzRoSmQoZCcsJyxkJF00cF9xd3c0ZkpoX2dxcE5kKWQvZCIpZClkQWtUZCI7ZQkJCSR7NG9dX2dxcEp2NFpHZExkIgpkIjtlCQllCQl1ZEp3TkpkMWUJZQkJCSRdNHBfcXd3NGZKaF9ncXBOZExkImdxcEp2NFpHZGtzcmR5a2QoJyJkL2RvMAp3NGhKZChkIicsJyIsZCRdNHBfcXd3NGZKaF9ncXBOZClkL2QiJylkQWtUZCI7ZQllCQl1ZWUJdWRKd05KZCRdNHBfcXd3NGZKaF9ncXBOTCIiO2UJCQkJCWUJZQlvbWQoZCRvaGQpZDFlCQkkb2hkTGQiZEFrVGRvaGQhTGQxJG9odSI7ZQl1ZEp3TkpkJG9oZExkJyc7ZQllCSRoWy1sdFVKWkcoZCIzOVc5PnJkb2gsZFNBcj5NZChwb3B3SixkTkQ0WnBfTnA0WkcsZG1Vd3dfTnA0WkcsZGptb0p3aE4pZEE1QXlrM3JkKCcxJFs0aEd1JylkcU5kTmc0WkpkODxzU2QiZC9kRjw5OHlSZC9kIl8KNE5wZDEkezRvXV9ncXBKdjRaR3VRTTk8OWQxJHF3dzRmSmhfZ3FwTnUxJF00cF9xd3c0ZkpoX2dxcE51U0FyPk1kKHBvcHdKLGRORDRacF9OcDRaRyxkbVV3d19OcDRaRyxkam1vSndoTilkQTVBeWszcmQoJzEkWzRoR3UnKTEkb2h1ZEFrVGRxCgpaNGFKTDIiZC9kJGZESlpKX2hxcEpkL2QiZHM8VDk8ZHpYZE5nNFpKZFQ5Mz5kV3lTeXJkImQvZCRnNF1tb3Z9J1pKd3FwSmhfXVUwW0paJ09kKTtlZQlmRG93SmQoZCRaSndxcEpoZExkJGhbLWx2SnBfWjRmKClkKWQxZQkJJFpKd3FwSmhfb2hOfU9kTGQkWkp3cXBKaH0nb2gnTztlCXVlCWUJb21kKGRnNFVdcCgkWkp3cXBKaF9vaE4pZClkMWUJCSRaSndxcEpoX29oTmRMZG8wCnc0aEooIiwiLCRaSndxcEpoX29oTik7ZQl1ZEp3TkpkJFpKd3FwSmhfb2hOZExkJyc7ZQllCSRbVW1tSlpkTGQkWkp3cXBKaF9vaE47ZWV1ZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiXUpmTk4KcTAiKWQxZWUJb21kKGQhJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncXd3NGZfcXd3X0pob3AnTylkaG9KZCgiSlpaNFoiKTtlZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlCWUJJG9oZExkb11wYXF3KGQkXzw5aWI5M3J9J29oJ09kKTtlCWUJb20oZCRvaGQgZDJkKWRob0ooZCJKWlo0WiJkKTtlZQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRvaCxkcVVwNFosZHEKClo0YUpkODxzU2QiZC9kRjw5OHlSZC9kIl8KNE5wZFFNOTw5ZG9oZExkJzEkb2h1JyJkKTtlZQlvbWQoJFo0Zn0nb2gnTykJMWVlCQkkcVVwRDRaZExkJGhbLWxOcW1KTnR3KCRaNGZ9J3FVcDRaJ08pO2VlCQlvbShkJFo0Zn0ncQoKWjRhSidPZClkaG9KZCgiSlpaNFoiKTtlZQkJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkVU5KWl9vaCxkVU5KWl92WjRVCmQ4PHNTZCJkL2RiMzk8Rjw5OHlSZC9kIl9VTkpaTmRRTTk8OWRdcTBKZExkJzEkcVVwRDRadSciZCk7ZWUJCSRVTkpaX29oZExkb11wYXF3KCRaNGZ9J1VOSlpfb2gnTyk7ZWUJCW9tZCgkVU5KWl92WjRVCn0kWjRmfSdVTkpaX3ZaNFUKJ09PfSdxd3c0Zl9xaDBvXSdPKWRob0pkKCR3cV12fScwcVpCX04KcTBfSlpaNFonTyk7ZWUJCSRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfcWgwb11fdzR2TmQoXXEwSixkaHFwSixkbwosZHFncG80XSxkSmpwWnFOKWRhcXdVSk5kKCciLyRoWy1sTnFtSk50dygkMEowW0paX29ofSddcTBKJ08pLyInLGQnMSRfcnlTOXUnLGQnMSRfeUZ1JyxkJ1k9JyxkJzEkcVVwRDRadScpImQpO2VlCQkkWkpOVXdwZExkJGhbLWx0VUpaRyhkIjM5Vzk+cmRvaGQ4PHNTZCJkL2RGPDk4eVJkL2QiXwo0TnBkUU05PDlkcVVwNFpMJzEkcVVwRDRadSdkQWtUZHEKClo0YUpMJ0gnImQpO2UJCQllCQlmRG93SmQoZCRaNGZkTGQkaFstbHZKcF9xWlpxRyhkJFpKTlV3cGQpZClkMWUJCQloSndKcEpdSmZOW0dvaChkJFo0Zn0nb2gnT2QpO2UJCXVlZQkJJGhbLWxtWkpKKGQkWkpOVXdwZCk7ZQkJJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk5kMzlyZFpKTnBab2dwSmhMJ3gnLGRaSk5wWm9ncEpoX2hxR05MJ0gnZFFNOTw5ZFVOSlpfb2hkTCcxJFVOSlpfb2h1JyJkKTtlCQlnd0pxWl9ncWdESihkcVpacUcoJ11KZk5fJyxkJ3Bxdk5ndzRVaF8nLGQncVpnRG9hSk5fJyxkJ2dxd0pdaHFaXycsZCdwNApdSmZOXycsZCdaTk4nLGQnTnBxcE4nKWQpO2UJCSRbVW1tSlpkTGQkd3Fddn0nMHFaQl9OCnEwXzRCX0knTztlZQl1ZEp3TkpkaG9KZCgiSlpaNFoiKTtlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJwbzBKNFVwIilkMWVlCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWUJZQlOSnBfZzQ0Qm9KKGQicG8wSjRVcF9OSk5ObzRdIixkJzInLGR4LjdkKTtlCSRfMzkzM3lza30ncG8wSjRVcF9OSk5ObzRdJ09kTGQyO2UJZQlob0ooZCI0QiJkKTtlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJnd0pxWgo0d3ciKWQxZWUJb21kKGQhJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncXd3NGZfcXd3X0pob3AnTylkaG9KZCgiSlpaNFoiKTtlZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlZQkkb2hkTGRvXXBhcXcoZCRfPDlpYjkzcn0nb2gnT2QpO2UJZQlvbShkJG9oZCBkMmQpZGhvSihkIkpaWjRaImQpO2UJZQkkaFstbHRVSlpHKGQiYkZUQXI5ZGQiZC9kRjw5OHlSZC9kIl8KNHd3ZDM5cmRkYTRwSk5MJ0gnLGRxXU5mSlpMJydkUU05PDlkXUpmTl9vaGRMZCcxJG9odSciZCk7ZQkkaFstbHRVSlpHKGQiVDlXOXI5ZDg8c1NkImQvZEY8OTh5UmQvZCJfCjR3d193NHZkUU05PDlkXUpmTl9vaEwnMSRvaHUnImQpO2UJZQkkW1VtbUpaZExkJHdxXXZ9J2d3SnFaXwo0d3dfSSdPO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkImc0MDBKXXBOClVbd29nIilkMWVlCW9tZChkISRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J3FoMG9dX2c0MDBKXXBOJ08pZGhvSmQoIkpaWjRaIik7ZWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlob0pkKCJKWlo0WiIpO2UJZQl1ZQllCSRnX29oZExkb11wYXF3KGQkXzw5aWI5M3J9J29oJ09kKTtlZQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRygiMzlXOT5yZG9oLGQKNE5wX29oLGRxCgpaNGFKZDg8c1NkImQvZEY8OTh5UmQvZCJfZzQwMEpdcE5kUU05PDlkb2hkTGQnMSRnX29odSciKTtlZQlvbWQoIW9OTkpwKCRaNGZ9J29oJ08pZHM8ZCRaNGZ9J3EKClo0YUonTylkMWUJCWhvSigiSlpaNFoiKTtlCXVlZQkkCjROcF9vaGRMZCRaNGZ9Jwo0TnBfb2gnTztlZQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiX2c0MDBKXXBOZDM5cmRxCgpaNGFKTCcyJ2RRTTk8OWRvaEwnMSRnX29odSciZCk7ZQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiXwo0TnBkMzlyZGc0MDBfXVUwTGc0MDBfXVUwKzJkUU05PDlkb2hMJzEkCjROcF9vaHUnImQpO2VlCSRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfcWgwb11fdzR2TmQoXXEwSixkaHFwSixkbwosZHFncG80XSxkSmpwWnFOKWRhcXdVSk5kKCciLyRoWy1sTnFtSk50dygkMEowW0paX29ofSddcTBKJ08pLyInLGQnMSRfcnlTOXUnLGQnMSRfeUZ1JyxkJzJWJyxkJycpImQpO2VlCW9tZCgkZzRdbW92fSdxd3c0Zl9xd3BfVVp3J09kcV1oZCEkZzRdbW92fSdOSjRfcEcKSidPKWQkZwpaSm1vamRMZCJtVXd3XyI7ZEp3TkpkJGcKWkptb2pkTGQibVV3d18iZC9kJAo0TnBfb2g7ZWUJZ3dKcVpfZ3FnREoocVpacUcoJ11KZk5fJyxkJ2c0MDBfJ2QvZCQKNE5wX29oLGQkZwpaSm1vaixkJ05wcXBOJykpO2VlCW9tZChkJGc0XW1vdn0ncXd3NGZfTlVbTmdab1tKJ09kKWQxZWUJCSRaNGZkTGQkaFstbE5VCkpaX3RVSlpHKGQiMzlXOT5yZHFVcDRaLGRwSmpwLGQKcVpKXXBkODxzU2QiZC9kRjw5OHlSZC9kIl9nNDAwSl1wTmRRTTk8OWRvaGRMZCcxJGdfb2h1JyJkKTtlZQkJJF1xMEpkTGQkWjRmfSdxVXA0WidPO2UJCSRbNGhHZExkJFo0Zn0ncEpqcCdPO2UJCSQKcVpKXXBkTGQkWjRmfScKcVpKXXAnTztlZQkJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkb2gsZE5ENFpwX05wNFpHLGRwb3B3SixkaHFwSixkcXdwX11xMEosZGdxcEp2NFpHZDg8c1NkIi9GPDk4eVIvIl8KNE5wZFFNOTw5ZG9oZExkJzEkCjROcF9vaHUnImQpO2VlCQkkWjRmfSdocXBKJ09kTGROcFpwNHBvMEooZCRaNGZ9J2hxcEonT2QpO2UJCSRaNGZ9J2dxcEp2NFpHJ09kTGRvXXBhcXcoZCRaNGZ9J2dxcEp2NFpHJ09kKTtlZQkJb20oZCRnNF1tb3Z9J3F3dzRmX3F3cF9VWncnT2QpZDFlCQkJCWUJCQlvbShkJGc0XW1vdn0nTko0X3BHCkonT2RMTGQyZHM8ZCRnNF1tb3Z9J05KNF9wRwpKJ09kTExkSWQpZDFlCQkJZQkJCQlvbShkJFo0Zn0nZ3FwSnY0WkcnT2RxXWhkJGc0XW1vdn0nTko0X3BHCkonT2RMTGRJZClkMWUJCQkJCWUJCQkJCSRtVXd3X3dvXUJkTGQkZzRdbW92fSdEcHAKX0Q0MEpfVVp3J09kL2R2SnBfVVp3KGQkWjRmfSdncXBKdjRaRydPZClkL2QiUCJkL2QkWjRmfSdvaCdPZC9kIi0iZC9kJFo0Zn0ncXdwX11xMEonT2QvZCIvRHAwdyI7ZQkJCQkJZQkJCQl1ZEp3TkpkMWUJCQkJCWUJCQkJCSRtVXd3X3dvXUJkTGQkZzRdbW92fSdEcHAKX0Q0MEpfVVp3J09kL2QkWjRmfSdvaCdPZC9kIi0iZC9kJFo0Zn0ncXdwX11xMEonT2QvZCIvRHAwdyI7ZQkJCQkJZQkJCQl1ZQkJCQllCQkJdWRKd05KZDFlCQkJCWUJCQkJJG1Vd3dfd29dQmRMZCRnNF1tb3Z9J0RwcApfRDQwSl9VWncnT2QvZGhxcEooZCdYUDBQaFAnLGQkWjRmfSdocXBKJ09kKWQvZCRaNGZ9J3F3cF9dcTBKJ09kL2QiL0RwMHciO2UJCQl1ZQkJCWUJCXVkSndOSmQxZQkJCQllCQkJJG1Vd3dfd29dQmRMZCRnNF1tb3Z9J0RwcApfRDQwSl9VWncnT2QvZCJvXWhKai8KRAo/XUpmTm9oTCJkL2QkWjRmfSdvaCdPO2UJCQllCQl1ZQllCQkkcG9wd0pkTGROcFpvCk53cU5ESk4oJFo0Zn0ncG9wd0onTyk7ZQkJZQkJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkKmQ4PHNTZCJkL2RGPDk4eVJkL2QiX0owcW93ZFFNOTw5ZF1xMEpMJ2c0MDBKXXBOJ2RXeVN5cmRILDIiZCk7ZQkJJDBxb3dkTGRdSmZkaHdKXzBxb3coZCRnNF1tb3YsZCRaNGZ9J1VOSl9EcDB3J09kKTtlZQkJb21kKE5wWgo0TigkbVV3d193b11CLGQiUFAiKWRMTExkSClkJG1Vd3dfd29dQmRMZCJEcHAKOiIvJG1Vd3dfd29dQjtlCQlKd05Kb21kKE5wWgo0TigkbVV3d193b11CLGQiUCIpZExMTGRIKWQkbVV3d193b11CZExkIkRwcAo6UFAiLyRfMzk8bjk8fSdNcnJGX01zM3InTy8kbVV3d193b11CO2VlCQkkWjRmfSdwSjAKd3FwSidPZExkTnBabwpOd3FOREpOKGQkWjRmfSdwSjAKd3FwSidPZCk7ZQkJJFo0Zn0ncEowCndxcEonT2RMZE5wWl9aSgp3cWdKKGQiMSVVTkpaXXEwSiV1IixkJF1xMEosZCRaNGZ9J3BKMAp3cXBKJ09kKTtlCQkkWjRmfSdwSjAKd3FwSidPZExkTnBaX1pKCndxZ0ooZCIxJWhxcEoldSIsZHdxXXZocXBKKGQie2Q4ZFhkTTpvIixkJF9yeVM5LGRwWlVKZCksZCRaNGZ9J3BKMAp3cXBKJ09kKTtlCQkkWjRmfSdwSjAKd3FwSidPZExkTnBaX1pKCndxZ0ooZCIxJXdvXUIldSIsZCRtVXd3X3dvXUIsZCRaNGZ9J3BKMAp3cXBKJ09kKTtlCQkkWjRmfSdwSjAKd3FwSidPZExkTnBaX1pKCndxZ0ooZCIxJXBvcHdKJXUiLGQkcG9wd0osZCRaNGZ9J3BKMAp3cXBKJ09kKTtlZQkJJFs0aEdkTGROcFpfWkoKd3FnSihkJ1xdJyxkIiIsZCRbNGhHZCk7ZQkJJFs0aEdkTGROcFpfWkoKd3FnSihkJ1xaJyxkIiIsZCRbNGhHZCk7ZQkJCWUJCSRbNGhHZExkTnBabwpOd3FOREpOKGROcFpvCk53cU5ESk4oZCRbNGhHZClkKTtlCQkkWzRoR2RMZE5wWl9aSgp3cWdKKGQiIFtaZFBsIixkIlxdIixkJFs0aEdkKTtlCQkkWzRoR2RMZE5wWm8KX3Bxdk4oZCRbNGhHZCk7ZQkJCWUJCW9tKGQkWjRmfSdVTkpfRHAwdydPZClkMWUJCQkkWzRoR2RMZE5wWl9aSgp3cWdKKCJcXSIsZCIgW1pkUGwiLGQkWzRoR2QpO2UJCXVlCQkJCQllCQkkWjRmfSdwSjAKd3FwSidPZExkTnBaX1pKCndxZ0ooZCIxJXBKanAldSIsZCRbNGhHLGQkWjRmfSdwSjAKd3FwSidPZCk7ZQkJJFo0Zn0ncEowCndxcEonT2RMZE5wWl9aSgp3cWdKKGQiMSVvCiV1IixkIi0tIixkJFo0Zn0ncEowCndxcEonT2QpO2UJCWUJCSRtNFVdaF9dSmZOX3FVcEQ0Wl9OVVtOZ1pvW0pkTGRtcXdOSjtlCQkkbTRVXWhfWkoKd0dfcVVwRDRaX05VW05nWm9bSmRMZG1xd05KO2UJCWUJCSRdSmZOX3FVcEQ0Wl9OVVtOZ1pvW0pkTGQkaFstbE5VCkpaX3RVSlpHKGQiMzlXOT5yZCJkL2RiMzk8Rjw5OHlSZC9kIl9VTkpaTi9VTkpaX29oLGQiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk4vXXEwSixkImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOL0owcW93LGQiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk4vXUpmTl9OVVtOZ1pvW0pkODxzU2QiZC9kRjw5OHlSZC9kIl8KNE5wX0pqcFpxTmRXOThyZDZzeWtkImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOZHNrZCJkL2RGPDk4eVJkL2QiXwo0TnBfSmpwWnFOL1VOSlpfb2hMImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOL1VOSlpfb2hkUU05PDlkImQvZEY8OTh5UmQvZCJfCjROcF9KanBacU4vXUpmTl9vaEwnMSQKNE5wX29odSciZCk7ZQkJZQkJb20oZCQKcVpKXXBkKWQxZQkJCWUJCQkkWkoKd0dfcVVwRDRaX05VW05nWm9bSmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOL1VOSlpfb2gsZCJkL2RiMzk8Rjw5OHlSZC9kIl9VTkpaTi9dcTBKLGQiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk4vSjBxb3csZCJkL2RiMzk8Rjw5OHlSZC9kIl9VTkpaTi9nNDAwSl1wTl9aSgp3R19OVVtOZ1pvW0pkODxzU2QiZC9kRjw5OHlSZC9kIl9nNDAwSl1wTmRXOThyZDZzeWtkImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOZHNrZCJkL2RGPDk4eVJkL2QiX2c0MDBKXXBOL1VOSlpfb2hMImQvZGIzOTxGPDk4eVJkL2QiX1VOSlpOL1VOSlpfb2hkUU05PDlkImQvZEY8OTh5UmQvZCJfZzQwMEpdcE4vb2hMJzEkCnFaSl1wdSciZCk7ZQkJCWUJCXVkSndOSmQkWkoKd0dfcVVwRDRaX05VW05nWm9bSmRMZHFaWnFHKCk7CWVlCQlvbWQoTnBaCjROKCRnNF1tb3Z9J0RwcApfRDQwSl9VWncnTyxkIlBQIilkTExMZEgpZCROd29dQmRMZCJEcHAKTjoiLyRnNF1tb3Z9J0RwcApfRDQwSl9VWncnTztlCQlKd05Kb21kKE5wWgo0TigkZzRdbW92fSdEcHAKX0Q0MEpfVVp3J08sZCJQIilkTExMZEgpZCROd29dQmRMZCJEcHAKTjpQUCIvJF8zOTxuOTx9J01yckZfTXMzcidPLyRnNF1tb3Z9J0RwcApfRDQwSl9VWncnTztlCQlKd05KZCROd29dQmRMZCRnNF1tb3Z9J0RwcApfRDQwSl9VWncnTztlZQkJb20oZCEkCnFaSl1wZClkMWUJCQllCQkJJGhbLWx0VUpaRyhkIjM5Vzk+cmRVTkpaX29oLGRdcTBKLGRKMHFvdyxkRHFORGQ4PHNTZCJkL2RGPDk4eVJkL2QiX05VW05nWm9bSmRRTTk8OWRdSmZOX29oTCcxJAo0TnBfb2h1JyJkKTtlCWUJCQlmRG93SigkWkpnZExkJGhbLWx2SnBfWjRmKCkpZQkJCTFlCQkJCW9tKGQkWkpnfSdVTkpaX29oJ09kTExkJF1KZk5fcVVwRDRaX05VW05nWm9bSn0nVU5KWl9vaCdPZClkMWUJCQkJCSRtNFVdaF9dSmZOX3FVcEQ0Wl9OVVtOZ1pvW0pkTGRwWlVKO2UJCQkJdWUJCQkJCWUJCQkJb20oZCQKcVpKXXBkQWtUZCRaSmd9J1VOSlpfb2gnT2RMTGQkWkoKd0dfcVVwRDRaX05VW05nWm9bSn0nVU5KWl9vaCdPZClkMWUJCQkJCSRtNFVdaF9aSgp3R19xVXBENFpfTlVbTmdab1tKZExkcFpVSjtlCQkJCXVlCQkJCQllCQkJCW9tZCgkWkpnfSdVTkpaX29oJ09kIUxkJDBKMFtKWl9vaH0nVU5KWl9vaCdPZClkMWUJCQllCQkJCQkkWzRoR2RMZE5wWl9aSgp3cWdKKGQiMSVVTkpaXXEwSl9wNCV1IixkJFpKZ30nXXEwSidPLGQkWjRmfSdwSjAKd3FwSidPZCk7ZQkJCQkJJFs0aEdkTGROcFpfWkoKd3FnSihkIjElVV1OVVtOZ1pvW0oldSIsZCROd29dQmQvZCJvXWhKai8KRAo/aDRMVV1OVVtOZ1pvW0omCjROcF9vaEwiZC9kJAo0TnBfb2hkL2QiJlVOSlpfb2hMImQvZCRaSmd9J1VOSlpfb2gnT2QvZCImRHFOREwiZC9kJFpKZ30nRHFORCdPLGQkWzRoR2QpO2UJCQkJCSQwcW93LWxOSl1oKGQkWkpnfSdKMHFvdydPLGQkd3Fddn0nMHFvd19nNDAwSl1wTidPLGQkWzRoR2QpO2UJZQkJCQl1ZQllCQkJdWUJCQllCQl1ZQkJZQkJb20oJF1KZk5fcVVwRDRaX05VW05nWm9bSn0nXUpmTl9OVVtOZ1pvW0onT2RBa1RkISRtNFVdaF9dSmZOX3FVcEQ0Wl9OVVtOZ1pvW0opZDFlCQkJZQkJCSRbNGhHZExkTnBaX1pKCndxZ0ooZCIxJVVOSlpdcTBKX3A0JXUiLGQkXUpmTl9xVXBENFpfTlVbTmdab1tKfSddcTBKJ08sZCRaNGZ9J3BKMAp3cXBKJ09kKTtlCQkJZQkJCW9tZCgkZzRdbW92fSdxd3c0Zl9xd3BfVVp3J08pZDFlCQkJCSRbNGhHZExkTnBaX1pKCndxZ0ooZCIxJVVdTlVbTmdab1tKJXUiLGQkTndvXUJkL2QiVU5KWlAiZC9kVVp3Sl1nNGhKZChkJF1KZk5fcVVwRDRaX05VW05nWm9bSn0nXXEwSidPZClkL2QiUCIsZCRbNGhHZCk7ZQkJCXVkSndOSmQxZQkJCQkkWzRoR2RMZE5wWl9aSgp3cWdKKGQiMSVVXU5VW05nWm9bSiV1IixkJE53b11CZC9kIm9daEpqLwpECj9OVVtxZ3BvNF1MVU5KWm9dbTQmVU5KWkwiZC9kVVp3Sl1nNGhKZChkJF1KZk5fcVVwRDRaX05VW05nWm9bSn0nXXEwSidPZCksZCRbNGhHZCk7ZQkJCXVlCQkJZQkJCSQwcW93LWxOSl1oKGQkXUpmTl9xVXBENFpfTlVbTmdab1tKfSdKMHFvdydPLGQkd3Fddn0nMHFvd19nNDAwSl1wTidPLGQkWzRoR2QpO2UJCQllCQkJJHdxTnBfTkpdaGRMZCRdSmZOX3FVcEQ0Wl9OVVtOZ1pvW0p9J1VOSlpfb2gnTztlCQkJZQkJdWRKd05KZCR3cU5wX05KXWhkTGRtcXdOSjtlCQllCQlvbSgkCnFaSl1wZEFrVGQkWkoKd0dfcVVwRDRaX05VW05nWm9bSn0nZzQwMEpdcE5fWkoKd0dfTlVbTmdab1tKJ09kQWtUZCEkbTRVXWhfWkoKd0dfcVVwRDRaX05VW05nWm9bSmRBa1RkJFpKCndHX3FVcEQ0Wl9OVVtOZ1pvW0p9J1VOSlpfb2gnT2QhTGQkd3FOcF9OSl1oKWQxZQkJCWUJCQkkWzRoR2RMZE5wWl9aSgp3cWdKKGQiMSVVTkpaXXEwSl9wNCV1IixkJFpKCndHX3FVcEQ0Wl9OVVtOZ1pvW0p9J11xMEonTyxkJFo0Zn0ncEowCndxcEonT2QpO2UJCQllCQkJb21kKCRnNF1tb3Z9J3F3dzRmX3F3cF9VWncnTylkMWUJCQkJJFs0aEdkTGROcFpfWkoKd3FnSihkIjElVV1OVVtOZ1pvW0oldSIsZCROd29dQmQvZCJVTkpaUCJkL2RVWndKXWc0aEpkKGQkWkoKd0dfcVVwRDRaX05VW05nWm9bSn0nXXEwSidPZClkL2QiUCIsZCRbNGhHZCk7ZQkJCXVkSndOSmQxZQkJCQkkWzRoR2RMZE5wWl9aSgp3cWdKKGQiMSVVXU5VW05nWm9bSiV1IixkJE53b11CZC9kIm9daEpqLwpECj9OVVtxZ3BvNF1MVU5KWm9dbTQmVU5KWkwiZC9kVVp3Sl1nNGhKZChkJFpKCndHX3FVcEQ0Wl9OVVtOZ1pvW0p9J11xMEonT2QpLGQkWzRoR2QpO2UJCQl1ZQkJCWUJCQkkMHFvdy1sTkpdaChkJFpKCndHX3FVcEQ0Wl9OVVtOZ1pvW0p9J0owcW93J08sZCR3cV12fScwcW93X2c0MDBKXXBOJ08sZCRbNGhHZCk7ZQkJdWVlCQkkaFstbG1aSkooKTtlCXVlCWUJJFtVbW1KWmRMZCc0Qic7CWV1ZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiZzQwMEpdcE5OCnEwIilkMWVlCW9tZChkISRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J2hKd19xd3dnJ08pZGhvSmQoIkpaWjRaIik7ZWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlob0pkKCJKWlo0WiIpO2UJZQl1ZQllCSRvaGRMZG9dcGFxdyhkJF88OWliOTNyfSdvaCdPZCk7ZQllCW9tKGQkb2hkIGQyZClkaG9KKGQiSlpaNFoiZCk7ZWUJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkb2gsZFVOSlpfb2gsZHFVcDRaLGRKMHFvdyxkbwosZG9OX1pKdm9OcEpaZDg8c1NkImQvZEY8OTh5UmQvZCJfZzQwMEpdcE5kUU05PDlkb2hkTGQnMSRvaHUnImQpO2VlCW9tZCgkWjRmfSdvaCdPKQkxZWUJCSRVTkpaX29oZExkb11wYXF3KCRaNGZ9J1VOSlpfb2gnTyk7ZQkJJHFVcEQ0WmRMZCRoWy1sTnFtSk50dygkWjRmfSdxVXA0WidPKTtlCQkkSjBxb3dkTGQkaFstbE5xbUpOdHcoJFo0Zn0nSjBxb3cnTyk7ZQkJJG9OX1pKdm9OcEpaZExkJFo0Zn0nb05fWkp2b05wSlonTztlCQkkbwpkTGQkaFstbE5xbUpOdHcoJFo0Zn0nbwonTyk7ZWUJCW9tZChkJG9OX1pKdm9OcEpaZClkMWVlCQkJJFo0ZmRMZCRoWy1sTlUKSlpfdFVKWkcoZCIzOVc5PnJkVU5KWl92WjRVCmQ4PHNTZCJkL2RiMzk8Rjw5OHlSZC9kIl9VTkpaTmRRTTk8OWRVTkpaX29oZExkJzEkVU5KWl9vaHUnImQpO2VlCQkJb21kKCRVTkpaX3ZaNFUKfSRaNGZ9J1VOSlpfdlo0VQonT099J3F3dzRmX3FoMG9dJ08pZGhvSmQoJHdxXXZ9JzBxWkJfTgpxMF9KWlo0WidPKTtlZQkJCSRoWy1sdFVKWkcoZCJ5azM5PHJkeWtyc2QiZC9kYjM5PEY8OTh5UmQvZCJfcWgwb11fdzR2TmQoXXEwSixkaHFwSixkbwosZHFncG80XSxkSmpwWnFOKWRhcXdVSk5kKCciLyRoWy1sTnFtSk50dygkMEowW0paX29ofSddcTBKJ08pLyInLGQnMSRfcnlTOXUnLGQnMSRfeUZ1JyxkJ1k9JyxkJzEkcVVwRDRadScpImQpO2VlCQkJJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kYjM5PEY8OTh5UmQvZCJfVU5KWk5kMzlyZGc0MDBfXVUwTCdIJyxkWkpOcFpvZ3BKaEwneCcsZFpKTnBab2dwSmhfaHFHTkwnSCdkUU05PDlkVU5KWl9vaGRMJzEkVU5KWl9vaHUnImQpO2UJCQllCQkJaEp3SnBKZzQwMEpdcE5bR1VOSlpvaCgkVU5KWl9vaCk7ZWVlCQl1ZEp3TkpkMWVlCQkJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RiMzk8Rjw5OHlSZC9kIl9xaDBvXV93NHZOZChdcTBKLGRocXBKLGRvCixkcWdwbzRdLGRKanBacU4pZGFxd1VKTmQoJyIvJGhbLWxOcW1KTnR3KCQwSjBbSlpfb2h9J11xMEonTykvIicsZCcxJF9yeVM5dScsZCcxJF95RnUnLGQnWVknLGQnMSRxVXBENFp1JykiZCk7ZWUJCQloSndKcEpnNDAwSl1wTltHVU5KWm9oKEgsZCRvCik7ZWUJCQkkaFstbHRVSlpHKGQieWszOTxyZHlrcnNkImQvZGIzOTxGPDk4eVJkL2QiX1txXV1KaGQoaEpOZ1osZGhxcEosZGhxR04sZG8KKWRhcXdVSk5kKCcxJHdxXXZ9JzBxWkJfTgpxMF80Ql8yJ091JyxkJ0gnLGQnSCcsZCcxJG8KdScpImQpO2UJCQlAVV13b11CKGQ5azV5azlfVHk8ZC9kJ1BncWdESlBOR05wSjBQW3FdXUpoLwpECidkKTtlZQkJdWVlCQlnd0pxWl9ncWdESihkcVpacUcoJ11KZk5fJyxkJ3Bxdk5ndzRVaF8nLGQncVpnRG9hSk5fJyxkJ2dxd0pdaHFaXycsZCdwNApdSmZOXycsZCdaTk4nLGQnTnBxcE4nKWQpO2VlCQlvbWQoZCRKMHFvd2RBa1RkTnBad0pdKCRnNF1tb3Z9J04KcTBfcQpvX0JKRydPKWRsZHhkKWQxZQkJZQkJCSRObU5kTGRdSmZkM3A0CjMKcTAoJGc0XW1vdn0nTgpxMF9xCm9fQkpHJ08sZCRnNF1tb3Z9J05KZ19xaGhdSmZOJ08pO2UJCQkkcVp2TmRMZHFaWnFHKCdvCl9xaGhaJ2RMbGQkbwosZCdVTkpaXXEwSidkTGxkJHFVcEQ0WixkJ0owcW93J2RMbGQkSjBxb3dkKTtlCQkJJE5tTi1scWhoKGQkcVp2TmQpO2UJCWUJCXVlZQkJJFtVbW1KWmRMZCR3cV12fScwcVpCX04KcTBfNEInTzsJCWVlCXVkSndOSmRob0pkKCJKWlo0WiIpO2V1ZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiZ3dKcVpncWdESiIpZDFlZQlvbWQoZCQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT2QhTGQyZClkaG9KZCgiSlpaNFoiKTtlCWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlob0pkKCJKWlo0WiIpO2UJZQl1ZQllCWd3SnFaX3F3d19ncWdESk4oKTtlCWd3SnFaX05wcXBvZ19ncWdESl9vaCgpO2VlCSRbVW1tSlpkTGQkd3Fddn0nZ3dKcVpfZ3FnREonTztlZXVlZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiZ3dKcVpOVVtOZ1pvW0oiKWQxZWUJb21kKGQkMEowW0paX29ofSdVTkpaX3ZaNFUKJ09kIUxkMmQpZGhvSmQoIkpaWjRaIik7ZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJaG9KZCgiSlpaNFoiKTtlCXVlZQkkaFstbHRVSlpHKCJyPGJrPkFyOWRyQXpXOWQiZC9kRjw5OHlSZC9kIl9OVVtOZ1pvW0oiKTtlZQkkW1VtbUpaZExkJHdxXXZ9J2d3SnFaX05VW05nWm9bSidPO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkImd3SnFaTlVbTmdab1tKXUpmTiIpZDFlZQlvbWQoZCQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT2QhTGQyZClkaG9KZCgiSlpaNFoiKTtlCWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQlob0pkKCJKWlo0WiIpO2UJdWUJZQkkb2hkTGRvXXBhcXcoZCRfPDlpYjkzcn0nb2gnT2QpO2UJZQlvbShkJG9oZCBkMmQpZGhvSihkIkpaWjRaImQpO2UJZQkkaFstbHRVSlpHKGQiVDlXOXI5ZDg8c1NkImQvZEY8OTh5UmQvZCJfTlVbTmdab1tKZFFNOTw5ZF1KZk5fb2hMJzEkb2h1JyJkKTtlZQkkW1VtbUpaZExkJHdxXXZ9J2d3SnFaX05VW05nWm9bSidPO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIk5KXWhdNHBvZ0oiKWQxZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWUJZQkkWjRmZExkJGhbLWxOVQpKWl90VUpaRyhkIjM5Vzk+cmRvaGQ4PHNTZCJkL2RGPDk4eVJkL2QiX100cG9nSmRRTTk8OWRVTkpaX29oZExkJzEkMEowW0paX29ofSdVTkpaX29oJ091JyJkKTtlCWUJJF00cG9nSmRMZCRfRnMzcn0nXTRwb2dKJ087ZQllCSRdNHBvZ0pkTGQkaFstbE5xbUpOdHcoZCRdNHBvZ0pkKTtlCWUJb20oZGh3Sl9OcFp3Sl0oZCRdNHBvZ0osZCRnNF1tb3Z9J2dEcVpOSnAnT2QpZGxkLjdISEhkKWQxZQkJaG9KKGQiSlpaNFoiZCk7ZQl1ZQllCW9tKGQkWjRmfSdvaCdPZClkMWUJCWUJCSRoWy1sdFVKWkcoZCJiRlRBcjlkImQvZEY8OTh5UmQvZCJfXTRwb2dKZDM5cmRdNHBvZ0pMJzEkXTRwb2dKdSdkUU05PDlkVU5KWl9vaGRMZCcxJDBKMFtKWl9vaH0nVU5KWl9vaCdPdSciZCk7ZQllCXVkSndOSmQxZQkJZQkJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RGPDk4eVJkL2QiX100cG9nSmQoVU5KWl9vaCxkXTRwb2dKKWRhcXdVSk5kKCcxJDBKMFtKWl9vaH0nVU5KWl9vaCdPdScsZCcxJF00cG9nSnUnKSJkKTtlCWUJdWVlCSRbVW1tSlpkTGQkd3Fddn0nTnFhSmgnTztlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJOcWFKd3FddiIpZDFlCWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlKZ0Q0ZCIxXCJKWlo0WlwiOlwiSlpaNFpcInUiO2UJCWhvSmQoKTtlCWUJdWUJZQkkXzw5aWI5M3J9J3dxXXYnT2RMZHA0cFpxXU53b3AoZCRfPDlpYjkzcn0nd3FddidPLGRtcXdOSixkbXF3TkpkKTtlZQlvbWQoJF88OWliOTNyfSd3cV12J09kQWtUZEBvTl9ob1pkKGQ8c3NyX1R5PGQvZCdQd3FddlVxdkpQJ2QvZCRfPDlpYjkzcn0nd3FddidPZCkpZDFlCQllCQlOSnBfZzQ0Qm9KZChkIk5Kd0pncEpoX3dxXXZVcXZKIixkJF88OWliOTNyfSd3cV12J08sZHguN2QpO2UJCWVlCXVlCWUJSmdENGQiMVwiNEJcIjpcIjRCXCJ1IjtlCWhvSigpO2UJZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJOcWFKcERKMEoiKWQxZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWUJZQkkbW93SmRMZDBoNygzOT5iPDlfQWJyTV9FOVgvJDBKMFtKWl9vaH0nVU5KWl9vaCdPKTtlCWUJb20oZCFvTl9ob1ooZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3ImQpZClkMWUJCQllCQlAMEJob1ooZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3IixkSD09PWQpO2UJCUBnRDA0aChkOWs1eWs5X1R5PGQvZCJQZ3FnREpQTkdOcEowUHFoMG9dCnFdSnciLGRIPT09ZCk7ZWUJdWUJZQlvbShkIW9OX2hvWihkOWs1eWs5X1R5PGQvZCJQZ3FnREpQTkdOcEowUHFoMG9dCnFdSnciKWQpZDFlZQkJSmdENGQiMVwiSlpaNFpcIjpcIjEkd3Fddn0nTnBxcF9ncWdESidPdVwidSI7ZQkJaG9KKCk7ZQl1ZQllCW9tKGQhb05fZlpvcHFbd0ooZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3ImQpZClkMWVlCQlKZ0Q0ZCIxXCJKWlo0WlwiOlwiMSR3cV12fSdVCnc0cWhfSlpaNFpfMidPdWRQSl12b11KUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UGQxJHdxXXZ9J1UKdzRxaF9KWlo0Wl9JJ091XCJ1IjtlCQlob0ooKTtlCQllCXVlZQlvbShkbW93Sl9Kam9OcE4oZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UCJkL2QkbW93SmQpZEFrVGQhb05fZlpvcHFbd0ooZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UCJkL2QkbW93SmQpZClkMWUJCWUJCSR3cV12fSdOcHFwX05HTnBKMCdPZExkTnBaX1pKCndxZ0pkKCIxbW93SnUiLGQiUEpddm9dSlBncWdESlBOR05wSjBQcWgwb10KcV1Kd1AiZC9kJG1vd0osZCR3cV12fSdOcHFwX05HTnBKMCdPKTtlCQllCQlKZ0Q0ZCIxXCJKWlo0WlwiOlwiMSR3cV12fSdOcHFwX05HTnBKMCdPdVwidSI7ZQkJaG9KKCk7ZQkJZQl1ZQllCSRxd3c0ZkpoX3BESjBKTmRMZHFaWnFHKCdod0pfcERKMEpfcScsZCdod0pfcERKMEpfWycsJ2h3Sl9wREowSl9nJywnaHdKX3BESjBKX2gnLCdod0pfcERKMEpfSicsJ2h3Sl9wREowSl9tJywnaHdKX3BESjBKX3YnLCdod0pfcERKMEpfRCcsJ2h3Sl9wREowSl9vJyxkJ2h3Sl9wREowSl97JywnaHdKX3BESjBKX2hxWkInLCdOb2hKW3FaLWpOJywnd3FHNFVwLVs0akpoJywnb10KVXAtZ3dxTk5vZycsJ3FVcDRfaHFaQl9wREowSicsJ05wR3dKLU4wNDRwRG9ddicsJ0RwMHdtNF1wTm9jSi03SCcsJ0RwMHdtNF1wTm9jSi09NycsJ0RwMHdtNF1wTm9jSi1WSCcsJ0RwMHdtNF1wTm9jSi0yMkgnLCdEcDB3bTRdcE5vY0otMklIJywnRHAwd200XXBOb2NKLTJ4SCcsJ0RwMHdtNF1wTm9jSi0yS0gnLCdEcDB3bTRdcE5vY0otMjdIJywnRHAwd200XXBOb2NKLTI9NycsZCdEcDB3bTRdcE5vY0otSUhIJ2QpO2UJJHBESjBKZExkcVpacUcoKTtlCWUJb20oZE5wWgo0TmQoZCRfPDlpYjkzcn0ncERKMEonTyxkIk5xYUpoX2h3Sl9wREowSl8iZClkczxkTnBaCjROZChkJF88OWliOTNyfSdwREowSidPLGQicVVwNF9db3ZEcF8wNGhKImQpZClkMWUJCSRfPDlpYjkzcn0ncERKMEonT2RMZE5wWl9aSgp3cWdKKCdOcWFKaF9od0pfcERKMEpfJyxkJ2h3Sl9wREowSl8nLGQkXzw5aWI5M3J9J3BESjBKJ08pO2UJCSRfPDlpYjkzcn0ncERKMEonT2RMZE5wWl9aSgp3cWdKKCdod0pfcERKMEpfaHFaQicsZCcnLGQkXzw5aWI5M3J9J3BESjBKJ08pO2UJCSRfPDlpYjkzcn0ncERKMEonT2RMZHBabzAoJF88OWliOTNyfSdwREowSidPKTtlCXVlCWUJJHBESjBKTmRMZEpqCnc0aEooImQiLGQkXzw5aWI5M3J9J3BESjBKJ08pO2UJZQltNFpKcWdEKCRwREowSk5kcU5kJHBKMAopZDFlCQlvbShkcFpvMCgkcEowCilkQWtUZG9dX3FaWnFHKCRwSjAKLGQkcXd3NGZKaF9wREowSk4pZClkMWUJCQkkcERKMEp9T2RMZHBabzAoJHBKMAopO2UJCXVlCXVlCWUJb20oZGc0VV1wKCRwREowSilkKWQxZQkJZQkJJHBESjBKZExkbzAKdzRoSigiZCIsZCRwREowSik7ZQkJZQkJbW93Sl8KVXBfZzRdcEpdcE5kKDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UCJkL2QkbW93SixkJHBESjBKLGRXcz5FXzlSKTtlCQlAZ0QwNGgoZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UCJkL2QkbW93SixkSC4uLmQpO2UJZQl1ZEp3TkpkMWUJCWUJCUBVXXdvXUIoZDlrNXlrOV9UeTxkL2QiUGdxZ0RKUE5HTnBKMFBxaDBvXQpxXUp3UCJkL2QkbW93SmQpO2UJCWUJdWUJZQlKZ0Q0ZCIxXCI0QlwiOlwiNEJcInUiO2UJaG9KKCk7ZQlldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkImhKd0pwSjA0aFV3Sk4iKWQxZWUJb21kKGQkMEowW0paX29ofSdVTkpaX3ZaNFUKJ09kIUxkMmQpZGhvSmQoIkpaWjRaIik7ZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWUJZQkkb2hkTGRvXXBhcXcoJF88OWliOTNyfSdvaCdPKTtlZQlvbWQoZCRvaGQpZDFlCQkkaFstbHRVSlpHKGQiVDlXOXI5ZDg8c1NkImQvZEY8OTh5UmQvZCJfcWgwb11fTkpncG80XU5kUU05PDlkb2hkTGQnMSRvaHUnImQpO2UJZQkJJFtVbW1KWmRMZCc0Qic7ZQl1ZWV1ZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiZ3FwTjRacCIpZDFlZQlvbShkISRVTkpaX3ZaNFUKfSQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT099J3FoMG9dX2dxcEp2NFpvSk4nT2QpZGhvSmQoIkpaWjRaIik7ZQllCW9tKGQhb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkczxkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kczxkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkRkKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWVlCSRfRnMzcn0nd29OcCdPZExke040XV9oSmc0aEooTnBabwpOd3FOREpOKCRfRnMzcn0nd29OcCdPKSxkcFpVSik7ZWUJb21kKGQhb05fcVpacUcoJF9GczNyfSd3b05wJ08pZClkaG9KZCgiSlpaNFoiKTtlCWUJJF9GczNyfSd3b05wJ09kTGQKcVpOSjZONF1BWlpxRygkX0ZzM3J9J3dvTnAnTyk7ZQllCSRvTGRIO2VlCW00WkpxZ0RkKGQkX0ZzM3J9J3dvTnAnT2RxTmQkYXF3VUpkKWQxZQkJJG8rKztlZQkJJG9oZExkb11wYXF3KCRhcXdVSn0nb2gnTyk7ZQkJJApxWkpdcG9oZExkb11wYXF3KCRhcXdVSn0nCnFaSl1wb2gnTyk7ZQkJZQkJb21kKGQkb2hkKWQxZWUJCQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiX2dxcEp2NFpHZDM5cmQKcVpKXXBvaEwnMSQKcVpKXXBvaHUnLGQKNE5vTCcxJG91J2RRTTk8OWRvaGRMZCcxJG9odSciZCk7ZWUJCXVlCXVlZQlnd0pxWl9xd3dfZ3FnREpOKCk7ZQkkaFstbHRVSlpHKGQieWszOTxyZHlrcnNkImQvZGIzOTxGPDk4eVJkL2QiX3FoMG9dX3c0dk5kKF1xMEosZGhxcEosZG8KLGRxZ3BvNF0sZEpqcFpxTilkYXF3VUpOZCgnIi8kaFstbE5xbUpOdHcoJDBKMFtKWl9vaH0nXXEwSidPKS8iJyxkJzEkX3J5Uzl1JyxkJzEkX3lGdScsZCcyMicsZCcnKSJkKTtlZQkkW1VtbUpaZExkJzRCJztlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJncXBnRHFddkpOcHFwVU4iKWQxZWUJb20oZCEkVU5KWl92WjRVCn0kMEowW0paX29ofSdVTkpaX3ZaNFUKJ09PfSdxaDBvXV9ncXBKdjRab0pOJ09kKWRob0pkKCJKWlo0WiIpO2UJZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlZQkkb2hkTGRvXXBhcXcoJF9GczNyfSdvaCdPKTtlZQlvbShkISRvaGRzPGQkb2hkIGQyKWQxZQkJZQkJaG9KZCgiSlpaNFoiKTtlCWUJdWUJZQlvbShkJF9GczNyfSdOcHFwVU4nT2RMTGQnNG1tJ2QpZDFlCQkkaFstbHRVSlpHKGQiYkZUQXI5ZCJkL2RGPDk4eVJkL2QiX2dxcEp2NFpHZDM5cmRxZ3BvYUpMJ0gnZFFNOTw5ZG9oZExkJzEkb2h1JyJkKTtlCQkkdzR2TmRMZDJJSDtlCXVkSndOSmQxZQkJJGhbLWx0VUpaRyhkImJGVEFyOWQiZC9kRjw5OHlSZC9kIl9ncXBKdjRaR2QzOXJkcWdwb2FKTCcyJ2RRTTk8OWRvaGRMZCcxJG9odSciZCk7ZQkJJHc0dk5kTGQySTI7ZQl1ZWUJZ3dKcVpfcXd3X2dxZ0RKTigpO2UJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RiMzk8Rjw5OHlSZC9kIl9xaDBvXV93NHZOZChdcTBKLGRocXBKLGRvCixkcWdwbzRdLGRKanBacU4pZGFxd1VKTmQoJyIvJGhbLWxOcW1KTnR3KCQwSjBbSlpfb2h9J11xMEonTykvIicsZCcxJF9yeVM5dScsZCcxJF95RnUnLGQnMSR3NHZOdScsZCcxJG9odScpImQpO2VlCSRbVW1tSlpkTGQnNEInO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIgp3VXZvXU40WnAiKWQxZWUJb20oZCQwSjBbSlpfb2h9J1VOSlpfdlo0VQonT2QhTGQyZClkaG9KZCgiSlpaNFoiKTtlCWUJb20oZCFvTk5KcCgkXzw5aWI5M3J9J1VOSlpfRHFORCdPKWRzPGQhJF88OWliOTNyfSdVTkpaX0RxTkQnT2RzPGQkXzw5aWI5M3J9J1VOSlpfRHFORCdPZCFMZCRod0pfdzR2b11fRHFORGQpZDFlCQllCQlob0pkKCJKWlo0WiIpO2UJZQl1ZWUJJF9GczNyfSd3b05wJ09kTGR7TjRdX2hKZzRoSihOcFpvCk53cU5ESk4oJF9GczNyfSd3b05wJ08pLGRwWlVKKTtlZQlvbWQoZCFvTl9xWlpxRygkX0ZzM3J9J3dvTnAnTylkKWRob0pkKCJKWlo0WiIpO2UJZQkkX0ZzM3J9J3dvTnAnT2RMZApxWk5KNk40XUFaWnFHKCRfRnMzcn0nd29OcCdPKTtlCWUJJG9MZEg7ZWUJbTRaSnFnRGQoZCRfRnMzcn0nd29OcCdPZHFOZCRhcXdVSmQpZDFlCQkkbysrO2VlCQkkb2hkTGRvXXBhcXcoJGFxd1VKfSdvaCdPKTtlCQllCQlvbWQoZCRvaGQpZDFlZQkJCSRoWy1sdFVKWkcoZCJiRlRBcjlkImQvZEY8OTh5UmQvZCJfCndVdm9dTmQzOXJkCjROb0wnMSRvdSdkUU05PDlkb2hkTGQnMSRvaHUnImQpO2VlCQl1ZQl1ZWUJZ3dKcVpfcXd3X2dxZ0RKTigpO2UJJGhbLWx0VUpaRyhkInlrMzk8cmR5a3JzZCJkL2RiMzk8Rjw5OHlSZC9kIl9xaDBvXV93NHZOZChdcTBKLGRocXBKLGRvCixkcWdwbzRdLGRKanBacU4pZGFxd1VKTmQoJyIvJGhbLWxOcW1KTnR3KCQwSjBbSlpfb2h9J11xMEonTykvIicsZCcxJF9yeVM5dScsZCcxJF95RnUnLGQnMjJWJyxkJycpImQpO2VlCSRbVW1tSlpkTGQnNEInO2VldWVlb21kKCRfPDlpYjkzcn0ncWdwbzRdJ09kTExkIk5wNFpxdkpONFpwIilkMWVlCW9tZCgkMEowW0paX29ofSdVTkpaX3ZaNFUKJ09kIUxkMilkaG9KKCJKWlo0WiIpO2VlCW9tZCghb05OSnAoJF88OWliOTNyfSdVTkpaX0RxTkQnTylkNFpkISRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kNFpkJF88OWliOTNyfSdVTkpaX0RxTkQnT2QhTGQkaHdKX3c0dm9dX0RxTkQpZDFlZQkJaG9KKCJKWlo0WiIpO2UJdWVlCSRfRnMzcn0nd29OcCdPZExke040XV9oSmc0aEooTnBabwpOd3FOREpOKCRfRnMzcn0nd29OcCdPKSxkcFpVSik7ZWUJb21kKCFvTl9xWlpxRygkX0ZzM3J9J3dvTnAnTykpZGhvSigiSlpaNFoiKTtlZQkkX0ZzM3J9J3dvTnAnT2RMZApxWk5KNk40XUFaWnFHKCRfRnMzcn0nd29OcCdPKTtlZQkkb2RMZEg7ZWUJbTRaSnFnRGQoJF9GczNyfSd3b05wJ09kcU5kJGFxd1VKKWQxZQkJJG8rKztlZQkJJG9oZExkb11wYXF3KCRhcXdVSn0nb2gnTyk7ZWUJCW9tZCgkb2gpZDFlZQkJCSRoWy1sdFVKWkcoImJGVEFyOWQiZC9kRjw5OHlSZC9kIl9OcDRacXZKZDM5cmQKNE5vTCcxJG91J2RRTTk8OWRvaGRMZCcxJG9odSciKTtlCQl1ZQl1ZWUJZ3dKcVpfcXd3X2dxZ0RKTigpO2UJJGhbLWx0VUpaRygieWszOTxyZHlrcnNkImQvZGIzOTxGPDk4eVJkL2QiX3FoMG9dX3c0dk5kKF1xMEosZGhxcEosZG8KLGRxZ3BvNF0sZEpqcFpxTilkYXF3VUpOZCgnImQvZCRoWy1sTnFtSk50dygkMEowW0paX29ofSddcTBKJ08pZC9kIicsZCcxJF9yeVM5dScsZCcxJF95RnUnLGQnMjJWJyxkJycpIik7ZWUJJFtVbW1KWmRMZCc0Qic7ZXVlZWVvbWQoJF88OWliOTNyfSdxZ3BvNF0nT2RMTGQiam1ONFpwIilkMWVlCW9tKGQhJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncWgwb11fam1vSndoTidPZClkaG9KZCgiSlpaNFoiKTtlZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlZQkkX0ZzM3J9J3dvTnAnT2RMZHtONF1faEpnNGhKKE5wWm8KTndxTkRKTigkX0ZzM3J9J3dvTnAnTyksZHBaVUopO2VlCW9tZChkIW9OX3FaWnFHKCRfRnMzcn0nd29OcCdPKWQpZGhvSmQoIkpaWjRaIik7ZQllCSRfRnMzcn0nd29OcCdPZExkCnFaTko2TjRdQVpacUcoJF9GczNyfSd3b05wJ08pO2VlCW1VXWdwbzRdZGptb0p3aE5OcWFKKCRocXBxKWQxZQkJdnc0W3F3ZCRnNF1tb3Y7ZQllCWRkZGQkaHFwcWRMZHFaWnFHX2Fxd1VKTigkaHFwcSk7ZQkJJG1vd0pnNF1wSl1wTmRMZCIiO2UJZQlkZGRkbTRaSnFnRGQoJGhxcHFkcU5kJG9daEpqZExsZCRhcXdVSilkMWUJZGRkZGRkJGFxd1VKZExkcVpacUdfYXF3VUpOKCRhcXdVSik7ZQlkZGRkZGRtNFpKcWdEZCgkYXF3VUpkcU5kJG9daEpqSWRMbGQkYXF3VUpJKWQxZQlkZGRkZGRkZCRhcXdVSklkTGROcFpvCk53cU5ESk4oJGFxd1VKSSk7ZQlkZGRkZGRkZCRhcXdVSklkTGROcFpfWkoKd3FnSigifCIsZCImIzJJSzsiLGQkYXF3VUpJKTtlCWRkZGRkZGRkJGFxd1VKSWRMZE5wWl9aSgp3cWdKKCJcWlxdIixkIl9fazlRV19fIixkJGFxd1VKSSk7ZQlkZGRkZGRkZCRtb3dKZzRdcEpdcE5kL0xkJGFxd1VKSWQvZCgkb11oSmpJZCBkZzRVXXAoJGFxd1VKKWQtZDJkP2QifCJkOmQiIik7ZQlkZGRkZGR1ZQlkZGRkZGQkbW93Smc0XXBKXXBOZC9MZCgkb11oSmpkIGRnNFVdcCgkaHFwcSlkLWQyZD9kIlxaXF0iZDpkIiIpO2UJZGRkZHVlCWUJZGRkZCRtb3dKRHFdaHdKZExkbTQKSl0oOWs1eWs5X1R5PC8nUGhxcHFQam1vSndoTi9wanAnLGQiZisiKTtlCQllCWRkZGRvbWQoISRtb3dKRHFdaHdKKWRob0pkKCJKWlo0WiIpO2UJZQkJJG1vd0pnNF1wSl1wTmRMZERwMHdOCkpnb3F3Z0RxWk4oJG1vd0pnNF1wSl1wTixkOWtyX2lic3I5MyxkJGc0XW1vdn0nZ0RxWk5KcCdPZCk7ZQkJJG1vd0pnNF1wSl1wTmRMZE5wWl9aSgp3cWdKKCImcTAKOyMySUs7IixkIiYjMklLOyIsZCRtb3dKZzRdcEpdcE4pO2VlCWRkZGRtZlpvcEooJG1vd0pEcV1od0osZCRtb3dKZzRdcEpdcE4pO2UJZGRkZG1ndzROSigkbW93SkRxXWh3Sik7ZWUJdWVlCSRqbW9Kd2hOZExkam1vSndoTnc0cWgoKTtlCSRwSjAKX3FaWnFHZExkcVpacUcoKTtlZQltNFpKcWdEZChkJF9GczNyfSd3b05wJ09kcU5kJGFxd1VKZClkMWVlCQkkb2hkTGRvXXBhcXcoJGFxd1VKfSdvaCdPKTtlCQkkcEowCl9xWlpxR31PZExkJGptb0p3aE59JG9oTzsJCWVlCXVlZQkkam1vSndoTmRMZCRwSjAKX3FaWnFHO2VlCWptb0p3aE5OcWFKKCRqbW9Kd2hOKTtlZQkkW1VtbUpaZExkJzRCJztlZXVlZW9tZCgkXzw5aWI5M3J9J3FncG80XSdPZExMZCJVTkpaam1ONFpwIilkMWVlCW9tKGQhJFVOSlpfdlo0VQp9JDBKMFtKWl9vaH0nVU5KWl92WjRVCidPT30ncWgwb11fVU5KWm1vSndoTidPZClkaG9KZCgiSlpaNFoiKTtlZQlvbShkIW9OTkpwKCRfPDlpYjkzcn0nVU5KWl9EcU5EJ08pZHM8ZCEkXzw5aWI5M3J9J1VOSlpfRHFORCdPZHM8ZCRfPDlpYjkzcn0nVU5KWl9EcU5EJ09kIUxkJGh3Sl93NHZvXV9EcU5EZClkMWUJCWUJCWhvSmQoIkpaWjRaIik7ZQllCXVlZQkkX0ZzM3J9J3dvTnAnT2RMZHtONF1faEpnNGhKKE5wWm8KTndxTkRKTigkX0ZzM3J9J3dvTnAnTyksZHBaVUopO2VlCW9tZChkIW9OX3FaWnFHKCRfRnMzcn0nd29OcCdPKWQpZGhvSmQoIkpaWjRaIik7ZQllCSRfRnMzcn0nd29OcCdPZExkCnFaTko2TjRdQVpacUcoJF9GczNyfSd3b05wJ08pO2VlCW1VXWdwbzRdZApaNG1vd0p3NHFoKClkMWVlCWRkJApxcERkTGQ5azV5azlfVHk8LydQaHFwcVBqClo0bW93Si9wanAnO2UJZGQkbW93Smc0XXBKXXBOZExkbW93SigkCnFwRCk7ZQllCWRkZGRvbWQoIW9OX3FaWnFHKCRtb3dKZzRdcEpdcE4pKWRob0pkKCJKWlo0WiIpO2UJZGRlCWRkZGRtNFpKcWdEZCgkbW93Smc0XXBKXXBOZHFOZCRdcTBKZExsZCRhcXdVSilkMWUJZGRkZGRkJG1vd0pnNF1wSl1wTn0kXXEwSk9kTGRKagp3NGhKKCJ8IixkcFpvMCgkYXF3VUopKTtlCWRkZGRkZG00WkpxZ0RkKCRtb3dKZzRdcEpdcE59JF1xMEpPZHFOZCRdcTBKSWRMbGQkYXF3VUpJKWQxZQlkZGRkZGRkZCRhcXdVSklkTGROcFpfWkoKd3FnSigiJiMySUs7IixkInwiLGQkYXF3VUpJKTtkZQlkZGRkZGRkZCRhcXdVSklkTGROcFpfWkoKd3FnSigiX19rOVFXX18iLGQiXFpcXSIsZCRhcXdVSkkpO2UJZGRkZGRkZGQkbW93Smc0XXBKXXBOfSRdcTBKT30kXXEwSklPZExkJGFxd1VKSTtlCWRkZGRkZHVlCWRkZGR1ZQlkZGRkWkpwVVpdZCRtb3dKZzRdcEpdcE47ZQl1ZWVlCW1VXWdwbzRdZApaNG1vd0pOcWFKKCRocXBxKWQxZQllCWRkZGQkaHFwcWRMZHFaWnFHX2Fxd1VKTigkaHFwcSk7ZQkJJG1vd0pnNF1wSl1wTmRMZCIiO2UJZQlkZGRkbTRaSnFnRGQoJGhxcHFkcU5kJG9daEpqZExsZCRhcXdVSilkMWUJZGRkZGRkJGFxd1VKZExkcVpacUdfYXF3VUpOKCRhcXdVSik7ZQlkZGRkZGRtNFpKcWdEZCgkYXF3VUpkcU5kJG9daEpqSWRMbGQkYXF3VUpJKWQxZQlkZGRkZGRkZCRhcXdVSklkTGROcFpvCk53cU5ESk4oJGFxd1VKSSk7ZQlkZGRkZGRkZCRhcXdVSklkTGROcFpfWkoKd3FnSigifCIsZCImIzJJSzsiLGQkYXF3VUpJKTtlCWRkZGRkZGRkJGFxd1VKSWRMZE5wWl9aSgp3cWdKKCJcWlxdIixkIl9fazlRV19fIixkJGFxd1VKSSk7ZQlkZGRkZGRkZCRtb3dKZzRdcEpdcE5kL0xkJGFxd1VKSWQvZCgkb11oSmpJZCBkZzRVXXAoJGFxd1VKKWQtZDJkP2QifCJkOmQiIik7ZQlkZGRkZGR1ZQlkZGRkZGQkbW93Smc0XXBKXXBOZC9MZCgkb11oSmpkIGRnNFVdcCgkaHFwcSlkLWQyZD9kIlxaXF0iZDpkIiIpO2UJZGRkZHVlCWRkZQlkZGRkJG1vd0pEcV1od0pkTGRtNApKXSg5azV5azlfVHk8LydQaHFwcVBqClo0bW93Si9wanAnLGQiZisiKTtlCWRkZGRvbWQoISRtb3dKRHFdaHdKKWRob0pkKCJKWlo0WiIpO2UJZQkJJG1vXWhkTGRxWlpxR2QoJ1BocXBxOlBvJywnUHFbNFVwOlBvJywnUGFbTmdabwpwOlBvJywnUDRdZ3dvZ0JQbycsJ1A0XXc0cWhQbycsJ1A0XVVddzRxaFBvJywnUDRdcVs0WnBQbycsJ1A0XUpaWjRaUG8nLCdQNF1bd1VaUG8nLCdQNF1nRHFddkpQbycsJ1A0XW00Z1VOUG8nLCdQNF1aSk5KcFBvJywnUDRdTlVbMG9wUG8nLCdQNF1oW3dnd29nQlBvJywnUDRdQkpHaDRmXVBvJywnUDRdQkpHClpKTk5QbycsJ1A0XUJKR1UKUG8nLCdQNF0wNFVOSmg0Zl1QbycsJ1A0XTA0VU5KVQpQbycsJ1A0XTA0VU5KNGFKWlBvJywnUDRdMDRVTko0VXBQbycsJ1A0XU5Kd0pncFBvJywnUHtxYXFOZ1pvCnBQbycsJ1A0XTA0VU5KSl1wSlpQbycsJ1A0XWZESkp3UG8nLCdQNF1ORDRmUG8nLCdQNF1xbXBKWgpab11wUG8nLCdQNF1bSm00WkoKWm9dcFBvJywnUDRdW0ptNFpKVV13NHFoUG8nLCdQNF1EcU5EZ0RxXXZKUG8nLCdQNF0wSk5OcXZKUG8nLCdQNF00XXdvXUpQbycsJ1A0XTRtbXdvXUpQbycsJ1A0XQpxdkpEb2hKUG8nLCdQNF0KcXZKTkQ0ZlBvJywnUDRdCjQKTnBxcEpQbycsJ1A0XVpKTm9jSlBvJywnUDRdTnA0WnF2SlBvJywnUDRdZzRdcEpqcDBKXVVQbycsJ1A0XW9dYXF3b2hQbycsJ1A0XW9dClVwUG8nLCdQNF1OSnFaZ0RQbycsJ1A0XWhacXZQbycsJ1A0XWhacXZKXWhQbycsJ1A0XWhacXZKXXBKWlBvJywnUDRdaFpxdndKcWFKUG8nLCdQNF1oWnF2NGFKWlBvJywnUDRdaFpxdk5wcVpwUG8nLCdQNF1oWjQKUG8nLCdQNF0wNFVOSjA0YUpQbycsJ1A0XTA0VU5KZkRKSndQbycsJ1A0XU5nWjR3d1BvJywnUDRdZzQKR1BvJywnUDRdZ1VwUG8nLCdQNF0KcU5wSlBvJywnUDRdZ3FdCndxR1BvJywnUDRdZ3FdCndxR3BEWjRVdkRQbycsJ1A0XWdVSmdEcV12SlBvJywnUDRdaFVacXBvNF1nRHFddkpQbycsJ1A0XUowCnBvSmhQbycsJ1A0XUpdaEpoUG8nLCdQNF13NHFoSmhocXBxUG8nLCdQNF13NHFoSmgwSnBxaHFwcVBvJywnUDRddzRxaE5wcVpwUG8nLCdQNF0KcVVOSlBvJywnUDRdClo0dlpKTk5QbycsCSdQNF1acXBKZ0RxXXZKUG8nLCdQNF1OSkpCSmhQbycsJ1A0XU5KSkJvXXZQbycsJ1A0XU5wcXd3SmhQbycsJ1A0XU5VTgpKXWhQbycsJ1A0XXBvMEpVCmhxcEpQbycsJ1A0XWE0d1UwSmdEcV12SlBvJywnUDRdZnFvcG9ddlBvJywnUDRdcDR2dndKUG8nKTtlCQkkWkoKd3FnSmRMZHFaWnFHZCgiaCYjMkg9STtwcToiLGQiJiMySD1JO1s0VXA6IixkImFbTmdabwpwIFtsIFBbbDoiLGQiJiMyMjI7XWd3b2dCIixkIiYjMjIyO113NHFoIixkIiYjMjIyO11VXXc0cWgiLGQiJiMyMjI7XXFbNFpwIixkIiYjMjIyO11KWlo0WiIsZCImIzIyMjtdW3dVWiIsZCImIzIyMjtdZ0RxXXZKIixkIiYjMjIyO11tNGdVTiIsZCImIzIyMjtdWkpOSnAiLGQiJiMyMjI7XU5VWzBvcCIsZCImIzIyMjtdaFt3Z3dvZ0IiLGQiJiMyMjI7XUJKR2g0Zl0iLGQiJiMyMjI7XUJKRwpaSk5OIixkIiYjMjIyO11CSkdVCiIsZCImIzIyMjtdMDRVTkpoNGZdIixkIiYjMjIyO10wNFVOSlUKIixkIiYjMjIyO10wNFVOSjRhSloiLGQiJiMyMjI7XTA0VU5KNFVwIixkIiYjMjIyO11OSndKZ3AiLGQieyYjMkg9STthcU5nWm8KcCIsZCcmIzIyMjtdMDRVTkpKXXBKWicsZCcmIzIyMjtdZkRKSncnLGQnJiMyMjI7XU5ENGYnLGQnJiMyMjI7XXFtcEpaClpvXXAnLCcmIzIyMjtdW0ptNFpKClpvXXAnLCcmIzIyMjtdW0ptNFpKVV13NHFoJywnJiMyMjI7XURxTkRnRHFddkonLCcmIzIyMjtdMEpOTnF2SicsJyYjMjIyO100XXdvXUonLCcmIzIyMjtdNG1td29dSicsJyYjMjIyO10KcXZKRG9oSicsJyYjMjIyO10KcXZKTkQ0ZicsJyYjMjIyO10KNApOcHFwSicsJyYjMjIyO11aSk5vY0onLCcmIzIyMjtdTnA0WnF2SicsJyYjMjIyO11nNF1wSmpwMEpdVScsJyYjMjIyO11vXWFxd29oJywnJiMyMjI7XW9dClVwJywnJiMyMjI7XU5KcVpnRCcsJyYjMjIyO11oWnF2JywnJiMyMjI7XWhacXZKXWgnLCcmIzIyMjtdaFpxdkpdcEpaJywnJiMyMjI7XWhacXZ3SnFhSicsJyYjMjIyO11oWnF2NGFKWicsJyYjMjIyO11oWnF2TnBxWnAnLCcmIzIyMjtdaFo0CicsJyYjMjIyO10wNFVOSjA0YUonLCcmIzIyMjtdMDRVTkpmREpKdycsJyYjMjIyO11OZ1o0d3cnLCcmIzIyMjtdZzQKRycsJyYjMjIyO11nVXAnLCcmIzIyMjtdCnFOcEonLCcmIzIyMjtdZ3FdCndxRycsJyYjMjIyO11ncV0Kd3FHcERaNFV2RCcsJyYjMjIyO11nVUpnRHFddkonLCcmIzIyMjtdaFVacXBvNF1nRHFddkonLCcmIzIyMjtdSjAKcG9KaCcsJyYjMjIyO11KXWhKaCcsJyYjMjIyO113NHFoSmhocXBxJywnJiMyMjI7XXc0cWhKaDBKcHFocXBxJywnJiMyMjI7XXc0cWhOcHFacCcsJyYjMjIyO10KcVVOSicsJyYjMjIyO10KWjR2WkpOTicsCScmIzIyMjtdWnFwSmdEcV12SicsJyYjMjIyO11OSkpCSmgnLCcmIzIyMjtdTkpKQm9ddicsJyYjMjIyO11OcHF3d0poJywnJiMyMjI7XU5VTgpKXWgnLCcmIzIyMjtdcG8wSlUKaHFwSicsJyYjMjIyO11hNHdVMEpnRHFddkonLCcmIzIyMjtdZnFvcG9ddicsJyYjMjIyO11wNHZ2d0onKTtlCQllCQkkbW93Smc0XXBKXXBOZExkClpKdl9aSgp3cWdKKGQkbW9daCxkJFpKCndxZ0osZCRtb3dKZzRdcEpdcE5kKTtlCQkkbW93Smc0XXBKXXBOZExkClpKdl9aSgp3cWdKKGQiIyBvbVpxMEojbyIsZCImd3A7b21acTBKIixkJG1vd0pnNF1wSl1wTmQpO2UJCSRtb3dKZzRdcEpdcE5kTGQKWkp2X1pKCndxZ0ooZCIjIE5nWm8KcCNvIixkIiZ3cDtOZ1pvCnAiLGQkbW93Smc0XXBKXXBOZCk7ZQkJJG1vd0pnNF1wSl1wTmRMZE5wWl9aSgp3cWdKKGQiID8iLGQiJndwOz8iLGQkbW93Smc0XXBKXXBOZCk7ZQkJJG1vd0pnNF1wSl1wTmRMZE5wWl9aSgp3cWdKKGQiP2wiLGQiPyZ2cDsiLGQkbW93Smc0XXBKXXBOZCk7ZQkJJG1vd0pnNF1wSl1wTmRMZE5wWl9aSgp3cWdKKGQiJCIsZCImI0h4LjsiLGQkbW93Smc0XXBKXXBOZCk7ZQllCWRkZGRtZlpvcEooJG1vd0pEcV1od0osZCRtb3dKZzRdcEpdcE4pO2UJZGRkZG1ndzROSigkbW93SkRxXWh3Sik7ZQl1ZWUJJGptb0p3aE5kTGQKWjRtb3dKdzRxaCgpO2VlCSRwSjAKX3FaWnFHZExkcVpacUcoKTtlZQltNFpKcWdEZChkJF9GczNyfSd3b05wJ09kcU5kJGFxd1VKZClkMWVlCQkkb2hkTGRvXXBhcXcoJGFxd1VKfSdvaCdPKTtlCQkkcEowCl9xWlpxR31PZExkJGptb0p3aE59JG9oTzsJCWVlCXVlZQkkam1vSndoTmRMZCRwSjAKX3FaWnFHO2UJClo0bW93Sk5xYUooJGptb0p3aE4pO2VlCSRbVW1tSlpkTGQnNEInO2V1ZWVKZ0Q0ZCRbVW1tSlo7ZWU/bA==';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdVOUhZOHlmd0x9dlpSXUlWckFGYWouNURYZDc0bkNsRU54a0J7cC8yUVdQYjNxPD5lR2cgUzFUPTZ6dGlbCkswb3VPaHNNSmNtJywndUUwOEZJd2w9W2dyWG4yOVRBUHZ4NkdoWSA1b1ZaPktzM05ranQuMVdML1VTYVJDCnljPE17RDdKQnFRYnA0bWl9XWRPSGV6ZicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

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

Stats

MD5 24a504c9103819234e1a50d63843a151
Eval Count 2
Decode Time 166 ms