Z3A2Àº ÅؽºÆ® ¿£ÄÚµù Çü½ÄÀ̸ç 2008³â 8¿ù ºÎµé¿¡ ÀÇÇØ ¸¸µé¾îÁ³À¸¸ç °ü·ÃµÈ ÇÁ·Î±×·¥Àº GPLÀúÀ۱ǿ¡ µû¸¨´Ï´Ù.
[PNG image (9.61 KB)]
- °ü·Ã¿£ÄÚµù : H3Z2
- °ü·Ã¾ð¾î : ºû±ò¾ð¾î - Bitggal Language
Z3A2´Â H3Z2 ¿Í À¯»çÇÑ ¿£ÄÚµù ü°è·Î 1byte ¶Ç´Â 2byte °ªÀ» 2°³,3°³ÀÇ ¾ËÆĺªÀ¸·Î º¯È¯½ÃÄÑÁÝ´Ï´Ù. Z3A2 1byte ¿Í 2byte ¸¦ ±¸ºÐÇϱâ À§Çؼ ÃÑ 65792( 256 + 65536 )°³ÀÇ Äڵ带 »ç¿ëÇÕ´Ï´Ù. Áï ´ë»ó ¹®ÀÚ¿ ¶Ç´Â ¹ÙÀ̳ʸ®¸¦ 2byte ¿Í 1byte ´ÜÀ§·Î ºÐ¸®ÇÏ¿© ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ Ȧ¼ö ±æÀÌÀÇ ¸¶Áö¸· NULL°ª 1¹ÙÀÌÆ® ±îÁö ó¸®ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
( H3Z2ÀÇ °æ¿ì Á÷Á¢ÁöÁ¤ ÇØ¾ß )
¾ËÆĺª 2¹®ÀÚ¿Í 3¹®ÀÚ·Î 65792°³ÀÇ Á¶ÇÕÀ» ¸¸µé ¼ö ÀÖ´Â °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ ¿©·¯°¡Áö °æ¿ì°¡ ÀÖ½À´Ï´Ù.
65536 + 256
= 24*52*52 + 28*32
= 29*47*48 + 23*16
= 35*36*52 + 17*16
= 35*39*48 + 17*16
= 36*38*48 + 16*8
= 40*38*43 + 12*36
= 40*40*41 + 12*16
= 41*37*43 + 11*51
= 44*31*48 + 8*40
= 51*30*43 + 1*2
Z3A2´Â Á¦ÀÏ À§ÀÇ 24 * 52 * 52 + 28 * 32 ½Ä¿¡ ±âÀÎÇÑ ¾ËÆĺª Á¶ÇÕÀ» »ç¿ëÇÕ´Ï´Ù.
- 24 * 52 * 52 + 28 * 32 = 256 + 65536 = 65792
- Á¤±ÔÇ¥Çö½Ä : / O - Z A - Z A - Z | A - N A - P /i
À§ µî½Ä¿¡¼ 24°ú 28ÀÇ ÇÕÀº 52·Î ¾ËÆĺªÀÇ ´ë¼Ò¹®ÀÚÇÕ°ú µ¿ÀÏÇϹǷΠ¼·Î Áߺ¹µÇÁö ¾Ê°Ô Á¶ÇÕÇÒ ¼ö ÀÖ°í ù ¾ËÆĺª À¸·Î 3¹®ÀÚ Á¶ÇÕ°ú 2¹®ÀÚ Á¶ÇÕÀÎÁö¸¦ ÆÇ´ÜÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ( A - N ¿Í O - Z ´Â °ãÄ¡´Â ºÎºÐÀÌ ¾ø¾î¾ß ÇÔ. )
°¢ ÀÚ¸®ÀÇ ¾ËÆĺªÀº ´ÙÀ½ ¼ø¼´ë·Î Áõ°¡°ªÀ» °¡Áö°Ô µË´Ï´Ù.
- O - Z =>
"OoPpQqRrSsTtUuVvWwXxYyZz" ;
- A - N =>
"AaBbCcDdEeFfGgHhIiJjKkLlMmNn" ;
- A - Z , A - P =>
"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" ;
1byte 0°ªÀº 'AA'°¡ µÇ¸ç 2byte 65536 Àº 'zzz'À¸·Î µË´Ï´Ù.
Z3A2¶ó´Â ¸íĪÀº A2´Â AA¿¡ , Z3·Î zzz¿¡ ´ëÀÀÇϸç 'AA'·Î ½ÃÀÛÇؼ 'zzz'À¸·Î ³¡³ª´Â ÄÚµåü°è¶ó´Â Àǹ̸¦ ³»Æ÷ÇÕ´Ï´Ù.
- AA ~ dp : 1byte 0 ~ 256
- EA ~ zzz : 2byte 0 ~ 65536
H3Z2 ¿Í Z3A2´Â ¾ËÆĺª¸¸À» »ç¿ëÇÏ¿© ¿£ÄÚµùÇϱ⠶§¹®¿¡ À¥Àü¼ÛÀº ¹°·Ð ´Ù¾çÇÑ ÀÀ¿ëÀÌ °¡´ÉÇÕ´Ï´Ù. µµ¸ÞÀθíÀ̳ª ÆÄÀϸíÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇϸç ÇÁ·Î±×·¥ ¼Ò½ºÆÄÀÏ¿¡¼ ¾ÕÆĺª Á¶ÇÕ¸¸À¸·Î ±¸¼ºµÇ¾ß ÇÒ ÅäÅ«À» ¸¸µé±â À§ÇØ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
H3Z2´Â 2byte´ÜÀ§·Î ó¸®Çϱ⠶§¹®¿¡ °¡Àå ¸¶Áö¸· NULL¹®ÀÚ¸¦ ±×´ë·Î ³öµÎ°Å³ª Á¦°ÅÇÏ°Ô µË´Ï´Ù. µû¶ó¼ ¹®ÀÚ¿ÀÌ ¾Æ´Ñ ¹ÙÀ̳ʸ®ÀÇ °æ¿ì´Â ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
Z3A2´Â ÀÌ¿Í °°Àº ´ÜÁ¡À» º¸¿ÏÇÏ¿© 1byteÀÇ °ª°ú 2byteÀÇ °ªÀ» ºÐ¸®ÇÏ¿© Äڵ带 ÇÒ´çÇϵµ·Ï ÇÔÀ¸·Î½á ¹®Á¦¸¦ ÇØ°áÇÕ´Ï´Ù. µû¶ó¼ Z3A2´Â ¹ÙÀ̳ʸ® µ¥ÀÌŸ¿¡ º¸´Ù ÀûÇÕÇÑ ¿£ÄÚµù Çü½ÄÀ̶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù.
2.3. Z3A2ÀÇ Äڵ尪 º¸±â ¶
AA => 0 Aa => 1 AB => 2 Ab => 3 AC => 4 Ac => 5 AD => 6 Ad => 7 AE => 8 Ae => 9 AF => 10 Af => 11 AG => 12 Ag => 13 AH => 14 Ah => 15 AI => 16 Ai => 17 AJ => 18 Aj => 19 AK => 20 Ak => 21 AL => 22 Al => 23 AM => 24 Am => 25 AN => 26 An => 27 AO => 28 Ao => 29 AP => 30 Ap => 31 aA => 32 aa => 33 aB => 34 ab => 35 aC => 36 ac => 37 aD => 38 ad => 39 aE => 40 ae => 41 aF => 42 af => 43 aG => 44 ag => 45 aH => 46 ah => 47 aI => 48 ai => 49
| aJ => 50 aj => 51 aK => 52 ak => 53 aL => 54 al => 55 aM => 56 am => 57 aN => 58 an => 59 aO => 60 ao => 61 aP => 62 ap => 63 BA => 64 Ba => 65 BB => 66 Bb => 67 BC => 68 Bc => 69 BD => 70 Bd => 71 BE => 72 Be => 73 BF => 74 Bf => 75 BG => 76 Bg => 77 BH => 78 Bh => 79 BI => 80 Bi => 81 BJ => 82 Bj => 83 BK => 84 Bk => 85 BL => 86 Bl => 87 BM => 88 Bm => 89 BN => 90 Bn => 91 BO => 92 Bo => 93 BP => 94 . . . . . . .
| NJ => 850 Nj => 851 NK => 852 Nk => 853 NL => 854 Nl => 855 NM => 856 Nm => 857 NN => 858 Nn => 859 NO => 860 No => 861 NP => 862 Np => 863 nA => 864 na => 865 nB => 866 nb => 867 nC => 868 nc => 869 nD => 870 nd => 871 nE => 872 ne => 873 nF => 874 nf => 875 nG => 876 ng => 877 nH => 878 nh => 879 nI => 880 ni => 881 nJ => 882 nj => 883 nK => 884 nk => 885 nL => 886 nl => 887 nM => 888 nm => 889 nN => 890 nn => 891 nO => 892 no => 893 nP => 894 np => 895 OAA => 896 OAa => 897 OAB => 898 OAb => 899
| OAC => 900 OAc => 901 OAD => 902 OAd => 903 OAE => 904 OAe => 905 OAF => 906 OAf => 907 OAG => 908 OAg => 909 OAH => 910 OAh => 911 OAI => 912 OAi => 913 . . . . . . .
| . . . . . . . zZY => 65736 zZy => 65737 zZZ => 65738 zZz => 65739 zzA => 65740 zza => 65741 zzB => 65742 zzb => 65743 zzC => 65744 zzc => 65745 zzD => 65746 zzd => 65747 zzE => 65748 zze => 65749
| zzF => 65750 zzf => 65751 zzG => 65752 zzg => 65753 zzH => 65754 zzh => 65755 zzI => 65756 zzi => 65757 zzJ => 65758 zzj => 65759 zzK => 65760 zzk => 65761 zzL => 65762 zzl => 65763 zzM => 65764 zzm => 65765 zzN => 65766 zzn => 65767 zzO => 65768 zzo => 65769 zzP => 65770 zzp => 65771 zzQ => 65772 zzq => 65773 zzR => 65774 zzr => 65775 zzS => 65776 zzs => 65777 zzT => 65778 zzt => 65779 zzU => 65780 zzu => 65781 zzV => 65782 zzv => 65783 zzW => 65784 zzw => 65785 zzX => 65786 zzx => 65787 zzY => 65788 zzy => 65789 zzZ => 65790 zzz => 65791
|
3. Z3A2ÀÇ PHP±¸Çö ÇÁ·Î±×·¥ ¶
3.1. Ŭ·¡½º ¼Ò½ºÄÚµå ¶
<?php
/* === Z3A2 ¿£ÄÚµù ===
// @»ý¼º : 2008-8-22 // @¸¸µçÀÌ : ½Åµ¿ÀÍ <.)++++< budl // @¸ÞÀÏ : ikw3179@naver.com // @ÀúÀÛ±Ç : GPL
// @Z3A2 ¿£ÄÚµùÇü½Ä¿¡ ´ëÇÑ µµ¿ò¸» ¸µÅ© : http://wiki.kldp.org/wiki.php/Z3A2
... */
define( Z3A2_DIV, 896 ) ; //ÀÓ°è°ª 28*32 define( Z3A2_MAX, 65792 ) ; //ÇÑ°è°ª 65792 = 65536 + 256
$Z3A2[Z] = "OoPpQqRrSsTtUuVvWwXxYyZz" ; $Z3A2[N] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNn" ; $Z3A2[A] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" ; $Z3A2_D = array() ;
class z3a2 {
////------------- ENCODE ---------------/////
//$input ´Â ¹ÙÀ̳ʸ® function encode( $input ) { //¹ÙÀ̳ʸ®,¹®ÀÚ¿Àΰæ¿ì ¼ýÀڹ迷ΠÀüȯ if( is_string( $input )) { //¹®ÀÚ¿À» 2byte Á¤¼ö°ªÀ¸·Î ¸¸µéµÇ ¸¶Áö¸·¿¡ ³²´Â 1byte °¡ ÀÖ´Ù¸é µû·Î . $len = strlen( $input ) ; if( $len % 2 ) { //Ȧ¼ö ±æÀÌÀÎ °æ¿ì ¸¶Áö¸· 1BYTE $last_char_val = ord( $input{ $len -1 } ) ; } $input = unpack( 'v*' , $input ); //¸ðµç °ª¿¡ 256À» Áõ°¡½ÃÅ°°í foreach( $input as $v ) { z3a2::encode_core( $Rstr , $v +256 ) ; } //¸¶Áö¸· ¹ÙÀÌÆ®°¡ ÀÖÀ¸¸é Ãß°¡ÇÑ´Ù. if( $last_char_val ) z3a2::encode_core( $Rstr , $last_char_val ) ; } else if ( is_array( $input ) ) // ¹è¿ { foreach( $input as $a ) z3a2::encode_core( $Rstr , $a ) ; } else if ( is_int ( $input )) // Á¤¼ö z3a2::encode_core( $Rstr , $input ) ; else trigger_error("ÀԷ°ª( $input )ÀÌ À¯È¿ÇÏÁö ¾ÊÀ½ [".__FUNCTION__."]", E_USER_ERROR ); return $Rstr ; } function encode_core( &$rstr , $codeVal ) { global $Z3A2 ; // ÀԷ°ªÀº 0 °ú 65792 ¹Ì¸¸ÀÇ °ªÀÌ¿©¾ß ÇÑ´Ù. if( $codeVal < 0 || $codeVal >= Z3A2_MAX ) // 65792 = 65536 + 256 trigger_error("°æ°è°ª( 0 ~ 65791 )À» ¹þ¾î³ ¼öÄ¡ \$codeVal = $codeVal [".__FUNCTION__."]", E_USER_ERROR ); if( $codeVal < Z3A2_DIV ) // $codeVal < 896 ; { $rstr .= $Z3A2[N][ intval( $codeVal / 32 ) ]. $Z3A2[A][ $codeVal %32 ] ; } else{ // >= 896 $codeVal -= Z3A2_DIV ;
$midVal = intval( $codeVal / 2704 );//2704 = 52*52 $midRem = $codeVal % 2704 ;
$rstr .= $Z3A2[Z][ $midVal ]. $Z3A2[A][ intval( $midRem / 52 ) ]. $Z3A2[A][ $midRem % 52 ] ; } //return 1 ; } ////------------- DECODE ---------------/////
/// @function decode ´Â Z3A2 ¹®ÀÚ¿À» ¼ýÀÚÀÇ ¹è¿ ¶Ç´Â ¿ø·¡ÀÇ ¹ÙÀ̳ʸ®·Î ¹ÝȯÇÑ´Ù. /// $mode °ªÀÌ true ÀÌ¸é ¹ÙÀ̳ʸ® ¹Ýȯ /// $mode °ªÀÌ false ÀÌ¸é ¹è¿°ªÀ¸·Î ¹Ýȯ function decode( $z3a2str , $mode = true ) { global $Z3A2 ; $Rary = array() ; $R = "" ; for($i = 0 ; // (.) Àº ¸ÅÄ¡µÇÁö ¾Ê´Â ºÎºÐÀ» ¸ÅÄ¡ÇÏ´Â °ÍÀÓ //\G¿É¼ÇÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿ÀÇ ½ÃÀۺκÐÀÌ ¸ÅÄ¡µÇµµ·ÏÇØ¾ß ÇÑ´Ù. ^Àº »ç¿ëÇÒ¼ö ¾ø´Ù. ///[O-Z][A-Z][A-Z]|[A-N][A-P]/ preg_match( "/\G(?:([O-Z])[A-Z][A-Z]|[A-N][A-P]|(.))/i" , $z3a2str , $match , 0 , $i ) ; $i += strlen( $match[0] ) ) { if( $match[2] ){ //(.) ///////////////////////////////////// print $R . ": " .strlen( $z3a2str ) ." :" ; trigger_error("ÀÔ·Â Z3A2ÄÚµå( $z3a2str , $i:$match[2] )ÀÇ ÆÐÅÏ¿À·ù [".__FUNCTION__."]" , E_USER_ERROR ) ; } //$match[1]Àº ´ÜÁö $match[0] ÀÌ [O-Z]À¸·Î ½ÃÀÛÇÏ´ÂÁö ÆÇ´ÜÇϱâ À§ÇÑ °Í $dcode = z3a2::decode_core( $match[0] , $match[1] ) ; if( $mode ) { if( $dcode <= 256 ) // 256 $R .= chr( $dcode ) ; //pack( "C" , $dcode ) ; else if( $dcode <= Z3A2_MAX ) $R .= pack( "v" , $dcode - 256 ) ; }else array_push( $Rary , $dcode ) ; } if( $mode ) return $R ; else return $Rary ; } // function decode( $z3a2str , $mode = 1 ) function decode_init( ) { global $Z3A2 , $Z3A2_D ; if( $Z3A2_D ) return ; //print "INIT D INIT D INIT D INIT D <br>";
$Z3A2_D[Z] = array(); $Z3A2_D[N] = array(); $Z3A2_D[A] = array();
foreach( $Z3A2 as $key => $val ) { for( $i = 0 ; $i < strlen($Z3A2[$key]); $i++ ) { $Z3A2_D[$key][$val[$i]] = $i ; } } } // $Z_mode °¡ true À̸é [O-Z] À¸·Î ½ÃÀÛ function decode_core( $ecode , $Z_mode ) { global $Z3A2_D ;
$rVal = 0 ; ///[O-Z][A-Z][A-Z]|[A-N][A-P]/ if( $Z_mode ) { $rVal = $Z3A2_D[Z][$ecode{0}]*2704 //2704 = 52*52 + $Z3A2_D[A][$ecode{1}]*52 + $Z3A2_D[A][$ecode{2}] + Z3A2_DIV ; // 896 } else { $rVal = $Z3A2_D[N][$ecode{0}]*32 + $Z3A2_D[A][$ecode{1}] ; } return $rVal ; } }
z3a2::decode_init( );
3.2. »ùÇÃÇÁ·Î±×·¥ ¶
<? include dirname(__FILE__)."/z3a2.php" ;
$sample_text =<<<SAMPLE_TEXT
,----, .--,-``-. .' .`| / / '. ,---, ,----, .' .' ;/ ../ ; ' .' \ .' .' \ ,---, ' .'\ ``\ .`- ' / ; '. ,----,' | | : ./ \___\/ \ :: : \ | : . ; ; | .' / \ : |: | /\ \ ; |.' / `---' / ; / / / | : ' ;. :`----'/ ; / ; / \ \ \ | | ;/ \ \ / ; / ; / /--, ___ / : |' : | \ \ ,'; / /-, / / / .`| / /\ / :| | ' '--' / / /.`| ./__; : / ,,/ ',- .| : : ./__; : | : .' \ ''\ ; | | ,' | : .' ; | .' \ \ .' `--'' ; | .' `---' `--`-,,-' `---'
http://ascii.dtools.net/ ¿¡¼ ±×¸²
SAMPLE_TEXT;
$Z3A2_CODE = z3a2::encode( $sample_text ); $re_sample_text = z3a2::decode( $Z3A2_CODE );
//print '<br>sample_text : ' . strlen( $sample_text ); //print '<br>Z3A2_CODE : ' . strlen( $Z3A2_CODE ); //print '<br>re_sample_text : ' . strlen( $re_sample_text );
print "<hr><b>¿øº» ÅؽºÆ®</b><pre>"; print wordwrap( $sample_text , 80, "\n", 1 );
print "</pre><hr><b>Z3A2</b><p><code>"; print wordwrap( $Z3A2_CODE , 80, "<br>", 1 );
print "</code><hr><b>º¹±¸ ÅؽºÆ®</b><pre>"; print wordwrap( $re_sample_text , 80, "\n", 1 ); print "</pre><hr>";
?>
´ÙÀ½Àº À§ »ùÇÃÇÁ·Î±×·¥ÀÇ ½ÇÇà°á°ú ÀÔ´Ï´Ù.
¿øº» ÅؽºÆ®
,----, .--,-``-.
.' .`| / / '. ,---, ,----,
.' .' ;/ ../ ; ' .' \ .' .' \
,---, ' .'\ ``\ .`- ' / ; '. ,----,' |
| : ./ \___\/ \ :: : \ | : . ;
; | .' / \ : |: | /\ \ ; |.' /
`---' / ; / / / | : ' ;. :`----'/ ;
/ ; / \ \ \ | | ;/ \ \ / ; /
; / /--, ___ / : |' : | \ \ ,'; / /-,
/ / / .`| / /\ / :| | ' '--' / / /.`|
./__; : / ,,/ ',- .| : : ./__; :
| : .' \ ''\ ; | | ,' | : .'
; | .' \ \ .' `--'' ; | .'
`---' `--`-,,-' `---'
http://ascii.dtools.net/ ¿¡¼ ±×¸²
Z3A2OsePuWPuWPuWPuWpYYQBcQBcPVCQDUQBcQBCSXEQdaOsePuWPuWPuWQDUPuzPuWSwFPvQPVdPuWPVdPu WPuWQDxPuWPuWpYYQBcpyePuWPuWPuWPuWPuWQBCQBcpyeOsePuWPuWpMPPuWQDUPuzPuWQGfQDUQfZP uWPuWPuWPuWPVjPuWPuzQDUPuzPvAPuWPuWPuWpMPPuWQDUPuzoaMPuLpYYQBcpyepMIPuWPuWpMPPvA SXEPvAQDUQbCPuWPuWPuzPVdqJUPuWPuWQDxPuWpYYQBcQBcpMOPuWPuWoBCPuLtNUPuWqgWPuWPuWQD UPVdSmGSufSNlPVdPuWPvAPuWqHJPuWPVJPuWPuWPuWPvAtNUPuWPuWPVJQDUPuWoAvPuLqJUPuWtNUQ DUPuzQfSPuWPuWPuWPuWPvAPuWPVJPuWqhQPuWPvQPuWSmnPuWSmGqJUPuWPuWQEOPuzQfSOsePuWQbC QBcPuzPVdqJUPuWPuWPuWPuWQfSPuWPVdPuWPVdPvQqgWPuWPuzQdhPuWqgWQbCQBcpMoPVdqJUOsePu WPuWPVdqJUPuWPVdPuWPuWPuWPuWSmGPuWPvAPuWPvAPvQtNUPuWQGfPuWPvAPuWPvAPVdqJUPuWoApP uLPuWPVjQfSPuWQBdpyePuWPuWSufPvbPVdPuWPVJPuWpNCPuWPVJtNUSmGPuWPvApMOPVjQfSPuWQBd oAOPuLQfSPuWPVdQfSQDUtOAPuWQfSPuWQfSPvAPuWPVdPuWtnHPuWPvQpMIPuWQazpMoQfSPuWPVdQf SSwFoBCQDJSUhqjzPuWPuWPuWqgWPuWPVdpyEPVdpMIQBCPuWPuWtnBPuWPVJqgWPuWPuWQDUSUhqjzP uWPuWPuWoAVtNJPuWqgWPuWPuWQDUPuzPuWPvApMlPvAPuWPuWPuWqJUtNUPuWPvQpMOPuWPuWtNUPuW qgWPuWPuWpMPOsePVjPuWPvQQDUPuzPuWPuWPuWPvAPuWPvAPuWPuWpMPPuWQbCpMoPuzPuWPuWPuWPV jPuWPvQpMPOseQbCQBcPuzPuWPuWPuWPuWPuWSWYQBcQbCpyEpMoPuWPuWPuWPuWPuWPuWPuWPuWQbCQ BcoAlOzXspXTuAqhKQfzTrssTnQEeTUSTIhTrYTFDTUsPVdvbzWfAWnSwgrPWROse
º¹±¸ ÅؽºÆ®
,----, .--,-``-.
.' .`| / / '. ,---, ,----,
.' .' ;/ ../ ; ' .' \ .' .' \
,---, ' .'\ ``\ .`- ' / ; '. ,----,' |
| : ./ \___\/ \ :: : \ | : . ;
; | .' / \ : |: | /\ \ ; |.' /
`---' / ; / / / | : ' ;. :`----'/ ;
/ ; / \ \ \ | | ;/ \ \ / ; /
; / /--, ___ / : |' : | \ \ ,'; / /-,
/ / / .`| / /\ / :| | ' '--' / / /.`|
./__; : / ,,/ ',- .| : : ./__; :
| : .' \ ''\ ; | | ,' | : .'
; | .' \ \ .' `--'' ; | .'
`---' `--`-,,-' `---'
http://ascii.dtools.net/ ¿¡¼ ±×¸²
|
|