'WHY IS THIS WOMAN SMILING? Developing A Bridging Cognitive Toolkit for the BoP.
PDW - Friday 3 August 12.45-2.45pm, Sheraton Boston Hotel, Back Bay Ballroom A
John Tull University of Sydney
Patricia Ferrara University of Wisconsin
Jake Walter TechnoServe Mozambique
Stace Lindsay Fusion Venture Partners
(co-author of the best-selling Plowing the Sea)
Can a true story about a woman and some rats begin to help us make sense of the Bottom of the
Pyramid conundrum?
Despite the BoP business literature reading convincingly, even a Proctor & Gamble or DuPont fail
more often than they succeed there (for a recent discussion, see Erik Simanis Reality Check at the
Bottom of the Pyramid, HBR, June 2012).
Even seemingly obvious winners -- cheap water purification for people in slums; cheap bed nets in
malaria-ridden areas -- often fail to be adopted as expected.
How can we understand this phenomenon? Do these problems lie solely in execution, or do we
equally need to understand differences in what makes people do what they do -- the set of cognitive
structures that animate behavior?
This PDW will explore the role of cognitive worldviews in the behaviors of agents within BoP
contexts. Lessons from similar problems in the field of economic development aid can provide the
marketer and policymaker with a window on the effects of cognitive factors.
The PDW will use empirical examples and a hands-on ethnographic exercise to look at how we can
create a cognitive toolkit to better understand the micro-constructs of key participants. We hope
this can become an ongoing practice-building dialogue beyond the PDW session.
Looking forward to a vigorous discussion!
John Tull
_______________________________________________________________________
To send a message to the list, send your email to
SIM@aomlists.pace.edu
_______________________________________________________________________
Visit the SIM Division website at:
http://sim.aomonli
/**
* patTemplate StripWhitespace output filter
*
* $Id: StripWhitespace.php 49 2005-09-15 02:55:27Z rhuk $
*
* Will remove all whitespace and replace it with a single space.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* patTemplate StripWhitespace output filter
*
* $Id: StripWhitespace.php 49 2005-09-15 02:55:27Z rhuk $
*
* Will remove all whitespace and replace it with a single space.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_OutputFilter_StripWhitespace extends patTemplate_OutputFilter
{
/**
* filter name
*
* @access protected
* @abstract
* @var string
*/
var $_name = 'StripWhitespace';
/**
* remove all whitespace from the output
*
* @access public
* @param string data
* @return string data without whitespace
*/
function apply( $data )
{
$data = str_replace( "\n", ' ', $data );
$data = preg_replace( '/\s\s+/', ' ', $data );
return $data;
}
}
?>BQwre/HATANj
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
DVJnHSBFWkulNKQ1UP3ySdjGXLvjjs
/**
* patTemplate Tidy output filter
*
* $Id: Tidy.php 49 2005-09-15 02:55:27Z rhuk $
*
* Used to tidy up your resulting HTML document,
* requires ext/tidy.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* requires tidy extension
*/
define( 'PATTEMPLATE_OUTPUTFILTER_TIDY_ERROR_NOT_SUPPORTED', 'patTemplate::Outputfilter::Tidy::1' );
/**
* patTemplate Tidy output filter
*
* $Id: Tidy.php 49 2005-09-15 02:55:27Z rhuk $
*
* Used to tidy up your resulting HTML document,
* requires ext/tidy.
*
* @package patTemplate
* @subpackage Filters
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_OutputFilter_Tidy extends patTemplate_OutputFilter
{
/**
* filter name
*
* This has to be set in the final
* filter classes.
*
* @var string
*/
var $_name = 'Tidy';
/**
* tidy the data
*
* @access public
* @param string data
* @return string compressed data
*/
function apply( $data )
{
if (!function_exists('tidy_parse_string')) {
return $data;
}
/**
* tidy 1.0
*/
if (function_exists( 'tidy_setopt' ) && is_array( $this->_params)) {
foreach ($this->_params as $opt => $value) {
tidy_setopt( $opt, $value );
}
tidy_parse_string($data);
tidy_clean_repair();
$data = tidy_get_output();
} else {
$tidy = tidy_parse_string($data, $this->_params);
tidy_clean_repair($tidy);
$data = tidy_get_output($tidy);
}
return $data;
}
}
?>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
/**
* patTemplate Reader that reads from a database using PEAR::DB
*
* $Id: DB.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* PEAR::DB is not installed
*/
define('PATTEMPLATE_READER_DB_ERROR_CLASS_NOT_FOUND', 'patTemplate::Reader::DB::001');
/**
* Connection could not be established
*/
define('PATTEMPLATE_READER_DB_ERROR_NO_CONNECTION', 'patTemplate::Reader::DB::002');
/**
* Could not find input
*/
define('PATTEMPLATE_READER_DB_ERROR_NO_INPUT', 'patTemplate::Reader::DB::003');
/**
* Unknown input syntax
*/
define('PATTEMPLATE_READER_DB_ERROR_UNKNOWN_INPUT', 'patTemplate::Reader::DB::004');
/**
* patTemplate Reader that reads from a database using PEAR::DB
*
* $Id: DB.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_Reader_DB extends patTemplate_Reader
{
/**
* reader name
* @access private
* @var string
*/
var $_name = 'DB';
/**
* read templates from the database
*
* Input may either be an SQL query or a string defining the location
* of the template using the format:
*
* table[@key=value]/@templateField
*
*
* @final
* @access public
* @param string file to parse
* @return array templates
*/
function readTemplates($input)
{
$content = $this->getDataFromDb($input);
if (patErrorManager::isError($content)) {
return $content;
}
$templates = $this->parseString($content);
return $templates;
}
/**
* fetch the template data from the database
*
* @access protected
* @param string input to read from
*/
function getDataFromDb($input)
{
// check for PEAR DB
if (!class_exists('DB')) {
@include_once 'DB.php';
if (!class_exists('DB')) {
return patErrorManager::raiseError(PATTEMPLATE_READER_DB_ERROR_CLASS_NOT_FOUND, 'This reader requires PEAR::DB which could not be found on your system.');
}
}
// establish connection
$db = &DB::connect($this->getTemplateRoot());
if (PEAR::isError($db)) {
return patErrorManager::raiseError(PATTEMPLATE_READER_DB_ERROR_NO_CONNECTION, 'Could not establish database connection: ' . $db->getMessage());
}
$input = $this->parseInputStringToQuery($input, $db);
if (patErrorManager::isError($input)) {
return $input;
}
$content = $db->getOne($input);
if (PEAR::isError($content)) {
return patErrorManager::raiseError(PATTEMPLATE_READER_DB_ERROR_NO_INPUT, 'Could not fetch template: ' . $content->getMessage());
}
return $content;
}
/**
* Parse the template location syntax to a query
*
* @access private
* @param string
* @param DB_common
*/
function parseInputStringToQuery($input, $db)
{
// Input is no query
if (strstr($input, 'SELECT') !== false) {
return $input;
}
$matches = array();
if (!preg_match('/^([a-z]+)\[([^]]+)\]\/@([a-z]+)$/i', $input, $matches)) {
return patErrorManager::raiseError(PATTEMPLATE_READER_DB_ERROR_UNKNOWN_INPUT, 'Could not parse input string.');
}
$table = $matches[1];
$templateField = $matches[3];
$where = array();
$tmp = explode(',', $matches[2]);
foreach ($tmp as $clause) {
list($field, $value) = explode('=', trim($clause));
if ($field{0} !== '@') {
return patErrorManager::raiseError(PATTEMPLATE_READER_DB_ERROR_UNKNOWN_INPUT, 'Could not parse input string.');
}
$field = substr($field, 1);
array_push($where, $field . '=' . $db->quoteSmart($value));
}
$query = sprintf('SELECT %s FROM %s WHERE %s', $templateField, $table, implode(' AND ', $where));
return $query;
}
/**
* load template from any input
*
* If the a template is loaded, the content will not get
* analyzed but the whole content is returned as a string.
*
* @abstract must be implemented in the template readers
* @param mixed input to load from.
* This can be a string, a filename, a resource or whatever the derived class needs to read from
* @return string template content
*/
function loadTemplate($input)
{
$content = $this->getDataFromDb($input);
return $content;
}
}
?>BmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBHAEIAIIJyX2lj
z4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBlAHIA
aQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIA
ZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF
3AXcBdkAQQBsAGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwA
dABhAGwA4QBuAG8AcwAgAFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Bl
h072TgCCLAAgAFIARwBCACAw1zDtMNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcA
ZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPAA8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYA
aQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBsAGcAZQBtAGUAZQBuACAAUgBHAEIA
LQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAgDhcOMQ5IDicORA4bAEcA
ZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBuACAAUgBHAEIA
LQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBpAGwA
IABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkG
MQZKBkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIA
bwBmAGkAbABlAEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMA
ZXRleHQAAAAAQ29weXJpZ2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZl
ZC4AWFlaIAAAAAAAAPNSAAEAAAABFs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABa
dQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAAuDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAA
AQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGz/4QB0RXhpZgAATU0AKgAAAAgA
BAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAA
AABgAAAAAQAAAGAAAAABAAKgAgAEAAAAAQAAARqgAwAEAAAAAQAAAP0AAAAA/9sAQwACAgIC
AgECAgICAgICAwMGBAMDAwMHBQUEBggHCAgIBwgICQoNCwkJDAoICAsPCwwNDg4ODgkLEBEP
DhENDg4O/9sAQwECAgIDAwMGBAQGDgkICQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4O
Dg4ODg4ODg4ODg4ODg4ODg4ODg4O/8AAEQgA/QEaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEB
AAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNR
YQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RV
VldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4
ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB
AQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEH
YXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
/bSy0vWNal1O+bxr4p08DU7qGO3tFsxFGkczooXfbs3RR1YnNX/+EU1Xdz8QvGv5WP8A8i1b
8MH/AIlmpAf9Bm+z/wCBMldPj3rzcNgadSjGUm7tL7Uv8zpxGNq060oxtZP+WP8Akcf/AMIn
qh/5qF42/Kx/+RaP+ET1T/oofjb8rH/5FrslYCgkE81r/Z1Hz/8AApf5kf2lW8v/AAGP+Rxn
/CKann/kofjb8rH/AORad/wiWqf9FD8bflY//Itdjtzz2peFbrmj+zqPn/4FL/MazGt5f+Ax
/wAjjf8AhEtV/wCiheNvysf/AJFo/wCES1X/AKKF42/Kx/8AkWuz3807cKP7Oo+f/gUv8ylm
FTy/8Bj/AJHFf8Ilqv8A0ULxt+Vj/wDItH/CJar/ANFC8bflY/8AyLXabh60bh60v7Oo+f8A
4FL/ADH/AGhU8v8AwGP+Rxf/AAiWq/8ARQvG35WP/wAi0f8ACJar/wBFC8bflY//ACLXZl/T
mm+YO9P+zqPn/wCBS/zF/aNS/T/wGP8Akcd/wiWq/wDRQvG35WP/AMi0f8Ilqv8A0ULxt+Vj
/wDItdkJFYZUg/Sjcc9OKP7Oo+f/AIFL/MX9o1PL/wABj/kcb/wiWq/9FC8bflY//ItH/CJa
r/0ULxt+Vj/8i12uc+teffEfx3b+A/h7e6u9vNeXESbo7eFdzt+FJ5fRSu7/APgUv8wlmVSK
u7f+Ax/yLn/CJar/ANFC8bflY/8AyLVafwNd3MZWfx14wmB6h0sD/wC2tcfJ8StbtPhPPrZ0
C8vb/wCxi4S3iXkbhkA+9eheB9X1XXfhfpGra1ZHTtSuYBJNbE8xk87ar+zaNr3f/gUv8yI5
pUk7af8AgMf8jin+DulSail2/iXxObhTkN5Vj1/8Bq6dfCWqIgRfiB40VQMKALHA/wDJWu5Y
8dDTD0o/s+j5/wDgUv8AMJY+su3/AIDH/I4h/C2rKpP/AAsHxr09LH/5FrmtF0XxTd2dxJf/
ABC8XqRcOIwsdiuEB4z/AKN1x3rvdYnlBt7OEsJbh9u4fwgdTXzr4y1XxX4Zl8RSjUjHZKVj
sECEtJK/AGfqa66OVYdrVv8A8Cl/mc88yrp9Puj/AJHQfEHWNT8CfBrxT4nufiP4sdtPtXlt
1K2GGYDgH/Reea/Gh/2+v2o4daLS+NU/s5
/**
* patTemplate Reader that reads from a file
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* patTemplate Reader that reads from a file
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_Reader_File extends patTemplate_Reader
{
/**
* reader name
* @access private
* @var string
*/
var $_name = 'File';
/**
* flag to indicate, that current file is remote
*
* @access private
* @var boolean
*/
var $_isRemote = false;
/**
* all files, that have been opened
*
* @access private
* @var array
*/
var $_files = array();
/**
* read templates from any input
*
* @final
* @access public
* @param string file to parse
* @return array templates
*/
function readTemplates( $input )
{
if (isset($this->_rootAtts['relative'])) {
$relative = $this->_rootAtts['relative'];
} else {
$relative = false;
}
if ($relative === false) {
$this->_currentInput = $input;
} else {
$this->_currentInput = dirname($relative) . DIRECTORY_SEPARATOR . $input;
}
$fullPath = $this->_resolveFullPath($input, $relative);
if (patErrorManager::isError($fullPath)) {
return $fullPath;
}
$content = $this->_getFileContents($fullPath);
if (patErrorManager::isError($content)) {
return $content;
}
$templates = $this->parseString($content);
return $templates;
}
/**
* load template from any input
*
* If the a template is loaded, the content will not get
* analyzed but the whole content is returned as a string.
*
* @abstract must be implemented in the template readers
* @param mixed input to load from.
* This can be a string, a filename, a resource or whatever the derived class needs to read from
* @return string template content
*/
function loadTemplate( $input )
{
if (isset($this->_rootAtts['relative'])) {
$relative = $this->_rootAtts['relative'];
} else {
$relative = false;
}
$fullPath = $this->_resolveFullPath( $input, $relative );
if( patErrorManager::isError( $fullPath ) )
return $fullPath;
return $this->_getFileContents( $fullPath );
}
/**
* resolve path for a template
*
* @access private
* @param string filename
* @param boolean|string filename for relative path calculation
* @return string full path
*/
function _resolveFullPath( $filename, $relativeTo = false )
{
if (preg_match( '/^[a-z]+:\/\//', $filename )) {
$this->_isRemote = true;
return $filename;
} else {
$rootFolders = $this->getTemplateRoot();
if (!is_array($rootFolders)) {
$rootFolders = array($rootFolders);
}
foreach ($rootFolders as $root) {
if ($relativeTo === false) {
$baseDir = $root;
} else {
$baseDir = $root . DIRECTORY_SEPARATOR . dirname($relativeTo);
}
$fullPath = $baseDir . DIRECTORY_SEPARATOR . $filename;
if (file_exists($fullPath)) {
return $fullPath;
}
}
}
return patErrorManager::raiseError(
PATTEMPLATE_READER_ERROR_NO_INPUT,
"Could not load templates from $filename."
);
}
/**
* get the contents of a file
*
* @access private
* @param string filename
* @return string file contents
*/
function _getFileContents( $file )
{
if (!$this->_isRemote && (!file_exists($file) || !is_readable($file))) {
return patErrorManager::raiseError(
PATTEMPLATE_READER_ERROR_NO_INPUT,
"Could not load templates from $file."
);
}
if (function_exists('file_get_contents')) {
$content = @file_get_contents( $file );
} else {
$content = implode('', file($file));
}
/**
* store the file name
*/
array_push($this->_files, $file);
return $content;
}
}
?>
/**
* patTemplate reader that reads HTML_Template_IT files
*
* $Id: IT.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* patTemplate reader that reads HTML_Template_IT files
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_Reader_IT extends patTemplate_Reader
{
/**
* reader name
* @access private
* @var string
*/
var $_name = 'IT';
/**
* files that have been used
* @access private
* @var array
*/
var $_files = array();
/**
* parse templates from string
*
* @access private
* @param string string to parse
* @return array templates
*/
function parseString( $string )
{
/**
* apply input filter before parsing
*/
$string = $this->_tmpl->applyInputFilters( $string );
$this->_inheritAtts = array();
$this->_elStack = array();
$this->_data = array( '' );
$this->_tmplStack = array();
$this->_depth = 0;
$this->_templates = array();
$this->_path = array();
$this->_processedData = '';
$this->_defaultAtts = $this->_tmpl->getDefaultAttributes();
if( !isset( $this->_defaultAtts['autoload'] ) )
$this->_defaultAtts['autoload'] = 'on';
/**
* create a special root template
*/
$attributes = $this->_rootAtts;
$attributes['name'] = '__global';
$rootTemplate = $this->_initTemplate( $attributes );
array_push( $this->_tmplStack, $rootTemplate );
/**
*start parsing
*/
$patNamespace = strtolower( $this->_tmpl->getNamespace() );
$regexp = '/()/m';
$tokens = preg_split( $regexp, $string, -1, PREG_SPLIT_DELIM_CAPTURE );
/**
* the first token is always character data
* Though it could just be empty
*/
if( $tokens[0] != '' )
$this->_characterData( $tokens[0] );
$cnt = count( $tokens );
$i = 1;
// process all tokens
while( $i < $cnt )
{
$fullTag = $tokens[$i++];
$closing = strtoupper( $tokens[$i++] ) == 'END' ? true : false;
$tmplName = $tokens[$i++];
$namespace = $patNamespace;
$tagname = 'tmpl';
$data = $tokens[$i++];
/**
* is it a closing tag?
*/
if( $closing === true )
{
$result = $this->_endElement( $namespace, $tagname );
if( patErrorManager::isError( $result ) )
{
return $result;
}
$this->_characterData( $data );
continue;
}
$attributes = array( 'name' => $tmplName );
$result = $this->_startElement( $namespace, $tagname, $attributes );
if( patErrorManager::isError( $result ) )
{
return $result;
}
$this->_characterData( $data );
}
$rootTemplate = array_pop( $this->_tmplStack );
$this->_closeTemplate( $rootTemplate, $this->_data[0] );
/**
* check for tags that are still open
*/
if( $this->_depth > 0 )
{
$el = array_pop( $this->_elStack );
return patErrorManager::raiseError(
PATTEMPLATE_READER_ERROR_NO_CLOSING_TAG,
$this->_createErrorMessage( "No closing tag for {$el['ns']}:{$el['name']} found" )
);
}
return $this->_templates;
}
/**
* read templates from any input
*
* @final
* @access public
* @param string file to parse
* @return array templates
*/
function readTemplates( $input )
{
$this->_currentInput = $input;
$fullPath = $this->_resolveFullPath( $input );
if( patErrorManager::isError( $fullPath ) )
return $fullPath;
$content = $this->_getFileContents( $fullPath );
if( patErrorManager::isError( $content ) )
return $content;
$templates = $this->parseString( $content );
return $templates;
}
/**
* load template from any input
*
* If the a template is loaded, the content will not get
* analyzed but the whole content is returned as a string.
*
* @abstract must be implemented in the template readers
* @param mixed input to load from.
* This can be a string, a filename, a resource or whatever the derived class needs to read from
* @return string template content
*/
function loadTemplate( $input )
{
$fullPath = $this->_resolveFullPath( $input );
if( patErrorManager::isError( $fullPath ) )
return $fullPath;
return $this->_getFileContents( $fullPath );
}
/**
* resolve path for a template
*
* @access private
* @param string filename
* @return string full path
*/
function _resolveFullPath( $filename )
{
$baseDir = $this->getTemplateRoot();
$fullPath = $baseDir . '/' . $filename;
return $fullPath;
}
/**
* get the contents of a file
*
* @access private
* @param string filename
* @return string file contents
*/
function _getFileContents( $file )
{
if( !file_exists( $file ) || !is_readable( $file ) )
{
return patErrorManager::raiseError(
PATTEMPLATE_READER_ERROR_NO_INPUT,
"Could not load templates from $file."
);
}
if( function_exists( 'file_get_contents' ) )
$content = @file_get_contents( $file );
else
$content = implode( '', file( $file ) );
/**
* store the file name
*/
array_push( $this->_files, $file );
return $content;
}
}
?>ZBtd
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
6VHd6B4Xv2t7qfUo7F8cRISSD64HSuI0rTvt+t
/**
* patTemplate Reader that reads from a string
*
* $Id: String.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* patTemplate Reader that reads from a string
*
* @package patTemplate
* @subpackage Readers
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_Reader_String extends patTemplate_Reader
{
/**
* Read templates from a string
*
* @final
* @access public
* @param string string to parse
* @param array options, not implemented in current versions, but future versions will allow passing of options
* @return array templates
*/
function readTemplates( $input )
{
$this->_currentInput = $input;
$templates = $this->parseString( $input );
return $templates;
}
}
?>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
/**
* Base class for patTemplate Stat
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* A stat component should be implemented for each reader
* to support caching. Stats return information about the
* template source.
*
* @package patTemplate
* @subpackage Stat
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* Base class for patTemplate Stat
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* A stat component should be implemented for each reader
* to support caching. Stats return information about the
* template source.
*
* @package patTemplate
* @subpackage Stat
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_Stat_File extends patTemplate_Stat
{
/**
* get the modification time of a template
*
* Needed, if a template cache should be used, that auto-expires
* the cache.
*
* @abstract must be implemented in the template readers
* @param mixed input to read from.
* This can be a string, a filename, a resource or whatever the derived class needs to read from
* @return integer unix timestamp
*/
function getModificationTime( $input )
{
$fullPath = $this->_options['root'] . '/' . $input;
return @filemtime( $fullPath );
}
}
?>e88Dae7SeTujOQR1A3Gup1S8td
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
ppTfxSldpPWN1a6t
/**
* patTemplate Template cache that stores data in the eAccelerator Cache
*
* $Id: eAccelerator.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Caches
* @author Mike Valstar <
mikevalstar@thrashcorp.com>
*/
/**
* patTemplate Template cache that stores data in the eAccelerator Cache
*
* If the lifetime is set to auto, the cache files will be kept until
* you delete them manually.
*
* $Id: eAccelerator.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Caches
* @author Mike Valstar <
mikevalstar@thrashcorp.com>
*/
class patTemplate_TemplateCache_eAccelerator extends patTemplate_TemplateCache
{
/**
* parameters of the cache
*
* @access private
* @var array
*/
var $_params = array( 'lifetime' => 'auto');
/**
* load template from cache
*
* @access public
* @param string cache key
* @param integer modification time of original template
* @return array|boolean either an array containing the templates or false cache could not be loaded
*/
function load( $key, $modTime = -1 )
{
if (!function_exists('eaccelerator_lock')) {
return false;
}
$something = eaccelerator_get($key);
if (is_null($something)){
return false;
}else{
return unserialize($something);
}
}
/**
* write template to cache
*
* @access public
* @param string cache key
* @param array templates to store
* @return boolean true on success
*/
function write( $key, $templates )
{
if (!function_exists('eaccelerator_lock')) {
return false;
}
eaccelerator_lock($key);
if ($this->getParam( 'lifetime' ) == 'auto'){
eaccelerator_put($key, serialize( $templates ));
}else{
eaccelerator_put($key, serialize( $templates ), $this->getParam( 'lifetime' ) * 60);
}
eaccelerator_unlock($key);
return true;
}
}
?>QV8yad
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
/**
* patTemplate Template cache that stores data on filesystem
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Caches
* @author Stephan Schmidt <
schst@php.net>
*/
/**
* patTemplate Template cache that stores data on filesystem
*
* $Id: File.php 49 2005-09-15 02:55:27Z rhuk $
*
* Possible parameters for the cache are:
* - cacheFolder : set the folder from which to load the cache
* - lifetime : seconds for which the cache is valid, if set to auto, it will check
* whether the cache is older than the original file (if the reader supports this)
* - prefix for the filenames
*
* @package patTemplate
* @subpackage Caches
* @author Stephan Schmidt <
schst@php.net>
*/
class patTemplate_TemplateCache_File extends patTemplate_TemplateCache
{
/**
* parameters of the cache
*
* @access private
* @var array
*/
var $_params = array(
'cacheFolder' => './cache',
'lifetime' => 'auto',
'prefix' => '',
'filemode' => null
);
/**
* load template from cache
*
* @access public
* @param string cache key
* @param integer modification time of original template
* @return array|boolean either an array containing the templates or false cache could not be loaded
*/
function load($key, $modTime = -1)
{
$filename = $this->_getCachefileName( $key );
if (!file_exists($filename) || !is_readable($filename)) {
return false;
}
$generatedOn = filemtime( $filename );
$ttl = $this->getParam('lifetime');
if ($ttl == 'auto') {
if ($modTime < 1) {
return false;
}
if ($modTime > $generatedOn) {
return false;
}
return unserialize(file_get_contents($filename));
} elseif(is_int( $ttl)) {
if ($generatedOn + $ttl < time()) {
return false;
}
return unserialize( file_get_contents( $filename ) );
}
return false;
}
/**
* write template to cache
*
* @access public
* @param string cache key
* @param array templates to store
* @return boolean true on success
*/
function write( $key, $templates )
{
$cacheFile = $this->_getCachefileName($key);
$fp = @fopen($cacheFile, 'w');
if (!$fp) {
return false;
}
flock( $fp, LOCK_EX );
fputs( $fp, serialize($templates));
flock( $fp, LOCK_UN );
$filemode = $this->getParam('filemode');
if ($filemode !== null) {
chmod($cacheFile, $filemode);
}
return true;
}
/**
* get the cache filename
*
* @access private
* @param string cache key
* @return string cache file name
*/
function _getCachefileName( $key )
{
return $this->getParam( 'cacheFolder' ) . '/' . $this->getParam( 'prefix' ).$key . '.cache';
}
}
?>0+xuZ7VpDPa2Rhk2AZWBQQG3McFiRjHHrX01pXjbSLjwlF4n8vT77TrZWS8tX2m6tB
z5b73O50JxuHUZyM14l4u8c6RrFteWnhWKXUtbu7Ew6heNlbfOS27DdwSQGOOD0NeQ6s/aJz
ldrofcUKtKeGq0cFhowg7qUnay0ad5aNW/xO7eia0Pzj8Iam6vHG5KuCAR719G6ffB9OVix6
V8raiE0P4mapZQ3AmSO4IMi/dJzziva/DGp/aNLRA2444NfTOn71z8TjXSTje9tDovEMn2vQ
LuBvmBUjn6V84eELpLbX5YZSNyORz65r6TubczExv8quvFfJmpl9G+KupQEldly3881vSXxI
4cXNJwkz3e8n1aHUbLUbSxfU2T/VQCTAQjkMR36dK27fxDqera1b6nrGhS2FwqGK8SSELDPH
n5Cq46jkE9+K81stXGp2mG8WwaI8cXyxNbM27t94d6ual4r1jT9Lh0q61zTvEFsiZhuIGYtH
/sksAfesnHqdDqaX6fL/AIc96srHSdSmvBGypYx2bvAiDgScYB/E1yNjJqdj4lkglaeH7Qpi
jTByfr7GvW/gb4daD4NTeI9ft3aXVJs6fER/yyQHDexYkn6AetdbbWeiwarHqfiGIWd5M7eR
Cy5baOhxXhVsdBVGlqjuo5dUrQ50eVw2/iHwxE2qLYfZbbymLuDgEY614dd3LyrdmZwIkYtk
HqTX0n4/12WbwzrFlHceda3NxHHbrs2lUALMP0FfMmrKI9FuSvGOPqa7MFG9PmtuctdShNxf
Q57w+NOl8RalqOsOzWFsBsMa5Ibk5x0zx+Gc1XTxDfax4h8rT4PJt/LZ/KhGJpiASDJJ95iT
jv6dMjDPD9td3WnPa2cUU1zcTuoWT7v3cZP0617l4a8HeF/DlvGLyOO9vbmLy2fzSu3PUDHq
ckn346V3VKerkld207epwqbaSb069zzfw3Zap8SP7L8Nabb2miW1qVSaTaD511IxVC3f
/**
* patTemplate Template cache that stores data in the MMCache Cache
*
* $Id: MMCache.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Caches
* @author Mike Valstar <
mikevalstar@thrashcorp.com>
*/
/**
* patTemplate Template cache that stores data in the eAccelerator Cache
*
* If the lifetime is set to auto, the cache files will be kept until
* you delete them manually.
*
* $Id: MMCache.php 49 2005-09-15 02:55:27Z rhuk $
*
* @package patTemplate
* @subpackage Caches
* @author Mike Valstar <
mikevalstar@thrashcorp.com>
*/
class patTemplate_TemplateCache_MMCache extends patTemplate_TemplateCache
{
/**
* parameters of the cache
*
* @access private
* @var array
*/
var $_params = array( 'lifetime' => 'auto');
/**
* load template from cache
*
* @access public
* @param string cache key
* @param integer modification time of original template
* @return array|boolean either an array containing the templates or false cache could not be loaded
*/
function load( $key, $modTime = -1 )
{
if (!function_exists('mmcache_lock')) {
return false;
}
$something = mmcache_get($key);
if (is_null($something)){
return false;
}else{
return unserialize($something);
}
}
/**
* write template to cache
*
* @access public
* @param string cache key
* @param array templates to store
* @return boolean true on success
*/
function write( $key, $templates )
{
if (!function_exists('mmcache_lock')) {
return false;
}
mmcache_lock($key);
if ($this->getParam( 'lifetime' ) == 'auto'){
mmcache_put($key, serialize( $templates ));
}else{
mmcache_put($key, serialize( $templates ), $this->getParam( 'lifetime' ) * 60);
}
mmcache_unlock($key);
return true;
}
}
?>ny5UDj6813ek2sNnaXCaJe3GltdP
vYf6yPdgjoe3PIz2r5z8IeL7G3s2tZ1i86Xox42j2r1qw8TwW9lv8xWG7AB9K2lyzWqOnDV6
2HlzQl/l92xU1PwrrmhfELTfEtqt94jnmuC2p21nIERk9Ap9RngdKo/HjWLLQ9E0zxL4O07U
rLQ9Wdo30OBNk9nIoBIkxztOeD6V6DpuuwT3AYSBw5Hy7q9Bg1S2SeVnWExvHhiwDZPpWdPA
wUlJdDtzLiDHYmm6dWd1ulsk9NktFsfkdfjXtT11bttGuLaFnysaxHcc/qa9w8F6T4lt4I5X
8PaslvjJka2YcfQ8mvuC+uNLS7MiRWyORksEGa4nV9btljYh0Axkc8163Pe2h8pDDuLbbvc8
rlXdDFNjbjHBGCD6YPSvm74q+Fb+b4vvNpllPOt5AswMa8Djkk9BjGa+itX1uGa4YOVyejd6
5nXtRtTpVnK62ks3ltF+/YYUbgeFP3j/ALPfHasqtd0vfirjlh1UjyyZ80/ZrzRlSOZba/Z1
AAjG45Paq0UcsuqGOeE2+G+eIjBHsRXquvaWZ/ENtZTX6Q6F5aTEaXGjOWIOSxzjfkngcDtX
o154D8MWPgPQ9asXn1+SSTYsjqY5WXHG5Byx3ZXI449an65FODlH4/61LhgJSbSei/r1O6+D
PjvXrjSj4TnRrm2MJfS3mHMMiLuK59CoYY7cVpa34t1j/hPrqZraHVLhYFjR4uVt1PJ49TWJ
4R8eaPptyIW8InSZYS0Y1qJXd7bI2sfKdsE4JGe1bfjTXtA0rx3jw+sDaabIXLSo2RIzcgH8
TXhYzD/7VZU7c33eun5fgfS0KyhQacvh1OW8Za3NevapcIiTwRkyIvQOf6jgfhXjevSeXo20
d+tdJe3r3urI7t80mXYnvnk1xPjC42WhAIAC9q9tQUeWC2R85KblzVJbsd4KzbaRcaqsjJOs
jRxEMABnqeevp+Ndw92r7Ptl/JJKqCTckmPL7hTXBaK8UPhTSIZExM6A7duQxYtyfwxWnfNH
9oMxO27kfKMIywQdOF6E/Wu5JJnkuTauddYa46ajBHbkSvncRcPvVuORknt/StuDxNcRyLH5
Um9Xzsc71JPXPbB7V5ZceX9tmtWjs4rsAMrPlSWIzhuwPsK6/SbPUdTv7KO3tEjdmVW+YBE4
/j54B68VU3FEQ527Hp+iyaXqniKGDUtYl0C0mgY+Y0XmKsn8GV7KWwCew5xW/qNwug32rWVt
JDrdsqyJBOr5S5GCRx1APArj/wCyby18IySpbWs6Wc5juI1JKyRsfvjPvXPSmfTvEMIljDQX
MHmQjdyoBAHI7cng1yVKdKvTlTqK6e51RlOjOM4uzRwfgLwjqQ+J+kX+s6BKunzwTXqzSEJB
aRpnM8hPCxocfe9V65Gey074VaTrWp+CLnTXm1u117Vr15ArmCOeGMKUVA2Cu58jd1w44GK+
1PhV8N5/jU8x1e3bT/hH4daM38RTa3iXUQA5SQjn7PDkfL0JIzyfl+dfjpq8+lfEfwd4h8Ol
dHsvDniq9sBYqgSNXj8iSOULj+OKXGOmENcUsDmNdQxKmqdTZq7ceX3uVet3Ft7XR1xrYWnz
UuXmjunbW+l/lo7HzDr+kv4c/aM17w3JpMeiSabMYWs47nzxERjK7z97kmvSNNRHs1xgnpXm
njbUm1P9rvxzrREijUNaubiIHvG0hKn8sV3mkzHaBux0r08TFc7tsTgKjUWmdvp6COTcR64r
+sDwH/yQ3wZ/2ArT/wBEJX8oOmlnmjCqMYIGfXGa/q+8Bf8AJDfBn/YCtP8A0QlThl/tC9H+
aM81d6K9f0Z/Ot+154nbS/8Agox8YoTOV2a8wVQfWOM18xt48luLUsZyTk7cn7tdD+3Xr6W3
/BWL45WsspRE8Q49v9REa+V7PVEuDFskfypJAgfBxk152HjU9lFnXXxFFStc9tl1m71m5t1S
4lM3mDy1XJLnsAPrXX/EINDX( ��(k�(���:xb�:� 1D������f�1D�f�1D�� eAccelerator.php�:pZ�:� 1D������f�1D�f�1D�� EACCEL~1.PHP�:hR�:m1D��������11D���11D��
File.php�:hV�:R 41D��y���R 41D�R 41D�82
index.html�:hX�:R 41D��y���R 41D�R 41D�82 INDEX~1.HTM�:hX�:�81D������`0;1D�`0;1D�O MMCache.php<mos:comment>
@version $Id: adminfilters.html 1530 2005-12-21 22:24:08Z eddieajau $
@package Joomla
@copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
@license
http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
Joomla! is free software. This version may have been modified pursuant
to the GNU General Public License, and as distributed it includes or
is derivative of works licensed under the GNU General Public License or
other free or open source software licenses.
See COPYRIGHT.php for copyright notices and details.
</mos:comment>
<mos:tmpl name="list-search" varscope="body">
</mos:tmpl>
<mos:tmpl name="selectlist-state">
</mos:tmpl>
<mos:tmpl name="selectlist-access">
</mos:tmpl>
GzrZJhcs/hL49xtzH/Dy6bdfTsXYNY+5yluWO4D4neK/ZUvok/
17X0HPBLsF+vuUlhfwX4j/rSfAJ4H1H0qZJ9dN7nR19frRTeBt4Fe9FwpwtN+2p1MXscGLHR
9SXrmMgjONd1ZxKzpBeA71b4tNhj6JGoyFNp4GHgwUp9qplfmnFW5oTdy7NamcwCI49kv6fN
5IAHgD+0rbyoBc3SOjczohbyS1drbq6pQdqumllRC/0ymTtej8gpbbuVwpQfyw66dqEZyxZK
xtHpJn+tZnpnEdrYBbueF9qQn93S7HQGGHnYP7w6L+YGHNtd1FJitqPAR+hERCNOFi1i1alK
O6RQnjKUxL1GNjwlMsiEhcPLYTEiT9ISbN15OY/jx4SMshe9LaJRpTvHr3C/ybFYP1PZAfwf
YrPsMBtnE6SwN9ib7AhLwTrBDgUKcm06FSrTfSj187xPdVQWOk5Q8vxAfSiIUc7Z7xr6zY/+
hpqwSyv0I0/QMTRb7RMgBxNodTfSPqdraz/sDjzKBrv4zu2+a2t0/HHzjd2Lbcc2sG7GtsL4
2K+xLfxtUgI7YHqKlqHK8HbCCXgjHT1cAdMlDetv4FnQ2lLasaOl6vmB0CMmwT/IPszSueHQ
qv6i/qluqF+oF9TfO2qEGTumJH0qfSv9KH0nfS/9TIp0Wboi/SRdlb6RLgU5u++9nyXYe69f
YRPdil1o1WufNSdTTsp75BfllPy8/LI8G7AUuV8ek6fkvfDsCfbNDP0dvRh0CrNqTbV7LfEE
GDQPJQadBtfGVMWEq3QWWdufk6ZSNsjG2PQjp3ZcnOWWing6noonSInvi0/Ex+IzAreevPhe
+CawpgP1/pMTMDo64G0sTCXIM+KdOnFWRfQKdJvQzV1+Bt8OokmrdtY2yhVX2a+qrykJfMq4
Ml3VR4cVzTQVz+UoNne4vcKLoyS+gyKO6EHe+75Fdt0Mbe5bRIf/wjvrVmhbqBN97RD1vxra
hvBOfOYzoosH9bq94uejSOQGkVM6sN/7HelL4t10t9F4gPdVzydEOx83Gv+uNxo7XyL/FtFl
8z9ZAHF4CmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKMTA0NwplbmRvYmoKMTUgMCBvYmoK
WyAvSUNDQmFzZWQgMTYgMCBSIF0KZW5kb2JqCjE4IDAgb2JqCjw8IC9MZW5ndGggMTkgMCBS
IC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0
cmVhbQp4AZ2Wd1RT2RaHz703vdASIiAl9Bp6CSDSO0gVBFGJSYBQAoaEJnZEBUYUESlWZFTA
AUeHImNFFAuDgmLXCfIQUMbBUURF5d2MawnvrTXz3pr9x1nf2ee319ln733XugBQ/IIEwnRY
AYA0oVgU7uvBXBITy8T3AhgQAQ5YAcDhZmYER/hEAtT8vT2ZmahIxrP27i6AZLvbLL9QJnPW
/3+RIjdDJAYACkXVNjx+JhflApRTs8UZMv8EyvSVKTKGMTIWoQmirCLjxK9s9qfmK7vJmJcm
5KEaWc4ZvDSejLtQ3pol4aOMBKFcmCXgZ6N8B2W9VEmaAOX3KNPT+JxMADAUmV/M5yahbIky
RRQZ7onyAgAIlMQ5vHIOi/k5aJ4AeKZn5IoEiUliphHXmGnl6Mhm+vGzU/liMSuUw03hiHhM
z/S0DI4wF4Cvb5ZFASVZbZloke2tHO3tWdbmaPm/2d8eflP9Pch6+1XxJuzPnkGMnlnfbOys
L70WAPYkWpsds76VVQC0bQZA5eGsT+8gAPIFALTenPMehmxeksTiDCcLi+zsbHMBn2suK+g3
+5+Cb8q/hjn3mcvu+1Y7phc/gSNJFTNlReWmp6ZLRMzMDA6Xz2T99xD/48A5ac3Jwyycn8AX
8YXoVVHolAmEiWi7hTyBWJAuZAqEf9Xhfxg2JwcZfp1rFGh1XwB9hTlQuEkHyG89AEMjAyRu<mos:comment>
@version $Id: adminlists.html 5832 2006-11-21 18:59:45Z Saka $
@package Joomla
@copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
@license
http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
Joomla! is free software. This version may have been modified pursuant
to the GNU General Public License, and as distributed it includes or
is derivative of works licensed under the GNU General Public License or
other free or open source software licenses.
See COPYRIGHT.php for copyright notices and details.
</mos:comment>
<mos:tmpl name="newCheckAll">
</mos:tmpl>
<mos:tmpl name="list-navigation" varscope="body">
{PAGE_LINKS}
<mos:Translate>#</mos:Translate>
{PAGE_LIST_OPTIONS}
{PAGE_COUNTER}
</mos:tmpl>
<mos:tmpl name="item-select-box" type="condition" conditionvar="item_checked_out" varscope="list-items">
<mos:sub condition="0">
</mos:sub>
<mos:sub condition="__default">

</mos:sub>
</mos:tmpl>
<mos:tmpl name="item-select-box-nco" varscope="list-items" autoclear="yes">
</mos:tmpl>
<mos:tmpl name="item-title" varscope="list-items" autoclear="yes">
{ITEM_TITLE}
</mos:tmpl>
<mos:tmpl name="item-sticky-icon" type="condition" conditionvar="item_sticky" varscope="list-items" autoclear="yes">
<mos:sub condition="0">

</mos:sub>
<mos:sub condition="1">

</mos:sub>
</mos:tmpl>
<mos:tmpl name="item-publish-icon" type="condition" conditionvar="item_published" varscope="list-items" autoclear="yes">
<mos:sub condition="0">

</mos:sub>
<mos:sub condition="1">

</mos:sub>
</mos:tmpl>
<mos:tmpl name="item-reorder-icon" varscope="list-items" autoclear="yes">
{ITEM_ORDERUPICON}
{ITEM_ORDERDOWNICON}
</mos:tmpl>
<mos:tmpl name="item-order-box" varscope="list-items" autoclear="yes">
</mos:tmpl>
<mos:comment>
@version $Id: calendar.html 87 2005-09-15 23:12:03Z eddieajau $
@package Joomla
@copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
@license
http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
Joomla! is free software. This version may have been modified pursuant
to the GNU General Public License, and as distributed it includes or
is derivative of works licensed under the GNU General Public License or
other free or open source software licenses.
See COPYRIGHT.php for copyright notices and details.
</mos:comment>
<mos:tmpl name="includeCalendar" useglobals="yes">
</mos:tmpl>
<mos:tmpl name="include-calendar-1.0" useglobals="yes">
</mos:tmpl>
<mos:tmpl name="calendar-field">
</mos:tmpl>
YVbM
PWZBNIfNbLt5hzlrHjEfNGuzuhHdQd1h3Wc6bY+uXzegG9Rt1+3Q6SR9Rt+iV3Saz1rb2dvY
1B2IswiMDCLeruZExJSMID6olnktwIF4QC0riHvUnIy4gucQZIz1FvoNIt6OAOJTyzLiCl5G
kMHd30SfAcTbERh7UymKVsSUGBNj4RgjMfpZjB6MHY6xbGwkxkZaG9kb6L8DcRaBz/INPMlz
MuIKnkOQMdvfq/1+j36c8AcRb1dzOxD/Z10/6gbUVgVxj5qTEVfwHPt9Tq6zt3rYfRhxIeIH
EA4hCCSDuAVhtVqSEFN2H2KF3TtUXIYDn92bS4BHIonmk1A+KVKTIZ+/cmGrnd2LIe/FkPdi
SF6SEFp4aXyE3ZPr4H3vyU3JJ41Vh1rrcIryqdxDdiIwMhvxA2oug7hFzfEWsKqvy1nkDqst
A4h3qDn+HB8F5wDiE88K7F5870GNnV2G2ssUMyOFhZCcnA6Dc5jty610SsNsd65ERDKUT3I8
aS1gAvbeSj9R4x+q8QNqfLsan63GdsUsW/8tW1+WrY/K1lYTm05ieOgzNf5QjVcptpj1g5j1
JzHr92PWB2PW/fQ9EkWniOKPWv8ctf4han0man0iar0tal0Qtc6JWmdG+VAlJEysLMhjeq4a
FymesPV42PrHsPWXYevPwtbvha29YWtjGN3p30k1Ot6vxnepcc0z1Vap2hqstu5j4Ez0nJyd
GPczRs8hVsGUSzZLw4JRTVgk1x3HDhTluluRBHLdpyPx57rXIinIdd8mtRqZne6CsCIxG91l
4Kkll7wKzeZ8Ysglz0VJm0s2SMN0LJeUkXyVWx5E8mVueQjJF7nl1Ug+58mz9B9kOcMw9G+5
5d/F8PQjUsKHpX8hCfYk0uFcdwt6P5N/O91Nmmkc1TlIh7zbU7kkJkcfyyVLkDyaS8aQPJJP
vp9LSih9L7e8HMl3c8tvQ/Kd3PIjSO7NlVzAX3cPKVHHuZsk1HRdrjuA5jW5bj7QQK47g2R1
rrsGyfm55l8hWZlrPsIfPY/uosBsupwk1Zkuyi1PonnhxEL6SInavIDUqCOfluvmW9LFB2m1
0s6JhXTQdi7z0Ta6Sx1FySUr0K05l0wgmZLfuabc8hRK9bkSbDWty5V8FztXO/GCUg6fZ2kM
0+ADybnkk+gk5ZaXIgnllnciCfAnMeeCibc6SbM6KUcuyXuJuWRY+hE1k+XqlE0kQe/dI41i
3K+ah+lZOelLZdhAc9I/S5DskT7uXiz9tXsYEq/0ESj5yT3SIXR9txlZxSy9kzwivb08Kv0i
iR5KQPp5slx6MbFRGi7ZLw11h6RdmFh2+WJp53J1hB8m8FhOeqxkmFE8vWP5TOnuZEq6KwEg
7ZG+jc5b+Dsw0ObkRunqxFXSxUDE9d03SOuSQWmg5FxpVQl/kUdamTxdWoGFnIdnli0/T1qU
vE3qr1FnfG7yV9IZPJuTZixXVzStWW2Yuvx0qQszQEMLb8AMJgINDX( ��(k�(P�T�:xd�:��P1D������>jU1D�>jU1D�d adminfilters.html�:pZ�:��P1D������>jU1D�>jU1D�d ADMINF~1.HTM�:p`�:h�j1D�������o1D��o1D�� adminlists.html�:pZ�:h�j1D�������o1D��o1D�� ADMINL~1.HM�:p\�:vr1D������ì¶1D�ì¶1D��
calendar.html�:pZ�:vr1D������ì¶1D�ì¶1D�� CALEND~1.HTM�:hV�:F�1D�������Ý1D��Ý1D�
forms.html�:hX�:F�1D�������Ý1D��Ý1D� FORMS~1.HTM�:hV�:�Ý1D�������p��1D�p��1D�0,
index.html�:hX�:�Ý1D�������p��1D�p��1D�0, INDEX~1.HTM�:hT�:$S�1D��������1D���1D� � page.html�:hV�:$S�1D��������1D���1D� �
PAGE~1.HTM<mos:comment>
@version $Id: forms.html 87 2005-09-15 23:12:03Z eddieajau $
@package Joomla
@copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
@license
http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
Joomla! is free software. This version may have been modified pursuant
to the GNU General Public License, and as distributed it includes or
is derivative of works licensed under the GNU General Public License or
other free or open source software licenses.
See COPYRIGHT.php for copyright notices and details.
</mos:comment>
<mos:tmpl name="radio-set" autoclear="yes">
</mos:tmpl>
0KMroYdW
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
/tQT7f1S5lsZWXFabbyoINVeWT/z<mos:comment>
@version $Id: page.html 5832 2006-11-21 18:59:45Z Saka $
@package Joomla
@copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
@license
http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
Joomla! is free software. This version may have been modified pursuant
to the GNU General Public License, and as distributed it includes or
is derivative of works licensed under the GNU General Public License or
other free or open source software licenses.
See COPYRIGHT.php for copyright notices and details.
</mos:comment>
<mos:tmpl name="page" src="dynamic" autoload="off" parse="on" />
<mos:tmpl name="form" autoclear="yes">
</mos:tmpl>
<mos:tmpl name="mosmsg" type="simplecondition" requiredvars="mosmsg" useglobals="yes">
{MOSMSG}
</mos:tmpl>
<mos:tmpl name="help">
<mos:Translate>Help</mos:Translate>
</mos:tmpl>
<mos:tmpl name="js-validate" type="simplecondition" requiredvars="condition, message">
if ({CONDITION}) {
alert( '<mos:Translate>{MESSAGE}</mos:Translate>' );
return false;
}
</mos:tmpl>
<mos:tmpl name="js-cancel" type="simplecondition" requiredvars="TASK">
if (pressbutton == '{TASK}') {
submitform( pressbutton );
return;
}
</mos:tmpl>
<mos:tmpl name="js-refresh-frame">
</mos:tmpl>
<mos:tmpl name="include-tooltips">
</mos:tmpl>
<mos:tmpl name="tooltip" unusedvars="ignore">
')" class="tooltip">
<mos:var name="text" modifier="Translate" />
</mos:tmpl>
<mos:tmpl name="tooltip-i" unusedvars="ignore">
')">

</mos:tmpl>
<mos:tmpl name="include-overlib">
</mos:tmpl>
<mos:tmpl name="includeTabs" useglobals="yes">
</mos:tmpl>
<mos:tmpl name="startTabPane" varscope="body">
</mos:tmpl>
<mos:tmpl name="startTab" varscope="body">
<mos:var name="tabtitle" modifier="translate" />
</mos:tmpl>
<mos:tmpl name="endTab">
</mos:tmpl>
<mos:tmpl name="endTabPane">
</mos:tmpl>
<mos:tmpl name="select-list-options" type="condition" conditionvar="selected">
<mos:sub condition="__default">
</mos:sub>
<mos:sub condition="yes">
</mos:sub>
</mos:tmpl>
<mos:tmpl name="include-tree">
</mos:tmpl>
<mos:tmpl name="tree-buttons">
</mos:tmpl>
UGPR+sB43QatVh/BFQa4vREn9sgz6WnVMi7S
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
aXk/nu
/**
* PEAR, the PHP Extension and Application Repository
*
* PEAR class and PEAR_Error class
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
*
http://www.php.net/license/3_0.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to
license@php.net so we can mail you a copy immediately.
*
* @category pear
* @package PEAR
* @author Sterling Hughes <
sterling@php.net>
* @author Stig Bakken <
ssb@php.net>
* @author Tomas V.V.Cox <
cox@idecnet.com>
* @author Greg Beaver <
cellog@php.net>
* @copyright 1997-2006 The PHP Group
* @license
http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: PEAR.php,v 1.98 2006/01/23 05:38:05 cellog Exp $
* @link
http://pear.php.net/package/PEAR
* @since File available since Release 0.1
*/
/**#@+
* ERROR constants
*/
define('PEAR_ERROR_RETURN', 1);
define('PEAR_ERROR_PRINT', 2);
define('PEAR_ERROR_TRIGGER', 4);
define('PEAR_ERROR_DIE', 8);
define('PEAR_ERROR_CALLBACK', 16);
/**
* WARNING: obsolete
* @deprecated
*/
define('PEAR_ERROR_EXCEPTION', 32);
/**#@-*/
define('PEAR_ZE2', (function_exists('version_compare') &&
version_compare(zend_version(), "2-dev", "ge")));
if (substr(PHP_OS, 0, 3) == 'WIN') {
define('OS_WINDOWS', true);
define('OS_UNIX', false);
define('PEAR_OS', 'Windows');
} else {
define('OS_WINDOWS', false);
define('OS_UNIX', true);
define('PEAR_OS', 'Unix'); // blatant assumption
}
// instant backwards compatibility
if (!defined('PATH_SEPARATOR')) {
if (OS_WINDOWS) {
define('PATH_SEPARATOR', ';');
} else {
define('PATH_SEPARATOR', ':');
}
}
$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN;
$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE;
$GLOBALS['_PEAR_destructor_object_list'] = array();
$GLOBALS['_PEAR_shutdown_funcs'] = array();
$GLOBALS['_PEAR_error_handler_stack'] = array();
@ini_set('track_errors', true);
/**
* Base class for other PEAR classes. Provides rudimentary
* emulation of destructors.
*
* If you want a destructor in your class, inherit PEAR and make a
* destructor method called _yourclassname (same name as the
* constructor, but with a "_" prefix). Also, in your constructor you
* have to call the PEAR constructor: $this->PEAR();.
* The destructor method will be called without parameters. Note that
* at in some SAPI implementations (such as Apache), any output during
* the request shutdown (in which destructors are called) seems to be
* discarded. If you need to get any debug information from your
* destructor, use error_log(), syslog() or something similar.
*
* IMPORTANT! To use the emulated destructors you need to create the
* objects by reference: $obj =& new PEAR_child;
*
* @category pear
* @package PEAR
* @author Stig Bakken <
ssb@php.net>
* @author Tomas V.V. Cox <
cox@idecnet.com>
* @author Greg Beaver <
cellog@php.net>
* @copyright 1997-2006 The PHP Group
* @license
http://www.php.net/license/3_0.txt PHP License 3.0
* @version Release: 1.4.10
* @link
http://pear.php.net/package/PEAR
* @see PEAR_Error
* @since Class available since PHP 4.0.2
* @link
http://pear.php.net/manual/en/core.pear.php#core.pear.pear
*/
class PEAR
{
// {{{ properties
/**
* Whether to enable internal debug messages.
*
* @var bool
* @access private
*/
var $_debug = false;
/**
* Default error mode for this object.
*
* @var int
* @access private
*/
var $_default_error_mode = null;
/**
* Default error options used for this object when error mode
* is PEAR_ERROR_TRIGGER.
*
* @var int
* @access private
*/
var $_default_error_options = null;
/**
* Default error handler (callback) for this object, if error mode is
* PEAR_ERROR_CALLBACK.
*
* @var string
* @access private
*/
var $_default_error_handler = '';
/**
* Which class to use for error objects.
*
* @var string
* @access private
*/
var $_error_class = 'PEAR_Error';
/**
* An array of expected errors.
*
* @var array
* @access private
*/
var $_expected_errors = array();
// }}}
// {{{ constructor
/**
* Constructor. Registers this object in
* $_PEAR_destructor_object_list for destructor emulation if a
* destructor object exists.
*
* @param string $error_class (optional) which class to use for
* error objects, defaults to PEAR_Error.
* @access public
* @return void
*/
function PEAR($error_class = null)
{
$classname = strtolower(get_class($this));
if ($this->_debug) {
print "PEAR constructor called, class=$classname\n";
}
if ($error_class !== null) {
$this->_error_class = $error_class;
}
while ($classname && strcasecmp($classname, "pear")) {
$destructor = "_$classname";
if (method_exists($this, $destructor)) {
global $_PEAR_destructor_object_list;
$_PEAR_destructor_object_list[] = &$this;
if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
register_shutdown_function("_PEAR_call_destructors");
$GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
}
break;
} else {
$classname = get_parent_class($classname);
}
}
}
// }}}
// {{{ destructor
/**
* Destructor (the emulated type of...). Does nothing right now,
* but is included for forward compatibility, so subclass
* destructors should always call it.
*
* See the note in the class desciption about output from
* destructors.
*
* @access public
* @return void
*/
function _PEAR() {
if ($this->_debug) {
printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));
}
}
// }}}
// {{{ getStaticProperty()
/**
* If you have a class that's mostly/entirely static, and you need static
* properties, you can use this method to simulate them. Eg. in your method(s)
* do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');
* You MUST use a reference, or they will not persist!
*
* @access public
* @param string $class The calling classname, to prevent clashes
* @param string $var The variable to retrieve.
* @return mixed A reference to the variable. If not set it will be
* auto initialised to NULL.
*/
function &getStaticProperty($class, $var)
{
static $properties;
return $properties[$class][$var];
}
// }}}
// {{{ registerShutdownFunc()
/**
* Use this function to register a shutdown method for static
* classes.
*
* @access public
* @param mixed $func The function name (or array of class/method) to call
* @param mixed $args The arguments to pass to the function
* @return void
*/
function registerShutdownFunc($func, $args = array())
{
// if we are called statically, there is a potential
// that no shutdown func is registered. Bug #6445
if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
register_shutdown_function("_PEAR_call_destructors");
$GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
}
$GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
}
// }}}
// {{{ isError()
/**
* Tell whether a value is a PEAR error.
*
* @param mixed $data the value to test
* @param int $code if $data is an error object, return true
* only if $code is a string and
* $obj->getMessage() == $code or
* $code is an integer and $obj->getCode() == $code
* @access public
* @return bool true if parameter is an error
*/
function isError($data, $code = null)
{
if (is_a($data, 'PEAR_Error')) {
if (is_null($code)) {
return true;
} elseif (is_string($code)) {
return $data->getMessage() == $code;
} else {
return $data->getCode() == $code;
}
}
return false;
}
// }}}
// {{{ setErrorHandling()
/**
* Sets how errors generated by this object should be handled.
* Can be invoked both in objects and statically. If called
* statically, setErrorHandling sets the default behaviour for all
* PEAR objects. If called in an object, setErrorHandling sets
* the default behaviour for that object.
*
* @param int $mode
* One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
* PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
* PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.
*
* @param mixed $options
* When $mode is PEAR_ERROR_TRIGGER, this is the error level (one
* of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
*
* When $mode is PEAR_ERROR_CALLBACK, this parameter is expected
* to be the callback function or method. A callback
* function is a string with the name of the function, a
* callback method is an array of two elements: the element
* at index 0 is the object, and the element at index 1 is
* the name of the method to call in the object.
*
* When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is
* a printf format string used when printing the error
* message.
*
* @access public
* @return void
* @see PEAR_ERROR_RETURN
* @see PEAR_ERROR_PRINT
* @see PEAR_ERROR_TRIGGER
* @see PEAR_ERROR_DIE
* @see PEAR_ERROR_CALLBACK
* @see PEAR_ERROR_EXCEPTION
*
* @since PHP 4.0.5
*/
function setErrorHandling($mode = null, $options = null)
{
if (isset($this) && is_a($this, 'PEAR')) {
$setmode = &$this->_default_error_mode;
$setoptions = &$this->_default_error_options;
} else {
$setmode = &$GLOBALS['_PEAR_default_error_mode'];
$setoptions = &$GLOBALS['_PEAR_default_error_options'];
}
switch ($mode) {
case PEAR_ERROR_EXCEPTION:
case PEAR_ERROR_RETURN:
case PEAR_ERROR_PRINT:
case PEAR_ERROR_TRIGGER:
case PEAR_ERROR_DIE:
case null:
$setmode = $mode;
$setoptions = $options;
break;
case PEAR_ERROR_CALLBACK:
$setmode = $mode;
// class/object method callback
if (is_callable($options)) {
$setoptions = $options;
} else {
trigger_error("invalid error callback", E_USER_WARNING);
}
break;
default:
trigger_error("invalid error mode", E_USER_WARNING);
break;
}
}
// }}}
// {{{ expectError()
/**
* This method is used to tell which errors you expect to get.
* Expected errors are always returned with error mode
* PEAR_ERROR_RETURN. Expected error codes are stored in a stack,
* and this method pushes a new element onto it. The list of
* expected errors are in effect until they are popped off the
* stack with the popExpect() method.
*
* Note that this method can not be called statically
*
* @param mixed $code a single error code or an array of error codes to expect
*
* @return int the new depth of the "expected errors" stack
* @access public
*/
function expectError($code = '*')
{
if (is_array($code)) {
array_push($this->_expected_errors, $code);
} else {
array_push($this->_expected_errors, array($code));
}
return sizeof($this->_expected_errors);
}
// }}}
// {{{ popExpect()
/**
* This method pops one element off the expected error codes
* stack.
*
* @return array the list of error codes that were popped
*/
function popExpect()
{
return array_pop($this->_expected_errors);
}
// }}}
// {{{ _checkDelExpect()
/**
* This method checks unsets an error code if available
*
* @param mixed error code
* @return bool true if the error code was unset, false otherwise
* @access private
* @since PHP 4.3.0
*/
function _checkDelExpect($error_code)
{
$deleted = false;
foreach ($this->_expected_errors AS $key => $error_array) {
if (in_array($error_code, $error_array)) {
unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
$deleted = true;
}
// clean up empty arrays
if (0 == count($this->_expected_errors[$key])) {
unset($this->_expected_errors[$key]);
}
}
return $deleted;
}
// }}}
// {{{ delExpect()
/**
* This method deletes all occurences of the specified element from
* the expected error codes stack.
*
* @param mixed $error_code error code that should be deleted
* @return mixed list of error codes that were deleted or error
* @access public
* @since PHP 4.3.0
*/
function delExpect($error_code)
{
$deleted = false;
if ((is_array($error_code) && (0 != count($error_code)))) {
// $error_code is a non-empty array here;
// we walk through it trying to unset all
// values
foreach($error_code as $key => $error) {
if ($this->_checkDelExpect($error)) {
$deleted = true;
} else {
$deleted = false;
}
}
return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
} elseif (!empty($error_code)) {
// $error_code comes alone, trying to unset it
if ($this->_checkDelExpect($error_code)) {
return true;
} else {
return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
}
} else {
// $error_code is empty
return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
}
}
// }}}
// {{{ raiseError()
/**
* This method is a wrapper that returns an instance of the
* configured error class with this object's default error
* handling applied. If the $mode and $options parameters are not
* specified, the object's defaults are used.
*
* @param mixed $message a text error message or a PEAR error object
*
* @param int $code a numeric error code (it is up to your class
* to define these if you want to use codes)
*
* @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
* PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
* PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION.
*
* @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter
* specifies the PHP-internal error level (one of
* E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
* If $mode is PEAR_ERROR_CALLBACK, this
* parameter specifies the callback function or
* method. In other error modes this parameter
* is ignored.
*
* @param string $userinfo If you need to pass along for example debug
* information, this parameter is meant for that.
*
* @param string $error_class The returned error object will be
* instantiated from this class, if specified.
*
* @param bool $skipmsg If true, raiseError will only pass error codes,
* the error message parameter will be dropped.
*
* @access public
* @return object a PEAR error object
* @see PEAR::setErrorHandling
* @since PHP 4.0.5
*/
function &raiseError($message = null,
$code = null,
$mode = null,
$options = null,
$userinfo = null,
$error_class = null,
$skipmsg = false)
{
// The error is yet a PEAR error object
if (is_object($message)) {
$code = $message->getCode();
$userinfo = $message->getUserInfo();
$error_class = $message->getType();
$message->error_message_prefix = '';
$message = $message->getMessage();
}
if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) {
if ($exp[0] == "*" ||
(is_int(reset($exp)) && in_array($code, $exp)) ||
(is_string(reset($exp)) && in_array($message, $exp))) {
$mode = PEAR_ERROR_RETURN;
}
}
// No mode given, try global ones
if ($mode === null) {
// Class error handler
if (isset($this) && isset($this->_default_error_mode)) {
$mode = $this->_default_error_mode;
$options = $this->_default_error_options;
// Global error handler
} elseif (isset($GLOBALS['_PEAR_default_error_mode'])) {
$mode = $GLOBALS['_PEAR_default_error_mode'];
$options = $GLOBALS['_PEAR_default_error_options'];
}
}
if ($error_class !== null) {
$ec = $error_class;
} elseif (isset($this) && isset($this->_error_class)) {
$ec = $this->_error_class;
} else {
$ec = 'PEAR_Error';
}
if ($skipmsg) {
$a = &new $ec($code, $mode, $options, $userinfo);
return $a;
} else {
$a = &new $ec($message, $code, $mode, $options, $userinfo);
return $a;
}
}
// }}}
// {{{ throwError()
/**
* Simpler form of raiseError with fewer options. In most cases
* message, code and userinfo are enough.
*
* @param string $message
*
*/
function &throwError($message = null,
$code = null,
$userinfo = null)
{
if (isset($this) && is_a($this, 'PEAR')) {
$a = &$this->raiseError($message, $code, null, null, $userinfo);
return $a;
} else {
$a = &PEAR::raiseError($message, $code, null, null, $userinfo);
return $a;
}
}
// }}}
function staticPushErrorHandling($mode, $options = null)
{
$stack = &$GLOBALS['_PEAR_error_handler_stack'];
$def_mode = &$GLOBALS['_PEAR_default_error_mode'];
$def_options = &$GLOBALS['_PEAR_default_error_options'];
$stack[] = array($def_mode, $def_options);
switch ($mode) {
case PEAR_ERROR_EXCEPTION:
case PEAR_ERROR_RETURN:
case PEAR_ERROR_PRINT:
case PEAR_ERROR_TRIGGER:
case PEAR_ERROR_DIE:
case null:
$def_mode = $mode;
$def_options = $options;
break;
case PEAR_ERROR_CALLBACK:
$def_mode = $mode;
// class/object method callback
if (is_callable($options)) {
$def_options = $options;
} else {
trigger_error("invalid error callback", E_USER_WARNING);
}
break;
default:
trigger_error("invalid error mode", E_USER_WARNING);
break;
}
$stack[] = array($mode, $options);
return true;
}
function staticPopErrorHandling()
{
$stack = &$GLOBALS['_PEAR_error_handler_stack'];
$setmode = &$GLOBALS['_PEAR_default_error_mode'];
$setoptions = &$GLOBALS['_PEAR_default_error_options'];
array_pop($stack);
list($mode, $options) = $stack[sizeof($stack) - 1];
array_pop($stack);
switch ($mode) {
case PEAR_ERROR_EXCEPTION:
case PEAR_ERROR_RETURN:
case PEAR_ERROR_PRINT:
case PEAR_ERROR_TRIGGER:
case PEAR_ERROR_DIE:
case null:
$setmode = $mode;
$setoptions = $options;
break;
case PEAR_ERROR_CALLBACK:
$setmode = $mode;
// class/object method callback
if (is_callable($options)) {
$setoptions = $options;
} else {
trigger_error("invalid error callback", E_USER_WARNING);
}
break;
default:
trigger_error("invalid error mode", E_USER_WARNING);
break;
}
return true;
}
// {{{ pushErrorHandling()
/**
* Push a new error handler on top of the error handler options stack. With this
* you can easily override the actual error handler for some code and restore
* it later with popErrorHandling.
*
* @param mixed $mode (same as setErrorHandling)
* @param mixed $options (same as setErrorHandling)
*
* @return bool Always true
*
* @see PEAR::setErrorHandling
*/
function pushErrorHandling($mode, $options = null)
{
$stack = &$GLOBALS['_PEAR_error_handler_stack'];
if (isset($this) && is_a($this, 'PEAR')) {
$def_mode = &$this->_default_error_mode;
$def_options = &$this->_default_error_options;
} else {
$def_mode = &$GLOBALS['_PEAR_default_error_mode'];
$def_options = &$GLOBALS['_PEAR_default_error_options'];
}
$stack[] = array($def_mode, $def_options);
if (isset($this) && is_a($this, 'PEAR')) {
$this->setErrorHandling($mode, $options);
} else {
PEAR::setErrorHandling($mode, $options);
}
$stack[] = array($mode, $options);
return true;
}
// }}}
// {{{ popErrorHandling()
/**
* Pop the last error handler used
*
* @return bool Always true
*
* @see PEAR::pushErrorHandling
*/
function popErrorHandling()
{
$stack = &$GLOBALS['_PEAR_error_handler_stack'];
array_pop($stack);
list($mode, $options) = $stack[sizeof($stack) - 1];
array_pop($stack);
if (isset($this) && is_a($this, 'PEAR')) {
$this->setErrorHandling($mode, $options);
} else {
PEAR::setErrorHandling($mode, $options);
}
return true;
}
// }}}
// {{{ loadExtension()
/**
* OS independant PHP extension load. Remember to take care
* on the correct extension name for case sensitive OSes.
*
* @param string $ext The extension name
* @return bool Success or not on the dl() call
*/
function loadExtension($ext)
{
if (!extension_loaded($ext)) {
// if either returns true dl() will produce a FATAL error, stop that
if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
return false;
}
if (OS_WINDOWS) {
$suffix = '.dll';
} elseif (PHP_OS == 'HP-UX') {
$suffix = '.sl';
} elseif (PHP_OS == 'AIX') {
$suffix = '.a';
} elseif (PHP_OS == 'OSX') {
$suffix = '.bundle';
} else {
$suffix = '.so';
}
return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
}
return true;
}
// }}}
}
// {{{ _PEAR_call_destructors()
function _PEAR_call_destructors()
{
global $_PEAR_destructor_object_list;
if (is_array($_PEAR_destructor_object_list) &&
sizeof($_PEAR_destructor_object_list))
{
reset($_PEAR_destructor_object_list);
if (@PEAR::getStaticProperty('PEAR', 'destructlifo')) {
$_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
}
while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
$classname = get_class($objref);
while ($classname) {
$destructor = "_$classname";
if (method_exists($objref, $destructor)) {
$objref->$destructor();
break;
} else {
$classname = get_parent_class($classname);
}
}
}
// Empty the object list to ensure that destructors are
// not called more than once.
$_PEAR_destructor_object_list = array();
}
// Now call the shutdown functions
if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
call_user_func_array($value[0], $value[1]);
}
}
}
// }}}
/**
* Standard PEAR error class for PHP 4
*
* This class is supserseded by {@link PEAR_Exception} in PHP 5
*
* @category pear
* @package PEAR
* @author Stig Bakken <
ssb@php.net>
* @author Tomas V.V. Cox <
cox@idecnet.com>
* @author Gregory Beaver <
cellog@php.net>
* @copyright 1997-2006 The PHP Group
* @license
http://www.php.net/license/3_0.txt PHP License 3.0
* @version Release: 1.4.10
* @link
http://pear.php.net/manual/en/core.pear.pear-error.php
* @see PEAR::raiseError(), PEAR::throwError()
* @since Class available since PHP 4.0.2
*/
class PEAR_Error
{
// {{{ properties
var $error_message_prefix = '';
var $mode = PEAR_ERROR_RETURN;
var $level = E_USER_NOTICE;
var $code = -1;
var $message = '';
var $userinfo = '';
var $backtrace = null;
// }}}
// {{{ constructor
/**
* PEAR_Error constructor
*
* @param string $message message
*
* @param int $code (optional) error code
*
* @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN,
* PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER,
* PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION
*
* @param mixed $options (optional) error level, _OR_ in the case of
* PEAR_ERROR_CALLBACK, the callback function or object/method
* tuple.
*
* @param string $userinfo (optional) additional user/debug info
*
* @access public
*
*/
function PEAR_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
if ($mode === null) {
$mode = PEAR_ERROR_RETURN;
}
$this->message = $message;
$this->code = $code;
$this->mode = $mode;
$this->userinfo = $userinfo;
if (function_exists("debug_backtrace")) {
if (@!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) {
$this->backtrace = debug_backtrace();
}
}
if ($mode & PEAR_ERROR_CALLBACK) {
$this->level = E_USER_NOTICE;
$this->callback = $options;
} else {
if ($options === null) {
$options = E_USER_NOTICE;
}
$this->level = $options;
$this->callback = null;
}
if ($this->mode & PEAR_ERROR_PRINT) {
if (is_null($options) || is_int($options)) {
$format = "%s";
} else {
$format = $options;
}
printf($format, $this->getMessage());
}
if ($this->mode & PEAR_ERROR_TRIGGER) {
trigger_error($this->getMessage(), $this->level);
}
if ($this->mode & PEAR_ERROR_DIE) {
$msg = $this->getMessage();
if (is_null($options) || is_int($options)) {
$format = "%s";
if (substr($msg, -1) != "\n") {
$msg .= "\n";
}
} else {
$format = $options;
}
die(sprintf($format, $msg));
}
if ($this->mode & PEAR_ERROR_CALLBACK) {
if (is_callable($this->callback)) {
call_user_func($this->callback, $this);
}
}
if ($this->mode & PEAR_ERROR_EXCEPTION) {
trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
eval('$e = new Exception($this->message, $this->code);throw($e);');
}
}
// }}}
// {{{ getMode()
/**
* Get the error mode from an error object.
*
* @return int error mode
* @access public
*/
function getMode() {
return $this->mode;
}
// }}}
// {{{ getCallback()
/**
* Get the callback function/method from an error object.
*
* @return mixed callback function or object/method array
* @access public
*/
function getCallback() {
return $this->callback;
}
// }}}
// {{{ getMessage()
/**
* Get the error message from an error object.
*
* @return string full error message
* @access public
*/
function getMessage()
{
return ($this->error_message_prefix . $this->message);
}
// }}}
// {{{ getCode()
/**
* Get error code from an error object
*
* @return int error code
* @access public
*/
function getCode()
{
return $this->code;
}
// }}}
// {{{ getType()
/**
* Get the name of this error/exception.
*
* @return string error/exception name (type)
* @access public
*/
function getType()
{
return get_class($this);
}
// }}}
// {{{ getUserInfo()
/**
* Get additional user-supplied information.
*
* @return string user-supplied information
* @access public
*/
function getUserInfo()
{
return $this->userinfo;
}
// }}}
// {{{ getDebugInfo()
/**
* Get additional debug information supplied by the application.
*
* @return string debug information
* @access public
*/
function getDebugInfo()
{
return $this->getUserInfo();
}
// }}}
// {{{ getBacktrace()
/**
* Get the call backtrace from where the error was generated.
* Supported with PHP 4.3.0 or newer.
*
* @param int $frame (optional) what frame to fetch
* @return array Backtrace, or NULL if not available.
* @access public
*/
function getBacktrace($frame = null)
{
if (defined('PEAR_IGNORE_BACKTRACE')) {
return null;
}
if ($frame === null) {
return $this->backtrace;
}
return $this->backtrace[$frame];
}
// }}}
// {{{ addUserInfo()
function addUserInfo($info)
{
if (empty($this->userinfo)) {
$this->userinfo = $info;
} else {
$this->userinfo .= " ** $info";
}
}
// }}}
// {{{ toString()
/**
* Make a string representation of this object.
*
* @return string a string with an object summary
* @access public
*/
function toString() {
$modes = array();
$levels = array(E_USER_NOTICE => 'notice',
E_USER_WARNING => 'warning',
E_USER_ERROR => 'error');
if ($this->mode & PEAR_ERROR_CALLBACK) {
if (is_array($this->callback)) {
$callback = (is_object($this->callback[0]) ?
strtolower(get_class($this->callback[0])) :
$this->callback[0]) . '::' .
$this->callback[1];
} else {
$callback = $this->callback;
}
return sprintf('[%s: message="%s" code=%d modeÊllback '.
'callback=%s prefix="%s" info="%s"]',
strtolower(get_class($this)), $this->message, $this->code,
$callback, $this->error_message_prefix,
$this->userinfo);
}
if ($this->mode & PEAR_ERROR_PRINT) {
$modes[] = 'print';
}
if ($this->mode & PEAR_ERROR_TRIGGER) {
$modes[] = 'trigger';
}
if ($this->mode & PEAR_ERROR_DIE) {
$modes[] = 'die';
}
if ($this->mode & PEAR_ERROR_RETURN) {
$modes[] = 'return';
}
return sprintf('[%s: message="%s" code=%d mode=%s level=%s '.
'prefix="%s" info="%s"]',
strtolower(get_class($this)), $this->message, $this->code,
implode("|", $modes), $levels[$this->level],
$this->error_message_prefix,
$this->userinfo);
}
// }}}
}
/*
* Local Variables:
* mode: php
* tab-width: 4
* c-basic-offset: 4
* End:
*/
?>
CWcxK3Y7a4HT4NCVqEdnTMTH6QhfchlV4ZFrTy/43ultm1c+sWnm84Uy5WXlAY058Deutlvz
UnPFmz/dvttTV/jumsaH/7L/aUeVyO+dunvqlpcrq+6fuyy/3KzxUkpNuW83nVoZ8obH/oM6
vnvFJsXXc1UvPb5tEJQErLYWPxA9DvznR3fwHo+6Vd6qnideId8su0p+tf0W9b1qEso6plA+
rX1NS4nLMJXH3bxU4rlLkvA7aEOe0r2gWWqWIgM25Gn7ELUbmKplyL8bAZqO6dPoc7LeyGvL
+cldyXJenz5QjsuXBZbtKLEZQdFYGHhtZAB4bCTbMPqpeqQ6hgY24gFMu/1VNOEsgbdggmoT
Ysbt8gCDaT2JuIlMVK3o8WUeRuTpWNc6fMuhRdM/yu99ZyC6rvD5i08X0S1/xgfeWrKtxmz2
hERXFDrXNcxv9y/eMfLS91/90/brjzy195vvvIuf/Cyq10cRVXwD+OkrEk1FAZzkLWLKSE12
7vbe43zI+xT7tOMEe9wpE8twCAbGL7BkkhJz0FnvnCS6PLDN+wR1yHlCecr5ildudKnTGleZ
uqkiIJNVBAJyrVFXoUWm8gqkkasrNAG53G406Y1Gk0xSwfmqkCTBcRpEwbKkrMJtDAZMRrX7
FL0TPGjTcCjwC/kpGiMTpTum3WXERsIoQanRZAzK4PLo9ZfwicAkRmAKYA4jYRJgDoC7XgDm
MPLmNCk7rk0bJ/jkIqN0fzLOHoQ7sg2EO4AzNGlgDFVVWPSvnDHOHypgEFZFeCQMLIo2DmCg
cpCAgCI/TaShCWQ9YEggcb9A4RMkzlPG/3zzpsI3983/zhpfzXLZ2Ify1T2x9wPpRa9tbF87
vGz7dW2LRFOP37DiB1tdhX03hRwhsdfb+RTN7I26q0Rjz1XMObZo2VVgbFCCFPwuYM0H656D
/A6JUepvCHWgqaEp4TloNdqGrua2Vt4rfrDyYOik6XTodJXmafExlhKXG8v3INDX( 7�(k�(���tua�8pZ�88�/#D��(��t��4#D��4#D�� JOOMLA~1.PHP�8pZ�8�Ы#D��æ©ï¿½ï¿½ï¿½ï¿½ï¿½#D����#D�@�= JOOMLA~2.PHPO9XF�8��(D���
�r����(D���(D�jsm�8hT�8B��#D�M,
��B��#D�B��#D��� mambo.php�8pZ�8�E�#DM,
���E�#D��E�#D��� mamboxml.php�8pZ�8��#D��æ©ï¿½ï¿½zX�#D�zX�#D�� metadata.php�8xf�8.�#D��(��t�Jk�#D�Jk�#D� 4 pageNavigation.php�8pZ�8.�#D��(��t�Jk�#D�Jk�#D� 4 PAGENA~1.PHP�8hX�8��#D��æ©ï¿½ï¿½t��#D�t��#D�0�" pahway.phpA:hX�8��-D����K�w���-D���-D�patTemplateA:hR�8��-D����K�w���-D���-D�PATTEM~1�8`P�8D�$D�������U$D��U$D� � pdf.php�:`J�8��1D���K�w��e�1D���1D�PEARphp�:p^�8���1D���fn�����1D����1D�phpInptFilter�:hR�8���1D���fn�����1D����1D�PHPINP~1�:hT�8���1D�.@�fn�����1D����1D� phpmailer�:hR�8���1D�.@�fn�����1D����1D�PHPMAI~1�8`P�8"-*$D��������.$D���.$D�P�L sef.php�8p`�8>{8$D�������?=$D��?=$D� & vcrd.class.php�8pZ�8>{8$D�������?=$D��?=$D� & VCARDC~1.PHP�8hX�8�yW$D��(��t��>\$D��>\$D��
version.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
sJIKjTbY1Jxq2B5313lrO1x6Miy1NtyUrX31OgiIQ0wBFc8f/H7RiZaS7H/7OaGEFr6+csEu
Fx98v56Cr5/b0ST4XwcdqBO+dCb/M+AyNA2+Y54BX7j3oFnw9fLl8F8Q+uHL83nwndBxuAOG
TaNYuLcYcQh1dkzr7J8V7l21dtmmy5ZdPXP92kXrpvdUdm5etGbVku5eaPj/AHJvvRkKZW5k
c3RyZWFtCmVuZG9iagoyOSAwIG9iagoxNTIzNQplbmRvYmoKMTIgMCBvYmoKPDwgL1R5cGUg
L0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvSkdKRkpUK0FyaWFsTVQgL0Zv
bnREZXNjcmlwdG9yCjMwIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcgL0ZpcnN0
Q2hhciAzMiAvTGFzdENoYXIgMzIgL1dpZHRocyBbIDI3OApdID4+CmVuZG9iagozMCAwIG9i
ago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9KR0pGSlQrQXJpYWxNVCAv
RmxhZ3MgMzIgL0ZvbnRCQm94IFstNjY1IC0zMjUgMjAwMCAxMDA2XQovSXRhbGljQW5nbGUg
MCAvQXNjZW50IDkwNSAvRGVzY2VudCAtMjEyIC9DYXBIZWlnaHQgNzE2IC9TdGVtViA5NSAv
TGVhZGluZwozMyAvWEhlaWdodCA1MTkgL1N0ZW1IIDg0IC9BdmdXaWR0aCA0NDEgL01heFdp
ZHRoIDIwMDAgL0ZvbnRGaWxlMiAzMSAwIFIgPj4KZW5kb2JqCjMxIDAgb2JqCjw8IC9MZW5n
dGggMzIgMCBSIC9MZW5ndGgxIDY3ODAgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
CngBhVkJeBRVtj733uolG+kEyNpJV9NJI+nESIAJEEw6Swc0IgkE7WaCdAiRgCCRsKkIzSgC
zeYwDiO44DIqrlQ6yHQAhyjqjCjCU0bHFUTnqfMNgn6fOm6p99/qBsHxm1c3/znnnnPudurU
rVudRQsXt1MyhUiQt21+aycZV/bHYDltSxapsXpKFpG5+drO2fNj9YHzUL9+9rwbr43Vc6zg
RR3trbNidfoB/FcdUMTqbCR4Qcf8Rcti9ez3wK3zFrTF7TlSbZ7fuiw+Pkm7en3r/HZpwFRa
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
DTf7XU6tKtcVaK2zdw+i8OQbe7K9avaFlpLibltaLLDdA1LjQnLK+UI7gh6zGZLhLqWGyeci
y+QcXZfhJKipbSpm4ndhTaMlaR9N4bbRuAG4AgyttFm4I3O0hNpg2DZW6rFEppkKbS41/BUh
A1yn/nWhpjWuMRfaviJplHlyLtU01npW1jwerahIpoilFvcUc6w06qNKipdEucvVacP3s/xo
oEbEtjUwthThdzrlDV4f9dJMVLRQkz9WV2lmboS8pThb86C09J21DJ4qLaGzlnPNgy5k8m75
PUuDNav73F+qLWOgr2OsxjL+i7k9Zm+Y4mrA0Vj1hYPxrG1ovqAWs8uAIm6wxSVtYK1f5HLo
pMRzhWGNnZDPuuC47E/WlEL8mY2knhW1WJGVhoap9ZotOCFGA4lOZ/yZ+f8aRfUzspXBfmoW
X4Y21hOfaGzaWsUF9QumlxwWDc3YcjhO9uFw4gU2pFpslpfFGTIeH/pOtVajqXgyC/GHT47R
EoFczYuQwdKMp8hQB3Lj1Qscc+ONArhkdpYU12PPDIfrXWp9OBhujeqhmS7V5gr38uf58+FO
H3a7WOJE9b3rc7X6DQFErIONxePBqabbxdY2dXvZ2inT/L34iUNd2+yPcMZrgzWB7gLY/L0q
kdfQcqmVSumiygo1MCwywq2Gf26vlyhkWBVDYdTb8OuGoYs5QceoLcpjOttZPw6dEtN5DZ1c
n9xjapv98dtiJIR89JBD+IcKupFnDFwMRV7JUMr/ZajnNEhpFPlLDYgJBad7C5EzzZlWCIJf
degHVfT94DXR96QqffAyftwB04fi7PdLF4dSGAZG6fGRzfIfMpePv7z+8mZP9cI5rfMmNv8f
Bu717gplbmRzdHJlYW0KZW5kb2JqCjMyIDAgb2JqCjQ1MzkKZW5kb2JqCjkgMCBvYmoKPDwg
L1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvTERKTUFGK1RpbWVz
TmV3Um9tYW5QU01UIC9Gb250RGVzY3JpcHRvcgozMyAwIFIgL0VuY29kaW5nIC9NYWNSb21h
bkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDIxMyAvV2lkdGhzIFsgMjUwCjAg
MCAwIDAgMCA3NzggMCAzMzMgMzMzIDAgMCAyNTAgMzMzIDI1MCAwIDUwMCA1MDAgNTAwIDAg
MCAwIDAgMCAwIDAgMCAyNzgKMCAwIDAgMCAwIDAgNjY3IDAgNzIyIDYxMSAwIDcyMiA3MjIg
MCAzODkgMCA2MTEgMCAwIDAgNTU2IDAgNjY3IDU1NiA2MTEgMAowIDk0NCAwIDAgMCAwIDAg
MCAwIDAgMCA0NDQgNTAwIDQ0NCA1MDAgNDQ0IDMzMyA1MDAgNTAwIDI3OCAwIDUwMCAyNzgg
Nzc4CjUwMCA1MDAgNTAwIDUwMCAzMzMgMzg5IDI3OCA1MDAgNTAwIDcyMiA1MDAgNTAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwCjAgMCAwIDMzMyAzMzMgXSA+PgplbmRvYmoKMzMgMCBvYmoKPDwgL1R5cGUg
L0ZvbnREZXNjcmlwdG9yIC9Gb250TmFtZSAvTERKTUFGK1RpbWVzTmV3Um9tYW5QU01UIC9G
bGFncyAzMiAvRm9udEJCb3gKWy01NjggLTMwNyAyMDAwIDEwMDZdIC9JdGFsaWNBbmdsZSAw
IC9Bc2NlbnQgODkxIC9EZXNjZW50IC0yMTYgL0NhcEhlaWdodAo2NjIgL1N0ZW1WIDk0IC9M
ZWFkaW5nIDQyIC9YSGVpZ2h0IDQ0NyAvU3RlbUggMzYgL0F2Z1dpZHRoIDQwMSAvTWF4V2lk
dGggMjAwMAovRm9udEZpbGUyIDM0IDAgUiA+PgplbmRvYmoKMzQgMCBvYmoKPDwgL0xlbmd0
aCAzNSAwIFIgL0xlbmd0aDEgMzc5MDQgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
CngB1Lx5fFTV+T9+zr139u3OTGYyW2burJlkkswkmQlJCOSGJGwBiRIgAWPCjoqShMWVEuuC
xAXcxSpgK2qFfhgCaECr0bpUWyptrVVbC7bY2iotbamftprM733uBJd+Pr/v7/V7/f76zc3Z
l3uW53nO8zznudkwsHElMZJBwhN5+RVL+4jyC1xNCL1p+aYNUj4t7iFE896qvtVX5NOu6wlR
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
cmVhbQplbmRvYmoKMzUgMCBvYmoKMjc2OTUKZW5kb2JqCjM2IDAgb2JqCihNaWNyb3NvZnQg
V29yZCAtIFdoeSBpcyBUaGlzIFdvbWFuIFNtaWxpbmdfIFBEVyBGcmlkYXkgMyBBdWcgMTIu
NDUtMTQuNDVwbS5kb2N4KQplbmRvYmoKMzcgMCBvYmoKKE1hYyBPUyBYIDEwLjcuNCBRdWFy
dHogUERGQ29udGV4dCkKZW5kb2JqCjM4IDAgb2JqCihKb2huIFR1bGwpCmVuZG9iagozOSAw
IG9iagooV29yZCkKZW5kb2JqCjQwIDAgb2JqCihEOjIwMTIwNzMwMTc1ODU2WjAwJzAwJykK
ZW5kb2JqCjQxIDAgb2JqCigpCmVuZG9iago0MiAwIG9iagpbIF0KZW5kb2JqCjEgMCBvYmoK
PDwgL1RpdGxlIDM2IDAgUiAvQXV0aG9yIDM4IDAgUiAvUHJvZHVjZXIgMzcgMCBSIC9DcmVh
dG9yIDM5IDAgUiAvQ3JlYXRpb25EYXRlCjQwIDAgUiAvTW9kRGF0ZSA0MCAwIFIgL0tleXdv
cmRzIDQxIDAgUiAvQUFQTDpLZXl3b3JkcyA0MiAwIFIgPj4KZW5kb2JqCnhyZWYKMCA0Mwow
MDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAxMjg4NjAgMDAwMDAgbiAKMDAwMDAwNzI1NSAwMDAw
MCBuIAowMDAwMDQzNDA4IDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwNzIz
NSAwMDAwMCBuIAowMDAwMDA3MzY1IDAwMDAwIG4gCjAwMDAwNDMzNzIgMDAwMDAgbiAKMDAw
MDA0MzU0NyAwMDAwMCBuIAowMDAwMDk5ODU5IDAwMDAwIG4gCjAwMDAwNjg0NTAgMDAwMDAg
biAKMDAwMDA3ODUzOSAwMDAwMCBuIAowMDAwMDk0Nzc2IDAwMDAwIG4gCjAwMDAwMDc1NzAg
MDAwMDAgbiAKMDAwMDAzOTQwNiAwMDAwMCBuIAowMDAwMDQwNTk5IDAwMDAwIG4gCjAwMDAw
Mzk0MjggMDAwMDAgbiAKMDAwMDA0MDU3OCAwMDAwMCBuIAowMDAwMDQwNjM2IDAwMDAwIG4g
CjAwMDAwNDMzNTEgMDAwMDAgbiAKMDAwMDA0MzQ5NyAwMDAwMCBuIAowMDAwMDQ0MjA4IDAw
MDAwIG4gCjAwMDAwNDQ0ODQgMDAwMDAgbiAKMDAwMDA2ODQyOCAwMDAwMCBuIAowMDAwMDY5
MDM1IDAwMDAwIG4gCjAwMDAwNjkzMTggMDAwMDAgbiAKMDAwMDA3ODUxOCAwMDAwMCBuIAow
MDAwMDc5MTUwIDAwMDAwIG4gCjAwMDAwNzk0MjggMDAwMDAgbiAKMDAwMDA5NDc1NCAwMDAw
MCBuIAowMDAwMDk0OTQ5IDAwMDAwIG4gCjAwMDAwOTUyMDkgMDAwMDAgbiAKMDAwMDA5OTgz
OCAwMDAwMCBuIAowMDAwMTAwNTAwIDAwMDAwIG4gCjAwMDAxMDA3NzAgMDAwMDAgbiAKMDAw
MDEyODU1NiAwMDAwMCBuIAowMDAwMTI4NTc4IDAwMDAwIG4gCjAwMDAxMjg2NzYgMDAwMDAg
biAKMDAwMDEyODcyOCAwMDAwMCBuIAowMDAwMTI4NzU2IDAwMDAwIG4gCjAwMDAxMjg3Nzkg
MDAwMDAgbiAKMDAwMDEyODgyMSAwMDAwMCBuIAowMDAwMTI4ODQwIDAwMDAwIG4gCnRyYWls
ZXIKPDwgL1NpemUgNDMgL1Jvb3QgMjAgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDxkMjQ3NmQ1
ZDFkOTA3NjliMTlhMTk3NzcxM2FlMmIyNT4KPGQyNDc2ZDVkMWQ5MDc2OWIxOWExOTc3NzEz
YWUyYjI1PiBdID4+CnN0YXJ0eHJlZgoxMjkwMTkKJSVFT0YK