<?php /*- template.gen.inc.php
.---------------------------------------------------------------------------.
|  Software: Document Template Engine                                       |
|   Version: 2.1                                                            |
|   Contact: via www.uniwits.com                                            |
|      Info: http://www.uniwits.com/DTEv2/                                  |
|   Support: http://www.uniwits.com/support/                                |
| ------------------------------------------------------------------------- |
|     Admin: Yuxiang Mao (project admininistrator)                          |
|   Authors: Yuxiang Mao (Uniwits) support@reserv.uniwits.com               |
|   Founder: Yuxiang Mao                                                    |
| Copyright (c) 2010-2012, Yuxiang Mao. All Rights Reserved.                |
| ------------------------------------------------------------------------- |
|   License: Distributed under Uniwits Shareware License (USL)              |
|            http://www.uniwits.com/licenses/shareware/                     |
| This program is distributed as a part of software provided by Uniwits     |
| System WITHOUT ANY WARRANTY; without even the implied warranty of         |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
| ------------------------------------------------------------------------- |
*/ define("LST_INITIAL",0); define("LST_Hash",1); define("LST_Hash2",2); define("LST_Hash2I",3); define("LST_Hash2ID",4); define("LST_Hash2IH",5); define("LST_Hash2IH2",6); define("LST_Hash2IC",7); define("LST_Hash2ICI",8); define("LST_Hash2ICID",9); define("LST_Hash2ICIH",10); define("LST_Hash2ICIH2",11); define("LST_HashQ",12); define("LST_HashQI",13); define("LST_HashQID",14); define("LST_HashQIQ",15); define("LST_HashQIQH",16); define("LST_HashQIC",17); define("LST_HashQICI",18); define("LST_HashQICID",19); define("LST_HashQICIQ",20); define("LST_HashQICIQH",21); define("LST_Less",22); define("LST_LessQ",23); define("LST_LessQI",24); define("LST_LessQID",25); define("LST_LessQIQ",26); define("LST_LessQIQG",27); define("LST_LessQSt",28); define("LST_LessQStF",29); define("LST_LessQStFi",30); define("LST_LessQStFil",31); define("LST_LessQStFile",32); define("LST_LessQStFileLp",33); define("LST_LessQStFileLpNBS",34); define("LST_LessQStFileLpBS",35); define("LST_LessQStFileLpSRp",36); define("LST_LessQStFileLpSRpQ",37); define("LST_LessQStFileLpSRpQG",38); define("LST_LessQStA",39); define("LST_LessQStAr",40); define("LST_LessQStAre",41); define("LST_LessQStArea",42); define("LST_LessQStAreaLp",43); define("LST_LessQStAreaLpI",44); define("LST_LessQStAreaLpID",45); define("LST_LessQStAreaLpIRp",46); define("LST_LessQStAreaLpIRpQ",47); define("LST_LessQStAreaLpIRpQG",48); define("LST_LessQSl",49); define("LST_LessQSlI",50); define("LST_LessQSlID",51); define("LST_LessQSlIQ",52); define("LST_LessQSlIQG",53); define("LST_LessQH",54); define("LST_LessQHD",55); define("LST_LessQHDQ",56); define("LST_LessQHDQG",57); define("LST_Hash2ISqLp",58); define("LST_Hash2ISqLpI",59); define("LST_Hash2ISqLpIS",60); define("LST_Hash2ISqLpID",61); define("LST_Hash2ISqLpIH",62); define("LST_Hash2ISqLpICm",63); define("LST_Hash2ISqLpIRp",64); define("LST_Hash2ISqLpIRpH",65); define("LST_Hash2ISqLpIRpH2",66); define("LST_HashQICIB",67); define("LST_HashQICIBI",68); define("LST_HashQICIBIS",69); define("LST_HashQICIBID",70); define("LST_HashQICIBICm",71); define("LST_HashQICIBIB",72); define("LST_HashQICIBIBQ",73); define("LST_HashQICIBIBQH",74); define("TA_RAWOUT",1); define("TA_QUERY",2); define("TA_AREA",3); define("TA_CALLAREA",4); define("TA_RAWSELECT",5); define("MTHD_RAW",0); define("MTHD_URL",1); define("MTHD_HTML",2); define("MTHD_HTMLBR",3); define("MTHD_CESC",4); define("MTHD_HTMLPL",5); define("MTHD_HTMLPLBR",6); define("MTHD_DBLHYP",7); class TemplateGenerator { var $tmplFileName; var $fixedLabels; var $dependsOnFiles; function TemplateGenerator($filename,$fixedLabels=array(),$dependsOnFiles=array()) { $this->tmplFileName=$filename; $this->fixedLabels=$fixedLabels; $this->dependsOnFiles=$dependsOnFiles; } function generate() { $parsedData=$this->parse($this->tmplFileName); $parsedData['dependsOnFiles']=array(); foreach ($this->dependsOnFiles as $dof) $parsedData['dependsOnFiles'][$dof]=stat($dof); return $parsedData; } function parse($filename) { $text=file_get_contents($filename); $lexPoints=$this->lexicalPoints($text); $parseStack=array(); $areaSizeStack=array(0); $areaNameStack=array(NULL); $areaAccessTable=array(); for ($i=0;$i<sizeof($lexPoints);$i++) { switch ($lexPoints[$i][1]) { case -1; if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) $parseStack[sizeof($parseStack)-1][1].=$lexPoints[$i][2]; else { $areaSizeStack[sizeof($areaSizeStack)-1]++; array_push($parseStack,array(TA_RAWOUT,$lexPoints[$i][2])); } break; case LST_Hash2IH2: case LST_Hash2ICIH2: case LST_Hash2ISqLpIRpH2: $pointText=$lexPoints[$i][2]; $pointText=substr($pointText,2,strlen($pointText)-4); $pieces=explode(":",$pointText); if (sizeof($pieces)>1) { $method=$pieces[0]; $pointText=$pieces[1]; } else $method=false; $pieces=explode("(",$pointText); if (sizeof($pieces)>1) { $id=$pieces[0]; $pointText=substr($pieces[1],0,strlen($pieces[1])-1); $subids=explode(",",$pointText); foreach ($subids as &$si) $si=trim($si); $curStartIdx=0; $label=$this->fixedLabels[$id]; $idxMax=strlen($label)-1; while (($pidx=strpos($label,'%',$curStartIdx))!==false) { if ($pidx<$idxMax) { if ($curStartIdx<$pidx) { $content=substr($label,$curStartIdx,$pidx-$curStartIdx); if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) { $parseStack[sizeof($parseStack)-1][1].=$content; } else { $areaSizeStack[sizeof($areaSizeStack)-1]++; array_push($parseStack,array(TA_RAWOUT,$this->transform($content,$method))); } } if ('1'<=$label[$pidx+1] && $label[$pidx+1]<='9') { $cmpldmethod=$this->parse_method($method); $subid=$subids[(int)($label[$pidx+1]-'1')]; array_push($parseStack,array(TA_QUERY,$cmpldmethod,explode('#',$subid))); $curStartIdx=$pidx+2; $areaSizeStack[sizeof($areaSizeStack)-1]++; } else if ($label[$pidx+1]==='%') { if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) $parseStack[sizeof($parseStack)-1][1].='%'; else { array_push($parseStack,array(TA_RAWOUT,'%')); $areaSizeStack[sizeof($areaSizeStack)-1]++; } $curStartIdx=$pidx+2; } else { if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) $parseStack[sizeof($parseStack)-1][1].='%'; else { array_push($parseStack,array(TA_RAWOUT,'%')); $areaSizeStack[sizeof($areaSizeStack)-1]++; } $curStartIdx=$pidx+1; } } else break; } if ($curStartIdx<strlen($label)) { if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) $parseStack[sizeof($parseStack)-1][1].=substr($label,$curStartIdx); else { $areaSizeStack[sizeof($areaSizeStack)-1]++; array_push($parseStack,array(TA_RAWOUT,substr($label,$curStartIdx))); } } } else { $id=$pointText; if ($areaSizeStack[sizeof($areaSizeStack)-1]>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) { $parseStack[sizeof($parseStack)-1][1].=$this->transform($this->fixedLabels[$id],$method); } else { $areaSizeStack[sizeof($areaSizeStack)-1]++; array_push($parseStack,array(TA_RAWOUT,$this->transform($this->fixedLabels[$id],$method))); } } break; case LST_HashQIQH: case LST_HashQICIQH: $areaSizeStack[sizeof($areaSizeStack)-1]++; $pointText=$lexPoints[$i][2]; $id=substr($pointText,2,strlen($pointText)-4); $pieces=explode(":",$id); if (sizeof($pieces)>1) { $method=$this->parse_method($pieces[0]); $id=$pieces[1]; } else $method=array(MTHD_RAW); array_push($parseStack,array(TA_QUERY,$method,explode('#',$id))); break; case LST_HashQICIBIBQH: $areaSizeStack[sizeof($areaSizeStack)-1]++; $pointText=$lexPoints[$i][2]; $tail=substr($pointText,2,strlen($pointText)-4); $pieces=explode(":",$tail); if (sizeof($pieces)>1) { $method=$this->parse_method($pieces[0]); $query=$pieces[1]; } else { $method=array(MTHD_RAW); $query=$tail; } list($qid,$tail)=explode('[',$query); $idseq=substr($tail,0,strlen($tail)-1); $ids=explode(',',$idseq); $texts=array(); for ($j=0;$j<sizeof($ids);$j++) array_push($texts,$this->fixedLabels[trim($ids[$j])]); array_push($parseStack,array(TA_RAWSELECT,$method,explode('#',$qid),$texts)); break; case LST_LessQIQG: $pointText=$lexPoints[$i][2]; $id=substr($pointText,2,strlen($pointText)-4); $aids=explode('#',$id); array_push($areaSizeStack,0); array_push($areaNameStack,$id); break; case LST_LessQStFileLpSRpQG: $pointText=$lexPoints[$i][2]; $fileid=stripslashes(substr($pointText,8,strlen($pointText)-11)); $filename=$this->fixedLabels[$fileid]; if (!empty($filename)) { if (!( $filename[0]==='/' || $filename[0]==='\\' || strpos($filename,':\\')!==false || strpos($filename,':/')!==false)) $filename=dirname($this->tmplFileName).'/'.$filename; $tObj=new TemplateGenerator($filename,$this->fixedLabels); $fileStructure=$tObj->generate(); $fileAccessTable=$fileStructure['accesstable']; $root=$fileStructure['root']; $parsedi=0; if (sizeof($root)>0 && sizeof($parseStack)>0 && $root[0][0]==TA_RAWOUT && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) { $parseStack[sizeof($parseStack)-1][1].=$root[0][1]; $parsedi++; } for (;$parsedi<sizeof($root);$parsedi++) { array_push($parseStack,$root[$parsedi]); $areaSizeStack[sizeof($areaSizeStack)-1]++; } foreach ($fileAccessTable as $aid=>$structure) { $areaAccessTable[$aid]=$structure; } } break; case LST_LessQStAreaLpIRpQG: $areaSizeStack[sizeof($areaSizeStack)-1]++; $pointText=$lexPoints[$i][2]; $id=substr($pointText,8,strlen($pointText)-11); array_push($parseStack,array(TA_CALLAREA,explode('#',$id))); break; case LST_LessQSlIQG: $pointText=$lexPoints[$i][2]; $id=substr($pointText,3,strlen($pointText)-5); if (sizeof($areaSizeStack)>1 && $areaNameStack[sizeof($areaNameStack)-1]==$id) { $aqid=explode('#',$id); $subContent=array(); $areaSize=array_pop($areaSizeStack); for ($si=$areaSize-1;$si>=0;$si--) $subContent[$si]=array_pop($parseStack); array_push($parseStack,$substruct=array(TA_AREA,$aqid,$subContent)); $areaAccessTable[$aqid[sizeof($aqid)-1]]=&$substruct[2]; $areaSizeStack[sizeof($areaSizeStack)-1]++; array_pop($areaNameStack); } else trigger_error("Unmatched area closing: ".$id,E_USER_WARNING); break; case LST_LessQHDQG: $pointText=$lexPoints[$i][2]; $num=substr($pointText,3,strlen($pointText)-5); if (sizeof($parseStack)>0 && $parseStack[sizeof($parseStack)-1][0]==TA_RAWOUT) $parseStack[sizeof($parseStack)-1][1].=str_repeat('#',$num); else { $areaSizeStack[sizeof($areaSizeStack)-1]++; array_push($parseStack,array(TA_RAWOUT,str_repeat('#',$num))); } break; } } if (sizeof($areaSizeStack)>1) { for ($i=1;$i<sizeof($areaSizeStack);$i++) trigger_error("Unmatched area opening:".$areaNameStack[$i]."\n",E_USER_WARNING); } return array('accesstable'=>$areaAccessTable,'root'=>$parseStack); } function parse_method($methodstr) { if (!$methodstr) return array(MTHD_RAW); $methodarr=array(); $ms=$methodstr; $si=0; while ($si<strlen($ms)) { $lm=null; if (strncmp($ms,'url',3)==0) { $ms=substr($ms,3); array_push($methodarr,MTHD_URL); } else if (strncmp($ms,'htmlbr',6)==0) { $ms=substr($ms,6); array_push($methodarr,MTHD_HTMLBR); } else if (strncmp($ms,'htmlplbr',8)==0) { $ms=substr($ms,8); array_push($methodarr,MTHD_HTMLPLBR); } else if (strncmp($ms,'htmlpl',6)==0) { $ms=substr($ms,6); array_push($methodarr,MTHD_HTMLPL); } else if (strncmp($ms,'html',4)==0) { $ms=substr($ms,4); array_push($methodarr,MTHD_HTML); } else if (strncmp($ms,'cesc',4)==0) { $ms=substr($ms,4); array_push($methodarr,MTHD_CESC); } else if (strncmp($ms,'dblhyp',6)==0) { $ms=substr($ms,6); array_push($methodarr,MTHD_DBLHYP); } else { trigger_error("<pre><b>Unsupported output method: '$method'.</b></pre>",E_USER_WARNING); break; } } return $methodarr; } static function parse_links($html) { return preg_replace('/\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i', "<a href=\"\\0\">\\0</a>",$html); } function transform($str,$method) { $methodarr=$this->parse_method($method); for ($mi=sizeof($methodarr)-1;$mi>=0;$mi--) { switch ($methodarr[$mi]) { case MTHD_RAW: break; case MTHD_URL: $str=urlencode($str); break; case MTHD_HTML: $str=htmlspecialchars($str); break; case MTHD_HTMLBR: $str=nl2br(htmlspecialchars($str)); break; case MTHD_CESC: $str=addcslashes($str,"\0..\37\\'\""); break; case MTHD_HTMLPL: $str=htmlspecialchars($str); $str=TemplateGenerator::parse_links($str); break; case MTHD_HTMLPLBR: $str=nl2br(htmlspecialchars($str)); $str=TemplateGenerator::parse_links($str); break; case MTHD_DBLHYP: $str=str_replace('-','--',$str); break; } } return $str; } function lexicalPoints($text) { $DFA=$this->lexicalAutomaton(); $points=array(); $stateNo=LST_INITIAL; $pointBuffer=array(); $skippedBuffer=array(); for ($i=0;;) { if ($DFA[$stateNo][0][3]==true) { $pointStart=$i-sizeof($pointBuffer); if (sizeof($skippedBuffer)>0) { $points[sizeof($points)]=array($pointStart-sizeof($skippedBuffer),-1,implode('',$skippedBuffer)); $skippedBuffer=array(); } $points[sizeof($points)]=array($pointStart,$stateNo,implode('',$pointBuffer)); $pointBuffer=array(); $stateNo=LST_INITIAL; } else if ($i<strlen($text)) { $nextStateNo=-1; foreach($DFA[$stateNo] as $transition) { if ($transition[0]<=$text[$i] && $text[$i]<=$transition[1]) { $pointBuffer[sizeof($pointBuffer)]=$text[$i]; $nextStateNo=$transition[2]; break; } } if ($nextStateNo<0) { if (sizeof($pointBuffer)>0) $skippedBuffer=array_merge($skippedBuffer,$pointBuffer); $skippedBuffer[sizeof($skippedBuffer)]=$text[$i]; $pointBuffer=array(); $stateNo=LST_INITIAL; } else $stateNo=$nextStateNo; $i++; } else break; } if (sizeof($skippedBuffer)>0) $points[sizeof($points)]=array(strlen($text)-sizeof($skippedBuffer),-1,implode('',$skippedBuffer)); return $points; } function lexicalAutomaton() { return array( LST_INITIAL =>array( array('#','#',LST_Hash,false), array('<','<',LST_Less,false)), LST_Hash =>array( array('#','#',LST_Hash2,false), array('?','?',LST_HashQ,false)), LST_Hash2 =>array( array('0','9',LST_Hash2I,false), array('a','z',LST_Hash2I,false), array('A','Z',LST_Hash2I,false), array('-','-',LST_Hash2I,false), array('_','_',LST_Hash2I,false)), LST_Hash2I =>array( array('0','9',LST_Hash2I,false), array('a','z',LST_Hash2I,false), array('A','Z',LST_Hash2I,false), array('-','-',LST_Hash2I,false), array('_','_',LST_Hash2I,false), array('.','.',LST_Hash2ID,false), array('#','#',LST_Hash2IH,false), array(':',':',LST_Hash2IC,false), array('(','(',LST_Hash2ISqLp,false)), LST_Hash2ID =>array( array('0','9',LST_Hash2I,false), array('a','z',LST_Hash2I,false), array('A','Z',LST_Hash2I,false)), array('-','-',LST_Hash2I,false), array('_','_',LST_Hash2I,false), LST_Hash2IH =>array( array('#','#',LST_Hash2IH2,false)), LST_Hash2IH2 =>array( array('','',-1,true)), LST_Hash2IC =>array( array('0','9',LST_Hash2ICI,false), array('a','z',LST_Hash2ICI,false), array('A','Z',LST_Hash2ICI,false), array('-','-',LST_Hash2ICI,false), array('_','_',LST_Hash2ICI,false)), LST_Hash2ICI =>array( array('0','9',LST_Hash2ICI,false), array('a','z',LST_Hash2ICI,false), array('A','Z',LST_Hash2ICI,false), array('-','-',LST_Hash2ICI,false), array('_','_',LST_Hash2ICI,false), array('.','.',LST_Hash2ICID,false), array('(','(',LST_Hash2ISqLp,false), array('#','#',LST_Hash2ICIH,false)), LST_Hash2ICID =>array( array('0','9',LST_Hash2ICI,false), array('a','z',LST_Hash2ICI,false), array('A','Z',LST_Hash2ICI,false), array('-','-',LST_Hash2ICI,false), array('_','_',LST_Hash2ICI,false)), LST_Hash2ICIH =>array( array('0','9',LST_Hash2ICI,false), array('a','z',LST_Hash2ICI,false), array('A','Z',LST_Hash2ICI,false), array('-','-',LST_Hash2ICI,false), array('_','_',LST_Hash2ICI,false), array('#','#',LST_Hash2ICIH2,false)), LST_Hash2ICIH2 =>array( array('','',-1,true)), LST_HashQ =>array( array('0','9',LST_HashQI,false), array('a','z',LST_HashQI,false), array('A','Z',LST_HashQI,false), array('-','-',LST_HashQI,false), array('_','_',LST_HashQI,false)), LST_HashQI =>array( array('0','9',LST_HashQI,false), array('a','z',LST_HashQI,false), array('A','Z',LST_HashQI,false), array('-','-',LST_HashQI,false), array('_','_',LST_HashQI,false), array('.','.',LST_HashQID,false), array('?','?',LST_HashQIQ,false), array(':',':',LST_HashQIC,false), array('[','[',LST_HashQICIB,false), array('#','#',LST_HashQICID,false)), LST_HashQID =>array( array('0','9',LST_HashQI,false), array('a','z',LST_HashQI,false), array('A','Z',LST_HashQI,false), array('-','-',LST_HashQI,false), array('_','_',LST_HashQI,false)), LST_HashQIQ =>array( array('#','#',LST_HashQIQH,false)), LST_HashQIQH =>array( array('','',-1,true)), LST_HashQIC =>array( array('0','9',LST_HashQICI,false), array('a','z',LST_HashQICI,false), array('A','Z',LST_HashQICI,false), array('-','-',LST_HashQICI,false), array('_','_',LST_HashQICI,false)), LST_HashQICI =>array( array('0','9',LST_HashQICI,false), array('a','z',LST_HashQICI,false), array('A','Z',LST_HashQICI,false), array('-','-',LST_HashQICI,false), array('_','_',LST_HashQICI,false), array('.','.',LST_HashQICID,false), array('?','?',LST_HashQICIQ,false), array('#','#',LST_HashQICID,false), array('[','[',LST_HashQICIB,false)), LST_HashQICID =>array( array('0','9',LST_HashQICI,false), array('a','z',LST_HashQICI,false), array('A','Z',LST_HashQICI,false), array('-','-',LST_HashQICI,false), array('_','_',LST_HashQICI,false)), LST_HashQICIQ =>array( array('#','#',LST_HashQICIQH,false)), LST_HashQICIQH =>array( array('','',-1,true)), LST_Less =>array( array('?','?',LST_LessQ,false)), LST_LessQ =>array( array('0','9',LST_LessQI,false), array('a','z',LST_LessQI,false), array('A','Z',LST_LessQI,false), array('-','-',LST_LessQI,false), array('_','_',LST_LessQI,false), array('*','*',LST_LessQSt,false), array('/','/',LST_LessQSl,false), array('#','#',LST_LessQH,false)), LST_LessQI =>array( array('0','9',LST_LessQI,false), array('a','z',LST_LessQI,false), array('A','Z',LST_LessQI,false), array('-','-',LST_LessQI,false), array('_','_',LST_LessQI,false), array('.','.',LST_LessQID,false), array('?','?',LST_LessQIQ,false), array('#','#',LST_LessQID,false)), LST_LessQID =>array( array('0','9',LST_LessQI,false), array('a','z',LST_LessQI,false), array('A','Z',LST_LessQI,false), array('-','-',LST_LessQI,false), array('_','_',LST_LessQI,false)), LST_LessQIQ =>array( array('>','>',LST_LessQIQG,false)), LST_LessQIQG =>array( array('','',-1,true)), LST_LessQSt =>array( array('f','f',LST_LessQStF,false), array('a','a',LST_LessQStA,false)), LST_LessQStF =>array( array('i','i',LST_LessQStFi,false)), LST_LessQStFi =>array( array('l','l',LST_LessQStFil,false)), LST_LessQStFil =>array( array('e','e',LST_LessQStFile,false)), LST_LessQStFile =>array( array('(','(',LST_LessQStFileLp,false)), LST_LessQStFileLp =>array( array("\0","\x5B",LST_LessQStFileLpNBS,false), array("\x5C","\x5C",LST_LessQStFileLpBS,false), array("\x5D","\xFF",LST_LessQStFileLpNBS,false)), LST_LessQStFileLpNBS =>array( array("\0","\x28",LST_LessQStFileLpNBS,false), array("\x29","\x29",LST_LessQStFileLpSRp,false), array("\x2A","\x5B",LST_LessQStFileLpNBS,false), array("\x5C","\x5C",LST_LessQStFileLpBS,false), array("\x5D","\xFF",LST_LessQStFileLpNBS,false)), LST_LessQStFileLpBS =>array( array("\0","\xFF",LST_LessQStFileLpNBS,false)), LST_LessQStFileLpSRp =>array( array('?','?',LST_LessQStFileLpSRpQ,false)), LST_LessQStFileLpSRpQ =>array( array('>','>',LST_LessQStFileLpSRpQG,false)), LST_LessQStFileLpSRpQG =>array( array('','',-1,true)), LST_LessQStA =>array( array('r','r',LST_LessQStAr,false)), LST_LessQStAr =>array( array('e','e',LST_LessQStAre,false)), LST_LessQStAre =>array( array('a','a',LST_LessQStArea,false)), LST_LessQStArea =>array( array('(','(',LST_LessQStAreaLp,false)), LST_LessQStAreaLp =>array( array('0','9',LST_LessQStAreaLpI,false), array('A','Z',LST_LessQStAreaLpI,false), array('a','z',LST_LessQStAreaLpI,false), array('-','-',LST_LessQStAreaLpI,false), array('_','_',LST_LessQStAreaLpI,false)), LST_LessQStAreaLpI =>array( array('0','9',LST_LessQStAreaLpI,false), array('A','Z',LST_LessQStAreaLpI,false), array('a','z',LST_LessQStAreaLpI,false), array('-','-',LST_LessQStAreaLpI,false), array('_','_',LST_LessQStAreaLpI,false), array('.','.',LST_LessQStAreaLpID,false), array(')',')',LST_LessQStAreaLpIRp,false), array('#','#',LST_LessQStAreaLpID,false)), LST_LessQStAreaLpID =>array( array('0','9',LST_LessQStAreaLpI,false), array('A','Z',LST_LessQStAreaLpI,false), array('a','z',LST_LessQStAreaLpI,false), array('-','-',LST_LessQStAreaLpI,false), array('_','_',LST_LessQStAreaLpI,false)), LST_LessQStAreaLpIRp =>array( array('?','?',LST_LessQStAreaLpIRpQ,false)), LST_LessQStAreaLpIRpQ =>array( array('>','>',LST_LessQStAreaLpIRpQG,false)), LST_LessQStAreaLpIRpQG =>array( array('','',-1,true)), LST_LessQSl =>array( array('0','9',LST_LessQSlI,false), array('a','z',LST_LessQSlI,false), array('A','Z',LST_LessQSlI,false), array('-','-',LST_LessQSlI,false), array('_','_',LST_LessQSlI,false)), LST_LessQSlI =>array( array('0','9',LST_LessQSlI,false), array('a','z',LST_LessQSlI,false), array('A','Z',LST_LessQSlI,false), array('-','-',LST_LessQSlI,false), array('_','_',LST_LessQSlI,false), array('.','.',LST_LessQSlID,false), array('?','?',LST_LessQSlIQ,false), array('#','#',LST_LessQSlID,false)), LST_LessQSlID =>array( array('0','9',LST_LessQSlI,false), array('a','z',LST_LessQSlI,false), array('A','Z',LST_LessQSlI,false), array('-','-',LST_LessQSlI,false), array('_','_',LST_LessQSlI,false)), LST_LessQSlIQ =>array( array('>','>',LST_LessQSlIQG,false)), LST_LessQSlIQG =>array( array('','',-1,true)), LST_LessQH =>array( array('0','9',LST_LessQHD,false)), LST_LessQHD =>array( array('0','9',LST_LessQHD,false), array('?','?',LST_LessQHDQ,false)), LST_LessQHDQ =>array( array('>','>',LST_LessQHDQG,false)), LST_LessQHDQG =>array( array('','',-1,true)), LST_Hash2ISqLp =>array( array('0','9',LST_Hash2ISqLpI,false), array('a','z',LST_Hash2ISqLpI,false), array('A','Z',LST_Hash2ISqLpI,false), array('-','-',LST_Hash2ISqLpI,false), array('_','_',LST_Hash2ISqLpI,false), array(' ',' ',LST_Hash2ISqLp,false), array('\t','\t',LST_Hash2ISqLp,false), array('\r','\r',LST_Hash2ISqLp,false), array('\n','\n',LST_Hash2ISqLp,false)), LST_Hash2ISqLpI =>array( array('0','9',LST_Hash2ISqLpI,false), array('a','z',LST_Hash2ISqLpI,false), array('A','Z',LST_Hash2ISqLpI,false), array('-','-',LST_Hash2ISqLpI,false), array('_','_',LST_Hash2ISqLpI,false), array('#','#',LST_Hash2ISqLpIH,false), array('.','.',LST_Hash2ISqLpID,false), array(',',',',LST_Hash2ISqLpICm,false), array(')',')',LST_Hash2ISqLpIRp,false), array(' ',' ',LST_Hash2ISqLpIS,false), array('\t','\t',LST_Hash2ISqLpIS,false), array('\r','\r',LST_Hash2ISqLpIS,false), array('\n','\n',LST_Hash2ISqLpIS,false)), LST_Hash2ISqLpIS =>array( array(')',')',LST_Hash2ISqLpIRp,false), array(' ',' ',LST_Hash2ISqLpIS,false), array('\t','\t',LST_Hash2ISqLpIS,false), array('\r','\r',LST_Hash2ISqLpIS,false), array('\n','\n',LST_Hash2ISqLpIS,false), array(',',',',LST_Hash2ISqLpICm,false)), LST_Hash2ISqLpID =>array( array('0','9',LST_Hash2ISqLpI,false), array('a','z',LST_Hash2ISqLpI,false), array('A','Z',LST_Hash2ISqLpI,false), array('-','-',LST_Hash2ISqLpI,false), array('_','_',LST_Hash2ISqLpI,false)), LST_Hash2ISqLpIH =>array( array('0','9',LST_Hash2ISqLpI,false), array('a','z',LST_Hash2ISqLpI,false), array('A','Z',LST_Hash2ISqLpI,false), array('-','-',LST_Hash2ISqLpI,false), array('_','_',LST_Hash2ISqLpI,false)), LST_Hash2ISqLpICm =>array( array('0','9',LST_Hash2ISqLpI,false), array('a','z',LST_Hash2ISqLpI,false), array('A','Z',LST_Hash2ISqLpI,false), array('-','-',LST_Hash2ISqLpI,false), array('_','_',LST_Hash2ISqLpI,false), array(' ',' ',LST_Hash2ISqLpICm,false), array('\t','\t',LST_Hash2ISqLpICm,false), array('\r','\r',LST_Hash2ISqLpICm,false), array('\n','\n',LST_Hash2ISqLpICm,false)), LST_Hash2ISqLpIRp =>array( array('#','#',LST_Hash2ISqLpIRpH,false)), LST_Hash2ISqLpIRpH =>array( array('#','#',LST_Hash2ISqLpIRpH2,false)), LST_Hash2ISqLpIRpH2 =>array( array('','',-1,true)), LST_HashQICIB =>array( array('0','9',LST_HashQICIBI,false), array('a','z',LST_HashQICIBI,false), array('A','Z',LST_HashQICIBI,false), array('-','-',LST_HashQICIBI,false), array('_','_',LST_HashQICIBI,false), array(' ',' ',LST_HashQICIB,false), array("\t","\t",LST_HashQICIB,false), array("\r","\r",LST_HashQICIB,false), array("\n","\n",LST_HashQICIB,false)), LST_HashQICIBI =>array( array('0','9',LST_HashQICIBI,false), array('a','z',LST_HashQICIBI,false), array('A','Z',LST_HashQICIBI,false), array('-','-',LST_HashQICIBI,false), array('_','_',LST_HashQICIBI,false), array('.','.',LST_HashQICIBID,false), array(',',',',LST_HashQICIBICm,false), array(']',']',LST_HashQICIBIB,false), array(' ',' ',LST_HashQICIBIS,false), array("\t","\t",LST_HashQICIBIS,false), array("\r","\r",LST_HashQICIBIS,false), array("\n","\n",LST_HashQICIBIS,false)), LST_HashQICIBIS =>array( array(']',']',LST_HashQICIBIB,false), array(' ',' ',LST_HashQICIBIS,false), array("\t","\t",LST_HashQICIBIS,false), array("\r","\r",LST_HashQICIBIS,false), array("\n","\n",LST_HashQICIBIS,false), array(',',',',LST_HashQICIBICm,false)), LST_HashQICIBID =>array( array('0','9',LST_HashQICIBI,false), array('a','z',LST_HashQICIBI,false), array('A','Z',LST_HashQICIBI,false), array('-','-',LST_HashQICIBI,false), array('_','_',LST_HashQICIBI,false)), LST_HashQICIBICm =>array( array('0','9',LST_HashQICIBI,false), array('a','z',LST_HashQICIBI,false), array('A','Z',LST_HashQICIBI,false), array('-','-',LST_HashQICIBI,false), array('_','_',LST_HashQICIBI,false), array(' ',' ',LST_HashQICIBICm,false), array("\t","\t",LST_HashQICIBICm,false), array("\r","\r",LST_HashQICIBICm,false), array("\n","\n",LST_HashQICIBICm,false)), LST_HashQICIBIB =>array( array('?','?',LST_HashQICIBIBQ,false)), LST_HashQICIBIBQ =>array( array('#','#',LST_HashQICIBIBQH,false)), LST_HashQICIBIBQH =>array( array('','',-1,true)) ); } } ?>