AnonSec Shell
Server IP : 172.67.216.113  /  Your IP : 172.71.28.146   [ Reverse IP ]
Web Server : Apache
System : Linux cpanel01wh.bkk1.cloud.z.com 2.6.32-954.3.5.lve1.4.59.el6.x86_64 #1 SMP Thu Dec 6 05:11:00 EST 2018 x86_64
User : cp648411 ( 1354)
PHP Version : 7.2.34
Disable Function : NONE
Domains : 0 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home2/cp648411/public_html/kainumber.com/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /home2/cp648411/public_html/kainumber.com/tell_test.pl
#!/usr/bin/perl -w

use Data::Dumper;




#----------------------------------------------------------------------------------------------------
# Number Database
#----------------------------------------------------------------------------------------------------

# All number definition [ Number of Digits ][ Number ]:
#    - desc  : definition of the number
#    - score : good (+), neutral (0), bad (-)
#    - link  : specifically relates to other numbers (additional number combination)

my %DefinitionList;
   $DefinitionList{ 1 }{ '0' }   = { key => '0',   desc => 'description 0',   score =>  0 };
   $DefinitionList{ 1 }{ '1' }   = { key => '1',   desc => 'description 1',   score =>  0 };
   $DefinitionList{ 1 }{ '2' }   = { key => '2',   desc => 'description 2',   score =>  0 };
   $DefinitionList{ 1 }{ '3' }   = { key => '3',   desc => 'description 3',   score =>  0 };
   $DefinitionList{ 1 }{ '4' }   = { key => '4',   desc => 'description 4',   score =>  0 };
   $DefinitionList{ 1 }{ '5' }   = { key => '5',   desc => 'description 5',   score =>  0 };
   $DefinitionList{ 1 }{ '6' }   = { key => '6',   desc => 'description 6',   score =>  0 };
   $DefinitionList{ 1 }{ '7' }   = { key => '7',   desc => 'description 7',   score =>  0 };
   $DefinitionList{ 1 }{ '8' }   = { key => '8',   desc => 'description 8',   score =>  0 };
   $DefinitionList{ 1 }{ '9' }   = { key => '9',   desc => 'description 9',   score =>  0 };

   $DefinitionList{ 2 }{ '00' }  = { key => '00',  desc => 'description 00',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '01' }  = { key => '01',  desc => 'description 01',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '02' }  = { key => '02',  desc => 'description 02',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '03' }  = { key => '03',  desc => 'description 03',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '04' }  = { key => '04',  desc => 'description 04',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '05' }  = { key => '05',  desc => 'description 05',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '06' }  = { key => '06',  desc => 'description 06',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '07' }  = { key => '07',  desc => 'description 07',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '08' }  = { key => '08',  desc => 'description 08',  score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '09' }  = { key => '09',  desc => 'description 09',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '10' }  = $DefinitionList{ 2 }{ '01' };
   $DefinitionList{ 2 }{ '11' }  = { key => '11',  desc => 'description 11',  score => -60,  
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '12' }  = { key => '12',  desc => 'description 12',  score => -60,  
				     link => [ '12+23+26', '12+27+26', '12+37+26', '12+48+26', '12+23', '12+27', '12+37', '12+48' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '13' }  = { key => '13',  desc => 'description 13',  score => -60,  
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '14' }  = { key => '14',  desc => 'description 14',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '15' }  = { key => '15',  desc => 'description 15',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '16' }  = { key => '16',  desc => 'description 16',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '17' }  = { key => '17',  desc => 'description 17',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '18' }  = { key => '18',  desc => 'description 18',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '19' }  = { key => '19',  desc => 'description 19',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '20' }  = $DefinitionList{ 2 }{ '02' };
   $DefinitionList{ 2 }{ '21' }  = $DefinitionList{ 2 }{ '12' };
   $DefinitionList{ 2 }{ '22' }  = { key => '22',  desc => 'description 23',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '23' }  = { key => '23',  desc => 'description 23',  score => -60,  
				     link => [ '12+23+26', '12+23' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '24' }  = { key => '24',  desc => 'description 24',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '25' }  = { key => '25',  desc => 'description 25',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '26' }  = { key => '26',  desc => 'description 26',  score =>  0,
				     link => [ '12+23+26', '12+27+26', '12+37+26', '12+48+26' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '27' }  = { key => '27',  desc => 'description 27',  score => -65,  
				     link => [ '12+27+26', '12+27' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '28' }  = { key => '28',  desc => 'description 28',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '29' }  = { key => '29',  desc => 'description 29',  score =>  0,   
				     link => [ '29+66' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '30' }  = $DefinitionList{ 2 }{ '03' };
   $DefinitionList{ 2 }{ '31' }  = $DefinitionList{ 2 }{ '13' };
   $DefinitionList{ 2 }{ '32' }  = $DefinitionList{ 2 }{ '23' };
   $DefinitionList{ 2 }{ '33' }  = { key => '33',  desc => 'description 33',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '34' }  = { key => '34',  desc => 'description 34',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '35' }  = { key => '35',  desc => 'description 35',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '36' }  = { key => '36',  desc => 'description 36',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '37' }  = { key => '37',  desc => 'description 37',  score => -70,  
				     link => [ '12+37+26', '12+37' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '38' }  = { key => '38',  desc => 'description 38',  score =>  0, 
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '39' }  = { key => '39',  desc => 'description 39',  score =>  0, 
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '40' }  = $DefinitionList{ 2 }{ '04' };
   $DefinitionList{ 2 }{ '41' }  = $DefinitionList{ 2 }{ '14' };
   $DefinitionList{ 2 }{ '42' }  = $DefinitionList{ 2 }{ '24' };
   $DefinitionList{ 2 }{ '43' }  = $DefinitionList{ 2 }{ '34' };
   $DefinitionList{ 2 }{ '44' }  = { key => '44',  desc => 'description 44',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '45' }  = { key => '45',  desc => 'description 45',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '46' }  = { key => '46',  desc => 'description 46',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '47' }  = { key => '47',  desc => 'description 47',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '48' }  = { key => '48',  desc => 'description 48',  score => -70,  
				     link => [ '12+48+26', '12+48' ],
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '49' }  = { key => '49',  desc => 'description 49',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '50' }  = $DefinitionList{ 2 }{ '05' };
   $DefinitionList{ 2 }{ '51' }  = $DefinitionList{ 2 }{ '15' };
   $DefinitionList{ 2 }{ '52' }  = $DefinitionList{ 2 }{ '25' };
   $DefinitionList{ 2 }{ '53' }  = $DefinitionList{ 2 }{ '35' };
   $DefinitionList{ 2 }{ '54' }  = $DefinitionList{ 2 }{ '45' };
   $DefinitionList{ 2 }{ '55' }  = { key => '55',  desc => 'description 55',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '56' }  = { key => '56',  desc => 'description 56',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '57' }  = { key => '57',  desc => 'description 57',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '58' }  = { key => '58',  desc => 'description 58',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '59' }  = { key => '59',  desc => 'description 59',  score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '60' }  = $DefinitionList{ 2 }{ '06' };
   $DefinitionList{ 2 }{ '61' }  = $DefinitionList{ 2 }{ '16' };
   $DefinitionList{ 2 }{ '62' }  = $DefinitionList{ 2 }{ '26' };
   $DefinitionList{ 2 }{ '63' }  = $DefinitionList{ 2 }{ '36' };
   $DefinitionList{ 2 }{ '64' }  = $DefinitionList{ 2 }{ '46' };
   $DefinitionList{ 2 }{ '65' }  = $DefinitionList{ 2 }{ '56' };
   $DefinitionList{ 2 }{ '66' }  = { key => '66',  desc => 'description 66',  score =>  0,  
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '67' }  = { key => '67',  desc => 'description 67',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '68' }  = { key => '68',  desc => 'description 68',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '69' }  = { key => '69',  desc => 'description 69',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '70' }  = $DefinitionList{ 2 }{ '07' };
   $DefinitionList{ 2 }{ '71' }  = $DefinitionList{ 2 }{ '17' };
   $DefinitionList{ 2 }{ '72' }  = $DefinitionList{ 2 }{ '27' };
   $DefinitionList{ 2 }{ '73' }  = $DefinitionList{ 2 }{ '37' };
   $DefinitionList{ 2 }{ '74' }  = $DefinitionList{ 2 }{ '47' };
   $DefinitionList{ 2 }{ '75' }  = $DefinitionList{ 2 }{ '57' };
   $DefinitionList{ 2 }{ '76' }  = $DefinitionList{ 2 }{ '67' };
   $DefinitionList{ 2 }{ '77' }  = { key => '77',  desc => 'description 77',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '78' }  = { key => '78',  desc => 'description 78',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '79' }  = { key => '79',  desc => 'description 79',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '80' }  = $DefinitionList{ 2 }{ '08' };
   $DefinitionList{ 2 }{ '81' }  = $DefinitionList{ 2 }{ '18' };
   $DefinitionList{ 2 }{ '82' }  = $DefinitionList{ 2 }{ '28' };
   $DefinitionList{ 2 }{ '83' }  = $DefinitionList{ 2 }{ '38' };
   $DefinitionList{ 2 }{ '84' }  = $DefinitionList{ 2 }{ '48' };
   $DefinitionList{ 2 }{ '85' }  = $DefinitionList{ 2 }{ '58' };
   $DefinitionList{ 2 }{ '86' }  = $DefinitionList{ 2 }{ '68' };
   $DefinitionList{ 2 }{ '87' }  = $DefinitionList{ 2 }{ '78' };
   $DefinitionList{ 2 }{ '88' }  = { key => '88',  desc => 'description 88',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 2 }{ '89' }  = { key => '89',  desc => 'description 89',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 2 }{ '90' }  = $DefinitionList{ 2 }{ '09' };
   $DefinitionList{ 2 }{ '91' }  = $DefinitionList{ 2 }{ '19' };
   $DefinitionList{ 2 }{ '92' }  = $DefinitionList{ 2 }{ '29' }; 
   $DefinitionList{ 2 }{ '93' }  = $DefinitionList{ 2 }{ '39' };
   $DefinitionList{ 2 }{ '94' }  = $DefinitionList{ 2 }{ '49' };
   $DefinitionList{ 2 }{ '95' }  = $DefinitionList{ 2 }{ '59' };
   $DefinitionList{ 2 }{ '96' }  = $DefinitionList{ 2 }{ '69' };
   $DefinitionList{ 2 }{ '97' }  = $DefinitionList{ 2 }{ '79' };
   $DefinitionList{ 2 }{ '98' }  = $DefinitionList{ 2 }{ '89' };
   $DefinitionList{ 2 }{ '99' }  = { key => '99',  desc => 'description 99',  score =>  0,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };


   $DefinitionList{ 3 }{ '023' } = { key => '023', desc => 'description 023', score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 3 }{ '032' } = $DefinitionList{ 3 }{ '023' };

   $DefinitionList{ 3 }{ '067' } = { key => '067', desc => 'description 067', score => -9,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 3 }{ '076' } = $DefinitionList{ 3 }{ '067' };

   $DefinitionList{ 3 }{ '123' } = { key => '123', desc => 'description 123', score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 3 }{ '415' } = { key => '415', desc => 'description 415', score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 3 }{ '514' } = $DefinitionList{ 3 }{ '415' };
   $DefinitionList{ 3 }{ '516' } = $DefinitionList{ 3 }{ '415' };
   $DefinitionList{ 3 }{ '615' } = $DefinitionList{ 3 }{ '415' };

   $DefinitionList{ 3 }{ '789' } = { key => '789', desc => 'description 789', score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 3 }{ '798' } = $DefinitionList{ 3 }{ '789' };
   $DefinitionList{ 3 }{ '879' } = $DefinitionList{ 3 }{ '789' };
   $DefinitionList{ 3 }{ '897' } = $DefinitionList{ 3 }{ '789' };
   $DefinitionList{ 3 }{ '978' } = $DefinitionList{ 3 }{ '789' };
   $DefinitionList{ 3 }{ '987' } = $DefinitionList{ 3 }{ '789' };

   $DefinitionList{ 3 }{ '246' } = { key => '246', desc => 'description 246', score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $DefinitionList{ 3 }{ '264' } = $DefinitionList{ 3 }{ '246' };
   $DefinitionList{ 3 }{ '426' } = $DefinitionList{ 3 }{ '246' };
   $DefinitionList{ 3 }{ '462' } = $DefinitionList{ 3 }{ '246' };
   $DefinitionList{ 3 }{ '624' } = $DefinitionList{ 3 }{ '246' };
   $DefinitionList{ 3 }{ '642' } = $DefinitionList{ 3 }{ '246' };

   $DefinitionList{ 3 }{ '365' } = { key => '365', desc => 'description 365', score =>  1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $DefinitionList{ 3 }{ '846' } = { key => '846', desc => 'description 846', score => -1,
                                     subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };


# Combination (related numbers)

my %CombinationList;
   $CombinationList{ '11:5' }  = { desc => 'description of 11+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '11:9' }  = { desc => 'description of 11+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+23' } = { desc => 'description of 12+23',  score =>  -80,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+27' } = { desc => 'description of 12+27',  score =>  -80,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+37' } = { desc => 'description of 12+37',  score =>  -80,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+48' } = { desc => 'description of 12+48',  score =>  -80,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12:5' }  = { desc => 'description of 12+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12:9' }  = { desc => 'description of 12+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '13:5' }  = { desc => 'description of 13+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '13:9' }  = { desc => 'description of 13+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '23:5' }  = { desc => 'description of 23+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '23:9' }  = { desc => 'description of 23+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '27:5' }  = { desc => 'description of 27+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '27:9' }  = { desc => 'description of 27+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '37:5' }  = { desc => 'description of 37+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '37:9' }  = { desc => 'description of 37+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '48:5' }  = { desc => 'description of 48+5',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '48:9' }  = { desc => 'description of 48+9',  score =>  -50,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '29+66' } = { desc => 'description of 29+66', score =>  2,
                                   subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $CombinationList{ '12+27+26' }  = { desc => 'description of 12+27+26',  score =>  -40,
                                       subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };

   $CombinationList{ '12+27+26:5' }  = { desc => 'description of 12+27+26:5',  score =>  -35,
                                         subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+27+26:9' }  = { desc => 'description of 12+27+26:9',  score =>  -35,
                                         subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };
   $CombinationList{ '12+27+26:59' } = { desc => 'description of 12+27+26:59', score =>  -35,
                                         subcat => { love => 1,  work => 1, support => 1, money => 1, parent => 1, friendship => 1, health => 1, safety => 1 } };



# Sum of all digits definition
my %SumDigitList;
   $SumDigitList{ '36' } = 'Love & Warm';
   $SumDigitList{ '40' } = 'Miracle';
   $SumDigitList{ '41' } = 'Universe Energy';
   $SumDigitList{ '42' } = 'Romantic';
   $SumDigitList{ '44' } = 'Success Drive';
   $SumDigitList{ '45' } = 'Fighting Spirit';
   $SumDigitList{ '46' } = 'Lucky Star';
   $SumDigitList{ '50' } = 'Intelligence';
   $SumDigitList{ '51' } = 'Completeness';
   $SumDigitList{ '54' } = 'Great Success';
   $SumDigitList{ '55' } = 'Fulfillment';
   $SumDigitList{ '56' } = 'Art';
   $SumDigitList{ '59' } = 'Spiritual';
   $SumDigitList{ '60' } = 'Imagination';
   $SumDigitList{ '63' } = 'Endless Love';
   $SumDigitList{ '64' } = 'Success';
   $SumDigitList{ '65' } = 'Charm';
   $SumDigitList{ '66' } = 'Emotional';



# General analysis definition
my %GeneralList;
   $GeneralList{ '9+5' }     = { score =>  1,  desc => 'Can depend on people' };
   $GeneralList{ '9-5' }     = { score => -1,  desc => 'Cannot depend on people' };
   $GeneralList{ 'end380' }  = { score => -10, desc => 'Cannot save money' };
   $GeneralList{ 'end7' }    = { score => -70, desc => 'Cannot close the deal' };
   $GeneralList{ 'B+G' }     = { score => -5,  desc => 'Bad, but has support from cousins, managers' };
   $GeneralList{ 'G+B' }     = { score => -10, desc => 'Bad, but has support from closed relatives, parents' };
   $GeneralList{ 'G+BG' }    = { score => -1,  desc => 'Bad, but has support from both closed relatives, parents, and cousins, managers' };
   $GeneralList{ 'B+B' }     = { score => -20, desc => 'Bad, and no support' };






#----------------------------------------------------------------------------------------------------
# Define constant
#----------------------------------------------------------------------------------------------------

# Common constants
use constant YES           => 1;
use constant NO            => 0;

# Return code.
use constant FALSE         => 0;
use constant TRUE          => 1;

# Extremely Bad Digit Score
use constant EXTREME_SCORE => -60;

# Max digits in definition list.
use constant MAX_DIGIT     => 3;





#----------------------------------------------------------------------------------------------------
# Global Variables
#----------------------------------------------------------------------------------------------------

# Sequence of number combination to analyze and display the result
my @NumberSequence;








#----------------------------------------------------------------------------------------------------
# Description  : To list possible number arrangement
# Parameter    : Number
#----------------------------------------------------------------------------------------------------

sub ListPossible
{
  my $Key    = shift( @_ );

  my @Result;

  if( length( $Key ) == 1 )
  {
    push( @Result, $Key );
  }
  elsif( length( $Key ) == 2 )
  {
    push( @Result, $Key );
    push( @Result, substr( $Key, 1, 1 ) . substr( $Key, 0, 1 ) );
  }

  return @Result;
}


#----------------------------------------------------------------------------------------------------
# Description  : Decode Combination
# Parameter    : Number to lookup
#----------------------------------------------------------------------------------------------------

sub DecodeCombination
{
  my $Value     = shift( @_ );

  my %NumberCombination;
  my @PosCombination;
  my %ProcessedList;
  my $ValueLen  = length( $Value );
  my $MaxLen;

  print ":: For 2-digit --> Decoding combination in $Value<br>\n";

  # First, analyzing 2-digit combination
  if( $ValueLen < 2 )
  {
    print "   :: $Value : too short to lookup<br>\n";
    return FALSE;
  }

  my $Pos = 0;
  my $PosKey;
  my $Combi;
  my $Score;
  my $ScoreKey;

  while( $Pos + 2 <= $ValueLen )
  {
    $Combi = substr( $Value, $Pos, 2 );

    if( exists( $DefinitionList{ 2 }{ $Combi } ))
    {
      # Identify bad numbers out of good number --> For bad number, group by score, and position.  Good numbers, only need position
      $Score    = $DefinitionList{ 2 }{ $Combi }{ score };
      if( $Score < 0 )
      {
        $ScoreKey = sprintf( "%4d", 1000 + $Score );
      }
      else
      {
        $ScoreKey = sprintf( "%4d", 1000 );
      }
      print "    • At $Pos  --> Taking [$Combi]   score = $Score<br>\n";

      $PosKey = sprintf( "%02d", $Pos );
      $NumberCombination{ $ScoreKey }{ $PosKey }{ combi } = $Combi;
      $NumberCombination{ $ScoreKey }{ $PosKey }{ score } = $Score;

      $PosCombination{ $Pos }{ combi }  = $Combi;
      $PosCombination{ $Pos }{ score }  = $Score;
    }
    else
    {
      print "    • At $Pos  --> Skip [$Combi]<br>\n";
    }

    $Pos++;
  }

  # Identifying sequence
  print "\nIdentifying sequence:<br>\n";

  my $Seq = 1;
  my @TmpSequence;

  # Loop by lowest score (very bad numbers first)
  foreach $ScoreKey ( sort keys %NumberCombination )
  {
    # Loop for position (from front to back)
    foreach $PosKey ( sort keys %{ $NumberCombination{ $ScoreKey }} )
    {
      $Pos = 0 + $PosKey;

      print "  " . $Seq++ . " : score = " . $NumberCombination{ $ScoreKey }{ $PosKey }{ score } . " \tPos = $Pos  \tcombination = " . $NumberCombination{ $ScoreKey }{ $PosKey }{ combi } . "<br>\n";

      # Check if the combination has already been in the list, so that we don't display double translation, and XY = YX, keep only 1 combination.
      if( !exists( $ProcessedList{ $NumberCombination{ $ScoreKey }{ $PosKey }{ combi } }{ key } ))
      {
	push( @NumberSequence, { combi  => $NumberCombination{ $ScoreKey }{ $PosKey }{ combi }, 
				 posit  => $Pos } );
	$ProcessedList{ $DefinitionList{ 2 }{ $NumberCombination{ $ScoreKey }{ $PosKey }{ combi } }{ key } } = 1;
      }
    }
  }

  # Now, analyzing 3+ digit combination, do a simple loop
  if( $ValueLen <= MAX_DIGIT )
  {
    $MaxLen = $ValueLen;
  }
  elsif( $ValueLen > MAX_DIGIT )
  {
    $MaxLen = MAX_DIGIT;
  }

  $WorkLen = 3;

  while( $WorkLen <= $MaxLen )
  {
    print "\n:: For $WorkLen-digit --> Checking combination<br>\n";
    $Pos = 0;

    while( $Pos + $WorkLen <= $ValueLen )
    {
      $Combi = substr( $Value, $Pos, $WorkLen );

      if( exists( $DefinitionList{ $WorkLen }{ $Combi } ))
      {
	$Score    = $DefinitionList{ $WorkLen }{ $Combi }{ score };
	print "    • At $Pos  --> Taking [$Combi]   score = $Score<br>\n";
        
	push( @NumberSequence, { combi => $Combi, posit => $Pos } );
      }
      else
      {
	print "    • At $Pos  --> Skip [$Combi]<br>\n";
      }

      $Pos++;
    }
    $WorkLen++;
  }
}




#----------------------------------------------------------------------------------------------------
# Description  : Generic Number Lookup
#----------------------------------------------------------------------------------------------------

sub Lookup
{
  my $Value     = shift( @_ );

  my $Combi;
  my $CombiLen;
  my $Pos;
  my %ProcessedList;

  # Total score calculated from all number combination
  my %TotalScore;

  # Total score of each subcat of all number combination
  my %SubCatScore;

  my $ValueLen = length( $Value );


  for( my $i = 0; $i <= $#NumberSequence; $i++ )
  {
    $Combi = $NumberSequence[ $i ]{ combi };
    $Pos   = $NumberSequence[ $i ]{ posit };
    $CombiLen = length( $Combi );

    if( exists( $DefinitionList{ $CombiLen }{ $Combi } ) && !exists( $ProcessedList{ $DefinitionList{ $CombiLen }{ $Combi }{ key } } ))
    {
      # Skip those already processed
      if( exists( $DefinitionList{ $CombiLen }{ $Combi } ))
      {
	# Analyze linked combination
	if( exists( $DefinitionList{ $CombiLen }{ $Combi }{ link } ))
	{
	  my $LinkFound;
	  my $IsExtreme;
	  my $Found_59   = undef;

	  # Loop for each combination
	  foreach my $CombiLink ( @{ $DefinitionList{ $CombiLen }{ $Combi }{ link } } )
	  {
	    $LinkFound = TRUE;
	    
	    my $KeyMatch;
	    my %MatchList;

	    my @KeyList = split( /\+/, $CombiLink );

	    # Loop into each key in combination
	    foreach my $AKey ( @KeyList )
	    {
	      $KeyMatch  = FALSE;

	      # Check if the link key is extremely bad.
	      if( exists( $DefinitionList{ $CombiLen }{ $AKey } ) && $DefinitionList{ $CombiLen }{ $AKey }{ score } <= EXTREME_SCORE )
	      {
	        $IsExtreme = TRUE;
	      }
	      else
	      {
	        $IsExtreme = FALSE;
	      }

	      my @KeyVariant = ListPossible( $AKey );

	      foreach my $AVariant ( @KeyVariant )
	      {
		my $TmpPos = index( $Value, $AVariant );

		if( $TmpPos != -1 )
		{
		  $KeyMatch = TRUE;

		  # Check prefix / suffix value 5/9 if extreme number.
		  if( $IsExtreme )
		  {
		    

			  if( $TmpPos > 0 )
		    {
		      $Found_59 .= substr( $Value, $TmpPos - 1, 1 )    if( substr( $Value, $TmpPos - 1, 1 ) =~ /[59]/ );
		    }
		    if( $TmpPos + length( $AVariant ) < length( $Value ))
		    {
		      $Found_59 .= substr( $Value, $TmpPos + length( $AVariant ), 1 )    if( substr( $Value, $TmpPos + length( $AVariant ), 1 ) =~ /[59]/ );
		    }

		  }

		  # Keep the key to mark as processed later.
		  if( exists( $DefinitionList{ length( $AVariant ) }{ $AVariant }{ key } ))
		  {
		    $MatchList{ $DefinitionList{ length( $AVariant ) }{ $AVariant }{ key } } = 1;
		  }
		}
	      }

	      if( !$KeyMatch )
	      {
		$LinkFound = FALSE;
		last;
	      }
	    }

	    if( $LinkFound )
	    {
	      if( !exists( $ProcessedList{ $CombiLink } ))
	      {
		# For extreme number, prefix / suffix with 5 or 9 may have different meaning.
		if( defined( $Found_59 ))
		{
		  if( $Found_59 =~ /5/ && $Found_59 =~ /9/ && exists( $CombinationList{ $CombiLink . ":59" } ))
		  {
		    ( $CombinationList{ $CombiLink . ":59" }{ score } >= 0 )
		      ? ( $TotalScore{ positive } += $CombinationList{ $CombiLink . ":59" }{ score } )
		      : ( $TotalScore{ negative } += $CombinationList{ $CombiLink . ":59" }{ score } );

		    printf "       %-4s : ( %3d ) %-20s", $Combi, $CombinationList{ $CombiLink . ":59" }{ score },
								 $CombinationList{ $CombiLink . ":59" }{ desc };
		    # Loop for subcat score
		    print "\t|";
		    foreach my $SubCat ( sort keys %{ $CombinationList{ $CombiLink . ":59" }{ subcat } } )
		    {
		      printf "\t%10s =%3d", $SubCat, $CombinationList{ $CombiLink . ":59" }{ subcat }{ $SubCat };

		      ( $CombinationList{ $CombiLink . ":59" }{ subcat }{ $SubCat } >= 0 )
		        ? ( $SubCatScore{ $SubCat }{ positive } += $CombinationList{ $CombiLink . ":59" }{ subcat }{ $SubCat } )
		        : ( $SubCatScore{ $SubCat }{ negative } += $CombinationList{ $CombiLink . ":59" }{ subcat }{ $SubCat } );
		    }
		    print "<br>\n";
		  }
		  elsif( $Found_59 =~ /5/ && exists( $CombinationList{ $CombiLink . ":5" } ))
		  {
		    ( $CombinationList{ $CombiLink . ":5" }{ score } >= 0 )
		      ? ( $TotalScore{ positive } += $CombinationList{ $CombiLink . ":5" }{ score } )
		      : ( $TotalScore{ negative } += $CombinationList{ $CombiLink . ":5" }{ score } );

		    printf "       %-4s : ( %3d ) %-20s", $Combi, $CombinationList{ $CombiLink . ":5" }{ score },
								 $CombinationList{ $CombiLink . ":5" }{ desc };
		    # Loop for subcat score
		    print "<br>\t|";
		    foreach my $SubCat ( sort keys %{ $CombinationList{ $CombiLink . ":5" }{ subcat } } )
		    {
		      printf "\t%10s =%3d", $SubCat, $CombinationList{ $CombiLink . ":5" }{ subcat }{ $SubCat };

		      ( $CombinationList{ $CombiLink . ":5" }{ subcat }{ $SubCat } >= 0 )
		        ? ( $SubCatScore{ $SubCat }{ positive } += $CombinationList{ $CombiLink . ":5" }{ subcat }{ $SubCat } )
		        : ( $SubCatScore{ $SubCat }{ negative } += $CombinationList{ $CombiLink . ":5" }{ subcat }{ $SubCat } );
		    }
		    print "<br>\n";
		  }
		  elsif( $Found_59 =~ /9/ && exists( $CombinationList{ $CombiLink . ":9" } ))
		  {
		    ( $CombinationList{ $CombiLink . ":9" }{ score } >= 0 )
		      ? ( $TotalScore{ positive } += $CombinationList{ $CombiLink . ":9" }{ score } )
		      : ( $TotalScore{ negative } += $CombinationList{ $CombiLink . ":9" }{ score } );

		    printf "       %-4s : ( %3d ) %-20s", $Combi, $CombinationList{ $CombiLink . ":9" }{ score },
								 $CombinationList{ $CombiLink . ":9" }{ desc };
		    # Loop for subcat score
		    print "\t|";
		    foreach my $SubCat ( sort keys %{ $CombinationList{ $CombiLink . ":9" }{ subcat } } )
		    {
		      printf "\t%10s =%3d", $SubCat, $CombinationList{ $CombiLink . ":9" }{ subcat }{ $SubCat };

		      ( $CombinationList{ $CombiLink . ":9" }{ subcat }{ $SubCat } >= 0 )
		        ? ( $SubCatScore{ $SubCat }{ positive } += $CombinationList{ $CombiLink . ":9" }{ subcat }{ $SubCat } )
		        : ( $SubCatScore{ $SubCat }{ negative } += $CombinationList{ $CombiLink . ":9" }{ subcat }{ $SubCat } );
		    }
		    print "<br>\n";
		  }
		  else
		  {
		    ( $CombinationList{ $CombiLink }{ score } >= 0 )
		      ? ( $TotalScore{ positive } += $CombinationList{ $CombiLink }{ score } )
		      : ( $TotalScore{ negative } += $CombinationList{ $CombiLink }{ score } );

		    printf "       %-4s : ( %3d ) %-20s", $Combi, $CombinationList{ $CombiLink }{ score },
								 $CombinationList{ $CombiLink }{ desc };
		    # Loop for subcat score
		    print "\t|";
		    foreach my $SubCat ( sort keys %{ $CombinationList{ $CombiLink }{ subcat } } )
		    {
		      printf "\t%10s =%3d", $SubCat, $CombinationList{ $CombiLink }{ subcat }{ $SubCat };

		      ( $CombinationList{ $CombiLink }{ subcat }{ $SubCat } >= 0 )
		        ? ( $SubCatScore{ $SubCat }{ positive } += $CombinationList{ $CombiLink }{ subcat }{ $SubCat } )
		        : ( $SubCatScore{ $SubCat }{ negative } += $CombinationList{ $CombiLink }{ subcat }{ $SubCat } );
		    }
		    print "<br>\n";
		  }
		}
		else
		{
		  ( $CombinationList{ $CombiLink }{ score } >= 0 )
		    ? ( $TotalScore{ positive } += $CombinationList{ $CombiLink }{ score } )
		    : ( $TotalScore{ negative } += $CombinationList{ $CombiLink }{ score } );

		  printf "       %-4s : ( %3d ) %-20s", $Combi, $CombinationList{ $CombiLink }{ score },
							       $CombinationList{ $CombiLink }{ desc };
		  # Loop for subcat score
		  print "\t|";
		  foreach my $SubCat ( sort keys %{ $CombinationList{ $CombiLink }{ subcat } } )
		  {
		    printf "\t%10s =%3d", $SubCat, $CombinationList{ $CombiLink }{ subcat }{ $SubCat };

		    ( $CombinationList{ $CombiLink }{ subcat }{ $SubCat } >= 0 )
		      ? ( $SubCatScore{ $SubCat }{ positive } += $CombinationList{ $CombiLink }{ subcat }{ $SubCat } )
		      : ( $SubCatScore{ $SubCat }{ negative } += $CombinationList{ $CombiLink }{ subcat }{ $SubCat } );
		  }
		  print "<br>//\n";
		}

		$ProcessedList{ $CombiLink } = 1;

		foreach my $AMatch ( keys %MatchList )
		{
		  $ProcessedList{ $AMatch } = 1;
		}
	      }
	      last;
	    }
	  }

	  if( !$LinkFound )
	  {
	    # The related number(s) are not found
	    if( !exists( $ProcessedList{ $DefinitionList{ $CombiLen }{ $Combi }{ key } } ))
	    {
	      ( $DefinitionList{ $CombiLen }{ $Combi }{ score } >= 0 )
		? ( $TotalScore{ positive } += $DefinitionList{ $CombiLen }{ $Combi }{ score } )
		: ( $TotalScore{ negative } += $DefinitionList{ $CombiLen }{ $Combi }{ score } );

	      $ProcessedList{ $DefinitionList{ $CombiLen }{ $Combi }{ key } } = 1;

	      printf "       %-4s : ( %3d ) %-20s", $Combi, $DefinitionList{ $CombiLen }{ $Combi }{ score }, 
                                                           $DefinitionList{ $CombiLen }{ $Combi }{ desc };
	      # Loop for subcat score
	      print "\t|";
	      foreach my $SubCat ( sort keys %{ $DefinitionList{ $CombiLen }{ $Combi }{ subcat } } )
	      {
		printf "\t%10s =%3d", $SubCat, $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat };

		( $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } >= 0 )
		  ? ( $SubCatScore{ $SubCat }{ positive } += $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } )
		  : ( $SubCatScore{ $SubCat }{ negative } += $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } );
	      }
	      print "<br>//\n";
	    }
	  }
	}
	else
	{
	  if( !exists( $ProcessedList{ $DefinitionList{ $CombiLen }{ $Combi }{ key }} ))
	  {
	    ( $DefinitionList{ $CombiLen }{ $Combi }{ score } >= 0 )
	      ? ( $TotalScore{ positive } += $DefinitionList{ $CombiLen }{ $Combi }{ score } )
	      : ( $TotalScore{ negative } += $DefinitionList{ $CombiLen }{ $Combi }{ score } );

	    $ProcessedList{ $DefinitionList{ $CombiLen }{ $Combi }{ key } } = 1;

	    printf "       %-4s : ( %3d ) %-20s", $Combi, $DefinitionList{ $CombiLen }{ $Combi }{ score }, 
	                                                  $DefinitionList{ $CombiLen }{ $Combi }{ desc };
	    # Loop for subcat score
	    print "\t|";
	    foreach my $SubCat ( sort keys %{ $DefinitionList{ $CombiLen }{ $Combi }{ subcat } } )
	    {
	      printf "\t%10s =%3d", $SubCat, $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat };

	      ( $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } >= 0 )
		? ( $SubCatScore{ $SubCat }{ positive } += $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } )
		: ( $SubCatScore{ $SubCat }{ negative } += $DefinitionList{ $CombiLen }{ $Combi }{ subcat }{ $SubCat } );
	    }
	    print "<br>//\n";
	  }
	}
      }
      else
      {
	printf "       %-4s : skip\n", $Combi;
	$ProcessedList{ $Combi } = 1;
      }
    }

    $Pos++;
  }

  # Display Total Score
  print "<br>\n";
  $TotalScore{ positive } = 0   if( !exists( $TotalScore{ positive } ));
  $TotalScore{ negative } = 0   if( !exists( $TotalScore{ negative } ));
  print ":: Total Score   : " . $TotalScore{ positive } . ":" . $TotalScore{ negative } . "<br>\n";

  # Display total SubCat scores
  print ":: Sub-Cat Score :<br>\n";
  foreach my $SubCat ( sort keys %SubCatScore )
  {
    $SubCatScore{ $SubCat }{ positive } = 0   if( !exists( $SubCatScore{ $SubCat }{ positive } ));
    $SubCatScore{ $SubCat }{ negative } = 0   if( !exists( $SubCatScore{ $SubCat }{ negative } ));
    printf "\t%10s =%3d:%d", $SubCat, $SubCatScore{ $SubCat }{ positive }, $SubCatScore{ $SubCat }{ negative };
  }
  print "<br>\n";
}





#----------------------------------------------------------------------------------------------------
# Preparing data
#----------------------------------------------------------------------------------------------------

# Preparing list of extreme numbers

foreach my $NumDigit ( keys %DefinitionList )
{
  foreach my $Digit ( keys %{ $DefinitionList{ $NumDigit }} )
  {
    if( exists( $DefinitionList{ $NumDigit }{ $Digit }{ score } ) &&
        ( $DefinitionList{ $NumDigit }{ $Digit }{ score } <= EXTREME_SCORE ))
    {
      push( @ExtremeList, $Digit );
    }
  }
}

print ":: Extreme Number :  " . join( ", ", sort( @ExtremeList )) . "<br>\n";





#----------------------------------------------------------------------------------------------------
# Validation
#----------------------------------------------------------------------------------------------------

my $MSISDN = $ARGV[ 0 ];

print ":: Reading $MSISDN (" . length( $MSISDN ) . ")<br>\n";


# MSISDN validation; e.g., length, format, etc.
if( length( $MSISDN ) != 10 )
{
  print "MSISDN needs to have 10 digits<br>\n";
  exit 1;
}
elsif( !( $MSISDN =~ /^0/ ))
{
  print "MSISDN needs to start with 0<br>\n";
  exit 1;
}




#----------------------------------------------------------------------------------------------------
# PASS 1 : Sum of all digits
#----------------------------------------------------------------------------------------------------

print "<br>\n------------------------------------------------------------------------------------------<br>\n";
print ":: PASS 1 - Analyzing sum of all digits<br>\n";

my $SumDigit = 0;

for( my $i = 0; $i < 10; $i++ )
{
  $SumDigit += substr( $MSISDN, $i, 1 );
}

print ":: Sum of all digits = $SumDigit : ";
if( exists( $SumDigitList{ $SumDigit } ))
{
  print "(" . $SumDigitList{ $SumDigit } . ")<br>\n";
}
else
{
  print "meaning of $SumDigit<br>\n";
}




#----------------------------------------------------------------------------------------------------
# PASS 2 : Check for extreme numbers at power position (... XX. XXXX)
#----------------------------------------------------------------------------------------------------

print "<br>\n------------------------------------------------------------------------------------------<br>\n";
print ":: PASS 2 - Analyzing direction\n";


DecodeCombination( substr( $MSISDN, 3 ) );




#----------------------------------------------------------------------------------------------------
# PASS 3 : Start analyzing
#----------------------------------------------------------------------------------------------------

print "<br>\n------------------------------------------------------------------------------------------<br>\n";
print ":: PASS 3 - Analyzing number<br>\n";

print ":: Lookup numbers $MSISDN ...<br>\n";

Lookup( substr( $MSISDN, 3 ));




#----------------------------------------------------------------------------------------------------
# PASS 4 : Overall analyzing
#----------------------------------------------------------------------------------------------------

print "<br>\n------------------------------------------------------------------------------------------<br>\n";
print ":: PASS 4 - General analysis<br>\n";


# Check for 999 & 5
if( substr( $MSISDN, 6, 4 ) =~ /9/ )
{
  if( index( $MSISDN, '5' ) == -1 )
  {
    printf "   • %-20s : ( %3d ) %s\n", "9 without 5", $GeneralList{ '9-5' }{ score }, $GeneralList{ '9-5' }{ desc };
  }
  else
  {
    printf "   • %-20s : ( %3d ) %s\n", "9 with 5", $GeneralList{ '9+5' }{ score }, $GeneralList{ '9+5' }{ desc };
  }
}

# Check for last digit (3, 8, 0) - except 63
if( substr( $MSISDN, -1 ) =~ /[380]/ )
{
  if( substr( $MSISDN, -2 ) ne '63' )
  {
    printf "   • %-20s : ( %3d ) %s\n", "End with 3, 8, 0", $GeneralList{ 'end380' }{ score }, $GeneralList{ 'end380' }{ desc };
  }
}

# Check for last digit 7
if( $MSISDN =~ /7$/ )
{
  printf "   • %-20s : ( %3d ) %s\n", "End with 7", $GeneralList{ 'end7' }{ score }, $GeneralList{ 'end7' }{ desc };
}

print "<br>\n";

Anon7 - 2022
AnonSec Team