Индивидуальное задание - Текстовая графика ASCII ART

ASCII art (от англ. ASCII artwork) — форма изобразительного искусства, использующая символы ASCII на моноширинном экране компьютерного терминала (терминальный сервер) или принтера для представления изображений. При создании такого изображения используется палитра, состоящая из буквенных, цифровых символов и символов знаков пунктуации из числа 95 символов таблицы ASCII. По причине высокой вероятности различий в представлении на системах с национальными вариантами таблицы остальные 160 символов, как правило, не используются.






                                              ___
                                           ,o88888
                                        ,o8888888'
                  ,:o:o:oooo.        ,8O88Pd8888"
              ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
            ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
           , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
          , ..:.::o:ooOoOO8O888O8O,COCOO"
         , . ..:.::o:ooOoOOOO8OOOOCOCO"
          . ..:.::o:ooOoOoOO8O8OCCCC"o
             . ..:.::o:ooooOoCoCCC"o:o
             . ..:.::o:o:,cooooCo"oo:o:
          `   . . ..:.:cocoooo"'o:o:::'
          .`   . ..::ccccoc"'o:o:o:::'
         :.:.    ,c:cccc"':.:.:.:.:.'
       ..:.:"'`::::c:"'..:.:.:.:.:.'
     ...:.'.:.::::"'    . . . . .'
    .. . ....:."' `   .  . . ''
   . . . ...."'
   .. . ."'         
  .


Предтечи

Близкие к аски-арту изображения начали появляться в XIX веке. Одним из их проявлений стал фигурный текст в поэзии — каллиграммы. Общеизвестным примером может стать поэзия Гийома Аполлинера, активно использовавшего каллиграммы в своих стихах. Ещё один общеизвестный пример — творчество Льюиса Кэрролла (например, в произведении «Алиса в стране чудес»).

С изобретением печатной машинки в середине XIX в. создание изображений с помощью литер стало восприниматься как вид искусства. В 1890-х годах производители печатных машинок и агентства по найму и обучению секретарш устраивали конкурсы на самый быстрый набор текста, а также на самый лучший рисунок, созданный с помощью машинки. Один из наиболее ранних сохранившихся примеров такого искусства — рисунок бабочки, созданный в 1898 г. Флорой Стэйсси и опубликованный в журнале «Pitman’s Phonetic Journal» от 15 октября 1898 г. Картинка составлена из множества скобок, дефисов, звёздочек, точек и нескольких прописных букв «o».

История

Аски-арт зародился в середине 1980-х на платформах Amiga и Commodore 64. Развитие же этот вид компьютерного искусства получил в среде демомейкеров. Стандартный шрифт компьютера Amiga содержал очень высокие символы «/» и «\», из которых, располагая их в разных строках, можно было составить совершенно ровные непрерывные линии. Чаще всего такими линиями изображались названия групп, чем и объясняется, что говоря об аски-арте, говорят прежде всего именно о шрифтах. В самом начале шрифты были чёткие, хорошочитаемые. Позднее шрифты усложнялись, делались интереснее. Так впервые заговорили о школах «Oldskool» и «Newskool».

Платформу PC искусство текстового режима облюбовало с появлением нового стандарта ANSI, давшему реальное преимущество перед Amiga. ANSI позволял задавать цвет символу, что в совокупности с имеющимися в таблице символов блоками, породило новое мощное ответвление — ANSI art. Первой арт-группой, показавшей изобразительные возможности на высоком уровне, стала Aces of ANSI Art (A.A.A.) За которой потянулись последователи.

И только уже позже, было замечено, что если использовать символ, почти полностью заполняющий ячейку (например $), а к нему добавить менее плотный символ — то таким образом можно сглаживать общую форму (этот приём получил название «антиалиасинг» (от англ. antialiasing)). Так, в конечном итоге, зародилась современная школа рисования ASCII.

К середине девяностых сцена полностью сформировалась, главными направлениями рисования в текстовом режиме стали ASCII scene, ANSI scene и Amiga style (который часто называют oldskool).


                            .
                            T
                           ( )
                          <===>
                           F|J
                           ===
                          J|||F
                          F|||J
                         /\/ \/\
                         F+++++J
                        J{}{|}{}F         .
                     .  F{}{|}{}J         T
          .          T J{}{}|{}{}F        ;;
          T         /|\F/\/\|/\/\J  .   ,;;;;.
         /:\      .'/|\\:=========F T ./;;;;;;\
       ./:/:/.   ///|||\\\"""""""" /x\T\;;;;;;/
      //:/:/:/\  \\\\|////..[ ]...xXXXx.|====|
      \:/:/:/:T7 :.:.:.:.:||[ ]|/xXXXXXx\|||||
      ::.:.:.:A. `;:;:;:;'=== ==\XXXXXXX/=====.
      `;""::/xxx\.|,|,|,| ( ) ( )| | | |.=..=.|
       :. :`\xxx/(_)(_)(_) _   _ | | | |'-''-'|
       :T-'-.:"":|"""""""|/ \ / \|=====|======|
       .A."""||_|| ,. .. || | | |/\/\/\/ | | ||
   :;:////\:::.'.| || || ||-| |-|/\/\/\+|+| | |
  ;:;;\////::::,='======='=============/\/\=====.
 :;:::;""":::::;:|__..,__|============/||\|\====|
 :::::;|=:::;:;::|,;:::::          |========|   |
 ::l42::::::(}:::::;::::::_________|========|___|__



                   ,%%%,
                 ,%%%` %==--
                ,%%`( '|
               ,%%@ /\_/
     ,%.-"""--%%% "@@__
    %%/             |__`\
   .%'\     |   \   /  //
   ,%' >   .'----\ |  [/
      < <<`       ||
       `\\\       ||
         )\\      )\
 ^^^^^^^^"""^^^^^^""^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Формат и распространение

Традиционной формой распространения аски-арт картин является так называемый артпак (от англ. art package) — архив файлов работ, включающий в себя обычно файл описание file id.diz и .nfo файл группы, выпустивший артпак. Артпаку всегда присваивается порядковый номер, а именуется он обычно по имени группы. Например, группа Mimic, выпустив свой 82-ой артпак, называет его Mimic#82

ASCII-анимации

ASCII-анимация является одним из направлений аски-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультики. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.

Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.

Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны».

                              ,....
                           ,,''    ""-.
                      .--,,'           "",
                    ,.  ,'     .-, ...    `
                   ,'  ,'   .-"   P  ``.  : .,.
               ,'".'   :   ,   ,--;-,   `.,"   `.
              ,'  :    :  '    :  :  `    '-,   `.
              ,  ,     :  :    :  t. ',   :  `   `
             ,'  :     `. :    :   `"'`.  :  :   :
             :   :       :`.   `.     ,'  :  :    :
             `.  `       : `.   `-,...( .,'  ,   ,'
              :   :      :   `.      ' "    ,'   :
              `. ,",     `.    "----'      ,'    ,
               `", `,.    `,             .'      :
                 :   `,     "-,.,.    ,,'       ,
                 `     `,.      :'---"'       ,'
                  t      `-....-td           ,'
                   "-.            "-,,....,-"
       ,,-,.  ..      `..            :   ,.''"----"",...
   ,'""'    "" `-. .    `T-..    ..-`).,,'             `.
 ,"'             `" t    ,( `""""   ,' '    '    ,      `"`
 : --. ,   `         `.  ::       ,.       :     : ,''   .'
 (   `"),  `.   -.    `. `,      .'   ,    ,   ,'`""-    :
 : ,...t,`,.'    `     `,:`,.   '    ,'   ,",--t       ,'
  `         `.   `.  ,  `", '   :,   :  ,.''    "--   ,'
  `,          :  ,'  `, `,` t   ::   : ,.:           .'
   `  -,..---"`'"''.  : ,'`,`.  ::   ,"'`"-,...    ,,'
    `,              :`'"'  `,t  :`.,",         '  ,'
      t          ,.-`---,.. : t )' '-`-.....    -''
       `. ,""""""'      : ``.  `,",           .'
        `"`-.          '    `,   :`,..,.,'""""
            `-,...-,.,'       ", `,   '
                                ", `,.
                                  :   `,.. ,.
                                  """-t.``'`-..    ,...,
                                       ``-..  `""""'  ,
                                           `""---....'



             ,,########################################,,
          .*##############################################*
        ,*####*:::*########***::::::::**######:::*###########,
      .*####:    *#####*.                 :*###,.#######*,####*.
     *####:    *#####*                      .###########*  ,####*
  .*####:    ,#######,                        ##########*    :####*
  *####.    :#########*,                       ,,,,,,,,.      ,####:
    ####*  ,##############****************:,,               .####*
     :####*#####################################**,        *####.
       *############################################*,   :####:
        .#############################################*,####*
          :#####:*****#####################################.
            *####:                  .,,,:*****###########,
             .*####,                            *######*
               .####* :*#######*               ,#####*
                 *###############*,,,,,,,,::**######,
                   *##############################:
                     *####*****##########**#####*
                      .####*.            :####*
                        :####*         .#####,
                          *####:      *####:
                           .*####,  *####*
                             :####*####*
                               *######,
                                 *##,



Автоматизация

Существуют различные компьютерные программы для создания ASCII-графики. Их можно поделить на две группы. Первая представляет из себя некое подобие графических редакторов, только в текстовом режиме. Во вторую группу входят программы, конвертирующие графическое изображение в ASCII-графику.

Вывод видео в аски-арте

В мультимедийном проигрывателе MPlayer существует поддержка aalib, позволяющая выводить видео в режиме ASCII. В оболочке для мультимедийного проигрывателя XINE, xine-ui также присутствует возможность смотреть видео в ASCII (для этого видео запускается через отдельную команду aaxine).




Пример конвертации изображения

Я нашёл в Интернете интересную программку ASCII Pic. Эта программа преобразует картинки в ASCII. Она имеет несколько настроек, относительно размера и яркости выводимых ASCII изображений. Программа доступна по адресу http://softsearch.ru/programs/219-674-ascii-pic-download.shtml . Я её скачал, запустил и преобразовал своё фото, что из этого получилось вы можете увидеть ниже.

Оригинальное фото

                                                                              .---                                                                                                  
                                                                           -:###///,-. -.-.                                                                                         
                                                                        //##XXXXX%#/=/;//#/                                                                                         
                                                                     ,://#%#//#%%%%##/=:#%/.                                                                                        
                                                                    -///#%%###$X%XX$X###X#/--/:#/-   --                                                                             
                                                                   --/##X###XX##XXXXXXXXXX#/###%#//////.                                                                            
                                                                  //#XXX#HH#X###XXXXXXX####XX$$XX%#/////---                                                                         
                                                                 /#XX#XXHHH##XXXX###HHHHHHHXX#XX$X%###%/:/-                                                                         
                                                                /#XX#XX#HH#X$XXX#HHHHHH#@@H#HHXXX$XXXX%##//.                                                                        
                                                               /#XXXXXX#@#X##HXX##@@@@#@@@HHHHXXX$$$X%%%%#/-.                                                                       
                                                            ../MXXXXXXX#XX#@@@#X#@@@@H@@@##H@#XXXXXX%%%%%%#:-                                                                       
                                                           //##XX#XXXXXX#@@@@#X#@HHHH@@@##@#X##XX#HX$XXXX%#;/-                                                                      
                                                          //MXXXXX%%XX#@@@@@@X#@H@H@@@@@H###H#####XXX##X$X%/:/-                                                                     
                                                         //#%X%%XXXXXX##HH@H##@###H@@@@@#X##X#H#XXXXX##XXX+#///-.                                                                   
                                                        ::#XX%X$X$XXXXX#H@##@##XXXH@@@@##HX$X#HHH###H#XXX%%%%#///.                                                                  
                                                       ,/#XXXXX$$$$XX$XHH##@HXXXX#HH@@##H#XXX#HHHH@@#X%%XXXXX%##//.                                                                 
                                                       #XXXXX#X$$XXXXX##X#@@H####HH@@@@@HHH#XHH@@H@#XXXXX$XXX%##////-                                                               
                                                      /XXXXXX$$XXXXXXX#H#H######H@@@@@H#HHH##@@@@@#X#XXXXXXX%+##++##/,                                                              
                                                     /#X$%X$$XXXXX#XXX###XXXX#H@@@@@@#X#HH@H@@@@#X#XXXXXXX$X%X%+%%%#//                                                              
                                                    /#XX%%XXXXXXX####H#XXX###H@@@@HHH##@@@HH@@@#XXXXXX##XXX$X%%XX$X#//-                                                             
                                                   ;#$XXX$XXXXXXX##HHH#XXX##HH@@@@@###M#@@@@@@#XXXXXXX##XX$%%%%X#XXX##/-                                                            
                                                  :#X$$$XXXX#HHX#H##XXXXXXX#H@@@@@@###@@H@@@@H#X$XXX#XXX$$%%%XXX#H#$%#/:.                                                           
                                                 -#XX$$XXX#HHH#HHH##XX##XXX#HH@@@@@@HH@@@@@@H#XXX#HH#XX$XXX%%XXXX#XX%#///                                                           
                                                -#XXXXXX##HHHHHH#HHHHH#XX$$XX##XXXXXHHH@@@@H#XXX#H##X#XXX$XXM#XXXXX%%#///                                                           
                                               ,#XXXXX$#HHHHHHHHH###XXXXX$%%XXXXXXXX#HHHHH#X$XX###XXXXXX$XX#@HH#XX$X%#///.                                                          
                                              -#XXX#XXX#HHHHHHH#XXXX$XXXXXX%$$$$XXXX#HHHHHHX#H#XXXXXXXXXXX#HH###X$$XX#///-.                                                         
                                             ./XXX#HXX#HHHHHHH#X%X$$$XX%%%%%XXXXXXXHHHHHHHH#HH##XXXX$X%%XXX##XH#X$XX$X////.                                                         
                                             /#XXX##X#HHHHHHH#$XX$X%%%%%%%%%%X$XXXX#HHHHHHHH##XXXXXX$%%XX$XXX##XXX$$XX##//-                                                         
                                            :#XXXXXX#HHHHHHH#XX%%%%%%%++++%X$$XXXXXX#######XXXXXXX$$$%%%%XXXXX#X$%X$$X+%//-.                                                        
                                           -#XXXXXXHHHHHHH##X%++%%%%%+++++%%X$$$$$$XXXXXXXXXXXX$$$$$X%%%%%X$$XXX$X%X%%%XX//-                                                        
                                          ./#XXXXX#HHHHHHHHXX#+%%%%%%++++%%%%X$X$XXX$$$$X$$$X$X%$$$$X%%%%%X$$XXXX%%%%+XX%#//.                                                       
                                          //X$XXXHHHHHHHHH#X%++%%%##///##/####%%%%%%$$$$$$$XX%%XX$$X%%%%%%%X$$XXX+%%%%XX%#//-                                                       
                                         ,/#X$X##HHHHHHHH#X%#+%%%#//;;;/://:://##%%%XX$$$$$X%%%XX$X%%%%+%%%X$$X$%+%%%%X$%#;/-                                                       
                                         -/XX$XX###HHHHH#XX###+#///;;/:::/-//:///#+%%%XXX%%%%%XXX%%%%%+++%%X$$$X%%%%%%XX%#///-                                                      
                                         -#XX$XXXX#H@@HXX%/;/##///;;:::=/---/::://#%%%%%%%%%%%X%%%%%%+##+%%%X$X%%%%%%%XX%#/:=-                                                      
                                         :#$$$XXX#HH@@#XX#/////:::::::=/---/=:::/;/#+%%%%%%%%%X%+%%%+#//+++%%%%%%%%%%%$X####/-                                                      
                                         /$XX$XXXHHHHHXX%//;;/:::=====----==::://;/#++%%%%%%%%++%%%+#///#+++%%+%%%%%%%%#%XX#/-.                                                     
                                        ./XXXXXXXH#X##XX#//:::::====/-//-/=:::/;;/#+++++%%%%%%%%%%++#/////#++%%%%%+%%%#/%%%#//-                                                     
                                        -/XX$XXX#HH#XX$#//:::::======/=====:::/;//######+++%%%%%+#++///////#+%%%%++%++//+%%%#//                                                     
                                        /#$$XXXX##H#XXX#;/:::::============:::/;;///////#++++++#//+#/////##%%%%%+++%%+///#%%%+#-                                                    
                                        /%$$XXXXX#HHXX%/;::=:::===========//==:/;;////////#++##/###//////+%X$X%#/#+%%++#/#%%%#//                                                    
                                       ./XXXXXXXXXHH#X+//::=============/---/-////;///////###///#////////#%%%%%##/+%%%%##%%%#///                                                    
                                       ./X%XXXX###HH#X#//::===========/-----,-/=::/;;;;//////;////////;;;//#+++#//%%%%%#+%X%////                                                    
                                       .#%XXXXXHHX#H#X+//::=========/---,,,--,-/==::/;;;///////;;//////;;;;///////+%X$%+++###///                                                    
                                       ./%$XXX#HH#X#XX#/;::========/---,,....-,/=/=:::://://=:::://;;//;;/:/;///;/%X$XX+#/#%#///                                                    
                                        /%$XXX#HH###XX#//::======-/----,,...--,/=/-/==///----/==:::/;;;;;/:::/::/#%XX$X+##+%#//-                                                    
                                        -#$X###HHHH#XX#;;:::====/------,,---,,,-=---//--,,,--/====::::////:=-,/:/#%X$$X%##++///-                                                    
                                        ./XXHHHH@HHXX%#;;:::===///-------------/=/---------/========:::::::=---//#%X$$X%++%#/:/,                                                    
                                         -#XHHHH@HH#X%/;/::::::===///////-////=::==//=/////=============::=/-.-//#%X$$X%++#//:/-                                                    
                                          /X#HHHHHH#$#/;/:///////:::::::::::::::::=======::::::::::::======-,.--/#%X$$X%%+#/:/-.                                                    
                                          ;$X#HHHHH#X#/;;#%%XX%###MMM/////////////:::::::////::////::::::://-.--/#%X$$$%%#/;:/-.                                                    
                                          /$X#HHHHH#X#;/#XXXXXXXXXXXXXXXX####////;;;;;;;/////////////////////-.-;#%%$$$%%///:/-.                                                    
                                          /#X#H@@HH#X/;/XXXXXX##H@@HH@@@#XXXX%%+#///////###+##%%$$XXXXXXX%%#//,-:/+%X$$%+///:--.                                                    
                                          -#XX@@@HH#%/;#XXX#XX###HH@@@@@HH##X$X%%++##%%%XXX$XXX#####XXXXX$$X#//-//#%%$$%+#;/:/-.                                                    
                                          -/XXH@@@H#%/;#XXXXXXXXXXXX##HHH###XXX$X%%%%%XXXX##H@@@@@HH####XXXXX%//=//+%$X%+#;:::-.                                                    
                                          ./X#H@@@H#%//#X$$$$$$$$XXXXX##XXXXXXXX$X%%%XXXX##HH@@@@@@HHHH#XXXX$%#/=:/+%$X%#//:/:-.                                                    
                                           /X#@@@@H#%/#%%X$$$$$$$$XXXX##XXXXXXXX$X%%%XXXX#####HH###XXXXXXXXX$%#/=:/#X$$%#///;:/.                                                    
                                          .;X#@@@HHM#;/%%%%$X$XXXXX#HHHHH#XXX$$$X%+%%XXXXXXXX#XXXXXXXX$$$$$$X%/////#XXX%#/////;                                                     
                                          ./#XHHHHH##;/+%%%$XXXXX#@@@@@@HH#XXX$X%#/##%XXXXX##HHHH###XXXXX$$X%+/////#$$%%+/:////                                                     
                                           //X#HHH#X#;/#+%X$XXX#HH@@@#@@HHHXXX$X#////#%$X##HHHH@@@@@H#XXXX$X%+///-:#X$%%#////;/.                                                    
                                           ,/XX#XXXX#;;/#%X$X#H#XX@@@#@H#HH#XX$%#/:=:/#XXHHHHHH@@@@@@H#XXXXX%+//-,/MX$%+#/;##//.                                                    
                                            /#XXXX$X#;:;#%XXXXXX$X#@@@@##HH#X$$%/://///XX##HH##H@@@@@##XXXX$%+/:--/MX$X+#//##//                                                     
                                            /#XXXXXX#/://#%%%%$XX%X#MMXX##XXX$X#/=--/:/#XX#HH#XH@@@@#XXX#XXXX%//-.;#XXX%#//+#/-                                                     
                                            /#$XXXXX#/:::////##++%%%%%$XXX$$$X%/:=-,-:/#XXXXXXXX##H#XXXX$XXXX%//-.;MX$%%//#%/-                                                      
                                             /#XXXXX#/::::::/;/#+%%%%%XXXXXX%#//:/-,-=:/%XXXXXXXXXXXXXX#//#+%+/:-.;MXX%#//%#/                                                       
                                             .#X$XXXM/:::==::///##++####/##//:::=/-,-=:/#XXXXXXXX$$$$X%+##//////-.;#%%#//##/.                                                       
                                              /XXXXX#:::=====:://///////::=====:==-,-=::/#%%XXX$$$$$$X%%+#/;;;//-.;/%#/:////-                                                       
                                              :#XXXX/::=========::::::=/----======-,-=/-://###%%%%%%%%%++////:/-..-////////-                                                        
                                              :#XXXX/::=====--/=======/---/=======-,-/--///;;///########//;::/-.  ./////:/                                                          
                                              :#XXXX/::=====/========/----=======/-,----/:/;;///;;/;////;;/:/-.    -/;#//                                                           
                                              /#XXXX/::::=====/-///----//======/--,-,----//;;:::://;;;//::::/,.    -/#+/,                                                           
                                              -M%XXX/:::======/---------//=::=/----------/:;;/::::::::::::::/,.    ./#+/.                                                           
                                              -/+%%%/:::::=====/--------/=:::=/--,..----,-:;;/::::====:::::=/--    ./##/                                                            
                                              ./#+##/::::::::===-------/=:/:=/----..-//---////:======:::::::=-,.   .///;                                                            
                                               //#/#/:::::::::==/-----//=:/:=/////-//==/- -///::=====::::::::/--     .-                                                             
                                               -//////:::::::===//--====:::==://:::://////--:;/::====::::::::=--.                                                                   
                                               -/////;::::::::=======::::::://####//#####///:;;::===:::::::===--.  .                                                                
                                                 -///;//::::::=======::::://##%%%%%%%XX%%%#//;;:::::::::::::==--. ..                                                                
                                                  ;///;////:::::====::::::/#%X##XXX$$$$$XX%/;;;/::::://;;/:::=--.  .                                                                
                                                   ,//;;;;;;/:::::::::::=:/%X#H#XX$$$X##H#X##/;;;;//;;;;;;//:=--.  .                                                                
                                                     -//;;;;;:::::::::::==/%XXXXXXX$X#H##XXX%///;;;;;;;;;;;;:=/-  ..                                                                
                                                     -//;;;;/::::::::::////#XXXXXXXXXH#XXXXXX/;/;;;;;;///;;;::--                                                                    
                                                     -;////;:::/:::::==-//:#%$XXXXXXX#XXXXXXX#;/;;;////////;/:--                                                                    
                                                     //////;;;;;:::::==/==:/#X$$XXXXX#XXXXXXX#/;;;///////////:-.                                                                    
                                                    :###///;;;;;;//:::::::/;##%%XXXXXXXXXXXX$%///////#+++////:-                                                                     
                                                    ///###//;;;;;;;;////;;;;/;/##XXXXXXXXXXXX%##/#//#++++#////-                                                                     
                                                   .//####/////;;;;////;;;/:::::/#XXXX$$X$$XXX++++++++++++#///-                                                                     
                                                    -#%##++#////;//##/////::=///=/##X%%%%##%%%%%%%%%++%%%+////-                                                                     
                                                    ,///#+++//////#++++///::///M/////#XX%#///#%%X%%%++%%++//:-. --                                                                  
                                                    ./#/++++#////#%%%%%+//###%++%####X$$XXX###%$$$X%%++++#///- .;/-                                                                 
                                                     /##+++++#//#%%XX$X%XXX$XXXXXXXXXXXXXXXXXXXXXX$$%+++#//:/- -//                                                                  
                                                     -//#+%++###+%XXX###XX######X##############@#XX$X%#/#//=-- -:-                                                                  
                                                      -//#%%+++++%$X#H@HHHH@@HHHHH@@HH@@@@@@H@@@H#X$X%#//;//-.-//-                                                                  
                                                        -#%%%++++XXXHH###XXX#M##H@@HHHHH#########XX$$%#/;::/-.-//.                                                                  
                                                         /%%%%%++%XXXXX$XX%##M###XXXXXXXXX$XXXXXXX$$$%+//:=---/#@/.                                                                 
                                                         /#%%%%%%%X$XXX%%++#/////#++%%%%%%X$$$XXX%X$X%+//:/--/#XX#/                                                                 
                                             .--/::/.    /#%%%%%%%%%%%##+%%%%####%++++%%%XX$$$$X%%%X$%+//:/--/###X:  .                                                              
                                        -//;///;/////   /#XXX%%%%%%%%+//#+%%%XXXX%%%XXX$$$$$$$X%%%X$$%#//:/--/##HX/ .//,                                                            
                                      -///;////##%+#;-;/#X##$X%%%%XXX%#//#%X$$$$$$$$$XX$XXX$$X%%%X$$$%#/:://--/#HX/.-///.                                                           
                                    .-//##M#/#+++%%+##XXX#H#$$X%%%$$X%+//#%X$$XXXXXX##XXXXX$X%%X$$$$X%/;:://-,/#HX/-/##/-                                                           
                                  -/////#%%%++%%%XXXX##XX#@#$$$%%X$$X%%++++%XXXX##HHHHXXXXX$%%%X$$$$%%/;:/.-/-/##X/,/##//.  ,.                                                      
                                ,//:/=/#+%%%%%%%X$X#H@#XX#@#XX$XXX$$$X%++#+%X$XXX#HHH#XXXXXX%%%%$$$X%#;;/- -:-/#HX;/#%%%#/ .//-,.     ..                                            
                               /##///:/+##%%XXX$$XX#H@#$X#@#$%X$$$$$X%%++//#%XXXX##HH#XXXX$X%%%%XX%%#/;// .//-/##X/#X$XXX/..;///;-    ...                                           
                             -###/:/://###%XX$$$$XX##XX$X#@@XXX$$$$$%%%++////#%XXXXXXXXXX$X%+%%%%%+##///- ///-/##XXXXXXXX#,.;/#+#/--.----..                                         
                           ./#%#///-://##/#X$$$XXXXXX%%$X#@@X$X$$$$$X%%%+//;//////MM####%##+###+++#///:--./#/-/#H#XXXXX$%M--/#%+#///,-/=/....--                                     
                         --//////-.-:/#///#%$XXXXX#X%%%$XX#@#X$X$$X$$%%%+#/;/::::/;;;;;;///////##////:=/-/#X///#H#XXXXX$XM/;/#%+#////-=:/-  ---..                                   
                        ---....   .-//+#/#++XXXXXX#X++%X$$XH@X$$$$$XXXX%++#/////;//////////#####/////::-/#X$///$HHHXXXX$$#//#%%+###//::::/-.-----     .                             
                     .-.--------,---//#+##++%XXXX##X#+%%$XXH@#X$$$$XXX$X%%%+##///######//##+%%%#///;;/:/##X%/:##@H#XXXXXXX#/##+++++#//;;///--.--,-.  ./;/                           
                   ---,-//=::://////://++%%%%XXXX##$#+%X$$XH@HXX$$$$XXXX$XX%%%++%%%%++++%%%XXX%+////;//###X#//##@H#XXXXXXXXX$$XXX%%%#///#%##/////-  -,://.                          
                 -/--//=://;/////:==://+%%%%%%XXXX#%/+%$$$X#@@#X$$$$XXXXXX$XX%%%XXXXX%XXX$$$XX%#/////###H#X#;#X@@#XXXXXXXXXXXXXXX$$X%#/+%X$%/////.  .-///                           
               ,/:///::/;/////////////#+%%XX%%%$$XX#/%%X$$X#@@H#X$$$$XXXXXXXXX$$$XXXX$$XXXXXXX##;//#%X#@H#X#;##@@#XXXXX#XX$$XXXXX$$$X%+%X$X%+#//-    .--                            
              :////:::/;//////#%%%+####+%X$X%#+%%XX#/%%%$$$XH@@#XX$$$$XXX##XXXXXXXXXXXXXXX#XX#/://#XX#@@@#X#/X#@@@@#XXX#XXXXXXXXXXXXX%+%XXX%%#/--     .                             
   .         ///:/:::///###//#%%%%XX%%%XXXXX%//#%XX/#%%%XX$XHHHH#XX$$$$$XXXXH##########HH##X#/::/#XX#H@@@#X##X#@@@@@HHHH#XXXXXXXXXXXXX%%XXXX#/-.                                    
   .        ////==:/;//++###%XX%%X$$$$$XX$$X%#//+X#/#+%%XXXX#H@@H#X$$$$$XXXXX###HHHHHHHH#X%//:::/XX#HH@@#X#/##@@@@@@HHHH#X$$XXXXXXX##XXX$X%#.         .                             
           ////:::///##/##%XX$X%X$$$$XX$$XX$%#/##+#/#%%%$$$$XHH@@#XX$$$$$$XXXXXXX#HHHHH#XX#/::=/###HH@@@##//X#@@@@@@HH@#XXXXXXXXXX####XX$X#-      .-;--                             
         .///####$######/#+%X$%X$$$X$$XX$$X%%%X%#///#+%%%%X$XHH@@H#XXX$$$$$XXXXXX######XXX#/:=/##H#HH@@H##//X@@@@@@@@@@#XX%%%X$XX#HH#X#XX#-.     ./:=/-                             
        -;//#XX##H#XX%###%%%%%$XXXX$$$XX$X++%X%+#####%%%%%%XX#HH@@H#XXX$$$$$$XXXXXX#XXXX$%/::/###HHH@@HH#M:##H@@@@@@@@@#X$X%%%X$X#H#XXXX#/-     -/:=/-                              
.      ---///#XX#@@@#X$$X%%%%%XXXXXXXXX$%+#%XX%%%%#/#%%%%%%XXXH@@@@#XXXXX$$$$$XXXXXXXXXX$%/;/##HHHH@@@H#X##X#@@@@@@@@@@#X$$%%+%XXXXX#XX#/.     -/://-.                              
.     -//-//://%X#@@@##X$XX%X$$XXXXXX$X%%+#X##X%%#/;#+%X%%%XX#H@@@@H#XXXX$$$$$$$XXXXXXXX$%##X#HHHHH@@HX#X#X#HH@@@@@@@@@HXX$X%X$$XXXXX$#////,,/////-,-.    .                         
.    .////:////+%XX#@@@#$X$X%X$XX$##XX%%%+%X##$%%#:///+%%%+%XX#HHH@@HXXXXXX$$$$$XXXXXXXXXX$X#HHHHH@@HH##XXX#HH@@@@@@@@@#XX$XXXXXXXXX$X####///////,,,-.   ...                        
     ,///////#+%%X$X#@@@#XXX$XXXXXXXX%++%%%X##$%#/:///++++++X$XHHHH@@#XXXXXX$X$XXXXXXXXXXXXHHHHHHH@HHHH#XX###HH@@@@@@@@HHXX$XXXXXX$X%%+#+++%#//---,,-    ---                        
     -/////##+%%%%%X$#@@@#XXXX%XXXXXX%#%%%%XXX$XM:///#+%%%+%%XX#HHH@@H#XXXXXXXXX$$XXXXXXXX#HHHHH@@@HHHHXXX##XX#H@@@@@@HH##XXXXXXX$$X%%+%%%%#//-------    ---.                       
    .-/--///+%%%%%%%XXX#@@@#X%X$XX%#+%%%%%%X$XXX/=////#+++#/#XX#HHHH@@H#XXXXXXXXXXXXXXXXX##HHHH@@@HHHH##XX##XXXXH@@@@@@HH#XXXXXXX$$X%%%%%%#//;/:///--    ----.                      
    .,-.-//#+++%%%%%%%X$#@@@#XXX%###+%%%%%%X$XX#//:///+++++#%XX#HH#H@@HH#XXXXXXXXXXXXXXXX#HHHH@@@@HHHHXXXX##XXXXH@@@@@@HH#XXXXXXX$X%%X$X%#/////:::=/,    -///-.                     
    --.-///#++++%%%%%%%%XX#@H#X%%++#/#%%%%%X$XX#/:/;//#%%%++%X$X#H#H@@@HH#XXXXXXXXXXXXX##HHHHH@@@H@@@#XX+#XXX$$X#@@@@@@HH##XXXXXXX%%%$$%+#####//::=/,    -/=/--                     
   --.-///#++++%+++%%%%%+XX#HH#X%%#////%%%X$$XXM://///+%%%+++%%X#HHHH@@@H##XXXXXXXXXXXXHHHHH@@@@@@#M###X##XXX$$$#@@@@@HHH##$XXXX%+%%XXX%+%%%%#//;:=/-   -/==/---....                
  .---/://++%%%%++#++%++++%X##H#XX#//;#%%%X$$XX##//##X$X$X%+%%%%XXXX#@@@HHH#XXXXXXXXXXXHHHH@@@@@H@#MMM###/%X$$$$#@@@@@HH#XXXXXX%%%%%%%%%%X$$%++//:=-.   -:::/-,,,--.                
 ...-////#+++++++++#///#+++%XX#H#XX#//#%%%%$XX#XX%%%XXXXXXXXX$X%XXXX#@@@@HHH#XXXXXXXXXXHHHH@@@@HH@#MM#M#M#%XX$$$X@@@@@HHH#XXX$%%%%%%%%+%XXXX%++#/:=-.  .;:/:/,,-///.                
 ..-////#++##++++++#////##+++%X##XX%+//+++%X$X##XXX$%%XXXXXXXXX%%XXXX#@@@@HHHHXXXXXXXXXHHH@@@@@H@#MMM#MM#XXXXXX$XH@@@@HHH#XXX$%%%%%%%+%XXXXX%+++//:/.  ./:/:-,-////-                
 .-/://#++#///////////////#+#+%XXXXX++#+++%%$$X##H#XXXXXXX#####X%XXXXX#@@@HHHHH#XXXXXX#HH@@@@@H@@MMM@MMM###XX$$$XH@@@@@HHXXX$XX%%%%%+%XXXX$X%%%+////.   -:::/-/////-                
--/:://####//////;//////;;//#+++%XX$%%+++++%XXXX#H#X$XX###MMMM#X%X$$XX#@@@@HHHHH#####HHH@@@@@@@@MMMM#MMMM@HX$$$$XH@@@@HHH#XX$X%%%%%%%XXXXX$XXX%+#///-   -:::--:////-                
/;/:;/####//;///;;;;///;;;;//#+++%%X%%++++%%%$$XHH#$X####M###M#X%X$$$XX#@@@@HHHHHHHHHHHH@@H@@H@#MMM#MMMMM@HX$$$$XH@@@@@HH#X$$$X%%%%%XX##X$$$$$%%+#//-   -/:/-//////.                
####//#/////////;/;/://;;;;;//####/#%%+##+%%%XXXH#$$##MMMMMM#M#X%%%X$$X#@@@@@HHHHHHHHH@HH@HHH@#MMMM@MMMMM#@#$$$XXH@@@@@HH#X$$$X%%%XXX#HXX$$XX$%%%+//-   -//--:////---..             
XXXX$$%##//////;;;;/:::://;;;///////#%+#/#%%%$XX#XXX@MMMMMMMMM#XX%%X$$X#@@@@@@@HHHH@@@HH@H@HH@@MMM#MMMMMMM@#X$XXX@@@@@@HH#X$XX%%%%X#HH#X$$XXX$$%%%#//-  .--,////:-----.             
XXX###XXXXX##//;;;/::::=:://;;///;;;/#++//%%%XXX##XX@MMMMMMMMM##$$X%XX$X@@@@@@@@@@@@@@@@H@HH@@@MM#@#M####M#@#XXX#@@@@@@@HXX$XXXX%XX#H#X$$XXXXX$%%%%#//-. .--:///////--.             
XXX#HHH###XXXX$##///::=::=:::::::/;;;/////#%%X$X##XX@MMMMMMMMMM#X$X%%%XXH@##@@@@@@@@@@@@HHHH@##MMMM@#@@###M##XX##@@@@@HHH#XX%%XXX$X##X$$$XXXXX$XX%%%#///-..////:::/-.               
#XX#HHHH#H#XXX$$$XX##//:=/////////;//://;;/%%%$X##XX@MMMMMMMMMM##X%%$$XX@#MM@@@@@@@@@@@@@@@@@@@##M##@@MM##MM#@#H@##@@@@HH#X%%%%%XX#XX$$$XXXXX$X$$X%%+#////////://.                  
#X#H@@HH##XXXX$$$$$$XXX##/###XXXX##//::=://#%XX$XH###MMMMMMMMMMM#XX$$X$X@@MM#@@@@@@@@@@@@@@@@@#MMM#@@#M#@#MMM@H@#M#@@HHHH#X%%%%X$X#X$$$$XXXXXXXXX$X%%##//::/:-..--:::---..          
X#@@@@@HHH#XX$$$$$$$$$$$%%%%XXXXXXXX#/:=/=/#%XX$X##@#MMMMMMM#MMM###$$%XXH@#MM#@@@@@@@@@@@@@@@#MMM#@@@@@@@#MMM###MM@@@HHH#X%%%%%X$XXX$$$XXXXXXXXXX$X%%%+///-.-//;//////:/-           
XH@@@HHH#XXX$$$$XXXXX$XXX%%%%%XXX###X##///#%X$XXX#H@MMMMMMMMMMMMM##XX%%X#@#MM#@@@@@@@@@@@@@@@#MM#@@@@@@@@#MMMMMMM#@@@HHH#X%%%%%%XXXX$$XXXXXXXXXXX$XX%#/--//;///#/#///;::/.          
X#HHHH#XXXXXXXXXXXXXXXXX$XXXX%%++%X#H#MX$$X$$$$XX#@@#MMMMMMMMMMMMMM##XXX#@#MMM#@#@@@@@@H@@@@@#MM@@@@@@@@@#MMMMMMM@@@@H#####/##%XXXXXXXXXXXXXXXXXX$##/--//:///////////;::/-.         
X####XXX$$XXXXXX#XXXXXX$$$$XX%%%++#X#@@@@####XX$X#H@#MMMMMMMMMMMMMMMM###@@#MMM#@@@@@@@HH@@@@@MMM@@@@@@@@@#M#####@@HH#X$$$%//;#%XXXXX$XXX$XXXXXXX##/--//=::/;;//////;///:/:/-.       
$XXXX$$$$$$XXX###XXXXXX$$$$%%%%+#//#X#@###@HH#XXXX#@@#M#MMMMMMMMMMMMMM###@@#MMM@@@@@@HHH@@@#@@@@@@@@@@@@@@@@@@@@@@HH#XX$$#/:;#%XXXX$$XXX$XXXXX##////::::://////////;/###///:/-      
%$XXXXX$$$XX#HH#XXXXXXX$X$$%%%#///;/%XX@#M#@@HX%%XXHH@#MMMMMMMMMMMMMM#MM##@MMMM@@@@@@HH@@@#MMM@@@@@@@@@@@@@@@@@@@@HHHXX$$#;/;#%XXX$$$$$$$$$XX%#%+/;;/::::/-  -////://++###//:/-     
%$XXXX$$$XX#HH#XXX$$$$$X%%%%%#//:::/#%XX#@M##@X%%$XH##@##@@@M#MMMMMM#@@@@@#MMMM@@@@@@HH@@@@@@@@@@@@HHHHH@@@@@@@@HHHH#XX$X#;;;/#XXX$$$$$$X$$$XX%%%#/////;;//-   -:////##+++///:-     
X$XXX$$XXX#XXXXX$$$$$X%%%%%%#//:;;;//##XXH@#M##XX$XHHH@@@@@@@@@##M##@@@@@@@#MM#@@@@@@H@@@@@@@@@HHHHHHHHH@@@@@@@@@HHH#XX$$%#///#XXX$$XXXXX$$$$XX%%+#//////////-    .-////////:/-.    
XXXX$XXXX##XXX$$XXXXX%%%++##///-.-/////+X#H@#M##$XX#HH@@@@@@@#X#@@@@@@@@@@@MMM@@@@@@@@@@@@@@@@HH#H#HHH#H@@@@@@@HHH@HHXX$$X%+##%XXX$$$XX$$$XX$$X%%%#//////#+#///:--.  --:;///--.     
XXX$$XXXXXXX$$X%%%%%%%%%#////--,//##XXXXXX#H@#M##XXHHHH@@@@@@@#X#@@@@@HH@@@#M#@@@@@@@@@@@@@@@@H##H#HHHHH@@@@@@@@HHHHHXXX$X%##+%XXX$$$$$$$$$$$$XX$%+/////#++%%%#/M#//--.  ....       
XX$$XXXXXXX$$X%%%%%%%%#//::///;#########@@@@@@MM@#X@@HHHH@@@@@@#XX@@@@HH@@@@#@@@@@@@@@@@@@@@@H#X#HX###X#H@@@@@@HHHHHHH#XXX%+%%X$XX$$$$$$$$$$X$$X%%#//////#+%%+##+%%##//-            
$$$$XXXXX$$$$X%%%%%%%#//=://##XX##@H##H@####@@#M#H#@@@@@H#@@@@@@XX#@@@HH@@@@@@@@@@@@@@@@@@@@@H#HHHH##HHH@@@@@@@HH@@HHHHXX$%%%%X$XXXX$$$$$$$$X$X%+#//////;//+++++%%%%%%#//.          
$$$$$$$$XXXX%%X%%%%##/////;;////;/:://;/$#@@@@#M#@H@@@@@@XX#@@@@#X#@@@@H@@@M##@@@@#M@@@@@@@@@HHHH##HHHHH@@@@@@@@@@@HHHH#X$$XX$$$XX%%$$$$$$$$$X%%%#/;/:::/;/##+++%%%%%%++//. ..---   
%$$$$$$XXXX%%%%#M#/:,.      .---=::://;#X#@@#@@#@@H@@@@@@#$X#@###@HH@@@H@@@@@@@@@@##@@@@@@@@@HHHHHHHH@@@@@@@@@@@@@@HHH@H#XX#XXXXX%%X$$$$$$$$$XX%%+//;////;//#+++%%%%%%+#//----///   
%X$$$$$XX%%###//-.        .-.--//:::::;#X@@M#@@@@H@@#@@@@@XXX@@MM#@#@@@H@@@@@@@##@M#@@@@@@@@@@HHHHHH@@@@@##@@@@@@@@HHH@@H#XXXXXX%%X$$$$$$XXXX$X%%+#//;;;;;/##+++%%%++#//:///:////   
X$$$$$$X%##//::/;--.    .---/-/=::=:::/#M#X%%###@@@#M#@@##@XXX@#M#@@HHHH@@@@@@@MMMM@@@@@@@@@@@HHHHH@@@@@@@@@@@@@@@@@H@####/;/#XX$$$X$$$X$$$XXX$%%%+#/;;;;;//#++++++##://://####//   
$$$$$X%%%++#;////////-..-,/=/==:=:::=:/X##%+%X@MMMMMM#@@##@@#X#@#MM#H#XXH@#@@@#MMM#@@@@@@@@@@@@HHHH@@@@@@##@@@@@@@@@#X#/;;;;;;#%XX##XXXXXXXXXX$X%%+#;;;;;;///######/==:/##%X%%%#-   
$$$XX%%%%+#/;;////////;--//:/=:::::////#XX##%X@#@#####@@#X@@@#X#@#MM#@##H@#@@@#MMM#@@@@@@@@@@@@H@HH@@@@@##@@@@@@####/;;;;;;;;;/%XH##@#XXXXXXXX$X%%#//;;;;;////////::://#%%%%++#/-   
$X%%%X$X%#////#%%#//;;/////=://////////;/M//%X#@X##//###XX@@@H#XH@MMM#@HH@@@@@#MMM@@@@@@@@@@@@@@HH@@@#@@#@@@@###//;/;;;;/:/::;//%X#@@H#XXXXXXX$%%%+#//;;;///////://;;#%X%%#/////,   
X%XXX$X%+####+%%%#//;///#M#/;///////#%##//;/XX#//;;/::///###@HH#H@#MMM@@HH@#@@#MMM@@@@@@@@@@@@@@@@@@#M#####@##/;;//::::/::://;;//#X#HHXXXXXXX$$X%%%#//;;;/////:/#+#//#%%%#///;;/.   
%XXXX$%%+##+%XX%+//://#+%%X%%##%%##/#%X%#/:#XX#;///;;////;;#X#@@H@@MMM#@@H@@@@#MM#@@@@@@@@@@@@@@@@@@#####X#//;;//:::::::::///;;;//#XXXXXXXXXXX$$X%%+#/;;;//////#+%+/////////:://    
XXXXXX%%%#/#M#####//=//####++XXXXX%+%XX#///#X#X/::::/;;;;;;;#X#@@@@#MMM#@@@@@#MMMM@@@@@@@@@@@@@@@@@@MM##X+//;;/:::::::::::::::/;;;/%XXXX###XXX$$$%%+#/;/////##+%%%#///---////----,. 
##XXX%%X%//:/:::///:=:;///#%XXXXXXX%##/////X##X/:::::://;;;;/%#@@@@@#MMM#@@@@#MMMM@@@@@@@@@@#M@@@@@@MM@X#///;/////::::::::::::/;;;/#%X#HHHH#XXX$X%%+///::/##%%%XXXX//-,---/////////-
HHXX%%X$X#////M#/;////;;#%XX#HHH##X#///////XH#%/::::::::;;;//%X@@@@@@MMMM@@H@#MMMM@@@@@@@@@@##@@@@@#M##%#/;;;;;/::::::::::::::/;;;;#%X#@@@HH#XX$%%##///M#XXXXXXXXXXX##/;/////;;/////
H#XXX$XXXX##XXXXXXX//;/#X##@@##X#+#+#//::/MXHX#/::::::::/;//#%X#@@@@@#MMM#@@@@MMMM@@@@@@@@@@###@@@@##@X%/////;;//:::::::::::::/;;;/#%XXXXX#XXX$X%%####%XXXXXXX#XXXXX#XX$$$$$X##//##/
#XXXXX#H@@#########/##X##@@@#XXX%%%#/:;//##H#X#/:::::::::;//#+X##M####MMMM@@@@MMMM@@@@@@@#MMMM#@@@@#M#X%##///;;/:::::::::::::::/;//#%X####HHHH###XXXXXXX#H#X#XXXXXXHHHHH######XX%#//
X$$XXHH@@@@HH######XXXX###XX$$X%##//////##HHXX/:===:::::/;//#+X##MMMM##MMM####MMMM#####MMMMMMMM##@@@@#X%##//;/::::::::::::::::/;;//#%$XXXXXXXX####XXXX#HHHH##XXXXX#@H@@@@H@@@HHXXX##
$$X#HHHH##M#X%%X$XXX#M########M//M##///##HH#X#;::==:::::/;//++X##############@#@@@@##############@##X#//;;;;/:::/:====::===::::/;;;/%XXXXXXX$X$XX$###XX$###$$XXXXXHH@@H@@@@@@H##XXXX
$X#H###XXX%#+%####//--/=///:;##++++#/###HH#X#//:::=:::::/;//#%XXXXXXXXXXXXXXXX###HH@@@@@@@@@@@@####//::::::::::::=:::=::==:::///;;;/#%XXXXXXXXX%+#////;//////#+%XXXXXXX#####HHHHHXXX
XXXXXXX%%#///;;::::=-,--/://#%%%+++##X#HHH#X#/:::::::::/;;/#+%XX#XXXXXXXXXXXXXXXXXX##HH@@@@@##X##/:://----//=:::::==:::::::::/;;;;;;#%X%%+++#///////::///////#+%+%%%%XX$XXX##HHHH#X$
XXXX%%++++###/;:=/---,--:////#+++#//#X@HH#XX/:=::::::::/;;//+%X###XXXXXX$XXXXXXXXXXX####H##XX##///-----...---/::::::/:::::::::/;;;;;/+XXX%%#/;;/=/----///:////##%%%%%XXXX$$$XX##X$%%
XXX%++++%+#///:::/--/---/:/;/##+###//XHHH#X#/:==:::::://;;//+%XX#XXX$XX$$$XXXXXXXXXXXXXXXX%#///-,,-,,--.  ..-/::::/;;/::::::::/;;;;;/+%%$$%+/;//-,-..-,---//=::///##%XX$$$$$XXX##//#
X%%+++%%##///:/:::/-,-,,-/::///###/-/#H#XXX#:====::::/;/;;//+%XXXX$X$$$$$$$$$$$$$$$$XXXXX##//-,,,,,,....   .,/:::/;;;/::::::::/;;;;;/+%%%%%%////--...,---====:://;;;//####$$$X%##///
%%%%##/###+#/;::=//----,-/:::;/##/- /###XXX/:////=:::;;/:;//+%XXXX$$$$$$$$$$$$$$$$$$$X%##/:---,-,,-.....   .-/::/;;;;;/:::::::://;;///#+%%%%#//=--...-,--/===://;;;;;;//::://;/#M#//
%%+###%###/;///::=/---..-,/::/###/  -#XXXX#:=----/=:://;;;//+%%$XX$$$$$$$$$$$$$$$$$X%%#/://-------..   .....,/:://;//;;/::::::::/;;;/#%X%%%%#///--...-,--/===:::;;/;;/::/==/--/=///:
%++%%++#///;:::==/-,,-...,-::///-   ,#XX$#/=/----//=:::/;;//+%%$XX$$$$$$$$$$$$$X$X%%#///---...........  ...--/:::/:::/;;;//::://;;;//#%%%%%%#//:------,-//////:://;;//:://---/://///
%%%%++#//////::==/-,.....--///-     -/X$X#:/-------/=::/;;;/#%XXXX$X$$$X$$$$$$X%%%#//:=/-,...............----=::::::::;;/::::/;;;;///%XXX%%#///=-,,,,--/===////::::=::///::::=:/;;//
%%+++++##////:://------,--,-.       .;X$%/:==/------=::::;;;##XXXX$$$$X$X$$XXX%%##/://--,-. .........--.-,--===:::=::/;;;;////;;;///#%XXXXX##/;/:///////::===:/;;;///////::::/=:::::
%%++++#///;/:====//----.            .;XX#/:==//---//=::::::/;/#XXX$$$$$$$$X%%%##;:/------.......-.-.-,,--,--==:====::/;;;;/////////#+%XX#//://////--;;///::::;;;;;;;;;;;///://-/////
%%+++#//;;;;//;--..                 .;X%/:======--///===::::/;//#XX$XX$XX%%%##/////---.....-....--,-.,-,,--/=:::==::/;;;;/////////#++%XX/:=/-----,,,,,,,,---///;;//;/;//;;;//://////
%+++///;////--..                    .;%#/:==/==//-----/===:::///;/##%XX%%%##//:=/---,......------,--,,----/=====::///////#++++##++%%%X$%/:==-------,,,,,,,,---,-----://///////:==:::
+++/////--,--...                    -;%#/:=/-//==///---/=====::::///#+%%##;//://--,,,-....-,,,,-.-,-,,,-/===::::/;//###++%%%%%%++%%XXXX%/:==----,----,,,,---,,-...     .--/::;//::::
+#/;//-,,,,,,-... .                 ,;+/:=/--/=//==/////=/====:::://#++/////:/--,,,,,,,,,-,,,,,,--,-----/:::::////#+%%%%%%%X%%%%%%XXXXX%/:===/-----,-------,,,,...              .-:/
///--,,,,,,,-.......                -/#/==----/===///===/===/==://#+##/;/::=/--,,,,,,,,,,,,,,--,,-,,----=://///###+%%XXXX$$$%%%%XXXX#H#%/:===--------------,,,,,-..                 
/------,,,,,,-......                -/#/:=--//==/==/==/--//=/:://##///::://--,,,,,,,,,,,,,,--,,,,-,,---/=///##+++%XX$XX$$$$$XXXXX##H@@#X/:===----------------,,,-...                
---------,,,,--.....                /##/:===//---/===/-/=/==://////:=///=/--,,,,,,,,,,--,,,,,,,,-,,,-==:://+++%%%X$XXXXXXXXXXXXX#H@@#M#$/::==/---------------,,,-...                
---------,,,,,,,....                /##/:::==/---==//--/=:///;;/::::==/------,,--,,,,-,------,,,----/::///#%+%%X$$XXXXXXXXX###@@@##MMM#%//:===-----------------,,,-....             
--------,,,,,,,,-....              ./##/::::=//--/==//:://;;;/://---///----,--,-,,,,,,,,,----,------/:/;/#++%%X$XXXX##HHHH@@M##MMMMMMM#%//:====/---------------,,,,....             
----------,,,,,,,....              ./X%////:::=/-/==://;;//::=/-----------,,,,,,,,,,--,,,,------//-==:;//++%%%$$XX#@@@@@##MMMMMMMMMMM##%//::=====/--------------,,,.......          
=/--------,,,,,,,-.....            -/X%#;;;/::::/:;/;;;/::=/-//--------,,--,,,,,,,,,,,,--,------==/=:////++%%XXX#@#MMMMMMMMMMMMMMMM##@#%//::=====/---------------,,---......        
==/---------,,,,,,-.....           -/XX#/;;/:/;;//////::=//-------,,,-,,,.-,---,,,,,,,----------=::::/;//#%%X$X#@#MMMMMMMMMMMMMMMMM##@#%/;::=====----------------,,,,-......        
==/--//------,,,,,,.--...          -#XX#////////////:==/--------,,,,,-.-,--,,..-,,,-,,----/=/--====:::/;/#%%$X#@MMMMMMMMMMMMMMMM###@@#X%/;::====//----------------,,,-........      
====/----------,,,-.......        ./##X%+##+##//::=//-----------,,,,,,-,,,,,,,,,,,,-------/==//====//::;#%%XX##MMMMMMMMMMMMMMMMM##@##XX%/;/::======-------///-----,,,-.........     
=====/----------,,,-......        ./##XX%+##//:=///---,--,,,,,,,,,,,,,,,,,---,,,--------///====//----///#%XX#@#MMMMMMMMMMMM#M#@@#@#XX$X%/;/::======///=======------,,--.--,,-...    
=====/-----------,,-.......       -/##XX##/::=/-------,,,,,,,,,,,,,,,,,,,------,------/======/----,,-=//%XX##MMMMMMMMMMMMMM#@@@@@#XXX$X%/;/::================------,,,,-.-,,-...    
=====/-----------,,,,,-....  ..---//%X#//:===/--,--,,,,,,,,,,,,,,,,,,-,,,,---------/=========/------///#%X#@MMMMMMMMMMMMM###@@@@#X$$X$X%#;/::::=============------,,,,,-.-,,,...    
======/-/=/-------,,,,,-....----//:///:====//---,--,,,,,-,,,-,,,,,,,,,,,,,---------===::::::=/------:/#%X#@#MMMMMMMMMMMM#@###@HXX$$$$$$%#;/:::::===========/--------,,-..-,,....... 
::======//----///---,,,,,---//===::=====//------,,,,,,,,,,,,,,,,,,,,,,,,,-----//--/===:::::==/-----//#%X#@@###MMMMMMMMMM#@@@@HXXX$$$$$$%#/;:::::============---------,,,-,,,........
::=====////--/===/----////::============/------,,,,,,,,,,,,,,,,,,,,,,,,,,----/=======::::::/-----/://%XXH@@@@@##MMMMMMMM###@H#X$$$$$$$$%#/;//:::::::============//---,,,,,,,,-......
:==================/=::::::::=========//=-----,,,,,,,,,,,,,,,,,,,,,,,,,,,----/======::::::=/----/=//%XXH##MM##HH@@#####@#@@@#XXX$$$$$$$%#/;;::::::::==============/--,,,,,,,,,-.....
:::=:=====::=====::://::::===//==//==//=/-----,,,,,,,,,,,,,,,,,,,,-----------======:::::====/-//=:/#X###X%###XXX#H@@@@@@@@@H#XXX$$$$$$$%+/;;:::::::===============/--,,,,,,,,,,-....
::::::::::::::::////;::::===========/--/-----,,,,,,,,,,,,,-,,,,,,---------//===:::::::::==/=//=://#XXH#X%#////###$X##@@@@@#XXXXXX$$XX$$X+/;;/:::::::::::========/-----,,,,,,,,,,----
:::::::::::::::://///:=::===========/--------,,,,--,,,------,,------//-//=====:::::::::======:///#X###X##/////////###XX##HXXXX$$$$XXX$$X+/;;;;/:::::::::::::====/---,,,,,,,,,--,,,,,
:::::::::::=:==:/;/::================---------,---------------------/=======/=::::::::=::==::///#XX#XX#///:/;;;;///;//##XXXXXXXX$$$$X$$X+//;;//;;/::::::::::======---,,,,,,-----,,,,
::::::::::::==:::::::===//=========//---------------//-/-/=/////-//====::::==::://::::=::::///#%X##X#//::::://;;;;;;;;;;/##%XXX$$$XX$$$X+//;;;;;;;;;/////::::====/--,,,,,,-------,,-
::=:::::::::::::::::====//=========--///------------==/=/-===========::::::::::/;/::::::::/;##%X#H#X//::::::::::/;;;/;;;/////###$XX$$$$X%#/////;;;;;;;;;;;:::===/--,,,--,-----------
::=:::::::::::::::::============/==---===/-------============::::::=:::::::::/:;;;:::://;;/#%%X#H#X#/:::::::::::::/;;;;;;;;;;;;;//M##%XX%%++##///////;;;;:::===/--,,,,--------------
:===::::::::::::::::======///====/=/=========/-/============:::::::::///::/;;;;;;;:::/;///#%XX#H#X#/:::::::::===::::/:////////::::///;/#MMMM###+++##///;/:::===/-----------------//=
::==:::::::::::::::=======/=/====================::==:==::::::/:::::/;;;;;;;;;;;;///;///#+%XX#H#X#/:=============::::::::::=//----,,-----///://;/##++#/;/:::===---------,,------/===
:::::::::::://:::==========/-/==================:::::::::::://;;::::;;;;;;;;;;;;;;;;//#+%%XX#H#X#/====///=///=====:::::::==/---,,,,,---,,---/----///###/;/::==/--------------///====
:::::::::::://::============//=======:====:::::::::::::::::;;;;;;;;;;///;;;/;;;;;///#+%%X$X#H#X#/:=====//--//=======:::===/-----,,,---------/--,,,,-////;/::=/---------------/=====:
::=::::::::::::==================::==::::=:::::::::::////;;;;;;;;;;;;//;/;///;;///##+%X$XX#HH##/:======/---/============------------,,,----------,,,--/:::::=/---------------====:=:
::::::::=:::::========:==========:::::::::::::::::::;;;;;;;;;//////;;///////////#++%%XXX#H@H#X//:========/--====:=======////----------------------,,----//==/----------------====:::
:::::::==::::====================:::::::::::;/::::/;;;;;;;;;///////////////////#+%%X$XX#HHH#X#;::=========/-///========:====/-----------////--------------//-----------------===:::/
::::::===:::==================:=:::::::;/::/;;//:/;;;;/////;/////////////////#++%%X$X#H@@H#X%//:::::====//=---/==============///--////=====/-----------------//-////---------===:::/
::::::===::=========:::=::::==:::::///;;;;;;;;;;;;;;////////////++#/////#+++++%%X$XX#H@@@H#X#/;/::::::==/===/-==============================/----------------/======/--------====::/
::::::::::======:==::::=:::::=::::/;;;;;;;;;;;;;;;;//////////##++++#//##+++%%%XXXX##@@@@HHXX+#/;/:::::=======/========//=====================///--///-------========/-------/====::/
:::::=::::====::==:::::=::::::::::;;;;;;;;;;;;;;;;;//////#//#++++++/##++++%%XX$XX#H@@@@@H#X%++#/;/::::::=============/--/===============:========/===/==////=========////--//====:/#
::::==:::=====:::=:::::==::::::///;;;;;;;;;;;;;;///////##++++++++++#+++%%%XX$XX#HH@@@@@@H#X%++#//;:/:::::::::========================:::::::::==================:===========/====:/#
::::::::::::=::::=:::::==::::://;;;;;;;;;;;;;;//////##+++++++%%++++++%%%%X$$XXHH@@@@@@@@HHXX%%%#/;;;;;/::::::::::::::::::::::::===::::::::::::::=====::=::::::::::===============:/#
:::::::::::::::=====::::::::/;;;;;;///;;;;;;///////#++++++++%%%%+%%%%%%X$XXX##@@@@@@@@@@HHX$X%%%+#/;;;;;;;;/////;//:::::::::::::::::::::::::::::::::::::::::::::::::=::=========::/+
::::::::::::::======:::::::::;;;;;;////;;;/////////+++++++++%%%%%%%%%X$$XX#HH@@@@@@@@@@@HH#X$X%%%+#/////;;;;;;;;;;;///::::::::::::::::::::://:::::::::::////::::::::::::======:=::/%
::::::::::::=========:::::::/;;;;;;;///;;;//////#+++++++%%+%%%%%%%X$$$XXX#HH@#MM#@@@@@@HHHHXXX$$X%%+#///////;;;;;;;;;;//::/;:::/::::::::::/;;/;//:::://;;;;;;;;;/::::::::=====:::/#%
::::::::::::===========::::::;;;;//////;//////#+++++++%%%%%%%%%%XX$$XXX#HH@@#MMMM#@@@@@HHHHH#XX$$X%%+#///////;///;;;;;;;;;;;;;;;//:::::::/;;;;;;;/;//;/;;;;;;;;;;;/::::::::====::/#X
::::::::===============::::::/;;;///;////////#+++++++%%%%%%XX$$$$$XXXX#HH@#MMMMMMM#@@@@@HHHHH#XXX$X%%+++###///////;;;;;;;;;;;;;;;;/:::///;;;;;;;;;;;;;;;;;;;;;;;;;;////::::===:://%X
::::::::===============::::::/;;;;;;;;;//////#++++++%%%%%%X$$$$$$XXXX#HH@#MMMMMMMMMM#@@@@HH#####XXX$X%%++++#////////////;/////;;;;;;//;;;;;;;;;;;;;;;;;;;///;;;;;;;;;;;;/:::==::;#%X
::::::=================::::::;;;;;;;/;;/////+++%%%%%%%XX$$$$$XXXXXXX#H@@#MMMMMMMMMMMM#@@@HH#XXXH#XXX$X%%%%++##//#//////////////;;;;;;;;;;;;;;;;;;;////;;;/////;;;;;;;;;;;:::==:/;#XX
:::::===================:::::/;;;;;///////#++%%%%%%%%X$$$$$$XXXXXX#HH@#MMMMMMMMMMMMMMM#@@@HH#XX##XXXXX$X%%%%++##+++#////////////;;;;;;;///;;;;;///////;;/////////;;;;;;;;/::::://#XX
:::::=================:::::::;;;;;;;/////#+++%%%%%%X$$$$$XXXXXXXX#HH@#MMMMMMMMMMMMMMMMM##@HHH#XX#XXXXXX$$X%%%++++++++#/####////////;;/////////////////////////////////;;;;/:::://%XX
::::=================::::://;;;;;;;;////#+%%%%%X$$$$$$XXXXXXXXX#HH@@#MMMMMMMMMMMMMMMMMMMM#@@HHH#XXXXXXXX$$X%%%%++++++++++++###///////////////////////////////////////////;;:::/;#%XX
::::=========/======::::::/;;;;;;;;///#++%%%%%X$$$$XXXXXXXXXX##HH@@#MMMMMMMMMMMMMMMMMMMMMM#@@HHH#XXXXXXXX$$$XX%%%%%%++++++++#++##////////////////////////////////////////;;/:://#XX#
::::::======/-=====::::/;;;;;;;;;;///#+%%X$$X$$$$$XXXXXXXXXX#HHH@#MMMMMMMMMMMMMMMMMMMMMMMMM#@@HHHH#XXXXXXXX$$$X%%%%%%+++%%%++#+++##///##///////;/////////////////////////;;/:/;/%X##
/::::::====///====:::/;;;;;;;;;////#+%%%X$$$XXXXXXXXXXXXXX#HHH@@#MMMMMMMMMMMMMMMMMMMMMMMMMMM##@@HHH#XXXXXXXXX$$$XX%%%%%%%%%++++++++#///////////;/////////;///////////////;;;/;;#XX##
;/:::::========:::::/;;;;;;;;///###%%XXX$$$XXXXXXXXX##XXX#HHH@#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#@@HHH#XXXXXXXXXX$$$XX%%%%%%%%++++%+++####///////////////;;;;;;;;;///////;;;;;;;/#XXH#
/;/:::::::===:::::/;;;;;;;////#+%%%%$$$XXXXXXXXXXXXXHHHH#HH@@#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#@@@HH#XXXXXXXXXXX$$$X%%%%%%%%%+%%%+++++++#////////////;;;;;;;;;;;;;;;;;//::/;;/%X#H#


Фото после преобразования программой ASCII Pic

Применение

Помимо «чистого искусства» (рисунка ради рисунка), аски-арт часто используется в оформительских целях у варез-групп, у демомейкеров. Варезные группы обычно включают файлы .nfo в своё программное обеспечение, креки или другие нелегальные релизы. Такой ASCII art обычно включает имя варез-группы и, возможно, несколько ASCII картинок. Примером такой группы является Echelon.

Аски-арт часто используется для оформления 1-2-3-строчной подписи в электронных письмах. @}->--- изображает розочку, *,…,* изображает оскал. Во времена BBS аски-арт использовался для графического оформления оных, так как применять другие виды графики возможности не было.






               .=.,
              ;c =\
            __|  _/
          .'-'-._/-'-._
         /..   ____    \
        /' _  [<_->] )  \
       (  / \--\_>/-/'._ )
        \-;_/\__;__/ _/ _/
         '._}|==o==\{_\/
          /  /-._.--\  \_
         // /   /|   \ \ \
        / | |   | \;  |  \ \
       / /  | :/   \: \   \_\
      /  |  /.'|   /: |    \ \
      |  |  |--| . |--|     \_\
      / _/   \ | : | /___--._) \
     |_(---'-| >-'-| |       '-'
            /_/     \_\







                                         ,-="""=.
                                       .'        `.
                                      (            `.
                                       `.            `..
                                        ,'             .'
                                        `.            '.
                                          `-.           `-.
                                             )             `=-.
                                           .'              `=-.
                                         .`               .`-.
                           _            (                \ `-.
                        ,'   `.          `.        /`.    \
                       /        `.         \      |   `.   `.
                     ,'            `.       )    /      \    \
                    /     .'`.        `.    )    |       `.   \
                  ,'    .'    `.         `./     \         `.  \
                ,'    .'        `.                \          \  \
              ,'    .'            `.               \          `. \
            ,'   .'                 `.              )          ) (__.
          ,'   (                      `.            )          `."""'
      _.-'    __)                       `.         .     
     `""'""                               `"""""""

Интернет ресурсы

 
ДонНТУ  >  Портал магистров ДонНТУ  >  Главная  |  Реферат  |  Библиотека  |  Ссылки  |  Отчет о поиске  |  Индивидуальное задание
RUS  |  UKR  |  ENG