From 509d03a3dc9a5d5578a7b68627e79fc4c858d32b Mon Sep 17 00:00:00 2001 From: Griatch Date: Sat, 16 Apr 2016 14:00:02 +0200 Subject: [PATCH] Added webclient-support for xterm256 colors, as mentioned in #613. --- evennia/utils/text2html.py | 78 +-- .../static/webclient/css/webclient.css | 595 +++++++++++++++++- 2 files changed, 604 insertions(+), 69 deletions(-) diff --git a/evennia/utils/text2html.py b/evennia/utils/text2html.py index f8fc64c202..1d70c01491 100644 --- a/evennia/utils/text2html.py +++ b/evennia/utils/text2html.py @@ -15,6 +15,10 @@ import re import cgi from .ansi import * +# All xterm256 RGB equivalents + +XTERM256_FG = "\033[38;5;%sm" +XTERM256_BG = "\033[48;5;%sm" class TextToHTMLparser(object): """ @@ -28,41 +32,42 @@ class TextToHTMLparser(object): normal = ANSI_NORMAL underline = ANSI_UNDERLINE colorcodes = [ - ('red', hilite + ANSI_RED), - ('maroon', unhilite + ANSI_RED), - ('lime', hilite + ANSI_GREEN), - ('green', unhilite + ANSI_GREEN), - ('yellow', hilite + ANSI_YELLOW), - ('olive', unhilite + ANSI_YELLOW), - ('blue', hilite + ANSI_BLUE), - ('navy', unhilite + ANSI_BLUE), - ('magenta', hilite + ANSI_MAGENTA), - ('purple', unhilite + ANSI_MAGENTA), - ('cyan', hilite + ANSI_CYAN), - ('teal', unhilite + ANSI_CYAN), - ('white', hilite + ANSI_WHITE), # pure white - ('gray', unhilite + ANSI_WHITE), # light grey - ('dimgray', hilite + ANSI_BLACK), # dark grey - ('black', unhilite + ANSI_BLACK), # pure black - ] + ('color-000', unhilite + ANSI_BLACK), # pure black + ('color-001', unhilite + ANSI_RED), + ('color-002', unhilite + ANSI_GREEN), + ('color-003', unhilite + ANSI_YELLOW), + ('color-004', unhilite + ANSI_BLUE), + ('color-005', unhilite + ANSI_MAGENTA), + ('color-006', unhilite + ANSI_CYAN), + ('color-007', unhilite + ANSI_WHITE), # light grey + ('color-008', hilite + ANSI_BLACK), # dark grey + ('color-009', hilite + ANSI_RED), + ('color-010', hilite + ANSI_GREEN), + ('color-011', hilite + ANSI_YELLOW), + ('color-012', hilite + ANSI_BLUE), + ('color-013', hilite + ANSI_MAGENTA), + ('color-014', hilite + ANSI_CYAN), + ('color-015', hilite + ANSI_WHITE) # pure white + ] + [("color-%03i" % (i+16), XTERM256_FG % ("%03i" % (i+16))) for i in xrange(240)] + colorback = [ - ('bgred', hilite + ANSI_BACK_RED), - ('bgmaroon', ANSI_BACK_RED), - ('bglime', hilite + ANSI_BACK_GREEN), - ('bggreen', ANSI_BACK_GREEN), - ('bgyellow', hilite + ANSI_BACK_YELLOW), - ('bgolive', ANSI_BACK_YELLOW), - ('bgblue', hilite + ANSI_BACK_BLUE), - ('bgnavy', ANSI_BACK_BLUE), - ('bgmagenta', hilite + ANSI_BACK_MAGENTA), - ('bgpurple', ANSI_BACK_MAGENTA), - ('bgcyan', hilite + ANSI_BACK_CYAN), - ('bgteal', ANSI_BACK_CYAN), - ('bgwhite', hilite + ANSI_BACK_WHITE), - ('bggray', ANSI_BACK_WHITE), - ('bgdimgray', hilite + ANSI_BACK_BLACK), - ('bgblack', ANSI_BACK_BLACK), - ] + ('bgcolor-000', unhilite + ANSI_BLACK), # pure black + ('bgcolor-001', unhilite + ANSI_RED), + ('bgcolor-002', unhilite + ANSI_GREEN), + ('bgcolor-003', unhilite + ANSI_YELLOW), + ('bgcolor-004', unhilite + ANSI_BLUE), + ('bgcolor-005', unhilite + ANSI_MAGENTA), + ('bgcolor-006', unhilite + ANSI_CYAN), + ('bgcolor-007', unhilite + ANSI_WHITE), # light grey + ('bgcolor-008', hilite + ANSI_BLACK), # dark grey + ('bgcolor-009', hilite + ANSI_RED), + ('bgcolor-010', hilite + ANSI_GREEN), + ('bgcolor-011', hilite + ANSI_YELLOW), + ('bgcolor-012', hilite + ANSI_BLUE), + ('bgcolor-013', hilite + ANSI_MAGENTA), + ('bgcolor-014', hilite + ANSI_CYAN), + ('bgcolor-015', hilite + ANSI_WHITE), # pure white + ] + [("bgcolor-%03i" % (i+16), XTERM256_BG % ("%03i" % (i+16))) for i in range(240)] # make sure to escape [ colorcodes = [(c, code.replace("[", r"\[")) for c, code in colorcodes] @@ -99,7 +104,8 @@ class TextToHTMLparser(object): text = regex.sub(r'''\1''' % colorname, text) for bgname, regex in self.re_bgs: text = regex.sub(r'''\1''' % bgname, text) - return self.re_normal.sub("", text) + text = self.re_normal.sub("", text) + return text def re_bold(self, text): """ @@ -238,7 +244,7 @@ class TextToHTMLparser(object): text (str): Parsed text. """ # parse everything to ansi first - text = parse_ansi(text, strip_ansi=strip_ansi, xterm256=False, mxp=True) + text = parse_ansi(text, strip_ansi=strip_ansi, xterm256=True, mxp=True) # convert all ansi to html result = re.sub(self.re_string, self.do_sub, text) result = self.re_color(result) diff --git a/evennia/web/webclient/static/webclient/css/webclient.css b/evennia/web/webclient/static/webclient/css/webclient.css index 530065993e..9ed3e14824 100644 --- a/evennia/web/webclient/static/webclient/css/webclient.css +++ b/evennia/web/webclient/static/webclient/css/webclient.css @@ -50,41 +50,570 @@ div {margin:0px;} /* Prompt base (white) */ .prompt {color: #fff } -/* Style specific classes corresponding to formatted, narative text. */ -.red { color: red; } -.maroon { color: maroon; } -.lime { color: lime; } -.green { color: green; } -.yellow { color: yellow; } -.olive { color: olive; } -.blue { color: blue; } -.navy { color: navy; } -.magenta { color: #FF00FF; } -.purple { color: purple; } -.cyan { color: #00FFFF; } -.teal { color: teal; } -.white { color: white; } -.gray { color: gray; } -.dimgray {color: #696969;} -.black {color: black;} .underline { text-decoration: underline; } -.bgred { background-color: red;} -.bgmaroon { background-color: maroon;} -.bglime { background-color: lime;} -.bggreen { background-color: green;} -.bgyellow { background-color: yellow;} -.bgolive { background-color: olive;} -.bgblue { background-color: blue;} -.bgnavy { background-color: navy;} -.bgmagenta { background-color: #FF00FF;} -.bgpurple { background-color: purple;} -.bgcyan { background-color: #00FFFF;} -.bgteal { background-color: teal;} -.bgwhite { background-color: white;} -.bggray { background-color: gray;} -.bgdimgray { background-color: #696969;} -.bgblack { background-color: black;} +/* Style specific classes corresponding to formatted, narative text. */ + +/* XTERM256 colors */ + +.color-000 { color: #000000; } +.color-001 { color: #800000; } +.color-002 { color: #008000; } +.color-003 { color: #808000; } +.color-004 { color: #000080; } +.color-005 { color: #800080; } +.color-006 { color: #008080; } +.color-007 { color: #c0c0c0; } +.color-008 { color: #808080; } +.color-009 { color: #ff0000; } +.color-010 { color: #00ff00; } +.color-011 { color: #ffff00; } +.color-012 { color: #0000ff; } +.color-013 { color: #ff00ff; } +.color-014 { color: #00ffff; } +.color-015 { color: #ffffff; } +.color-016 { color: #000000; } +.color-017 { color: #00005f; } +.color-018 { color: #000087; } +.color-019 { color: #0000af; } +.color-020 { color: #0000df; } +.color-021 { color: #0000ff; } +.color-022 { color: #005f00; } +.color-023 { color: #005f5f; } +.color-024 { color: #005f87; } +.color-025 { color: #005faf; } +.color-026 { color: #005fdf; } +.color-027 { color: #005fff; } +.color-028 { color: #008700; } +.color-029 { color: #00875f; } +.color-030 { color: #008787; } +.color-031 { color: #0087af; } +.color-032 { color: #0087df; } +.color-033 { color: #0087ff; } +.color-034 { color: #00af00; } +.color-035 { color: #00af5f; } +.color-036 { color: #00af87; } +.color-037 { color: #00afaf; } +.color-038 { color: #00afdf; } +.color-039 { color: #00afff; } +.color-040 { color: #00df00; } +.color-041 { color: #00df5f; } +.color-042 { color: #00df87; } +.color-043 { color: #00dfaf; } +.color-044 { color: #00dfdf; } +.color-045 { color: #00dfff; } +.color-046 { color: #00ff00; } +.color-047 { color: #00ff5f; } +.color-048 { color: #00ff87; } +.color-049 { color: #00ffaf; } +.color-050 { color: #00ffdf; } +.color-051 { color: #00ffff; } +.color-052 { color: #5f0000; } +.color-053 { color: #5f005f; } +.color-054 { color: #5f0087; } +.color-055 { color: #5f00af; } +.color-056 { color: #5f00df; } +.color-057 { color: #5f00ff; } +.color-058 { color: #5f5f00; } +.color-059 { color: #5f5f5f; } +.color-060 { color: #5f5f87; } +.color-061 { color: #5f5faf; } +.color-062 { color: #5f5fdf; } +.color-063 { color: #5f5fff; } +.color-064 { color: #5f8700; } +.color-065 { color: #5f875f; } +.color-066 { color: #5f8787; } +.color-067 { color: #5f87af; } +.color-068 { color: #5f87df; } +.color-069 { color: #5f87ff; } +.color-070 { color: #5faf00; } +.color-071 { color: #5faf5f; } +.color-072 { color: #5faf87; } +.color-073 { color: #5fafaf; } +.color-074 { color: #5fafdf; } +.color-075 { color: #5fafff; } +.color-076 { color: #5fdf00; } +.color-077 { color: #5fdf5f; } +.color-078 { color: #5fdf87; } +.color-079 { color: #5fdfaf; } +.color-080 { color: #5fdfdf; } +.color-081 { color: #5fdfff; } +.color-082 { color: #5fff00; } +.color-083 { color: #5fff5f; } +.color-084 { color: #5fff87; } +.color-085 { color: #5fffaf; } +.color-086 { color: #5fffdf; } +.color-087 { color: #5fffff; } +.color-088 { color: #870000; } +.color-089 { color: #87005f; } +.color-090 { color: #870087; } +.color-091 { color: #8700af; } +.color-092 { color: #8700df; } +.color-093 { color: #8700ff; } +.color-094 { color: #875f00; } +.color-095 { color: #875f5f; } +.color-096 { color: #875f87; } +.color-097 { color: #875faf; } +.color-098 { color: #875fdf; } +.color-099 { color: #875fff; } +.color-100 { color: #878700; } +.color-101 { color: #87875f; } +.color-102 { color: #878787; } +.color-103 { color: #8787af; } +.color-104 { color: #8787df; } +.color-105 { color: #8787ff; } +.color-106 { color: #87af00; } +.color-107 { color: #87af5f; } +.color-108 { color: #87af87; } +.color-109 { color: #87afaf; } +.color-110 { color: #87afdf; } +.color-111 { color: #87afff; } +.color-112 { color: #87df00; } +.color-113 { color: #87df5f; } +.color-114 { color: #87df87; } +.color-115 { color: #87dfaf; } +.color-116 { color: #87dfdf; } +.color-117 { color: #87dfff; } +.color-118 { color: #87ff00; } +.color-119 { color: #87ff5f; } +.color-120 { color: #87ff87; } +.color-121 { color: #87ffaf; } +.color-122 { color: #87ffdf; } +.color-123 { color: #87ffff; } +.color-124 { color: #af0000; } +.color-125 { color: #af005f; } +.color-126 { color: #af0087; } +.color-127 { color: #af00af; } +.color-128 { color: #af00df; } +.color-129 { color: #af00ff; } +.color-130 { color: #af5f00; } +.color-131 { color: #af5f5f; } +.color-132 { color: #af5f87; } +.color-133 { color: #af5faf; } +.color-134 { color: #af5fdf; } +.color-135 { color: #af5fff; } +.color-136 { color: #af8700; } +.color-137 { color: #af875f; } +.color-138 { color: #af8787; } +.color-139 { color: #af87af; } +.color-140 { color: #af87df; } +.color-141 { color: #af87ff; } +.color-142 { color: #afaf00; } +.color-143 { color: #afaf5f; } +.color-144 { color: #afaf87; } +.color-145 { color: #afafaf; } +.color-146 { color: #afafdf; } +.color-147 { color: #afafff; } +.color-148 { color: #afdf00; } +.color-149 { color: #afdf5f; } +.color-150 { color: #afdf87; } +.color-151 { color: #afdfaf; } +.color-152 { color: #afdfdf; } +.color-153 { color: #afdfff; } +.color-154 { color: #afff00; } +.color-155 { color: #afff5f; } +.color-156 { color: #afff87; } +.color-157 { color: #afffaf; } +.color-158 { color: #afffdf; } +.color-159 { color: #afffff; } +.color-160 { color: #df0000; } +.color-161 { color: #df005f; } +.color-162 { color: #df0087; } +.color-163 { color: #df00af; } +.color-164 { color: #df00df; } +.color-165 { color: #df00ff; } +.color-166 { color: #df5f00; } +.color-167 { color: #df5f5f; } +.color-168 { color: #df5f87; } +.color-169 { color: #df5faf; } +.color-170 { color: #df5fdf; } +.color-171 { color: #df5fff; } +.color-172 { color: #df8700; } +.color-173 { color: #df875f; } +.color-174 { color: #df8787; } +.color-175 { color: #df87af; } +.color-176 { color: #df87df; } +.color-177 { color: #df87ff; } +.color-178 { color: #dfaf00; } +.color-179 { color: #dfaf5f; } +.color-180 { color: #dfaf87; } +.color-181 { color: #dfafaf; } +.color-182 { color: #dfafdf; } +.color-183 { color: #dfafff; } +.color-184 { color: #dfdf00; } +.color-185 { color: #dfdf5f; } +.color-186 { color: #dfdf87; } +.color-187 { color: #dfdfaf; } +.color-188 { color: #dfdfdf; } +.color-189 { color: #dfdfff; } +.color-190 { color: #dfff00; } +.color-191 { color: #dfff5f; } +.color-192 { color: #dfff87; } +.color-193 { color: #dfffaf; } +.color-194 { color: #dfffdf; } +.color-195 { color: #dfffff; } +.color-196 { color: #ff0000; } +.color-197 { color: #ff005f; } +.color-198 { color: #ff0087; } +.color-199 { color: #ff00af; } +.color-200 { color: #ff00df; } +.color-201 { color: #ff00ff; } +.color-202 { color: #ff5f00; } +.color-203 { color: #ff5f5f; } +.color-204 { color: #ff5f87; } +.color-205 { color: #ff5faf; } +.color-206 { color: #ff5fdf; } +.color-207 { color: #ff5fff; } +.color-208 { color: #ff8700; } +.color-209 { color: #ff875f; } +.color-210 { color: #ff8787; } +.color-211 { color: #ff87af; } +.color-212 { color: #ff87df; } +.color-213 { color: #ff87ff; } +.color-214 { color: #ffaf00; } +.color-215 { color: #ffaf5f; } +.color-216 { color: #ffaf87; } +.color-217 { color: #ffafaf; } +.color-218 { color: #ffafdf; } +.color-219 { color: #ffafff; } +.color-220 { color: #ffdf00; } +.color-221 { color: #ffdf5f; } +.color-222 { color: #ffdf87; } +.color-223 { color: #ffdfaf; } +.color-224 { color: #ffdfdf; } +.color-225 { color: #ffdfff; } +.color-226 { color: #ffff00; } +.color-227 { color: #ffff5f; } +.color-228 { color: #ffff87; } +.color-229 { color: #ffffaf; } +.color-230 { color: #ffffdf; } +.color-231 { color: #ffffff; } +.color-232 { color: #080808; } +.color-233 { color: #121212; } +.color-234 { color: #1c1c1c; } +.color-235 { color: #262626; } +.color-236 { color: #303030; } +.color-237 { color: #3a3a3a; } +.color-238 { color: #444444; } +.color-239 { color: #4e4e4e; } +.color-240 { color: #585858; } +.color-241 { color: #606060; } +.color-242 { color: #666666; } +.color-243 { color: #767676; } +.color-244 { color: #808080; } +.color-245 { color: #8a8a8a; } +.color-246 { color: #949494; } +.color-247 { color: #9e9e9e; } +.color-248 { color: #a8a8a8; } +.color-249 { color: #b2b2b2; } +.color-250 { color: #bcbcbc; } +.color-251 { color: #c6c6c6; } +.color-252 { color: #d0d0d0; } +.color-253 { color: #dadada; } +.color-254 { color: #e4e4e4; } +.color-255 { color: #eeeeee; } +.bgcolor-000 { background-color: #000000; } +.bgcolor-001 { background-color: #800000; } +.bgcolor-002 { background-color: #008000; } +.bgcolor-003 { background-color: #808000; } +.bgcolor-004 { background-color: #000080; } +.bgcolor-005 { background-color: #800080; } +.bgcolor-006 { background-color: #008080; } +.bgcolor-007 { background-color: #c0c0c0; } +.bgcolor-008 { background-color: #808080; } +.bgcolor-009 { background-color: #ff0000; } +.bgcolor-010 { background-color: #00ff00; } +.bgcolor-011 { background-color: #ffff00; } +.bgcolor-012 { background-color: #0000ff; } +.bgcolor-013 { background-color: #ff00ff; } +.bgcolor-014 { background-color: #00ffff; } +.bgcolor-015 { background-color: #ffffff; } +.bgcolor-016 { background-color: #000000; } +.bgcolor-017 { background-color: #00005f; } +.bgcolor-018 { background-color: #000087; } +.bgcolor-019 { background-color: #0000af; } +.bgcolor-020 { background-color: #0000df; } +.bgcolor-021 { background-color: #0000ff; } +.bgcolor-022 { background-color: #005f00; } +.bgcolor-023 { background-color: #005f5f; } +.bgcolor-024 { background-color: #005f87; } +.bgcolor-025 { background-color: #005faf; } +.bgcolor-026 { background-color: #005fdf; } +.bgcolor-027 { background-color: #005fff; } +.bgcolor-028 { background-color: #008700; } +.bgcolor-029 { background-color: #00875f; } +.bgcolor-030 { background-color: #008787; } +.bgcolor-031 { background-color: #0087af; } +.bgcolor-032 { background-color: #0087df; } +.bgcolor-033 { background-color: #0087ff; } +.bgcolor-034 { background-color: #00af00; } +.bgcolor-035 { background-color: #00af5f; } +.bgcolor-036 { background-color: #00af87; } +.bgcolor-037 { background-color: #00afaf; } +.bgcolor-038 { background-color: #00afdf; } +.bgcolor-039 { background-color: #00afff; } +.bgcolor-040 { background-color: #00df00; } +.bgcolor-041 { background-color: #00df5f; } +.bgcolor-042 { background-color: #00df87; } +.bgcolor-043 { background-color: #00dfaf; } +.bgcolor-044 { background-color: #00dfdf; } +.bgcolor-000 { background-color: #000000; } +.bgcolor-001 { background-color: #800000; } +.bgcolor-002 { background-color: #008000; } +.bgcolor-003 { background-color: #808000; } +.bgcolor-004 { background-color: #000080; } +.bgcolor-005 { background-color: #800080; } +.bgcolor-006 { background-color: #008080; } +.bgcolor-007 { background-color: #c0c0c0; } +.bgcolor-008 { background-color: #808080; } +.bgcolor-009 { background-color: #ff0000; } +.bgcolor-010 { background-color: #00ff00; } +.bgcolor-011 { background-color: #ffff00; } +.bgcolor-012 { background-color: #0000ff; } +.bgcolor-013 { background-color: #ff00ff; } +.bgcolor-014 { background-color: #00ffff; } +.bgcolor-015 { background-color: #ffffff; } +.bgcolor-016 { background-color: #000000; } +.bgcolor-017 { background-color: #00005f; } +.bgcolor-018 { background-color: #000087; } +.bgcolor-019 { background-color: #0000af; } +.bgcolor-020 { background-color: #0000df; } +.bgcolor-021 { background-color: #0000ff; } +.bgcolor-022 { background-color: #005f00; } +.bgcolor-023 { background-color: #005f5f; } +.bgcolor-024 { background-color: #005f87; } +.bgcolor-025 { background-color: #005faf; } +.bgcolor-026 { background-color: #005fdf; } +.bgcolor-027 { background-color: #005fff; } +.bgcolor-028 { background-color: #008700; } +.bgcolor-029 { background-color: #00875f; } +.bgcolor-030 { background-color: #008787; } +.bgcolor-031 { background-color: #0087af; } +.bgcolor-032 { background-color: #0087df; } +.bgcolor-033 { background-color: #0087ff; } +.bgcolor-034 { background-color: #00af00; } +.bgcolor-035 { background-color: #00af5f; } +.bgcolor-036 { background-color: #00af87; } +.bgcolor-037 { background-color: #00afaf; } +.bgcolor-038 { background-color: #00afdf; } +.bgcolor-039 { background-color: #00afff; } +.bgcolor-040 { background-color: #00df00; } +.bgcolor-041 { background-color: #00df5f; } +.bgcolor-042 { background-color: #00df87; } +.bgcolor-043 { background-color: #00dfaf; } +.bgcolor-044 { background-color: #00dfdf; } +.bgcolor-045 { background-color: #00dfff; } +.bgcolor-046 { background-color: #00ff00; } +.bgcolor-047 { background-color: #00ff5f; } +.bgcolor-048 { background-color: #00ff87; } +.bgcolor-049 { background-color: #00ffaf; } +.bgcolor-050 { background-color: #00ffdf; } +.bgcolor-051 { background-color: #00ffff; } +.bgcolor-052 { background-color: #5f0000; } +.bgcolor-053 { background-color: #5f005f; } +.bgcolor-054 { background-color: #5f0087; } +.bgcolor-055 { background-color: #5f00af; } +.bgcolor-056 { background-color: #5f00df; } +.bgcolor-057 { background-color: #5f00ff; } +.bgcolor-058 { background-color: #5f5f00; } +.bgcolor-059 { background-color: #5f5f5f; } +.bgcolor-060 { background-color: #5f5f87; } +.bgcolor-061 { background-color: #5f5faf; } +.bgcolor-062 { background-color: #5f5fdf; } +.bgcolor-063 { background-color: #5f5fff; } +.bgcolor-064 { background-color: #5f8700; } +.bgcolor-065 { background-color: #5f875f; } +.bgcolor-066 { background-color: #5f8787; } +.bgcolor-067 { background-color: #5f87af; } +.bgcolor-068 { background-color: #5f87df; } +.bgcolor-069 { background-color: #5f87ff; } +.bgcolor-070 { background-color: #5faf00; } +.bgcolor-071 { background-color: #5faf5f; } +.bgcolor-072 { background-color: #5faf87; } +.bgcolor-073 { background-color: #5fafaf; } +.bgcolor-074 { background-color: #5fafdf; } +.bgcolor-075 { background-color: #5fafff; } +.bgcolor-076 { background-color: #5fdf00; } +.bgcolor-077 { background-color: #5fdf5f; } +.bgcolor-078 { background-color: #5fdf87; } +.bgcolor-079 { background-color: #5fdfaf; } +.bgcolor-080 { background-color: #5fdfdf; } +.bgcolor-081 { background-color: #5fdfff; } +.bgcolor-082 { background-color: #5fff00; } +.bgcolor-083 { background-color: #5fff5f; } +.bgcolor-084 { background-color: #5fff87; } +.bgcolor-085 { background-color: #5fffaf; } +.bgcolor-086 { background-color: #5fffdf; } +.bgcolor-087 { background-color: #5fffff; } +.bgcolor-088 { background-color: #870000; } +.bgcolor-089 { background-color: #87005f; } +.bgcolor-090 { background-color: #870087; } +.bgcolor-091 { background-color: #8700af; } +.bgcolor-092 { background-color: #8700df; } +.bgcolor-093 { background-color: #8700ff; } +.bgcolor-094 { background-color: #875f00; } +.bgcolor-095 { background-color: #875f5f; } +.bgcolor-096 { background-color: #875f87; } +.bgcolor-097 { background-color: #875faf; } +.bgcolor-098 { background-color: #875fdf; } +.bgcolor-099 { background-color: #875fff; } +.bgcolor-100 { background-color: #878700; } +.bgcolor-101 { background-color: #87875f; } +.bgcolor-102 { background-color: #878787; } +.bgcolor-103 { background-color: #8787af; } +.bgcolor-104 { background-color: #8787df; } +.bgcolor-105 { background-color: #8787ff; } +.bgcolor-106 { background-color: #87af00; } +.bgcolor-107 { background-color: #87af5f; } +.bgcolor-108 { background-color: #87af87; } +.bgcolor-109 { background-color: #87afaf; } +.bgcolor-110 { background-color: #87afdf; } +.bgcolor-111 { background-color: #87afff; } +.bgcolor-112 { background-color: #87df00; } +.bgcolor-113 { background-color: #87df5f; } +.bgcolor-114 { background-color: #87df87; } +.bgcolor-115 { background-color: #87dfaf; } +.bgcolor-116 { background-color: #87dfdf; } +.bgcolor-117 { background-color: #87dfff; } +.bgcolor-118 { background-color: #87ff00; } +.bgcolor-119 { background-color: #87ff5f; } +.bgcolor-120 { background-color: #87ff87; } +.bgcolor-121 { background-color: #87ffaf; } +.bgcolor-122 { background-color: #87ffdf; } +.bgcolor-123 { background-color: #87ffff; } +.bgcolor-124 { background-color: #af0000; } +.bgcolor-125 { background-color: #af005f; } +.bgcolor-126 { background-color: #af0087; } +.bgcolor-127 { background-color: #af00af; } +.bgcolor-128 { background-color: #af00df; } +.bgcolor-129 { background-color: #af00ff; } +.bgcolor-130 { background-color: #af5f00; } +.bgcolor-131 { background-color: #af5f5f; } +.bgcolor-132 { background-color: #af5f87; } +.bgcolor-133 { background-color: #af5faf; } +.bgcolor-134 { background-color: #af5fdf; } +.bgcolor-135 { background-color: #af5fff; } +.bgcolor-136 { background-color: #af8700; } +.bgcolor-137 { background-color: #af875f; } +.bgcolor-138 { background-color: #af8787; } +.bgcolor-139 { background-color: #af87af; } +.bgcolor-140 { background-color: #af87df; } +.bgcolor-141 { background-color: #af87ff; } +.bgcolor-142 { background-color: #afaf00; } +.bgcolor-143 { background-color: #afaf5f; } +.bgcolor-144 { background-color: #afaf87; } +.bgcolor-145 { background-color: #afafaf; } +.bgcolor-146 { background-color: #afafdf; } +.bgcolor-147 { background-color: #afafff; } +.bgcolor-148 { background-color: #afdf00; } +.bgcolor-149 { background-color: #afdf5f; } +.bgcolor-150 { background-color: #afdf87; } +.bgcolor-151 { background-color: #afdfaf; } +.bgcolor-152 { background-color: #afdfdf; } +.bgcolor-153 { background-color: #afdfff; } +.bgcolor-154 { background-color: #afff00; } +.bgcolor-155 { background-color: #afff5f; } +.bgcolor-156 { background-color: #afff87; } +.bgcolor-157 { background-color: #afffaf; } +.bgcolor-158 { background-color: #afffdf; } +.bgcolor-159 { background-color: #afffff; } +.bgcolor-160 { background-color: #df0000; } +.bgcolor-161 { background-color: #df005f; } +.bgcolor-162 { background-color: #df0087; } +.bgcolor-163 { background-color: #df00af; } +.bgcolor-164 { background-color: #df00df; } +.bgcolor-165 { background-color: #df00ff; } +.bgcolor-166 { background-color: #df5f00; } +.bgcolor-167 { background-color: #df5f5f; } +.bgcolor-168 { background-color: #df5f87; } +.bgcolor-169 { background-color: #df5faf; } +.bgcolor-170 { background-color: #df5fdf; } +.bgcolor-171 { background-color: #df5fff; } +.bgcolor-172 { background-color: #df8700; } +.bgcolor-173 { background-color: #df875f; } +.bgcolor-174 { background-color: #df8787; } +.bgcolor-175 { background-color: #df87af; } +.bgcolor-176 { background-color: #df87df; } +.bgcolor-177 { background-color: #df87ff; } +.bgcolor-178 { background-color: #dfaf00; } +.bgcolor-179 { background-color: #dfaf5f; } +.bgcolor-180 { background-color: #dfaf87; } +.bgcolor-181 { background-color: #dfafaf; } +.bgcolor-182 { background-color: #dfafdf; } +.bgcolor-183 { background-color: #dfafff; } +.bgcolor-184 { background-color: #dfdf00; } +.bgcolor-185 { background-color: #dfdf5f; } +.bgcolor-186 { background-color: #dfdf87; } +.bgcolor-187 { background-color: #dfdfaf; } +.bgcolor-188 { background-color: #dfdfdf; } +.bgcolor-189 { background-color: #dfdfff; } +.bgcolor-190 { background-color: #dfff00; } +.bgcolor-191 { background-color: #dfff5f; } +.bgcolor-192 { background-color: #dfff87; } +.bgcolor-193 { background-color: #dfffaf; } +.bgcolor-194 { background-color: #dfffdf; } +.bgcolor-195 { background-color: #dfffff; } +.bgcolor-196 { background-color: #ff0000; } +.bgcolor-197 { background-color: #ff005f; } +.bgcolor-198 { background-color: #ff0087; } +.bgcolor-199 { background-color: #ff00af; } +.bgcolor-200 { background-color: #ff00df; } +.bgcolor-201 { background-color: #ff00ff; } +.bgcolor-202 { background-color: #ff5f00; } +.bgcolor-203 { background-color: #ff5f5f; } +.bgcolor-204 { background-color: #ff5f87; } +.bgcolor-205 { background-color: #ff5faf; } +.bgcolor-206 { background-color: #ff5fdf; } +.bgcolor-207 { background-color: #ff5fff; } +.bgcolor-208 { background-color: #ff8700; } +.bgcolor-209 { background-color: #ff875f; } +.bgcolor-210 { background-color: #ff8787; } +.bgcolor-211 { background-color: #ff87af; } +.bgcolor-212 { background-color: #ff87df; } +.bgcolor-213 { background-color: #ff87ff; } +.bgcolor-214 { background-color: #ffaf00; } +.bgcolor-215 { background-color: #ffaf5f; } +.bgcolor-216 { background-color: #ffaf87; } +.bgcolor-217 { background-color: #ffafaf; } +.bgcolor-218 { background-color: #ffafdf; } +.bgcolor-219 { background-color: #ffafff; } +.bgcolor-220 { background-color: #ffdf00; } +.bgcolor-221 { background-color: #ffdf5f; } +.bgcolor-222 { background-color: #ffdf87; } +.bgcolor-223 { background-color: #ffdfaf; } +.bgcolor-224 { background-color: #ffdfdf; } +.bgcolor-225 { background-color: #ffdfff; } +.bgcolor-226 { background-color: #ffff00; } +.bgcolor-227 { background-color: #ffff5f; } +.bgcolor-228 { background-color: #ffff87; } +.bgcolor-229 { background-color: #ffffaf; } +.bgcolor-230 { background-color: #ffffdf; } +.bgcolor-231 { background-color: #ffffff; } +.bgcolor-232 { background-color: #080808; } +.bgcolor-233 { background-color: #121212; } +.bgcolor-234 { background-color: #1c1c1c; } +.bgcolor-235 { background-color: #262626; } +.bgcolor-236 { background-color: #303030; } +.bgcolor-237 { background-color: #3a3a3a; } +.bgcolor-238 { background-color: #444444; } +.bgcolor-239 { background-color: #4e4e4e; } +.bgcolor-240 { background-color: #585858; } +.bgcolor-241 { background-color: #606060; } +.bgcolor-242 { background-color: #666666; } +.bgcolor-243 { background-color: #767676; } +.bgcolor-244 { background-color: #808080; } +.bgcolor-245 { background-color: #8a8a8a; } +.bgcolor-246 { background-color: #949494; } +.bgcolor-247 { background-color: #9e9e9e; } +.bgcolor-248 { background-color: #a8a8a8; } +.bgcolor-249 { background-color: #b2b2b2; } +.bgcolor-250 { background-color: #bcbcbc; } +.bgcolor-251 { background-color: #c6c6c6; } +.bgcolor-252 { background-color: #d0d0d0; } +.bgcolor-253 { background-color: #dadada; } +.bgcolor-254 { background-color: #e4e4e4; } +.bgcolor-255 { background-color: #eeeeee; } + /* Container surrounding entire client */ #wrapper {