#!/usr/bin/perl # ----------------------------------------------------------------------------- # This Software is Copyright (C) 1998-2004, All Rights Reserved # ----------------------------------------------------------------------------- # This program is protected by local and international copyright laws. Any # use of this program is subject to the the terms of the license agreement # included as part of this distribution archive. Any other uses are stictly # prohibited without the written permission of the Vendor and all other # rights are reserved. # ----------------------------------------------------------------------------- # Warning : Modifying this program violates your license agreement! # ----------------------------------------------------------------------------- $SIG{__DIE__}=$SIG{__WARN__}=\&su; my$cgifile=$0;$cgifile=~s/.*[\\\/]//;my@al=($0,$ENV{'SCRIPT_FILENAME'});my$cgidir=(grep(/$cgifile$/i&&s/^(.*)[\\\/].*/$1/,@al))[0]; $cgidir||=(($^O=~/mswin/i?`cd`:`pwd`)=~/(.*)/)[0];$cgidir=~s/\\/\//g;if(!$cgidir){die("Can't determine cgi directory!\n")}%hc=("progVer"=>"2.52","progRel"=>"June 25th,1999","progUpd"=>"April 19th,2004","perlOS"=>$^O||"Unknown","perlVer"=>$]||"Unknown","cgidir"=>$cgidir,"cgiurl"=>(split("/",$ENV{'SCRIPT_NAME'}))[-1],"ltime"=>time,"stime"=>time,"prod_id"=>18,"prog_build"=>'1966',"templatedir2"=>'../templates/interface',"templatedir3"=>'../templates',"debug"=>0,);%hh=('filelock'=>"$cgidir/../data/filelock.lock",'datadir'=>"$cgidir/../data",); use Fcntl qw(:DEFAULT :flock);for(0..9){push(@ah,"limage$_")}for(1..75){push(@ah,"lfield$_")} for(0..9){push(@ai,"himage$_")}for(1..50){push(@ai,"hfield$_")}for(1..50){push(@ac,"lfield$_"."_name"); push(@ac,"lfield$_"."_type");push(@ac,"lfield$_"."_active")}for(51..75){push(@ag,"lfield$_"."_name"); push(@ag,"lfield$_"."_type");push(@ag,"lfield$_"."_active")}for(1..50){push(@ac,"hfield$_"."_name"); push(@ac,"hfield$_"."_type");push(@ac,"hfield$_"."_active")}for(1..50){push(@aj,"hfield$_"."_order")} for(1..75){push(@aj,"lfield$_"."_order")}for(1..75){push(@ap,"format_lfield$_")}for(1..50){ push(@am,"format_hfield$_")}%ho=("datafile"=>"listing.dat","filelock"=>"filelock.lock","fields"=>[qw(num owner created updated),@ah,'hidden',@ap],"backup"=>"disabled","cgiext"=>".cgi");%hl=("datafile"=>"user.dat","filelock"=>"filelock.lock","fields"=>[qw(num name login_id login_pw access created_mon created_day created_year expires_mon expires_day expires_year expires_date expires_never disabled listings_max listings_unlimited user_listed specify_filename homepage_filename notes),@ai,'listings_hidden',@am],"backup"=>"disabled","cgiext"=>".cgi");%hk=("datafile"=>"setup.dat","filelock"=>"filelock.lock","fields"=>["num",@ac,qw(company_name domain_name product_id publish_listing_index publish_homepage_index publish_listing_image0 publish_homepage_image0 upload_maxk login_timeout listing_perpage homepage_perpage userman_perpage db_sorting titlebar footerbar logoff_url image_url listing_dir listing_url homepage_dir homepage_url search_url time_adjh time_adj_hour time_adjm time_adj_min installed),@ag,qw(d prog_ver max_filelock_duration c demo branding publish_ext thumbnail_create thumbnail_width thumbnail_height ind_industry ind_industry_name ind_program_name ind_login_image ind_template_dir),@aj,qw(ind_program_name_image)],"backup"=>"disabled","cgiext"=>".cgi");%ih=("datafile"=>"help.dat","filelock"=>"filelock.lock","fields"=>[qw(num parent title content)],"backup"=>"disabled","cgiext"=>".cgi");%hd=&uz;%hv=&uy;{ my$datafile="$hc{'cgidir'}/../data/$hk{'datafile'}$hk{'cgiext'}";if(open(FILE,"<$datafile")){ my($data_line)=grep{/^\d/};close(FILE);$ha{'max_filelock_duration'}=(split(/¡/,$data_line))[405]} if($ha{'max_filelock_duration'}<5){$ha{'max_filelock_duration'}=5}}&sk(\%hk,\%ha,1);$hc{'titlebar'}=$ha{'titlebar'}; $hc{'footerbar'}=$ha{'footerbar'};$hc{'image_url'}=$ha{'image_url'};$hc{'homepage_url'}=$ha{'homepage_url'}; $hc{'listing_url'}=$ha{'listing_url'};$hc{'search_url'}=$ha{'search_url'};$hc{'search_homepage_url'}=$ha{'search_url'}; $hc{'search_homepage_url'}=~s/search\.(\w+)$/search_homepage.$1/i;$hc{'header_product'}=$ha{'ind_program_name'}; $hc{'header_version'}=$hc{'progVer'};$hc{'header_company_name'}=$ha{'company_name'};$hc{'header_domain_name'}=$ha{'domain_name'}; $hc{'header_license_num'}=&we($ha{'product_id'});$hc{'upload_maxk'}=$ha{'upload_maxk'};$hc{'publish_ext'}=$ha{'publish_ext'}||"html"; $hc{'thumbnail_width'}=$ha{'thumbnail_width'};$hc{'thumbnail_height'}=$ha{'thumbnail_height'}; $hc{'templatedir1'}=$ha{'ind_template_dir'};$hc{'ind_industry'}=$ha{'ind_industry'};$hc{'ind_industry_name'}=$ha{'ind_industry_name'}; $hc{'ind_program_name'}=$ha{'ind_program_name'};$hc{'ind_login_image'}=$ha{'ind_login_image'}; $hc{'ind_program_name_image'}=$ha{'ind_program_name_image'};if($ha{'time_adjh'}eq"add"){$hc{'ltime'}+=(int($ha{'time_adj_hour'}*60*60))}; if($ha{'time_adjh'}eq"minus"){$hc{'ltime'}-=(int($ha{'time_adj_hour'}*60*60))};if($ha{'time_adjm'} eq"add"){$hc{'ltime'}+=(int($ha{'time_adj_min'}*60))};if($ha{'time_adjm'}eq"minus"){$hc{'ltime'}-=(int($ha{'time_adj_min'}*60))}; $hm{'mon'}=(localtime($hc{'ltime'}))[4]+1;$hm{'day'}=(localtime($hc{'ltime'}))[3];$hm{'year'}=(localtime($hc{'ltime'}))[5]+1900; $hm{'date'}=sprintf("%04d%02d%02d",$hm{'year'},$hm{'mon'},$hm{'day'});$|++;%hj=&tm("$hc{'cgidir'}/config.ini"); umask oct($hj{'umask'})if$hj{'umask'};&tn("$hc{'cgidir'}/vconfig.dat",\%hj);$hc{'_vendor_name'}=$hj{'vendor_name'}; $hc{'_vendor_url'}=$hj{'vendor_url'};$hc{'_vendor_location'}=$hj{'vendor_location'};if($hj{'thumbnailing'}{'disable_thumbnails'}){ $ha{'thumbnail_create'}=0;&sn(\%hk,\%ha,1)}sub tm{local(*FILE);my($file)=$_[0];my(@ad,$ref,%hi); $ref=\%hi;if(!$_[0]){die"INI_Load : No ini file was specified!\n"}if(!-e $_[0]){return %hi=()} open(FILE,"<$file")||die("INI_Load : Could open ini file! $!\n");@ad=;close(FILE);foreach(@ad){/^\s*#/m&&next; if(/^\s*\[/m){$ref=\%hi;foreach(/\[(.+?)\]/g){$ref=\%{$ref->{$_}}}next}my$pos=index($_,'='); if($pos>0){my$name=substr($_,0,$pos);my$value=substr($_,$pos+1);foreach($name,$value){s/^\s+//; s/\s+$//}$name=~/[^\w]/&&die("INI_Load : Invalid key '$name' in ini file '$file'!\n"); defined $ref->{$name}&&die("INI_Load : Key '$name' defined twice in ini file '$file'!\n"); $ref->{$name}=$value}elsif($pos==-1){my$name=$_;for($name){s/^\s+//; s/\s+$//}if(!length $name){ next}defined $ref->{$name}&&die("INI_Load : Key '$name' defined twice in ini file '$file'!\n"); $ref->{$name}=1}}return %hi}sub we{my($w,$x,$y,$z)=split(/-/,shift);my($v)=$w+join("",unpack("C3",$x))+$z; while(length $v>7){$v>>=1}if(!($w%47)&&$w/20.68==(5*20)&&$x=~/^[A-Z]{3}$/&&!($z%47)&&$y==$v){ if($x eq"\x43\x47\x57"){return(($z/47)+6000)}elsif($x eq"\x55\x50\x47"){return(($z/47)+8000)} elsif($x eq"\x45\x44\x49"){return(($z/47))}else{return(0)}}else{return(0)}}sub xw{if(!$hc{'contentheader'}++){ print'Content-type: text/html'."\n\n"}print&wk();exit}sub wk{if(&wr($hj{'vendor_name'})){return &ws()} else{return &vr('_license.html',{})}}sub wr{my$vendor=shift||die("No 'vendor' name specified (make sure it's defined in INI file)"); my$vendor_hash=$vendor;$vendor_hash=~s/^\s+|\s+$//sg;$vendor_hash=~s/(.{1,8})/crypt($1,'AA')/sge; $vendor_hash=~s/AA//gs;if($vendor_hash eq'WhkMKzyGr7g0JXhsaugam24y7UOthz/E62TMdkIYlsVw'){return 1} return 0}sub wo{my$s=pack 'H*','3c7461626c6520626f726465723d312063656c6c73706163696e673d3'.'02063656c6c70616464696e673d382077696474683d313030253e3c74'.'723e3c7464206267636f6c6f723d2223454545454545223e3c666f6e7'.'420666163653d226d732073616e732073657269662c20617269616c22'.'2073697a653d323e0a3c703e3c623e506c65617365204e6f74653a3c2'.'f623e20245f76656e646f725f6e616d65242068617320676976656e20'.'796f752074686520726967687420746f203c623e7375626c6963656e7'.'3653c2f623e200a7468697320736f66747761726520756e6465722074'.'6865207465726d73206f6620746865203c6120687265663d222463676'.'975726c243f73686f775f6c6963656e73653d3122207461726765743d'.'225f6e6577223e6c6963656e73652061677265656d656e743c2f613e2'.'e3c2f703e0a0a3c703e466f7220696e737472756374696f6e73206f6e'.'20686f7720746f207375626c6963656e736520616e642f6f722070726'.'976617465206c6162656c207468697320736f6674776172652c20636f'.'6e73756c7420796f757220646f63756d656e746174696f6e206f72206'.'36f6e74616374203c6120687265663d22245f76656e646f725f75726c'.'2422207461726765743d225f6e6577223e245f76656e646f725f6e616'.'d65243c2f613e20666f7220696e666f726d6174696f6e2e3c2f703e0a'.'3c2f666f6e743e3c2f74643e3c2f74723e3c2f7461626c653e'; $s=~s|\$cgiurl\$|$hc{'cgiurl'}|iges;return &wj($s)}sub ws{my$s=pack 'H*','3c68746d6c3e0a3c686561643e0a3c7469746c653e245f76656e646f7'.'25f6e616d6524202d20536f667477617265204c6963656e7365204167'.'7265656d656e743c2f7469746c653e0a3c7374796c6520747970653d2'.'2746578742f637373223e3c212d2d0a2e686561646572202020207b20'.'666f6e742d66616d696c793a20417269616c2c2048656c76657469636'.'12c2073616e732d73657269663b20666f6e742d73697a653a20313670'.'783b20666f6e742d7765696768743a20626f6c643b207d0a2e6d61696'.'e7465787420207b20666f6e742d66616d696c793a2056657264616e61'.'2c20417269616c2c2048656c7665746963612c2073616e732d7365726'.'9663b20666f6e742d73697a653a20313170787d0a2d2d3e3c2f737479'.'6c653e0a3c2f686561643e0a3c626f6479206267636f6c6f723d22234'.'646464646462220746578743d222330303030303022206c696e6b3d22'.'233030303043432220766c696e6b3d22233030303043432220616c696'.'e6b3d222330303030434322206d617267696e77696474683d3135206d'.'617267696e6865696768743d313520746f706d617267696e3d3135206'.'c6566746d617267696e3d3135206f6e6c6f61643d2277696e646f772e'.'666f6375732829223e0a0a3c666f6e7420636c6173733d226d61696e7'.'4657874223e0a0a3c703e3c666f6e7420666163653d22617269616c22'.'2073697a653d3420636c6173733d22686561646572223e3c623e3c666'.'f6e7420636f6c6f723d2223434330303030223e536f66747761726520'.'4c6963656e73652041677265656d656e743c2f666f6e743e3c2f623e3'.'c2f666f6e743e3c62723e0a0a3c703e3c623e494d504f5254414e5420'.'2d2052454144204341524546554c4c593a3c2f623e2054686973204c6'.'963656e73652041677265656d656e742069732061206c6567616c200a'.'61677265656d656e74206265747765656e20596f7520616e642056656'.'e646f722e2052656164206974206361726566756c6c79206265666f72'.'6520636f6d706c6574696e6720746865200a696e7374616c6c6174696'.'f6e2070726f6365737320616e64207573696e672074686520536f6674'.'776172652e2049742070726f76696465732061206c6963656e7365207'.'46f2075736520746865200a536f66747761726520616e6420636f6e74'.'61696e732077617272616e747920696e666f726d6174696f6e20616e6'.'4206c696162696c69747920646973636c61696d6572732e203c623e42'.'59200a494e5354414c4c494e472c20434f5059494e47204f52204f544'.'8455257495345205553494e472054484520534f4654574152452c2059'.'4f552041524520434f4e4649524d494e4720594f5552200a414343455'.'054414e4345204f462054484520534f46545741524520414e44204147'.'524545494e4720544f204245434f4d4520424f554e442042592054484'.'5205445524d53204f462054484953200a41475245454d454e542e2049'.'4620594f5520444f204e4f542041475245452c20444f204e4f5420494'.'e5354414c4c204f5220555345205448452050524f445543542e3c2f62'.'3e0a0a3c703e54686520536f667477617265206973206f776e6564206'.'2792056656e646f7220616e642f6f7220697473206c6963656e736f72'.'7320616e642069732070726f746563746564206279200a636f7079726'.'9676874206c61777320616e6420696e7465726e6174696f6e616c2063'.'6f707972696768742074726561746965732c2061732077656c6c20617'.'3206f74686572200a696e74656c6c65637475616c2070726f70657274'.'79206c61777320616e642074726561746965732e203c623e544845205'.'34f465457415245204953204c4943454e5345442c204e4f54200a534f'.'4c442e3c2f623e0a0a3c703e3c68722073697a653d313e0a0a3c703e3'.'12e203c623e444546494e4954494f4e532e3c2f623e0a0a3c6f6c2074'.'7970653d2261223e0a3c6c693e202256656e646f7222206d65616e732'.'03c6120687265663d22245f76656e646f725f75726c24222074617267'.'65743d225f6e6577223e245f76656e646f725f6e616d65243c2f613e0'.'a3c6c693e2022596f75222c2022596f757222206d65616e7320796f75'.'20616e6420796f757220636f6d70616e792e0a3c6c693e2022536f667'.'47761726522206d65616e73207468652070726f647563742070726f76'.'6964656420746f20596f752c20776869636820696e636c75646573206'.'36f6d707574657220736f6674776172650a616e64206d617920696e63'.'6c756465206173736f636961746564206d656469612c207072696e746'.'564206d6174657269616c732c20616e6420226f6e6c696e6522206f72'.'20656c656374726f6e69630a646f63756d656e746174696f6e2e0a3c2'.'f6f6c3e0a0a3c703e322e203c623e4f574e4552534849502e3c2f623e'.'0a0a54686520536f667477617265206973206f776e656420616e64206'.'36f7079726967687465642062792056656e646f7220616e642f6f7220'.'697473206c6963656e736f72732e20596f7572200a6c6963656e73652'.'0636f6e66657273206e6f207469746c65206f72206f776e6572736869'.'7020696e2074686520536f66747761726520616e64206973206e6f742'.'0612073616c65206f66200a616e792072696768747320696e20746865'.'20536f6674776172652e200a0a3c703e332e203c623e4752414e54204'.'f46204c4943454e53452e3c2f623e200a0a56656e646f72206772616e'.'747320596f752074686520666f6c6c6f77696e6720726967687473207'.'0726f766964656420596f7520636f6d706c79207769746820616c6c20'.'7465726d73200a616e6420636f6e646974696f6e73206f66207468697'.'32061677265656d656e742e2020466f722065616368206c6963656e73'.'6520596f75206861766520616371756972656420666f7220746865200'.'a536f6674776172653a0a3c6f6c20747970653d2261223e0a3c6c693e'.'596f7520617265206772616e7465642061206e6f6e2d6578636c75736'.'9766520726967687420746f2075736520616e6420696e7374616c6c20'.'4f4e4520636f7079206f662074686520736f667477617265206f6e204'.'f4e4520776562736974652e0a3c6c693e596f75206d617920616c6c6f'.'7720616e20756e6c696d69746564206e756d626572206f66207573657'.'27320746f20616363657373206f72206f746865727769736520757469'.'6c697a65207468650a7365727669636573206f722066756e6374696f6'.'e616c697479206f662074686520696e7374616c6c656420736f667477'.'6172652e0a3c6c693e596f75206d6179206d616b65206f6e6520636f7'.'07920666f72206261636b7570206f7220617263686976616c20707572'.'706f7365732e0a3c6c693e596f75206d6179206d6f646966792074686'.'52074656d706c6174652066696c657320636f6e7461696e656420696e'.'207468652074656d706c6174657320666f6c646572202869662061707'.'06c696361626c65292e0a3c2f6f6c3e0a0a3c703e342e203c623e5245'.'5354524943544544205553452e3c2f623e0a0a3c6f6c20747970653d2'.'261223e0a3c6c693e20596f7520616772656520746f20757365207265'.'61736f6e61626c65206566666f72747320746f2070726576656e74207'.'56e617574686f72697a656420636f7079696e67206f66207468652053'.'6f6674776172652e0a3c6c693e20596f75206d6179206e6f742064697'.'361626c6520616e79206c6963656e73696e67206f7220636f6e74726f'.'6c206665617475726573206f662074686520536f667477617265206f7'.'220616c6c6f772074686520536f6674776172650a746f206265207573'.'6564207769746820737563682066656174757265732064697361626c6'.'5642e0a3c6c693e596f75206d6179206e6f742073686172652c207265'.'6e742c206f72206c6561736520596f757220726967687420746f20757'.'3652074686520536f6674776172652e0a3c6c693e20596f75206d6179'.'206e6f74206d6f646966792c207375626c6963656e73652c20636f707'.'92c2072656e742c2073656c6c2c2064697374726962757465206f7220'.'7472616e7366657220616e792070617274200a6f662074686520536f6'.'67477617265206578636570742061732070726f766964656420696e20'.'746869732041677265656d656e742e0a3c6c693e596f75206d6179206'.'e6f74207265766572736520656e67696e6565722c206465636f6d7069'.'6c652c207472616e736c6174652c20637265617465206465726976617'.'469766520776f726b732c200a64656369706865722c20646563727970'.'742c20646973617373656d626c652c206f72206f74686572776973652'.'0636f6e766572742074686520536f66747761726520746f2061206d6f'.'7265200a68756d616e2d7265616461626c6520666f726d20666f72206'.'16e7920726561736f6e2e0a3c6c693e20596f752077696c6c20726574'.'75726e206f722064657374726f7920616c6c20636f70696573206f662'.'074686520536f66747761726520616e642067656e6572617465642063'.'6f6e74656e740a286966206170706c696361626c652920696620616e6'.'4207768656e20596f757220726967687420746f207573652069742065'.'6e64732e200a3c6c693e3c623e596f75206d6179206e6f74207573652'.'074686520536f66747761726520666f7220616e7920707572706f7365'.'207468617420697320756e6c617766756c2e3c2f623e0a3c2f6f6c3e0'.'a0a3c703e352e203c623e4144444954494f4e414c20534f4654574152'.'453c2f623e2054686973206c6963656e7365206170706c69657320746'.'f20757064617465732c2075706772616465732c200a706c75672d696e'.'7320616e6420616e79206f74686572206164646974696f6e7320746f2'.'0746865206f726967696e616c20536f6674776172652070726f766964'.'65642062792056656e646f722c200a756e6c6573732056656e646f722'.'070726f7669646573206f74686572207465726d7320616c6f6e672077'.'69746820746865206164646974696f6e616c20736f6674776172652e0'.'a0a3c703e362e203c623e335244205041525459205345525649434553'.'3c2f623e205468697320536f667477617265206d6179206d616b65207'.'57365206f662c206f72206861766520746865200a6162696c69747920'.'746f206d616b6520757365206f662c206c696e6b20746f2c206f72206'.'96e7465677261746520776974682033726420706172747920636f6e74'.'656e74206f72200a73657276696365732e2054686520617661696c616'.'2696c697479206f662074686520636f6e74656e74206f722073657276'.'696365732069732061742074686520736f6c652064697363726574696'.'f6e200a6f662074686520337264207061727479207365727669636520'.'70726f76696465727320616e64206d6179206265207375626a6563742'.'0746f2075736167652061677265656d656e747320616e64200a6f7468'.'6572207265737472696374696f6e732e2020596f75206167726565207'.'46f20696e64656d6e69667920616e642073617665206861726d6c6573'.'732056656e646f7220616e6420697473200a6c6963656e736f7273206'.'6726f6d20616c6c20636c61696d732c2064616d616765732c20616e64'.'20657870656e736573206f66207768617465766572206e61747572652'.'074686174206d6179206265200a6d61646520616761696e7374205665'.'6e646f7220616e6420697473206c6963656e736f72732062792033726'.'420706172747920636f6e74656e7420616e6420736572766963652070'.'726f766964657273200a6173206120726573756c74206f6620596f757'.'220757365206f662074686520536f6674776172652e0a0a3c703e372e'.'203c623e524547495354524154494f4e2e3c2f623e2054686520736f6'.'674776172652077696c6c20656c656374726f6e6963616c6c79207265'.'67697374657220697473656c66200a647572696e6720696e7374616c6'.'c6174696f6e206f722072656c6f636174696f6e20616e6420636f6e66'.'69726d207468617420596f75206861766520656e74657265642061207'.'6616c6964200a2250726f64756374204944222e205468652072656769'.'7374726174696f6e2070726f63657373206f6e6c792073656e6473207'.'46865206c6963656e736520696e666f726d6174696f6e207468617420'.'0a596f7527766520656e74657265642028436f6d70616e79204e616d6'.'52c20446f6d61696e204e616d652c2050726f64756374204944292061'.'6e6420696e666f726d6174696f6e2061626f757420746865200a736f6'.'6747761726520696e7374616c6c6564202850726f6772616d2049442c'.'2056657273696f6e2c20496e7374616c6c2055524c2c20436865636b7'.'3756d292e20204e6f206f74686572200a696e666f726d6174696f6e20'.'69732073656e742e0a0a3c703e382e203c623e55504752414445532e2'.'03c2f623e204966207468697320636f7079206f662074686520736f66'.'747761726520697320616e20757067726164652066726f6d20616e200'.'a6561726c6965722076657273696f6e206f662074686520736f667477'.'6172652c2069742069732070726f766964656420746f20596f75206f6'.'e2061206c6963656e73652065786368616e6765200a62617369732e20'.'20596f757220757365206f662074686520536f6674776172652075706'.'772616465206973207375626a65637420746f20746865207465726d73'.'206f662074686973200a6c6963656e73652c20616e6420596f7520616'.'772656520627920596f757220696e7374616c6c6174696f6e20616e64'.'20757365206f66207468697320636f7079206f662074686520536f667'.'477617265200a746f20766f6c756e746172696c79207465726d696e61'.'746520596f7572206561726c696572206c6963656e736520616e64207'.'468617420596f752077696c6c206e6f7420636f6e74696e756520746f'.'200a75736520746865206561726c6965722076657273696f6e206f662'.'074686520536f667477617265206f72207472616e7366657220697420'.'746f20616e6f7468657220706572736f6e206f72200a656e746974792'.'e0a0a3c703e392e203c623e5452414e534645522e203c2f623e202059'.'6f75206d6179206d616b652061206f6e652d74696d65207472616e736'.'66572206f662074686520536f667477617265200a616e6420596f7572'.'2072696768747320756e6465722074686973206c6963656e736520746'.'f20616e6f746865722070617274792070726f76696465642074686174'.'3a0a0a3c6f6c20747970653d2261223e0a3c6c693e20596f752070726'.'f766964652074686520706172747920776974682074686520536f6674'.'776172652c20616e79202250726f647563742049442220636f6465732'.'c20616e642074686973206c6963656e73652e0a3c6c693e2054686520'.'7061727479206163636570747320746865207465726d73206f6620746'.'86973206c6963656e7365206173206120636f6e646974696f6e206f66'.'20746865207472616e736665722e0a3c6c693e20596f7520646573747'.'26f7920616e79206f7468657220636f70696573206f66207468652053'.'6f66747761726520616e642067656e65726174656420636f6e74656e7'.'420286966206170706c696361626c652920696e20596f757220706f73'.'73657373696f6e2e0a3c6c693e20596f75206e6f746966792056656e6'.'46f72206f6620746865207472616e736665722e0a3c2f6f6c3e0a0a59'.'6f75722072696768747320756e6465722074686973206c6963656e736'.'5206175746f6d61746963616c6c79207465726d696e6174652075706f'.'6e207472616e736665722e0a0a3c703e31302e203c623e5355424c494'.'3454e53494e472e3c2f623e20596f75206d6179207375626c6963656e'.'73652074686520536f66747761726520616e6420596f7572207269676'.'8747320756e6465720a74686973206c6963656e736520746f20616e6f'.'746865722070617274792070726f766964656420746861743a0a0a3c6'.'f6c20747970653d2261223e0a3c6c693e20596f7520756e6465727374'.'616e6420616e6420616772656520746f20746865207465726d73206f6'.'62074686973206c6963656e73652061677265656d656e742e0a3c6c69'.'3e2054686520536f667477617265206973206f6e6c79207375626c696'.'3656e736564204f4e43452c20746f20612073696e676c652070617274'.'792e0a3c6c693e20596f7520617265206e6f74207573696e672074686'.'520536f667477617265206166746572206772616e74696e6720746865'.'207375626c6963656e73652e0a3c6c693e20546865207375626c69636'.'56e736520697320612076616c69642c2062696e64696e67206c696365'.'6e73652e0a3c6c693e20546865207375626c6963656e736520636f6e7'.'461696e73207465726d73207468617420617265206e6f206c65737320'.'7265737472696374697665207468616e20746869732061677265656d6'.'56e740a20202020286f72207468652073616d65207465726d73206173'.'20746869732061677265656d656e742920616e6420646f6573206e6f7'.'420636f6e7461696e207468697320726967687420746f207375626c69'.'63656e73652e0a3c6c693e20546865206c6567616c206a75726973646'.'96374696f6e20666f7220746865207375626c6963656e736520697320'.'646566696e6564206173206569746865722074686174206f662074686'.'52056656e646f72206f720a202020202074686174206f6620596f7572'.'20636f72706f726174652068656164206f66666963652e0a3c6c693e2'.'0596f7520646f206e6f74206d616b6520616e7920726570726573656e'.'746174696f6e73206f722077617272616e74696573206f6e206265686'.'16c66206f662056656e646f722e0a0a3c6c693e20596f752061677265'.'6520746f20656e666f72636520746865207465726d73206f6620616e7'.'9207375626c6963656e7365207468617420596f752061726520617574'.'686f72697a656420746f206d616b652e200a496620596f75206661696'.'c20746f20646f20736f2c20596f752061677265652074686174205665'.'6e646f72206d61792074616b65207375636820737465707320696e205'.'96f7572206e616d6520616e64200a617320596f7572206167656e742c'.'20696e636c7564696e67206c6567616c2070726f63656564696e67732'.'06966206e65636573736172792c20746f20656e666f72636520746865'.'200a7375626c6963656e7365206772616e74656420627920596f752e0'.'a0a3c6c693e20596f75206e6f746966792056656e646f72206f662074'.'6865207375626c6963656e736520616e6420616e79207375627365717'.'5656e74207472616e736665727320627920746865207375626c696365'.'6e7365642070617274792e0a3c2f6f6c3e0a0a3c703e31312e203c623'.'e5445524d494e4154494f4e2e3c2f623e2056656e646f72206d617920'.'7465726d696e61746520596f7572206c6963656e736520696620596f7'.'520646f206e6f74206162696465200a627920746865206c6963656e73'.'65207465726d732e205465726d696e6174696f6e206f6620746865206'.'c6963656e7365206d617920696e636c7564652c20627574206e6f7420'.'6265206c696d69746564200a746f2c206d61726b696e6720746865205'.'0726f6475637420494420617320696e76616c696420746f2070726576'.'656e74206675727468657220696e7374616c6c6174696f6e732e20557'.'06f6e200a7465726d696e6174696f6e206f66206c6963656e73652c20'.'596f75207368616c6c20696d6d6564696174656c7920646973636f6e7'.'4696e75652074686520757365206f6620746865200a536f6674776172'.'6520616e64207368616c6c2077697468696e2074656e2028313029206'.'46179732072657475726e20746f2056656e646f7220616c6c20636f70'.'696573206f6620746865200a536f667477617265206f7220636f6e666'.'9726d207468617420596f7520686176652064657374726f7965642061'.'6c6c20636f70696573206f662069742e203c623e596f7572200a6f626'.'c69676174696f6e7320746f2070617920616363727565642063686172'.'67657320616e6420666565732c20696620616e792c207368616c6c207'.'375727669766520616e79200a7465726d696e6174696f6e206f662074'.'6869732041677265656d656e742e3c2f623e2056656e646f722773207'.'468697264207061727479206c6963656e736f7273206d61792070726f'.'74656374200a74686569722072696768747320696e207468652065766'.'56e74206f6620616e792076696f6c6174696f6e206f66207468652074'.'65726d7320616e6420636f6e646974696f6e73206f662074686973200'.'a6c6963656e73652e20596f7520616772656520746f20696e64656d6e'.'6966792056656e646f7220616e6420697473206c6963656e736f72732'.'0666f7220726561736f6e61626c65206174746f726e6579200a666565'.'7320696e20656e666f7263696e6720697473207269676874732070757'.'27375616e7420746f2074686973206c6963656e73652e0a0a3c703e31'.'322e203c623e444953434c41494d4552204f462057415252414e54592'.'e3c2f623e2054686520536f6674776172652069732070726f76696465'.'64206f6e20616e2022415320495322200a62617369732c20776974686'.'f75742077617272616e7479206f6620616e79206b696e642c20696e63'.'6c7564696e672c20776974686f7574206c696d69746174696f6e2c207'.'46865200a77617272616e74696573206f66206d65726368616e746162'.'696c6974792c206669746e65737320666f72206120706172746963756'.'c617220707572706f736520616e64206e6f6e2d0a696e6672696e6765'.'6d656e742e2054686520656e74697265207269736b20617320746f207'.'46865207175616c69747920616e6420706572666f726d616e6365206f'.'662074686520536f667477617265200a697320626f726e65206279205'.'96f752e2053686f756c642074686520536f6674776172652070726f76'.'65206465666563746976652c20596f752c206e6f742056656e646f722'.'06f7220697473200a6c6963656e736f72732c20617373756d65207468'.'6520656e7469726520636f7374206f6620616e7920736572766963652'.'0616e64207265706169722e2049662074686520536f66747761726520'.'6973200a696e74656e64656420746f206c696e6b20746f2c206578747'.'261637420636f6e74656e742066726f6d206f72206f74686572776973'.'6520696e7465677261746520776974682061207468697264200a70617'.'2747920736572766963652c2056656e646f72206d616b6573206e6f20'.'726570726573656e746174696f6e206f722077617272616e747920746'.'8617420596f757220706172746963756c6172200a757365206f662074'.'686520536f667477617265206973206f722077696c6c20636f6e74696'.'e756520746f20626520617574686f72697a6564206279206c61772069'.'6e20596f7572200a6a7572697364696374696f6e206f7220746861742'.'074686520746869726420706172747920736572766963652077696c6c'.'20636f6e74696e756520746f20626520617661696c61626c6520746f2'.'00a596f752e205468697320646973636c61696d6572206f6620776172'.'72616e747920636f6e737469747574657320616e20657373656e74696'.'16c2070617274206f66207468652061677265656d656e742e0a0a3c70'.'3e31332e203c623e4c494d49544154494f4e204f46204c494142494c4'.'954592e20554e444552204e4f2043495243554d5354414e4345532041'.'4e4420554e444552204e4f204c4547414c200a5448454f52592c20544'.'f52542c20434f4e54524143542c204f52204f54484552574953452c20'.'5348414c4c2056454e444f52204f5220495453204c4943454e534f525'.'3204245204c4941424c45200a544f20594f55204f5220414e59204f54'.'48455220504552534f4e20464f5220414e5920494e4449524543542c2'.'05350454349414c2c2050554e49544956452c20494e434944454e5441'.'4c2c204f52200a434f4e53455155454e5449414c2044414d414745532'.'04f4620414e592043484152414354455220494e434c5544494e472c20'.'574954484f5554204c494d49544154494f4e2c2044414d41474553200'.'a464f5220574f524b2053544f50504147452c20434f4d505554455220'.'4641494c555245204f52204c4f5353204f4620524556454e5545532c2'.'050524f464954532c20474f4f4457494c4c2c205553452c200a444154'.'41204f52204f5448455220494e54414e4749424c45204f522045434f4'.'e4f4d4943204c4f535345532e20494e204e4f204556454e542057494c'.'4c2056454e444f52204f5220495453200a4c4943454e534f525320424'.'5204c4941424c4520464f5220414e592044414d4147455320494e2045'.'5843455353204f462054484520414d4f554e54205041494420544f204'.'c4943454e534520544845200a534f4654574152452c204556454e2049'.'4620594f55204f5220414e59204f54484552205041525459205348414'.'c4c204841564520494e464f524d45442056454e444f52204f52204954'.'53200a4c4943454e534f5253204f462054484520504f53534942494c4'.'95459204f4620535543482044414d414745532c204f5220464f522041'.'4e5920434c41494d2e204e4f20434c41494d2c200a5245474152444c4'.'55353204f4620464f524d2c204d4159204245204d414445204f522041'.'4354494f4e2042524f5547485420425920594f55204d4f52452054484'.'14e204f4e452059454152200a41465445522054484520424153495320'.'464f522054484520434c41494d204245434f4d4553204b4e4f574e205'.'44f2054484520504152545920415353455254494e472049542e3c2f62'.'3e0a0a3c703e31342e203c623e4150504c494341424c45204c41572e3'.'c2f623e2054686973206c6963656e7365207368616c6c20626520696e'.'74657270726574656420696e206163636f7264616e6365200a7769746'.'820746865206c617773206f6620245f76656e646f725f6c6f63617469'.'6f6e242e20416e792064697370757465732061726973696e67206f757'.'4206f662074686973206c6963656e7365200a7368616c6c2062652061'.'646a756469636174656420696e206120636f757274206f6620636f6d7'.'06574656e74206a7572697364696374696f6e20696e20245f76656e64'.'6f725f6c6f636174696f6e242e0a0a3c703e31352e203c623e474f564'.'5524e494e47204c414e47554147452e3c2f623e20416e79207472616e'.'736c6174696f6e206f662074686973204c6963656e736520697320646'.'f6e6520666f72200a6c6f63616c20726571756972656d656e74732061'.'6e6420696e20746865206576656e74206f66206120646973707574652'.'06265747765656e2074686520456e676c69736820616e6420616e7920'.'0a6e6f6e2d456e676c6973682076657273696f6e732c2074686520456'.'e676c6973682076657273696f6e206f662074686973204c6963656e73'.'65207368616c6c20676f7665726e2e0a0a3c703e31362e203c423e454'.'e544952452041475245454d454e542e3c2f623e2054686973206c6963'.'656e736520636f6e73746974757465732074686520656e74697265206'.'1677265656d656e74200a6265747765656e2074686520706172746965'.'732072656c6174696e6720746f2074686520536f66747761726520616'.'e64207375706572736564657320616e792070726f706f73616c206f72'.'200a7072696f722061677265656d656e742c206f72616c206f7220777'.'2697474656e2c20616e6420616e79206f7468657220636f6d6d756e69'.'636174696f6e2072656c6174696e6720746f20746865200a7375626a6'.'56374206d6174746572206f662074686973206c6963656e73652e2041'.'6e7920636f6e666c696374206265747765656e20746865207465726d7'.'3206f662074686973204c6963656e7365200a41677265656d656e7420'.'616e6420616e79205075726368617365204f726465722c20696e766f6'.'963652c206f7220726570726573656e746174696f6e207368616c6c20'.'6265207265736f6c766564200a696e206661766f7572206f662074686'.'5207465726d73206f662074686973204c6963656e7365204167726565'.'6d656e742e20496e20746865206576656e74207468617420616e79206'.'36c61757365200a6f7220706f7274696f6e206f6620616e7920737563'.'6820636c61757365206973206465636c6172656420696e76616c69642'.'0666f7220616e7920726561736f6e2c20737563682066696e64696e67'.'200a7368616c6c206e6f74206166666563742074686520656e666f726'.'3656162696c697479206f66207468652072656d61696e696e6720706f'.'7274696f6e73206f662074686973204c6963656e7365200a616e64207'.'4686520756e656e666f72636561626c6520636c61757365207368616c'.'6c20626520736576657265642066726f6d2074686973206c6963656e7'.'3652e203c623e416e79200a616d656e646d656e7420746f2074686973'.'2061677265656d656e74206d75737420626520696e2077726974696e6'.'720616e64207369676e656420627920626f746820706172746965732e'.'3c2f623e0a0a0a3c703e536f667477617265204c6963656e736520416'.'77265656d656e742076332e3120284a756e652033302c203230303329'.'0a0a0a3c703e3c68722073697a653d313e0a53686f756c6420796f752'.'06861766520616e79207175657374696f6e7320636f6e6365726e696e'.'672074686973206c6963656e73652c0a6f7220696620796f752064657'.'369726520746f20636f6e7461637420757320666f7220616e79207265'.'61736f6e2c20706c6561736520656d61696c206f722074656c6570686'.'f6e652e0a0a3c2f666f6e743e0a0a3c2f626f64793e3c2f68746d6c3e'.'0a'; return &wj($s)}sub wj{my$s=shift;$s=~s|\$_vendor_name\$|$hc{'_vendor_name'}|iges;$s=~s|\$_vendor_url\$|$hc{'_vendor_url'}|iges; $s=~s|\$_vendor_location\$|$hc{'_vendor_location'}|iges;return $s}sub wg{my$hash=shift;my$s; my$key;foreach$key(keys %$hash){my$value=&vx($hash->{$key});$s.="&"if($s);$s.="$key=$value"}$s=unpack('H*',$s); $s=~tr/[A-F][a-f][0-9]/[A-F][A-F][G-P]/;return $s}sub wf{my$s=shift;my$hash={};$s=~tr/[A-F][G-P]//cd; $s=~tr/[G-P]/[0-9]/;$s=pack('H*',$s);my$namevalue;foreach$namevalue(split('&',$s)){my($name,$value)=split('=',$namevalue); $value=&vw($value);$hash->{$name}=$value}return $hash}sub tn{local(*FILE);my($file)=$_[0]; my($ref)=$_[1];my(@ad,$line);if(!$_[0]){die"INI_Load_Vendor : No data file was specified!\n"} open(FILE,"<$file")||die("INI_Load_Vendor : Could open data file! $!\n");@ad=;close(FILE); my($hash);foreach$line(@ad){next if$line=~/^#/;$hash=&wf($line);my$key;foreach$key(%$hash){ $ref->{$key}=$hash->{$key}}}if(!$ref->{'vendor_name'}||!$ref->{'vendor_url'}||!$ref->{'vendor_location'}){ die("Keys missing from INI_Load_Vendor!\n")}return}$hc{'query'}=$ENV{'QUERY_STRING'};if($hd{'search'}){&va()} elsif($hd{'view'}){&wh()}else{&us()}exit;sub us{print"Content-type: text/html\n\n" unless($ContentType++); my$query_template=$hd{'template'}||'_search_query.html';unless(&yd($query_template)){&su("Invalid template name: $query_template")}$rowcode=sub{ if(!$he{'user_listed'}){return(0)}$hb{'userlist'}.=qq|