<s> """<STR_LIT>""" <EOL> import logging <EOL> CUBE_STEPS = [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> BASIC16 = ( ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ) , ( <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:0> ) , ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:0> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:0> ) , <EOL> ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT> ) , ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT:255> , <NUM_LIT:0> , <NUM_LIT:0> ) , ( <NUM_LIT:0> , <NUM_LIT:255> , <NUM_LIT:0> ) , ( <NUM_LIT:255> , <NUM_LIT:255> , <NUM_LIT:0> ) , <EOL> ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:255> ) , ( <NUM_LIT:255> , <NUM_LIT:0> , <NUM_LIT:255> ) , ( <NUM_LIT:0> , <NUM_LIT:255> , <NUM_LIT:255> ) , ( <NUM_LIT:255> , <NUM_LIT:255> , <NUM_LIT:255> ) ) <EOL> def xterm_to_rgb ( xcolor ) : <EOL> """<STR_LIT>""" <EOL> assert <NUM_LIT:0> <= xcolor <= <NUM_LIT:255> <EOL> if xcolor < <NUM_LIT:16> : <EOL> return BASIC16 [ xcolor ] <EOL> elif <NUM_LIT:16> <= xcolor <= <NUM_LIT> : <EOL> xcolor -= <NUM_LIT:16> <EOL> return ( CUBE_STEPS [ ( xcolor / <NUM_LIT> ) % <NUM_LIT:6> ] , <EOL> CUBE_STEPS [ ( xcolor / <NUM_LIT:6> ) % <NUM_LIT:6> ] , <EOL> CUBE_STEPS [ xcolor % <NUM_LIT:6> ] ) <EOL> elif <NUM_LIT> <= xcolor <= <NUM_LIT:255> : <EOL> c = <NUM_LIT:8> + ( xcolor - <NUM_LIT> ) * <NUM_LIT> <EOL> return ( c , c , c ) <EOL> COLOR_TABLE = [ xterm_to_rgb ( i ) for i in xrange ( <NUM_LIT> ) ] <EOL> def rgb_to_xterm ( r , g , b ) : <EOL> """<STR_LIT>""" <EOL> if r < <NUM_LIT:5> and g < <NUM_LIT:5> and b < <NUM_LIT:5> : <EOL> return <NUM_LIT:16> <EOL> best_match = <NUM_LIT:0> <EOL> smallest_distance = <NUM_LIT> <EOL> for c in xrange ( <NUM_LIT:16> , <NUM_LIT> ) : <EOL> d = ( COLOR_TABLE [ c ] [ <NUM_LIT:0> ] - r ) ** <NUM_LIT:2> + ( COLOR_TABLE [ c ] [ <NUM_LIT:1> ] - g ) ** <NUM_LIT:2> + ( COLOR_TABLE [ c ] [ <NUM_LIT:2> ] - b ) ** <NUM_LIT:2> <EOL> if d < smallest_distance : <EOL> smallest_distance = d <EOL> best_match = c <EOL> return best_match <EOL> def compile_speedup ( ) : <EOL> """<STR_LIT>""" <EOL> import os <EOL> import ctypes <EOL> from os . path import join , dirname , getmtime , exists , expanduser <EOL> library = expanduser ( '<STR_LIT>' ) <EOL> sauce = join ( dirname ( __file__ ) , '<STR_LIT>' ) <EOL> if not exists ( library ) or getmtime ( sauce ) > getmtime ( library ) : <EOL> build = "<STR_LIT>" % ( library , sauce ) <EOL> assert os . system ( build + "<STR_LIT>" ) == <NUM_LIT:0> <EOL> xterm256_c = ctypes . cdll . LoadLibrary ( library ) <EOL> xterm256_c . init ( ) <EOL> def xterm_to_rgb ( xcolor ) : <EOL> res = xterm256_c . xterm_to_rgb_i ( xcolor ) <EOL> return ( ( res >> <NUM_LIT:16> ) & <NUM_LIT> , ( res >> <NUM_LIT:8> ) & <NUM_LIT> , res & <NUM_LIT> ) <EOL> return ( xterm256_c . rgb_to_xterm , xterm_to_rgb ) <EOL> try : <EOL> ( rgb_to_xterm , xterm_to_rgb ) = compile_speedup ( ) <EOL> except : <EOL> logging . debug ( "<STR_LIT>" ) </s>
