////////////////////
///
///
/////add.php////////
<?php require ( "umalik5_a1_lib.php" ) ; ?>
<?php
top_header( ) ;
form( ) ;
valdator( ) ;
bottom( ) ;
} else {
$vacant = valid( ) ;
dbs( ) ;
header ( 'Location: umalik5_a1_view.php' ) ; } else {
top_header( ) ;
form( ) ;
valdator( ) ;
bottom( ) ;
}
?>
////////////////////////////////////////
//
//
//
///lib.php///////////////////////////////
<?php function top_header( ) { ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://w...content-available-to-author-only...3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://w...content-available-to-author-only...3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Inventory Management (Assign1)</title>
</head>
<body>
<?php } ?>
<?php
function product( ) {
echo '<table cellspace="4">
<tr>
<td><a href="umalik5_a1_add.php">enter products </a></td>
<td><a href="umalik5_a1_lib.php">products on sale</a></td>
<td><a href="umalik5_a1_lib.php">discontinued products</a></td>
<td><a href="umalik5_a1_view.php">view products</a></td>
<td>Search description<input type="text" name="search"/></td>
</tr>
</table>' ;
} ?>
<?php
function form( ) {
product( ) ;
?>
<form action ="<?php echo $_SERVER [ PHP_SELF] ?> " method="post">
<table>
<tr>
<td align='right'>Item:</td>
<td><input type="text" name="name" value="<?php echo $_POST [ name] ; ?> "/></td>
</tr>
<tr>
<td align='right'>Company:</td>
<td><input type="text" name="manufac" value="<?php echo $_POST [ manufac] ; ?> " /></td>
</tr>
<tr>
<td align='right'>Model Code:</td>
<td><input type="text" name="model" value="<?php echo $_POST [ model] ; ?> "/></td>
</tr>
<tr>
<td align='right'>Description:</td>
<td><input type="text" name="descrip" value="<?php echo $_POST [ descrip] ; ?> "/> </td>
</tr>
<tr>
<td align='right'>In Stock:</td>
<td><input type="text" name="onhand" value="<?php echo $_POST [ onhand] ; ?> "/> </td>
</tr>
<tr>
<td align='right'>Reorder Level:</td>
<td><input type="text" name="reorder" value="<?php echo $_POST [ reorder] ; ?> "/></td>
</tr>
<tr>
<td align='right'>Cost:</td>
<td><input type="text" name="cost" value="<?php echo $_POST [ cost] ; ?> "/></td>
</tr>
<tr>
<td align='right'>Price:</td>
<td><input type="text" name="price" value="<?php echo $_POST [ price] ; ?> "/></td>
</tr>
<tr>
<td align='right'>On sale ? </td>
<td><input type="checkbox" name="sale" value="y"<?php if ( $_POST [ sale] == 'y' ) echo 'checked="checked"' ; ?> /> </td>
</tr>
<tr>
<td align='right'>Discontinued ? </td>
<td><input type="checkbox" name="discont" value="y" <?php if ( $_POST [ discont] == 'y' ) echo 'checked="checked"' ; ?> /> </td>
</tr>
</table>
<input type="submit" value="submit"/>
</form>
<?php } ?>
<?php
function valid ( ) {
$vacant = array ( ) ; //create empty array array_push ( $vacant , "The Item name is invalid, will only accept letters and spaces only<br />" ) ; echo $vacant [ 0 ] ;
}
if ( ! preg_match ( "/^[-a-zA-Z ]+$/" , $_POST [ manufac
] ) ) { array_push ( $vacant , "The Company Name is invalid, will only accept letters and/or dashes and/or spaces only<br />" ) ; echo $vacant [ 1 ] ;
}
if ( ! preg_match ( "/^[-a-zA-Z0-9 ]+$/" , $_POST [ model
] ) ) { array_push ( $vacant , "The Model code is invalid, will only accept letters, dashes, digits and spaces only<br />" ) ; echo $vacant [ 2 ] ;
}
if ( ! preg_match ( "/^[a-zA-Z0-9,. ]+$/" , $_POST [ descrip
] ) ) { array_push ( $vacant , "The Description is invalid, will only accept letters, digits, periods, commas, and spaces only<br />" ) ; echo $vacant [ 3 ] ;
}
array_push ( $vacant , "The In Stock field is invalid, will only accept digits<br />" ) ; echo $vacant [ 4 ] ;
}
array_push ( $vacant , "The Reorder Level field is invalid, will only accept digits<br />" ) ; echo $vacant [ 5 ] ;
}
if ( ! preg_match ( "/^[0-9]+\.[0-9]{2}$/" , $_POST [ cost
] ) ) { array_push ( $vacant , "The Cost is invalid, will only accept digit(s) followed by a decimal ending with two digits ex: 5.99 or 650.54<br />" ) ; echo $vacant [ 6 ] ;
}
if ( ! preg_match ( "/^[0-9]+\.[0-9]{2}$/" , $_POST [ price
] ) ) { array_push ( $vacant , "The Price is invalid, will only accept digit(s) followed by a decimal ending with two digits ex: 6.00 or 1250.66<br />" ) ; echo $vacant [ 7 ] ;
}
?>
<?php
return $vacant ;
}
?>
<?php
function bottom( ) {
?>
</body>
</html>
<?php
}
?>
<?php function connect( ) {
}
?>
<?php
function dbs( ) {
?>
<?php
connect( ) ;
$insert = "insert into inventory values('','$_POST[name] ','$_POST[manufac] ','$_POST[model] ','$_POST[descrip] ','$_POST[onhand] ','$_POST[reorder] ','$_POST[cost] ','$_POST[price] ','$_POST[sale] ','$_POST[discont] ')" ;
?>
<?php
}
?>
<?php
function view( ) {
connect( ) ;
$select = 'select * from inventory' ;
?>
<table border='1'>
<tr>
<th>ID</th>
<th>Item</th>
<th>Company</th>
<th>Model Code:</th>
<th>Description</th>
<th>In Stock</th>
<th>Reorder Level</th>
<th>Cost</th>
<th>Price</th>
<th>On Sale</th>
<th>Discontinued</th>
</tr>
<?php
{
echo "<tr>
<td>$s[id] </td>
<td>$s[name] </td>
<td>$s[manufac] </td>
<td>$s[model] </td>
<td>$s[descrip] </td>
<td>$s[onhand] </td>
<td>$s[reorder] </td>
<td>$s[cost] </td>
<td>$s[price] </td>
<td>$s[sale] </td>
<td>$s[discont] </td>
</tr>" ;
}
echo "</table>" ;
?>
<?php
}
?>
<?php
function valdator( ) { //this function holds the validators
?>
<p>
<a href="http://v...content-available-to-author-only...3.org/check?uri=referer">
<img src="http://w...content-available-to-author-only...3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
</a>
<a href="http://j...content-available-to-author-only...3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="http://j...content-available-to-author-only...3.org/css-validator/images/vcss-blue"
alt="Valid CSS!" />
</a>
</p>
<?php } ?>
/////////////////////////////////////////////////////////////
///
///
///
////view.php////////////////////////////////////////////////
<?php require ( "umalik5_a1_lib.php" ) ; ?>
<?php top_header( ) ; ?>
<?php product( ) ; ?>
<?php view( ) ; ?>
<?php valdator( ) ; ?>
<?php bottom( ) ; ?>
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLy8vCi8vLwovLy8vL2FkZC5waHAvLy8vLy8vLwo8P3BocCByZXF1aXJlICgidW1hbGlrNV9hMV9saWIucGhwIik7ID8+Cjw/cGhwCmlmIChlbXB0eSgkX1BPU1QpKXsJIAkJCQp0b3BfaGVhZGVyKCk7CmZvcm0oKTsKdmFsZGF0b3IoKTsKYm90dG9tKCk7Cn1lbHNlewokdmFjYW50ID0gdmFsaWQoKTsKfWlmKGVtcHR5KCR2YWNhbnQpKXsKZGJzKCk7CmhlYWRlcignTG9jYXRpb246IHVtYWxpazVfYTFfdmlldy5waHAnKTsKfWVsc2V7CnRvcF9oZWFkZXIoKTsKZm9ybSgpOwp2YWxkYXRvcigpOwpib3R0b20oKTsKfQo/PgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vCi8vCi8vCi8vL2xpYi5waHAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCjw/cGhwIGZ1bmN0aW9uIHRvcF9oZWFkZXIoKSB7ID8+Cjw/cGhwIGVjaG8gJzw/eG1sIHZlcnNpb249IjEuMCIgIGVuY29kaW5nPSJVVEYtOCI/PicgPz4KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4tVVMiIGxhbmc9ImVuLVVTIj4KICAgPGhlYWQ+CgkJPHRpdGxlPkludmVudG9yeSBNYW5hZ2VtZW50IChBc3NpZ24xKTwvdGl0bGU+CiAgIDwvaGVhZD4KICAgPGJvZHk+Cjw/cGhwIH0gPz4KPD9waHAKZnVuY3Rpb24gcHJvZHVjdCgpewplY2hvICc8dGFibGUgY2VsbHNwYWNlPSI0Ij4KPHRyPgo8dGQ+PGEgaHJlZj0idW1hbGlrNV9hMV9hZGQucGhwIj5lbnRlciBwcm9kdWN0cyA8L2E+PC90ZD4KPHRkPjxhIGhyZWY9InVtYWxpazVfYTFfbGliLnBocCI+cHJvZHVjdHMgb24gc2FsZTwvYT48L3RkPgo8dGQ+PGEgaHJlZj0idW1hbGlrNV9hMV9saWIucGhwIj5kaXNjb250aW51ZWQgcHJvZHVjdHM8L2E+PC90ZD4KPHRkPjxhIGhyZWY9InVtYWxpazVfYTFfdmlldy5waHAiPnZpZXcgcHJvZHVjdHM8L2E+PC90ZD4KPHRkPlNlYXJjaCBkZXNjcmlwdGlvbjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZWFyY2giLz48L3RkPgo8L3RyPgo8L3RhYmxlPic7Cn0/Pgo8P3BocApmdW5jdGlvbiBmb3JtKCkgeyAKcHJvZHVjdCgpOwo/Pgo8Zm9ybSBhY3Rpb24gPSI8P3BocCBlY2hvICRfU0VSVkVSW1BIUF9TRUxGXSA/PiIgbWV0aG9kPSJwb3N0Ij4KPHRhYmxlPgo8dHI+Cjx0ZCBhbGlnbj0ncmlnaHQnPkl0ZW06PC90ZD4KPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuYW1lIiB2YWx1ZT0iPD9waHAgZWNobyAkX1BPU1RbbmFtZV07ID8+Ii8+PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249J3JpZ2h0Jz5Db21wYW55OjwvdGQ+Cjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWFudWZhYyIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9QT1NUW21hbnVmYWNdIDs/PiIgLz48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0ncmlnaHQnPk1vZGVsIENvZGU6PC90ZD4KPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtb2RlbCIgdmFsdWU9Ijw/cGhwIGVjaG8gJF9QT1NUW21vZGVsXSA7Pz4iLz48L3RkPgo8L3RyPgoKPHRyPgo8dGQgYWxpZ249J3JpZ2h0Jz5EZXNjcmlwdGlvbjo8L3RkPgo8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc2NyaXAiIHZhbHVlPSI8P3BocCBlY2hvICRfUE9TVFtkZXNjcmlwXSA7Pz4iLz4gPC90ZD4KPC90cj4KCjx0cj4KPHRkIGFsaWduPSdyaWdodCc+SW4gU3RvY2s6PC90ZD4KPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJvbmhhbmQiIHZhbHVlPSI8P3BocCBlY2hvICRfUE9TVFtvbmhhbmRdIDs/PiIvPiA8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0ncmlnaHQnPlJlb3JkZXIgTGV2ZWw6PC90ZD4KPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZW9yZGVyIiB2YWx1ZT0iPD9waHAgZWNobyAkX1BPU1RbcmVvcmRlcl0gOz8+Ii8+PC90ZD4KPC90cj4KCjx0cj4KPHRkIGFsaWduPSdyaWdodCc+Q29zdDo8L3RkPgo8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvc3QiIHZhbHVlPSI8P3BocCBlY2hvICRfUE9TVFtjb3N0XSA7Pz4iLz48L3RkPgo8L3RyPgoKPHRyPgo8dGQgYWxpZ249J3JpZ2h0Jz5QcmljZTo8L3RkPgo8dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InByaWNlIiB2YWx1ZT0iPD9waHAgZWNobyAkX1BPU1RbcHJpY2VdIDs/PiIvPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWduPSdyaWdodCc+T24gc2FsZSA/IDwvdGQ+Cjx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNhbGUiIHZhbHVlPSJ5Ijw/cGhwIGlmICgkX1BPU1Rbc2FsZV0gPT0gJ3knKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIicgOyA/Pi8+IDwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWduPSdyaWdodCc+RGlzY29udGludWVkID8gPC90ZD4KPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZGlzY29udCIgdmFsdWU9InkiIDw/cGhwIGlmICgkX1BPU1RbZGlzY29udF0gPT0gJ3knKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIicgOyA/Pi8+IDwvdGQ+CjwvdHI+CjwvdGFibGU+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJzdWJtaXQiLz4KPC9mb3JtPgo8P3BocCB9ID8+Cjw/cGhwCmZ1bmN0aW9uIHZhbGlkICgpewoKJHZhY2FudCA9IGFycmF5KCk7CQkJCQkJCS8vY3JlYXRlIGVtcHR5IGFycmF5CmlmICghcHJlZ19tYXRjaCgiL15bYS16QS1aIF0rJC8iLCRfUE9TVFtuYW1lXSkpewphcnJheV9wdXNoKCR2YWNhbnQsIlRoZSBJdGVtIG5hbWUgaXMgaW52YWxpZCwgd2lsbCBvbmx5IGFjY2VwdCBsZXR0ZXJzIGFuZCBzcGFjZXMgb25seTxiciAvPiIpOwplY2hvICR2YWNhbnRbMF07Cn0KaWYgKCFwcmVnX21hdGNoKCIvXlstYS16QS1aIF0rJC8iLCRfUE9TVFttYW51ZmFjXSkpewphcnJheV9wdXNoKCR2YWNhbnQsIlRoZSBDb21wYW55IE5hbWUgaXMgaW52YWxpZCwgd2lsbCBvbmx5IGFjY2VwdCBsZXR0ZXJzIGFuZC9vciBkYXNoZXMgYW5kL29yIHNwYWNlcyBvbmx5PGJyIC8+Iik7CmVjaG8gJHZhY2FudFsxXTsKfQppZiAoIXByZWdfbWF0Y2goIi9eWy1hLXpBLVowLTkgXSskLyIsJF9QT1NUW21vZGVsXSkpewphcnJheV9wdXNoKCR2YWNhbnQsIlRoZSBNb2RlbCBjb2RlIGlzIGludmFsaWQsIHdpbGwgb25seSBhY2NlcHQgbGV0dGVycywgZGFzaGVzLCBkaWdpdHMgYW5kIHNwYWNlcyBvbmx5PGJyIC8+Iik7CmVjaG8gJHZhY2FudFsyXTsKfQppZiAoIXByZWdfbWF0Y2goIi9eW2EtekEtWjAtOSwuIF0rJC8iLCRfUE9TVFtkZXNjcmlwXSkpewphcnJheV9wdXNoKCR2YWNhbnQsIlRoZSBEZXNjcmlwdGlvbiBpcyBpbnZhbGlkLCB3aWxsIG9ubHkgYWNjZXB0IGxldHRlcnMsIGRpZ2l0cywgcGVyaW9kcywgY29tbWFzLCBhbmQgc3BhY2VzIG9ubHk8YnIgLz4iKTsKZWNobyAkdmFjYW50WzNdOwp9CmlmICghcHJlZ19tYXRjaCgiL15bMC05XSskLyIsJF9QT1NUW29uaGFuZF0pKXsKYXJyYXlfcHVzaCgkdmFjYW50LCJUaGUgSW4gU3RvY2sgZmllbGQgaXMgaW52YWxpZCwgd2lsbCBvbmx5IGFjY2VwdCBkaWdpdHM8YnIgLz4iKTsKZWNobyAkdmFjYW50WzRdOwp9CmlmICghcHJlZ19tYXRjaCgiL15bMC05XSskLyIsJF9QT1NUW3Jlb3JkZXJdKSl7CmFycmF5X3B1c2goJHZhY2FudCwiVGhlIFJlb3JkZXIgTGV2ZWwgZmllbGQgaXMgaW52YWxpZCwgd2lsbCBvbmx5IGFjY2VwdCBkaWdpdHM8YnIgLz4iKTsKZWNobyAkdmFjYW50WzVdOwp9CmlmICghcHJlZ19tYXRjaCgiL15bMC05XStcLlswLTldezJ9JC8iLCRfUE9TVFtjb3N0XSkpewphcnJheV9wdXNoKCR2YWNhbnQsIlRoZSBDb3N0IGlzIGludmFsaWQsIHdpbGwgb25seSBhY2NlcHQgZGlnaXQocykgZm9sbG93ZWQgYnkgYSBkZWNpbWFsIGVuZGluZyB3aXRoIHR3byBkaWdpdHMgZXg6IDUuOTkgb3IgNjUwLjU0PGJyIC8+Iik7CmVjaG8gJHZhY2FudFs2XTsKfQppZiAoIXByZWdfbWF0Y2goIi9eWzAtOV0rXC5bMC05XXsyfSQvIiwkX1BPU1RbcHJpY2VdKSl7CmFycmF5X3B1c2goJHZhY2FudCwiVGhlIFByaWNlIGlzIGludmFsaWQsIHdpbGwgb25seSBhY2NlcHQgZGlnaXQocykgZm9sbG93ZWQgYnkgYSBkZWNpbWFsIGVuZGluZyB3aXRoIHR3byBkaWdpdHMgZXg6IDYuMDAgb3IgMTI1MC42NjxiciAvPiIpOwplY2hvICR2YWNhbnRbN107Cn0KCj8+Cjw/cGhwCgpyZXR1cm4gJHZhY2FudDsKfQo/Pgo8P3BocApmdW5jdGlvbiBib3R0b20oKXsKPz4KPC9ib2R5Pgo8L2h0bWw+Cjw/cGhwCn0KPz4KPD9waHAgZnVuY3Rpb24gY29ubmVjdCgpewokY29ubmVjdD1teXNxbF9jb25uZWN0KCJkYi1teXNxbC56ZW5pdCIsJG1lLCRzaGgpIG9yIGRpZSgiIDxiciAvPmNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIi5teXNxbF9lcnJvcigpKTsKbXlzcWxfc2VsZWN0X2RiKCRtZSlvciBkaWUoJ2NvdWxkIG5vdCBmaW5kIGRhdGFiYXNlJy5teXNxbF9lcnJvcigpKTsKfQo/Pgo8P3BocCAKZnVuY3Rpb24gZGJzKCl7Cj8+Cjw/cGhwCmNvbm5lY3QoKTsKJGluc2VydD0iaW5zZXJ0IGludG8gaW52ZW50b3J5IHZhbHVlcygnJywnJF9QT1NUW25hbWVdJywnJF9QT1NUW21hbnVmYWNdJywnJF9QT1NUW21vZGVsXScsJyRfUE9TVFtkZXNjcmlwXScsJyRfUE9TVFtvbmhhbmRdJywnJF9QT1NUW3Jlb3JkZXJdJywnJF9QT1NUW2Nvc3RdJywnJF9QT1NUW3ByaWNlXScsJyRfUE9TVFtzYWxlXScsJyRfUE9TVFtkaXNjb250XScpIjsKbXlzcWxfcXVlcnkoJGluc2VydCkgb3IgZGllKCJjb3VsZCBub3QgZXhlY3V0ZSBxdWVyeTxiciAvPiIubXlzcWxfZXJyb3IoKSk7Cj8+Cjw/cGhwCn0KPz4KPD9waHAKZnVuY3Rpb24gdmlldygpewpjb25uZWN0KCk7CiRzZWxlY3Q9J3NlbGVjdCAqIGZyb20gaW52ZW50b3J5JzsKJGFkbWl0PW15c3FsX3F1ZXJ5KCRzZWxlY3QpIG9yIGRpZSgiPGJyIC8+IGNvdWxkIG5vdCBjb21wbGV0ZSBxdWVyeSByZXF1ZXN0IDxiciAvPiIubXlzcWxfZXJyb3IoKSk7Cj8+Cjx0YWJsZSBib3JkZXI9JzEnPgo8dHI+Cjx0aD5JRDwvdGg+Cjx0aD5JdGVtPC90aD4KPHRoPkNvbXBhbnk8L3RoPgo8dGg+TW9kZWwgQ29kZTo8L3RoPgo8dGg+RGVzY3JpcHRpb248L3RoPgo8dGg+SW4gU3RvY2s8L3RoPgo8dGg+UmVvcmRlciBMZXZlbDwvdGg+Cjx0aD5Db3N0PC90aD4KPHRoPlByaWNlPC90aD4KPHRoPk9uIFNhbGU8L3RoPgo8dGg+RGlzY29udGludWVkPC90aD4KPC90cj4KCjw/cGhwCndoaWxlKCRzID0gbXlzcWxfZmV0Y2hfYXNzb2MoJGFkbWl0KSkKewplY2hvIjx0cj4KPHRkPiRzW2lkXTwvdGQ+Cjx0ZD4kc1tuYW1lXTwvdGQ+Cjx0ZD4kc1ttYW51ZmFjXTwvdGQ+Cjx0ZD4kc1ttb2RlbF08L3RkPgo8dGQ+JHNbZGVzY3JpcF08L3RkPgo8dGQ+JHNbb25oYW5kXTwvdGQ+Cjx0ZD4kc1tyZW9yZGVyXTwvdGQ+Cjx0ZD4kc1tjb3N0XTwvdGQ+Cjx0ZD4kc1twcmljZV08L3RkPgo8dGQ+JHNbc2FsZV08L3RkPgo8dGQ+JHNbZGlzY29udF08L3RkPgo8L3RyPiI7Cn0KZWNobyI8L3RhYmxlPiI7Cj8+Cjw/cGhwCn0KPz4KPD9waHAKZnVuY3Rpb24gdmFsZGF0b3IoKXsvL3RoaXMgZnVuY3Rpb24gaG9sZHMgdGhlIHZhbGlkYXRvcnMKPz4KPHA+CjxhIGhyZWY9Imh0dHA6Ly92Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLm9yZy9jaGVjaz91cmk9cmVmZXJlciI+CjxpbWcgc3JjPSJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMy5vcmcvSWNvbnMvdmFsaWQteGh0bWwxMCIKYWx0PSJWYWxpZCBYSFRNTCAxLjAgU3RyaWN0IiBoZWlnaHQ9IjMxIiB3aWR0aD0iODgiIC8+CjwvYT4KPGEgaHJlZj0iaHR0cDovL2ouLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMub3JnL2Nzcy12YWxpZGF0b3IvY2hlY2svcmVmZXJlciI+CjxpbWcgc3R5bGU9ImJvcmRlcjowO3dpZHRoOjg4cHg7aGVpZ2h0OjMxcHgiCnNyYz0iaHR0cDovL2ouLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMub3JnL2Nzcy12YWxpZGF0b3IvaW1hZ2VzL3Zjc3MtYmx1ZSIKYWx0PSJWYWxpZCBDU1MhIiAvPgo8L2E+CjwvcD4KPD9waHAgfSA/PgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vLwovLy8KLy8vCi8vLy92aWV3LnBocC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo8P3BocCByZXF1aXJlICgidW1hbGlrNV9hMV9saWIucGhwIik7ID8+Cjw/cGhwIHRvcF9oZWFkZXIoKTs/Pgo8P3BocCBwcm9kdWN0KCk7Pz4KPD9waHAgdmlldygpOz8+Cjw/cGhwIHZhbGRhdG9yKCk7Pz4KPD9waHAgYm90dG9tKCk7Pz4=